실습 3주차 - yunsaang/- GitHub Wiki
AI가 포켓몬의 타입을 구분하는 방식은 크게 이미지 분석과 수치 데이터 분석 두 가지 경로로 나뉩니다. AI는 단순히 "불꽃처럼 생겼네"라고 느끼는 것이 아니라, 수만 개의 데이터를 학습하여 통계적인 패턴을 찾아냅니다.
포켓몬의 겉모습(이미지)만 보고 타입을 맞추는 AI는 주로 **CNN(합성곱 신경망, Convolutional Neural Networks)**이라는 기술을 사용합니다.
-
특징 추출: AI는 포켓몬의 색상, 질구, 실루엣 등을 분석합니다.
예: 빨간색/주황색이 많고 뾰족한 불꽃 모양이 있으면 '불꽃 타입'일 확률이 높다고 판단합니다.
파란색이나 부드러운 곡선이 많으면 '물 타입'으로 분류하는 식이죠.
다중 레이블 학습: 포켓몬은 타입이 하나일 수도, 두 개(듀얼 타입)일 수도 있습니다. AI는 마지막 단계에서 18개 타입 각각에 대해 0에서 1 사이의 확률값을 내놓고, 일정 기준을 넘는 타입들을 최종 결과로 선택합니다.
이미지가 아닌 게임 속 데이터(스탯)를 학습하는 방식도 있습니다.
-
스탯 패턴 분석: 공격력, 방어력, 스피드 같은 수치를 보고 타입을 추측합니다.
예: 공격력과 스피드가 압도적으로 높다면 '전기'나 '격투' 타입의 전형적인 패턴으로 인식합니다.
-
자연어 처리 (NLP): 포켓몬의 이름이나 도감 설명을 분석하기도 합니다.
이름에 '파이어', '리자' 같은 단어가 포함되거나, 도감에 "열기", "뜨겁다"는 단어가 자주 등장하면 이를 가중치로 활용해 타입을 결정합니다.
• AI가 잘 못 맞추는 경우를 찾아보기 외형과 타입의 불일치 (디자인 반전) AI는 특정 색상이나 질감을 특정 타입과 강하게 연결합니다. 배쓰나이 : 몸 전체가 짙은 초록색입니다. AI는 '초록색 = 풀 타입'이라는 강력한 데이터 편향을 가지고 있어, 단순히 색상만 보고 풀 타입으로 분류할 가능성이 매우 높습니다.
• 잘 안 되는 유형의 이미지를 더 추가 : 물 타입에 배쓰나이, 수레기 초록색/갈색 물 포켓몬을 많이 넣습니다 또한 풀 타입에 초록색이 아닌 풀 포켓몬을 섞어 넣습니다.
• 모델 학습시키기 다시 클릭 • 개선 전후 정확도 비교
전

후

사용자가 'Class' 이름을 통해 정답을 직접 정하고 나서 각 사진이 어떤 그룹에 속하는지 인간이 미리 나누어 줌으로써 데이터를 분류하고 새로운 사진이 들어왔을 때, 학습한 데이터를 바탕으로 '정답' 중 하나로 분류하는 과정이 있기 떄문이다
포켓몬은 인간이 특정 타입을 시각적으로 전달하기 위해 의도적으로 만든 상징적 디자인을 가지고 있습니다. 불꽃 타입은 불꽃 모양, 풀 타입은 잎사귀나 꽃처럼 AI가 수치화하기 쉬운 강렬한 시각적 특징이 뚜렷하게 박혀 있죠. 반면 과일은 자연물이기 때문에 사과나 감, 배처럼 형태가 모두 둥글둥글하고 질감이 비슷해서 AI가 미세한 차이를 구별해내기가 훨씬 까다롭습니다.
가장 먼저 해결해야 할 과제는 데이터의 현실성입니다. 인터넷에서 구한 예쁜 과일 사진이 아니라, 실제 마트의 복잡한 조명과 진열 상태가 담긴 사진이 대량으로 필요합니다. 마트 특유의 노란빛 조명이나 비닐봉지에 담겨 빛이 반사되는 상황, 그리고 여러 과일이 겹쳐 있는 현상을 AI가 학습해야 하기 때문입니다.