Функция потерь в обучении

На выходных учил жену кататься на беговых лыжах (она второй раз в жизни на них встала). И у нас возник забавный спор про теорию обучения. “Отталкиваться палками, – говорю, – нужно непрерывным движением, направленным вдоль тела сверху-вниз, назад. Вот смотри, у тебя палки загораживают лыжи во время такого действия – значит ты что-то делаешь неправильно. Старайся не допускать такого”. Жена же у меня – хирург. И таких объяснений не понимает. “Скажи мне лучше, какими мышцами толкаться. Вот ты делаешь это движения, что ты используешь?”. И тут в ступоре уже я. Я не врач. Я даже не знаю, где у меня мышцы и чем я толкаюсь.

Neural+network+art+part+1+source+http+wwwboredpandacom+inceptionism+neural+network+deep+dream+art+man+combines+random+peoples_695771_5900164

Зато я понял, что ровно такой же казус встаёт при обучении нейронных сетей. Сеть можно обучать набором внешних умозрительных правил, расставив там Softmax/EuclidianLoss. “Видишь что рука заслонила лыжу – попробуй сделать что-нибудь по-другому”. А можно заложить куда более глубокую модель в которой персонализировать цену ошибки каждого конкретного случая. “Если запущена сначала мышца 1, а потом мышца 2 – ошибка”. Тут, конечно, сложнее. Нужно придумать такую модель. Зато эффективнее. В статье – небольшая подборочка интересных решений, которые мне попадалась и которые били существующие по эффективности за счёт персонализации функции потерь.

Continue reading “Функция потерь в обучении”

Post-Residual

Мне всегда любопытно наблюдать как движется развитие нейронных сеток и искать какие-то соответствия тому, как обработка инфы устроена в мозгах. Особенно прикольно в этом отношении смотреть на пост-ResNet сети. Вроде как и хороший результат, но привязки к мозгам – никакой. Просто экстраполяция идей.  Residual connection заработали? Ладненько, ладненько. Как мы можем запихать ещё кучу в нашу сетку?

Continue reading “Post-Residual”

Про детектирование объектов

Наткнулся на интересную работу, которая во многом подтверждает мои мысли, высказанные ещё в начале года. Мысли были о том, что сетка YOLO – очень интересный шаг в детектировании объектов и что стоит идти по этому пути.

Новая работа называется SSD (Single Shot MultiBox Detector) и сделала её российская компания(?) deepsystems.io (не доглядел, сделали конечно не они, это просто обзор от них). По сути, вся работа про то, как довести до ума YOLO. Результаты у них получились неплохие:

1

Continue reading “Про детектирование объектов”

3D

Последний непобеждённый рубеж в машинном зрении, куда ещё не добрались нейронные сети – 3D. Но он потихоньку трещит. Всё началось с алгоритмов восстановления глубины, которые появились в 2015 году. Кстати, на статью стоит обратить внимание – она от группы ЛеКуна.

1

Continue reading “3D”

СЛАВА РОБОТАМ УБИТЬ ВСЕХ ЧЕЛОВЕКОВ

А между тем reinforsment learning достиг новых высот. Уже в Doom рубает (в Altari он начал играть всего пол года назад).  Пошёл читать как они это делают. Пока что два главных вопроса:

  • Это Realtime?!
  • Как они это обучают и чем?! Какова функция пользы??

Чуток разобрался

NVIDIA DIGITS

В ближайший месяцок попробую опубликовать на хабре несколько статей по DIGITS. По-моему это именно то направление куда должны двигаться все нейронные сети. “Я не хочу прогать, я хочу чтобы всё работало!”. Конечно, там пока нет многого функционала. Пока что многие трюки делать нельзя. Но уже 90% рутины, связанной с сетями фреймворк берёт на себя без единой строчки кода. Пользователю доступен набор менюшек, в которых он должен выбрать что как и зачем будет распознаваться:

