이번 포스팅에서는 딥러닝의 정의에 대해 살펴보고, 어떻게 학습을 진행하는지 간단하게 정리했다.
딥러닝이란?

인공지능(AI) 은 1950년대에 처음으로 개념화되었다. 초기의 인공지능 연구는 규칙 기반 시스템(rule-based systems)과 논리적 추론(logical reasoning)에 중점을 두었으며, 이를 통해 기계가 스스로 문제를 해결하도록 만드는 것이 목표였다. 1956년 다트머스 회의에서 이 분야는 공식적으로 ‘인공지능’이라는 용어를 사용하기 시작했다.
머신러닝(ML) 은 1980년대에 인공지능의 한 분야로서 등장했다. 머신러닝은 데이터로부터 학습하여 결정을 내릴 수 있는 알고리즘을 개발하는 기술이다. 이는 인공지능을 실현하는 구체적인 방법으로서, 기계가 명시적인 프로그래밍 없이 학습할 수 있게 하는 것을 목표로 한다. 대표적인 머신러닝 알고리즘에는 의사결정 나무(decision tree), 서포트 벡터 머신(support vector machine), 랜덤 포레스트(random forest) 등이 있다.
딥러닝(DL)은 2000년대 초반부터 주목받기 시작한 머신러닝의 한 분야이다. 이 기술은 인간의 뇌가 정보를 처리하는 방식을 모방하는 인공 신경망에 기반을 두고 있다. 딥러닝 신경망은 여러 계층(layer)으로 구성되며, 이 계층들은 데이터에서 점차 복잡하고 추상적인 특성들을 학습한다. 복잡한 문제를 해결하는 데 탁월한 능력을 보이는 딥러닝 모델은 이미지 인식, 음성 인식, 자연어 처리 등 다양한 분야에서 활용되고 있다.
딥러닝의 핵심 특징
- 계층적 표현 학습: 딥러닝 모델은 입력 데이터에서 다양한 추상적 수준의 특성을 자동으로 학습한다. 예를 들어, 이미지 처리에서는 낮은 계층에서는 가장자리나 질감 같은 기본적인 특성을, 높은 계층에서는 객체의 부분이나 전체 구조 같은 더 복잡한 특성을 학습한다.
- 데이터에서의 학습: 딥러닝 모델은 데이터로부터 직접 학습하여 특정 작업을 수행한다. 이를 통해 모델은 수많은 데이터 예제를 통해 스스로를 개선하며, 사람이 직접 특성을 설계하지 않아도 된다.
- 보편적 근사성: 딥러닝 모델은 복잡한 함수를 근사할 수 있는 능력이 매우 뛰어나며, 이를 통해 다양한 종류의 데이터와 작업에 유연하게 적용될 수 있다.
딥러닝의 주요 구성 요소
- 인공 신경망 : 여러 계층으로 구성된 네트워크로, 각 계층은 여러 뉴런으로 구성되며, 이 뉴런들은 활성화 함수를 통해 신호를 처리하고 전달한다.
- 활성화 함수(Activation Function) : 비선형 문제를 해결하기 위해 각 뉴런에 적용되는 함수로, 신경망이 복잡한 패턴과 관계를 학습할 수 있도록 한다.
- 손실 함수(Loss Function) : 모델의 예측이 실제 값과 얼마나 잘 일치하는지 측정한다. 이는 모델의 학습을 지휘하는 지표로 작용한다.
- 옵티마이저(Optimizer) : 모델의 가중치를 업데이트하는 방식을 결정한다. 대표적인 방법으로는 경사 하강법(Gradient Descent)이 있으며, 이를 통해 손실 함수를 최소화한다.
그렇다면, 딥러닝은 어떻게 학습을 진행할까?
가중치

딥러닝에서 '가중치'는 매우 중요한 개념이다. 이를 이해하기 위해선, 딥러닝 모델이 어떻게 데이터로부터 학습하는지 먼저 알아야 한다. 딥러닝 모델은 입력 데이터를 받아들여, 그 데이터를 기반으로 예측이나 결정을 내리는 인공 신경망이다. 가중치는 이러한 인공 신경망에서 입력 데이터의 각 특성이 결과에 미치는 중요도를 결정하는 역할을 수행한다.
가중치는 딥러닝에서 신경망의 핵심 요소 중 하나로, 각 입력 데이터 포인트에 곱해져 그 효과를 조절한다. 각 연결선에는 가중치가 할당되며, 이 가중치는 입력 신호가 다음 뉴런에 전달되는 영향력을 조절한다. 예를 들어, 어떤 가중치는 입력 신호를 강화시킬 수도 있고, 다른 가중치는 약화시킬 수도 있다. 즉, 모든 입력 정보가 동일한 중요도를 갖지 않는다. 가중치는 중요한 정보를 강조하고 덜 중요한 정보를 억제하는 필터 역할을 한다고 생각할 수 있다.
가중치는 초기에 무작위로 설정되며, 학습이 진행됨에 따라 모델이 정확한 결과를 낼 수 있도록 조정된다. 이 조정 과정을 통해 모델은 특정 작업에 대해 최적화된다. 가중치의 조정은 손실 함수를 최소화하는 방향으로 진행되는데, 손실 함수는 모델의 예측이 실제 값과 얼마나 차이 나는지를 측정한다. 이 손실 값을 줄이기 위해, 학습 과정에서는 경사 하강법(Gradient Descent)과 같은 최적화 알고리즘을 통해 가중치가 업데이트된다.
Gradient Descent

