티스토리 뷰
인공신경망(ANN: Artificial Neural Network)
- 인공신경망은 생물학의 신경망(뇌)에서 영감을 얻은 정보처리 체계로 단층 퍼셉트론과 다층 퍼셉트론을 포함한다.
- 시냅스의 결합으로 망을 형성한 인공 뉴런(퍼셉트론)이 학습(시냅스의 결합 세기)을 통해 문제를 해결한다.
인공신경망 분류
- 지도학습 : 정답의 입력에 의해 문제에 최적화 됨
- 비지도 학습 : 정답 없음
인공신경망 구성
- 입력층(Input) : 다수의 입력 데이터를 받는다.
- 은닉층(HIdden) : 입력층과 출력층 사이에 존재하는 레이어들. (모델구성 : 은닉층의 개수와 노드 개수를 구성)
- 출력층(Output) : 데이터의 출력을 담당한다.
=> 과제) : 은닉층으로 모델을 잘 구성하여 원하는 Output 값을 잘 예측하는 것.
인공신경망의 원리
🤔 왜 은닉층을 통해서 모델을 구성할 수 있을까?
- 활성화 함수를 이용하여 은닉층에서 최적의 가중치(weight)와 편향(bias)를 찾아낸다.
- 퍼셉트론 모델과 동일하게 특정 임계치(threshold)를 넘어야 신경이 전달된다.
- 신경이 전달되면서 활성화 함수로 가중치를 지정해 각 노드의 최적의 가중치를 찾는 방식으로 작동된다.
심층신경망 (DNN: Deep Neural Network)
: ANN을 여러 층으로 쌓아 구성한 것.
- 심층신경망은 인공신경망을 기반으로 은닉층을
- 많이 늘려서(2개 이상) 학습의 결과를 향상시킨다.
- 여러 고차원에서 데이터 분류가 가능해짐에 따라, DNN은 영상처리, 음성인식, 자연어 처리 분야에 이용된다.
- 대표적인 DNN 응용 알고리즘에는 CNN, RNN, LSTM, GRU 등이 있다.
- 문제점 : 시간 복잡도가 매우 높음.
❗해결방안 !
: 미니 배치(Mini Batch, 여러 학습 예제들의 경사를 동시에 계산), GPU로 학습속도 향상- 미니배치(Mini Batch)
- 전체 데이터를 더 작은 단위로 나누어서 해당 단위로 학습하는 개념.
- 미니 배치 학습을 하게 되면 미니 배치만큼만 가져가서 미니 배치에 대한 비용(cost) 를 계산하고 경사하강법을 수행한다.
- 다음 미니 배치를 가져가서 경사하강법을 수행하고 마지막 미니 배치까지 이를 반복한다.
- 미니배치(Mini Batch)
다층 퍼셉트론(Multi-layer Perceptron)
- 은닉층이 1개 이상인 퍼셉트론을 의미한다.
은닉층이 2개 이상인 신경망은 심층신경망이라고 한다. - 입력층으로 시작하여 은닉층을 거쳐, 출력층으로 노드끼리 연결된 구조를 갖는다. (그물처럼 연결됨)
- 연결된 노드가 가진 숫자가 변형되어가는 구조로, 숫자들이 변해가는 과정이 학습된다.
드롭아웃(Dropout)
- 드롭아웃은 AlexNet에서 선보인 과대적합(over-fitting)을 막기 위한 방법이다.
- 신경망이 학습중일 때, 무작위로 뉴런을 제거(drop out)하여 학습을 방해함으로써 학습 데이터의 과대적합을 방지한다.
- 일반적으로 CNN에서는 이 드롭아웃 레이어를 완전연결계측(FC) 뒤에 위치한다. (상황에 따라 max 폴링층 뒤에 위치)
Keras
- tf.keras는 딥러닝 모델을 빌드하고 학습시키기 위한 TensorFlow의 상위 수준 API이다.
- 신속한 프로토타입 제작, 최첨단 연구 및 프로덕션에 사용된다.
- 더 높은 수준의 더 직관적인 추상화 집합을 표현함으로써 신경망을 구성하기 쉽게 만들어주어 tensorflow에 사용된다.
- 특징
- 사용자 친화적 : 간단하고 일관성있는 Keras는 사용자 오류에 대해 명확하고 실행 가능한 피드백을 제공한다.
- 모듈식 및 구성 가능 : 거의 제한없이 구성 가능한 빌딩블록을 함께 연결하는 방식으로 만들어진다.
- 쉽게 확장 가능 : 새로운 레이어, 측정항목, 손실함수를 만들고 최첨단 모델을 개발한다.
밀집층(Dense layer)이란?
- 완전 연결 계층(Fully Connected Layer)인 밀집층은 내부 뉴런이 이전 계층의 모든 뉴런에 연결되는 계층이다.
- 1차원 벡터로 변환된 레이어를 하나의 벡터로 연결한다. (각 층의 노드들은 하나로 연결된다)
- 모든 매개 변수가 완전연결 계층에 점유되기 때문에 과적합 발생률이 높다. (Dropout으로 해결 가능)
데이터 입력 : Flatten
: 2차원 데이터를 1차원 데이터로 바꾸는 역할을 한다.
Sigmoid와 SoftMax
- sigmoid : 이진분류. 출력값은 0 또는 1.
- softmax : 다중분류. 클래스 개수에 맞게 확장된 함수. 출력값은 각 클래스에 대한 확률값.
시그모이드 | 소프트맥스 | |
로지스틱 회귀 모델에서 분류 종류 | 이진 분류 | 다중 클래스 분류 |
활용 | 활성화 함수로 사용 이진 분류의 출력 층에서 사용 통계에서 누적 분포 함수로 사용 |
다중 클래스 분류의 출력층에서 사용 |
반환 값 | 1개로 반환 예) 0.7 |
N 개로 반환되며 모든 확률의 합이 1이 됨 예) [0.1, 0.05, 0.7, 0.15 ] |
분류모델에서의 값 선택 | 특정 임계값에 따라 값을 선택 예) 0.5 보다 크면 True, 작으면 False |
가장 큰 값으로 반환되는 값을 해당 클래스로 선택 예) np.argmax([0.1, 0.05, 0.7, 0.15 ]) 0.7 에 해당되는 인덱스 순서인 2가 반환 |
Tensorflow를 사용한 딥러닝 모델 cheat sheet
'TIL & WIL > Deep Learning' 카테고리의 다른 글
CNN 간단히 알아보기 (0) | 2023.04.17 |
---|---|
TensorFlow - Regression 실습 (1) 선형회귀 (0) | 2023.04.11 |
TensorFlow - Classification 실습 (0) | 2023.04.11 |
TensorFlow - beginner 실습 (0) | 2023.04.11 |
✨ 딥러닝 기초 (1) | 2023.04.11 |