Как натренировать нейросеть

0
16

Сервис для обучения нейронных сетей без кода

С учителем

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

Как только данные подготовлены, можно запускать тренировку модели. Здесь пользователь может согласиться с настройками по-умолчанию, которые подходят для большинства кейсов. А может выбрать фреймворк, конфигурацию (Tensorflow или PyTorch), базовую модель и типы аугментации и пр. В системе предусмотрена возможность конфигурации для более продвинутых пользователей.

Сервис должен помочь в автоматическом режиме с минимальными трудозатратами и знаниями бизнес пользователю натренировать нейронную сеть и выгрузить ее для использования в необходимой инфраструктуре (мобильное приложение, веб сервис, камера, IoT устройство и пр.) для разработчиков.

Метод обучения с учителем ( supervised learning) аналогичен получению знаний в школе, где нейросеть выступает в качестве ученика, а человек — в роли преподавателя. Роль учителя заключается в том, чтобы подать на вход модели исходные данные и их «расшифровку » . По аналогии с математическими задачами это будет «вопрос » и «правильный «ответ » (метка). Например, при обучении задаче классификации изображений каждой отдельной картинке будет присвоена метка, означающая класс изображения (например, кошка или собака на фото). Так происходит настройка параметров для минимизации ошибок между собственными предположениями и « правильными ответами» (метками). Сопоставляя их из раза в раз, нейронная сеть б удет самос тоятельно обучаться отвечать и на последующие запросы правильно уже без помощи человека.

По просьбе заказчика мы разработали дополнительную функцию — возможность генерации 3D-моделей. Она позволяет пользователям загружать фотографии любого объекта с различных ракурсов и получать подробную 3D-модель, которую затем можно использовать для 3D-печати.

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

Обучать нейронные сети выполнению задач можно по-разному: процесс развития навыков возможен с учителем или без него, а также с подкреплением. Каждый формат предназначен для решения конкретных задач: классификации, прогнозирования, распознавания изображения и так далее. Как выбрать оптимальный формат и чем между ними разница?

Но полученный вектор представляет собой неактивированное состояние (промежуточное, невыходное) всех нейронов, а для того, чтобы нам получить выходное значение, нужно каждое неактивированное значение подать на вход вышеупомянутой функции активации. Итогом ее применения и станет выходное значение слоя.

Датасет

Мы сделали MVP, который уже используется заказчиком для решения своих задач. Постепенно появляются пожеланию по доработке системы на основе обратной связи от первых пользователей. У клиента в планах уже следующий этап по расширению поддерживаемых типов ml-задач (будем добавлять решения OCR задач и сегментацию изображений).

Говоря проще, ИНС можно назвать неким «черным ящиком», превращающим входные данные в выходные данные. Если же посмотреть на это с точки зрения математики, то речь идет о том, чтобы отобразить пространство входных X-признаков в пространство выходных Y-признаков: X → Y. Таким образом, нам надо найти некую F-функцию, которая сможет выполнить данное преобразование. На первом этапе этой информации достаточно в качестве основы.

При этом нередки ситуации, в которых модели необходима хотя бы частичная «разметка» данных для результативной работы. В этом случае потребуется частичное привлечение учителя: он заранее размечает часть данных самостоятельно , а остальные подаются модели в неразмеченном виде. Этот вариант не только повышает эффективность «тренировок» модели, но и значительно ускоряет их.

Один нейрон может превратить в одну точку входной вектор, но по условию мы желаем получить несколько точек, т. к. выходное Y способно иметь произвольную размерность, которая определяется лишь ситуацией (один выход для XOR, десять выходов, чтобы определить принадлежность к одному из десяти классов, и так далее). Каким же образом получить n точек? На деле все просто: для получения n выходных значений, надо задействовать не один нейрон, а n. В результате для каждого элемента выходного Y будет использовано n разных взвешенных сумм от X. В итоге мы придем к следующему соотношению:

ЧИТАТЬ ТАКЖЕ:  Нейросеть людей которых нет

