Или как правильно спрятаться в нейросети
Курица снесла яйцо.
Сам процесс выглядит ужасно.
Результат съедобен.
Массовый геноцид кур.
В этой статье будут рассмотрены:
- Где, как и почему можно БЕСПЛАТНО, СЕЙЧАС и НЕ БЫСТРО получить немного качественного самообразования в области работы с нейронными сетями;
- Будет описана логика рекурсии и рекомендованы книги по теме;
- Будет описан список основных терминов, которые необходимо разобрать на 2-3 уровня абстракции;
- Будет предоставлен ipynb-блокнот, содержащий необходимые ссылки и основные подходы;
- Будет уникальный саркастический юмор;
- Будут описаны некоторые простые закономерности, с которыми вы столкнетесь при работе с нейронными сетями;
- Введение об обучении нейронным сетям
- Аппаратное обеспечение, программное обеспечение и конфигурация для наблюдения за курами
- Бот , который постит события из жизни кур - без нейросети
- Маркировка наборы данных
- Работающий модель для распознавания кур в курятнике
- В результате получился работающий бот, распознающий кур в курятнике.
Философское введение начинается здесь
С чего начать? Название спойлера Вы можете начать с этого то, что написала моя девушка, прекрасно статья о моем путешествии и установке системы мониторинга кур в курятнике.За что? Потому что прикладная задача мотивирует гораздо больше, чем задачи на Kaggle, где тоже все далеко от идеала (половина задач отсутствует, выигрышные архитектуры — это стеки из 15 моделей, переобучение для поиска немасштабируемых паттернов и т. д.).
Моя задача — написать нейронные сети и код на Python, которые будут различать кур, а, возможно, и логировать события из жизни кур в нашем любимом СУБД .
В процессе вы сможете узнать много интересного и, возможно, даже изменить свою жизнь, поделившись своей мини-работой.
Это приятно, полезно и весело.
Вы также можете начать с , что в принципе сейчас на рынке технологий новая ветвь «пузыря» — все вдруг побежали «к ИИ».
Раньше все бежали в IT, в онлайн, в BigData, в Сколково, в AR/VR. Если сидеть в тематических русских чатах, то там люди обычно либо пишут всё с нуля на { вставь свой экзотический язык } или сделать одноразовых чат-ботов, освоив средства пиара корпораций.
Но если вы последуете так принципы в своем самообразовании, то вам нужно учиться у ярых фанатов своего дела, которые делают то, что делают, не ради выгоды, а ради красоты .
И тут мне на помощь пришел неизвестный человек и вставил строчку в мой файл , где я собрал обучающие полезности в области работы с данными.
Что удивительно, так это то, что эти Люди (fast.ai - ссылка, которую кто-то вставил) проделали просто гигантскую работу по популяризации и обучению даже с нуля, следуя принципу инклюзивность и целостность образования против эксклюзивность и принцип «башни из слоновой кости» .
Но обо всем по порядку.
Коротко о подходе к образованию.
Сами авторы расскажут вам лучше меня.
Я как-то видел, как в чате ОД (если вы знаете, что это такое, то поймете) сформировалась команда, занявшая второе место в конкурсе по распознаванию спутниковых изображений, но общее количество человеко-часов, необходимых для такого выступления, не превышает не мотивируют участвовать в подобных соревнованиях, учитывая несовершенство мира.
Также в принципе не внушает энтузиазма соотношение вознаграждения исследователей к общей стоимости конкурса.
Поэтому все описанное ниже делалось для нейро-курятника и только для него.
На всякий случай уточню, что НЕ входит в мои задачи: Очень толстый слой сарказма
- Написать курс, чтобы потом продавать лиды от его молодых выпускников на Mail.ru xD;
- Писать о том, как мне нравится Caffe против Theano или Tensorflow — все это не имеет никакого значения для промышленного профессионального уровня, если только вы не являетесь опытным исследователем в этой области и не пишете научные статьи;
- Напишите нейронные сети с нуля на {вашем экзотическом языке};
- Продать вам что-то за деньги (только идеи и бесплатно);
На этом философское введение заканчивается.
Описание как научиться обучать нейронные сети
TLDR (в порядке установки/обучения от простого к сложному) Если вы хотите эффективно и современно обучать нейронные сети для прикладных целей (а не переписывать все в {X} или собирать ПК с 10 видеокартами), то вот короткое и очень рекурсивное руководство: Список здесь- 1. Изучите хотя бы базовые понятия:
- Линейная алгебра.
Цикл вводные видеоролики.
Начни хотя бы с них;
- Математический анализ.
Цикл вводные видеоролики;
- Почитайте о градиентном спуске.
Здесь обзор методы и здесь визуализация .
Остальное вы найдете сами на курсах;
- Линейная алгебра.
- 2. Если вы ничего не знаете ни о чем из списка, будьте готовы потратить 200-300 часов своего времени.
Если только нейросети и/или питон — то 50-100 часов;
- 3. Приобретите себе Ubuntu или ее аналог (да здравствуют комментарии в стиле «не работает»).
Мой краткий обзор гид (Интернет поможет найти более подробные технические руководства).
Конечно, можно и через виртуалки, докер, мак и т.п.
извратить;
- 4. Устанавливаем третий питон (обычно уже из коробки, 2017 года).
Именно третий.
Но лучше сказать это еще раз.
Не пытайтесь менять системный питон в Linux — всё сломается;
- 5.Если вы не очень знакомы с питоном, то (все, опять гугл):
- Самый простой и бесплатный источник "базового" уровня и бесплатный (никаких курсов по 30-50к руб, а потом идти работать инструктором на те же курсы за 30к руб, когда якобы заявлена средняя зарплата 100к руб) );
- Идеальный вход точка рекурсии по использованию Python для работы с данными;
- 6. Установите Юпитер блокнот и это расширение ( вам нужно свернуть код ).
Это значительно сокращает время работы.
Это правда ;
- 7. Купите себе видеокарту (сейчас дешевле купить, чем арендовать - начало 2017 года):
- 8. Лучшие образовательные (БЕСПЛАТНЫЕ) ресурсы:
- www.fast.ai - вход точка рекурсия.
В блоге, видео, на форуме, в вики и заметках есть безумное количество информации;
- Великолепный книга о нейронных сетях и первом код из него в третьем Python (погуглите, может кто-то весь код напутал, я после первых двух глав поленился);
- Поразительнй хорошо Эндрю Нг и он интерпретация в питоне;
- www.fast.ai - вход точка рекурсия.
- 9. Блокнот Jupyter ( HTML ipynb ), который:
- Содержит иерархическую структуру ячеек, каждая из которых описывает, что и почему делается;
- Основные включает, утилиты и библиотеки разделены по типам;
- Предоставляет ссылки на основные источники, необходимые для понимания происходящего;
- Сахар для работы с Керасом предоставляется (подробнее без продаж).
здесь , сами люди из fast.ai рекомендуют);
- Для набор данных точность предсказания класса ~80% получена для машин, проезжающих за окном (рандом дает 50%, но картинки хреновые и маленькие);
- Для набора данных с конкурса отвлеченное вождение полученная точность предсказания для 10 классов составляет ~50% и ошибка определенно входит в топ-15-20% решений в мире;
- Использование визуализаций для понимания того, что изучает сеть;
- Использование обучающего набора из 300-500 изображений, чтобы быстро понять, какие параметры искажения изображения подходят лучше всего;
- Использование набора тестовых данных (или перекрестной проверки) для повышения точности.
Таких картинок нужно добавить не более 25-30% (полуконтролируемое обучение);
- Использование тонкой настройки imagenet в качестве дополнительной опции модели;
Если вы дочитали до этого места, то вот курица, с которой сняты подозрения, что она не несет яйца.
Из-за этого в суп он пойдет гораздо позже.
Теперь опишу то, что показалось интересным из процесса непосредственно обучения нейронных сетей (не тех, что в голове, а тех, что на Python): Список здесь
- Набор данных с автомобилями показал, что если картинки маленькие и выборка классов необъективна (один класс больше другого), то модель хорошо идентифицирует только один класс;
- Начните с небольшого набора, чтобы модель могла обучиться за несколько десятков секунд, и настройте метапараметры для изменения изображений;
- Если у вас есть какое-то приложение распознавания движения + нейросети, то лучше сразу обрезать картинки в open-cv, не оставлять их на потом;
- Нейронные сети обладают так называемым эффектом «легкого выхода», когда функция стоимости может оставаться в локальном минимуме относительно долгое время, поскольку предсказать 50%-ную вероятность постоянного попадания в класс 1 проще, чем учиться;
- Сначала попробуйте простые архитектуры и постепенно увеличивайте сложность.
Если обучение идет медленно, возьмите небольшую выборку или протестируйте свою модель;
- Простая архитектура + попробуйте разные метапараметры (скорость обучения);
- Если функция стоимости вообще не уменьшается, значит где-то в модели досадная опечатка.
Самый простой способ найти его — сравнить свою модель с моделью другого человека;
- Сейчас на программном уровне (керас) уже есть огромное количество современных возможностей, таких как:
- Нормализация изображения;
- Искажение изображения;
- Выбывать;
- Извилины;
- Итераторы для последовательного чтения файлов;
- Из интересного (не из области укладки 15 моделей) в соревнованиях Kaggle я бы отметил использование комбинаций таких вещей, как:
- Предварительная обработка изображения, поиск контуров и форм с помощью open-cv;
- Сверточные нейронные сети для базовой классификации;
- Нейронные сети для создания метаданных о картинках — например здесь сначала ищут головы китов и только потом опознают кита;
- Собрано здесь интересные вещи о новейших архитектурах на Kaggle
Вот набор картинок
Название спойлераПервые 285 машин имеют скромные размеры пикселей + всё размыто.
Когда хочется быстро обрезать картинки, но не хочется думать, рождаются вот такие некрасивые решения
Разница в точности между обучением и проверкой намекает на то, что набор данных искажен, небольшой и в целом.
Но это хороший показатель прогресса.
Не цыплята, а виновники торжества.
Очень размыто - в движении
Радости нет предела, когда жлобский код, написание которого занял час, начал срабатывать и отключил машину.
На практике в памяти видеокарты либо достаточно места, либо не хватает места сразу.
Сложно подобрать размер картинки и размер партии, чтобы можно было съесть рыбку и.
Эмпирическое правило: сверточные слои требуют много памяти, а плотные слои требуют много времени.
Сравните полезную площадь на этой картинке.
А сколько там полезных пикселей =) Да у курицы голова больше машины (в пикселях) - моя видеокарта пострадает
Не посчитал - память кончилась и все упало.
Функции очистки, кроме перезагрузки, я пока не нашел.
Теги: #нейронные сети #наука о данных #куры #нейронные сети #глубокое обучение #образование #python 3 #с открытым исходным кодом #python #Интеллектуальный анализ данных #математика #Машинное обучение
-
Это Не На Почте…
19 Oct, 24 -
Найдите Их По Более Низким Ценам В Интернете
19 Oct, 24 -
История Коммерческих Кассовых Аппаратов
19 Oct, 24 -
Полноэкранный Режим Окна Vim В Windows
19 Oct, 24 -
Установка Gitolite На Сервер Centos
19 Oct, 24