제안서 내는 중에 중학생들 교육프로그램을 짜다가 나중에 참고할까 싶어 포스팅을 작성한다.
ML4Kids는 영국에서 만든 인공지능 교육용 사이트로 머신러닝을 체험할 수 있는 사이트이다.
IBM Watson Developer Cloud의 API를 사용하고 있고 Dvaid Lane이 개발하였다.
쉽게 설명하면, 적절한 자료를 넣고 [학습]을 누르면 자동으로 학습이 된다.
학습을 하기까지의 과정은 숨겨져 있지만, 학습한 예측 모델을 자체 탑재한 스크래치를 통해 모델을 사용할 수 있다.
최근의 인공지능이 학습하는 것보다 모델을 만들어서 쓰는데 주력하고 있는 것을 살펴보면, 해당 방법도 나쁘지 않는 듯 하다.
인공지능을 학습해도 교육용 블록코딩에 사용할 수 있는 사이트 중에서는 오류 없이 가장 잘 되는 것 같다.
그럼 먼저 사이트에 접속을 하고, 여기에 있는 샘플을 토대로 만들어나가보도록 하자.
machinelearningforkids.co.uk/#!/welcome
Machine Learning for Kids
An educational tool for teaching kids about machine learning, by letting them train a computer to recognise text, pictures, numbers, or sounds, and make things with it in Scratch.
machinelearningforkids.co.uk
1. 사이트 접속 후 샘플 데이터 가져오기
여기서 텍스트, 이미지, 숫자, 소리 등으로 지도학습을 할 수 있으나 우린 여기에 있는 샘플데이터를 이용하도록 한다.
먼저 사이트에 접속했으면 [프로젝트로 이동] 하여 [Copy Template] 한다.
여기의 샘플은 [타이타닉호 생존자], [영국 신문의 헤드라인], [고양이와 개], [Phishing], [동그라미&엑스 게임], [King & Queens Top Trumps], [Song lyrics], [Hand gestures] 등이 올라와 있다.
타이타닉호 생존자 예측이 가장 먼저 개발되었다. 인공지능이 교육에 쓰기 이전부터 타이타닉호 생존자 예측 모델이 유명한 예제였기 때문일 것이다.
그럼 관련 설명을 볼 수 있다. 각각의 키 값에 대한 설명이다.
여담이지만 학생들이랑 텍스트 코딩 같은것을 하다보면 영어가 꽤 장벽이다.
나중에야 물론 수학적 사고가 있는 친구들이 잘하겠지만 처음에는 영어+영어타자 잘하는 애들이 무조건 코딩에 빠르게 익숙해진다. 마방진 만들기, 백트래킹 알고리즘 들이 어려우면 얼마나 어렵겠냐, 코딩이 어렵지... ㅎㅎ 뭐 여튼 대충 이해했으면 넘어간다.
1912 년 4 월 15 일 타이타닉호가 빙산에 충돌한 후 침몰하여 승객과 승무원 중 1500명이 사망하였습니다.이 프로젝트에는 수백 명의 승객에 대한 개인 데이터가 포함되어 있습니다. 이를 사용하여 승객이 살아남을 수 있는 가능성을 예측할 수 있습니다.
'ticket class'필드는 1등석 (1), 2등석 (2) 또는 3등석 (3) 승객의 티켓 종류를 나타내는 번호입니다.
'gender'입력란은 승객이 '남성'또는 '여성'인지 나타냅니다.
'age'필드는 승객의 나이입니다.
'sibl. sp.' 승객이 어렸을 때 동승 한 형제 또는 자매(들)의 수 또는 승객이 성인인 경우 탑승한 남편 또는 아내(배우자)의 수입니다.
'par. ch.' 필드는 어른인 경우 승객이 탑승한 부모의 수 또는 성인인 경우 승객이 탑승한 자녀의 수입니다.
'ticket fare'필드는 티켓 구입에 지불한 금액입니다.
'embarked'필드는 Cherbourg, Queenstown 또는 Southampton와 같이 타이타닉호에 탑승 한 곳입니다.
가져오기 까지 클릭하면 새로운 주제가 생긴 것을 볼 수 있다.
2. 데이터 살펴보기
자 그럼 이제 데이터들이 들어왔다. 타이타닉 서바이버, 숫자로 인식해서 살았는지 죽었는지 판단한다는 뜻이다. 이게 제목 역할이니 클릭해서 들어간다.
(바로 실행할 수도 있지만) 먼저 데이터가 어떻게 되어 있는지 확인해보자.
들어가서 훈련 탭에 들어가본다.
들어오면 다양한 데이터들을 볼 수 있다.
이번 기회에 여기에 있는 것들을 살펴보도록 하자.
1. Survived(생존자) - 레이블
물론 생존자도 여러명이지만 대표적인 것으로 가져왔다.
1등급 티켓 클래스, 여자, 16살, 형제자매수 0, 부모님 1분, 티켓가격 57, 쉘부르는 프랑스쪽이다.
근데 생존자들 중 많은 사람들이 쉘부르에서 비싼 가격에 배를 탄 것이 보이기는 한다.
이것만 언뜻 보아도 생존률이 높아보인다. 티켓도 높은 클래스에 미성년자 여성이다.
Survived 라는 레이블 안에 해당 데이터들이 모여있다.
2. did_not_survivied(생존X) - 레이블
마찬가지지만 대표적인 것을 네모 표시 하였다.
3등급에 19살 남자, 가격은 싼 티켓
대부분이 죽었을 것으로 예상되는 것이긴 하다. 정확한 건 예측 모델을 통해 알아보도록 하자.
did_not_survived 라는 레이블 안에 해당 데이터들이 모여있다.
3. 데이터 추가 / 레이블
[+데이터 추가] 는 해당 부분에 생존자 또는 죽은 사람의 데이터를 추가하는 것이다.
[레이블]은 surived / did_not_survive 라는 레이블 말고 또 다른 레이블을 추가하는 것이다.
현재로써는 우린 데이터도 없고 살고/죽고 외에는 다른 분류가 없으니 그냥 넘어간다.
혼자서 모델을 만들 때에는 필요하다.
4. 숫자들
숫자는 해당 레이블에 있는 데이터의 개수를 나타낸다. 산 사람이 288, 죽은 사람의 인적사항이 424로 더 많다.
그럼 이제 데이터를 토대로 [훈련] 하고 실험(평가) 해 보도록 하자.
현재는 데이터만 있을 뿐 훈련한 상태가 아니다. 그러므로 훈련 버튼을 클릭해 훈련 시켜줘야 한다.
이 부분이 우리가 따로 훈련하는 인공지능 코딩을 하지 않아도 알아서 해주는 부분이다.
버튼을 누르면 잠시 뒤에 바로 학습이 끝난다. 이정도 텍스트 데이터야 금방 끝난다.
바로 이제 테스트를 해보자. 영화에서 로즈랑 결혼하려고 하던 그 남자 정도로 넣어보자. 50대는 아닌가..?
테스트 버튼을 누르면 잠시뒤에 결과가 뜬다.
did_not_survive 란다. 영화에서 그 아저씨는 살았는데.. 30살로 넣어도 100%로 죽은 것으로 나온다.
With 100% Confidence는 100% 확률이라는 뜻이다.
학습한 데이터의 예측 결과가 이렇게 나오는 것은 아마 이정도에 생존한 사람이 없기 때문일 것이다.
여자 어린아이여도 3등급이면 얄짤없다. 3등급 티켓 80달러에 산건데...... 1등급보다 비싸게....
여튼 이런 방식으로 생존자 예측을 해볼 수 있다. 만약 이를 블록 프로그래밍에서 해보고자 한다면 [만들기]를 통해 모델을 사용해볼 수 있다.
만약 학생들이랑 해본다면 스크래치나 파이썬 이용해서 더 재미있게 만들 가능성이 무궁무진할 것 같다.
머신러닝포키즈는 텍스트, 이미지, 숫자, 소리 등 되니까 해볼 게 많은 듯 하다.
여튼 타이타닉 생존자예측은 이와 같이 해볼 수 있다!!