강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

잭클님의 프로필 이미지
잭클

작성한 질문수

딥러닝 X데이터에 순서가 없다는것에 대한 질문입니다.

작성

·

97

·

수정됨

0

안녕하세요. 저는 현직 게임개발자 6년차 프로그래머입니다.

 

이번에 제가 만들고 있는 게임에 인공지능 봇을 넣어볼까 싶어서 텐서플로우로 만들어보고있습니다.

 

질문은,

x데이터에 [1,2,3,4,5]를 넣은것과 [5,4,3,2,1]을 넣은것은 완전히 같은것으로 알고있습니다.

순서를 고려하지 않으니까요.

 

하지만 저의 경우 순서가 매우 중요할것같습니다.

예를들자면 원핫 인코딩 된 x데이터를 넣으면 원핫인코딩이 풀린 값이 예측되게 하고싶다면

 

[0,0,0,1,0]이라는 x데이터를 넣으면 y값이 4가 나오길 원하는것인데.

순서를 고려하지않는다면 원핫 인코딩이 풀린 값은 절대 예측할수 없게됩니다.

 

제가 만드는 AI를 자동차 경주게임 AI라고 가정해보겠습니다.

AI는 유저와의 거리를 어느정도 유지한상태로 자연스럽게 달리게하고 싶다고 가정하겠습니다.

x데이터가 [현재1등의속도, 현재2등의속도, 현재3등의속도, 내 속도, 완주까지 남은거리]

이렇다고 가정하고

y데이터는 내가 현재 달려야할 속도를 예측한다고하면

 

순서를 고려하지않는다면, 완주까지 남은 거리를 현재1등의 속도로 오인할수있다는 것이 아닌가요?
이를 해결하기 위한 방법이 뭐가있을까요?

RNN을 사용해서 LSTM으로 데이터에 순서를 고려한다는 것을 알고있는데, LSTM을 쓰는것은 자연어처리에서 밖에 못봐서, 이럴때도 LSTM을 쓰는것이 맞는지 모르겠네요


혹시나 가능하시다면, 텐서플로우로 예제같은거 보여주실수있으시면 감사하겠습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

잭클님, 딥러닝 프로젝트에 순서가 중요한 데이터를 다루는 상황에 대해 질문해주셨군요.

LSTM은 순서가 중요한 데이터를 처리하는 데 매우 유용합니다. 자연어 처리뿐만 아니라, 여러분이 언급한 자동차 경주 게임 AI와 같이 순차적인 데이터를 다루는 다양한 분야에서 사용됩니다. 이러한 상황에서 LSTM은 과거의 정보를 기억함으로써 순서가 있는 데이터를 효과적으로 처리할 수 있습니다.

따라서, 자동차의 속도와 같은 순차적으로 의미가 있는 데이터를 모델에 학습시키려면 LSTM을 활용하는 것이 적절합니다. 순서 정보를 유지하면서 데이터를 처리할 수 있기 때문에, 예측 정확도를 높일 수 있습니다.

텐서플로우를 이용한 LSTM 모델 구축 예제는 아래와 같습니다. 이 예제는 기본적인 구조를 보여줍니다. 실제로 사용할 때는 데이터에 맞게 조정할 필요가 있을 것입니다.

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

# 모델 생성
model = Sequential()
# LSTM 레이어 추가, 첫 번째 인자는 뉴런의 수, input_shape는 입력 데이터의 형태를 정의
model.add(LSTM(50, activation='relu', input_shape=(5, 1)))
# 출력 레이어 추가
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')

# X_train은 학습 데이터, Y_train은 레이블 데이터
# model.fit(X_train, Y_train, epochs=200, verbose=0)

# 모델 요약 출력
model.summary()

이 코드는 순차적 데이터를 처리할 수 있는 간단한 LSTM 모델을 정의한 것입니다. 게임 AI 개발 시에는 입력 데이터의 차원이나 모델의 복잡도가 다를 수 있으니, 필요에 따라 LSTM 레이어의 수나 뉴런의 수를 조정해야 할 수 있습니다.

질문에 대한 답변이 도움이 되었기를 바랍니다. 추가적인 질문이 있으시다면 언제든지 문의해주세요.

잭클님의 프로필 이미지
잭클

작성한 질문수

질문하기