[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 37일차 | 7. 딥러닝 (2)
2022.02.11 | 37일차 | 7. 딥러닝 (2)
- 권혜윤 강사님 ( yujinkwon@nate.com )
신경망(Neural Network)
- 딥러닝은 신경망이라는 모델을 사용하여 학습
- 신경망은 뉴런(Neuron)들로 이루어진 그룹을 의미
- 하나의 데이터 학습을 새로운 방식으로 하는 수학 모델
- 신경망의 구성
- 입력층(Input), 출력층(Output), 은닉층(Hidden)
- 신경망 학습의 목표
- 가중치의 정확한 값을 찾는 것.
- 신경망 학습의 순서
- 데이터 입력
- 층의 가중치를 사용하여 출력 값 계산 (모든 층에서 반복)
- 마지막으로 나오는 예측값은 손실 함수를 통해서 점수 계산
- 손실 점수 감소하도록 가중치 수정(Optimizer) - 반복
- 손실 점수 최소화시키는 가중치 찾아냄
- 인공신경망
- 생물학적인 뉴런의 개념을 따서 만든 컴퓨팅(전산적)적인 모델.
- 두개의 층(Layers) 이상으로 구성되어 있다는 것이 특징.
- 퍼셉트론 (Perceptron)
- 인공 신경망의 다른 이름
- 다수의 신호를 입력으로 받아 하나의 신호를 출력한다.
- 퍼셉트론은 신호 1과 0을 가질 수 있다
- 주로 분류에 사용
- 활성화 함수는 Sigmoid, Relu 등이 있음
- 인공신경망을 이용한 AND 연산
- 인공 신경망의 Cost 함수 (평균 제곱근 오차)
- cost가 높음: 아직 모델이 학습되지 않은 것
- cost가 낮음: 학습이 잘 되어 있다는 것을 의미
- log를 이용해서 Cost 함수를 구현
- log(0) = 음의 무한대
- log(1) = 0
- 0~1 사이 log에 -를 곱한 cost 함수를 이용해서 Gradient Decent를 구현
활성화 함수 (Activation Function)
- 딥러닝 네트워크에서 노드에 입력된 값들을 비선형 함수에 통과시킨 후 다음 레이어로 전달하는데, 이 때 사용하는 함수를 활성화 함수라고 함
- 비선형 함수를 사용하는 이유는 딥러닝 모델의 레이어 층을 깊게 가져갈 수 있기 때문.
- 활성화 함수는 입력 데이터를 다음 레이어로 어떻게 출력하느냐를 결정하는 역할이기 때문에 매우 중요.
- 활성화 또는 비활성화를 결정하는 데에 사용되는 함수
- 활성화 함수 종류
- Sigmoid 함수
- 시그모이드 함수는 Logistic 함수라고 불리기도 하며, x의 값에 따라 0~1의 값을 출력하는 S자형 함수
- 은닉층의 깊이가 깊으면 오차율을 계산하기 어려움 (Vanishing Gradient Problem)
- 모든 실수 값을 0 보다 크고 1보다 작은 미분 가능한 수로 변환하는 특징이 있기 때문에, Logistic Classification과 같은 분류 문제의 가설과 비용 함수 (Cost Function)에 많이 사용됨
- 리턴 값이 확률 값이기 때문에 결과를 확률로 해석할 때 유용함.
- Tanh 함수
- Hyperbolic Tangent Function 은 쌍곡선 함수 중 하나로, 시그모이드 함수를 변형해서 얻을 수 있음
- 시그모이드가 가지고 있던 최적화 과정에서 느려지는 문제를 해결했다 (함수의 중심점을 0으로 옮김)
- ReLU 함수
- Rectified Linear Unit 경사함수는 가장 많이 사용되는 활성화 함수 중 하나
- Gradient Vanishing 문제를 해결하기 위한 함수
- 0보다 작은 값들에서 뉴런이 죽을 수 있는 단점 있음
- 학습이 빠르고, 연산 비용이 적고, 구현이 매우 간단함.
- Leaky ReLU
- Dying ReLU (뉴런이 죽는 현상)을 해결하기 위해 나온 함수
- ReLU 특성과 동일.
- PReLU
- Leaky ReLU와 거의 유사하지만 새로운 파라미터 α를 추가해 x가 음수인 영역에서도 기울기를 학습한다.
- ELU
- Exponential Linear Unit은 ReLU의 모든 장점을 포함하며 Dying ReLU 문제를 해결했음.
- 출력값이 거의 Zero-centered에 가까우며, 일반적인 ReLU와 다르게 exp 함수를 계산하는 비용이 발생함.
- Maxout
- ReLU의 장점을 모두 갖고, Dying ReLU 문제 또한 해결.
- 계산해야 하는 양이 많고 복잡하다는 단점이 있음.
- Weight (가중치)
- 뉴런사이의 연결 강도
- 훈련동안 업데이트 됨
- Learnable Parameters
- Bias (편향)
- 하나의 뉴런으로 입력된 모든 값을 다 더한 다음에(가중합) 이 값에 더 해주는 상수.
- 이 값은 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절하는 역할.
Today's code (Google Colab)
- 인공 신경망
댓글
댓글 쓰기