머신 러닝에서 비선형 함수를 다루는 방법은 여러 가지가 있습니다.
비선형 함수는 일반적으로 데이터 분포에서의 패턴을 잡아내기 위해 사용됩니다.
선형 함수로는 잘 설명할 수 없는 데이터 분포를 설명하기 위해서는 비선형 함수를 사용해야 합니다. 여기서는 주로 신경망을 활용하는 방법을 설명하겠습니다.
신경망을 사용하는 방법 신경망은 여러 개의 비선형 함수를 사용하여 복잡한 함수를 근사하는 모델입니다. 각 층은 비선형 함수(활성화 함수)를 적용하여 입력 데이터를 변환합니다. 이를 통해 신경망은 다양한 함수를 근사할 수 있습니다. 따라서, 신경망을 이용하여 비선형 함수를 근사할 수 있습니다.
소프트맥스 함수
소프트맥스 함수(Softmax function)는 입력된 벡터를 각 원소의 확률값으로 변환해주는 함수입니다. 일반적으로 다중 클래스 분류(multi-class classification) 문제에서 출력층의 활성화 함수로 사용됩니다.
즉, 입력 벡터의 각 원소를 지수 함수로 변환한 후, 모든 원소의 합으로 나누어 확률값을 계산합니다. 이를 통해, 입력 벡터의 각 원소는 0과 1 사이의 값으로 정규화(normalized)되며, 전체 합은 1이 됩니다. 이러한 성질을 이용하여 소프트맥스 함수는 다중 클래스 분류에서 각 클래스에 대한 확률값을 출력하기 위해 사용됩니다.
소프트맥스 함수의 출력값은 각 클래스의 확률값이므로, 가장 높은 확률값을 가지는 클래스가 예측값이 됩니다. 소프트맥스 함수는 크로스 엔트로피 손실 함수와 함께 사용하여 학습되며, 역전파 알고리즘을 통해 최적화됩니다.
소프트 맥스 함수는 추론할 때는 필요없고 학습할 때 필요합니다.
신경망은 선형모델+ 활성함수를 한 함수이다.
- 활성화 함수란??
활성화 함수(Activation function)는 인공 신경망에서 입력 신호의 가중치 합을 출력 신호로 변환해주는 함수입니다. 이 함수는 입력값의 범위를 제한하고, 비선형성을 추가하여 인공 신경망이 다양한 복잡한 함수를 학습할 수 있도록 합니다.
층을 여러개 쌓는 이유
- 높은 추상화 능력: 층을 여러 개 쌓을수록 입력 데이터의 추상화 능력이 증가합니다. 예를 들어, 이미지 분류 문제에서 첫 번째 층은 간단한 모서리와 직선을 감지하고, 두 번째 층은 더 복잡한 패턴을 감지하며, 마지막 층은 물체의 클래스를 결정할 수 있도록 합니다. 층을 여러 개 쌓을수록 추상화 레벨이 높아지기 때문에, 더 복잡한 문제를 해결할 수 있게 됩니다.
- 비선형성: 층을 여러 개 쌓으면서 각 층 사이에 활성화 함수를 적용하여 비선형성을 추가합니다. 비선형성을 추가하면 인공 신경망이 다양한 비선형적인 함수를 학습할 수 있습니다. 이러한 비선형성이 없다면, 인공 신경망은 선형 모델과 동일한 성능을 보일 것입니다.
- 파라미터 공유: 층을 여러 개 쌓으면서 각 층에서는 파라미터를 공유할 수 있습니다. 예를 들어, 합성곱 신경망(Convolutional Neural Network)에서는 필터(filter)를 적용하여 입력 데이터의 특징을 추출하는데, 이 필터는 층을 여러 개 쌓으면서 공유될 수 있습니다. 이를 통해, 학습해야 하는 파라미터 수를 줄일 수 있습니다.
- 과적합 방지: 층을 여러 개 쌓으면서 드롭아웃(dropout)과 같은 정규화(regularization) 기법을 적용하여 과적합(overfitting)을 방지할 수 있습니다. 과적합은 인공 신경망이 학습 데이터에 너무 잘 맞추어져서, 새로운 데이터에서 성능이 저하되는 문제입니다. 층을 여러 개 쌓으면서 정규화 기법을 적용하면, 일반화 성능(generalization performance)을 향상시킬 수 있습니다.
역전파 알고리즘
역전파(backpropagation) 알고리즘은 인공 신경망에서 가중치(weight)와 편향(bias)을 업데이트하기 위해 사용되는 알고리즘입니다. 역전파 알고리즘은 먼저 순전파(forward propagation) 알고리즘을 사용하여 입력 데이터를 처리하고, 출력값을 계산합니다. 이후, 출력값과 실제값 간의 오차를 계산하여, 이 오차를 이용하여 역방향으로 가중치와 편향을 업데이트하는 과정을 거칩니다.
구체적으로, 역전파 알고리즘의 동작 과정은 다음과 같습니다.
- 순전파(forward propagation): 입력 데이터를 인공 신경망에 주입하여, 출력값을 계산합니다. 이때, 활성화 함수와 가중치, 편향을 이용하여 계산합니다.
- 오차 계산: 출력값과 실제값 간의 오차를 계산합니다. 이때, 오차 함수(loss function)를 사용하여, 오차를 계산합니다. 대표적인 오차 함수로는 평균 제곱 오차(Mean Squared Error, MSE)와 교차 엔트로피 오차(Cross-Entropy Error, CEE)가 있습니다.
- 역전파(backward propagation): 오차를 이용하여, 가중치와 편향을 업데이트합니다. 이때, 오차를 이용하여, 각 노드의 입력값에 대한 오차의 기울기(gradient)를 계산합니다. 이후, 각 가중치와 편향에 대한 기울기를 계산하여, 경사 하강법(gradient descent)을 이용하여, 가중치와 편향을 업데이트합니다.
- 위 과정을 반복: 위 과정을 여러 번 반복하면서, 가중치와 편향을 업데이트하고, 오차를 최소화합니다.
이러한 역전파 알고리즘을 통해, 인공 신경망은 입력 데이터와 출력값 간의 관계를 학습하고, 새로운 데이터에 대한 예측을 수행할 수 있습니다.
'수학 > AI Math' 카테고리의 다른 글
모수, 최대가능도 추정법,쿨백 라이블러 발산 (1) | 2023.03.11 |
---|---|
몬테 카를로 샘플링 (0) | 2023.03.11 |
경사 하강법 (0) | 2023.03.11 |
행렬 (0) | 2023.03.11 |
벡터 (0) | 2023.03.11 |