[Deep Learning] 밑바닥부터 시작하는 딥러닝(사이토 코기, 한빛미디어) : 4장 신경망 학습

한은기·2021년 7월 21일
0

Deep Learning

목록 보기
3/12
post-thumbnail

4.0. 들어가며

  1. 학습 : 훈련데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것
  1. 손실 함수 : 신경망이 학습할 수 있도록 해주는 지표 중 하나
  1. '학습'의 목표 : 손실 함수의 결괏값을 가장 작게 만드는 가중치 매개변수를 찾기

퍼셉트론 수렴 정리(Perceptron convergence theorem) : 선형 분리 가능 문제는 유한번의 학습을 통해 풀 수 있음을 증명함. 비선형은 불가


4.1. 데이터에서 학습하기

  1. 데이터 주도 학습
    1) 이미지에서 특징을 추출하고 특징의 패턴을 기계학습 기술로 학습할 수 있음
    2) 특징(feature) : 입력데이터에서 본질적인 데이터(중요한 데이터)를 정확하게 추출할 수 있도록 설계된 변환기. 사람이 특징을 설계해줌
    3) 신경망(딥러닝)은 사람이 특징 생각해내지 않도록 함. 이미지를 있는 그대로 학습(end-to-end)

종단간 기계학습(end-to-end machine learning) : 딥러닝을 부르는 방법 중 하나. 처음부터 끝까지, 데이터(입력)에서 목표한 결과(출력)를 사람의 개입 없이 얻음

  1. 훈련 데이터와 시험 데이터 : 기계학습 문제는 두 데이터로 나눠 학습, 실험을 수행
    1) 훈련 데이터(training data) 를 이용해 학습하며 최적의 매개변수 찾음
    2) 시험 데이터(test data) 를 사용해 훈련한 모델의 실력을 평가
    3) 범용 능력 : 아직 보지 못한(훈련 데이터에 없는) 데이터로도 문제를 바르게 푸는 능력
    4) 범용 능력 평가 위하여 두 데이터를 분리

오버피팅(overfitting) : 한 데이터셋에만 지나치게 최적화된 상태. 수중의 데이터셋 이외의 데이터셋에서는 결과가 올바르지 못함


4.2. 손실 함수(loss function)

  1. 손실함수 : 신경망 학습에서 사용하는 지표로, 최적의 매개변수 값을 탐색하도록 함
    1) 신경망 성능의 ‘나쁨’을 평가하는 지표. 현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 못하느냐를 나타냄
    2) 주로 오차제곱합, 교차 엔트로피 오차 사용
    3) 최적의 매개변수(가중치, 편향) 찾기 위해 손실함수의 값을 최소로 하는 매개변수를 찾음
    4) 매개변수의 미분(기울기)를 계산하여 매개변수 값 갱신하는 반복 : 미분 값이 음수면 가중치 매개변수를 양의 방향으로 변화시키고 미분값이 양수면 그 반대. 0이면 갱신 중지
    5) 정확도 대신 손실함수를 사용 : 정확도는 미분 값이 대부분의 장소에서 0이 되어 갱신이 불가함.
    6) 신경망 학습은 활성화함수 등의 기울기가 0이 되지 않고 값이 연속적으로 변화하는 것이 중요
  1. 오차제곱합(sum of squares for error, SSE)
    1) yk: 신경망의 출력(신경망이 추정한 값) / tk : 정답 레이블 / k : 데이터의 차원 수
    2) ‘각 원소의 출력(추정 값)과 정답 레이블(참 값)의 차’를 제곱한 후 그 총합
  1. 교차 엔트로피 오차(cross entropy error, CEE)
    1) tk는 정답 해당 인덱스의 원소만 1인 원-핫인코딩으로, 정답일 때의 추정의 자연로그를 계산
    2) 정답일 때의 출력이 작아질 수록 오차가 커지고 1에 가까울 수록 0에 가까움
  1. 미니 배치 학습
    1) 미니배치(mini-batch) : 신경망 학습에서 훈련 데이터로부터 골라낸 일부. 이를 가지고 학습을 수행함
    2) 미니배치 학습 : 전체 훈련 데이터 중 일부만을 무작위로 뽑아 그것만 사용하는 방법 (소스 코드는 하단 링크 참조)
  1. 배치용 교차 엔트로피 오차 구현(소스 코드는 하단 링크 참조)

