Kaggle: Digit Recognizer (MNIST) точность 0.99585

Продолжаю путешествие по занимательным землям Deep Learning.

В прошлый раз я учился заводить deep learning на локальной машине и делал совсем детскую, искусственную и неспецифическую для DL задачу.

В этот раз решил попробовать что-то более диплёрничное — научиться решать задачи на Kaggle. Есть предположение, что Kaggle — самый простой и интересный способ учить DL.

На этом сервисе есть задачи для новичков, одну такую — Digit Recognizer — я выбрал для тренировки. Соревнование по распознаванию рукописных цифр из набора MNIST. Этот набор должны были встречать даже люди далёкие от ML.

Notebook с решением и комментариями опубликован на github. 

На момент отправки решение занимало 467 место из ~7000. На мой взгляд неплохой результат, учитывая, что первые мест 150 занимают читерские решения. MNIST — общедоступный набор данных, их можно скачать вне kaggle и залить в качестве решения готовые ответы, или переобучить сеть на полном наборе.

Читать далее

Просто о связи линейной алгебры и нейронных сетей

Нашёл серию статей с детальным рассказом о принципах работы нейронных сетей. Начиная от векторного произведения, через матрицы к персептрону и нейронам, Понятно, доступно и последовательно — без скачков через куски теории. С примерами на Python.

  1. Linear Algebra
  2. Inner Product Spaces
  3. The Perceptron, and All the Things it Can’t Perceive
  4. Neural Networks and the Backpropagation Algorithm

Остальной блог тоже интересен. У автора много вводных статей на математические и программистские темы.

Заметки о резюме в геймдеве

На gamedev.ru пользователь AlexeyLarin создал тему с интересными вопросами о резюме программиста в геймдеве. Я ответил на форуме, а тут приведу развёрнутые версии ответов.

Читать далее

Нельзя просто так взять и запустить Deep Learning

Продолжаю разбираться с Deep Learning

Решил попробовать его на практике: сам придумал лабу, сам сделал, сам себя похвалил.

Целью было построить простейшую, но более-менее полную цепочку обучения модели с помощью Keras+TensorFlow и запустить её на своей машине.

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

А в этом посте покритикую инфраструктуру всего этого.

Читать далее

Жизнь и работа с моделями

Масштабная модель кораблика. Источник.

Продолжение жизни и работы с ошибками — обсудим штуки на уровень выше.

Эссе получилось большим, но точно найдутся упущенные моменты. Если я что-то забыл — пишите. Буду благодарен и за более интересные примеры.

Итак. Давайте подумаем, как мы предсказываем будущее всякое. 

Предсказаниями мы занимаемся постоянно — это буквально суть нашего существования:

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

Это примеры «гарантированных» предсказаний, но даже они могут не исполнится:

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

Фактически, мы никогда не знаем актуальное состояние мира вокруг нас:

  • Не воспринимаем весь спектр информации об окружении, например, не видим в инфракрасном свете.
  • Сигналы до органов восприятия и от них до мозга передаются не мгновенно.
  • Мозг тоже работает не мгновенно.

Мы даже не обладаем всей информацией о прошедших событиях.

Поэтому.

Каждое наше решение и действие основывается на предположениях о прошлом, настоящем и будущем. 

Штуки, которыми мы создаём предсказания, называются моделями.

Читать далее