본문 바로가기

AIFFLE/STARTER

[DL] 1. 딥러닝

728x90

인공신경망

  • 인간의 뇌에서 신경 세포의 구조와 동작을 모방하여 구현
  • 신경 세포(Neuron)와 인공 뉴런(Artificial Neuron)은 여러 신호를 받아 하나의 신호를 흘려주는 동작과 각각이 세포 혹은 노드 단위로 작동하는 구조가 닮음
  • 신호를 그대로 흘려보내는 것이 아니라 보내지 않을 수도 있고 혹은 다른 크기로 보내는 것이 닮음
  • 일반적으로 인공신경망은 은닉층이 소수인 반면, 딥러닝은 은닉층이 다수 포함된 심층신경망(deep neural network) 형태

 

인공신경망 역사

1. 인공신경망과 딥러닝

  • 일반 신경망 : 데이터에서 직접 특징(handcrafted feature)을 추출해서 만든 특징 벡터(feature vector)를 입력을 사용하고, 특징 벡터들의 품질에 영향
    • 데이터 → 특징추출(특징벡터) → 신경망 → 출력
  • 딥러닝 신경망 : 특징추출과 학습을 함께 수행하고, 데이터로부터 효과적인 특징을 학습을 통해 추출하여 우수한 성능 달성
    • 특징 추출을 포함하게 되면 사람의 개입이 들어가지 않아 사람의 편견으로 인한 오류가 적고 추론시간이 짧아지며 성능이 높아지는 장점이 있음
    • 데이터 → 딥러닝 신경망(Deep Neural Network) → 출력
  • 딥러닝은 높은 성능과 뛰어난 확장성으로 이미지 처리, 자연어 처리, 음성 인식과 같은 분야에서 급격한 발전이 이루어지고 있음
  • 딥러닝 모델은 필요한 파라미터(parameter) 수가 많아서 더 많은 학습 데이터가 필요하고, 최적의 모델과 훈련을 위해 많은 시간과 비용이 필요

 

2. 기울기 소멸 문제

  • 은닉층의 수가 많을수록 더 복잡한 문제를 해결할 수 있지만, 너무 깊으면 역전파를 위해 가중치와 바이어스를 변경하는 수학적 방법인 미분이 불가능해져 0으로 수렴되는 문제
    • 활성화 함수는 이전단계에서 다음단계에 미치는 영향(가중치)를 찾는데 적합한 통계적 함수
    • 효과적인 다층신경망의 활성화 함수를 찾기 위한 다양한 연구를 제안
  • 시그모이드나 쌍곡 탄젠트 대신 ReLU(Rectified Linear Unit) 함수 사용
    • 기존에는 선형(linear) 함수, 시그모이드(sigmoid, logistic) 함수 등만 적용
    • ReLU, ELU 등 다양한 함수를 적용하여 인공신경망 문제를 해결하려 노력

 

3. 과적합

  • 모델이 학습 데이터에 지나치게 맞추어진 상태를 과적합(overfitting)이라 부르고, 과적합된 모델은 학습되지 않는 데이터에 대해 성능 저하
  • 과소적합(underfitting)은 모델이 작거나 단순해서 데이터를 잘 표현하지 못한 상태로 모델의 크기를 키우거나 좋은 모델로 변경이 필요하다
  • 과적합 방지
    • 규제화(Regularization) 기법 : 큰 가중치 값에 큰 규제를 가하여 과적합되지 않도록 모델을 제한, 규제의 강도를 정하는 적절한 가중치가 중요
    • 드롭아웃(Dropout) 기법 : 노드들을 일정 확률로 무작위 선택하여 연결된 가중치 연결선을 없애는 것으로 간주하고 학습하는 방법
    • 배치 정규화(Batch Normalization) 기법 : 모델에 입력되는 샘플들을 균일하게 만드는 방법으로 미니 배치 단위로 평균이 0, 표준편차가 1이 되도록 정규화
      • 학습 빠르게 수행되고 일반화 성능 올라감

4. 딥러닝의 발전

인물

  • 제프리 힌튼(Geoffrey Hinton)
    • 역전파
    • 볼츠만 머신
    • 컨볼루션 신경망 개선
  • 조슈아 벤지오(Yoshua Bengio)
    • 시퀀스의 확률 모델
    • 고차원 단어 임베딩 및 어텐션
    • 생성적 적대 네트워크
  • 얀 르쿤(Yann LeCun)
    • 컨볼루션 신경망
    • 역전파 알고리즘 개선
    • 신경망의 비전 확장

 

프레임워크

  • 텐서플로우(TensorFlow)
    • 가장 널리 쓰이는 딥러닝 프레임워크 중 하나
    • 구글이 주도적으로 개발하는 플랫폼
    • 파이썬, C++ API를 기본적으로 제공하고, 자바스크립트(JavaScript), 자바(Java), 고(Go), 스위프트(Swift) 등 다양한 프로그래밍 언어 지원
  • 케라스(Keras)
    • 파이썬으로 작성된 고수준 신경망 API로 TensorFlow, CNTK, 혹은 Theano와 함께 사용가능
    • 사용자 친화성, 모듈성, 확장성을 통해 빠르고 간편한 프로토타이핑 가능
  • 파이토치(PyTorch)
    • 페이스북이 초기 루아(Lua) 언어로 개발된 토치(Torch)를 파이썬 버전으로 개발하여 2017년도에 공개
    • 이후 GPU를 이용한 텐서 조작 및 동적 신경망 구축이 가능하도록 딥러닝 프레임워크로 발전시킴
    • 파이썬답게 만들어졌고, 유연하면서도 가속화된 계산 속도를 제공

 

여러가지 학습 방법

  • 전이 학습(transfer learning) : 대용량 데이터로 사전 학습된 모델을 이용해 훈련 시간과 비용을 줄임
  • 자기지도학습(self-supervised learning) : 레이블이 없는 데이터를 자기 스스로 학습
  • 메타 학습(meta learning) : 학습 방식을 학습(learn to learn)하여 인간과 같이 적은 데이터로도 빠르게 학습하는 방법
  • 설명가능한 인공지능(Explainable AI, XAI) : 신경망 모델의 내부나 동작원리를 파악할 수 있도록 하는 기법
  • NAS(Neural Architecture Search) : 최적의 딥러닝 모델을 자동으로 찾아주는 방법
  • AutoML : 강화학습 방식으로 최적의 딥러닝 모델 생성
728x90

'AIFFLE > STARTER' 카테고리의 다른 글

[DL] 3. 딥러닝 구조와 모델  (0) 2024.05.02
[DL] 2. 텐서 표현과 연산  (0) 2024.05.02
[ML] 비지도학습  (0) 2024.05.02
[ML] 지도학습(회귀)  (0) 2024.04.26
[ML] 지도학습(분류)  (0) 2024.04.26