В данной статье рассмотрено использование нейронных сетей, дана их краткая характеристика. Произведен анализ достоинств, а также существующих на данном этапе становления сложностей, при обучении нейронных сетей на примере предметной области приема на работу. Рассмотрен и описан способ обучения нейронной сети методом обратного распространения ошибки. Выполнена понятная и последовательная реализация универсальной нейронной сети на языке программирования java. Показан пример использования написанной нейронной сети. Приведены и обоснованы результаты обучения написанной нейронной сети, в частности степень изменения весов до начала обучения и после.
In the article the use of neural networks is considered, their brief characteristic is given. The analysis of advantages, and also existing at this stage of formation of difficulties, at training of neural networks on the example of a subject area of employment is made. The method of neural network training by the method of error back propagation is considered and described. A clear and consistent implementation of the universal neural network in the java programming language is performed. An example of using a written neural network is shown. The results of training written neural network, in particular the degree of change of weights before and after training are given and justified.
Внедрение искусственного интеллекта наблюдается в различных отраслях, таких как экономика, медицина и более прикладные области. Ведется большое количество разработок, например в яндексе ведется разработка искусственного интеллекта (ИИ), который может управлять машиной вместо человека, причем испытания проводятся и в условиях города, где ИИ хорошо себя показывает [1]. Возникающая шумиха вокруг искусственного интеллекта в настоящее время преувеличена, однако искусственный интеллект только начал проникать в нашу жизнь, и до конца не понятно, какими большими возможностями и перспективами обладает данная технология.
В этой статье рассмотрены этапы создания и обучения нейронной сети методом обратного распространения ошибок. Также приведен анализ достоинств нейронных сетей и возможных проблем, например, возникающих при их работе в предметной области приема на работу.
Согласно данным издания Hightech, использование современных алгоритмов и чат ботов позволяет многим предприятиям достаточно сильно сократить время, необходимое на подбор персонала. Исходя из данных отчета Global Recruiting Trends, который был разработан компанией LinkedIn, работодатели наиболее часто сталкиваются с такими проблемами как, сильное разнообразие рынка труда и проведение эффективных собеседований. Для сокращения возможных проблем с поиском нужных сотрудников, многие из этих компаний в серьез думают воспользоваться ИИ, в частности применяя нейронные сети (НС) [2,3].
Несмотря на то, что НС имеют очень много преимуществ, они также не обделены недостатками, особенно на современном этапе их становления, со времени активного внедрения технологии прошло не так много времени. Так как НС представляет собой некоторую «черную коробку» на вход которой подаются данные, а на выходе получается результат, который невозможно точно определить, ведь он строиться на результате ранее пройденных этапов обучения. Так же немало важным является то, что при больших объемах данных необходимых для адекватного обучения нейронной сети, сам процесс обучения и «выводы» возникающие у нейронной сети контролировать становиться очень затруднительно, а в некоторых случаях даже невозможно.
Примером упомянутых выше тезисов является проблема, возникшая у НС Amazon, в результате которой, НС использующаяся при рассмотрении вакансий приема на работу отдавала предпочтение мужчинам. Однако выяснили это специалисты Amazon не сразу, а после обнаружения данной проблемы быстро отстранили НС от работы. Очевидно, в проектирование системы данное поведение не вкладывали, оно образовалось как раз-таки при обучении системы. Причина почему в процессе обучения НС сделала такие выводы оказалась очень проста, в качестве обучения разработчики использовали базу реальных резюме соискателей, которые в результате всех собеседований были приняты на работу и эффективно справлялись с ней. Большая часть этих резюме было написано именно мужчинами, в результате чего и возник такой механизм у нейронной сети. Специалисты Amazon после данного случая конечно же скорректировали работу НС, убрав данные закономерности, а затем в скором времени «официально» закрыли проект, ведь никто не может гарантировать то, что НС в процессе обучения опять не вернет данный механизм принятия решений.
Для того, чтобы понять каким образом у НС происходит процесс обучения и работы составлен пример построения двухслойной НС.
Обозначение y1 = значение функции активации нейрона, которая может либо усиливать сигнал, либо наоборот ослаблять. F1 в свою очередь представляет функцию активации, есть множество разных видов функций, но выбор оптимальный не входит в задачи данной статьи. W(x) – вес связи нейрона, в начале задается случайными величинами обычно от -0,5 до 0,5.
Обучением нейронной сети как раз является назначение правильных весов связи. Есть множество разных методов, но в данной статье для примера будет рассматриваться обучение методом обратного распространения ошибки [4].
Стоит отметить, что функции активации для каждого слоя могут быть как одинаковыми, так и разными. Результатом работы нейронной сети является значение функции активации, которая в большинстве случаев имеет результат от 0 до 1. Соответственно если значении функции меньше 0,5, то нейронная сеть решила, что ответ отрицательный, больше 0,5 ответ положительный [5].
После того как сеть получила результат для ее обучения, нужно вычислить вектор ошибки. Ошибкой является разница между эталонным значением и полученным нами.
Рассмотрим пример создания нейронной сети на языке Java. Класс, отвечающий за нейрон:
Класс, отвечающий за слой нейронной сети:
Класс, отвечающий за всю нейронную сеть:
Данную нейронную сеть можно использовать в дальнейшем для своих задач. Код написан таким образом, что есть возможность строить свою топологию нейронной сети и в дальнейшем обучать ее.
Пример обучения нейронной сети для решения задачи с использованием, написанной выше нейронной сети. Задачей будет вывод, принимать ли человека на работу в компанию, или нет. Данная нейронная сеть является примером, поэтому на входах использует 5 входных параметров:
Обучающая выборка, следующая, в нее заложена логика, что если соискатель не знает 2 из 3-х ключевых навыков (html, css, javascript), то он не подходит:
Результаты работы нейронной сети после обучения:
На обучающей выборке нейронная сеть выдает требуемые нам результаты, однако есть еще результаты при работе с неизвестными ранее входными данными:
Все результаты, кроме последнего являются приемлемыми. Исходя из неверного результата можно предположить, что НС заложила в своё решение неверный вывод о том, что, если соискатель обладает знаниями html, остальные знания не важны, что не соответствует нужной нам логике. Даже на примере простой НС видно, насколько важно продумать правильно топологию НС и в особенности обучающую выборку для того, чтобы НС вела себя так, как нужно разработчику.
Подведя итог вышесказанному можно сделать вывод о том, что нейронные сети являются перспективной и новой технологией, однако в настоящее время, имеют свои особенности и проблемы, которые в процессе разработки нужно учитывать.