(23.11.20)
퍼셉트론의 한계: 선형적으로만 문제를 해결할 수 있음.
--> 비선형 활성화 함수를 사용하여 여러개의 층을 쌓고, 비선형적으로 문제를 해결할 수 있게 됨.
신경망
- 여러 층으로 구성되어 있으며, 비선형 활성화 함수를 사용한 다층 퍼셉트론
- 2단계를 거쳐 문제를 해결
- 학습데이터를 통해 가중치 매개변수 학습
- 학습한 매개변수를 사용하여 입력 데이터에 대해 추론
활성화 함수 (activation function)
- 입력신호의 총합을 출력신호로 변환하는 함수
- 입력신호의 총합이 활성화를 일으키는지 정하는 역할
활성화 함수 - step function
- 단층 퍼셉트론에서 사용하는 원시적인 activation function 이다.
- 0에서 출력이 불연속적이다.
=> 0에서 기울기를 구할 수 없고, 0 이외의 부분에서는 기울기가 0이라 back propagation 이 불가능하다.
활성화 함수 - sigmoid function
- step function 과 모양이 비슷하지만, 매끄러운 모양이다.
- 0 에서 연속적이며, 미분이 가능하다.
- 일정값 이상 or 이하로 갈수록 기울기가 0에 가까워지는데, 이는 back propagation 에서 기울기 소실 문제를 발생시키는 단점을 갖는다. => 이러한 단점을 보완하여 나온 것이 ReLU !!!
활성화 함수 - ReLU
- 앞선 sigmoid의 단점인 기울기 소실 문제를 해결하였다. (입력값이 0 이상일 경우에)
- x가 0보다 클 때의 기울기가 항상 1이기 때문에 층이 많아져도 손실없이 정보를 전달할 수 있다.
- 미분값이 항상 0과 1 둘 중 하나이기 때문에 연산 속도가 빠르다.
=> 은닉층에서 가장 많이 사용되는 활성화 함수
- 0 이하의 값들을 기울기가 0이라 가중치 업데이트가 안된다는 단점이 있다.
=> 이를 보완하는 다른 함수도 사용된다. (Leaky ReLU 등)
위의 활성화 함수는 모두 비선형 함수이다.
활성화 함수로 비선형 함수를 사용하는 이유는? 신경망을 여러 층으로 구성하는 이점을 살리기 위해서
예를 들어, h(x) = 3x 이다.
3개층을 쌓으면, y=h(h(h(x))) 로 표현할 수 있다.
그러나 이는 y=h(h(3x)))=h(3*3x)=3*3*3x=9x 가 된다. => 은닉층이 없어지고, 여러층으로 쌓는 의미가 사라진다.
====> 이들은 주로 은닉층의 활성화 함수로 사용된다.
행렬의 곱셈
- 행렬의 곱에서는 앞의 행렬의 열과 뒤의 행렬의 행 수가 같아야한다.
=> 행렬 A, B 를 곱하고자 할 때 (A x B ), A의 열 수 = B의 행 수
출력층의 활성화 함수
신경망은 회귀 (regression) 와 분류 (classification) 에 사용된다.
회귀와 분류 중 어느 문제를 푸는 신경망이냐에 따라 출력층의 활성화 함수가 다르다.
- 회귀 문제일 경우 : identity function
- 분류 문제일 경우: softmax function
identity function
- 입력을 그대로 출력한다
softmax function
- 분자: 입력신호의 지수함수
- 분모: 모든 입력신호의 지수함수의 합
- softmax의 출력은 모든 입력신호의 영향을 받는다.
- 왜 softmax 에서 지수함수를 사용할까? ==> 분모가 0이 되면 안되는데, 지수함수는 언제나 0보다 큰 값을 갖기 때문이다.
- softmax 는 식에 지수함수가 포함되어 있어서 오버플로에 주의해야한다.
- softmax 의 지수함수를 계산할 때, 어떤 정수를 더해도 결과는 바뀌지 않기 때문에, 코드 구현할 때, 입력 신호 중 최대값을 뺴고 softmax의 지수함수를 계산하면, 오버플로가 일어나는 것을 방지할 수 있다.
- softmax 출력의 총합은 1 ====> softmax 의 출력값을 확률로 해석할 수 있다.
- 출력층의 뉴런수 == 분류하고자 하는 class의 개수
신경망의 추론처리
- 입력 이미지를 1차원 numpy 배열로 신경망에 넣어준다. (해당 이미지 size: 28x28, 1차원 넘파이 배열 크기는 784개 (28x28)
=> 입력층 뉴런 개수는 784개
- 출력 결과는 숫자 0 ~9 까지 총 10가지
=> 출력층 뉴런개수는 10개
은닉층을 2개의 층으로 구성하고, 각각의 출력 뉴런개수를 50개, 100개로 둔다고 가정
아래의 X의 행수 100은 100개의 이미지를 넣었다는 것을 의미하며, 이는 학습할 때 batch size 를 의미한다.
신경망의 추론 과정의 행렬 곱셉 과정을 자세히 표현하면 아래와 같다.
'Computer Science > Deep Learning' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 ch.7 CNN + ch.8 딥러닝 (1) | 2023.12.28 |
---|---|
밑바닥부터 시작하는 딥러닝 ch.6 학습관련 기술들 (1) | 2023.12.28 |
밑바닥부터 시작하는 딥러닝 ch.5 오차역전법 (0) | 2023.12.04 |
밑바닥부터 시작하는 딥러닝 ch.4 신경망 학습 (0) | 2023.11.27 |
밑바닥부터 시작하는 딥러닝 ch.2 퍼셉트론 (0) | 2023.11.21 |