Есть десятки способов загрузки данных, разные способы выгрузки-обработки-тестирования. Шик. При этом есть далеко нетривиальные решения: свёрточные сети для поиска большого числа однотипных объектов.

Про научруков

В России есть одна большая и комплексная проблема. Можно было бы сказать, что это научные руководители, но это не совсем так. Проблема куда больше и она не в них. Обычно она случается на кафедрах крупных институтах, на базовых предприятиях, в гос-фирмах.
Вы студент/молодой работник, который попал в институт/на предприятие сразу после работы-учёбы. Или там проходили учёбу. И у вас есть научник. Классный харазматичный дядька с потрясающими знаниями и богатым жизненным опытом. Он даёт вам понять, что вы очень ценный кадр. И в следующий проект, который вот-вот начнётся он вас берёт своим главным соисполнителем. Что это ваш реальный шанс. Большая зарплата, своё исследование, диссертация, все дела.
Да и вообще, таких проектов по словам научрука он уже десяток закрыл. Но есть один маленький нюанс. Договора пока нет. Поэтому зарплаты нет. Ну, либо базовая ставка лаборанта. Тысяч 10-20 рублей. Знакомая ситуация?
Я видел таких ребят десятки. Каждый из них верит своему научруку. Верит, что тот через месяц подпишет таки заветную бумажку и деньги потекут рекой. Может даже верит на протяжении пары лет. Хотя изначально обещалось 1-2 месяца.
И везде всё одно и то же. И причина одна и та же. Вы хоть раз пробовали получить грант или заключить контракт? Это очень сложно: почти нереально. Шанс, что развернут/застопорят есть на каждом шагу. Может даже и дадут грант. Но не через 2-3 месяца, а через 5 лет.
А что научруки? Это люди старой закалки. Им говорят “деньги будут” – они так правда думают. Они попадают в ту же ловушку что и их студенты. И им куда сложнее перестроиться.
Конечно, бывают сволочи: бывают те, кто прекрасно понимает ситуацию и просто держат при себе полуголодного студента и аспиранта. Бывают те, кто получает нормальную зарплату. И считают, что когда они были молоды, то тоже не много получали. Так что студент должен быть доволен.

Но вообще ситуация крайне ненормальная. Очень жаль таких ребят. Всегда хочется чтобы они начали развиваться и анализировать происходящее вокруг сами. Но такое редко происходит.

Новые результаты по VOC2012 + размышления на тему

Оказывается, неделю назад были опубликованы новые результаты по VOC2012. Статей по топовым из них, судя по всему, ещё нет. Единственное дополнительное упоминание о первом в списке алгоритме “SegModel” есть в конкурсе CityScapes dataset. Про него я думаю, ещё упомяну вскоре. Топовые из открытых статей – Adelaine (первый подход, второй подход). Deep Parsing Network. Всё это ещё стоит подробнее исследовать. Но в голову уже закралась одна смешная мысль. В 2012-2014 годах новая эпоха свёрточных нейросетей приходила на волне “больше никакого ручного мэнеджмента фич!”. “Никаких больше сложных логических выделений фич на уровнях!”. “Изображение должно обрабатываться целиком сеткой!”.
Continue reading “Новые результаты по VOC2012 + размышления на тему”

Библиотека dlib

*На дворе 2020 год. И уже не нужно использовать Dlib. Нигде. Вот тут я сделал популярный рассказ на что нужно переходить, что на порядок лучше и работает в любых условиях – https://youtu.be/2fnNhYCpToE
А вот тут моя краткая заметка почему для ComputerVision не читать статьи старше 3 лет – http://cv-blog.ru/?p=327

Есть одна замечательная библиотека, которая известна куда менее, чем OpenCV, но несущая в себе ряд замечательных функций + на полной OpenSource лицензии. Это Dlib. Библиотека включает в себя много чего, например: несколько реализаций SVM, несколько реализаций нейронных сетей, подборку функций матричной геометрии, подборку алгоритмов градиентного спуска, SURF|HOG.

Continue reading “Библиотека dlib”