Форум программистов, компьютерный форум, киберфорум
Наши страницы
jvf
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Резкое повышение активности животного после использования нейронной сети

Запись от jvf размещена 01.06.2018 в 21:16

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

Хотел бы поделиться первыми результатами. Животное стала намного активнее. Всю еду теперь она получает лишь после того, как её распознает нейронная сеть. Каждая раз за распознавание животное получает немного сухого корма.

Соответственно, её жизнь до этой программы -- умираем от скуки и спим постоянно от скуки, потому что делать больше в квартире нечего. После -- она вынуждена часто ходить рядом с камерой, показывать себя, в результате чего она стала намного активнее. Просит чаще играть. Чаще двигается.

Считаю, что нейронная сеть повысила качество её жизни.

Когда мы говорим о людям, то у нас много возможностей развлечься, но у животных их намного меньше. Получалась такая забавная игрушка.

Точность очень высокая. Я ставлю следующий параметр: если нейронная сеть видит кошку с вероятностью большей, чем 70 процентов, то проигрывается звук и я даю животному лакомство. Нейронная очень редко даёт сбои, то есть пользоваться программой довольно комфортно.

Кошка теперь очень часто находится рядом с камерой. Даже ложится и иногда спит. Недавно у меня было всего 600 снимкой, а сейчас уже 1500. Набирать статистику теперь крайне просто.

Животное быстро поняло, в чём суть игры. Она садится перед камерой, и не просто ждёт, а уже требует корма с помощью мяу-мяу-мяу, словно бы говорит: "Я сделала своё дело, теперь давай мне корм".

Иногда происходят забавные случае: она может стучать лапками по двери, подпрыгивать, ложиться на спину на пол. То есть иногда она пробует разные варианты. Мы видим, что активность стала выше, и в то же время она немного чаще включает свой мозг, что тоже довольно приятно.

Чтобы написать программы, мы используем три класса:

1. motion_sensor -- класс, которые отвечает за камеру, работу с камерой, получения изображения с камеры, здесь же находится детектор движения
2. machine -- класс, в котором находятся алгоритмы машинного обучения для нашей программы
3. utils -- разные утилиты

Интересное видео о машинном обучении

https://www.youtube.com/watch?v=1waH...82zjQtt3T2Nkqc



1. Интересный факт из этого видео -- здесь говорится о том, что часто все люди берут для обучения, скажем, 70 процентов данных. Для валидации -- 15 процентов, для теста -- 15 процентов. Но на самом деле эти проценты зависят от количества данных. Если у нас 1 миллион изображений, то необязательно делать такую разбивку. Вполне можно взять и 10 тысяч данных, то есть всего 1 процентов для валидации и проверки.

Интересный текст о машинном обучении

В прошлом блоге я написал о технике Batch Normalization, но не объяснил, что это такое.

Мы нормализуем входящий слой в нейронную сеть. Например, у нас есть картинка, каждый пиксел -- это изображение с цифрой от 0 до 255 (три цифры). Мы делим каждую цифру на 255, чтобы получить значения от 0 до 1. Так поступают очень часто с разными данными. Это нужно, чтобы ускорить обучение.

Но мы можем сделать то же самое и для данных внутри скрытых слоёв, в результате чего обучение будет происходить быстрее.

Преимущества нормализации:

1. Мы можем использовать больший learning rate
2. Мы можем меньше использовать dropout, так как нормализации внутри скрытых слоёв добавляет немного шума, и, следовательно, мы можем снизить процент данных, которые теряем из-за dropout, что тоже хорошо.

Согласно статье "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift", написанной Sergey Ioffe и Christian Szegedy, они добились такой же аккуратности с помощью Batch Normalization, используя на 14 обучающих шагов меньше.
https://arxiv.org/abs/1502.03167

Batch Normalization - это больше техника для улучшения оптимизации.

Dropout - это больше техника для регуляризации.

Когда у нас большая база, то нам больше важна оптимизации, чем регуляризации, поэтому Batch Normalization более важна для больших баз данных.

Batch Normalization также применяется в архитектуре нейронной сети Google Inception.

Статью о Batch Normalization можно прочитать здесь: https://arxiv.org/pdf/1502.03167.pdf

В заключении этой статьи авторы пишут: "Мы представили новый механизм для значительного ускорения обучение глубоких сетей".

В комментарии для соревнования Kaggle для набора MNIST написано: "Ваш скрипт действительно полезный. Я тренировал мою модель без BatchNormalization и augmentation. Добавление этих двух методов сильно снизило время обучения".
https://www.kaggle.com/toregil/welcome-to-deep-learning-cnn-99
Размещено в Без категории
Просмотров 348 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru