머신러닝 19 ~ 27

정우현·2024년 7월 11일

ML 공부

목록 보기
13/16

뉴런

  • 이전 뉴런부터 입력신호를 받아 또 다른 신호를 발생시킴
    이때, 입력 값들의 모든 합이 특정 임계점을 넘어야 출력 신호를 발생시킴

활성화 함수

  • 입력신호를 받아 특정 값의 임계점을 넘어서는 경우에 출력을 생성해주는 함수

신경 세포인 뉴런 동작원리를 머신러닝에 적용하기 위해
1. 입력 신호와 가중치를 곱하고 적당한 bias를 더함(Linear Regression)
2. 그 값을 활성화 함수 입력으로 전달(Classification)
3. 임계점이 넘으면 1을 그렇지 않으면 0을 다음 뉴런으로 전달

딥러닝

  • 입력층, 1개 이상의 은닉층, 출력층으로 구성되고, 출력층에서의 오차가 최소가 되도록 가중치와 bias를 최적화 시키는 머신러닝의 한 분야

Feed forward

  • 이전 층의 출력 값이 다음 층의 입력 값으로 들어가 데이터가 지속적으로 전달되는 방식


수치미분을 통한 딥러닝

수치미분을 사용해 가중치와 bias를 업데이트 하여 오차를 최소화 시키는 방법
-> 직관적이지만 미분계산 시 많은 시간이 소요됨
=> 오차 역전파(Back Propagation)을 이용하여 해결

오차 역전파

시그모이드 함수 미분

시그모이드 함수 미분 원리와, 체인 룰을 같이 엮어 식을 단순화

오차역전파 유도를 위한, 계산값 정리

  1. 출력층의 E값을 체인룰을 통해 수치 미분이 아닌 간단한 곱하기 연산으로 계산하기
  • 오차값 E를 노드에 따라 E1, E2로 구분
  • 선형계산으로 E1, E1가 서로의 연산 결과에 영향을 미치지 않음을 확인
  • 미분을 체인룰을 통해 3개의 국소미분으로 분할(이때, 서로 영향을 미치는 관계를 확인하여 국소미분을 구성)
    => 결론적으로 수치미분이 간단한 곱하기 연산으로 변화함
    W값 뿐만 아니라, bias를 구할 때도 동일한 논리 과정을 거침
  1. 이렇게 구한 오차역전파를 통해, 출력층의 가중치 업데이트를 수치미분이 아닌 행렬 기반의 곱하기 형태로 계산 가능

  2. 은닉층에서의 오차역전파를 적용할 시는, 출력층과 달리, 오차값 E1 / E2에 모두 영향을 미침
    -> 따라서, 두가지 모두를 계산해줘야 함

  3. 은닉층에서 구한 오차역전파를 통해, 단계 2와 동일하게 행렬 기반의 곱하기 형태로 변경

  4. 이를 통한, 오차역전파 일반 공식 구하기

출력층에서의 적용

은닉층에서의 적용

=> 오차역전파 일반공식에서 동일한 패턴이 보임 -> 이를 통해 은닉층이 늘어나도 패턴을 통한 적용으로 계산을 쉽게 할 수 있음

오차역전파를 이용한 파이썬을 통한 MNIST 딥러닝 코드 짜기 예제
https://www.youtube.com/watch?v=Wy-7bKf4UWA&list=PLS8gIc2q83OjStGjdTF2LZtc0vefCAbnX&index=27
(추후에 클론 코딩 해보기)

profile
Protein Design Lab Researcher, Seoul National University

0개의 댓글