본문 바로가기
코딩 독학/앤드류응 딥러닝 Course1 (미래연구소 14기)

C1W3L6~L7

by 효니루 2020. 10. 13.

C1W3L5. Explanation for Vectorized Implementation

각 벡터행렬이 어떻게 쌓이는지 다시 정리해보자

[1]과 [2]번째 layer 안의 각 노드에서 z와 a들을 계산하는데 z = Wx + b의 행렬계산에 따라서 원소가 어떻게 쌓이는지 다음 그림을 통해 살펴보자.

 

일반상수 b는 브로드캐스팅을 통해 전체행렬에 더해질수있으니 빼고 생각하면

W를 가로벡터, x를 세로로 원소가 쌓인벡터라고 생각했을때 곱한 결과가 세로벡터가 생성되고, 그게 z값이며

대문자 Z행렬은 각 z(1), z(2), z(3) ...들이 열로 쌓인 행렬이 될 것이다.

 

C1W3L6~L7. Activation Function

활성화함수의 선택

 

각 노드는 이전 노드의 결괏값(활성값)들을 input으로 받아서 새로이 가중합(z)와 활성값(a)를 계산한다. 이 때 활성함수에 따라서 이 알고리즘의 성능에 영향을 미친다. 이 때까지는 시그모이드 함수를 이용했는데, 실제로 사용하는 활성화함수는 다른 것을 더 많이 쓴다고 한다.

 

언제 어떤 활성화함수를 선택해야하는걸까??

 

  특징 단점 활용
시그모이드 함수 y값이 0~1 사이
중앙값이 0.5
z가 크거나 작으면 도함수가 0에 가까워져 경사하강법의 속도가 느려짐 1. 이진분류
2. 출력층 노드
tanh(z) 함수 y값이 -1~1 사이
중앙값이 0 
⇒ 알고리즘 훈련시 데이터의 중심을 0으로 만들기 좋음
z가 크거나 작으면 도함수가 0에 가까워져 경사하강법의 속도가 느려짐 입력층 노드
ReLU 함수 z<0 → 0
z>0 → a=z
⇒ z가 양수일때 도함수가 1로 경사하강법을 빠르게 할 수 있다.
  입력층 노드 (가장 좋음)
leaky ReLU함수 ReLU함수에서 z<0일때 살짝 기울기를 줘서 아예 0을 만들지 않음
⇒ z<0일때 경사하강법 속도가 저하되는걸 막긴 하지만 ReLU를 더 많이씀
  입력층 노드

그런데 의문이 있다. 왜 선형함수는 활성화함수로 사용하지 않는걸까?

은닉층의 노드들이 활성화함수로 계산된다면, 몇겹을 쌓든지간에 절대로 고차원적인 함수가 되지 못하고 직선의 방정식을 벗어날 수가 없다. 결국 층을 여러겹 쌓아서 가중치를 조절해준다한들 한 층에 노드를 여러개 두고 가중치를 조절한거랑 별반 다를게 없다는 것.

 

모두의 딥러닝에서는 약간 다른 방식으로 설명한 거 같은데 아래 참조

 

 

[모두의딥러닝] 6장. 퍼셉트론

퍼셉트론의 개념 : 뉴런은 자극이 역치를 넘으면 다음 뉴런으로 신호를 전달한다. 퍼셉트론도 이 뉴런과 비슷한 개념으로 우리가 설정한 활성화 함수에 의해 입력값을 계산하여 일정수준을 넘��

bookandmed.tistory.com

 

'코딩 독학 > 앤드류응 딥러닝 Course1 (미래연구소 14기)' 카테고리의 다른 글

C1W2L1 ~ C1W2L4  (0) 2020.10.09
C1 W2 L13 ~ L14  (0) 2020.10.09
C1W2L10 ~C1W2L12  (0) 2020.10.07
C1W2L4 ~ C1W2L9  (0) 2020.10.07

댓글