Кратко: Мы провели серию экспериментов по определению уровня IQ сорока пяти кошек, и сделали фотографии их мордочек. На основе полученных данных была создана нейронная сеть, определяющая IQ кошки по фото. Нейронная сеть интегрирована в мобильное приложение и опубликована в GooglePlay.
Далее подробное описание, как и зачем мы это сделали. Ссылки на приложения в конце поста.
Описание идеи.
Всем привет, и спасибо, что вы читаете мой пост! История создания данного приложения началась в начале 2018 года, а именно – вечером первого января. После веселого празднования окончания 2017го, в стенах нашего общежития наступило затишье, около 8ти утра спали уже почти все. После сбора на обед (около 17-00) и трапезы, состоящей из салатика оливье и светлого пива, мы продолжили душевные беседы об окружающем нас мире. В какой-то момент ко мне подошла кошка по кличке «Шапка», живущая у моих друзей, и начала обнюхивать мою руку, лежащую себе спокойно на кровати. Т.к. у меня аллергия на кошек, да и вообще, т.к. «Шапка» мне всегда казалась достаточно туповатой, я отодвинул её от себя с фразой «беги беги, тупое животное». Реакция хозяина кошки была молниеносна:- Моя кошка будет поумнее многих. – Как в последствии окажется - справедливо, заметил её хозяин.- Как это ты определил? Твоя кошечка еще ни разу не удивила меня своим IQ…- Далее последовала долгая беседа и когда остатки торта были окончательно съедены за чаем, все присутствующие пришли к выводу, что:
- Нужно провести сравнительный анализ IQ кошек и узнать, на сколько «Шапка» превосходит своих собратьев.
- Чтобы данные по IQ не пропадали даром, хорошо бы собрать как можно больше дополнительной информации о всех кошках в этом эксперименте для поиска возможных корреляций.
- Написать нейронную сеть, которая сможет определять IQ кошки по фото.
- Сделать все в виде мобильного приложения.
Я не сразу понял, какой масштабный эксперимент мы придумали, но отступать было некуда – вызов был брошен.
Как мы определяли IQ кошечек и собирали данные.
Для того, чтобы определять IQ кошек было решено использовать Лабиринты Хебба-Уильямса.
Hebb D. O., Williams K. A method of rating animal intelligence //The Journal of general psychology. – 1946. – Т. 34. – №. 1. – С. 59-65.
Лабиринты различного вида для тестирования памяти и способности к обучению животных используют уже как минимум 100 лет.
Clements, R. L. and R. E. Brown. 1999. 100 years of mazes in psychology and neuroscience. Society for Neuroscience Abstracts 25:261.
В нашем случае были сооружены лабиринты стандартного типа, впервые использованные Рабиновичем и Росволдом для тестирования крыс. Для тестирования кошек мы конечно увеличили размеры лабиринтов. (стороны лабиринта по 1.8 метра, высота стенок 30 см) Чтобы не придумывать что-то новое, мы использовали схему эксперимента Питера Ливеси 1966 года из Университета Западной Австралии.
Rabinovitch, M. S. and H. E. Rosvold. 1951. A closed-field intelligence test for rats. Can. J. Psychol. 5:122-128.
Livesey P. J. The rat, rabbit and cat in the Hebb-Williams closed field test of animal intelligence //Australian Journal of Psychology. – 1966. – Т. 18. – №. 1. – С. 71-79.
Кратко описать эксперимент можно следующим образом.
Для начала испытуемая кошка обучается проходить тестовые лабиринты (1-6). После того, как кошка привыкает к лабиринту и проходит критерий обучаемости (прохождение всех шести лабиринтов менее чем за 60 секунд) можно предлагать ей пройти тестовые лабиринты. Во всех двенадцати тестовых лабиринтах есть только один правильный путь прохождения. Части лабиринта, которые не ведут к заветной пище являются «ошибочными зонами» и за попадание туда животного, ему начисляются штрафные баллы. Остановки для ориентации в пространстве также учитываются. Полностью компьютеризированные системы оценки вместе с лабиринтами можно приобрести вот здесь ( https://www.tse-systems.com/ ), но мы использовали «ручной» метод сбора данных, т.к. масштаб эксперимента у нас не очень большой.
Чтобы у животного была инициатива к прохождению лабиринта, кошки три дня подвергаются ограничениям в питании. Также всех кошек перед экспериментам содержали по одинаковым правилам на нашей испытательной базе.
Когда все было готово для экспериментов (май 2018 года) стандартный кейс происходил следующим образом. Испытуемых кошек в составе четырех штук привозили в среду на испытуемую базу. Среду и четверг кошки привыкали к новой обстановке и содержались на ограниченном питании. Начиная с обеда пятницы и по вечер субботы кошек тренировали проходить обучающие лабиринты. В воскресенье происходил замер показателей на тестовых лабиринтах.
Список того, что мы записывали во время наших тестов настолько велик, что приводить его здесь бессмысленно, ведь даже не все данные мы обрабатывали в последствии. (Например, мы записывали величину атмосферного давления, влажность, температуру воздуха.) Но самое главное, что мы делали фотографии тестируемых кошек с пяти разных ракурсов.
На тестирование сорока пяти кошек нам понадобилось три месяца, двадцать две семьи с кошками и два приюта для животных, которые любезно решили нам помочь. Кошечка «Шапка» смогла набрать достаточно много баллов и была на 5м месте по уровню интеллекта всех протестированных кошек. Мой друг торжествовал.
Нейронная сеть и приложение.
После сбора данных, перед нами стоял сложный вопрос их обработки. Было решено использовать Matlab со встроенным в него Neural Network Toolbox. Одно из преимуществ его использования – возможность сгенерировать код для встраивания нашей нейронной сети в будущее приложение.
После двух месяцев проб и ошибок в обработке изображений, было решено использовать самоорганизующиеся карты Кохонена ( https://en.wikipedia.org/wiki/Self-organizing_map ) для того, чтобы соотносить фотографии кошек с количеством баллов, которые они набрали в наших экспериментах. Обучать нейронную сеть было решено на тридцати трех кошках, двенадцать отправились в тестовое множество.
Нам удалось кластеризовать фотографии кошечек на условной карте «IQ» и добиться достаточной сходимости в обучении самоорганизующихся карт уже на двадцатых эпохах обучения. Предварительно конечно пришлось нормировать результаты тестов в лабиринтах на привычную шкалу IQ от 0 до 200 баллов и представить фото кошек в виде кластеров «умных» «средних» и «глупых» котов.
Мы еще не написали подробную статья о том, как нам удалось создать эту нейронную сеть, поэтому если будет интерес к данной статье, мы будем торопиться с новой.
Когда дело дошло до создания приложения, было решено использовать фреймворк Corona SDK, как один из наиболее простых и быстрых освоении. Т.к. никто в нашей команде еще ранее не писал мобильных приложений. Быстрое знакомство с короной, минималистичный дизайн, интеграция нейронной сети, и вуаля - мы публикуемся в гугл плэй . Ссылки внизу, проверяйте, на сколько умен Ваш котик. Статью о создании приложения пока писать не планируем, если вам будет интересно – пишите, сделаем.
P.S. Мы прошли большой путь, и решили не публиковать бесплатных версий. Т.к. считаем, что каждый, даже глупый труд должен быть оплачен. Тем более, что стоимость нашего приложения не дороже чашечки кофе в Москве.
Еще раз ссылка на наше приложение :)