ㅁ 인공신경망
: 뇌 속 뉴런의 네트워크에서 영감을 받은 머신러닝 모델
- 딥러닝 핵심!
- 확장성이 좋음
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로 구성
- 입력과 출력이 숫자 (이진 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에서 미분 가능하지 않아 엉뚱한 곳으로 튈 수 있음. 그러나 계산 속도가 빠르고 잘 작동함
참고 : 핸즈온 머신러닝
'* [R_Python] 데이터분석 정리 > [Python] 딥러닝' 카테고리의 다른 글
Attention (0) | 2023.05.02 |
---|---|
Aanconda prompt 이용한 가상환경에 Tensorflow/주피터노트북 설치 (0) | 2021.04.19 |
[핸즈온] 텐서플로 저수준 API 살펴보기 (0) | 2021.03.06 |
[핸즈온] 인공신경망 규제 사용 (0) | 2021.01.27 |
[핸즈온] 고속옵티마이저 : AdaGrad (0) | 2021.01.18 |