경사 하강법(Gradient Descent)는 머신러닝과 딥러닝에서 매우 중요한 최적화 알고리즘으로, 모델의 가중치를 조정해가면서 손실 함수를 최소화하는 방법이다. 간단하게 말하자면, Gradient Descent는 모델의 오류(손실 함수)를 최소화하는 가장 좋은 매개변수(가중치)를 찾기 위한 과정이다.
- 손실 함수: 모델이 얼마나 잘못되었는지를 측정하는 함수로, 이 함수의 값(손실 값)을 최소화하려는 것이 목표이다.
- 기울기(Gradient): 손실 함수의 기울기를 계산한다. 이 기울기는 각 가중치에 대해 손실 함수가 얼마나 빠르게 변하는지를 나타낸다. 기울기가 양수면 함수는 증가하는 방향, 음수면 감소하는 방향이다.
- 학습률(Learning Rate): 기울기에 따라 가중치를 얼마나 조정할지 결정하는 매개변수이다. 너무 크면 최소점을 지나쳐버리고, 너무 작으면 학습이 너무 느려질 수 있다.
- 업데이트 규칙: 가중치를 기울기의 반대 방향으로 조정한다. 기울기가 양수면 가중치를 감소시키고, 음수면 가중치를 증가시킨다. 이렇게 함으로써 손실 함수의 값을 점차 줄여 나간다.
학습 과정은 다음과 같다.
1. 초기화: 가중치를 무작위로 설정한다.
2. 아래 단계를 손실 함수가 충분히 작아질 때까지 반복한다.
- 현재 가중치에서 손실 함수의 기울기(미분값)를 계산
- 계산된 기울기에 학습률을 곱한 값을 현재 가중치에서 빼서 새로운 가중치를 계산
- 새로운 가중치로 모델을 업데이트
즉, 경사 하강법의 목표는 손실 함수의 최소값을 찾는 것이다. 기울기가 0인점, 즉 미분값이 0인 점을 찾는 것이 중요하다. 기울기(손실 함수의 미분값)가 0인 점이 극값을 나타내기 때문이다. 이 극값은 최소값일 수도 있고, 최대값이나 안장점(saddle point)일 수도 있다.
기울기가 양수인 경우, 가중치를 줄여서 손실 함수의 값을 감소시키는 방향으로 이동한다. 반대로, 기울기가 음수인 경우 가중치를 늘려서 손실 함수의 값을 감소시키는 방향으로 이동한다. 이러한 방식으로 기울기가 0인 점을 찾아 나가며, 이 점이 손실 함수의 최소값을 나타내는지를 확인한다. 하지만, 모든 기울기가 0인 점이 Global minima(전체 최소값)인 것은 아니기 때문에, Gradient descent는 때때로 Local minima(지역 최소값)에 머무를 수도 있다. 최근에는 gradient descent를 변형한 SGD, adam과 같은 optimizer가 더 좋은 성능을 보여주고 있다.
가중치의 초기화
가중치의 초기 값 설정도 모델의 성능에 큰 영향을 미친다. 너무 크거나 작은 값으로 시작하면 학습 과정이 비효율적이거나 불안정해질 수 있다. 따라서, 적절한 초기화 방법을 선택하는 것이 중요하며, Xavier 초기화나 He 초기화 같은 기법이 자주 사용된다. 가중치 초기화에 대해 간단히 정리한 포스트가 있으니, 관심 있으신분들은 참고하시기 바란다.
[Pytorch] 가중치 초기화
이번 포스팅에서는 pytorch에서 Tensor의 가중치를 초기화하는 방법을 정리했다. 신경망 모델의 성능은 가중치 초기 값에 민감할 수 있기 때문에, 가중치 초기화 과정은 모델 훈련에서 중요한 역할
hr1588.tistory.com
이처럼 가중치는 딥러닝 모델의 성능을 좌우하는 결정적인 요소로, 모델이 어떻게 데이터를 해석하고 예측에 반영하는지 결정짓는 핵심 요소이다.
즉, 딥러닝의 기본적인 학습 절차는 다음과 같다.
1. 가중치 초기값 할당
2. 초기 모델을 활용한 예측
3. 오차를 계산(loss function)
4. 오차를 줄이는 방향으로 가중치를 조절한다(optimizer). 이 때, learning_rate(학습률)로 얼마나 조절할지를 결정한다.
5. 다시 처음으로 가서 반복(epoch)
이미지 출처
https://blogs.nvidia.co.kr/blog/difference_ai_learning_machinelearning/
https://blog.gopenai.com/understanding-of-gradient-descent-intuition-and-implementation-b1f98b3645ea
KT 에이블스쿨 - 한기영 강사님 자료
'Data Science' 카테고리의 다른 글
| [웹크롤링] Tmax 채용공고 분석 (0) | 2024.08.05 |
|---|---|
| [에이블스쿨] DNN과 활성화 함수 (0) | 2024.04.10 |
| [에이블스쿨] SVM (2) | 2024.03.24 |
| [에이블스쿨] 평균과 중심극한정리 (0) | 2024.03.18 |
| [Retention] 리텐션 (0) | 2024.02.15 |