본문 바로가기
AI/딥러닝

[AI 부트캠프] DAY 65 - 딥러닝 1

by HOHHOH 2023. 10. 24.

[오늘의 일지]

딥러닝 실시간 강의 - 딥러닝 역사, 정의, 설정( Loss function, Optimizer, Mini-batch)

[상세 내용]

딥러닝

역사

  • 퍼셉트론 (Perceptron) (1957): 프랑크 로젠블라트(Frank Rosenblatt)가 개발한 퍼셉트론은 인공 신경망의 초기 형태 중 하나로, 간단한 형태의 이진 분류에 사용되었습니다.
  • 역전파 알고리즘 (Backpropagation) (1986): 역전파 알고리즘은 가중치 조정을 통해 인공 신경망이 학습하도록 하는 중요한 알고리즘입니다. 이 알고리즘은 1986년 제프리 힌튼(Jeffrey Hinton)과 다이앤 시긴토니(Diane Sevigny)에 의해 개발되었습니다.
  • 컨볼루션 신경망 (CNN) (1998): CNN은 이미지 처리에 주로 사용되며, 얀 르쿤(Yann LeCun)과 그의 동료들이 개발하였습니다. CNN은 특징 추출 및 이미지 인식 분야에서 큰 성과를 거뒀습니다.
  • 제프리 힌튼의 역전파 연구 (2000s): 제프리 힌튼은 역전파 알고리즘에 대한 연구를 지속했으며, 그의 연구는 딥러닝의 물결을 시작시켰습니다. 그는 제한 볼츠만 머신(RBM)과 딥 미래 네트워크(DFN)를 개발하고 딥러닝의 관심을 끌었습니다.
  • 딥러닝의 부활 (2010년대 초): 그래픽 처리 장치(GPU)의 발전과 대용량 데이터셋의 이용으로 딥러닝의 부활이 시작되었습니다. 2012년에는 제프리 힌튼의 제자인 알렉스 크리즌스키(Alex Krizhevsky)가 딥러닝 기반의 이미지 분류 대회인 ImageNet Large Scale Visual Recognition Challenge에서 우승하며 딥러닝의 열풍이 다시 불었습니다.
  • 다양한 딥러닝 아키텍처 (2010년대 중반): 다양한 딥러닝 아키텍처와 프레임워크의 개발이 진행되었습니다. 이에는 합성곱 신경망(CNN), 순환 신경망(RNN), 장단기 메모리(LSTM), 그래프 신경망(GNN), 변이형 오토인코더(VAE) 등이 포함됩니다.
  • 딥러닝의 성장 (진행): 딥러닝은 이미지 처리, 음성 인식, 자연어 처리, 강화 학습 등 다양한 분야에 확장되어 적용되고 있습니다. 대규모 신경망과 더 큰 데이터셋을 사용한 성능 향상은 딥러닝의 중요한 발전 중 하나입니다.
  • Multi-Layer Perceptron (MLP): MLP는 최소 3개의 레이어로 구성되어 있습니다. 입력 레이어, 은닉 레이어(하나 이상), 그리고 출력 레이어로 구성됩니다. 이러한 레이어 간의 연결은 가중치로 정의됩니다.

출처:https://compmath.korea.ac.kr/appmath2021/Perceptron.html

 

정의

ML vs DL

모델 복잡성

ML: 전통적인 머신 러닝 알고리즘은 상대적으로 간단한 모델을 사용합니다. 예를 들어, 선형 회귀, 결정 트리, 랜덤 포레스트 등이 있습니다.

DL: 딥 러닝은 신경망과 같이 굉장히 복잡한 모델 구조를 사용합니다. 다수의 은닉층과 많은 파라미터를 가집니다.

데이터 

ML: 일반적으로 상대적으로 적은 데이터에서도 잘 작동할 수 있습니다. 일부 ML 알고리즘은 데이터 요구가 상대적으로 적습니다.

DL: 딥 러닝은 대규모 데이터셋이 필요합니다. 더 많은 데이터를 사용하면 더 좋은 결과를 얻을 가능성이 높아집니다.

feature engineering

ML: 전통적인 ML에서는 feature engineering이 필요할 수 있습니다. 즉, 데이터로부터 유용한 특징을 수동으로 추출해야 합니다.

DL: 딥 러닝은 종종 feature engineering이 필요하지 않습니다. 신경망은 데이터로부터 특징을 자동으로 학습합니다.

문제 유형

ML: ML은 다양한 유형의 문제에 사용될 수 있으며, 회귀, 분류, 군집화, 차원 축소 등 다양한 문제를 해결할 수 있습니다.

DL: 딥 러닝은 주로 이미지 분석, 음성 인식, 자연어 처리와 같이 복잡하고 대규모 데이터에 대한 문제에 주로 사용됩니다.

계산 

ML: 상대적으로 적은 계산 리소스가 필요합니다.

DL: 딥 러닝은 대규모 신경망을 훈련하는 데 많은 계산 리소스가 필요합니다. 그래픽 처리 장치(GPU) 또는 특수한 하드웨어 (TPU)가 사용됩니다.

해석 

ML: 전통적인 ML 모델은 상대적으로 해석하기 쉽습니다. 모델의 예측을 이해하기가 비교적 간단합니다.

DL: 딥 러닝 모델은 종종 복잡하여 해석하기 어렵습니다. 이러한 모델의 작동 방식을 이해하고 해석하는 것이 어려울 수 있습니다.

