본문 바로가기

* [R_Python] 데이터분석 정리/[Python] 딥러닝

[핸즈온] 인공 신경망 소개

ㅁ 인공신경망

: 뇌 속 뉴런의 네트워크에서 영감을 받은 머신러닝 모델

  • 딥러닝 핵심!
  • 확장성이 좋음
    ex) 구글 이미지 분류/시리야 음성 인식/ 유튜브 추천 알고리즘/알파고

 

10.1 생물학적 뉴런에서 인공 뉴런까지

 

  • 1943년 신경생리학자 워런 매컬런과 수학자 윌터 피츠의 논문에서 소개
  • 처음 주목을 받았으나, 번번히 제약사항 때문에 꺾임
  • 최근 다시 주목받고 있는 이유 : 기술의 변천

         1) 데이터가 많아짐
         2) 컴퓨터 성능 향상
         3) 훈련 알고리즘 향상
         4) 이론상 제한이 실전에서 문제되지 않음이 입증     ex) 지역 최저점 문제
         5) 사람들의 주목

 

10.1.1 생물학적 뉴런

ㅁ 뉴런 하나의 동작

  • 생물학적 뉴런은 활동전위(AP, action potential/신호,Signal)라고 부르는 전기 자극을 만들어 냄
  • 축삭돌기를 따라 시냅스로 이동
  • 신경전달물질(neurotransmitter)이라는 화학적 신호 발생하여 전달

ㅁ 뉴런은 보통 수십억 개로 구성되 거대한 네트워크로 조직

 

 

10.1.2 뉴런을 사용한 논리 연산

ㅁ 인공 뉴런

  • 하나의 이상의 이진입력과 이진출력을 가짐
  • 논리 명제도 계산할 수 있음

 

ㅁ 간단한 논리 연산을 수행하는 인공 신경망

 

  • (맨 왼쪽) 항등함수 : 뉴런 A에 따라 C도 활성화/꺼짐
  • 논리곱 연산 : A와 B가 활성화 시, C도 활성화
  • 논리합 연산 : A 혹은 B가 활성화 시, C 활성화 
  • (맨 오른쪽) 논리 부정 : A 활성호 B 비활성화 시. C 활성화

 

 

10.1.3 퍼셉트론

  • 1957년 프랑크 로젠블라트가 제안
  • TLU(threshold logic unit/LTU, linear threshold unit) 형태의 인공 뉴런 기반
  • 퍼셉트론은 층이 하나인 TLU로 구성

 

TLU

  • 입력과 출력이 숫자 (이진 on/off 이 아님)
  • 각 입력 연결은 가중치와 연관
  • 활성화 함수 (TLU에서 계단 함수) 적용하여 결과 출력
  • 임계값을 넘으면 양성 클래스 출력

 

 

ㅁ 계단함수

  • 헤비사이드 계단 함수 (Heaviside step function) : 가장 널리 사용됨, 출력 0, 1
  • 부호함수 (sign function) : 가끔 사용 출력 -1. 0. 1

 

 

ㅁ 완전 연결층

  • 한 층의 모든 뉴런이 다음 층의 모든 뉴런과 연결

다중 출력 분류기

 

식. 완전 연결 층의 출력 계산

$ h_{W,b}(X) = \phi (XW + b) $

Where X : 입력 특성의 행렬

W: 편향 뉴런을 제외한 연결 가중치

b : 편향 뉴런과 인공 뉴런 사이의 모든 연결 가중치

$\phi$ : 활성화 함수 (인공뉴런이 TLU인 경우 계단함수임)

 

ㅁ 퍼셉트론 학습 규칙(가중치 업데이트)

- 퍼셉트론 훈련은 오차가 감소되도록 연결된 가중치 강화

 

$ W_{i,j}$ $^{(next step)}$ = $ W_{i,j}$ + $ \eta$ ($y_i$ - $\hat{y_{j}}) x_{i} $

 

Where $W_{i,j}$ : i번째 입력 뉴런과 j번째 출력 뉴런 사이 연결 가중치

$x_{i}$ : i번째 뉴런의 입력값

$\hat{y_{j}}$ : j번째 출력 뉴런의 출력값

$y_j$ : j번째 출력 뉴런의 타깃값

$\eta$ : 학습률

 

 

 

# Python 퍼셉트론

더보기

 

from sklearn.linear_model import Perceptron

 

per_clf = Perceptron()

per_clf.fit(X,y)

 

y_pred = per_clf.perdict([[2, 0.5]])

 

 

 

10.1.4 다층 퍼셉트론(MLP)과 역전파

  • 퍼셉트론은 XOR 같은 문제를 풀 수 없음
  • 퍼셉트론을 여러개 쌓아 올려(은닉층) 제약을 줄임 > 다층 퍼셉트론

 

  • 출력층을 제외한 모든 층은 편향 뉴런을 포함
  • 신호가 한 방향으로 흐름 (피드포워드 신경망(FNN))
  • 은닉층을 쌓아 올린 인공 신경망 (심층 신경망(DNN))

ㅁ 역전파(backpropagation)

: 그레디언트를 자동으로 계산하는 경사 하강법

- 미니배치씩 진행하여 전체 훈련 세트를 처리 하여 반복 : 각 반복 에포크(epoch)

 

  • 정방향 계산(forward pass) : 각 미니배치는 첫 번째 은닉층으로 보내짐 > 그 다음 은닉층 > ... : 
  • 역방향 계산 : 출력이 오차에 기여하는 정도 계산 > 거꾸로 전파 
  • 경사 하강법 단계 : 오차가 감소하도록 가중치 조정 

 

 

ㅁ 활성화 함수

: 연속함수 사용 (계단식은 아무리 층을 많이 쌓아도 하나의 층과 동일해지기 때문)

  • 로지스틱(시그모이드) : 출력 범위 0~1
  • 하이퍼볼릭 탄젠트 함수(쌍곡 탄젠트 함수) : 출력 범위 -1~1, 훈련 초기에 각 층의 출력을 원점 근처로 모으는 경향
  • ReLU 함수 : 0에서 미분 가능하지 않아 엉뚱한 곳으로 튈 수 있음. 그러나 계산 속도가 빠르고 잘 작동함

 

 

 

참고 : 핸즈온 머신러닝