-
인공신경망(Artificial Neural Network)AI/DeepLearning 2022. 10. 3. 12:48
신경망 구조
- 입력, 은닉, 출력 층 3가지로 구성 된다
- 가중치를 갖는 층은 2개(입력, 은닉)이다
신경망 기본 구조 신경망 종류
1. 피드 포워드 신경망(Feed-Forward Neural Network, FFNN)
- 오직 입력층에서 출력층 방향으로 연산이 전개되는 신경망
2. 순환신경망(Recurrent Neutral Network)
- 은닉층의 출력값을 출력층으로도 값을 보내지만, 동시에 은닉층의 출력값이 다시 은닉층의 입력으로 사용
전결합층(Fully-connected layer, FC, Dense layer)
- 은닉층과 출력층에 있는 모든 뉴런은 바로 이전 층의 모든 뉴런과 연결되어 있다
- 어떤 층의 모든 뉴런이 이전 층의 모든 뉴런과 연결돼 있는 층을 전결합층(Fully-connected layer) 또는 완전연결층(FC)
- 밀집층(Dense Layer)라고 한다
활성화 함수(Activation Function)
- 은닉층과 출력층의 뉴런에서 출력값을 결정하는 함수
특징
- 활성화 함수는
비선형 함수(Nonlinear function)
- 직선 1개로는 그릴 수 없는 함수
- 활성화 함수를 f(x)=wx라고 가정(선형함수)한다고 해보자. 은닉층을 두개 추가 한다고 하면은, y(x) = f(f(f(x))) 선형 함수로 은닉층을 여러번 추가하더라도 1회 추가한 것과 차이가 없음
종류
1) 계단 함수(Step function) - 입력이 0을 넘으면 1를 출력하고, 그 외에는 0을 출력하는 함수
import numpy as np def step_function(x): y = x > 0 # 0이 넣으면 int형으로 바꿔주자 return y.astype(np.int) step_function(np.array([-1.0, 1.0, 2.0])) # true는 1로, false는 0으로 반환
2) 시그모이드함 수(Step function)
- 두 가지 선택지 중 하나를 고르는 이진 분류 (Binary Classification) 문제에 사용
3) 렐루 함수(ReLU)
4) 리키 렐루 함수(Learky Relu)
4) 소프트맥스 함수(Softmax funcion)
- 세 가지 이상의 (상호 배타적인) 선택지 중 하나를 고르는 다중 클래스 분류(MultiClass Classification) 문제에 주로 사용
순전파(Foward Propagation)란?!
- 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정을 순전파라고 한다
- 순전파를 진행하고 예측값을 얻는다
1. 다층 퍼셉트론의 순전파
입력의 차원이 3, 출력의 차원이 2인 인공신경망 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential() # 3개의 입력과 2개의 출력 # 입력층의 뉴런이 3개, 출력층의 뉴런이 2개 model.add(Dense(2,input_dim=3,activation='softmax')) model.summary() Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= dense (Dense) (None, 2) 8 ================================================================= Total params: 8 Trainable params: 8 Non-trainable params: 0 _________________________________________________________________
Model Summary를 뜯어서보자
- 학습가능한 매개변수 인 w와 b의 개수가 총 합해서 8개라는 의미
- 3차원 벡터에서 2차원 벡터가 되기 위해서 3 × 2 행렬을 곱했다고 이해하자
- y1에 연결되는 화살표 w1, w2, w3를 주황색으로 표현
- y2에 연결되는 화살표 w4, w5, w6를 초록색으로 표현
- 편향 b의 개수는 항상 출력의 차원을 기준으로 개수를 확인하면 된다(위의 예시 경우는 출력이 2이니까 편향 또한 b1, b2개 2개)
2. 다층 퍼셉트론의 순전파
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential() # 입력층 => 4개의 입력과 와 출력층 8개 model.add(Dense(8, input_dim=4, activation='relu')) # 은닉층1 => 8개의 입력과 8개의 출력 (입력은 생략) model.add(Dense(8, activation='relu')) # 은닉층2 => 8개의 입력과 3개의 출력 (입력은 생략) model.add(Dense(3, activation='softmax')) model.summary() Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= dense_1 (Dense) (None, 8) 40 dense_2 (Dense) (None, 8) 72 dense_3 (Dense) (None, 3) 27 ================================================================= Total params: 139 Trainable params: 139 Non-trainable params: 0 _________________________________________________________________
역전파(Back Propagation)란?!
- 순전파와는 반대 방향으로 연산을 진행하며 가중치를 업데이트하는 과정
- 예측값과 실제값으로부터 오차를 계산하고, 오차로부터 가중치와 편향을 업데이트하는 일을 맡아 한다
'AI > DeepLearning' 카테고리의 다른 글
콜백함수(EarlyStopping) (0) 2022.10.05 LSTM (0) 2022.10.04 레이어들(Layers) (0) 2022.09.30 퍼셉트론(Perceptron) (0) 2022.09.29 Tensorflow에서 딥 러닝 모델을 만드는 방법 (0) 2022.09.26