티스토리 뷰

1. 중요 신경망 모델 발전 과정

~1980s 1980s 후반 1997 2014 2017 2017 + 
기본 신경망 FFNN
다층퍼셉트론 MLP
순환 신경망 RNN LSTM GRU Transformer GPT
단방향
(입력층, 은닉층, 출력층)
순환구조
(은닉층 출력이 다시 입력으로)
RNN 기울기 소실 문제 해결, 긴 시퀀스 학습 가능 LSTM보다 간단 어텐션 메커니증
병렬처리
순환없이도  긴 의존성 학습 가능
transformer의 디코더 구조 기반
자연처리 혁신
회귀, 이진분류,
다중클래스
시계열 예측
음성 인식
텍스트 생성
긴 시퀀스 처리
기계 번역
음악 생성
시계열 예측
텍스트 분석
NLP
시계열 예측
텍스트 생성
대화형 AI
코드 생성
고객이탈예측
신용카드사기탐지
주식 예측
날씨 예측
문장 번역
장기적 주식 예측
기계 고장 예측
실시간 음성 인식
기계 번역
질문응답시스템
문서 요약
주식 예측
블로그 글 작성
고객 서비스 챗봇

* 쉽게 생각하면 퍼셉트론은 단순한 하나의 뉴런, 뉴런을 여러개 연결해 레이어를 만들면 뉴럴 네트워크

** 은닉층: 단층 퍼셉트론(가장 단순) 0개, FFNN은 0개 이상, 다층 퍼셉트론은 1개 이상(가장 복잡)

*** FFNN은 활성화 함수 선형/비선형 모두 가능하지만 다층퍼셉트론(MLP)는 반드시 비선형 활성화 함수

 

2. tensorflow 적용

- 예시: (시계열 데이터) 주식 가격 예측

 

1) 기본 신경망 (Feedforward Neural Network)

- 시퀀스의 순서를 고려하지 않아, 각 타임스텝을 독립적으로 처리하는 방식으로 적용(Dense층 사용)

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 더미 시계열 데이터 생성 (1000개의 시점, 1개의 특성)
x_train = np.random.rand(1000, 10)  # 10일의 주식 가격
y_train = np.random.rand(1000, 1)   # 예측하려는 주식 가격 (다음 날)

# 모델 정의
model = Sequential([
    Dense(128, input_dim=10, activation='relu'),  # 10일의 데이터를 입력
    Dense(64, activation='relu'),
    Dense(1)  # 1개의 값 예측 (다음 날 주식 가격)
])

# 모델 컴파일
model.compile(optimizer='adam', loss='mean_squared_error')

# 모델 학습
model.fit(x_train, y_train, epochs=5, batch_size=32)

 

2) RNN (Recurrent Neural Network)

from tensorflow.keras.layers import SimpleRNN

model = Sequential([
    SimpleRNN(128, activation='relu', input_shape=(10, 1)),  # 10일의 시계열 데이터
    Dense(64, activation='relu'),
    Dense(1)  # 다음 날 주식 가격 예측
])

model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train.reshape(-1, 10, 1), y_train, epochs=5, batch_size=32)

 

3) LSTM(Long Short Term Memory)

from tensorflow.keras.layers import LSTM

model = Sequential([
    LSTM(128, activation='relu', input_shape=(10, 1)),  # 10일의 시계열 데이터
    Dense(64, activation='relu'),
    Dense(1)  # 다음 날 주식 가격 예측
])

model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train.reshape(-1, 10, 1), y_train, epochs=5, batch_size=32)

 

4) GRU (Gated Recurrent Unit)

from tensorflow.keras.layers import GRU

model = Sequential([
    GRU(128, activation='relu', input_shape=(10, 1)),  # 10일의 시계열 데이터
    Dense(64, activation='relu'),
    Dense(1)  # 다음 날 주식 가격 예측
])

model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train.reshape(-1, 10, 1), y_train, epochs=5, batch_size=32)

5) Transformer

from tensorflow.keras.layers import MultiHeadAttention, Dense, LayerNormalization, Dropout
from tensorflow.keras import Input, Model

inputs = Input(shape=(10, 1))  # 10일의 데이터
attention = MultiHeadAttention(num_heads=4, key_dim=1)(inputs, inputs)
norm = LayerNormalization()(attention)
dense1 = Dense(128, activation='relu')(norm)
dense2 = Dense(64, activation='relu')(dense1)
outputs = Dense(1)(dense2)

model = Model(inputs, outputs)
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train.reshape(-1, 10, 1), y_train, epochs=5, batch_size=32)

6) GPT (Generative Pre-trained Transformer)

from tensorflow.keras.layers import MultiHeadAttention, Dense, LayerNormalization, Dropout, Embedding
from tensorflow.keras.models import Model

inputs = Input(shape=(10,))  # Tokenized input sequence
embedding = Embedding(input_dim=10000, output_dim=128)(inputs)  # Embedding layer
attention = MultiHeadAttention(num_heads=4, key_dim=128)(embedding, embedding)
norm = LayerNormalization()(attention)
dense1 = Dense(128, activation='relu')(norm)
dense2 = Dense(64, activation='relu')(dense1)
outputs = Dense(1)(dense2)  # Final prediction

model = Model(inputs, outputs)
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train.astype(int), y_train, epochs=5, batch_size=32)  # Assuming tokenized x_train

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함