딥러닝 vs 머신러닝
- 머신러닝과 딥러닝은 내부 구조와 활용범위가 다를 뿐 기본적인 흐름은 같음
- 다만 딥러닝은 자연어처리와 이미지 처리에 뛰어난 발전
- 공통점
- 데이터로부터 가중치를 학습해 패턴 인식하고 결정을 내리는 알고리즘 개발과 관련된 인공지능의 하위 분야
- 차이점
- 머신러닝: 데이터 안의 통계적 관계를 찾아 예측이나 분류
- 딥러닝: 머신러닝의 한 분야로 신경세포 구조를 모방한 인공 신경망 사용
딥러닝의 유래
- 인공 신경망: 인강의 신경세포를 모방하여 만든 망
- 신경세포: 이전 신경세포로 들어오는 자극을 이후 신경세포의 전기신호로 전달하는 기능을 하는 세포
- 퍼셉트론: 인공 신경망의 가장 작은 단위
경사 하강법(Gradient Descent)
- 회귀 문제에서 최소화 하려는 값
- Mean Squared Error: 에러를 제곱한 총합의 평균
- 즉, 가중치를 이리 저리 움직이면서 최소의 MSE를 도출해야 함
- 이렇게 최소화하려는 값을 목적 함수 또는 손실 함수라고 부름
- 경사 하강법은 모델의 손실 함수 최소화하기 위해 모델의 가중치를 반복적으로 조정하는 최적화 알고리즘
- 변수 X가 여러개라면 동시에 여 러 개의 값을 조정하면서 최소의 값을 찾음
- 배치 경사하강법, 확률적 경사하강법 등의 알고리즘이 있음
활성화 함수(Activation Function)
- 비선형적 분류를 만들기 위해 활성화 함수를 사용
- 로지스틱 회귀에서 사용하는 로지스틱 함수 역시 활성화 함수 중 하나
- Sigmoid, tanh, ReLU, Leaky ReLU, Maxout, ELU 등 존재
히든 레이어(Hidden Layer)
- 또한, 데이터를 비선형적으로 변환함과 동시에 데이터의 고차원적 특성(이미지, 자연어)을 학습하기 위한 방법
- 입력과 출력 사이에 은닉 층을 추가
- 하지만 히든 레이어 추가할 수록 좋은 모델이 나올 줄 알았으나, 기울기 소실이라는 문제가 발생
인공 신경망의 학습
- 순전파(Propagation): 입력 데이터가 신경망의 각 층을 통과하면서 최종 출력까지 생성되는 과정
- 역전파(Backpropagation): 신경망의 오류를 역방향으로 전파하여 각 층의 가중치를 조절하는 과정
기울기 소실 문제 등장
- 문제: 역전파 과정에서 하위 레이어로 갈수록 오차의 기울기가 점점 작아져 가중치가 거의 업데이트 되지 않는 현상
- 해결: 특정 활성화 함수(예. ReLU)로 완화
명칭 정리
- Input Layer: 주어진 데이터가 벡터의 형태로 입력
- Hidden Layer: Input Layer와 Output Layer를 매개하는 레이어로 이를 통해 비선형 문제를 해결
- Ouput Layer: 최종적으로 도착하게 되는 Layer
- Activation function: 인공신경망의 비선형성을 추가하며 기울기 소실 문제 해결
epoch
- 동일한 데이터에 대해 여러번 학습
- epoch: 전체 데이터가 신경망을 통과하는 한번의 사이클
- batch: 전체 훈련 데이터 셋을 일정한 크기의 소 그룹으로 나눈 것
- iteration: 전체 훈련 데이터 셋을 여러 개(batch)로 나누었을 때 배치가 학습되는 회수
(실습) 딥러닝
딥러닝 패키지
- Tensorflow: 구글이 오픈소스로 공개한 기계학습 라이브러리로 2.0 버전부터는 Keras 패키지를 통합
- Pytorch: 메타가 개발한 것으로 토치 기반의 딥러닝 라이브러리
Tensorflow 패키지
- tensorflow.keras.model.Sequential
- model.add: 모델에 대한 새로운 층을 추가
- unit
- model.compile: 모델 구조를 컴파일하며 학습 과정을 설정
- optimizer: 최적화 방법으로 Gradient Descent 종류 선택
- loss: 학습 중 손실 함수 설정
- 회귀: mean_squared_error
- 분류: categorical_crossentropy
- metrics: 평가척도
- mse: 제곱의 총합
- acc: 정확도
- f1_score
- model_fit: 모델 훈련 과정
- epochs: 전체 데이터 셋에 대해 학습 반복하는 회수
- model.summary(): 모델의 구조 요약하여 출력
- model.add: 모델에 대한 새로운 층을 추가
- tensorflow.keras.model.Dense: 완전 연결된 층
- unit: 층에 있는 유닛의 수, 출력에 대한 차원 개수
- input_shape: 1번째 층에만 필요하며 입력데이터의 형태를 지정
- model.evalute: 테스트 데이터로 평가
- model.predict: 새로운 데이터 예측
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
weights = np.array([87,81,82,92,90,61,86,66,69,69])
heights = np.array([187,174,179,192,188,160,179,168,168,174])
model2 = Sequential()
# 층 추가
model2.add(Dense(units=64, activation='relu', input_shape=[1]))
model2.add(Dense(units=64, activation='relu'))
model2.add(Dense(units=1))
model2.compile(optimizer='adam', loss='mean_squared_error')
# 모델 요약
model2.summary()
# 학습
model2.fit(weights, heights, epochs=100)
딥러닝 활용 예시
자연어 처리
- 인간의 언어를 데이터화하는 것
- 언어라는 특성상 문맥의 고려가 필수적인데, 위 방식은 문맥을 고려하지 않음
- 트랜스포머: 인공신경망의 발전을 토대로 문맥을 고려하는 모델 개발
- 최신 자연어 처리 모델 - LLM
이미지
- 이미지는 색깔이 이미 데이터이기 때문에 합성 곱 연산을 통해 딥러닝 모델에 학습하고 이미지 생성하는 방식
- 이미지는 원래 데이터 기반:
- RGB 256 개의 데이터로 이루어진 데이터의 집합
- 3차원 데이터를 모델에 학습 시킴
- 최신 이미지 생성 딥러닝 - 텍스트, 이미지, 음성 등 다양한 유형의 데이터를 함께 사용하는 Multimodal
- Stable Diffusion: 텍스트로 입력을 받아 이미지를 추출해주는 이미지모델
'AI > 딥러닝' 카테고리의 다른 글
이미지 데이터와 불량 검출 4일차 (YOLOv8 & COCO) (0) | 2025.03.25 |
---|---|
이미지 데이터와 불량 검출 3일차 (Object Detection, YOLO, OpenCV) (0) | 2025.03.20 |
이미지 데이터와 불량 검출 2일차 (이미지 분류, 전이 학습, 데이터 증강) (0) | 2025.03.18 |
이미지 데이터와 불량 검출 1일차 (0) | 2025.03.13 |
시계열 다루기 3일차 (0) | 2025.02.28 |