출처:https://medium.com/@bensalcie/getting-started-with-machine-learning-classification-of-iris-flowers-based-on-their-attributes-6b2cf090c2aa

 

설정

Loss function

분류 예측값의 틀린 정도를 계산하는 cross-entropy

이진 크로스 엔트로피(Binary Cross-Entropy, BCE)

- 이진 분류 문제에 사용됩니다.

- 두 가지 클래스(예: 0 또는 1) 중 하나를 예측하는 경우에 적합합니다.

범주형 크로스 엔트로피(Categorical Cross-Entropy)

- 다중 클래스 분류 문제에 사용됩니다.

- 세 개 이상의 클래스(예: 고양이, 강아지, 새) 중 하나를 예측하는 경우에 적합합니다.

 

회귀 모델의 틀린 정도를 계산하는 MSE 

- 기존 머신러닝 모델에서도 많이 사용해 왔던 로스함수로서 딥러닝에서도 사용됩니다.

 

Optimizer

- 옵티마이저(Optimizer)는 딥러닝 모델을 학습할 때 사용되는 알고리즘입니다. 모델이 손실 함수(Loss Function)의 값을 최소화하는 모델 파라미터(가중치 및 편향)를 찾는데 도움을 주는 역할을 합니다. 다양한 옵티마이저가 개발되어 있으며, 각각의 옵티마이저는 다른 방식으로 모델 파라미터를 업데이트합니다.

 

Optimizer 예시

  • 확률적 경사 하강법 (Stochastic Gradient Descent, SGD): SGD는 딥러닝에서 가장 기본적인 옵티마이저 중 하나입니다. 각 반복(에포크)에서 미니 배치(작은 데이터 샘플 그룹)를 사용하여 모델 파라미터를 업데이트합니다. SGD는 수렴하기까지 시간이 오래 걸릴 수 있으며 학습률(learning rate) 조정이 중요합니다.
  • Adam (Adaptive Moment Estimation): Adam은 학습률을 조정하는 기법을 사용하는 최적화 알고리즘입니다. 그레이디언트의 이동 평균 및 이동 제곱 평균을 사용하여 각 파라미터마다 다른 학습률을 적용합니다. Adam은 많은 딥러닝 작업에 대해 효과적인 것으로 입증되었습니다.
  • RMSprop (Root Mean Square Propagation): RMSprop은 학습률을 조정하는 기법을 사용하는 SGD 변형 중 하나입니다. 그레이디언트의 제곱 값의 이동 평균을 사용하여 학습률을 조절합니다. RMSprop은 비교적 안정적으로 수렴하는 경향이 있으며, 이동 평균을 사용하기 때문에 과거 그레이디언트의 영향을 줄입니다.
  • Nadam (Nesterov-accelerated Adaptive Moment Estimation): Nadam은 Adam과 네스테로프 모멘텀 최적화를 결합한 옵티마이저입니다. 네스테로프 모멘텀은 모멘텀을 개선한 변형으로, 더 빠른 수렴을 도울 수 있습니다.
  • Adagrad (Adaptive Gradient Algorithm): Adagrad는 각 파라미터에 대해 학습률을 조절하며, 과거 그레이디언트 제곱 값에 따라 학습률을 다르게 설정합니다. 각 파라미터에 대해 과거 업데이트 정보를 사용하여 적응적으로 학습률을 조절하는 장점이 있지만, 오랜 시간 학습 시 학습률이 지나치게 작아질 수 있어 주의가 필요합니다.
  • AdamW: AdamW는 Adam 옵티마이저에 가중치 감쇠(Weight Decay)를 추가한 변형입니다. 가중치 감쇠는 모델 파라미터에 대한 L2 정규화를 수행하여 모델의 일반화를 향상시킬 수 있습니다.
  • Adadelta: Adadelta는 학습률을 자동으로 조정하면서 경사하강법을 수행하는 옵티마이저입니다. Adadelta는 Adagrad와 유사하지만 학습률을 누적합 대신 과거 일정 길이의 업데이트 제곱 값에 따라 조정합니다.
  • LBFGS (Limited-memory Broyden–Fletcher–Goldfarb–Shanno): LBFGS는 제한된 메모리 BFGS 방법의 변형으로, 고차원 문제에 사용하기 적합합니다. 하지만 대규모 데이터셋과 심층 신경망에는 사용하기 어려울 수 있습니다.

 

Mini-batch Training

- 미니배치 학습(Mini-batch Training)은 딥러닝 모델을 훈련시킬 때 사용되는 일반적인 기술 중 하나로, 전체 학습 데이터셋을 작은 미니배치(데이터 샘플의 작은 부분집합)로 나누어 각 미니배치에 대해 모델 파라미터를 업데이트하는 방법입니다. 미니배치 학습은 전체 데이터셋을 한 번에 처리하는 배치 학습과 단일 데이터 포인트를 사용하는 확률적 경사 하강법(SGD) 사이의 중간 접근 방식을 제공합니다.

 

[마무리]

 오늘부터 딥러닝 수업이 시작되었습니다. 첫날이다 보니 가볍게 딥러닝의 배경지식부터 시작을 하게 되었습니다. 딥러닝이 머신러닝보다 설정해야 되는 코드가 많다고 하기 때문에 내일부터 더 집중해서 수업을 들어야 될 거 같습니다. 아직까지는 지난 머신러닝 프로젝트 때 살짝 맛만 봤던 딥러닝 코드들 덕분에 이해하는데 어려움은 없는 거 같습니다.

반응형

댓글