인공신경망의 학습
인공신경망의 학습 과정
① 환경변수 지정
•
망 구성
◦
신경망의 성능은 뉴런의 연결 구조 및 연산 방법에 따라 차이가 발생
◦
망 형태의 3가지 특성
▪
층(layer) 의 개수
▪
망에서 정보가 뒷단(backward)으로 전파될 수 있는지
▪
망의 각 층 내에 있는 노드 개수
▪
일반적으로 한 층의 모든 노드가 다음 층의 모든 노드와 완전 연결 됨
◦
토폴로지는 망이 학습해야 할 태스크의 복잡성에 좌우됨
•
층의 개수
◦
층의 개수와 정보 진행 방향과 더불어, 각 층의 노드 개수에 따라 복잡성이 다양해짐
◦
입력 노드의 수는 입력 데이터의 속성 개수로 결정
◦
출력 노드의 수는 결과의 분류 개수나 모델의 결과 수로 결정
◦
모델을 시작하기 전 은닉층의 노드 개수를 결정하지만, 적당한 은닉층의 노드 개수를 결정하는 규칙은 없음
•
하이퍼파라미터(Hyper Parameter)
◦
신경망의 학습에 의해서 자동으로 획득되지 않고, 사람이 직접 설정해야 하는 값
•
에폭(Epoch)
◦
딥러닝을 수행하면서 학습데이터가 모두 소진되는 하나의 단위
◦
1 epoch은 전체 데이터 셋에 대해 한 번 학습을 완료
◦
예)10,000개를 100개의 batch_size로 학습할 때, 100회가 1epoch
◦
모든 데이터 셋에 대해 역전파(backpropagation)을 수행함
◦
적절한 epoch 설정으로 underfitting과 overfitting 방지
•
배치사이즈 (Batch size)
◦
한 번의 batch(mini-batch)마다 주는 데이터의 sample size
◦
batch size와 성능 간의 상관관계는 없으나 메모리 한계와 속도 저하 때문에 한번의 epoch에서 모든 데이터 학습 불가능
② 신경망 실행
•
활성화함수(Activation Function)
◦
입력 신호의 총합을 그대로 사용하지 않고, 입력 신호의 총합이 활성화를 일으키는지 아닌지를 정하는 역할로, 입력 신호를 규칙에 따라 출력 신호로 변환하는 함수
◦
sigmoid, tanh, relu, softmax
③ 예측값과 실제값 비교
•
손실 함수(Loss Function)
◦
비용함수(Cost Function)
◦
가중치에 따라 실제값과 예측값의 오차가 어느 정도인지를 평가
◦
신경망 성능의 “나쁨”을 나타내는 지표
◦
현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 못하느냐를 나타내는 지표
◦
손실함수 값을 작게 하는 매개변수(가중치와 편향)를 찾는 과정이 인공신경망의 학습
◦
미분 : 매개변수 값을 아주 조금 변경했을 때 손실 함수가 어떻게 변하나
◦
경사하강법(Gradient descent algorithm)을 이용하여 loss 최소화
④ 가중치 수정
•
학습률(Learning Rate)
◦
경사하강법에서 손실함수의 최소값의 위치를 찾기 위한 이동하는 거리의 비율
◦
경사하강법은 오차의 변화에 따라 이차 함수 그래프를 만들고, 적절한 학습률을 설정해 미분 값이 0인 지점을 구함
◦
학습률을 너무 크게 설정한 경우
▪
손실함수의 최소값을 찾지 못하고 값이 발산(explode)하거나 소실(vanish)하는 문제 발생
▪
local minimum에 빠지는 문제 발생
◦
학습률을 너무 작게 설정한 경우
▪
학습시간이 오래 소요되고, 최소값에 미쳐 도달하지 못한 상태에서 학습이 종료
•
옵티마이저(Optimizer)
◦
손실함수의 최소값을 찾기 위한 다양한 경사하강법(Gradient Descent Algorithm)
◦
SGD, momentum, adagrad, adam
신경망 설계
신경망 구현
TensorFlow를 사용하면 어떤 환경에서도 실행할 수 있는 ML 모델을 쉽게 만들 수 있습니다.