[Deep Learning] 1. 신경망(Neural network) 기초
카테고리: Deep Learning
태그: activation function AI deep learning neural network relu sigmoid softmax deep learning
🎯 신경망(Neural network)
신경망은 인간의 뇌 구조를 모방한 모델이다. 인간의 뇌는 뉴런이라는 세포체로 이루어져 있고, 이 뉴런이 연결되어 있어 복잡한 신경망을 형성한다.
🚀 1. 활성화 함수(Activation function)
입력값을 일정 기준에 따라 변화시켜 출력하는 비선형 함수
- 입력값과 가중치(weight)를 곱하고 편향(bias)을 더한 후 활성화 함수를 적용함
- 활성화 함수는 주어진 값이 특정 조건을 만족하게 되면 해당 값 출력.
- 퍼셉트론의 활성화 함수는 계단함수(Step function)의 형태를 갖음
- 다양한 활성화 함수가 적용되면서 인공신경망으로 발전 : Sigmoid, ReLU, Softmax 등
활성화 함수 사용 이유
- 비선형성(Non-linearity) 추가: 복잡한 데이터 패턴 학습 및 다양한 함수 근사
- 출력 범위 제한: 다음 층 입력 값 크기 관리. 수렴 속도 향상
- 예: Singmoid[0, 1], tanh[-1, 1]
- Gradient 계산의 용이성: 역전파로 가중치 조정시 활성화 함수의 도함수 필요
- 계산 효율성: 계산이 단순하고 빠르게 수행돼 전체 학습 및 추론 속도 향상
활성화 함수의 종류
step function
- 0을 경계로 출력이 갑자기 변화
sigmoid function
- 부드러운 곡선으로 입력에 따라 출력이 연속적으로 변화(미분 가능)
- 신경망에서 중요한 역할
ReLU function
🔧 2. 다차원 배열 계산
신경망에서의 행렬 곱
- 신경망 그림
- 행렬 곱 수식
🧠 3. 다층 퍼셉트론(Multi-layer Perceptron, MLP)
MLP는 인공신경망의 초기 모델이며, 선형 모델인 퍼셉트론을 보완한 모델이다.
- 입력층(Input layer) : input 데이터
- 은닉층(Hidden layer) : 여러 퍼셉트론의 조합 (비선형 활성화 함수 사용)
- 출력층(Output layer) : 모델의 최종 결과값
- 히든 레이어를 추가할 수록 더 복잡한 문제를 풀 수 있다.
- 퍼셉트론이 2층으로 XOR을 풀 수 있었던 것처럼!
- 당연히 히든레이어가 늘어나면 용량이 늘어난다.
- 층을 지나갈 때마다 활성화 함수를 적용해 비선형성을 추가한다.
Softmax 함수
\[\text{Softmax}(x_{i}) = \frac{e^{x_{i}}}{\sum_{j=1}^{n} e^{x_{j}}}\]출력층 설계에 사용되는 활성화 함수 중 하나
정의
- 출력층에서 사용되는 활성화 함수
- 출력값을 0과 1 사이의 확률로 변환
- 모든 출력값의 합은 1이 된다.
성질
- 확률분포: Softmax 함수의 출력값들은 항상 0과 1사이의 값이며, 모든 출력의 합은 1. 따라서 출력벡터를 확률분포로 해석할 수 있음.
- 미분 가능성: Softmax 함수는 미분 가능하므로 역전파 학습과정에서 사용 가능
- 입력값의 상대적 크기 반영: 입력값의 상대적 크기에 따라 출력을 조정하며, 큰 입력값일수록 더 큰 확률을 가짐
- 순서보존: 입력값의 순서는 출력 값의 순서에 영향을 미침.
구현 주의사항
- 너무 높은 출력값을 사용하여 Softmax를 적용하면 NaN이 나오는 현상 발생함.
- 입력 신호 중 최대값(eg. c)를 빼준 후 Softmax를 적용하여 에러 방지
def softmax(x):
return np.exp(x) / np.sum(np.exp(x))
x = np.array([1010, 1000, 990])
print(softmax(x)) # [nan nan nan]
x = x - np.max(x)
print(softmax(x))