일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- EDA
- 데이터 사이언티스트
- pandas
- CNN
- machineleaning
- Tableau
- Machine Learning
- SQL
- machinelearing
- 파이썬
- DNN
- 멋쟁이사자처럼
- data analyst
- ai
- MachineLearning
- numpy
- deep learning
- Deeplearning
- 범죄통계
- Data Scientist
- 데이터 분석가
- AISCHOOL
- data analysis
- python
- Data Science
- data
- 데이터분석가
- Today
- Total
Molybdenum의 개발기록
[TIL] 69일차_Deep Learning 본문
머신러닝과 딥러닝
=> 인간의 개입 여부의 차이
- 머신러닝 : 인간이 직접 특징을 도출할 수 있게 설계하여 예측값을 출력한다.
- 딥러닝 : 인공지능 스스로 일정 범주의 데이터를 바탕으로 공통된 특징을 도출하고, 그 특징으로 예측값을 출력한다.
=> 사람 같지만 보다 빠른 학습속도, 원하는 빅데이터를 학습 후 활용이 가능하다.
딥러닝
=> 비정형데이터에 대한 피처를 추출할 때 알고리즘 내부에서 추출한다
1) 기본 네트워크에 대한 동작방식을 배운다.
2) 심층신경망(DNN), Fully Connected Network, Densely Connected Network
3) 합성곱신경망(CNN) => 이미지, 텍스트 다 사용 가능하지만 주로 이미지 분류에 사용한다.
4) 순환신경망(RNN) => 순서가 있는 데이터, 시계열 데이터, 자연어 처리 등에 주로 사용한다.
- DNN은 엄청난 수의 연결과 네트워크 매개변수를 필요로 하는 완전 연결 계층으로 완전히 연결되었다라는 뜻으로 한층의 모든 뉴런이 다음층이 모든 뉴런과 연결된 상태를 말한다.
- CNN은 주로 시각적 이미지 분석에 사용하며 머신러닝의 한 유형인 딥러닝에서 가장 많이 사용되고 있는 알고리즘이다.
- RNN은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence)모델이다.
퍼셉트론(Perceptron)
: Perceptron은 인공 신경망의 한 종류로서, 가장 간단한 형태의 순방향 신경망(Feedforward) 네트워크 "선형분류기"로도 볼 수 있다.
단층 퍼셉트론 - 입력층과 출력층으로 구성
AND/OR -> 하나의 선으로 0과 1을 분리 가능하다
XOR -> 하나의 선으로 0과 1을 분리 불가능하다. = 단층 퍼셉트론의 한계
ANN(Artificial Neural Network)
문제점 : 학습 데이터에 따른 과적합 문제가 있다.
데이터 양이 많지 않은 경우 학습이 학습데이터에만 특화되어 새로운 데이터를 받았을 때 성능이 떨어지는 현상
=> 해결방안 : 사전훈련(제한 볼츠만 머신, RBM)을 통해 과적합을 방지한다.
제한 볼츠만 머신(RBM, Restricted Boltzmann Machine)
: 층간 연결을 없앤 형태로 순방향 신경망의 각 층을 효과적으로 사전훈련 => 과적합을 방지할 수 있는 수준으로 초기화 지점을 잡고 이를 다시 감독된 역전파를 사용해 학습
문제점 : 학습 시간이 너무 느리다.
=> 해결방안 : 그래픽 카드의 발전으로 (GPU, CUDA)학습시간이 빠르게 개선
multiclass 분류의 loss
- ordinal 형태 => sparse_categorical_crossentropy
- onehot 형태 => categorical_crossentropy
- binary 형태 => binary_crossentropy
TensorFlow
- callback : 모델 학습 도중 모델의 상태를 모니터링하고, 틀정 이벤트가 발생할 때 적절한 동작을 수행하도록 하는 함수
tf.keras.callbacks.Callback
tf의 model.fit() 함수에서 callback 매개 변수 설정
1) 모델 학습 과정에서 손실 함수나 정확도 등의 지표를 확인하여 모델이 잘 학습되고 있는지 판단
2) 모델 학습 도중 일정 주기마다 모델의 상태를 저장
3) 학습률을 동적으로 조절
validation_split = 0.2
=> 80%는 train, 20%는 validation으로 사용
loss
=> binary_crossentropy 학습을 하며 output 값에 대해 실제값과 비교하는데,
model.fit에 지정한 validation_spllit=0.2을 기반으로 loss -> train, validation -> validation 데이터 셋으로 측정
metric을 사용해서 실제값과 에측값의 차이를 acccuracy로 구하는데 이 때도 model.fit(validation_split=0.2)로 지정한 것을 바탕으로 80%는 train set, 20%는 validation set으로 accuracy를 측정
dropout
: 모델 성능을 비교하여 서로 연결된 연결망(layer)에서 0부터 1사이의 확률로 뉴런을 제거(drop)하는 기법
일부 노드를 제거하고 사용한다.
early_stop
: 성능이 더 이상 좋아지지 않으면 학습을 중지하도록 설정한다.
배치(batch)
: 모델 학습에 한 번에 입력할 데이터 셋과 같다.
에폭(epoch)
: 모델 학습 시 전체 데이터를 학습한 횟 수이다.
하이퍼 파라미터 조정의 목적
: 층의 개수를 어떻게 가져갈 것인가 => Unit의 개수를 어떻게 가져갈 것인가
모델의 성능 개선하기
- 레이어 변경하기
- Dropout 사용하기
- early_stop 값 조정하기
- epoch 조정하기
- learning_rate 조정하기
- batch 사용하기
순전파(Forward Propagation)
: 인공 신경망에서 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정
입력값은 입력층, 은닝층을 가지며 각 층에서의 가중치와 함께 연산되며, 출력층에서 모든 연산을 마친 예측값을 도출한다.
역전파(BackPropagation)
: 순전파와 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트한다.
역전파를 통해 가중치 비율을 소정하여 오차 감소를 진행-> 다시 순전파 진행으로 오차 감소확인 가능하다
활성화 함수(Activation function)
: 활성화함수는 인공신경망 내부에서 입력받은 데이터를 근거로 다음 계층으로 출력할 값을 결정하는 기능을 수행한다. 활성화 함수는 신경망을 구성할 때 설정하며 각각의 레이어를 정의할 대 세부적인 함수를 선택하게 된다.
입력값들의 수학적 선형 결합을 다양한 형태의 비선형(또는 선형) 결합으로 변환하는 역할을 한다.
기울기 소실(Gradient Vanishing)
: 깊은 인공신경망을 학습 할 때 역전파 과정에서 입력층으로 갈 수록 기울기(Gradient)가 점차 작아지는 현상(ANN 신경망의 문제점으로 대두)
문제점 : 기울기 소실로 인해 최적값 도출의 어려움이 있다.
=> 신경망의 활성함수의 도함수 값이 계속 곱해지다보면 가중치에 따른 결과값의 기울기가 0이 되어 버려서, 경사 하강법을 이용할 수 없게 되는 문제이다.
딥러닝의 학습방법 = 출력값과 실제값을 비교하여 그 차이를 최소화하는 가중치(W)와 편향의 조합 찾기
- 가중치는 오차를 최소화하는 방향으로 모델이 스스로 탐색(역전파)
- 오차계산은 실제 데이터를 비교하며, 손실함수(모델의 정확도 평가 시 오차를 구하는 수식)를 최소화하는 값 탐색
=> 알맞은 손실함수의 선정은 매우 중요
손실함수(Loss function)
: 손실함수는 실제값과 예측값의 차이를 수치화해주는 함수 => 오차가 작다 == 손실함수가 작다
손실 함수 J(W)가 2차 함수와 같이 볼록 함수의 형태라면 미분으로 손실이 가장 작은 가중치(W*)를 찾을 수 있다.
2차 함수는 아래로 볼록한 형태의 2차 함수 그래프에서 기울기(미분)가 0인 지점에서 최솟값을 갖는다.
모델 만들기 - 분류
- 조밀하게 연결된 신경망 층인 Dense 층 2개가 연속된다.
- 마지막층은 10개의 확률 점수가 들어 있는 배열을 반환하는 softmax층
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax') ])
Sigmoid => 이진분류
: 입력 데이터를 0과 1 사이의 값으로 출력하는 미분가능한 연속성을 가진 함수
Gradient Vanishing 현상이 발생할 우려가 크다.
Softmax => 다중 분류
: 다중 분류 예제에서 주로 사용하는 함수
분류할 클래스 개수만큼 차원 벡터를 입력받아 각 클래스에 속할 확률값을 Output 으로 출력한다.
입력값을 0~1 사이의 값으로 모두 정규화하고, 출력값 총 합계가 1이 되도록 하는 함수이다.
ANN(Artificial Neural Network)
: 인공 신경망은 생물학의 신경망에서 영감을 얻은 정보처리 체계로 단층 퍼셉트론과 다층 퍼셉트론을 포함한다.
시냅스의 결합으로 망을 형성한 인공뉴런(퍼셉트론)이 학습(시냅스의 결합 세기)을 통해 문제를 해결한다.
인공 신경망에는 정답의 입력에 의해서 문제에 최적화되어 가는 지도 학습과 정답이 없는 비지도 학습으로 나뉜다.
'TIL' 카테고리의 다른 글
[TIL] 71일차_Deep Learning_Modeling (0) | 2023.04.12 |
---|---|
[TIL] 70일차_Deep Learning_ANN_DNN (0) | 2023.04.11 |
[TIL] 58일차_Tableau_Modeling_Dashboard (0) | 2023.03.24 |
[WIL] 14일차_Scikit-learn_Others (1) | 2023.03.23 |
[TIL] 56일차_Credit_Card_SMOTE (0) | 2023.03.23 |