Если первый этап еще можно сделать, не имея специального опыта и знаний, то остальные этапы — никак. Построение модели иногда требует особенных навыков, и как правило, очень мощное железо. А проанализировать качество модели может только тот, кто понимает метрики и умеет их применять.

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

Функция активации

Но ее легко получить путем увеличения количества нейронов. Давайте попробуем реализовать обучение с тремя нейронами в скрытом слое и одним выходным (выход ведь у нас только один). Чтобы все получилось, создадим массив X и Y, имеющий обучающие данные и саму нейронную сеть:

Прохождение игр — часто встречающаяся задача, которую решает обучение с подкреплением. Так, например, алгоритм Q-обучения (Q-learning) часто используется в играх — например, для тренировки агента прохождению знакомой всем «Змейки » . Другой пример — нейросетевая модель AlphaGo, которая обучена играть в го на уровне мировых чемпионов.

Обучение с подкреплением (reinforcement learning) используется в ситуациях, когда нужно обучить нейро сеть задаче с четкими результатами на выходе. Этот формат подготовки ИИ-моделей проходит через взаимодействие с окружающей средой и работает следующим образом: система получает на вход некоторые неразмеченные данные и обрабатывает их случайным образом, в ответ на что получает положительные или отрицательные отзывы, в зависимости от результатов работы. Для обучения с подкреплением не нужен полный контроль человека или заранее и полностью размеченный набор данных — важно сформулировать задачу и оценить те решения, которые предпримет система.

Обучение с учителем используется для нейросетей , которые в дальнейшем будут решать задачи классификации: получать на входной слой большой объем данных и разделять информацию по заданным категориям. Этот механизм лежит в основе разных функций: модель может в будущем специализироваться и на генерации текста или продолжении предложений (нейронная сеть LSTM), и на идентификации и классификации картинок (сверточная нейронная сеть CNN). Кроме того, обучение с учителем позволяет модели успешно работать с прогнозами: оценивать динамику спроса на товар и менять цену и другие количественные характеристики для максимизации выручки или строить прогноз на бирже.

Давайте внимательно посмотрим на него. Вышенаписанная формула — это не что иное, как определение умножения матрицы на вектор. И в самом деле, если мы возьмем матрицу W размера n на m и выполним ее умножение на X размерности m, то мы получим другое векторное значение n-размерности, то есть как раз то, что надо.

Для уменьшения ошибки нейронной сети надо поменять весовые коэффициенты, причем послойно. Каким же образом это осуществить? Ничего сложного в этом нет: надо воспользоваться методом градиентного спуска. То есть нам надо рассчитать градиент по весам и сделать шаг от полученного градиента в отрицательную сторону. Давайте вспомним, что на этапе прямого распространения мы запоминали входные сигналы, а во время обратного распространения ошибки вычисляли дельты, причем послойно. Как раз ими и надо воспользоваться в целях нахождения градиента. Градиент по весам будет равняться не по компонентному перемножению дельт и входного вектора. Дабы обновить весовые коэффициенты, снизив таким образом ошибку нейросети, нужно просто вычесть из матрицы весов итог перемножения входных векторов и дельт, помноженный на скорость обучения. Все вышеперечисленное можно записать в следующем виде:

Главная проблема такого формата обучения — необходимость сбора и обработки огромных массивов информации на соответствующих высоких мощностях. Это длительный, дорогостоящий и технически сложный процесс, позволить себе который могут только крупные компании, не говоря уже о частных лицах. Кроме того, обучение с учителем подходит далеко не для всех типов данных. Оно предполагает, что в дальнейшем система будет работать только с информацией, аналогичной обучающему датасету, иначе эффективность ее функционирования точно предсказать невозможно.

Для того чтобы обучение с подкреплением было результативно, важно пройти много предварительных тренировок. Долгий период развития навыков модели и необходимость большого количества примеров называют главными минусами этого формата. Если в будущей работе нейросеть столкнется с незнакомой ситуацией, то реакция будет непредсказуема.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь