Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
12
00:49, 23 октября 2017

Как машинное обучение помогло 1000 человек узнать «Слова назидания» Абая лучше

В июле этого года мы запустили игру, основанную на машинном обучении "Абай против Робота" и уже сейчас имеем 50,000 данных и много интересных инсайтов об Абае, например, его лучшие предложения или то, какие города знают его больше.

Blog post image

Немного об игре. Пользователю дано предложение. Он должен ответить, кто его написал: Абай или Робот (наш искусственный интеллект).

Проанализировав 50,000 данных собранных от реальных пользователей, мы представляем вам очень интересные данные.

Топ города и аулы и страны по знанию Абая

Данные показали, что Шымкент Кызылорда -- лучший город, а Южно-Казахстанская Алматинская область -- лучший регион.

Топ города Казахстана

Топ города Казахстана

Топ регионы (аулы) Казахстана

Топ регионы (аулы) Казахстана

Топ страны мира

Топ страны мира

Наша игра помогла 1000 человек

Blog post image

Как видно из графика выше, мы нарисовали все попытки всех пользователей нашей игры. Другими словами это learning curve для всех пользователей. Толстая красная линия показывает средний learning curve для всех. Чтобы узнать как помогает наша игра познавать Слова Назидания, мы получили best fit line (синяя линия), которая подтверждает нашу гипотезу.

Как видно из графика выше, мы нарисовали все попытки всех пользователей нашей игры. Другими словами, это learning curve для всех пользователей. Толстая красная линия показывает средний learning curve для всех. Чтобы узнать как помогает наша игра познавать Слова Назидания, мы получили best fit line (синяя линия), которая подтверждает нашу гипотезу.

Вначале больше данных – меньше шума. Конечно, не все люди играют много. Но те, кто все-таки играют много, их среднее растет (чем больше человек играет, тем лучше он познает Слова Абая).

Вначале графика видно, что у best-fit-line почти нулевой наклон (0.1). Это означает, что примерно за каждые 10 попыток, игрок улучшает свой результат на 1. Учитывая, что вопросов в игре (предложений) очень много, то это нормальный наклон (0.1).

Самые популярные предложения Абая и Робота

 

Топ предложения Абая

1. Жас бала ұялса, жерге ене жаздаушы еді, бұлар неден болса да ұялмайды екен.

2. Оған егер бір еліксе, адам баласы құтылмағы қиын.

3. Ол ар, есті білмейді, намысты білмейді, кең толғау, үлкен ой жоқ, не балуандығы жоқ, не батырлығы жоқ, не адамдығы жоқ, не ақылдылығы, арлылығы жоқ.

4. Және де білім, ғылым кедейге керегі жоқтай-ақ: «Бізді не қыласың, ана сөзді ұғарлықтарға айт!» дейді.

5. Жас бала анадан туғанда екі түрлі мінезбен туады: біреуі - ішсем, жесем, ұйқтасам деп тұрады.

6. Естіген нәрсені ұмытпастыққа төрт түрлі себеп бар: әуелі - көкірегі байлаулы берік болмақ керек; екінші — сол нәрсені естігенде я көргенде ғибрәтлану керек, көңілденіп, тұшынып, ынтамен ұғу керек; үшінші — сол нәрсені ішінен бірнеше уақыт қайтарып ойланып, көңілге бекіту керек; төртінші - ой кеселі нәрселерден қашық болу керек.

7. Қайта, бала күнімізде жақсы екенбіз.

8. Әуелі иманды түзетпей жатып, қылған ғибадат не болады?

9. Егер осы сөз бойына лайық кісі көрінсе, ақылы жоқ болса да, қайратыменен-ақ кісі айдындыратұғын адам болғаны ғой! Егер шын айғайды көргенде, кірер жерін таба алмайтұғын дарақы, жұртты осы сөзімен айдындырамын, «мына кәпірден кісі шошитұғын екен» дегізіп айдындырайын деп айтып отырған құр домбытпасы болып, босқа қоқиып отырса, соны не дейміз?

