1. 딥러닝이란?
딥러닝은 인간의 신경망 원리를 모방한 심층 신경망 이론을 기반으로 고안된 머신러닝의 일종이다. 즉, 딥러닝이 머신러닝과 다른 큰 차이점은 인간의 뇌를 기초로 하여 설계했다는 것이다.
인간의 뇌가 엄청난 수의 뉴런과 시냅스로 구성되어 있는 것에 착안하여 컴퓨터에 뉴런과 시냅스 개념을 적용했다. 각각의 뉴런은 복잡하게 연결된 수많은 뉴런을 병렬 연산하여 기존에 컴퓨터가 수행하지 못했던 음성, 영상인식 등 처리를 가능하게 한다.
2. 딥러닝 학습 순서
- 모델 정의 : 신경망을 생성한다. 일반적으로 은닉층 개수가 많을수록 성능이 좋아지지만 과적합이 발생할 확률이 높다. 즉, 은닉층 개수에 따른 성능과 과적합은 서로 상충 관계에 있다. 신경망을 제대로 생성하는 것이 중요하다.
- 모델 컴파일 : 활성화 함수, 손실 함수, 옵티마이저를 선택한다. 데이터 형태에 따라 다양한 옵션이 가능하다. train 데이터셋 형태가 연속형(연속적인 값을 갖는 데이터)이라면 평균 제곱 오차(MSE)를, 이진 분류(binary classification) 라면 크로스 엔트로피(cross entropy)를 선택한다. 또한 과적합을 피할 수 있는 활성화 함수 및 옵티마이저 선택이 중요하다.
* 활성화 함수 : 입력 신호가 일정 기준 이상이면 출력 신호로 변환하는 함수. Sigmoid, Relu 등이 있음.
* 손실함수 : 예측값과 실제값의 차이. 측, 오차를 구하는 함수로 평균 제곱 오차(MSE)와 크로스 엔트로피 오차(Cross Entropy)가 있음.
* 옵티마이저 : 손실 함수를 기반으로 업데이트 방법을 결정. Adam, RMSProp 등이 있음 - 모델 훈련 : 한 번에 처리할 데이터양을 지정한다. 이때 한 번에 처리해야 할 데이터양이 많아지면 학습 속도가 느려지고 메모리 부족 문제를 야기할 수 있기 때문에 적당한 데이터양을 선택하는 것이 중요하다. 따라서 전체 훈련 데이터셋에서 일정한 묶음으로 나누어 처리할 수 있는 배치(batch)와 훈련 횟수인 에포크(epoch) 선택이 중요하다.
이때 훈련 과정에서 값의 변화를 시각적으로 표현하여 눈으로 확인하면서 파라미터와 하이퍼파라미터에 대한 최적의 값을 찾을 수 있어야 한다.
* 파라미터 : 모델 내부에서 결정되는 변수
* 하이퍼 파라미터 : 튜닝 또는 최적화해야 하는 변수. 사람들의 지식으로 설정해야 하는 변수
훈련 데이터셋 100개에 대한 배치 크기가 20이라면 샘플 단위 20개마다 모델 가중치를 한 번씩 업데이트시킨다는 의미이다. 즉, 총 5번 (= 100/20)의 가중치가 업데이트된다.
만약 에포크가 3이고 배치크기가 20이라면, 가중치를 5번 업데이트하는 것을 총 15(= 3x5)번 반복한다는 의미이다. 각 데이터샘플이 총 3번씩 사용되는 것이므로 결과적으로 가중치가 총 45 (=3x15) 번 업데이트 된다.
- 모델 예측 : 검증 데이터셋을 생성한 모델에 적용하여 실제로 예측을 진행해 보는 단계이다. 이때 예측력이 낮다면 파라미터를 튜닝하거나 신경망 자체를 재설계해야 할 수도 있다.
딥러닝 학습 과정에서 중요한 핵심 구성 요소는 신경망과 역전파이다. 딥러닝이 머신러닝의 한 분야이기는 하지만 심층 신경망을 사용한다는 점에서 머신러닝과 차이가 있다. 심층 신경망에는 데이터셋의 어떤 특성들이 중요한지 스스로에게 가르쳐 줄 수 있는 기능이 있다. 또한, 가중치 값을 업데이트하기 위한 역전파가 중요하다. 특히 역전파 계산과정에서 사용되는 미분이 성능에 영향을 미치는 중요한 요소라고 할 수 있다.
3. 딥러닝의 종류
3.1 지도학습
- 합성곱 신경망(CNN) : 이미지 데이터를 분류할 때 사용. 목적에 따라 이미지 분류, 이미지 인식, 이미지 분할로 분류할 수 있다.
- 이미지 분류(Image Classification) : 이미지를 알고리즘에 입력하면 그 이미지가 어떤 클래스에 속하는지 알려 주기 때문에 이미지 데이터를 유사한 것끼리 분류할 때 사용한다.
- 이미지 인식(Visual Recognition) : 사진을 분석하여 그 안에 있는 사물의 종류를 인식하는 것. 의료 이미지에서 질병을 식별하거나 산업 검사 및 로봇 비전 등 다양한 분야에서 활용할 수 있다.
- 이미지 분할(Sementic Segmentation) : 영상에서 사물이나 배경 등 객체 간 영역을 픽셀 단위로 구분하는 기술. X-ray, CT, MRI 등 다양한 의료 영상에서 분할된 이미지 정보를 활용해서 질병 등에 사용한다. - 순환신경망(RNN) : 시계열 데이터를 분류할 때 사용
주식 데이터처럼 시간에 따른 데이터가 있을 때 순환 신경망을 사용하지만, 역전파 과정에서 기술기 소멸 문제가 발생하는 단점이 있다. 이러한 문제점을 개선하고자 게이트(gate)를 세 개 추가한 것이 바로 LSTM이다. 망각 게이트, 입력 게이트, 출력 게이트를 도입하여 기울기 소멸 문제를 해결했다.
3.2 비지도 학습
- 워드 임베딩(word embedding) : 자연어를 컴퓨터가 이해하고 효율적으로 처리하게 하려면 컴퓨터가 이해할 수 있도록 자연어를 적절히 변환해야 하는데, 이때 워드 임베딩 기술을 이용하여 단어를 벡터로 표현한다. 워드 임베딩에서는 단어 의미를 벡터화하는 워드 투 벡터(word2vec)와 글로브(Glove)를 가장 많이 사용한다. 워드 임베딩은 자연어 처리 분야의 일종으로 번역이나 음성 인식 등 서비스에서 사용한다.
- 군집 : 아무런 정보가 없는 상태에서 데이터를 분류하는 방법. 한 클러스터 안의 데이터는 매우 비슷하게 구성하고 다른 클러스터의 데이터와 구분되도록 나누는 것이 목표이다. 군집은 머신러닝의 군집과 유사하지만, 머신러닝에서 군집화를 처리할 때 딥러닝과 함께 사용하면 모델 성능을 높일 수 있기 때문에 머신러닝 단독으로 군집 알고리즘을 적용하기보다 딥러닝과 함께 사용하면 좋다.
3.3 전이 학습(transfer learning)
사전에 학습이 완료된 모델(pre-trained model - 사전 학습 모델)을 가지고 우리가 원하는 학습에 미세 조정 기법을 이용하여 학습시키는 방법이다. 따라서 전이 학습에는 사전에 학습이 완료된 모델이 필요하며, 학습이 완료된 모델을 어떻게 활용하는지에 대한 접근 방법이 필요하다.
사전 학습 모델(pre-trained model) : 풀고자 하는 문제와 비슷하면서도 많은 데이터로 이미 학습되어 있는 모델이다. 일반적으로 많은 데이터를 구하기로 어렵지만, 많은 데이터로 모델을 학습시키는 것은 오랜 시간과 연산이 필요하다. VGG, Inception, MobileNet 같은 사전 학습 모델을 선택하고 활용해야 한다. 사전 학습 모델을 활용하는 방법으로 특성 추출과 미세 조정 기법이 있다.
구분 | 유형 | 알고리즘 |
지도 학습 | 이미지 분류 | - CNN - AlexNet - ResNet |
시계열 데이터 분석 | - RNN - LSTM |
|
비지도 학습 | 군집(clustering) | - 가우시안 혼합 모델 - 자기 조직화 지도 |
차원 축소 | - AutoEncoder - PCA(주성분 분석) |
|
전이 학습 | 전이 학습 | -BERT(버트) - VGG16 |
강화 학습 | - | - 마르코프 결정 과정(MDP) |
'pytorch' 카테고리의 다른 글
[pytorch] 2. 모델 파라미터(손실 함수/ 옵티마이저 / 학습률 스케줄러) (0) | 2023.04.04 |
---|---|
[pytorch] 1. 모델 정의 (nn.Module / nn.Sequential) (0) | 2023.03.22 |
[pytorch] tensor(텐서) 생성/이해/조작 (0) | 2023.03.19 |
[pytorch] pytorch 특징 / pytorch 아키텍처 / pytorch 장점 / pytorch API 종류 (0) | 2023.03.14 |
[pytorch] 머신러닝 딥러닝의 차이 / 머신러닝 학습 순서 (0) | 2023.03.12 |