퍼셉트론
입력값과 활성화함수를 사용해 출력값을 다음으로 넘기는 작은 신경망단위
오차역전파
- 최적화의 계산방행이 출력층에서 시작해 역으로 진행됨. 다층 퍼셉트론에서의 최적화 과정
- 컴퓨터가 예측값의 정확도를 높이기 위해 출력값과 실제 예측하고자하는 값을 비교하여 가중치를 변경하는 작업
참고: https://bskyvision.com/718
오차 역전파(error backpropagation) 개념 제대로 파악하기
미리 말씀드리지만 이 글은 좀 깁니다. 그리고 수식이 많아서 언뜻 보면 너무 어렵게 느껴질 수 있습니다. 하지만 이 글을 끝까지 인내하시면서 읽어내려가신다면 분명 오차 역전파(error backpropag
bskyvision.com
활성함수 activation function
신경망 노드에 들어오는 내용을 다음 레이어로 바로 전달하지 않고 활성함수를 통과해야만 출력이 된다.
1. 시그모이드 함수
로지스틱 회귀 모형에서 결과값이 항상 0, 1 사이에 있도록 한다. 이때 사용되는 활성화 함수가 시그모이드 함수이다.
2. Tanh (Hyperbolic Tangent function)
시그모이드 함수를 변형한 쌍곡선 함수이다.
3. 소프트맥스
다중분류문제에 적용한다. 입력값을 [0, 1] 값으로 모두 정규화 하여 출력, 출력값들의 총합이 항상 1이 된다.
4. Relu
가장 많이 사용되는 활성화 함수. 거의 모든 딥러닝에 사용한다.
시그모이드 함수의 기울기 소실 문제 해결
손실함수 loss function
독립변수들을 컴파일할 때, 입력 데이터와 출력 데이터가 얼마나 일치하는지를 평가해준다.
작을수록 좋다.
0. 평균 제곱 오차 손실 MSE (Mean Squared Error) --> 중요
평균절대오차(MAE), 평균절대백분률오차, 평균제곱로그 오차(RMSE), 회귀문제에 적용한다.
주로 연속형 데이터를 사용할 때 이용한다.(주식 가격, 예측 관련)
---
범주형 데이터에 사용
1. 이항 교차 엔트로피 binary crossentropy
이진분류 둘 중 하나, 활성함수는 시그모이드를 사용한다. 출력을 (0~1) 사이값
2. 범주형 교차 엔트로피 categorical crossentropy
- 멀티 클래스 분류에 사용
- 정규화 기법
- 원 핫 인코딩 = 한개만 한(0, 1) => 하나만 1로 바꿔주는 변환
3. sqarse categorical crossentropy
- 멀티 클래스 분류에 사용
- 원 핫 인코딩 된 상태일 필요없다.
- 단지 정수 인코딩 예) [1,2,3,4,5] -> 수1 우2 미3 양4 가5
원핫인코딩 이후 n => n-1
pandas.get_dummies()
최적화 방법 optimizer
오차를 최소화하는 경사하강법
0. 경사하강법
미분 기울기를 이용해 오차를 비교하여 가장 작은 방향으로 이동시키는 방법
- 학습률: 기울기를 찾을 때 어느만큼 이동시킬지를 정해주는 것
1. SGD 확률적 경사하강법 Stochastic Gradient Descent
2. Adam
효율적인 경사하강법
- RMSprop
- Adadelta
- Adagrad
- Adamax
- Nadam
- Ftrl
매트릭스 함수 Matrix Function
에포크 - 트레이닝이 학습(컴파일) 모든 레코드에 대해 한번 실행되는 것을 1 에포크 (레코드 470개)
에폭스 - 30: 470레코드가 30번 반복 계산하라 470*30
- 모델이 컴파일 될 때 수행결과를 나타나게 하는 함수
- 정확도를 측정하기 위해 사용되는 테스트 샘플을 학습과정에서는 제외시킴, 과적합문제를 방지하는 기능
배치 사이즈 Batch Size
레코드를 한번에 몇개씩 처리할지 결정하는 부분이다.
배치 사이즈값이 너무 크면 학습 속도가 느려진다.
너무 작으면 각 실행값의 편차가 생겨서 전체 결과가 불안정해진다.
운영하는 컴퓨터 메모리가 감당할 만큼의 배치사이즈를 찾아 설정해준다.
배치사이즈를 주지 않으면 디폴트값으로 32를 준다.
- 하이퍼 파라미터 튜닝
하이퍼파라미터 대표적으로는 러닝레이트(학습률), 히든레이어의 크기, 히든레이어의 개수
Dense
첫번째 add는 입력층과 은닉층을 같이 가진다.
마지막 add는 출력층이다.
입력층 은닉층 출력층
Sklearn의 train_test_split() 함수 이용
- 데이터셋 나누기
Train Data = 모델의 훈련을 위한 훈련용 데이터
Test Data = 모델을 평가하기 위해 정답(결과)를 이미 알고 있는 테스트용 데이터
Vaildation Data = 여러 분석 모델 중 어떤 모델이 적합한지 선택하기 위한 검증용 데이터
대체로 훈련데이터:테스트데이터의 비율은 7:3 정도를 사용한다.
vaildation data도 사용했을 때는 6:2:2를 가장 많이 사용한다. 충분히 데이터가 많을 때
과적합 방지
학습 데이터셋과 테스트 데이터셋으로 나누기
(+검증셋)
그래프로 과적합 확인
학습셋과 테스트셋 에러 시각화
학습의 자동중단, 얼리스탑핑
모델의 저장과 재사용
k겹교차검증
데이터를 여러셋으로 나누어 하나씩 테스트셋으로 사용하여 나머지를 모두 합하여 학습셋으로 사용하는 방법
sklearn kFold()
CNN
컨볼루션신경망
컨볼루션 층을 통해 이미지 특징을 도출
-> 여전히 결과가 크고 복잡 다시한번 축소 필요 ;
이 과정을 풀링 또는 서브샘플링이라고 한다.
1. pooling
- max pooling: 정해진 구역안에서 최대값을 뽑아냄, 보편적으로 사용, MaxPooling2D()
- average pooling : 평균값을 뽑아냄
2. drop out
은닉층에 배치된 노드층 일부를 임의로 꺼주는 것
노드가 많아지거나 층이 많다고 해서 무조건 좋지는 않다.
과적합을 얼마나 피하느냐가 중요하다.
간단하지만 효과가 큰 기법이다.
3. flatten
앞에서 컨볼루션층이나 맥스풀링은 이차원으로 다루고 있다.
model.flatten()함수를 이용해서 2차원배열을 1차원으로 바꾸어준다.
'2022 K Data 청년 캠퍼스 > ML&DL' 카테고리의 다른 글
[DL] 1. 딥러닝 개괄 (0) | 2022.07.25 |
---|---|
데이터 시각화 (0) | 2022.07.19 |
[ML] 4. 주요 머신러닝 모델 (0) | 2022.07.19 |
[ML] 3. 교차 검증 (0) | 2022.07.19 |
[ML] 2. 데이터 인코딩과 피처 스케일링 (0) | 2022.07.19 |