@@@ 인공지능/수학·통계를 몰라도 이해할 수 있는 쉬운 딥러닝

2 - 1. 이미지 분류(Classification) 기법 활용하기(5)

HTG 2021. 7. 17. 13:57
728x90

2-1-5. AI는 사람과 말을 구분할 수 있을까?

데이터 살펴보기

데이터 - 게임 엔진을 통하여 모델링된 사람 이미지 527장과 말 이미지 500장

데이터의 픽셀들은 기본적으로 0 ~ 255까지의 숫자. 이를 노멀라이즈 시킴.

 

●어떤 인공지능 사용?

5층짜리 CNN, Flatten, 2층짜리 FNN

층수 종류 크기 활성화 함수
1층 CNN 16, (3, 3) ReLu
- MaxPool (2, 2) -
2층 CNN 32, (3, 3) ReLu
- MaxPool (2, 2) -
3층 CNN 64, (3, 3) ReLu
- MaxPool (2, 2) -
4층 CNN 64, (3, 3) ReLu
- MaxPool (2, 2) -
5층 CNN 64, (3, 3) ReLu
- MaxPool (2, 2) -
6층 Flatten - -
7층 FNN 128 ReLu
8층 FNN 1 -

각각의 CNN에는 2 X 2 맥스 풀링 레이어를 부착. 

출력층을 제외한 모든 층이 렐루를 활성화 함수를 사용. 크기는 1

분류 문제에서 분류 대상이 단 두개 밖에 없다면 출력층의 크기를 1로 세팅하고, 로스를 'binary_crossentropy'로 활용.

출력층의 출력값이 0에 가까운지 1에 가까운지 0과 1로 두 개의 클래스를 분류할 수 있기 때문.

 

●딥러닝 코딩

- 인공신경망 제작

이전과 비슷

 

- 인공신경망 컴파일

옵티마이저(optimizer) - Adam

메트릭(metrics) - accuracy

로스(loss) - binary_crossentropy

 

●인공지능 학습

- 인공신경망 학습

 

- 학습 결과 출력

그래프로 출력

 

●인공지능 학습 결과 확인

- 인공지능 성능 확인하기

저자의 경우 정확도가 99.51%에 육박. 

나의 경우에도 정확도가 99.51% 

분명 30에포크라고 했는데 저자는 20에포크로 했다 실수인가? 

째든 나는 30에포크로 해서 28에포크에서 멈춤.

 

- 학습 기록 확인하기

빨간 선이 train, 파란 선이 test

 

저자의 경우

Loss의 경우 모두 무난하게 감소해 0근처에 멈춤. 테스트가 더 낮은거면 오버피팅없이 학습이 잘된 것.

Accuracy의 경우 둘다 골고루 증가. 거의 100%에 수렴

성능이 굉장히 뛰어남.

 

나의 경우

Loss의 경우 5에포크이후 급격히 줄어듦. 나도 test가 더 낮은거 보면 오버피팅이 없음.

Accuracy의 경우에도 5에포크이후 거의 1에 가까움.

 

 

 

 - 게임과 딥러닝

게임과 딥러닝하면 역시 강화학습.

게임 분야에서는 주로 CNN을 활용해 화면의 정보를 실시간으로 분석하고, 적절한 명령을 입력하는 인공지능 연구가 활발.

강화학습을 공부하면 게임을 플레이하는 인공지능을 만들 수 있음. 게임을 하면 할수록 실력이 향상하는 인공지능.

쿠키런이라는 게임을 만든 한국 게임회사인 '데브시스터즈'에서는 강화학습을 통해 쿠키런 게임을 플레이하는 AI를 만듦.

이 AI에 여러 캐릭터로 게임을 플레이시켜 점수 통계를 구했다고 함.

게임을 플레이하는 인공지능을 가장 쉽게 만드는 방법은 OpenAI에서 공개한 GYM 라이브러리를 활용하는 것.

- OpenAI GYM

 

- 모델의 축소

이번 인공지능은 성능이 매우 뛰어남. 그러나 성능을 조금 포기하더라도 인공지능의 크기를 줄이는 편이 경제적으로 이득일 수 있음.

인공지능의 크기를 축소하며, 성능의 변화 추척.

 

1층 줄임.

더 좋은 성능을 보인다. 정확도가 100%

 

2층을 줄임.

 

성능이 더 안좋아짐.