10. Бұлар - тәннің құмары, бұлар болмаса, тән жанға қонақ үй бола алмайды.

 

Топ предложения Робота

1. Анасы, мал іздеуге ол болса, оның басынан пәлелетін тауып, мына байқұрын дестіп берсе, біреу түспеге біреулік те болса, басында неше мына кісімен үйренеді, ешнәрсеге жарамас па?

2. Оның үшін сол малды хакім етті адам болады.

3. Жә, күлгі мақтан, дүниенің жазығы жоқ» дейді.

4. Бәрі бірдей болмайды.

5. Егер надан кірден алла тағала тағаланы да білмейді, қараға күлген қызық көрмей ме?

6. Басында жаратып жүрсе, яки жамағат, сол мал табамын деп жүріп үйрену көрді демекке керек.

7. Ол азық түрлі болса, басына тауып, сол аталып, ғылым көпті, не ниһаятсыз, арзуды біліп ұят шығарады.

8. Бірақ әйтпесе құдайға салынса, оның үмітін ортақ, ағайын- жүрген несі таба алмадың.

9. Сонда қазақ көргенде, қайраты болу керек .

10. Малды көпке төзді өттілік болса, қайта, бір табарлық қыларына қор болады.

 

22-ое слово – это самое популярное слово Абая, а 27-ое – самое сложное.

Архитектура игры

Мы использовали нейронные сети, чтобы создать "новые слова Абая", то есть наш Робот – это просто множество предложений, сгенерированных от самих слов Абая.

Наша игра доступна как на Android так и на iOS.

В backend мы использовали Flask (Python) и MySQL

Сервер находится на DigitalOcean

Для анализа мы использовали Python (Jupyter Notebook)

Если вы дочитали до конца

Во-первых спасибо. Во-вторых скорее всего вам эта тема возможно нравится, поэтому я очень сильно хотел бы вывести больше интересных выводов, трендов и тд из этих 50,000 данных. Если у вас есть идеи, то прошу писать в комментариях или в личку.

P.S. Вот ссылка на нашу игру: abaiapp.github.io

Contributors

@codefathers предложил попробовать построить график "learning curve" нормализовав # of attempts, чтобы было удобно сравнивать пользователей с разным кол-вом попыток. Вот что получилось:

Нормализованный learning curve для всех пользователей

@Mononoke предложила очень хорошую идею. Вначале я выводил топ города/области сортируя по сумме баллов набравших люди с того или иного города/области (почему я выбрал сумму?) ).

Почему неправильно сортировать по сумме баллов? Потому что это число будет СИЛЬНО зависеть от кол-ва игроков. Скажем в Алматы игроки получили [1,1,1,1,1,1,5] баллов, а в Астане [1,3,3,3]. То получится, что в Алматы(сумма=11) лучше Астаны(10), хотя это не так. В Астане хоть и меньше игроков, но они лучше играют.

Почему неправильно сортировать по среднему баллу? Средняя на первый взгляд очевидно лучше суммы. Но она имеет свои подводные камни. Опять приведем пример. Скажем игроки Алматы набрали [1,1,1,1,1,100], а игроки Астаны [10,10,10,20]. Опять получается, что Алматы(среднее=21) лучше Астаны(среднее=12.5), хотя я не согласен с этим. Мы сравниваем ВЕСЬ город, а не только самых умных. Поэтому среднее нам не подойдет.

А как тогда правильно сортировать города? На самом деле, можно это делать по разному, ну и результат будет разный. Я сортировал по медиане, и убрал города, у которых меньше 10 игроков.

Почему правильно я сортировал по медиане баллов? Если взять предыдущие примеры и сортировать по медиане, то Астана лучше Алматы. Довольно справедливо. Потому что, медиана города -- это такое число p, что баллов у половины всех игроков города меньше p, а у другой половины больше p.

12