딥러닝
인공 신경망을 기반으로 하는 기계 학습의 한 분야로, 컴퓨터가 사람처럼 학습하고 추론하도록 하는 기술이다.
주로 방대한 양의 데이터와 복잡한 모델을 활용해 패턴을 찾고 예측하는 데 사용된다.
딥러닝의 핵심은 계층적인 신경망 구조로, 데이터를 여러 층을 통해 처리하며 점점 더 복잡한 특징을 학습한다~
딥러닝의 원리
딥러닝은 인간의 뇌가 정보를 처리하는 방식을 흉내낸 인공 신경망으로 세 가지 층으로 구성된다.
1. 입력층
데이터(이미지, 텍스트, 음성 등)가 처음 입력되는 층
2. 은닉층
입력 데이터를 여러 번 처리하여 점점 더 복잡한 특징을 추출함.
층이 깊을수록(많을수록) 더 복잡한 패턴을 학습
3. 출력층
최종 결과를 출력
그렇다면 머신러닝과의 차이점은?
항목 | 머신러닝 | 딥러닝 |
특징 추출 | 사람이 직접 정의 | 모델이 자동으로 추출 |
모델 구조 | 단순한 알고리즘 사용 | 인공 신경망 기반으로 계층적 구조 사용 |
데이터 요구량 | 적은 데이터로도 가능 | 많은 데이터 필요 |
연산 능력 | CPU로 충분한 경우가 많음 | GPU/TPU 필요 |
사용 사례 | 스팸 필터, 주가 예측 | 이미지 인식, 음성 인식, 자율주행 |
딥러닝 알기쉽게 이해하기
1) 데이터 준비하기
- 사진 데이터를 준비합니다: 고양이와 강아지 사진을 각각 100장씩 모은다고 해요.
- 학습 데이터와 시험 데이터로 나눕니다.
- 학습 데이터: 컴퓨터가 공부하는 데 사용 (예: 사진 80%)
- 시험 데이터: 공부한 걸 테스트하는 데 사용 (예: 사진 20%)
2) 모델 만들기: 공부할 도구
딥러닝 모델은 컴퓨터의 뇌 같은 역할을 해요.
- 입력된 데이터(예: 사진의 픽셀 정보)를 읽고 특징을 찾아서 결과를 예측합니다.
- 고양이와 강아지를 구별하려면:
- 귀 모양, 눈 모양, 털 색깔 같은 정보를 학습하게 됩니다.
3) 학습 과정: 컴퓨터가 공부하는 과정
컴퓨터가 스스로 연습하는 과정을 단계별로 설명해 볼게요.
- 사진을 넣고 예측해 보기
- 고양이 사진을 넣었는데, 컴퓨터가 “강아지입니다”라고 틀린 답을 했다고 해요.
- 틀린 이유 찾기 (오차 계산)
- “왜 틀렸을까?” 컴퓨터가 예측한 답과 정답을 비교합니다.
- 이때 **오차(틀린 정도)**를 계산합니다.
- 틀린 걸 고치기 (가중치 조정)
- 컴퓨터는 오류를 줄이는 방향으로 공부를 합니다.
- 예를 들어, “귀 모양이 고양이처럼 생긴 걸 더 중요하게 보자”고 결정하고 공부를 다시 시작합니다.
- 이때 **가중치(weight)**를 조정합니다. (가중치는 공부할 때 어떤 부분을 얼마나 중요하게 볼지 정하는 값입니다.)
- 반복 학습하기
- 이 과정을 여러 번 반복합니다.
- 한 번 전체 데이터를 공부하는 걸 **에포크(Epoch)**라고 부릅니다.
- 예를 들어, 사진 80장을 30번 반복해서 공부하게 합니다.
- 이 과정을 여러 번 반복합니다.
4) 공부한 걸 시험해 보기
공부가 끝난 후에 시험을 봅니다.
- 시험 데이터를 넣고 고양이와 강아지를 정확히 맞추는지 확인합니다.
- 만약 시험 성적이 나쁘면, 더 많이 공부하거나 학습 방법을 바꾸는 작업을 합니다.
5) 모델을 완성하고 사용하기
- 컴퓨터가 고양이와 강아지를 잘 구별할 수 있게 되면, 이 프로그램을 앱이나 웹사이트에 배포합니다.
- 사용자가 사진을 업로드하면 컴퓨터가 바로 답을 맞추는 서비스가 되는 거예요!
이해를 돕기 위한 예시 정리
- 사진 준비: 고양이와 강아지 사진을 모아서 학습 데이터와 시험 데이터로 나눕니다.
- 모델 만들기: 컴퓨터가 어떤 특징(귀 모양, 털 색)을 볼지 정합니다.
- 학습하기: 컴퓨터가 오답을 줄이는 방향으로 반복 연습합니다.
- 시험 보기: 공부한 걸 시험해 보고 성적을 확인합니다.
- 사용하기: 완성된 프로그램을 웹이나 앱에 올립니다.
내가 이해가 안간다고 햇더니 지피티가 아주 친절하게 알려준 내용이다
이걸보면 이해할수 잇엇다
딥러닝 무작정 따라해보기 예시코드
# 1. 필요한 라이브러리 임포트
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# 2. 데이터셋 불러오기 (MNIST 손글씨 숫자 데이터)
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 3. 데이터 전처리: 픽셀 값을 0~1 사이로 정규화
x_train = x_train / 255.0
x_test = x_test / 255.0
# 4. 레이블(정답) 데이터 원-핫 인코딩
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
# 5. 딥러닝 모델 설계 (Sequential API 사용)
model = Sequential([
Flatten(input_shape=(28, 28)), # 2D 이미지 데이터를 1D로 펼침
Dense(128, activation='relu'), # 은닉층 1
Dense(10, activation='softmax') # 출력층 (10개의 클래스)
])
# 6. 모델 컴파일 (손실 함수, 최적화 알고리즘, 평가 지표 설정)
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy']
)
# 7. 모델 학습
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split=0.2)
# 8. 테스트 데이터로 성능 평가
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print(f"\n테스트 정확도: {test_accuracy * 100:.2f}%")
# 9. 예측 수행 (테스트 데이터의 첫 번째 이미지 예측)
import numpy as np
predictions = model.predict(x_test)
predicted_label = np.argmax(predictions[0])
print(f"예측된 값: {predicted_label}")