[인공 신경망 기초] 순전파와 역전파 계산

2021. 11. 19. 13:08·Programming/ML, Machine Learning

 

딥 러닝을 이용한 자연어 처리 입문

07. 딥 러닝(Deep Learning) 개요

04-3) 역전파(Back Propagation) 이해하기

내용을 바탕으로 정리한 글


기반이 되는 개념

 

딥 러닝을 이용한 자연어 처리 입문 - 7.1. 퍼셉트론(Perceptron)

1957년 제안된 초기 형태의 인공 신경망인 퍼셉트론

다수의 입력으로부터 하나의 결과를 내보내는 알고리즘

가중치와 편향을 이용하여 결과를 조정해나감

입력층과 출력층 밖에 없는 단층 퍼셉트론으로는

AND, NAND, OR 게이트는 구현 가능 / XOR 게이트를 구현하지 못해 외면받음

그래서 은닉층을 추가한 다층 퍼셉트론 등장하여 XOR 게이트까지 구현

 

딥 러닝을 이용한 자연어 처리 입문 - 7.2. 인공 신경망(Artificial Neural Network) 훑어보기

피드 포워드 신경망 개념

순환 신경망 개념

전결합층, 밀집층 개념

활성화 함수 개념과 종류

 

딥 러닝을 이용한 자연어 처리 입문 - 7.3. 행렬곱으로 이해하는 신경망

주어진 입력이 입력층으로 들어가서 은닉층을 지나 출력층에서 예측값을 얻는 과정이 순전파

4. 행렬곱으로 다층 퍼셉트론의 순전파 이해하기

행렬곱, 행렬의 크기 추정으로 이해

순전파 → 예측값

예측값과 실제값으로부터 오차를 계산, 가중치와 편향을 업데이트 → 역전파

 

 


 

순전파와 역전파 계산

딥 러닝을 이용한 자연어 처리 입문 - 7.4-3. 역전파 이해하기

예제, 2개의 입력, 2개의 은닉층 뉴런, 2개의 출력층 뉴런, 은닉층과 출력층의 활성화함수는 시그모이드 함수

여기서는 가중치 $w$만 고려하고, 편향 $b$는 고려하지 않음

은닉층과 출력층의 $z$ : 이전층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합;

아직 시그모이드 함수 거치지 않음 → 활성화 함수의 입력

| 오른쪽 $h$, $o$ : 시그모이드 함수를 지난 각 뉴런의 출력값

 

순전파

입력값($x_{1,2}$)과 가중치($w_{1,2,3,4}$)를 곱

구한 $z_{1,2}$를 활성화 함수(시그모이드 함수)에

다시 입력값($h_{1,2}$)과 가중치($w_{5,6,7,8}$)를 곱

구한 $z_{3,4}$를 활성화 함수(시그모이드 함수)에

이렇게 나온 $o_{1,2}$가 예측값

 

예제에서 실제값은 $0.4$, $0.6$

 

예측값과 실제값의 오차를 계산하기 위한 손실 함수로 평균 제곱 오차, MSE 사용

 

역전파 1단계

우선 업데이트해야 할 가중치는 $w_{5,6,7,8}$

일단 $w_{5}$부터 업데이트 하려면 경사 하강법을 위해서

전체 오차를 $w_{5}$로 편미분 한 값을 계산해야 함

미분의 연쇄 법칙(Chain rule)에 따라

 

역전파 1단계 - 첫번째 항

더보기

편미분 하기 전에 전체 오차 $E_{total}$의 식은

전체 오차 $E_{total}$을 예측값(출력값)인 output $o_{1}$으로 편미분하면

 

역전파 1단계 - 두번째 항

더보기

$o_{1}$이라는 값은 시그모이드 함수의 출력값, 시그모이드 함수의 미분은

그러므로 두번째 항의 미분 결과는

 

역전파 1단계 - 세번째 항

더보기

