딥 러닝은 인간의 두뇌에서 영감을 얻은 방식으로 데이터를 처리하도록 컴퓨터를 가르치는 인공지능(AI) 방식 이다.
어렵다. ㅜㅜ 하기 싫다. 하지만 해야하니 애써 웃으며 화이팅 입니다.
딥러닝은 인공지능의 한 분야로, 인공 신경망을 기반으로 한다. 특히 중간에 여러 개의 은닉층( hidden layer )이 존재할 때 이를 딥 신경망( Deep Neural Network )이라고 부른다.
은닉층은 입력 데이터를 처리하고 변환하는 단계로, 컴퓨터가 학습하면서 중요한 특징들을 추출하고 분석하는 역할을 한다. 쉽게 말해, 기계가 학습한 정보를 저장하고 처리하는 공간이라고 볼 수 있다.
퍼셉트론은 인공 신경망의 가장 기초적인 형태로, 1957년 Frank Rosenblatt에 의해 처음 고안된 알고리즘이다. 퍼셉트론은 인공 신경망( Artificial Neural Network )의 기본 단위로, 입력 데이터를 받아 그 데이터를 일정한 방식으로 처리한 후 출력 값을 내보내는 역할을 한다. 인공 신경망은 동물의 신경계를 본따 설계되었기 때문에 개념적으로나 형태적으로 실제 신경망과 유사한 구조를 가지고 있다.
퍼셉트론( Perceptron )은 여러 개의 입력 신호( Input )를 받아 하나의 출력 신호( Output )를 생성하는 기본적인 인공 신경망이다. 이 과정에서 중요한 역할을 하는 요소는 가중치( weight )로, 각 입력 신호에 가중치가 곱해져 계산된다.
퍼셉트론에서는 입력 신호들이 주어졌을 때, 각 신호에 고유한 가중치가 부여되어 입력 신호와 함께 계산된다. 그리고 입력 신호의 총합이 미리 정해진 임계값( θ; theta, 세타 )을 넘으면 1을 출력하고, 그렇지 않으면 0 또는 -1을 출력한다.
즉, 퍼셉트론은 이진 분류(Binary Classification) 문제에서 사용될 수 있으며, 선형적으로 데이터를 분류하는 모델이다. 쉽게 말해, 평면 상에 직선을 그어 A와 B라는 두 가지 클래스로 데이터를 나누는 방식이다. 어렸을 때 친구와 함께 책상 위에 선을 그어 "이 선을 넘으면 다 내 거야!"라고 말했던 경험처럼, 선형 분류도 평면 위에 하나의 직선을 그어 두 개의 범주로 나누는 개념이다.
각 입력 데이터가 결과에 얼마나 중요한 영향을 미치는지를 결정하는 요소이다. 입력값마다 다른 가중치가 할당되며, 이를 통해 모델은 어떤 입력 데이터가 더 중요한지 또는 덜 중요한지를 학습하게 된다.
입력 데이터와는 직접적으로 관련이 없지만, 모델이 최종 예측값을 조정하는 데 필요한 상수 값이다. 즉, 가중치와 입력 데이터만으로는 충분히 설명할 수 없는 경우, 편향이 모델에 추가되어 예측을 더 정밀하게 만들 수 있다.
뉴럴 네트워크는 뇌의 뉴런(Neuron) 구조를 모방한 시스템이다. 인간의 뇌에서 뉴런은 전기 신호를 주고받으며 학습하고 정보를 처리하는데, 뉴럴 네트워크도 마찬가지로 입력 데이터를 받아 계산 처리 후, 결과를 출력한다. 이 과정에서 중요한 역할을 하는 것은 가중치( Weight )와 편향( Bias )이다.
사람은 눈, 코, 입 같은 얼굴의 주요 특징을 보고, 그 얼굴이 사람의 것인지 쉽게 판단할 수 있다. 이와 유사하게, 컴퓨터도 이미지를 처리해 이러한 특징을 찾아내고 인식하는 과정을 거친다. 이를 위해 이미지를 작게 분할하고, 각 부분에서 특징을 찾아내는 방식을 사용한다.
차 사진을 신경망에 입력하면, 컴퓨터는 해당 데이터를 분석하고 특성을 추출하여 차를 인식하고 분류하는 작업을 수행한다. 이를 특성 추출( Feature Extraction )이라고 하며, 신경망은 차 사진에서 중요한 특징들을 자동으로 찾아낸다.
전통적인 머신러닝에서는 사람이 데이터를 직접 분석하고 중요한 특징에 대한 가이드를 제시 한다. ( ex:"바퀴는 둥글다.", "차체는 길쭉한 모양이다." ) 같이 사람이 미리 이런 규칙을 설정해 줘야만 컴퓨터가 그 규칙을 따라 차를 인식하고 분류할 수 있었다. 하지만 딥러닝( Deep Learning )에서는 이런 과정이 자동화된다. 딥러닝 모델은 데이터를 스스로 학습하면서, 중요한 특징들을 자동으로 추출하고 분류한다. 즉, 사람이 직접 지시하지 않아도, 딥러닝 모델은 수많은 차 사진을 학습하면서 바퀴가 둥글고 차체가 특정 모양을 가지고 있다는 것을 스스로 학습하게 된다.
신경망( Neural Network ) 모델은 각 노드의 값에 가중치( Weight )를 곱한 후, 그 값을 더하는 방식으로 예측을 진행한다.
모델이 예측한 값과 실제 값의 차이를 오차라고 한다. 이 오차를 줄여 나가는 것이 머신러닝의 핵심 과제 중 하나이다. 하지만 단순히 오차를 더하는 것만으로는 제대로 평가하기 어렵다. 예를 들어, 어떤 예측에서는 오차가 음수가 나올 수 있는데, 그냥 더하면 오차가 상쇄되어 총 오차가 줄어드는 것처럼 보일 수 있다. 해결하기 위해 평균제곱오차( MSE )를 사용 한다.
모델이 얼마나 정확하게 예측했는지를 평가할 수 있다. MSE 값이 작을수록 예측이 더 정확하다는 것을 의미한다.
딥러닝 모델에서 히든 레이어( hidden layer )가 여러 개 있더라도, 활성 함수를 사용하지 않으면 결과는 단순한 선형 연산의 반복에 불과하다. 이 경우 히든 레이어가 있든 없든 결과는 비슷하게 나오게 된다.
활성 함수는 이 문제를 해결하기 위해 사용되며, 비선형성을 추가하여 더 복잡한 문제를 해결할 수 있도록 도와준다.
시그모이드( Sigmoid ) : 입력값을 0과 1 사이의 값으로 변환해 준다. => 0은 0.5, 양수는 점점 1에 수렴, 음수는 점점 0에 수렴하게 된다.
Hyperbolic tangent ( tahn ) : 입력값을 -1에서 1 사이의 값으로 변환해 준다. 출력값의 중심이 0에 가까워진다. 덕분에 가중치 업데이트시 균형 있는 학습을 가능하게 한다. tanh 함수는 음수 값을 포함하므로 데이터를 더 잘 표현할 수 있습니다.
Layer를 많이 쌓을수록 데이터 표현력이 증가하기 때문에 학습이 잘 될 것 같지만, 실제로는 Layer가 많아질수록 학습이 잘 되지 않는다. Layer가 많아지면 기울기 소실이 발생하는데 이는 역전파(Backpropagation) 과정에서 출력층에서 멀어질수록 Gradient 값이 매우 작아지는 현상을 뜻한다.
[딥러닝] 기울기 소실(Vanishing Gradient)의 의미와 해결방법
📚 목차1. 기울기 소실의 의미 2. 기울기 소실의 원인 3. 기울기 소실의 해결방법1. 기울기 소실의 의미딥러닝 분야에서 Layer를 많이 쌓을수록 데이터 표현력이 증가하기 때문에 학습이 잘 될 것
heytech.tistory.com
문제를 해결하기 위해
Rectified Linear Units ( ReLU ) : 현대 딥러닝에서 매우 널리 사용되는 활성 함수로, 입력값이 양수일 경우 그대로 유지하고, 음수일 경우 0으로 변환해 준다.
장점
기울기 소실 문제 완화: tanh와 시그모이드 함수는 입력값이 극단적으로 커지거나 작아질 때, 기울기가 0에 가까워져 기울기 소실 문제(Vanishing Gradient Problem)를 일으키는 경향이 있다. 그러나 ReLU는 입력값이 양수일 때 항상 일정한 기울기(1 = 45도)를 유지하기 때문에, 복잡한 신경망에서도 기울기 소실 문제가 발생할 가능성이 적다.
계산 효율성: ReLU 함수는 매우 간단하다. 이는 신경망의 학습 속도를 빠르게 하는 중요한 요소이다.
단점
죽은 ReLU( Dead ReLU ) 문제: ReLU는 음수 입력에 대해 항상 0을 출력하기 때문에, 가중치 업데이트 과정에서 특정 노드가 음수 입력을 받게 되면, 해당 노드가 더 이상 학습되지 않는다.
단점을 보안하는 여러 ReLU함수들이 연구되고 있다.
기울기 소실 문제와 ReLU 함수
참고기울기 소실 문제(Vanishing Gradient problem)는 역전파(Backpropagation) 알고리즘에서 처음 입력층(input layer)으로 진행할수록 기울기가 점차적으로 작아지다가 나중에는 거의 기울기의 변화가 없어지
velog.io
이러한 활성 함수가 필요한 이유
비선형성( Non-linearity ) 추가 : 비선형성 덕분에 신경망은 단순한 선형 회귀 모델을 넘어서, 더 복잡하고 다양한 패턴을 학습할 수 있게 된다. 활성 함수가 없는 뉴럴 네트워크는 더 이상 딥러닝이라고 부르기 어렵다고 볼 수 있다.
마지막 레이어인 출력층에서는 활성 함수가 존재하지 않을 수 있다.
이진 분류 ( Binary Classification ) : 출력값을 0과 1 사이의 값으로 제한해야 하는 경우, 시그모이드 함수와 같은 활성 함수를 사용한다.
다중 클래스 분류( Multi-class Classification ) : 다중 클래스 분류에서는 소프트맥스( Softmax )라는 활성 함수가 사용된다. 여러 클래스에 대해 확률을 출력하며, 클래스에 속할 확률을 0~1 사이의 값으로 변환하여 총합이 1이 되도록 만든다.
회귀( Regression ) 문제 : 회귀 문제에서는 출력값이 특정 범위로 제한되지 않으므로, 출력층에 활성 함수를 사용하지 않는 경우가 많다. 예를 들어, 집값을 예측하거나, 주가를 예측하는 문제에서 출력값이 제한되지 않아야 하므로, 연속적인 값을 그대로 출력하게 된다.
경사하강법( Gradient Descent )은 머신러닝과 딥러닝 모델에서 가중치(w)를 조정하여 손실(Loss)을 최소화하는 최적화 기법이다.
성적 => w1 => sig(h1) => w2 => 예측값
" 예측값 ( y^ ) - 실제 값 = Loss "로 Loss를 구할 수 있으며, w를 최소화 하여 더 정확한 모델을 만들 수 있다.
w 값이 변할 때마다 총손실의 변화를 나타낸 그래프이다.
최적화를 위해 첫w 값은 랜덤으로 정해서 총손실을 계산하고, w값을 Loss값이 줄어드는 방향으로 조정해야 한다.
위 예시 처럼 하나의 변수를 사용한 2차원 벡터는 쉽게 시각화할 수 있다. 하지만, 실제 딥러닝 뉴럴 네트워크에서는 수백 개에서 수천 개의 변수( 가중치와 편향 )가 존재하기 때문에, 손실 함수의 기울기를 눈으로 확인할 수 없다.
알고리즘이 해결해 준다.
현재 w값에서 접선의 기울기를 구한 뒤 w를 뺀다. 기울기가 양수면 값이 - 되기 때문에 왼쪽으로 움직이고 음수면 - - 되어서 오른쪽으로 움직인다.
초기 가중치 설정 : 경사하강법은 처음에 랜덤한 가중치( w )로 시작한다.
손실( Loss ) 계산 : 랜덤으로 설정된 가중치로 예측값을 계산하고, 이를 실제값과 비교하여 손실( Loss )을 계산한다.
가중치 업데이트 : 경사하강법은 손실 함수의 기울기( Gradient )를 계산하여, 손실을 줄이는 방향으로 가중치를 조정한다.
최적화 반복 : 이 과정을 반복하면서, 손실( Loss )이 점점 줄어들도록 가중치가 업데이트 된다.
Python "for 반복문"으로 나타낼 수 있다.
경사하강법을 시행하다보면 local minima 부분에서 기울기가 0이 나와서 학습이 종료되는 경우도 있다.
이를 방지하기 위해 기울기에 learning rate( 상수 형태 )를 곱해서 빼는 방법을 사용한다. 학습 속도를 조절하는 요소이다.
지역적으로 존재하는 가짜 최저점을 뛰어 넘어서 실제 최저점을 찾는 방법이라고 생각하면 된다.
learning rate를 잘 설정하는게 중요한데, 정답은 없고 1, 2,,,등등 실험적으로 여러 상수를 적용해보는게 좋다.
0.0001같이 작은 숫자로 많이 진행한다. 너무 작은 숫자를 적용하게 되면 단점은
느린 학습 속도 : 학습률이 너무 작으면, 가중치 업데이트 폭이 매우 작아져 모델이 손실을 줄이는 방향으로 나아가긴 하지만, 그 속도가 매우 느려진다.
Local Minima에 갇힐 위험 증가 : 학습률이 작으면, 모델이 지역 최소점에서 천천히 움직이거나, 심지어 갇힐 가능성이 커진다. 이는 모델이 전역 최소점으로 이동하지 못하고, 지역 최소점에 머물게 되어 최적화가 덜된 모델이 될 수 있다.
learning rate를 정해진 값만 주면 복잡한 문제의 경우 학습이 안되는 경우가 일어나기 때문에
학습이 일어날 때마다 가변적으로 learning rate를 최적화 해주는 수학 알고리즘이 존재한다.
정해진건 없기 때문에 여러 모델을 사용해보는게 좋지만 Adam을 많이 사용한다.
알고리즘아 해결해줘
참고 자료
https://www.youtube.com/watch?v=c7NURwHmM5k&list=PLfLgtT94nNq1DrREU_qG2w4yd2ZzJb-FG&index=6
[딥러닝] 기울기 소실(Vanishing Gradient)의 의미와 해결방법
📚 목차1. 기울기 소실의 의미 2. 기울기 소실의 원인 3. 기울기 소실의 해결방법1. 기울기 소실의 의미딥러닝 분야에서 Layer를 많이 쌓을수록 데이터 표현력이 증가하기 때문에 학습이 잘 될 것
heytech.tistory.com
기울기 소실 문제와 ReLU 함수
참고기울기 소실 문제(Vanishing Gradient problem)는 역전파(Backpropagation) 알고리즘에서 처음 입력층(input layer)으로 진행할수록 기울기가 점차적으로 작아지다가 나중에는 거의 기울기의 변화가 없어지
velog.io
기본_LLM_Chain_( 1 ) (10) | 2024.09.21 |
---|---|
Deep Learning 공부하기 ( 2 ) (1) | 2024.09.19 |
한국 경제신문 with toss bank - 중간 프로젝트_( 3 ) (5) | 2024.09.08 |
한국 경제신문 with toss bank - 중간 프로젝트_( 2 ) (2) | 2024.09.02 |
한국 경제신문 with toss bank - 중간 프로젝트_( 1 ) (4) | 2024.09.01 |