티스토리 뷰
신경망 파이썬 코드를 짜는데, 기본적인 개념 이해조차 되어있지 않아서 코드를 짜는데 어려움을 겪었다.🥲
신경망
차례로 왼쪽부터 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)
활성화함수
: 입력 신호의 총합을 출력 신호로 변환하는 함수
활성화함수는 이 식에서 h(x)와 같은 것을 말한다.
위와 같은 활성화 함수는 임계값을 경계로 출력이 바뀐다. 이런 함수를 계단함수라고 한다. 이러한 계단함수에서 다른 함수로 바꾸는 것이 목표이다.
1. 시그모이드 함수
퍼셉트론에서는 뉴런사이에 0 or 1값만 나타났다면, 신경망에서 연속적인 함수가 흐른다.
입력이 아무리 작거나 커도 출력은 0과 1사이라는 공통점이 있다. 또 둘은 모두 비선형 함수이다. 활성화함수에서 선형함수를 사용하면 안되는 이유는, 신경망의 층을 깊게하는 것을 무의미하게 만들기 때문이다.
2. ReLU 함수
최근에는 ReLU함수를 많이 이용한다.
입력이 0이 넘으면 그 입력을 그대로 출력하는 함수이다.
행렬
두 행렬의 곱은 넘파이 함수 np.dot으로 계산된다.
np.dot은 1차원 배열이면 벡터를, 2차원 배열이면 행렬 곱을 계산한다.
행렬의 곱셈을 할 때 A의 열수와 B의 행수가 같아야한다. 이 값이 다르면 행렬의 곱을 계산할 수 없다.
출력층의 설계
소프트맥스 함수
식에서 n은 출력층의 뉴런수, y는 k번째의 출력임을 뜻한다.
def softmax(a):
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
개선 코드
def softmax(a):
c = np.max(a)
exp_a = np_exp(a-c) # 오버플로 대책
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
정규화 : 데이터를 특정범위로 변환하는 처리
전처리 : 신경망의 입력데이터에 특정 변환을 가하는 것
배치 : 하나로 묶은 입력 데이터 > 큰 배열을 효율적으로 처리
파이썬 실습 코드는 나중에 꼭 해보면서 이해해야겠다!
'AI > 머신러닝, 딥러닝' 카테고리의 다른 글
[머신러닝] 머신러닝 교과서 1장 정리 (1) | 2023.07.08 |
---|---|
[데청캠] 머신러닝 정리(1) (0) | 2023.07.05 |
PART 4: Recurrent Neural Network (0) | 2023.03.03 |
PART 3: Convolutional Neural Network (0) | 2023.03.03 |