본문 바로가기
Programming/Deep learning

lec 10-1 : Sigmod >>>> ReLU

by OKOK 2018. 5. 6.

변수를 선언하고. 이것을 연결하면 됩니다. L1, L2, ... 최종 가설은 이렇게 됩니다.

좋지 않은 결과가 나온다.? 왜 이런일이 생길까요? 텐서보드를 통해서 보니. 코스트와 정확도를 살펴보았습니다. 

2단 3단 정도의 경우는 잘 학습이 되는데, 9단 10단은 학습이 잘 안되는 것입니다. 이것이 문제였는데. 문제를 봅시다. 백 프로파게이션을 봅니다. 미분을 했는데. 전체를 하기 어려우니, 뒤에서부터 하나씩 해나갔습니다. 제일 처음 변수가 f에 a미치는 영향을 알고 싶습니다.


시그모이드를 통과하기 떄문에 1보다 작은 값이고 운이 좋지 않으면 0.01과 같이 굉장히 작은 값들이 곱해집니다. 그럼 이값들이 곱해지면 굉장히 작은 값이 됩니다. 최종적인 출력에서 2, 3단까지는 괜찮지만 뒤로 갈수록 곱해지는 항들이 많아지기 때문에, 최종 미분값을 굉장히 0에 가깝게 됩니다. 이것이 바로 문제입니다!


이것을 멋진 말로 Vanishing gradient 문제라고 부릅니다. 

뉴럴넷은 이러한 문제때문에 2차 겨울에 들어가게 됩니다. 이 문제를 풀 때 논리니어리티. 시그모이드를 잘 못씀.

activation function 이라고 합니다. Rectified Linear Unit

L1 = tf.nn.relu(tf.matmul(X, W1) + b1) 이렇게 사용하면 됩니다.

마지막 단의 출력은 0~1사이의 바이너리로 출력을 받아야 합니다.


이것으로 파생해서 Leaky ReLu 도 있습니다. ELU 라는 것도 있습니다. Maxout도 있습니다. 조금씩 다른 형태가 존재합니다. 그리고 시그모이드를 극복한 것이 tanh 입니다.