4.3. 수치 미분

  1. 경사법에서는 기울기(경사)값을 기준으로 나아갈 방향을 설정
  1. 수치미분(numerical differentiation) : 아주 작은 차분으로 미분하는 것
  1. 해석적(analytic) 미분 : 수식을 전개해 미분하는 것. 오차를 포함하지 않는 진정한 미분
  1. 편미분 : 변수가 여럿인 함수에 대한 미분. 목표 변수 하나에 초점을 맞추고 다른 변수 값을 고정

4.4. 기울기(gradient)

  1. 기울기 : 모든 변수의 편미분을 벡터로 정리한 것
    1) 기울기의 결과에 따라 그래프를 그렸을 때, 기울기가 가리키는 쪽은 각 장소에서 함수의 출력값을 가장 크게 줄이는 방향(O) 가장 낮은 장소(X)
    2) 관련 소스 코드 하단 참조
  1. 경사법(gradient method)
    1) 현 위치에서 기울어진 방향으로 일정 거리만큼 이동한 뒤, 이동 지점에서 같은 연산을 반복하며, 함수의 값을 점차 줄이는 것
    2) 기울기가 가리키는 곳이 곧 최솟값인지는 모름
    3) 경사법을 이용해 최솟값은 아니더라도 그 방향으로 가서 함수 값을 줄이려 함
  1. 학습률(𝜼, learning rate) : 한 번의 학습으로 얼마만큼 학습해야 할지(=매개변수 값을 얼마나 갱신하느냐)
    1) 상단 사진의 식은 한 번의 갱신이며, 이를 반복하여 서서히 함수의 값을 줄임
    2) 미리 특정 값으로 정해두어야 하며, 이를 변경하며 올바르게 학습하는지 확인하며 진행
    3) 학습률이 너무 크면 큰 값으로 발산하고, 너무 작으면 거의 갱신되지 않은 채 끝남
    4) 관련 소스 코드 하단 참조

하이퍼파라미터(hyper parameter, 초매개변수) : 사람이 직접 설정해야 하는 매개변수. (ex)학습률. 시험을 통해 가장 잘 학습하는 값을 찾아야 함
↔신경망의 가중치 매개변수 : 가중치, 편향 등. 훈련 데이터와 학습 알고리즘에 의해 자동으로 획득되는 매개변수


4.5. 학습 알고리즘 구현하기

<신경망 학습의 절차 복습>
0. 전제 : 적응 가능한 가중치&편향이 있으며, 이를 훈련데이터에 적응하도록 조절함(=학습)
1. 1단계 : 미니배치(훈련 데이터 중 일부를 무작위로 가져옴) 선별
2. 2단계 : 기울기 산출 - 미니배치의 손실함수 값을 줄이기 위해(최솟값) 각 가중치 매개변수의 기울기 구함.
3. 3단계 : 매개변수 갱신 - 가중치 매개변수를 기울기 방향으로 조금씩 갱신
4. 4단계 : 1~3단계의 반복

해당 절의 모든 코드 구현은 하단 링크 참조

1.2층 신경망 클래스 구현
1) 클래스 초기화로, 입력층 뉴런수, 은닉층 뉴런수, 출력층 뉴런수, 가중치에 곱해주는 값을 설정
2) 예측(추론)수행, 손실함수 계산, 정확도 계산, 수치미분을 통한 매개변수 기울기 계산 메서드 포함

  1. 미니배치 학습 구현
    1) 경사법으로 매개변수 갱신
    2) 매번 6만개의 훈련 데이터에서 임으로 100개 이미지&정답 데이터 추려내, 확률적 경사하강법 수행해 매개변수 갱신
    3) 경사법 의한 갱신 횟수(반복횟수)를 10000번으로 설정. 갱신 시마다 훈련데이터에 대한 손실함수 계산, 값을 배열에 추가
    4) 손실함수 값 변화 추이 그래프로 그리면, 학습 횟수 늘어나며 손실함수 줄어듦(=학습 잘 되고 있음. 신경망의 가중치 매개변수가 서서히 데이터에 적응 중)
  1. 시험 데이터로 평가 : 신경망의 범용능력 평가 및 오버피팅 방지. 1에폭 당 정확도 계산 및 결과 기록

에폭(epoch) : 학습에서 훈련 데이터를 모두 소진했을 때를 1에폭이라 함


참조 링크

밑바닥부터 시작하는 딥러닝 3장 예제 소스 링크

profile
🏫Inha Univ. Naval Architecture and Ocean Engineering & Computer Engineering (Undergraduate) / 🚢Autonomous Vehicles, 💡Machine Learning

0개의 댓글