Как сделать чтобы НС давала правильные ответы?
Ответ прост — нужно ее обучать. Однако, насколько бы прост не был ответ, его реализация в плане простоты, оставляет желать лучшего. Существует несколько методов обучения НС и я выделю 3, на мой взгляд, самых интересных:
Об Rprop и ГА речь пойдет в других статьях, а сейчас мы с вами посмотрим на основу основ — метод обратного распространения, который использует алгоритм градиентного спуска.
Машинное обучение как новая революция
Время на прочтение
Интеллектуальные алгоритмы машинного обучения уже умеют распознавать голос и изображения, занимаются аналитикой бизнес-процессов и используются в решении массы других задач.
Их внедрение позволило не просто облегчить процесс программирования, но и совершило настоящую революцию во многих отраслях человеческой деятельности. Сегодня предлагаем обсудить, что представляет собой машинное обучение и его алгоритмы и как заставить технику выполнять обязанности людей.
Машинное обучение немного напоминает ребёнка, который учится чему-то новому. Он получает знания, делает на основе этой информации обобщения, выводит понятия высшего порядка. И в следующий раз, когда сталкивается с этим же или подобным явлением, понимает, как реагировать на него и какие выводы из происходящего сделать.
Так, в процессе машинного обучения выделяются три основных элемента:
Есть большое количество подходов, согласно которым можно классифицировать способы машинного обучения, однако на практике для упрощения этого процесса принято разделять машинное обучение на три больших группы.
Обучение с учителем
Этот вариант очень похож на обучение в реальной жизни, только в данном случае в роли ребёнка выступает алгоритм, на вход которому подаются данные, которые он должен анализировать. Они уже заранее промаркированы, и главной целью алгоритма в процессе становится необходимость выявить все взаимосвязи и ответить на вопрос «Почему, собственно, всё именно так?»
Другими словами, алгоритм действует в рамках пары стимул-реакция, которую называют ещё «обучающей выборкой». На основе этих данных алгоритм должен научиться делать выводы и прогнозировать результаты, построив в процессе такую модель, которая позволяет дать для любого случая достаточно точный ответ.
Обычно в процессе такого обучения применяются метод опорных векторов, линейная и логистическая регрессии и другие.
Обучение без учителя
В процессе такого обучения алгоритм обладает достаточно большой степенью самостоятельности и не имеет на входе каких-либо предварительно размеченных данных. Он должен самостоятельно обработать весь этот массив, выявить имеющиеся в нём закономерности, а далее, основываясь на этих закономерностях, распознать типы данных и произвести их систематизацию.
Здесь можно применять такие алгоритмы, как алгоритмы k внутригрупповых средних (k means), анализ ассоциативных правил и основных и независимых компонентов.
Обучение с подкреплением
Этот тип обучения заключается в поиске оптимального пути. В наличии есть набор разных сценариев. Обычно такой тип обучения находится где-то между обучением с учителем и без него.
Если попытаться выразить основное назначение этого алгоритма, то можно сказать, что он предназначен для решения задачи выживания в реальной среде. То есть, например, поиск оптимального пути движения робота-пылесоса, ориентация в пространстве автопилота электромобиля и т. д.
Для решения этой задачи могут применяться алгоритмы SARSA и DQN, которые строятся на базе родительского алгоритма Q-learning.
Нейросети и машинное обучение
Понятие машинного обучения неразрывно связано и с понятием нейронных сетей. Такое название они получили, так как по своему принципу устройства и архитектуры напоминают устройство живых нейронов и их взаимодействие в живом организме.
Объединённые в сеть простые нейроны получают на вход сигнал, которым обмениваются друг с другом, в результате чего на выходе рождается определённое решение.
Ещё совсем недавно, в начале двухтысячных годов, аппаратные возможности не позволяли в полной мере использовать преимущества нейронных сетей для решения интеллектуальных задач. Однако сегодня нейронные сети достаточно широко применяются и позволяют решать вопросы, например, из области распознавания изображений, речи (в некоторых случаях даже эффективнее, чем сам человек).
Таким образом, нейросеть не программируется в классическом смысле, а обучается в процессе обработки входных данных и при постепенном подборе нужных коэффициентов.
Говоря об архитектурах нейронных сетей, можно выделить следующие:
Перцептрон. Впервые концепция подобной архитектуры была предложена ещё в 1943 году. Суть её заключается в том, что она моделирует то, каким образом человеческий мозг воспринимает информацию. Она представляет собой схему, состоящую из трёх типов элементов: сенсоров, ассоциативных элементов, реагирующих элементов.
В процессе анализа входной информации перцептрон позволяет сформировать связь между входными данными и тем, какая реакция должна быть на выходе. Например, это связь между зрительной картинкой и требуемой реакцией мышц (увидели препятствие – обошли его).
Свёрточная нейронная сеть. Подобная концепция появилась в процессе изучения некоторых особенностей коры головного мозга. Основное назначение сети заключается в изучении входной информации для нахождения всё более абстрактных обобщающих признаков. Это нужно для того, чтобы в конечном счёте перейти от множества частностей конкретных входных данных к абстрактным характеризующим понятиям.
Сети адаптивного резонанса. Подобные сети часто используют в задачах распознавания образов, и их работа заключается в сравнении припоминаемых образов с реально наблюдаемыми. Если разница между двумя образами не превышает определённое значение, то считается, что наблюдаемый объект успешно распознан и относится к одной из категорий. Важной особенностью работы подобной системы является возможность накопления нового опыта без отказа от уже имеющегося.
Как применить машинное обучение для решения вашей задачи?
В упрощённом виде процесс реализации алгоритмов машинного обучения для вашей задачи может выглядеть как первоначальный сбор данных, построение модели и развёртывание.
Так как машинное обучение работает с уже имеющимся набором данных, размеченным или нет, мы сделаем допущение, что данные уже имеются и необходимо только их проанализировать.
Здесь снова необходимо обратиться к особенностям, которые отличают машинное обучение от просто алгоритмов: если в случае алгоритмов вы бы прописали подробно путь достижения цели, то здесь они самостоятельно пытаются найти закономерности и зависимости во входном потоке данных. Соответственно, когда такие зависимости найдены, обученная модель разворачивается в вашем приложении.
Определение задачи
Сначала необходимо понять, возможно ли применение машинного обучения в каждом конкретном случае, и, вероятно, переформулировать определения соответствующим образом.
В процессе необходимо определить:
Как мы уже говорили, существует обучение с учителем или самостоятельное. Однако в реальных коммерческих предложениях может присутствовать и третий вариант: когда уже обученная кем-то модель адаптируется под ваши задачи. Такой подход особенно ценен, так как процесс обучения моделей может быть достаточно недешёвым, трудоёмким и долгим.
На первоначальном этапе формулирования задачи она должна быть обозначена в виде максимально короткого описания, желательно в одно предложение.
Анализ входных данных
Так как алгоритм работает с входными данными, необходимо понять:
Тут, однако, нужно иметь в виду, что многие данные могут быть смешанных типов.
Насколько хороша должна быть модель?
Важным вопросом является определение критериев истинности тех прогнозов, которые будут считаться приемлемыми по результатам работы модели. Здесь можно привести такую аналогию. Например, мы решаем задачу ориентирования промышленного робота в пространстве. Робот должен привозить и отвозить детали только к определённому станку. Будет ли считаться приемлемой ситуацией, если робот не узнает свой станок и выгрузит детали у другого станка? И что будет, если мы согласимся с тем, что точность работы модели в 50% или даже 85% является приемлемой?
Особенности входных данных
Любые данные обладают определёнными характеристиками, которые можно подразделить на категории, числовые параметры и производные данные.
При учёте этих характеристик необходимо руководствоваться следующим:
Выбор модели
При выборе модели необходимо руководствоваться следующими критериями:
Здесь можно упомянуть то, что для анализа структурированного массива, которым являются таблицы Excel, можно использовать деревья решений или же алгоритмы повышения градиента. Для анализа неструктурированных массивов, в качестве которых могут выступать изображения, тексты на естественном языке, можно применять более глубокие алгоритмы вроде нейросетей, однако времени на их обучение потребуется существенно больше.
Для экономии своего времени и ресурсов имеет смысл на этом этапе постараться по максимуму воспользоваться уже имеющимися в доступе моделями для создания своего собственного прототипа. После того как прототип максимально специфицирован (после ряда итераций), можно заняться и созданием собственной модели (если потребуется).
Как мы уже говорили ранее, можно использовать предварительно обученные другими разработчиками модели, которые доступны по адресам: PyTorch hub, TensorFlow hub, model zoo, fast.ai framework.
Что можно улучшить?
Любой процесс машинного обучения является рядом итераций, на каждой из которых происходит улучшение параметров. Например, ваша модель может обладать малой производительностью, причиной которой являются недостаточные знания или требуется больше входных данных. Либо же входные данные должны быть более подходящими для этого случая.
Применение машинного обучения
Сегодня на рынке представлено несколько десятков программных инструментов:
Фреймворки для работы с глубокими сетями. TensorFlow, Keras.io, Pytorch, Caffe, Accord. NET, Apache Mahout, Shogun, Rapid Miner.
Платформы для ML-разработки. Google Cloud ML Engine, Amazon Machine Learning (AML), SberCloud ML Space, Microsoft Azure ML.
Технологии позволяют улучшить те области человеческой деятельности, которые ещё вчера казались невозможными: с помощью алгоритмов можно эффективно распознавать речь, жесты, изображения, проводить медицинскую диагностику и предсказывать болезни, разрабатывать новые лекарства, соединяя вещества нужным образом, увеличивать эффективность производства, уменьшать простои оборудования и множество других удивительных и полезных применений.
Кстати, технологии машинного обучения позволяют привнести новое и в творческую сферу: например, известный проект www.ostagram.me, в основу которого положены свёрточные нейронные сети, позволяет любую фотографию превратить в художественную картину.
А 2021 год ознаменовался запуском проекта ruDALL-E, который позволяет генерировать изображения по их текстовому описанию. Обучение нейросети ruDALL-E на кластере Christofari стало самой большой вычислительной задачей в России:
Таким образом, суммарно обучение обеих моделей заняло 24 256 GPU-дней.
Долгосрочная цель нового направления – создание «мультимодальных» нейронных сетей, которые выучивают концепции в нескольких модальностях. В первую очередь, в текстовой и визуальной областях, чтобы «лучше понимать мир».
Генерация изображений может показаться избыточной задачей в век больших данных и доступа к поисковикам. Однако она решает две важных потребности, которые пока не может решить информационный поиск:
Первые очевидные применения генерации изображений:
В основе архитектуры DALL-E – так называемый трансформер, он состоит из энкодера и декодера. Суть состоит в том, чтобы вычислить embedding по входным данным с помощью энкодера, а затем с учётом известного выхода правильным образом декодировать этот embedding.
Чтобы не учить только краткосрочные зависимости между пикселями и текстами, а делать это более высокоуровнево, обучение модели проходит в 2 этапа:
Что дальше?
Вероятнее всего, в ближайшие годы эта технология привнесёт изменения во многие области человеческой деятельности, и мы увидим ещё много интересного. Но уже сейчас можно сказать о некоторых тенденциях.
Готовые модели позволят множеству разработчиков применять их, дообучая в процессе под конкретные цели.
Несмотря на развитие достаточно сложных технологий, на которых базируется машинное обучение, в настоящее время актуальной темой является активное внедрение легковесных моделей, которые могут быть запущены даже на слабом аппаратном обеспечении (TinyML).
В настоящее время все подходы в той или иной степени требуют постоянного вмешательства человека в процесс, поэтому хорошим вызовом следующего дня станет развитие таких технологий, которые будут самостоятельно обучаться без присутствия человека.
Умелое применение технологий машинного обучения позволит вам реализовать множество интересных применений, которые могут снизить затраты компании, дать новые возможности.
Например, известен случай, когда такие технологии позволили снизить затраты энергопотребления. Как оказалось в ходе анализа, массив генераторов электричества, работающих с малой нагрузкой, гораздо эффективнее, чем меньшее количество, работающее с большей нагрузкой.
Или пример ресурсодобывающих компаний, где технологии анализируют структуру пластов и позволяют с высокой вероятностью предсказывать расположение месторождений.
Внимательное изучение предметной области, которая должна быть оптимизирована с применением интеллектуальных технологий, качественный подбор и обучение модели или же использование уже имеющейся, обученной кем-то, позволит получить конкурентные преимущества, завоевать лояльность потребителей.
К сожалению, в рамках одной статьи не получится в полной мере описать все интересные моменты, но мы постарались дать краткий обзор, который позволит лучше ориентироваться в этой отрасли при движении в направлении изучения и применения на практике.
Для чего нужен нейрон смещения?
Нейрон смещения нужен для того, чтобы иметь возможность получать выходной результат, путем сдвига графика функции активации вправо или влево. Если это звучит запутанно, давайте рассмотрим простой пример, где есть один входной нейрон и один выходной нейрон. Тогда можно установить, что выход O2 будет равен входу H1, умноженному на его вес, и пропущенному через функцию активации (формула на фото слева). В нашем конкретном случае, будем использовать сигмоид.
Из школьного курса математики, мы знаем, что если взять функцию y = ax+b и менять у нее значения “а”, то будет изменяться наклон функции (цвета линий на графике слева), а если менять “b”, то мы будем смещать функцию вправо или влево (цвета линий на графике справа). Так вот “а” — это вес H1, а “b” — это вес нейрона смещения B1. Это грубый пример, но примерно так все и работает (если вы посмотрите на функцию активации справа на изображении, то заметите очень сильное сходство между формулами). То есть, когда в ходе обучения, мы регулируем веса скрытых и выходных нейронов, мы меняем наклон функции активации. Однако, регулирование веса нейронов смещения может дать нам возможность сдвинуть функцию активации по оси X и захватить новые участки. Иными словами, если точка, отвечающая за ваше решение, будет находиться, как показано на графике слева, то ваша НС никогда не сможет решить задачу без использования нейронов смещения. Поэтому, вы редко встретите нейронные сети без нейронов смещения.
Также нейроны смещения помогают в том случае, когда все входные нейроны получают на вход 0 и независимо от того какие у них веса, они все передадут на следующий слой 0, но не в случае присутствия нейрона смещения. Наличие или отсутствие нейронов смещения — это гиперпараметр (об этом чуть позже). Одним словом, вы сами должны решить, нужно ли вам использовать нейроны смещения или нет, прогнав НС с нейронами смешения и без них и сравнив результаты.
ВАЖНО знать, что иногда на схемах не обозначают нейроны смещения, а просто учитывают их веса при вычислении входного значения например:
input = H1*w1+H2*w2+b3
b3 = bias*w3
Так как его выход всегда равен 1, то можно просто представить что у нас есть дополнительный синапс с весом и прибавить к сумме этот вес без упоминания самого нейрона.
Простая нейронная сеть без библиотек и матриц. Обучение с учителем
Вероятно вы уже множество раз прочитали что‑нибудь подобное, так что постараюсь покороче. Говоря простым языком: нейронная сеть — несколько слоев, состоящих из искусственных нейронов и синапсов, которые их соединяют. Значение нейрона формируется из активированной суммы дочерних нейронов, умноженных на вес их синапсов. Первый (следующий после нулевого) слой формируется из активированных входных данных, тоже умноженных на веса синапсов. Обычно веса синапсов изначально генерируются случайно, а потом корректируются в зависимости от процесса обучения. « Активированное значение» — значение, которое преобразовано с помощью выбранной функции активации.
Гиперпараметры нейронной сети
Нейронная сеть используется для автоматизации отбора признаков, но некоторые параметры настраиваются вручную.
Скорость обучения (learning rate) нейросети
Скорость обучения является очень важным гиперпараметром. Если скорость обучения слишком мала, то даже после обучения нейронной сети в течение длительного времени она будет далека от оптимальных результатов. Результаты будут выглядеть примерно так:
С другой стороны, если скорость обучения слишком высока, то сеть очень быстро выдаст ответы. Получится следующее:
Почти переходим к практике
Дело в том, что когда я «твердо решил написать свою нейросеть», я совершенно не подумал о том, какую задачу эта нейросеть будет решать, так что это я решил на ходу:
Задумавшись над задачей для нейронной сети, я решил выбрать что‑нибудь подходящее под два критерия: наглядное, чтобы на выходом было какое‑то графическое действие и не очень тяжелое, ибо мой текущий компьютер не справится. После длительного отбора идей, я вспомнил статью про эксперименты над обучением одноклеточных организмов и пришел к выводу, что правильным решением будет создать примитивную нейросеть, которая будет выполнять роль клетки в чашке Петри. Предварительный анализ задачи показал, что логичней будет ограничить поле зрения: я выбрал поле 5 на 5 вокруг клетки. В итоге я решил сделать нейронную сеть, имеющую входной слой в 25 нейрона, скрытый в 16 и выходной слой в 14. Почему именно столько? В конструировании нейросетей нет четких правил, но для нашей задачи больше одного слоя не требуется (вообще эта задача может решаться без скрытых слоев вообще, но тогда у нейросети будут очень примитивные решения) количество нейронов в скрытом слою, принято делать между количеством во входном и выходном, а дальше корректировать, в зависимости от эмпирических данных, так что спустя несколько попыток, я выбрал именно 16. Ещё нужна функция активации, чтобы значение нейрона для удобства варьировалось между -1 и 1. Я выбираю стандартный гиперболический тангенс, который на самом деле является модифицированной экспонентой.
Резюме
ИИ с хирургической точностью вскрыл проблемы современной школы. Бот пишет шаблонные сочинения, за которые учителя ставят высокие баллы, потому что школу устраивает шаблонность. Ученики вместо собственных мыслей переписывают формулировки ИИ, потому что школа недостаточно мотивирует их думать. Школьники ищут самый лёгкий путь, так как им зачастую важнее получить высокие баллы, а не знания. И если искусственный интеллект разрушит эту систему — так ли уж это плохо?
Миру, в котором компьютеры легко справляются с рутинными интеллектуальными задачами, больше не нужны менеджеры среднего звена. Ему нужны исследователи, первооткрыватели — люди, способные мыслить нестандартно. Ведь нейросети не способны совершить научное открытие или написать произведение, которое изменит общество: они лишь компилируют всё, что создано человечеством до них.
При нынешней доступности информации умение зубрить потеряло смысл. Куда важнее учить осмыслять, фильтровать, творчески обрабатывать и критически оценивать информацию. Благодаря искусственному интеллекту акценты в образовании должны и будут смещаться.
Функция потери (loss function)
Функция потерь находится в центре нейронной сети. Она используется для расчета ошибки между реальными и полученными ответами. Наша глобальная цель — минимизировать эту ошибку. Таким образом, функция потерь эффективно приближает обучение нейронной сети к этой цели.
Функция потерь измеряет «насколько хороша» нейронная сеть в отношении данной обучающей выборки и ожидаемых ответов. Она также может зависеть от таких переменных, как веса и смещения.
Функция потерь одномерна и не является вектором, поскольку она оценивает, насколько хорошо нейронная сеть работает в целом.
Некоторые известные функции потерь:
Cреднеквадратичное отклонение – самая простая функция потерь и наиболее часто используемая. Она задается следующим образом:
Функция потерь в нейронной сети должна удовлетворять двум условиям:
Из чего состоит нейронная сеть
Искусственная нейронная сеть состоит из трех компонентов:
Обучение нейросети происходит в два этапа:
Во время прямого распространения ошибки делается предсказание ответа. При обратном распространении ошибка между фактическим ответом и предсказанным минимизируется.
Визуализация работы нейронной сети для классификации изображений:
Прямое распространение ошибки
Зададим начальные веса случайным образом:
Умножим входные данные на веса для формирования скрытого слоя:
Выходные данные из скрытого слоя передается через нелинейную функцию (функцию активации), для получения выхода сети:
Обратное распространение
Полученный результат затем вычитается из соответствующих весов.
В результате получатся следующие обновленные веса:
То, что мы предполагаем и инициализируем веса случайным образом, и они будут давать точные ответы, звучит не вполне обоснованно, тем не менее, работает хорошо.
Популярный мем о том, как Карлсон стал Data Science разработчиком
Если вы знакомы с рядами Тейлора, обратное распространение ошибки имеет такой же конечный результат. Только вместо бесконечного ряда мы пытаемся оптимизировать только его первый член.
Смещения – это веса, добавленные к скрытым слоям. Они тоже случайным образом инициализируются и обновляются так же, как скрытый слой. Роль скрытого слоя заключается в том, чтобы определить форму базовой функции в данных, в то время как роль смещения – сдвинуть найденную функцию в сторону так, чтобы она частично совпала с исходной функцией.
Частные производные
Частные производные можно вычислить, поэтому известно, какой был вклад в ошибку по каждому весу. Необходимость производных очевидна. Представьте нейронную сеть, пытающуюся найти оптимальную скорость беспилотного автомобиля. Eсли машина обнаружит, что она едет быстрее или медленнее требуемой скорости, нейронная сеть будет менять скорость, ускоряя или замедляя автомобиль. Что при этом ускоряется/замедляется? Производные скорости.
Разберем необходимость частных производных на примере.
Предположим, детей попросили бросить дротик в мишень, целясь в центр. Вот результаты:
Теперь, если мы найдем общую ошибку и просто вычтем ее из всех весов, мы обобщим ошибки, допущенные каждым. Итак, скажем, ребенок попал слишком низко, но мы просим всех детей стремиться попадать в цель, тогда это приведет к следующей картине:
Ошибка нескольких детей может уменьшиться, но общая ошибка все еще увеличивается.
Найдя частные производные, мы узнаем ошибки, соответствующие каждому весу в отдельности. Если выборочно исправить веса, можно получить следующее:
Использование ИИ в образовании
Универсальный бот ChatGPT, генерирующий ответы на любые вопросы, появился в открытом доступе в конце 2022 года и за считаные месяцы нашёл применение в самых неожиданных сферах. Эта нейросеть умеет адекватно поддерживать диалог, создавать планы, резюмировать научные статьи, писать программный код, придумывать сценарии сериалов и даже сочинять стихи. Но школьники всего мира начали использовать её для выполнения домашних заданий.
Школьную программу искусственный интеллект знает на ура: меньше чем за минуту он способен выдать ответ на вопрос, подробно изложить решение любой задачи и даже написать вполне логичное сочинение по литературному произведению. При этом результат зачастую сложно отличить от работы реального ученика, но всё же возможно.
С точки зрения учебного процесса ничего нового здесь нет. Школьники списывали всегда: раньше у соседей по парте, а теперь у безотказного бота. Но, как ни странно, при списывании у ИИ вероятность разоблачения выше — по крайней мере пока.
Дело в том, что нейросеть не знает, каким образом ребят учат решать задачи. Поэтому, если в домашней работе восьмиклассника учитель увидит интегралы, у него возникнут некоторые сомнения насчёт авторства работы. В гуманитарных дисциплинах распознать подлог ещё проще, особенно если ученик переписывает сгенерированный компьютером текст, не пытаясь его осмыслить. И тогда не обходится без курьёзов.
Юджиновен понимает, что он возможно чувствовать полноценные чувства, А Татьяна разочаровывается в своих предложениях о любви. Кукушкин доказывает, что прожить жизнедеятельность кроме симпатии невозможно. Она настигает дядьку заблаговременно или поздно.
Вот лишь несколько примеров из сочинений, написанных искусственным интеллектом без участия интеллекта человека. С технической точки зрения проблема здесь не в самой нейросети, а во встроенном переводчике, недостаточно хорошо владеющим русским литературным языком. Впрочем, алгоритмы нейросетей совершенствуются ежеминутно и вскоре будут идеально воспроизводить клише, кочующие по школьным тетрадям из поколения в поколение.
Сгенерированное изображение. Нейросеть: ruDALL-E. Запрос: «искусственный интеллект делает домашнее задание». Стиль: Пикассо
Примеры использования нейросетей в образовании
Важно отметить, что ChatGPT используют и сами педагоги. Судя по результатам опросов, они пользуются нейросетями даже чаще, чем ученики. Нейросети помогают преподавателям находить учебный материал, придумывать темы для занятий и предоставляют ещё множество возможностей использования.
Поддержка в учёбе
Глубокое обучение (deep learning) – это класс алгоритмов машинного обучения, которые учатся глубже (более абстрактно) понимать данные. Популярные алгоритмы нейронных сетей глубокого обучения представлены на схеме ниже.
Популярные алгоритмы нейронных сетей (http://www.asimovinstitute.org/neural-network-zoo)
Более формально в deep learning:
Пример простой нейронной сети
Рассмотрим однослойную нейронную сеть:
Здесь, обучается первый слой (зеленые нейроны), он просто передается на выход.
В то время как в случае двухслойной нейронной сети, независимо от того, как обучается зеленый скрытый слой, он затем передается на синий скрытый слой, где продолжает обучаться:
Следовательно, чем больше число скрытых слоев, тем больше возможности обучения сети.
Не следует путать с широкой нейронной сетью.
В этом случае большое число нейронов в одном слое не приводит к глубокому пониманию данных. Но это приводит к изучению большего числа признаков.
Изучая английскую грамматику, требуется знать огромное число понятий. В этом случае однослойная широкая нейронная сеть работает намного лучше, чем глубокая нейронная сеть, которая значительно меньше.
В случае изучения преобразования Фурье, ученик (нейронная сеть) должен быть глубоким, потому что не так много понятий, которые нужно знать, но каждое из них достаточно сложное и требует глубокого понимания.
Главное — баланс
Очень заманчиво использовать глубокие и широкие нейронные сети для каждой задачи. Но это может быть плохой идеей, потому что:
Проклятье размерности нейросети
Проклятие размерности относится к различным явлениям, возникающим при анализе и организации данных в многомерных пространствах (часто с сотнями или тысячами измерений), и не встречается в ситуациях с низкой размерностью.
Грамматика английского языка имеет огромное количество аттрибутов, влияющих на нее. В машинном обучении мы должны представить их признаками в виде массива/матрицы конечной и существенно меньшей длины (чем количество существующих признаков). Для этого сети обобщают эти признаки. Это порождает две проблемы:
Компромисс
На ранней стадии обучения смещение велико, потому что выход из сети далек от желаемого. А дисперсия очень мала, поскольку данные имеет пока малое влияние.
В конце обучения смещение невелико, потому что сеть выявила основную функцию в данных. Однако, если обучение слишком продолжительное, сеть также изучит шум, характерный для этого набора данных. Это приводит к большому разбросу результатов при тестировании на разных множествах, поскольку шум меняется от одного набора данных к другому.
алгоритмы с большим смещением обычно в основе более простых моделей, которые не склонны к переобучению, но могут недообучиться и не выявить важные закономерности или свойства признаков. Модели с маленьким смещением и большой дисперсией обычно более сложны с точки зрения их структуры, что позволяет им более точно представлять обучающий набор. Однако они могут отображать много шума из обучающего набора, что делает их прогнозы менее точными, несмотря на их дополнительную сложность.
Как правило, невозможно иметь маленькое смещение и маленькую дисперсию одновременно.
Есть множество инструментов, с помощью которых можно легко создать сложные модели машинного обучения, переобучение занимает центральное место. Поскольку смещение появляется, когда сеть не получает достаточно информации. Но чем больше примеров, тем больше появляется вариантов зависимостей и изменчивостей в этих корреляциях.
Как искусственный интеллект может помочь в образовании
В нескольких штатах США не разрешают использовать ChatGPT в учебных работах из-за опасений, что нейросеть негативно воздействует на обучение. Аналогичное решение приняли в Японии. В Италии нейросеть запретили полностью, то же самое хотят сделать в Германии, Испании и ряде других развитых стран.
В России дела обстоят иначе. История студента РГГУ Александра Жадана, успешно защитившего дипломную работу, написанную при помощи ChatGPT, вызвала большой резонанс. Когда молодой человек рассказал, как он на самом деле выполнил работу, его не наказали — и даже пригласили в Комитет Госдумы по информационной политике, чтобы обсудить перспективы применения ИИ в системе образования.
Такая позиция руководства страны вселяет надежду. Если чиновники образования готовы видеть в новой технологии не опасность, а возможности, значит, у отечественной школы есть шанс измениться к лучшему.
Развитие нейросетей не остановить, а запрещать их не более эффективно, чем сражаться с ветряной мельницей. Искусственный интеллект уже кардинально меняет рынок труда и сферу услуг, так что трансформация нынешней системы образования всего лишь вопрос времени.
Клиффхэнгер
Следующая часть про эволюционный алгоритм уже доступна!
Функция активации (activation function) нейронной сети
Функция активации — это один из самых мощных инструментов, который влияет на силу, приписываемую нейронным сетям. Отчасти, она определяет, какие нейроны будут активированы, другими словами и какая информация будет передаваться последующим слоям.
Без функций активации глубокие сети теряют значительную часть своей способности к обучению. Нелинейность этих функций отвечает за повышение степени свободы, что позволяет обобщать проблемы высокой размерности в более низких измерениях. Ниже приведены примеры распространенных функций активации:
Что еще нужно знать о процессе обучения?
Нейросеть можно обучать с учителем и без (supervised, unsupervised learning).
Обучение с учителем — это тип тренировок присущий таким проблемам как регрессия и классификация (им мы и воспользовались в примере приведенном выше). Иными словами здесь вы выступаете в роли учителя а НС в роли ученика. Вы предоставляете входные данные и желаемый результат, то есть ученик посмотрев на входные данные поймет, что нужно стремиться к тому результату который вы ему предоставили.
Обучение без учителя — этот тип обучения встречается не так часто. Здесь нет учителя, поэтому сеть не получает желаемый результат или же их количество очень мало. В основном такой вид тренировок присущ НС у которых задача состоит в группировке данных по определенным параметрам. Допустим вы подаете на вход 10000 статей на хабре и после анализа всех этих статей НС сможет распределить их по категориям основываясь, например, на часто встречающихся словах. Статьи в которых упоминаются языки программирования, к программированию, а где такие слова как Photoshop, к дизайну.
Существует еще такой интересный метод, как обучение с подкреплением (reinforcement learning). Этот метод заслуживает отдельной статьи, но я попытаюсь вкратце описать его суть. Такой способ применим тогда, когда мы можем основываясь на результатах полученных от НС, дать ей оценку. Например мы хотим научить НС играть в PAC-MAN, тогда каждый раз когда НС будет набирать много очков мы будем ее поощрять. Иными словами мы предоставляем НС право найти любой способ достижения цели, до тех пор пока он будет давать хороший результат. Таким способом, сеть начнет понимать чего от нее хотят добиться и пытается найти наилучший способ достижения этой цели без постоянного предоставления данных “учителем”.
Также обучение можно производить тремя методами: стохастический метод (stochastic), пакетный метод (batch) и мини-пакетный метод (mini-batch). Существует очень много статей и исследований на тему того, какой из методов лучше и никто не может прийти к общему ответу. Я же сторонник стохастического метода, однако я не отрицаю тот факт, что каждый метод имеет свои плюсы и минусы.
Вкратце о каждом методе:
Стохастический (его еще иногда называют онлайн) метод работает по следующему принципу — нашел Δw, сразу обнови соответствующий вес.
Пакетный метод же работает по другому. Мы суммируем Δw всех весов на текущей итерации и только потом обновляем все веса используя эту сумму. Один из самых важных плюсов такого подхода — это значительная экономия времени на вычисление, точность же в таком случае может сильно пострадать.
Мини-пакетный метод является золотой серединой и пытается совместить в себе плюсы обоих методов. Здесь принцип таков: мы в свободном порядке распределяем веса по группам и меняем их веса на сумму Δw всех весов в той или иной группе.
Антиплагиат против нейросети
Система образования пытается бороться со списыванием результатов, генерируемых нейросетями. Первое и самое очевидное, что пришло на ум многим учителям, — вернуть практику устных экзаменов. Это могло бы сработать, но одно дело — проверить стопку контрольных, другое — вызвать каждого ученика к доске: времени урока на это точно не хватит.
В нескольких странах уже начали разработку программ, способных, подобно «Антиплагиату», распознавать текст, созданный искусственным интеллектом. Разумеется, они используют те же принципы, что и нейросети, — самосовершенствующиеся алгоритмы определения. Так называемые контент-детекторы представили уже несколько компаний. Правда, все они в разной степени несовершенны.
Так, AI Text Classifier от OpenAI, создателей нашумевшей ChatGPT, верно определяет созданные нейросетью тексты лишь в 26% случаев. А 9% текстов, написанных человеком, считает сгенерированными ИИ. Несомненно, в будущем показатели будут лучше, но пока рассчитывать на помощь нейросетей в распознавании сгенерированного текста не приходится.
В России АНО «Национальная технологическая инициатива» создаёт нейросеть для проверки школьных сочинений: она будет выявлять грамматические, пунктуационные и смысловые ошибки, что, по словам разработчиков, позволит учителям экономить до 20% времени.
Существует вероятность, что нейросеть и вовсе заменит педагогов: по данным исследования учёных из Принстонского университета (США), в ближайшее время ИИ сможет заменить представителей 20 профессий, в том числе преподавателей. В некоторых онлайн-школах это уже происходит: например, боты общаются со студентами в качестве носителей иностранных языков, прогнозируют успехи школьников на ЕГЭ, дают советы по улучшению результатов и генерируют задачи на закрепление материала.