인공지능 스스로 일정 범주의 데이터를 바탕으로 공통된 특징을 도출하고, 그 특징으로 예측값을 출력함.
: 머신러닝과의 가장 큰 차이점은 머신러닝은 사람이 특징을 추출하고 예측하지만, 딥러닝은 인공지능이 특징을 추출하고 예측한다는 인간의 개입여부가 가장 큰 차이점이다.
🛠️ 초기의 인공신경망 Perceptron
사람의 신경망을 모방했다. 각 노드의 가중치와 입력치를 곱한 것을 모두 합한 값이 활성함수에 의해 판단되는데, 그 값이 임계치보다 크면 뉴런이 활성화되고 결과값으로 1을 출력한다
하지만 단층이기 때문에 XOR(AND OR)연산이 불가능하다 → 단층을 다층 구조로 변경했다.
따라서 입력층-은닉층-출력층으로만 이뤄졌던 인공신경망은 입력층 - 은닉층 - 은닉층 - ... - 출력층으로 구성되게되었다.
🤔 학습 데이터에 따른 과적합 문제
→ 사전훈련(제한 볼츠만 머신, RBM)을 통해 과적합을 방지한다
🤔 학습 시간이 너무 느리다
→ 그래픽 카드의 발전으로(GPU, CUDA)학습시간이 빠르게 개선됐다
인공신경망의 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정을 말한다. 입력값은 입력층, 은닉층을 지나며 각 층에서 가중치와 함께 연산되며, 출력층에서 모든 연산을 마친 예측값을 도출한다.
순전파와 반대로 출력층에서 입력층으로 계산하면서 가중치를 업데이트하는 과정을 말한다. 역전파를 통해 가중치 비율을 조정하여 오차 감소를 진행하고, 다시 순전파로 진행함으로써 오차 감소 확인이 가능하다. → 즉 역전파를 하는 이유는 검산하기 위함이다.
이는 다층 퍼셉트론 학습에 사용되는 통계적 기법으로, 출력층에서 제시한 값이 실제 원하는 값에 가까워지도록 학습하기 위해 통계적 방법에 의한 오차 역전법을 사용하게 된다.
이때 오차역전법은 동일한 입력층에 대해 원하는 값이 출력되도록 미분을 통해 각각의 가중치를 조정하는 방법을 사용하게되며, 속도는 느리지만 안정적인 결과를 얻을 수 있다는 장점이 있다.
👉 epoch와 이어짐
활성화함수는 은닉층과 출력층의 뉴런에서 출력값을 결정하는 함수로 가중치를 생성한다. 입력값들의 수학적 선형결합을 다양한 형태의 비선형 또는 선형 결합으로 변환하는 역할을 한다.
$y = f(w*x + b)$ 의 형태로 식이 완성되며 한글로 풀어보면,
$출력값 = 활성화함수(가중치(weight) * 입력값 + 편향(bias)$ 로 이뤄진다.
이때 (w*x + b)는 벡터곱과 합으로 이뤄져 있음을 기억해야 한다.
x = np.arange(-10, 10, 0.1) #-10~10까지 0.1간격으로 값 생성하기
plt.plot(x, tf.keras.activations.sigmoid(x), linestyle='--', label="sigmoid")
plt.axvline(0)
plt.legend()
x = np.arange(-10, 10, 0.1) #-10~10까지 0.1간격으로 값 생성하기
plt.plot(x, tf.keras.activations.tanh(x), linestyle='--', label="tanh")
plt.axvline(0)
plt.legend()
💡 기울기소실(Gradient Vanishing)
💡 기울기폭주(Gradient Exploding)
🤔 가중치들을 업데이트한다?
→ 예측값이 실제값에 더 가까워지도록하게 한다를 의미한다?
x = np.arange(-10, 10, 0.1) #-10~10까지 0.1간격으로 값 생성하기
plt.plot(x, tf.keras.activations.relu(x), linestyle='--', label="relu")
plt.axvline(0)
plt.legend()
x = np.arange(-10, 10, 0.1) #-10~10까지 0.1간격으로 값 생성하기
plt.plot(x, tf.keras.activations.swish(x), linestyle='--', label="swish")
plt.axvline(0)
plt.legend()
x = np.arange(-10, 10, 0.1) #-10~10까지 0.1간격으로 값 생성하기
plt.plot(x, tf.keras.activations.selu(x), linestyle='--', label="selu")
plt.axvline(0)
plt.legend()
[딥러닝]DNN: Loss, Optimizer, 딥러닝 모델구성 및 학습법 (0) | 2022.12.08 |
---|---|
[머신러닝] Regression & Boosting Model(1): Linear Regression, Decision Tree, Random Forest, Extra Tree, GBM (0) | 2022.11.24 |
[머신러닝] Ensemble, Bagging, Boosting (0) | 2022.11.24 |
[KMOOC-실습으로배우는머신러닝] 7.Ensemble Learning (0) | 2022.11.22 |
[KMOOC-실습으로배우는머신러닝] 5. Support Vector Machine (0) | 2022.11.22 |