■ Key words
ㆍ신경망(Neural Network) / 인공신경망(Artificial Neural Network)
ㆍPerceptron
ㆍNeuron/Node
ㆍActivation Function
ㆍLayer
ㆍBias
ㆍIteration
■ 주요내용
ㆍPerceptron : 다수(두 개 이상)의 input을 받아 하나의 output을 출력하는 것
* perceptron의 예시
- AND GATE : 입력신호 모두 1이여야 1
- NAND GATE(Not AND) : 입력신호 모두 1일 경우에만 0
- OR GATE : 입력신호 중 하나라도 1이면 1
- XOR GATE : 입력신호가 모두 다를 떄에만(모두 0이거나 1인 경우 제외) 1; AND(OR, NAND)
ㆍ신경망의 기본 구조 : 뇌의 실제 신경계 특징을 모사하여 만들어진 계산 모델(computational model)
- Neuron/Node로 구성
- 한 개의 뉴런으로 여러 입력신호가 입력되면 각각 고유한 가중치(weight)가 반영되어 더해짐(weighted sum)
- 가중치 : 뉴런 간 시냅스의 연결강도(시냅스의 두께, 개수)와 같은 역할
- 가중합이 임계값(threshold)를 넘을 경우에만 다음 층(layer)로 신호가 전해짐
⇒ 데이터에서 발견할 수 있는 복잡한 관계를 학습할 수 있는 알고리즘과 데이터 구조를 만드는 것이 중요
ㆍ활성함수(Activation Function) : Step Function, Sigmoid Function, ReLu(Rectified Lenear Unit) 등
입력값을 출력값으로 내보내는 함수; 다음층으로 신호를 얼만큼 전달할 지 결정하는 함수(transfer function)
- 신경망 연산 : 벡터(행렬)의 연산과 같이 신경망을 가중치와 bias(상수)를 반영하서 가중합 계산
- 학습(training, learning) : 입력값을 출력값으로 내보낼 때, 그 가중치를 찾는 것
ㆍ신경망 층(Layer) : Input Layers / Hidden Layers / Output Layers로 구분
- 입력층(Input Layer) : dataset으로부터 입력 / feature의 수와 node의 수가 같음 /
계산을 하지 않고 그대로 값 전달 / 신경망의 층수(depth) 계산에 불포함
- 은닉층(Hidden Layer) : 계산이 일어나는 층 / 계산의 결과를 사람이 볼 수 없기 떄문에 hidden layer /
deep learning은 hidden layer가 둘 이상인 신경망을 의미
- 출력층(Output Layer) : 출력층에는 대부분 활성화 함수가 존재; 문제에 따라 다른 종류 사용 /
· 회귀문제 : 활성화함수 불필요 / output node 수 = 출력변수의 수
· 이진분류(binary classification) : sigmoid 함수를 사용하여 출력값을 확률로 변환하여 class 결정(1 or 0)
· 다중분류(multi-class) : output node수 = 분류 수 / softmax 함수를 활성화 함수로 사용
ㆍ기계학습(Machine Learning)과 신경망학습(Deep Learning)의 차이
- 기계학습 : 사용자가 데이터 분석 후 특성을 설계하고 찾아냄. 컴퓨터는 학습과정을 통해 특성 - 출력값 간 관계를 찾아줌
- 신경망학습 : 데이터에서 필요한 특성들을 신경망이 스스로 조합하여 찾아냄(feature engineering 불필요)
⇒ 표현학습(Representation Learning)이 차이점. Deep learning은 데이터 특성(feature)을 문제를 풀기 쉽도록 표현(representation)하는 방향으로 학습하는 능력이 있음. 신경망의 구조와 깊이를 변화시키며 데이터를 보다 유용하게 표현 가능
- 반복(Iteration) : epoch를 몇 번에 나누어 학습할 지 정하는 횟수
■ Session note
ㅁ 오전 session
ㆍ문제를 deep learning으로 풀어야 하는지, ML만으로 해결이 가능한지 생각해보기
ㆍPerceptron : 두 개 이상의 input, 하나의 output
ㆍDeep Learning : hidden layer가 2개 이상인 perceptron
ㆍ활성함수가 반드시 적용돼야 하는 것은 아니다
ㆍDeep Learning 학습 : 가중치를 학습하는 것
- 출력값 ≒ 실제값; 가중치 조정을 통해 출력값 조정 가능
ㆍBias도 학습을 함 :
ㆍ활성함수의 적용 : node(neuren) 안에서 연산되는 것. Hidden layer와 output later에 적용 가능
ㆍDeep learning library : tesorflow - 한 layer씩 만들 수도 있고 / pre-trained layer를 가져와서 활용할 수도 있음
ㆍlearning rate != 가중치 ; learning rate은 학습을 한 것을 다음 학습에 얼마나 반영할 것인지 정하는 것
cf> 도전과제 optimizer
ㆍ회귀문제 : output node를 하나로 / 분류문제 : 여러 개의 output node로
ㆍinput node의 수 = feature수 != data 수
ㆍoutput node의 수 = target의 수(분류 : class의 수 / 회귀 : 1)
ㆍbinary 문제 : sigmoid로 node 1개 사용(역치에 따라 0 또는 1) / class 2개이므로 output node를 2개 만들 수도 있음
- 연산이 빠른 sigmoid를 자주 사용하는 편; 하나가 결정되면, 나머지 하나는 자동으로 결정 됨
ㆍ비용함수 : 최적화에 필요한 개념
ㆍ신경망의 비선형성 : linear하지 않고 곡선 등 선형관계가 아니다
- DL은 ML과 다르게 알아서 가중치를 계산하므로 일일이 구해줄 필요가 없다
ㆍbias : node의 활성화 정도를 도와주는 것. 상수 개념.
i. e.> 2x >= 0.5 → 1, 2x < 0.5 → 0 ⇒ 2x + a >= 0.5 ; 여기서 a가 bias / 0.5rk theta(threshold)
ㅁ 오후 session
? 오전 self 함수 : softmax 함수 아닌지? softmax는 weight와 bias를 모두 풀어쓴 식. 예시는 hidden node가 2개인 것이 맞음
? 가중치는 양의 값만 가능한가? g1*x1 - g2*x2 != 0으로 하면 XOR 문제가 쉽게 풀릴 것 같은데
-> boolean은 해결 못 하나?
? epoch과 교차검정은 비슷한 개념? epoch는 train dataset를 몇 번 학습했는지 횟수를 의미함
? 다층 perceptron과 deep learning이 다른가?
ㆍ10,000개의 데이터를 2,000개씩 5개 세트로 나누어 각 세트를 한 번씩 학습한 경우(batch, iteration; parameter 최적화) : 1 epoch
ㆍnode가 많다고 좋은 것은 아니며, 적다고 나쁜 것도 아니다. 최적의 node수를 찾아야 한다.
- (input * output) ^ (1/2)의 안에서 node 수 정하기
ㆍf1_score / recall 모두 1에 가까운 경우 : 과적합 or data leakage
ㆍflatten : 고차원 데이터(그림 등)를 1차원 데이터(선형)로 바꿔주는 것
ㆍsoftmax함수 : 대략적인 클래스의 확률을 얘기해줌
ㆍ집값예측 : Sigmoid, ReLu 등의 함수가 꼭 필요한 것은 아님; 함수가 없으면 신경망 가중치 그대로 결과가 출력됨
ㆍBias : weight에 조정을 줄 수 있는 상수값
■ 주요함수
ㆍPerceptron
# AND GATE
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
# NAND GATE
def NAND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 1 ## only change here
elif tmp > theta:
return 0 ## only change here
# OR GATE
def OR(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.3 ## only change here
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
ㆍ활성함수(Activation Function)
- 계단함수(Step Function)
# 0보다 큰 경우에 1을 출력하고, 0보다 작을 때 0을 출력하는 계단 함수 구현하기
# 라이브러리
import numpy as np
import matplotlib.pyplot as plt
import math
# 샘플 데이터를 확인합니다.
x = np.array([-1, 1, 2])
print(x)
# 0보다 큰가?
y = x>0
print(y)
# 논리형태를 0과 1로 표현해보기
y = y.astype(np.int)
print(y)
# 함수 정의
def step_function(x):
return np.array(x>0, dtype=np.int)
# 함수 실행
print(step_function(-1))
print(step_function(0.5))
print(step_function(500000))
# 그래프 그리기
x = np.linspace(-1, 1, 100)
plt.step(x, step_function(x))
plt.show()
- Sigmoid Function
# 함수 정의
def sigmoid(x):
return 1/ (1+np.exp(-x))
# x값에 따른 출력값의 변화
x = np.array([-5, -1, 0, 0.1, 5, 500000])
print(sigmoid(x))
# 함수 그리기
x = np.linspace(-10, 10, 100)
plt.plot(x, sigmoid(x))
plt.xlabel("x")
plt.ylabel("Sigmoid(X)")
plt.show()
- ReLU(Rectified Linear Unit)
# 함수 정의
z = np.arange(-3, 3, .1)
zero = np.zeros(len(z))
y = np.max([zero, z], axis=0)
# 0과 z값 중 max값 출력; 0이하에서는 0 출력
# 그래프로 그리기
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(z, y)
ax.set_ylim([-1.0, 3.0])
ax.set_xlim([-3.0, 3.0])
#ax.grid(True)
ax.set_xlabel('z')
ax.set_title('ReLU: Rectified linear unit')
plt.show();
fig = plt.gcf()
■ Reference
ㆍ다층 퍼셉트론 : https://m.blog.naver.com/samsjang/221030487369
[34편] 딥러닝의 기초 - 다층 퍼셉트론(Multi-Layer Perceptron; MLP)
[33편]까지 머신러닝의 기초적인 내용에 대해 거의 모두 다루었으므로, 이번 포스팅부터는 요즘 핫하게 뜨...
blog.naver.com
ㆍ다양한 신경망 비교(CNN, RNN, MLP, SVM) : https://dbrang.tistory.com/1537
Deep Learning(ANN, DNN, CNN, RNN, SLP, MLP) 비교
/* -- Title : Deep Learning(ANN, DNN, CNN, RNN, SLP, MLP) 비교 -- Reference : 구글링, www.analyticsvidhya.com bbnflow.tistory.com */ ■ Machine Learning vs. Deep Learning ■ ANN(Artificial Neura..
dbrang.tistory.com
ㆍepoch, batch size, iteration : https://m.blog.naver.com/qbxlvnf11/221449297033
머신 러닝 - epoch, batch size, iteration의 의미
- 출처 이번 포스팅의 주제는 텐서플로우나 케라스 등을 사용해서 모델을 만들어 보았으면 다들 아실 용어...
blog.naver.com
ㆍ딥러닝 : https://youtu.be/C2sqt9pG6K0
ㆍ인공신경망 개념 : https://youtu.be/PyzBX93icz0
'Data Science > 4. 딥러닝' 카테고리의 다른 글
[n422]Distributed Representation (0) | 2021.08.18 |
---|---|
[n421]Count-based Representation (0) | 2021.08.17 |
[n414]Neural Network Hyperparameters (0) | 2021.08.12 |
[n413]Neural Training Options (0) | 2021.08.11 |
[n412]경사하강법과 역전파 알고리즘 (0) | 2021.08.10 |