카테고리 없음

딥러닝이란?

yumin630 2024. 10. 31. 01:18

 

딥러닝

인공 신경망을 기반으로 하는 기계 학습의 한 분야로, 컴퓨터가 사람처럼 학습하고 추론하도록 하는 기술이다.

주로 방대한 양의 데이터와 복잡한 모델을 활용해 패턴을 찾고 예측하는 데 사용된다.

딥러닝의 핵심은 계층적인 신경망 구조로, 데이터를 여러 층을 통해 처리하며 점점 더 복잡한 특징을 학습한다~

 

딥러닝의 원리

딥러닝은 인간의 뇌가 정보를 처리하는 방식을 흉내낸 인공 신경망으로 세 가지 층으로 구성된다.

 

1. 입력층

데이터(이미지, 텍스트, 음성 등)가 처음 입력되는 층

 

2. 은닉층

입력 데이터를 여러 번 처리하여 점점 더 복잡한 특징을 추출함.

층이 깊을수록(많을수록) 더 복잡한 패턴을 학습

 

3. 출력층

최종 결과를 출력

 

 

그렇다면 머신러닝과의 차이점은?

 

항목 머신러닝 딥러닝
특징 추출 사람이 직접 정의 모델이 자동으로 추출
모델 구조 단순한 알고리즘 사용 인공 신경망 기반으로 계층적 구조 사용
데이터 요구량 적은 데이터로도 가능 많은 데이터 필요
연산 능력 CPU로 충분한 경우가 많음 GPU/TPU 필요
사용 사례 스팸 필터, 주가 예측 이미지 인식, 음성 인식, 자율주행

 

 

딥러닝 알기쉽게 이해하기

1) 데이터 준비하기

  • 사진 데이터를 준비합니다: 고양이와 강아지 사진을 각각 100장씩 모은다고 해요.
  • 학습 데이터시험 데이터로 나눕니다.
    • 학습 데이터: 컴퓨터가 공부하는 데 사용 (예: 사진 80%)
    • 시험 데이터: 공부한 걸 테스트하는 데 사용 (예: 사진 20%)

2) 모델 만들기: 공부할 도구

딥러닝 모델은 컴퓨터의 같은 역할을 해요.

  • 입력된 데이터(예: 사진의 픽셀 정보)를 읽고 특징을 찾아서 결과를 예측합니다.
  • 고양이와 강아지를 구별하려면:
    • 귀 모양, 눈 모양, 털 색깔 같은 정보를 학습하게 됩니다.

3) 학습 과정: 컴퓨터가 공부하는 과정

컴퓨터가 스스로 연습하는 과정을 단계별로 설명해 볼게요.

  1. 사진을 넣고 예측해 보기
    • 고양이 사진을 넣었는데, 컴퓨터가 “강아지입니다”라고 틀린 답을 했다고 해요.
  2. 틀린 이유 찾기 (오차 계산)
    • “왜 틀렸을까?” 컴퓨터가 예측한 답과 정답을 비교합니다.
    • 이때 **오차(틀린 정도)**를 계산합니다.
  3. 틀린 걸 고치기 (가중치 조정)
    • 컴퓨터는 오류를 줄이는 방향으로 공부를 합니다.
    • 예를 들어, “귀 모양이 고양이처럼 생긴 걸 더 중요하게 보자”고 결정하고 공부를 다시 시작합니다.
      • 이때 **가중치(weight)**를 조정합니다. (가중치는 공부할 때 어떤 부분을 얼마나 중요하게 볼지 정하는 값입니다.)
  4. 반복 학습하기
    • 이 과정을 여러 번 반복합니다.
      • 한 번 전체 데이터를 공부하는 걸 **에포크(Epoch)**라고 부릅니다.
    • 예를 들어, 사진 80장을 30번 반복해서 공부하게 합니다.

4) 공부한 걸 시험해 보기

공부가 끝난 후에 시험을 봅니다.

  • 시험 데이터를 넣고 고양이와 강아지를 정확히 맞추는지 확인합니다.
  • 만약 시험 성적이 나쁘면, 더 많이 공부하거나 학습 방법을 바꾸는 작업을 합니다.

5) 모델을 완성하고 사용하기

  • 컴퓨터가 고양이와 강아지를 잘 구별할 수 있게 되면, 이 프로그램을 앱이나 웹사이트에 배포합니다.
  • 사용자가 사진을 업로드하면 컴퓨터가 바로 답을 맞추는 서비스가 되는 거예요!

이해를 돕기 위한 예시 정리

  1. 사진 준비: 고양이와 강아지 사진을 모아서 학습 데이터와 시험 데이터로 나눕니다.
  2. 모델 만들기: 컴퓨터가 어떤 특징(귀 모양, 털 색)을 볼지 정합니다.
  3. 학습하기: 컴퓨터가 오답을 줄이는 방향으로 반복 연습합니다.
  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}")