딥러닝시 주의할 점은 2가지이다. Vanishing Gradient와 Overfitting의 문제이다.
1. Vanishing Gradient
기울기가 사라진다는 뜻이다. 이 전에 출력값으로 0혹은 1을 출력한다고 됬었다.
그런데 실제로는 0혹은 1을 출력하는 경우도 있지만, Sigmoid Function을 써서 0에서 1사이의 특정한 값들을 출력하게 된다.
그런데 문제는 Sigmoid Function을 쓸 시에 Perceptron을 통과하면 통과할 수록 그 값이 희미해지는(Vanishing)의 결과를 가져오게 된다.
처음 출력값은 괜찮지만, 이후 Back Propagation을 하려고 하면 원래의 input값으로 돌아가기 힘든 상황이 발생하게 되는 것이다. 이러한 문제를 해결하기 위해서 sigmoid대신에 ReLU나 ELU같은 함수를 써서 해결하였다.
2. Overfitting
Overfitting은 너무 잘 맞기 때문에 생기는 문제이다. 딥러닝을 통해서 아래와 같은 식을 도출했다고 가정하자.
그런데 해당 함수로는 100%맞지 않기 때문에 아래와 같은 함수를 만들게 된다. 그러면 모든 O와 X를 잡아낼 수 있게 된다.
그런데 여기서 또 문제는 해당하는 함수가 Overfitting됬다는 점이다. 해당 함수로 지정하고 수행을 하게 된다면, 아래와 같이 넣으려던 값들이 틀려버리게 된다.
이러한 Overfitting의 문제를 해결하기 위한 방법중에 하나가 L1/L2 Regulation이다.
L1은 값이 큰 것만 집중하는 것이고, L2는 전반적이 feature의 영향력을 떨어뜨리는 작업이다.
또 다른 방법은 Dropout이 있다. 값을 수행할 때마다 특정 노드를 없애고 수행하는 것이다. 일반적인 문제에 잘 안 맞게 되어서 들어오는 노드를 몇 개를 꺼내버린다.
'프로그래밍 일반 > 딥러닝' 카테고리의 다른 글
[딥러닝] 케라스실습 02. XOR Function (0) | 2019.11.25 |
---|---|
[딥러닝] 케라스 실습 01. AND Function 문제 (0) | 2019.11.25 |
[딥러닝] 케라스의 기초 개념 (0) | 2019.11.25 |
[딥러닝] 2. 딥러닝의 동작과정 (0) | 2019.11.25 |
[딥러닝] 01. 딥러닝 기초이론-MLP (0) | 2019.11.23 |