04. 딥러닝 이해하기
ANN(Artificial Neural Network, 인공신경망) : 신경망을 사람들이 인공적으로 만든 것을 의미한다. 뉴런이 서로 연결된 모습을 흉내 냈다.
입력층: 데이터를 입력받는 층
출력층: 출력층에 어떠한 값이 전달되었냐에 따라 인공지능의 예측 값이 결정된다.
은닉층: 입력층에서 들어온 데이터가 여러 신호로 바뀌어서 출력층까지 전달된다.
이와 같이 레이어가 한 층으로만 구성된 것이 아니라 여러층, 다시말해 깊은 층으로 구성된 인공신경망을 DNN(Deep Neural Nework, 심층 신경망)이라고 부른다. 이 심층 신경망이 학습하는 과정을 바로 Deep Learning이라고 한다.
DNN(인공 신경망)은 입력받은 데이터를 사용하여 추론한 결과를 보여준다.
05. 인공 신경망의 신호 전달 원리
뉴런은 하나의 뉴런에서만 신호를 전달받는 것이 아니라 여러 뉴런에서 신호를 전달받는다.
신경망에서 중요한 용어 중 weight(가중치)와 bias(편향)이라는 중요한 용어가 있다.
각각의 뉴런을 잇는 가중치가 어떠한 값을 가졌는지에 따라 학습이 잘 된 신경망인지, 그렇지 않은 신경망인지 구분된다.
인공 신경망이 학습한다는 의미는 이 가중치와 편향 값을 각 데이터에 맞게끔 정교하게 맞추어 간다는 의미다.
여러 뉴런에서 들어온 신호 세기를 특정한 값으로 바꾸기 위해 activation function(활성화 함수)를 사용한다.
대표적인 activation function으로는 시그모이드, 하이퍼볼릭탄젠트, 렐루함수가 있다.
활성화 함수1. 시그모이드 함수
만약 뉴런에서 들어온 신호 세기를 모아서 그 값이 0보다 클수록 1에 가까운 숫자로 바꿔준다.
반대로 신호 세기가 0보다 작을수록 0에 가까운 숫자로 바꾸어 주는 특징이 있다.
활성화 함수2. 하이퍼볼릭탄젠트 함수
입력값이 음수일때 시그모이드 함수는 출력값이 0에 가까워졌지만, 하이퍼볼릭탄젠트 함수는 출력값이 -1에 가까워진다는 특징이 있다.
즉 하이퍼볼릭탄젠트 함수는 값이 작은 신호를 -1에 가까운 숫자로 바꾸어서 내보낸다.
활성화 함수3. Relu(렐루함수)
입력값이 0보다 작은 숫자일때는 0으로 바꾸어서 내보내고, 0보다 클 때는 입력받은 값이 출력된다.
소프트맥스 함수
활성화 함수는 아니다.
출력층에서 주로 사용된다.
최종 결과값을 normalization(정규화)하는 데 사용한다.
즉, 소프트맥스 함수는 인공 신경망 모델에서 항상 사용되는 것이 아니라 분류 문제에서 사용되는 함수라고 볼 수 있다.
06. 인공신경망의 학습 원리
오차를 줄이기 위해서는 전달하는 신호의 세기를 조절해야 하는데, 이때 전달하는 신호의 세기를 조절할 수 있는 방법이 바로 가중치의 값을 수정하는 것이다.
오차를 줄이는 방법으로
1. 기울기를 사용하여 weight(가중치)의 값을 변경하는 Gradient Decent(경사 하강법)
2. 이 Gradient Decent를 사용하여 여러 weight(가중치)를 차례로 변경해 나가는 Back Propagation(오차 역전법)이 있다.
Gradient Decent(경사 하강법)
그래프를 살펴보면 가중치의 값에 따라 오차가 달라지는 것을 볼 수 있다.
이처럼 오차를 줄이려면 가장 오차가 작은 지점으로 가중치를 이동해야 한다.
가장 큰 특징이 바로 각 지점에서의 기울기이다.( 이때 기울기는 양수와 음수가 중요한 것이 아니라 그 크기가 중요하다.
기울기를 보고 기울기가 줄어드는 쪽으로 가중치 값을 이동하는 이 밥법이 경사하강법이다.
Back Propagation(오차 역전법)
오차가 있으면, 마지막부터 처음까지 되돌아가면서 경사 하강법을 사용하여 각각의 가중치 값을 수정해 나간다.