1. 비선형 활성화 함수(Activation Functions)
* 신경망의 성능을 향상시키기 위해 사용
* 선형 함수는 입력값과 가중치를 곱한 결과를 그대로 출력하기 때문에 신경망에서 여러 개의 선형 활성화 함수를 사용한다면
최종 출력값은 입력값과 가중치의 선형 조합으로 표현되므로 이는 입력 데이터의 비선형 관계를 표현할 수 없음
* 신경망이 입력 데이터의 비선형 관계를 잘 학습할 수 있도록 하기 위해서 비선형 활성화 함수를 사용
- import
import numpy as np
import matplotlib.pyplot as plt
|
1. 시그모이드(Sigmoid )
Sigmoid 함수는 주어진 입력에 대해 출력을 0과 1 사이의 값으로 변환하는 비선형 활성화 함
- Sigmoid 함수를 정의하고 그래프로 그리기
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.arange(-5.0,5.0,0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.plot([0,0],[1.0,0.0],':') #가운데 점선 추가
plt.title('Sigmoid Function')
plt.show()
|
결과 해석이 코드를 실행하면, x 축 값에 따라 Sigmoid 함수의 출력이 시각적으로 표현됩니다.Sigmoid 함수는 입력이 음수에 가까울수록 0에 가까운 값을 출력하고, 입력이 양수에 가까울수록 1에 가까운 값을 출력합니다. 따라서 Sigmoid 함수는 이진 분류 문제에서 확률을 표현하는 데 사용됩니다. |
|
2. 하이퍼볼릭탄젠트( Hyperbolic Tangent)
Tanh 함수는 입력이 음수에 가까울수록 -1에 가까운 값을 출력하고, 입력이 양수에 가까울수록 1에 가까운 값을 출력
* 하이퍼볼릭 사인 함수(sinh) 와 하이퍼롤릭 코사인 함수(cosh)로 정의
* 신경망의 활성화 함수로 자주 사용됨
* 출력값이 -1에서 1사이로 조정되어 학습과정에서 중심화된 데이터 분포를 유리
* 기울기 소실 문제로 완화하는데 도움
- Hyperbolic Tangent 함수 (Tanh 함수)를 그래프로 그리기
x = np.arange(-5.0, 5.0, 0.1)
y = np.tanh(x)
plt.plot(x, y)
plt.plot([0,0], [1.0, -1.0], ':') # 가운데 점선 추가
plt.axhline(y=0, color='orange', linestyle='--')
plt.title('Tanh Function')
plt.show()
|
결과 해석이 코드를 실행하면, x 축 값에 따라 Tanh 함수의 출력이 시각적으로 표현됩니다.Tanh 함수는 입력이 음수에 가까울수록 -1에 가까운 값을 출력하고, 입력이 양수에 가까울수록 1에 가까운 값을 출력합니다. 따라서 Tanh 함수는 신경망에서 활성화 함수로 사용되며, 입력 값의 범위를 -1에서 1 사이로 압축하는 특성을 가지고 있습니다. |
3. 렐루(Relu)
ReLU 함수는 주어진 입력에 대해 0 이상의 값을 반환하고, 음수 입력에 대해서는 0을 반환하는 비선형 활성화 함수
*신경망에서 널리 사용되는 화성화 함수
* 입력이 양수일 때에 그대로 츨력,
* 음수일 때는 0을 출력
- ReLU(Rectified Linear Unit) 함수를 정의하고 그래프로 나타내기
def relu(x):
return np.maximum(0, x)
x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x, y)
plt.plot([0,0], [5.0, 0.0], ':') # 가운데 점선 추가
plt.title('Relu Function')
plt.show()
|
결과 해석이 코드를 실행하면, x 축 값에 따라 ReLU 함수의 출력이 시각적으로 표현됩니다.ReLU 함수는 입력이 음수일 경우 0을 반환하고, 양수일 경우 그 값을 그대로 반환하는 특성을 가지고 있습니다. 이 함수는 주로 신경망의 은닉층에 사용되며, 입력 값이 양수인 경우 비선형성을 추가하여 신경망의 학습을 개선합니다. |
4 . 소프트맥스(SoftMax)
Softmax 함수는 입력 벡터의 각 원소를 확률값으로 변환하여 출력합니다.
입력 값이 클수록 해당 원소의 확률값이 높아지고, 입력 값이 작을수록 확률값이 낮아집니다.
- Softmax 함수를 사용하여 입력 벡터의 원소를 확률값으로 변환하기
x = np.arange(-5.0, 5.0, 0.1)
y = np.exp(x)/np.sum(np.exp(x))
plt.plot(x, y)
plt.title('Softmax Function')
plt.show()
|
결과 해석Softmax 함수는 입력 벡터의 각 원소를 확률값으로 변환하여 출력합니다.입력 값이 클수록 해당 원소의 확률값이 높아지고, 입력 값이 작을수록 확률값이 낮아집니다. 따라서 Softmax 함수는 주로 다중 클래스 분류 문제에서 출력층의 활성화 함수로 사용되며, 각 클래스에 대한 확률 분포를 반환합니다. |
2. 역전파 (Backpropagation)
* 1969년 민스키 교수님 XOR는 "지금의 기술로는 풀 수 없다"라는 것을 수학적으로 증명함
* 1974, by Paul Werbos에 의해 박사 논문에서 해결됨
* W, b를 이용해 주어진 입력을 가지고 출력을 만들어 낼 수 있음
-> 출력이 우리가 가지고 있는 값과 다른 출력인 경우 W, b를 를 조절함
* 1986, By Hinton에 의해 위 같은 방법으로 독자적으로 만들어 냄 (재발견)
* 역전파는 인공신경망에서 학습을 수해하는 데 사용되는 알고리즘으로, 네트워크 가중치를 업데이트하기 위해 오차를 출력층에서 입력층으로 전파하여 각 가중치의 기울기를계산 * 신경망이 주어진 데이터에 대해 예측을 얼마나 잘하는지 평가하고 네트워크의 가중치를 조정하여 예측 성능을 향상시키는 중요한 과정 |
역전파 알고리즘 단계 |
1. 순전파 계산 * 입력 데이터를 각 층으로 통과시키며 내트워크의 출력을 계산 * 출력층에서 손실 함수를 사용하여 출력과 실제 값의 오차를 계산 2. 오차계산 * 출력층에서 시작하여 이전 층으로 이동하며 오차를 계산 * 출력층의 오차는 손실 함수의 미분으로 구함 3. 기울기 계산 * 각 층에서 가중치와 바이어스에 대한 기울기를 계산 * 기울기는 오차와 활성화 함수의 미분을 사용하여 구함 4. 가중치 업데이트 * 경사 하강법을 사용하여 가중치와 바이어스를 업데이트 함 |
@. 과제 : 논문 리뷰
'AI > 딥러닝' 카테고리의 다른 글
08. 간단한 CNN 모델 만들기 (0) | 2024.06.20 |
---|---|
07. CNN 기초 (0) | 2024.06.20 |
05. 딥러닝 (0) | 2024.06.20 |
04. 데이터로더(Data Loader) (0) | 2024.06.20 |
03. 논리회귀 (단항, 다중) | 시그모이드(sigmoid) 함수 (0) | 2024.06.19 |