세번째 항은 $h_{1}$의 값과 동일함

 

역전파 1단계 - 세 항의 곱

우변의 모든 항을 계산했으므로, 모두 곱해주면

 

역전파 1단계 - 경사 하강법을 통해 가중치를 업데이트

학습률(learning rate) α는 $0.5$라고 가정

같은 방식으로 나머지 가중치 $w_{6,7,8}^{+}$ 계산

 

역전파 2단계

역전파 1단계와 마찬가지로, 업데이트해야 할 가중치는 $w_{1,2,3,4}$

일단 $w_{1}$부터 업데이트 하려면 경사 하강법을 위해서

전체 오차를 $w_{1}$로 편미분 한 값을 계산해야 함

미분의 연쇄 법칙(Chain rule)에 따라

 

역전파 2단계 - 첫번째 항

더보기

첫번째 항을 풀어서 쓰면

더보기

첫번째 항 안에 1번 항

여기서, $w_{5}^{+}$가 아닌 $w_{5}$를 이용하여 역전파 진행

 

더보기

첫번째 항 안에 2번 항

 

첫번째 항은

 

은닉층이 늘어날수록 항 안에 항 안에 항 안에 항 ... 처럼 늘어날 것

 

역전파 2단계 - 두번째 항

더보기

$h_{1}$이라는 값은 시그모이드 함수의 출력값, 시그모이드 함수의 미분은

그러므로 두번째 항의 미분 결과는

 

역전파 2단계 - 세번째 항

더보기

 

세번째 항은 $x_{1}$의 값과 동일함

 

역전파 2단계 - 세 항의 곱

 

역전파 2단계 - 경사 하강법을 통해 가중치를 업데이트

학습률(learning rate) α는 $0.5$라고 가정

같은 방식으로 나머지 가중치 $w_{2,3,4}^{+}$ 계산

 

결과 확인

업데이트 된 가중치에 대해서 다시 한 번 순전파를 진행하여 오차가 감소했는지 확인

기존의 전체 오차 $E_{total}$이 $0.02397190$였으므로, 역전파를 통해 오차가 감소한 것을 확인할 수 있음

 

인공 신경망의 학습 : 오차를 최소화하는 가중치를 찾는 목적으로 순전파와 역전파를 반복하는 것

 

 

 

 


📝 출처

https://wikidocs.net/book/2155

 

딥 러닝을 이용한 자연어 처리 입문

공부한 내용을 설명할 수 있을 정도로 정리하기 위해 기술 블로그가 아닌 책 형식으로 정리하고 있습니다. 잘 모르는 사람이 봐도 이해될 정도로 글을 쓰는 태도를 유 ...

wikidocs.net

 

저작자표시 비영리 변경금지 (새창열림)

'Programming > ML, Machine Learning' 카테고리의 다른 글

[scikit-learn] fit_transform()과 transform()  (0) 2022.05.04
PCA, Principal Component Analysis  (0) 2022.04.12
'Programming/ML, Machine Learning' 카테고리의 다른 글
  • [scikit-learn] fit_transform()과 transform()
  • PCA, Principal Component Analysis
카이로셜
카이로셜
  • 카이로셜
    카이로스의 시간
    카이로셜
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • Linux
        • Git, Github
        • ML, Machine Learning
        • DL, Deep Learning
        • NLP
        • Computer Vision
        • Network
        • PyCharm
      • IT
        • Windows
        • Mac OS
        • Programs
        • 한글
        • Word
        • Excel
        • PowerPoint
      • Math & Statistics
      • English
      • Graduate School
      • etc.
      • Record
  • 블로그 메뉴

    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    윈도우10
    아나콘다 가상환경
    윈도우11
    아나콘다
    클래스
    맥북 단축키
    docker
    anaconda
    객체
    도커
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
카이로셜
[인공 신경망 기초] 순전파와 역전파 계산
상단으로

티스토리툴바