Искусственный интеллект и нейронные сети представляют собой невероятно захватывающие и мощные методы, основанные на машинном обучении, которые используются для решения многих реальных задач. Простейший пример нейронной сети - изучение пунктуации и грамматики для автоматического создания совершенно нового текста с выполнением всех правил правописания.
История нейронной сети
Ученые в области компьютеризации давно пытаются смоделировать человеческий мозг. В 1943 году Уоррен С. МакКаллох и Уолтер Питтс разработали первую концептуальную модель искусственной нейронной сети. В статье «Логическое исчисление идей, относящихся к нервной активности» они описали пример нейронной сети, концепцию нейрона - единственной клетки, живущей в общей сети, получающей входные данные, обрабатывающей их и генерирующей выходные сигналы.
Их работа, как и многих других ученых, не предназначалась для точного описания работы биологического мозга. Искусственная нейронная сеть была разработана как вычислительная модель, работающая по принципу функционирования мозга для решения широкого круга задач.
Очевидно, что есть упражнения, которые просто решить для компьютера, но трудно для человека, например, извлечение квадратного корня из десятизначного числа. Этот пример нейронная сеть вычислит менее чем за миллисекунду, а человеку потребуются минуты. С другой стороны, есть такие, которые невероятно просто решить человеку, но не под силу компьютеру, например, выбрать фон изображения.
Ученые потратили массу времени, исследуя и внедряя сложные решения. Наиболее распространенный пример нейронной сети в вычислительной технике - распознавание образов. Область применения варьируется от оптического распознавания символов и фото, отпечатанных или рукописных сканов в цифровой текст до распознавания лиц.
Биологические вычислительные машины
Человеческий мозг является исключительно сложной и самой мощной из известных вычислительных машин. Внутренняя работа его моделируется вокруг концепции нейронов и их сетей, известных как биологические нейронные сети. Мозг содержит около 100 миллиардов нейронов, которые связаны этими сетями.
На высоком уровне они взаимодействуют друг с другом через интерфейс, состоящий из терминалов аксонов, связанных с дендритами через промежуток - синапс. Говоря простым языком, один передает сообщение другому через этот интерфейс, если сумма взвешенных входных сигналов от одного или нескольких нейронов превышает порог, чтобы вызвать передачу. Это называется активацией, когда порог превышен, а сообщение передается следующему нейрону.
Процесс суммирования может быть математически сложным. Входной сигнал представляет собой взвешенную комбинацию таких сигналов, а взвешивание каждого означает, что этот вход может по-разному влиять на последующие вычисления и на конечный выход сети.
Элементы нейронной модели
Глубокое обучение - термин, используемый для сложных нейронных сетей, состоящих из нескольких слоев. Слои состоят из узлов. Узел - это просто место, где происходит вычисление, который срабатывает, когда сталкивается с достаточным количеством стимулов. Узел объединяет входные данные из набора коэффициентов или весов, которые либо усиливают, либо ослабляют этот сигнал, тем самым назначая им значимость для задачи.
Сети с глубоким обучением отличаются от распространенных нейронных с одним скрытым слоем. Пример обучения нейронных сетей – сети Кохонена.
В сетях с глубоким обучением каждый слой познает заданный набор функций на основе выходной информации предыдущего уровня. Чем дальше продвигаться в нейронную сеть, тем сложнее объекты, которые могут распознаваться узлами, поскольку они объединяют и рекомбинируют объекты из предыдущего уровня.
Сети глубокого обучения выполняют автоматическое извлечение функций без участия человека, в отличие от большинства традиционных алгоритмов и заканчиваются выходным уровнем: логическим или softmax-классификатором, который присваивает вероятность конкретному результату и называется прогнозом.
Черный ящик ANN
Искусственные нейронные сети (ИНС) - это статистические модели, частично смоделированные на биологических нейронных сетях. Они способны обрабатывать нелинейные отношения между входами и выходами параллельно. Характеризуются такие модели наличием адаптивных весов вдоль путей между нейронами, которые могут быть настроены алгоритмом обучения, чтобы улучшить всю модель.
Простой пример нейронной сети - архитектурно искусственная нейронная ANN-сеть, где:
- Input layer - входной слой.
- Hidden layer - скрытый слой.
- Output layer - выходной слой.
Она моделируется с использованием слоев искусственных нейронов или вычислительных единиц, способных принимать входные данные и использовать функцию активации вместе с пороговым значением, чтобы определить, передаются ли сообщения.
В простой модели первый слой - это входной, за которым следует скрытый и, наконец, выходной. Каждый может содержать один или несколько нейронов. Модели могут становиться все более сложными с увеличением возможностей абстракции и решения проблем, количества скрытых слоев, числа нейронов в любом данном слое и количества путей между ними.
Архитектура и настройка модели являются основными компонентами методов ANN в дополнение к самим алгоритмам обучения. Они являются чрезвычайно мощными и считаются алгоритмами черного ящика, что означает, что их внутреннюю работу очень трудно понять и объяснить.
Алгоритмы глубокого обучения
Глубокое обучение - это понятие звучит достаточно громко, на самом деле является просто термином, описывающим определенные типы нейронных сетей и связанные с ними алгоритмы, которые потребляют необработанные входные данные через множество слоев нелинейных преобразований, чтобы вычислить целевой выход.
Необслуживаемое извлечение признаков также является областью, в которой глубокое обучение превосходит все ожидания. Пример обучения нейронных сетей – сети SKIL.
Традиционно на ученого или программиста данных ложится ответственность выполнения процесса извлечения признаков в большинстве других подходов машинного обучения наряду с выбором функций и проектированием.
Оптимальные параметры алгоритма
Алгоритмы обучения функциям санкционируют машину на познание конкретной задачи, используя отточенный набор возможностей для изучения. Другими словами, они учатся учиться. Такой принцип успешно используется во многих приложениях и считается одним из самых передовых методов искусственного интеллекта. Соответствующие алгоритмы часто используются для контролируемых, неконтролируемых и частично контролируемых задач.
В моделях на основе нейронной сети число слоев больше, чем в алгоритмах поверхностного обучения. Малые алгоритмы менее сложны и требуют более глубокого знания оптимальных функций, которые включают выбор и разработку. Напротив, алгоритмы глубокого обучения больше полагаются на оптимальный выбор модели и ее оптимизацию путем настройки. Они лучше подходят для решения задач, когда предварительное знание функций менее желательно или необходимо, а зафиксированные данные недоступны или не требуются для использования.
Входные данные преобразуются во всех их слоях с помощью искусственных нейронов или процессорных блоков. Примером кода нейронной сети называют CAP.
Значение CAP
CAP используется для измерения в архитектуре модели глубокого обучения. Большинство исследователей в этой области согласны с тем, что она имеет более двух нелинейных слоев для CAP, а некоторые считают, что CAP, имеющие больше десяти слоев, требуют чересчур глубокого обучения.
Подробное обсуждение множества различных архитектур моделей и алгоритмов такого рода обучения очень пространственное и противоречивое. Наиболее изученными считаются:
- Прямые нейронные сети.
- Рецидивирующая нейронная сеть.
- Многослойные персептроны (MLP).
- Сверточные нейронные сети.
- Рекурсивные нейронные сети.
- Глубокие сети убеждений.
- Сверточные сети глубоких убеждений.
- Самоорганизующиеся карты.
- Глубокие машины Больцмана.
- Сложенные шумоподавляющие авто-кодеры.
Топ современных архитектур
Перцептроны считаются нейронными сетями первого поколения, вычислительными моделями одного нейрона. Они были изобретены в 1956 году Фрэнком Розенблаттом в работе «Перцептрон: предполагаемая модель хранения и организации информации в головном мозге». Перцептрон, также называемый сетью прямой связи, передает информацию от передней его части к задней.
Рекуррентные нейронные сети RNN превращают входную последовательность в выходную, которая находится в другой области, например, изменяет последовательность звуковых давлений в последовательность идентификаторов слов.
Джон Хопфилд представил Hopfield Net в статье 1982 года «Нейронные сети и физические системы с возникающими коллективными вычислительными возможностями». В сети Хопфилда (HN) каждый нейрон связан с любым другим. Они обучаются путем установки их значения на желаемую схему, после чего можно вычислить весовые коэффициенты.
Машина Больцмана представляет собой тип стохастической рекуррентной нейронной сети, которую можно рассматривать как аналог сетей Хопфилда. Это был один из первых вариантов, изучающих внутренние представления, решающие сложные комбинаторные задачи. Входные нейроны становятся выходными в конце полного обновления.
Генеративная состязательная сеть Яна Гудфеллоу (GAN) состоит из двух сетей. Часто это комбинация Feed Forwards и Convolutional Neural Nets. Одна генерирует контент генеративный, а другая должна оценивать контент дискриминационный.
Начало работы SKIL из Python
Глубокое обучение нейронной сети на примере Python сопоставляет входы с выходами и находит корреляции. Он известен, как универсальный аппроксиматор, потому что может научиться приближать неизвестную функцию f(x) = y между любым входом «x» и любым выходом «y», предполагая, что они связаны корреляцией или причинно-следственной связью.
В процессе обучения находится правильный «f» или способ превращения «x» в «y», будь то f(x) = 3x + 12 или f(x) = 9x - 0,1.
Задачи классификации связаны с наборами данных, чтобы нейронные сети выполняли корреляцию между метками и данными. Известно контролируемое обучение следующих видов:
- распознавание лиц;
- идентификация людей на изображениях;
- определение выражения лица: сердитое, радостное;
- идентификация объектов на изображениях: знаки остановки, пешеходы, указатели полосы движения;
- распознавание жестов в видео;
- определение голоса ораторов;
- классификация текста-спама.
Пример сверточной нейронной сети
Сверточная нейронная сеть похожа на многослойную сеть перцептрона. Основным различием является то, что CNN изучает, как она структурирована и для какой цели используется. Вдохновителями CNN были биологические процессы. Их структура имеет видимость зрительной коры, присутствующей у животного. Они применяются в области компьютерного зрения и успешны в достижении современного уровня производительности в различных областях исследований.
Прежде чем начинают кодировать CNN, для построения модели используют библиотеку, например, Keras с бэкэндом Tensorflow. Сначала выполняют необходимый импорт. Библиотека помогает строить сверточную нейронную сеть. Загружают набор данных mnist через keras. Импортируют последовательную модель keras, в которую можно добавить слои свертки и объединения, плотные слои, так как они используются для прогнозирования меток. Выпадающий слой уменьшает переоснащение, а выравнивающий преобразует трехмерный вектор в одномерный. Наконец, импортируем numpy для матричных операций:
- Y = 2 # значение 2 представляет, что изображение имеет цифру 2;
- Y = [0,0,1,0,0,0,0,0,0,0] # 3-я позиция в векторе сделана 1;
- # Здесь значение класса преобразуется в матрицу двоичного класса.
Алгоритм строительства:
- Добавляют к последовательной модели сверхточные слои и максимальный пул.
- Добавляют выпадающие слои между ними. Выпадающий случайным образом отключает некоторые нейроны в сети, что заставляет данные находить новые пути и уменьшает переоснащение.
- Добавляют плотные слои, которые используются для предсказания класса (0–9).
- Компилируют модель с категориальной функцией кросс-энтропийной потери, оптимизатором Adadelta и метрикой точности.
- После обучения оценивают потери и точность модели по данным испытаний и распечатывают ее.
Моделирование в Matlab
Представим простой пример нейронных сетей Матлаб-моделирования.
Предполагая, что "а" модель имеет три входа "a", "b" и "c" и генерирует выход "y".
Для целей генерации данных: у = 5а + bc + 7с.
Сначала прописывают небольшой скрипт для генерации данных:
- а = Rand (11000);
- b = Rand (1,1000);
- с = Rand (1,1000);
- n = Rand (1,1000) * 0,05;
- у = а * 5 + Ь * с + 7 * с + n,
где n - это шум, специально добавленный, чтобы сделать его похожим на реальные данные. Величина шума составляет 0,1 и является равномерной.
Таким образом, вход - это набор "a", "b" и "c", а вывод:
- I = [a; b; c];
- O = y.
Далее используют встроенную функцию matlab newff для генерации модели.
Примеры задач нейронных сетей
Сначала создают матрицу R размером 3 * 2. Первый столбец покажет минимум всех трех входов, а второй - максимум трех входов. В этом случае три входа находятся в диапазоне от 0 до 1, поэтому:
R = [0 1; 0 1; 0 1].
Теперь создают матрицу размера, которая имеет v-размер всех слоев: S = [51].
Теперь вызывают функцию newff следующим образом:
net = newff ([0 1; 0 1; 0 1], S, {'tansig', 'purelin'}).
Нейронная модель {'tansig', 'purelin'} показывает функцию отображения двух слоев.
Обучают ее с данными, которые созданы ранее: net = train(net,I,O).
Сеть обучена, можно увидеть кривую производительности, как она обучается.
Теперь снова моделируют ее на тех же данных и сравнивают выходные данные:
O1 = sim(net,I);
plot(1:1000,O,1:1000,O1).
Таким образом, входная матрица будет:
- net.IW{1}
- -0.3684 0.0308 -0.5402
- 0.4640 0.2340 0.5875
- 1.9569 -1.6887 1.5403
- 1.1138 1.0841 0.2439
- net.LW{2,1}
- -11.1990 9.4589 -1.0006 -0.9138
Приложения искусственного интеллекта
Примеры реализации нейронной сети включают в себя онлайн-решения для самообслуживания и создания надежных рабочих процессов. Существуют модели глубокого обучения, используемые для чат-ботов, и поскольку они продолжают развиваться, можно ожидать, что эта область будет больше использоваться для широкого круга предприятий.
Области применения:
- Автоматический машинный перевод. Он не является чем-то новым, глубокое обучение помогает улучшить автоматический перевод текста с помощью сложенных сетей и позволяет переводить изображения.
- Простой пример применение нейронных сетей - добавление цвета к черно-белым изображениям и видео. Его можно автоматически делать с помощью моделей с углубленным изучением.
- Машины изучают пунктуацию, грамматику и стиль фрагмента текста и могут использовать разработанную им модель для автоматического создания совершенно нового текста с надлежащим написанием, грамматикой и стилем текста.
Искусственные нейронные сети ANN и более сложная техника глубокого обучения являются одними из наиболее совершенных инструментов для решения сложных задач. Хотя бум применения в ближайшее время маловероятен, прогресс технологий и приложений искусственного интеллекта, безусловно, будет захватывающим.
Несмотря на то что дедуктивные рассуждения, логические выводы и принятие решений с помощью компьютера сегодня еще очень далеки от совершенства, уже достигнуты значительные успехи в применении методов искусственного интеллекта и связанных с ними алгоритмов.