1장. tensorflow 2.0으로 신경망 구현
특징 :
- 파이썬, c++, 자바, R, Go 등의 주요 언어로 작업가능.
- 케라스(keras)는 텐서플로2.0과 통합된 고급 신경망API이다.
- 모델 배치, 생산과정을 쉽게 사용가능하게 해준다.
- 정적 그래프에 기반을 둔 그래프 연산과, 즉시연산(eager computation)지원이 도입되었다.
- 강력한 오픈소스 커뮤니티의 지원을 받고있다.
Keras란 :
딥러닝 모델을 만들고, 훈련시키기 위한 기초 구성요소를 구성하는 API.
Tensorflow, CNTK, MxNet, Theano등 여러 딥러닝 엔진에 통합 가능하다.
텐서플로 2.0에서 하이레벨 표준 API로 채택되어 직관적인 코딩이 가능하다.
퍼셉트론 perceptron :
feature으로 불리는 n개의 크기를 갖는 입력벡터가 주어지면,
f(x) = 1 if wx + b > 0 else 0 의 출력값을 가지는 알고리즘이다.
wx는 dot product, b 는 bias, wx + b 는 hyperspace 경계를 정의한다.
hyperspace는 ambient space보다 1차원 낮은 subspace라는 점에 주목한다.
keras 모델 작성 방식 :
- 순차적 sequential
선형 파이프라인(pipeline = stack)의 형태를 가진다.
망이 밀집dense되었다는 것은, 각 계층의 뉴런이 이전 뉴런과, 다음 계층의 모든 뉴런과의 완전 연결을 의미한다.
- 함수적 funtional
2장에서 설명.
- 모델 서브클래싱 model subclassing
2장에서 설명.
다층 퍼셉트론 multi-layer Perceptron MLP :
입력과 출력층 외에, 은닉층hidden layer들이 숨겨져 있는 신경망.
퍼셉트론의 한계 :
퍼셉트론의 특성상 0 과 1 사이의 불연속discontinuity로 인해, 점진적으로 변경되지 않는다.
활성화 함수 :
- 시그모이드 sigmoid
f(x) = 1 / {1 + exp(-x)} 로 정의되며, (-inf, inf)에서 (0,1)의 작은 변화를 일으키는 연속 함수이다.
=> 점진적인 변화를 표현가능함
-tanh
f(x) = exp(x) - exp(-x) / {exp(x) - exp(-x)} 로 (-1 , 1)의 값을 출력한다.
-ReLU(Rectifed Linear Unit)
f(x) = max(0,x) 로 정의되며, 지수계산의 최적화를 해결한다.
-ELU, LeakyReLU
ELU : f(x) = alpha(exp(x) - 1) if x <= 0 else x
LeakyReLU : f(a,x) = ax if x <= 0 else x .. (a > 0)
x가 음수일 때 작은 변화를 일으키는 함수들.
지도학습 supervised learning : 정답이 있는 데이터셋을 이용해서 신경망을 학습하는 방법.
One Hot Encoding 원핫 인코딩 : 신경망 내부의 정보를 인코딩하는 간단한 도구로, 범주형 특징을 숫자형 변수로 변환하면 좋을때 사용한다. ex) MNIST의 [0-9]의 값 d(범주형)를 10개의 위치를 가진 이진 벡터로 구성해 d의 위치만 1로 표기하고 나머지는 0 을 갖도록 인코딩한다.
Hyperparameter : 신경망과 훈련에 관련된 매개변수들.
softmax :
K차원 벡터 sigmoid함수의 결과 (0,1) 값들을 총합이 1이되게 한다. 확률로 표현가능하다.
Optimizer : 모델을 훈련시키는 동안 가중치를 업데이트하는데 사용되는 특정 알고리즘.
Objective Function(loss, cost func) : 가중치 공간을 탐색하는데 사용되는 함수.
#https://www.tensorflow.org/api_docs/python/tf/keras/optimizer
MSE = 1/n * sigma[i=1 to n] (d - y) ** 2 : 각 예측의 오차의 제곱의 합의 평균
Binary_crossentropy : 목표 : c / 모델출력값 : p | L(p, c) = -c ln(p) - (1-p)ln(1-p) : 이진 레이블 예측에 적절
Categorical_crossentropy : multiclass 로그 손실을 정의한다. 참분류의 확률을 1, 나머지는 0으로 설정하고,
참 = c, 예측 = y 일경우, L(c, y) = -sigma[i]Ci * ln(pi) : 참레이블을 원핫 인코딩하였을때 표현가능하다.
SGD stochastic gradient desent : 2장
일반적인 척도 metrics :
정확도 Accuracy : 타깃 대비 정확한 예측 비율
정밀도 Precision : 긍정으로 예측한 것 중 실제로 참인 것의 비율
재현율 Recall : 올바로 예측한 것 중 긍정으로 예측한 것의 실제로 참인 비율
=> 신경망의 성능을 판단하는데 사용
Convergence 수렴 :
일정 Epoch을 넘어서면 개선이 중지되거나 감지할수 없는 상태를 나타낸다.
DropOut :
훈련중 은닉층 내부 밀집 신경망에 일부를 무작위로 제거하여 정확도를 높이는 정규화의 형태.
직관적으로, 뉴런이 자기 이웃에 의존할 수 없어 더 성능이 향상된다고 생각가능.
RMSProp , Adam : SGD와 비슷한 고급 최적화 기술. Momentum 개념을 포함해서 많은 계산을 통해 빠른 수렴을 가능하도록 한다.
정규화 Regularization :
훈련 데이터의 내재된 모든 관계를 포함하려다 모델이 과도하게 복잡해질 수 있다.
이는 모델실행시간이 늘어나고, overfitting 이 발생가능하다.
일반적으로 훈련데이터와 검증데이터사이에서 검증 데이터의 loss가 늘어나는 순간이 복잡성 문제가 발생한 순간이라고 볼 수 있다.
- L1 regularization(LASSO) : 가중치의 절대값
- L2 regularization(Ridge) : 가중치의 제곱의 합
- Elastic regularization : 두 기법의 조합.
#https://www.tensorflow.org/api_docs/python/tf/keras/regularizers
Batch Normalization :
훈련과정에서 초기 가중치의 값은 반드시 변화되어서, 각 계층은 모든 배치마다 가중치를 지속적으로 다른 분포로 다시 조정해야 한다. 이로 인해 모델의 훈련 속도가 떨어져서,
각 배치와, 각 에폭에 대해 계층 입력이 좀더 유사한 분포를 갖게 하는 아이디어이다.
즉. 계층 출력을 0에 가까운 가우시안 분포 단위로 변환하여, 계층에서 배치 사이의 변형이 줄어든다.
입력 x = x - (배치 평균) / 분산 + 매우작은수
활성화 속도가 너무 작아 없어지거나, 너무 커져 폭발하는 것을 방지한다.
역전파 backpropagation : 15장
오류가 발견되는 즉시 점진적으로 수정해 나가는 방법.
과정 : 처음에 모든 가중치에 임의의 값을 할당.
값은 훈련과정을 통해, 입력, 은닉, 출력 단계로 순전파propagate forward되어서 예측이 이루어진다.
실제값과 예측값의 오차를 계산하여, 신경망 가중치를 조정하고자 오차를 역으로 전파 한다.
CNN convolutional Neural Network : 다차원 공간 구조를 보존한다는 아이디어. 4장
'독서 리마인더 > 텐서플로 2와 케라스로 구현하는 딥러닝' 카테고리의 다른 글
[텐서플로 2와 케라스로 구현하는 딥러닝] 4장 (0) | 2021.05.29 |
---|---|
[텐서플로 2와 케라스로 구현하는 딥러닝] 3장 (0) | 2021.05.29 |
[텐서플로2와 케라스로 구현하는 딥러닝] 2장 (0) | 2021.05.19 |