딥러닝은 우리 뇌의 신경세포가 신호를 전달하는것처럼 작동한다.
딥러닝의 뉴런은 두개의 수학 방정식으로 작동하게 만든다.
먼저 들어오는 데이터를 가중치(weight)를 주고 연결하는 방정식과 처리하는 방정식(엑티베이션 함수)으로 구성되어있다.

- 데이터가 오면 가중치를 곱한다. 가중치는 랜덤으로 세팅한다.
- 데이터가 많으면 가중치와 데이터를 곱한값을 모두 더한다. (데이터₁*가중치₁ + 데이터₂*가중치₂...)
- 그렇게 나온 값을 x로 정하고 옆의 엑티베이션 함수에 적용한다.
- 그럼 결과값인 y값이 나오게된다.
엑티베이션 함수는 여러가지가 있다.

ANN(Artificial neural networks) Layers
뉴런으로 이루어진 여러개의 계층(레이어)을 놓고 데이터를 처리할수 있도록 한다.

# 인풋 레이어 속 뉴런은 입력시킬 데이터 개수만큼 있다.
# 히든 레이어는 학습시킬 뉴런의 수와 레이어의 수에따라 달라진다.
# 아웃풋 레이어는 값을 도출시키기 위한 레이어다.
인풋에서 히든으로, 다시 히든에서 도출된 값으로 인풋에서 히든으로 가는 방식을 forward propagation (프로파게이션 순전파) 라고 한다.
# 앞의 레이어가 처리되어야 다음 레이어로 갈수있다.
만일 인풋 레이어에 각각 +1, 𝒳₁, 𝒳₂ 가 오며 가중치가 각각 -30, 20, 20이 적용된다면
x의 값이 -30 + 20𝒳₁ + 20𝒳₂가 된다.
인풋레이어에 인풋 값으로 아래의 값이 오게된다고 가정하고 히든 레이어에서 x값을 계산한다면

히든레이어에서 나온 값이 위에서 부터 -30, -10, -10, 10 으로 나오게 된다.
이 값을 이제 엑티베이션 함수가 시그모이드 함수로 설정되어 있는 아웃풋 레이어로 보내어 계산하면
-30 은 0, -10 은 0, -10 은 0, 10 은 1로 나오게 된다.
만약 가중치가 달라졌다면 결과도 함께 달라졌을것이다.
딥러닝을 학습시키는 것은 이 가중치를 찾는 과정이라고 볼수있다.
# 딥러닝에서 가중치를 파라미터라고 부른다.
실제값과 인공지능을 통해 나온 예측값의 차이인 오차를 구한다.
오차가 최소화 될때까지 파라미터(가중치)를 수정한다.
# 오차가 최소화 된다는 뜻은 학습이 잘되고 있다는 뜻이다.
오차를 구하기 위해 에러 함수인 squared error를 사용한다.
# (데이터에 존재하는 목표 값 - 신경망이 계산한값)²
경사하강법(Gradient Descent)으로 오차의 최소값을 찾는다.

# 현재위치에서 오차의 기울기를 구하고 기울기의 반대방향으로 내려가서 오차 최소값을 찾는다.
경사하강법을 통해서 구한값이 일정 범위에 한정되면 local minima이며
전체 그래프 중 가장 작은 오차가 global minima라고 한다.
또한 minima를 구하기 위해 점차적으로 내려오는 보폭을 learning rate라고 한다.

# 보폭을 너무 작게하면 많은 시간과 데이터를 사용하게되고 너무 크게하면 최소 오차 지점을 지나칠 확률이 크다.
# 그래서 적당한 learning rate을 찾는게 중요하다.
# learning rate는 사람이 설정해줘야하는 하이퍼 파라미터다.
학습할때 적절한 오차 최소치를 찾기전에 보유하고있는 데이터를 학습이 끝나기 전에 다 쓸때가 있는데
이때 데이터를 현재의 오차값에서부터 다시 사용하게 된다.
학습할때 데이터를 다시 사용하는것 혹은 다시 사용하는 횟수를 epoch (에포크)라고 하며
한번 학습할때 여러개의 데이터를 넣는것을 batch라고 한다.
학습할때 사용한 경사하강법(Gradient Descent)과 같은 오차의 최소값을 찾는 방법이 optimizer이며
Gradient Descent를 개선한 다양한 옵티마이저가 존재한다.

학습할 때 히든 레이어에서 에러 함수에 시그모이드 함수를 사용하면 시그모이드가 0이거나 1일때 y가 0이 된다.
이때 기울기가 0이되어 학습이 오래걸리거나 학습 진행중에 멈춰버리게 되는데
이를 vanishing gradient(기울기 소실) 라고한다.

# 그래서 학습할 때 히든 레이어에서 시그모이드를 사용하지 않는다.
정상적인 방식으로 구한 오차로 아웃풋 레이어에서부터 반대방향으로 가중치를 업데이트 해주는데
이를 backward propagation (프로파게이션 역전파)라고 한다.
'딥러닝' 카테고리의 다른 글
| [딥러닝] 옵티마이저의 learning rate 설정 (0) | 2022.06.13 |
|---|---|
| [딥러닝] GridSearch, 최적의 하이퍼 파라미터 찾기 (0) | 2022.06.10 |
| [딥러닝] 텐서플로우 예측 ANN: loss= 'mse', activation= 'linear' (0) | 2022.06.10 |
| [딥러닝] 텐서플로우 분류 ANN: loss= 'binary_crossentropy', activation= 'sigmoid', epoch, batch_size (0) | 2022.06.10 |
| [딥러닝] 텐서플로우 기초 (0) | 2022.06.10 |
댓글