[머신러닝(machine learning) - 딥러닝(deep learning)] 내일배움캠프 AI트랙
딥러닝(deep learning)은 XOR문제를 해결하기 위한 시도로 부터 시작된다.
OR문제와 AND문제의 데이터는 기존의 회귀모델을 사용하여
분류가능하였지만, XOR문제의 데이터는 분류를 할 수 없었다.
XOR문제를 풀기위해 사람의 신경을 이루고 있는 뉴런과 같이
기계를 학습시키면 기계도 사람처럼 생각할 수 있지 않을까? 라고 고민하게 되었고,
XOR문제를 도식화하여 표현한 것이 바로 퍼셉트론(perceptrons)이다.
이 퍼셉트론을 여러개 붙인 multilayer perceptrons (MLP)로
XOR문제를 풀어보려 했지만, 기존의 회귀방식으로는 문제를 풀 수 없었다.
이때 등장한, back propagation이 결과값에서 error를 반환하고
W,b 값을 바꿔서 출력하는 반복작업을 통해
논리회귀 그래프가 아닌 직선 2개를 그릴 수 있게 되었다.
MLP로 출력된 결과를 back propagation이 최대치로 끌어올려
결과값을 만들어내는 방식을 딥러닝(deep learning)이라고 한다.
왜 이름을 딥러닝(deep learning)이라고 지었을까?
그 이유는 MLP의 구조를 보면 알 수 있다.
하나하나의 선형회귀를 층층이 깊게 쌓는다고 하여 딥러닝이라고 표현한다.
MLP는 입력값을 받는 input layer,
반복학습을 하는 hidden layer,
출력값을 뱉는 output layer 으로 3단계로 나뉜다.
hidden layer는 수많은 hidden node로 이루어져있고,
가장 많은 값을 가지고 있다.
우리는, hidden layer의 갯수와 node수를 조절하여
원하는 결과값을 얻기위해 실험을 해야한다.
예제를 풀어보기 전에,
딥러닝에서 사용하는 기본적인 용어들을 학습해보자.
선형회귀 = dense layer = fully connected
batch : 학습하기쉽게 데이터셋을 쪼개는 단위
iteration : 쪼개진 데이터셋을 학습하는 횟수
epoch : 학습을 반복하는 횟수
activation function(활성화 함수)
임계치를 넘어야 다음 node로 넘어가게 설정
예) sigmoid 를 사용하여 0,1 값을 반환
대표적인 활성화 함수는 reLU
0보다 작은 수는 0으로, 0보다 큰수는 본래 값으로 출력
overfitting, underfitting (과적합, 과소적합)
fit시킨다는 것은 학습시킨다는 뜻이기 때문에,
과하게 학습시키거나 학습을 덜 시킨 경우를 말한다.
테스트에러가 가장 낮은 지점을 best fit 이라고 하고,
보통은 오버피팅이 많이 발생하기 때문에
이 문제를 해결하기 위해 많은 실험을 한다.
오버피팅을 해결하기 위한 방법📌
- 데이터증강기법 : 데이터의 형태를 변형시켜 증강시킴 예) 하나의 사진을 확대하거나, 색을 변환
- 드랍아웃 : 판단하는 node를 랜덤으로 끊어 실험
- 앙상블 : 여러개의 딥러닝 모델을 만들어 출력을 평균값이나 최대값을 뽑아내도록 설정하여
하나의 결과로 출력하는 방법
- 러닝레이트 decay(schedules) : 러닝레이트의 걸음폭을 minumum에 가까워질수록 작게 줄여나가는 방법
오버슈팅을 막을 수 있다. callback 함수를 사용하여 조절함.
이제, 이론으로 배운것들을
실제 딥러닝 모델로 구현해보자🧙