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 |