Deep Learning/딥러닝 제대로 시작하기
딥러닝 제대로 시작하기(책) - 2장 요약 및 Quiz
koos808
2020. 7. 5. 02:11
728x90
반응형
※ STEP 2 : 앞먹임 신경망(feedforward neural network)
-
앞먹임 신경망은 층 모양으로 늘어선 유닛이 인접한 층(layer)들과만 결합하는 구조를 가지며, 정보가 입력 측에서 출력 측으로 한 방향으로만 흐르는 신경망입니다. 앞먹임 신경망은 다층 퍼셉트론(multi-layer) 이라 부르기도 합니다.
-
바이어스는 의미 그대로 어떤 '편견'을 학습 결과에 반영시키는 역할을 합니다.
- 신경망의 유닛 내에서 활성화 함수를 왼쪽 혹은 오른쪽으로 이동시켜 변화시키는 것과 같은 결과를 얻게 됩니다.
- 이와 달리 가중치는 활성화 함수의 곡선을 좌우로 늘리거나 줄이는 것과 같은 결과를 얻습니다.
-
즉, 가중치(weight) 는 입력신호가 결과 출력에 주는 영향도를 조절하는 파라미터(매개변수) 이고, 편향(bias) 은 뉴런(또는 노드; x를 의미)이 얼마나 쉽게 활성화(1로 출력; activation)되느냐를 조정하는(adjust) 파라미터(매개변수) 이다.
-
활성화함수(Activation Function) 는 말 그대로, 출력값을 활성화 여부를 결정하고, 그 값을 부여하는 함수라 할 수 있다.
- 활성화 함수를 사용하는 이유는 무엇일까?
- 정답을 바로 말하자면 활성화 함수 사용의 이유는 Data를 비선형으로 바꾸기 위해서이다.
- 일반적으로 선형 시스템을 사용해야 예측이 가능하고 장점도 많다고 알고 있다. 하지만 선형시스템을 망에 적용시, 망이 깊어지지 않는다.
- 선형 시스템의 경우 망이 아무리 깊어지더라도, 1층의 은닉층으로 구현이 가능하다.
- 망이 깊어지지 않는게 왜 문제가 될까? [ 망이 깊어질 수록 장점이 많아진다는 것이다. ]
- 망이 깊어진다는 것은 은닉층의 수가 많아진다는 것이다.
- ● 망이 깊어질때의 장점
-
- 매개 변수가 줄어든다. : 망이 깊어지면 같은 수준의 정확도의 망을 구현하더라도 파라미터(매개변수)가 더 적게 필요하다.
-
- 필요한 연산의 수가 줄어든다. : 예를들어 은닉층에 Filter를 Convolution할 때 필터의 크기를 줄이고,
망을 깊게 만들면(은닉층의 수를 많게 만들면) 연산 횟수가 줄어들면서도 정확도를 유지하는 결과를 내는것을 확인할 수 있다.
- 필요한 연산의 수가 줄어든다. : 예를들어 은닉층에 Filter를 Convolution할 때 필터의 크기를 줄이고,
- ※이처럼 망이 깊어질수록 효과를 내기 때문에 Deep-Learning이라고도 한다고 들었다.
- 선형시스템의 경우에는 망이 깊어지지 않으므로, 망이 깊어지는것에 대한 장점을 활용할 수 없다.
- 이때, 활성화 함수를 사용하면 입력이 들어갈때, 출력값이 선형으로 나오지 않으므로, 망을 깊게 만들 수 있다.
- 참고 : https://m.blog.naver.com/PostView.nhn?blogId=worb1605&logNo=221187949828&proxyReferer=https%3A%2F%2Fwww.google.com%2F
-
활성화 함수의 종류
- 1.시그모이드 함수(Sigmoid Function)=로지스틱 함수 :
h(x) = 1/(1+e^-x)
- x값이 작아질수록 0에 수렴하고, 커질수록 1에 수렴한다.
- 쌍곡선 정접함수
tanh(x)
도 로지스틱 함수와 비슷한 성질을 갖고 있어 사용가능하나 함수의 치역은 (-1,1)로 달라집니다.
- 2.계단 함수(Step Function) :
y = 1 (when x≥0), 0 (when x<0)
- Step Function은 말 그대로 계단모양 함수로, 특정값 이하는 0, 이상은 1로 출력하도록 만들어진 함수이다.
- 3.ReLU Function(Rectified Linear Unit)==램프 함수 :
y = x (when x≥0), 0(when x<0)
- ReLU 함수는 입력이 특정값을 넘으면 입력이 그대로 출력으로 나오고, 0을 넘지 않을시 0을 반환하는 함수이다.
- 장점1 : 단순하고 계산량이 적으며, 학습이 빠르다. 최종 결과 또한 더 좋은 경우가 많다.
- 장점2 : 시그모이드 함수를 사용할 때는 입력값의 변동 폭에 주의할 필요가 있지만(너무 커질 경우 출력 대부분이 0이나 1 둘 중 하나가 됨.),
ReLU 함수를 사용하면 그런 일이 일어나지 않는다.
- 4.맥스아웃(maxout) 함수
- 이 활성화 함수를 갖는 유닛 하나는 K개의 유닛을 하나로 합친 것과 같은 구조를 갖습니다.
- K개 하나하나가 서로 다른 가중치와 바이어스를 가지므로 각각의 총 입력을 따로 계산하고 그중 최대값을 이 유닛의 출력으로 합니다.
- 성능은 좋지만, 파라미터 수가 일반적인 유닛의 K배이기 때문에 그리 많이 쓰진 않습니다.
- 1.시그모이드 함수(Sigmoid Function)=로지스틱 함수 :
-
활성화 함수 책내용
- 유닛의 활성화 함수로는 통상적으로 단조증가(monotone increasing)하는 비선형함수 가 사용됩니다.
- 위의 활성화 함수말고도 선형사상(linear mapping) 혹은 항등사상(identity mapping) 이 있습니다.
- 신경망에서는 각 유닛의 활성화 함수가 비선형성을 갖는 것이 중요하지만, 부분적으로 선형사상을 사용하는 경우가 있습니다.
- 예를 들어, 회귀 문제(regression problem) 를 위한 신경망에서는 출력층에서 항등사상을 사용하고,
- 클래스 분류를 목적*으로 하는 신경망에서는 출력층의 활성화 함수로 대게 소프트맥스 함수를 사용합니다.
-
퍼셉트론(Perceptron)이란
- 퍼셉트론은 다수의 신호(Input)을 입력받아서 하나의 신호(Output)을 출력하는 인공신공망 모델입니다.
- 퍼셉트론의 한계는 선형으로 분류를 할 수 있지만 XOR와 같이 선형 분류만 가능하며 비선형 분류는 불가능하다는 점이다. 그래서 이후 다층 퍼셉트론이 등장한다.
-
훈련 샘플(training samples)과 훈련 데이터(training data)
- 입출력 쌍 (x,d) 하나하나를 훈련 샘프이라 부르고, 그 집합을 훈련 데이터라고 합니다.
-
오차함수(error function) == 손실함수(loss function) 와 학습
- 모든 입출력 쌍의 입력 x_n에 대한 신경망의 출력(y)이 최대한 d_n과 가까워지도록 w를 조정하는 것이 학습입니다.
- 또한, 신경망이 나타내는 함수와 훈련 데이터와의 가까운 정도를 나타내는 거리의 척도는 오차함수나 손실함수라고 부릅니다.
중요!
: 문제의 유형에 따라 사용되는 활성화 함수 및 오차함수의 종류문제 유형 | 출력층에 쓰이는 활성화 함수 | 오차함수
- 회귀 - tanh(x) [치역이 -1 ~ 1인 경우] or 항등사상 (목표함수의 치역이 임의의 실수일 경우) - 제곱오차
- 이진 분류 - 시그모이드(로지스틱) 함수 - 최대우도법을 사용한 음의 로그우도 : 우도를 가장 크게 하는 w를 선택(+우도의 로그화를 통해 부호를 바꿈)
- 다클래스 분류 - 소프트맥스 함수 - 교차 엔트로피(=음의 로그우도)
-
교차 엔트로피란?
- Cross-entropy는 틀릴 수 있는 정보 양을 고려한 최적으로 인코딩할 수 있게 해주는 정보량으로 생각할 수 있습니다.
- 사후확률를 활용해 훈련 데이터에 대한 w의 우도를 구하고 로그를 취하여 부호를 반전한 것이 교차 엔트로피입니다.
- cross entropy는 label의 값이 one_hot encoding (원핫 인코딩) 일 때만 사용이 가능하다는 것을 염두해두자.
- MSE와의 차이점
- MSE는 틀린 샘플에 대해 더 집중하는 특성을 가진다. 맞은 것과 틀린 것에 똑같이 집중해야 하는데 그렇지 않아 오차 정의로는 적절하지 않다.
- 중요한건, weight update를 해야하는데 MSE를 cost function으로 쓰니까 업데이트 되는 양이 너무 적더라..... 해서 생긴 새로운 cost function이 Cross function입니다.
- 교차 엔트로피의 장점
- 크로스 엔트로피를 쓰면 딥러닝 역전파시 그래디언트가 죽는 문제를 어느 정도 해결할 수 있고, 그래디언트를 구하는 과정 역시 비교적 간단하다고 합니다.
-
소프트맥스 함수(Softmax) 란
- 소프트맥스는 입력받은 값을 출력으로 0~1사이의 값으로 모두 정규화하며 출력 값들의 총합은 항상 1이 되는 특성을 가진 함수이다.
- 소프트맥스 층은 클래스에 속할 확률을 수치 p로 표현합니다.[총합은 1]
- 다른 활성화 함수와의 차이점
- 그 외의 활성화 함수에서 유닛 k의 출력 z_k는 해당 유닛으로 들어오는 총 입력 u_k로부터만 결정되는 것과 대조적으로,
소프트맥스 함수에서는 이 층 모든 유닛의 총 입력 u1,...,uk으로부터 결정되는 점이 다른 함수들과 다르다.
- 그 외의 활성화 함수에서 유닛 k의 출력 z_k는 해당 유닛으로 들어오는 총 입력 u_k로부터만 결정되는 것과 대조적으로,
- 소프트맥스 함수의 잉여성으로 인해 가중치를 학습할 때 출력층의 가중치가 잘 수렴하지 않고 학습이 느리게 진행된다는 단점이 있지만,
이를 출력층에 가중치 감쇠 등의 제약을 추가해 해결하면 됩니다.
-
Q. 기본적인 신경망 계산 과정을 간단하게 설명해주세요
- 훈련 샘플을 입력하는 feed-forward(앞먹임) 계산을 하고 오차를 구한 뒤, 이어 역전파 계산을 하고 오차의 기울기를 구하여 가중치를 업데이트합니다.
728x90
반응형