생성 AI 중 텍스트생성 with Transfomer 샘플코드

2023.04.09 16:17 1,206 조회

생성 AI와 관련된 다른 기술로는 자연어 처리(NLP) 분야의 텍스트 생성이 있습니다.

텍스트 생성은 주어진 문맥이나 조건에 맞춰 새로운 텍스트를 생성하는 작업입니다.

이를 위해 사용되는 대표적인 모델로는 순환 신경망(RNN)과 트랜스포머(Transformer) 기반의 모델이 있습니다.

특히, GPT(Generative Pre-trained Transformer)는 트랜스포머 기반의 생성 AI 모델로, 높은 성능을 보여주고 있습니다.

여기서는 간단한 LSTM(Long Short-Term Memory) 기반의 순환 신경망을 사용하여 텍스트 생성을 수행하는 예제를 들겠습니다.


import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical


# 샘플 텍스트 데이터
text = "I am studying artificial intelligence and machine learning using Python."


# 문자-인덱스 및 인덱스-문자 매핑 생성
chars = sorted(list(set(text)))
char_to_idx = {c: i for i, c in enumerate(chars)}
idx_to_char = {i: c for i, c in enumerate(chars)}


# 데이터셋 생성
seq_length = 5
X_data, y_data = [], []
for i in range(0, len(text) - seq_length):
    X_data.append([char_to_idx[c] for c in text[i:i + seq_length]])
    y_data.append(char_to_idx[text[i + seq_length]])


X_data = np.array(X_data)
X_data = X_data / float(len(chars))
X_data = np.reshape(X_data, (X_data.shape[0], X_data.shape[1], 1))
y_data = to_categorical(y_data)


# 모델 생성
model = Sequential([
    LSTM(128, input_shape=(X_data.shape[1], X_data.shape[2])),
    Dense(len(chars), activation='softmax')
])


# 모델 컴파일 및 학습
model.compile(optimizer='adam', loss='categorical_crossentropy')
model.fit(X_data, y_data, epochs=100, batch_size=8, verbose=0)


# 텍스트 생성 함수
def generate_text(seed_text, length):
    output = seed_text
    for _ in range(length):
        input_seq = [char_to_idx[c] for c in seed_text]
        input_seq = pad_sequences([input_seq], maxlen=seq_length, padding='pre')
        input_seq = input_seq / float(len(chars))
        input_seq = np.reshape(input_seq, (1, input_seq.shape[1], 1))


        prediction = np.argmax(model.predict(input_seq), axis=-1)
        output += idx_to_char[prediction[0]]
        seed_text += idx_to_char[prediction[0]]
        seed_text = seed_text[1:]


    return output


# 텍스트 생성 예제
seed_text = "I am "
generated_text = generate_text(seed_text, 20)
print("Generated text:", generated_text)


순환 신경망을 사용하여 텍스트 생성을 수행하는 예제입니다. 주어진 텍스트 데이터를 이용해 학습한 후, 주어진 seed_text로부터 새로운 텍스트를 생성합니다.

이 예제에서는 주어진 텍스트와 비슷한 패턴의 문자열을 생성합니다.

다만, 이 예제는 매우 단순한 형태의 텍스트 생성이며, 현실 세계의 데이터에 대해서는 더 복잡한 모델을 사용해야 좋은 성능을 얻을 수 있습니다.

예를 들어, GPT와 같은 트랜스포머 기반의 모델은 텍스트 생성, 번역, 요약 등 다양한 자연어 처리 작업에서 뛰어난 성능을 보여줍니다.

학생들이 이러한 텍스트 생성 예제를 통해 생성 AI의 원리와 자연어 처리 분야의 다양한 기술에 대해 이해하게 되면, 인

공지능 기술의 활용 방안에 대해 더욱 흥미를 가질 수 있을 것입니다.

이를 바탕으로 학생들은 인공지능과 관련된 다양한 문제를 해결하고, 실제 산업 현장에서 적용 가능한 능력을 기를 수 있습니다.

이러한 생성 AI를 다루는 과정에서, 학생들은 또한 인공지능의 윤리적 측면과 사회적 영향에 대해 고민하게 됩니다.

특히, 생성 AI가 허위 뉴스나 조작된 이미지 등 부정적인 목적으로 사용될 수 있는 점을 인식하고, 이에 대한 책임 있는 사용 방안을 모색할 것입니다.

이런 과정에서 학생들은 인공지능 기술의 발전과 동시에 기술의 올바른 활용을 위한 기준과 가이드라인을 함께 고려하게 됩니다