Нейронные сети обучение без учителя


Содержание

Обучение нейронной сети

Изучаем нейронные сети за четыре шага

Рассказывает Per Harald Borgen

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

Шаг 1. Нейроны и метод прямого распространения

Так что же такое «нейронная сеть»? Давайте подождём с этим и сперва разберёмся с одним нейроном.

Нейрон похож на функцию: он принимает на вход несколько значений и возвращает одно.

Круг ниже обозначает искусственный нейрон. Он получает 5 и возвращает 1. Ввод — это сумма трёх соединённых с нейроном синапсов (три стрелки слева).

В левой части картинки мы видим 2 входных значения (зелёного цвета) и смещение (выделено коричневым цветом).

Входные данные могут быть численными представлениями двух разных свойств. Например, при создании спам-фильтра они могли бы означать наличие более чем одного слова, написанного ЗАГЛАВНЫМИ БУКВАМИ, и наличие слова «виагра».

Входные значения умножаются на свои так называемые «веса», 7 и 3 (выделено синим).

Теперь мы складываем полученные значения со смещением и получаем число, в нашем случае 5 (выделено красным). Это — ввод нашего искусственного нейрона.

Потом нейрон производит какое-то вычисление и выдает выходное значение. Мы получили 1, т.к. округлённое значение сигмоиды в точке 5 равно 1 (более подробно об этой функции поговорим позже).

Если бы это был спам-фильтр, факт вывода 1 означал бы то, что текст был помечен нейроном как спам.

Иллюстрация нейронной сети с Википедии.

Если вы объедините эти нейроны, то получите прямо распространяющуюся нейронную сеть — процесс идёт от ввода к выводу, через нейроны, соединённые синапсами, как на картинке слева.

Я очень рекомендую посмотреть серию видео от Welch Labs для улучшения понимания процесса.

Шаг 2. Сигмоида

После того, как вы посмотрели уроки от Welch Labs, хорошей идеей было бы ознакомиться с четвертой неделей курса по машинному обучению от Coursera, посвящённой нейронным сетям — она поможет разобраться в принципах их работы. Курс сильно углубляется в математику и основан на Octave, а я предпочитаю Python. Из-за этого я пропустил упражнения и почерпнул все необходимые знания из видео.

Сигмоида просто-напросто отображает ваше значение (по горизонтальной оси) на отрезок от 0 до 1.

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

Но на одних видео далеко не уедешь. Для полного понимания я решил закодить её самостоятельно. Поэтому я начал писать реализацию алгоритма логистической регрессии (который использует сигмоиду).

Это заняло целый день, и вряд ли результат получился удовлетворительным. Но это неважно, ведь я разобрался, как всё работает. Код можно увидеть здесь.

Вам необязательно делать это самим, поскольку тут требуются специальные знания — главное, чтобы вы поняли, как устроена сигмоида.

Шаг 3. Метод обратного распространения ошибки

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

Вкратце: вы оцениваете, насколько сеть ошиблась, и изменяете вес входных значений (синие числа на первой картинке).

Процесс идёт от конца к началу, так как мы начинаем с конца сети (смотрим, насколько отклоняется от истины догадка сети) и двигаемся назад, изменяя по пути веса, пока не дойдём до ввода.

Для вычисления всего этого вручную потребуются знания матанализа. Khan Academy предоставляет хорошие курсы по матанализу, но я изучал его в университете.

Также можно не заморачиваться и воспользоваться библиотеками, которые посчитают весь матан за вас.

Скриншот из руководства Мэтта Мазура по методу обратного распространения ошибки.

Вот три источника, которые помогли мне разобраться в этом методе:

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

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

Эти статьи также помогут вам изучить такие понятия, как функция стоимости и градиентный спуск.

Шаг 4. Создание своей нейронной сети

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

Ещё одной полезной статьёй оказалась A Neural Network in 11 lines of Python от IAmTrask. В ней содержится удивительное количество знаний, сжатых до 11 строк кода.

Скриншот руководства от IAmTrask

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

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

После этого можно ознакомиться с руководством Wild ML от Denny Britz, в котором разбираются нейронные сети посложнее.

Скриншот из руководства WildML

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

Для поиска хороших наборов данных можете посетить мой сайт Datasets.co и выбрать там подходящий.

Так или иначе, теперь вам лучше начать свои эксперименты, чем слушать мои советы. Лично я сейчас изучаю Python-библиотеки для программирования нейронных сетей, такие как Theano, Lasagne и nolearn.

Перевод статьи «Learning How To Code Neural Networks»

Как обучить свою первую глубокую нейронную сеть

Пошаговое руководство по обучению нейронной сети.

Автор: Пит Уорден (Pete Warden)

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

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

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

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

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

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

Устанавливаем виртуальную машину

Для работы с виртуальной машиной нам понадобится компьютер с OS X или Linux и свободное ПО для виртуализации Vagrant. Если у вас еще нет Vagrant, перейдите по ссылке и следуйте инструкциям в разделе «Getting Started» («Приступая к работе»).

После установки Vagrant открываем новое окно терминала и создаем каталог для виртуальной машины с помощью следующих команд:

Теперь загружаем образ виртуальной машины. Размер образа составляет почти 2 ГБ, поэтому процесс загрузки может занять некоторое время.

vagrant box add dl_webcast https://d2rlgkokhpr1uq.cloudfront.net/dl_webcast.box

Загрузив образ, запускаем новый виртуальный сервер:

vagrant init dl_webcast vagrant up

Входим в виртуальную машину:

Используем предварительно обученную нейронную сеть

Я покажу вам, как работать с фреймворком для глубокого обучения Caffe, разработанным Янцином Цзя (Yangqing Jia) и командой Berkeley Vision and Learning Center (BVLC).

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

Мы будем использовать нейронную сеть, основанную на архитектуре Крижевского (Krizhevsky) и его команды, позволившей им выиграть соревнование ImageNet 2012.

Сеть уже обучена командой BVLC, но поскольку обучение происходило на наборе изображений, доступном только для некоммерческого использования, она также может применяться только в исследовательских целях.

Данная сеть способна распознавать 1 000 различных категорий объектов. Классификация выполняется с помощью простой команды:

python python/classify.py –print_results examples/images/cat.jpg foo

Мы увидим ряд информационных сообщений, последнее из которых будет иметь следующий вид:

[(‘kit fox’, ‘0.27215’), (‘red fox’, ‘0.19984’), (‘wood rabbit’, ‘0.13209’), (‘hare’, ‘0.07283’), (‘Egyptian cat’, ‘0.06632’)]

Поздравляю! Только что вы впервые классифицировали изображение с помощью глубокой нейронной сети. Выходной массив содержит предположения о том, какой объект представлен на изображении. Числа характеризуют «уверенность» алгоритма, а текстовые метки описывают категории. Взглянув на тестовое изображение, мы увидим, что это не совсем лисица (kit fox), но причина ошибки вполне понятна.

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

В файловой системе виртуальной машины они появятся в следующем каталоге:

Самостоятельно обучаем нейронную сеть

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

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

Я расскажу вам, как обучить сеть для решения одной из них.

Одной из первых задач, для решения которых были применены сверточные нейронные сети (convolutional neural network), была задача распознавания рукописных цифр. Ян Лекун (Yann LeCun) сделал большой вклад в данную область знаний в 90-е годы, а версия его архитектуры LeNet включена в состав Caffe. Загрузим набор данных MNIST, состоящий из 70 000 изображений рукописных цифр:

cd data/mnist ./get_mnist.sh cd ../.. cd examples/mnist

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

prototxt в редакторе nano (или в любом другом) и изменить последнюю строку, задав CPU вместо GPU, потому что в виртуальной машине мы не можем использовать преимущества видеокарты.

Запустим процесс обучения с помощью следующего скрипта:

Будет выведено большое количество информационных сообщений, и через несколько минут процесс завершится. Теперь выполним команду:

Мы должны увидеть созданный файл со следующим именем:

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

python python/classify.py –print_results –model_def examples/mnist/lenet.prototxt –pretrained_model examples/mnist/lenet_iter_10000 –force_grayscale –center_only –labels_file data/mnist/mnist_words.txt –images_dim 28,28 data/mnist/sample_digit.png foo

В результате получим сообщение о том, что с вероятностью 100% это цифра 4, что соответствует действительности!

Руководство по установке

Ниже представлены команды, которые я выполнил, чтобы создать виртуальную машину, описанную выше. Если вы используете Vagrant, создайте чистый образ Ubuntu 14.04:

vagrant box add ubuntu-14.04 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box

После создания и инициализации виртуальной машины, входим в нее и запускаем процесс установки CUDA. Чтобы собрать Caffe, необходимы заголовочные файлы и библиотеки CUDA, даже если мы собираемся работать только на CPU. Поэтому нам не обойтись без пакета CUDA, размер которого составляет 900 МБ.

sudo apt-get install linux-headers-uname -r curl -O “http://developer.download.nv >

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

echo ‘export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64’ >>

Теперь установим ряд зависимостей с помощью apt-get:

Обучение нейронных сетей

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

Представление знаний в нейронных сетях состоит из сети, весов связей и семантических интерпретаций, присоединенных к активациям узлов.

Например, в контексте управленческой классификации при использовании обученной нейронной сети можно предугадать, выберет ли клиент новый продукт, основываясь на выраженных в числах данных о клиенте, таких как последняя купленная марка, интерес к предварительному экспонированию, возможность дополнительного экспонирования и интерес к нему. Эти кванторные признаки атрибутов являются входами в обученную нейронную сеть. Активация «+1», полученная от нейронной сети, может указывать на то, что клиент выберет новое изделие, а «-1» — наоборот.

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

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

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

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

В системах нейронных сетей большое количество парадигм обучения. Обучение с учителем (контролируемое обучение) и обучение без учителя (неконтролируемое обучение или самообучение) — вот две главные парадигмы, обычно используемые в проектировании обучающих алгоритмов. Бывает ещё смешанная парадигма.

В парадигме обучения с учителем нейронная сеть располагает правильными ответами (выходами сети) на каждый входной пример. Процесс обучения пытается минимизировать «дистанцию» между фактическими и желаемыми выходами нейронной сети.

Веса настраиваются так, чтобы сеть производила ответы как можно более близкие к известным правильным ответам.

Усиленный вариант обучения с учителем предполагает, что известна только критическая оценка правильности выхода нейронной сети, но не сами правильные значения выхода.

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

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

Нейронная сеть должна развить собственное представление стимулов входа без помощи учителя.

При смешанном обучении часть весов определяется посредством обучения с учителем, в то время как остальная получается с помощью самообучения.

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

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

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

Известны 4 основных типа правил обучения: коррекция по ошибке, машина Больцмана, правило Хебба и обучение методом соревнования.

Правило коррекции по ошибке. При обучении с учителем для каждого входного примера задан желаемый выход d. Реальный выход сети y может не совпадать с желаемым.

Принцип коррекции по ошибке при обучении состоит в использовании сигнала (d-y) для модификации весов, обеспечивающей постепенное уменьшение ошибки. Обучение имеет место только в случае, когда перцептрон ошибается. Известны различные модификации этого алгоритма обучения [J. Hertz, A.

Krogh, and R.G. Palmer, Introduction to the Theory of Neural Computation, Addison-Wesley, Reading, Mass., 1991].

Обучение Больцмана. Представляет собой стохастическое правило обучения, которое следует из информационных теоретических и термодинамических принципов [J.A. Anderson and E. Rosenfeld, “Neurocomputing: Foundation of Research”, MIT Press, Cambridge, Mass., 1988.].

Целью обучения Больцмана является такая настройка весовых коэффициентов, при которой состояния видимых нейронов удовлетворяют желаемому распределению вероятностей.

Обучение Больцмана может рассматриваться как специальный случай коррекции по ошибке, в котором под ошибкой понимается расхождение корреляций состояний в двух режимах.

Правило Хебба. Самым старым обучающим правилом является постулат обучения Хебба [D.O. Hebb, The Organization of Behavior, John Wiley & Sons, New York, 1949.].

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

Важной особенностью этого правила является то, что изменение синаптического веса зависит только от активности нейронов, которые связаны данным синапсом. Это существенно упрощает цепи обучения в реализации VLSI.

Обучение методом соревнования. В отличие от обучения Хебба, в котором множество выходных нейронов могут возбуждаться одновременно, при соревновательном обучении выходные нейроны соревнуются между собой за активизацию.

Это явление известно как правило “победитель берет все”. Подобное обучение имеет место в биологических нейронных сетях.

Обучение посредством соревнования позволяет кластеризовать входные данные: подобные примеры группируются сетью в соответствии с корреляциями и представляются одним элементом.

При обучении модифицируются только веса “победившего” нейрона. Эффект этого правила достигается за счет такого изменения сохраненного в сети образца (вектора весов связей победившего нейрона), при котором он становится чуть ближе ко входному примеру. На рис. 3 дана геометрическая иллюстрация обучения методом соревнования.

Входные векторы нормализованы и представлены точками на поверхности сферы. Векторы весов для трех нейронов инициализированы случайными значениями. Их начальные и конечные значения после обучения отмечены Х на рис. 3а и 3б соответственно.

Каждая из трех групп примеров обнаружена одним из выходных нейронов, чей весовой вектор настроился на центр тяжести обнаруженной группы.


Рис. N.
Пример обучения методом соревнования: (а) перед обучением; (б) после обучения

Можно заметить, что сеть никогда не перестанет обучаться, если параметр скорости обучения не равен 0. Некоторый входной образец может активизировать другой выходной нейрон на последующих итерациях в процессе обучения. Это ставит вопрос об устойчивости обучающей системы.

Система считается устойчивой, если ни один из примеров обучающей выборки не изменяет своей принадлежности к категории после конечного числа итераций обучающего процесса.

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

Эти особенности обучения методом соревнования известны под названием дилеммы стабильности-пластичности Гроссберга.

В Таблице 2 представлены различные алгоритмы обучения и связанные с ними архитектуры сетей (список не является исчерпывающим).

В последней колонке перечислены задачи, для которых может быть применен каждый алгоритм.

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

Adaline и Madaline [R.P.Lippmann, “An Introduction to Computing with Neural Nets”, IEEE ASSP Magazine, Vol.4, No.2, Apr. 1987, pp. 4-22.],

линейный дискриминантный анализ], проекции Саммона [A.K. Jain and J. Mao, “Neural Networks and Pattern Recognition”, in Computational Intelligence: Imitating Life, J.M. Zurada, R.J. Marks II, and C.J. Robinson, eds., IEEE Press, Piscataway, N.J., 1994, pp. 194-212.],

метод/анализ главных компонентов [J. Hertz, A. Krogh, and R.G. Palmer, Introduction to the Theory of Neural Computation, Addison-Wesley, Reading, Mass., 1991.].

Таблица 2. Известные алгоритмы обучения.

Парадигма
Обучающее правило
Архитектура
Алгоритм обучения
Задача

С учителем
Коррекция ошибки
Однослойный и многослойный перцептрон
Алгоритмы обучения перцептрона Обратное распространение Adaline и Madaline
Классификация образов Аппроксимация функций Предсказание, управление

Больцман
Рекуррентная
Алгоритм обучения Больцмана
Классификация образов

Хебб
Многослойная прямого распространения
Линейный дискриминантный анализ
Анализ данных Классификация образов

Соревнование
Соревнование
Векторное квантование
Категоризация внутри класса Сжатие данных

Сеть ART
ARTMap
Классификация образов

Без учителя
Коррекция ошибки
Многослойная прямого распространения
Проекция Саммона
Категоризация внутри класса Анализ данных

Хебб
Прямого распространения или соревнование
Анализ главных компонентов
Анализ данных Сжатие данных

Сеть Хопфилда
Обучение ассоциативной памяти
Ассоциативная память

Соревнование
Соревнование
Векторное квантование
Категоризация Сжатие данных

SOM Кохонена
SOM Кохонена
Категоризация Анализ данных

Сети ART
ART1, ART2
Категоризация

Смешанная
Коррекция ошибки и соревнование
Сеть RBF
Алгоритм обучения RBF
Классификация образов Аппроксимация функций Предсказание, управление

Дата добавления: 2020-12-27; просмотров: 3715;

2.5. Алгоритмы обучения нейронных сетей с учителем

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

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

Обучение НС может вестись с учителем или без учителя.

В первом случае сети предъявляются значения как входных, так и желательных выходных сигналов, и она по некоторому внутреннему алгоритму подстраивает веса своих синаптических связей.

Во втором случае выходы НС формируются самостоятельно, а веса изменяются по алгоритму, учитывающему только входные и производные от них сигналы.

Существует большое множество различных алгоритмов обучения, которые делятся на два больших класса: детерминистские и стохастические. В первом из них подстройка весов представляет собой жесткую последовательность действий, во втором – она производится на основе действий, подчиняющихся некоторому случайному процессу.

Рассмотрим алгоритм обучения с учителем (рис. 2.11).

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

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

По этому принципу строится, например, алгоритм обучения однослойного персептрона.

Рассмотрим более подробно алгоритм обучения НС с учителем для однослойной нейронной сети, примером которой является однослойный персептрон (см. рис. 2.7).

1) Проинициализировать элементы весовой матрицы (обычно небольшими случайными значениями).

Рис. 2.11. Схема процесса обучения нейросети с учителем

2) Подать на входы один из входных векторов, которые сеть должна научиться различать, и вычислить ее выход.

3) Если выход правильный, перейти на шаг 4.

Иначе вычислить разницу между идеальным и полученным значениями выхода:

Модифицировать веса в соответствии с формулой

где t и t+1 – номера соответственно текущей и следующей итераций; – коэффициент скорости обучения, 0 1000.

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

Кроме того, фигурирующее в названии емкости прилагательное “детерминистский” означает, что полученная оценка емкости подходит абсолютно для всех возможных входных образов, которые могут быть представлены Nx входами.

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

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

При этом каждый логический уровень – “1” и “0” – будет обозначать отдельный класс. На двух выходах можно закодировать уже 4 класса и так далее. Однако результаты работы сети, организованной таким образом, можно сказать – “под завязку”, – не очень надежны.

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

Такие НС позволяют проводить классификацию входных образов, объединенных в нечеткие (размытые или пересекающиеся) множества. Это свойство приближает подобные НС к условиям реальной жизни.

Рассматриваемая НС имеет несколько “узких мест”. Во-первых, в процессе обучения может возникнуть ситуация, когда большие положительные или отрицательные значения весовых коэффициентов сместят рабочую точку на сигмоидах многих нейронов в область насыщения. Малые величины производной от логистической функции приведут в соответствие с (2.21) и (2.22) к остановке обучения, что парализует НС.

Во-вторых, применение метода градиентного спуска не гарантирует, что будет найден глобальный, а не локальный минимум целевой функции. Эта проблема связана еще с одной, а именно – с выбором величины скорости обучения.

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


Поэтому в качестве h обычно выбирается число меньше 1, но не очень маленькое, например, 0.1, и оно, вообще говоря, может постепенно уменьшаться в процессе обучения.

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

Существует и иной метод исключения локальных минимумов, а заодно и паралича НС, заключающийся в применении стохастических НС.

Нейронные сети. C чего начать?

Недавно меня пригласили в закрытый чат в телеграмме – Нейронные сети (AI Community). В этом чате собрались полторы тысячи специалистов и людей, интересующихся нейронными сетями, машинным обучением и работой с данными.

Я попал туда из-за рабочего интереса к теме, но, к своему удивлению, узнал, что многие начали свой путь в познании нейронных сетей недавно.

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

Из чата я узнал, как люди изучают построение нейронных сетей с нуля.

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

В этом мне помогли следующие два видео:

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

Часть первая. В ней идет постановка проблемы и дается определение нейронной сети на примере распознавания рукописного ввода чисел. Видео требует понимания математики на уровне старшей школы/первых курсов ВУЗа, однако проблема разобрана постепенно и в общем виде ее поймет каждый.

Представьте, что перед вами написанное от руки число. Вне зависимости от особенностей почерка, человек легко отличит 3 от 6 или 1. Как быть компьютеру? Наклон, размер и даже вид различных цифр отличается каждый раз. Чтобы решить такую сложную задачу, нужно разбить ее на несколько меньших частей.

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

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

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

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

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

С помощью изначального набора данных сеть сможет “тренироваться”, получая результаты. Чем больше сеть угадывает правильный результат, тем крепче становятся связи между нейронами на разных слоях, которые отвечают за успешный результат.

После сравнительно большого числа повторений, нейросеть станет давать правильный ответ с определенной, достаточно высокой вероятностью.

Для оценки результатов тренировки создается еще одна функция, которая оценивает отклонение. Такую функцию называют функцией ошибки или функцией потерь (cost function). Задача обучения состоит в нахождении минимума этой функции. Сам процесс обучения т.н. backpropagation (Метод обратного распространения ошибки) будет рассмотрен в следующем видео, которое выйдет скоро.

Я подписался на канал и буду держать вас в курсе новых лекций. Для того, чтобы приближать светлое будущее с технологическим прогрессом, нужно понимать, как он работает и с чем именно он нам поможет. В следующей части я сделаю обзор самых популярных курсов для новичков по ИИ и machine learning.

Один из таких курсов начинается на Coursera с 30 октября 2020 года. “Введение в машинное обучение” – это стартовый курс по машинному обучению от Школы Анализа Данных Яндекса и Высшей Школы Экономики. Я беру этот курс сейчас, у вас тоже есть возможность присоединиться. Курс бесплатный, если вы не хотите получить сертификат о прохождении по завершению.

Чтобы получить приглашение в чат о нейронных сетях, свяжитесь со мной в telegram @vintego

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

Нейронные сети: обучение без учителя

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

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

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

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

Главная черта, делающая обучение без учителя привлекательным, – это его “самостоятельность”. Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов синапсов.

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

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

Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу:

где yi(n-1) – выходное значение нейрона i слоя (n-1), yj(n) – выходное значение нейрона j слоя n; wij(t) и wij(t-1) – весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно; – коэффициент скорости обучения. Здесь и далее, для общности, под n подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами.

Существует также и дифференциальный метод обучения Хебба.

Здесь yi(n-1)(t) и yi(n-1)(t-1) – выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1; yj(n)(t) и yj(n)(t-1) – то же самое для нейрона j слоя n. Как видно из формулы (2), сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

Полный алгоритм обучения с применением вышеприведенных формул будет выглядеть так:

1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.

На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей[1], то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение yi(n), i=0…Mi-1, где Mi – число нейронов в слое i; n=0…N-1, а N – число слоев в сети.

3. На основании полученных выходных значений нейронов по формуле (1) или (2) производится изменение весовых коэффициентов.

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

На втором шаге цикла попеременно предъявляются все образы из входного набора.

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

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

Другой алгоритм обучения без учителя – алгоритм Кохонена – предусматривает подстройку синапсов на основании их значений от предыдущей итерации.

Из вышеприведенной формулы видно, что обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя yi(n-1), и весовыми коэффициентами его синапсов.

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

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

Максимальное произведение дает выигравший нейрон.

Другой вариант – расчет расстояния между этими векторами в p-мерном пространстве, где p – размер векторов.

где j – индекс нейрона в слое n, i – индекс суммирования по нейронам слоя (n-1), wij – вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n. Корень в формуле (4) брать не обязательно, так как важна лишь относительная оценка различных Dj.

В данном случае, “побеждает” нейрон с наименьшим расстоянием. Иногда слишком часто получающие аккредитацию нейроны принудительно исключаются из рассмотрения, чтобы “уравнять права” всех нейронов слоя. Простейший вариант такого алгоритма заключается в торможении только что выигравшего нейрона.

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

где xi – i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n – его размерность. Это позволяет сократить длительность процесса обучения.

Инициализация весовых коэффициентов случайными значениями может привести к тому, что различные классы, которым соответствуют плотно распределенные входные образы, сольются или, наоборот, раздробятся на дополнительные подклассы в случае близких образов одного и того же класса. Для избежания такой ситуации используется метод выпуклой комбинации[3]. Суть его сводится к тому, что входные нормализованные образы подвергаются преобразованию:

где xi – i-ая компонента входного образа, n – общее число его компонент, (t) – коэффициент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине

где n – размерность вектора весов для нейронов инициализируемого слоя.

На основе рассмотренного выше метода строятся нейронные сети особого типа – так называемые самоорганизующиеся структуры – self-organizing feature maps (этот устоявшийся перевод с английского, на мой взгляд, не очень удачен, так как, речь идет не об изменении структуры сети, а только о подстройке синапсов).

Для них после выбора из слоя n нейрона j с минимальным расстоянием Dj (4) обучается по формуле (3) не только этот нейрон, но и его соседи, расположенные в окрестности R. Величина R на первых итерациях очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля.

Таким образом, чем ближе конец обучения, тем точнее определяется группа нейронов, отвечающих каждому классу образов.

Большая Энциклопедия Нефти и Газа

Процесс обучения нейронной сети заключается в подборе значений всех ее характеристик таким образом, чтобы отличия выходных векторов от эталонных не превышали заранее установленной величины. [1]

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

Обычно итеративная настройка весов связей осуществляется в соответствии с обучающей выборкой.

Свойство сети обучаться на примерах делает их более привлекательными по сравнению с системами, которые следуют системе правил функционирования, сформулированной экспертами. [2]

Процесс обучения нейронной сети встречного распространения различен для слоев нейронов Кохонена и Гроссберга. Рассмотрим вопросы, возникающие при обучении каждого из этих слоев. [3]

Впроцессе обучения нейронной сети значения D и а постепенно уменьшаются. [4]

Таким образом, процесс обучения нейронной сети состоит из двух этапов. Первоначально производится обучение нейронной сети восстановлению компонент выходного вектора по данным компонент входного вектора. На втором же этапе осуществляется проверка качества обучения. Скорость обучения нейронной сети зависит от значения параметра еп и от выбранного метода обучения. [5]

Важное значение для оптимизациипроцесса обучения нейронной сети имеет подбор пар обучающих векторов ( У) для обучающей страницы.

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

В противном случае, нейронная сеть либо не будет обучаться, либо будет существовать некоторое предельное, достаточно большое, значение суммарной ошибки рассогласования, достичь значений ниже которого окажется невозможно. [6]

Перед тем, как начинатьпроцесс обучения нейронной сети, необходимо присвоить весам начальные значения.

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

Конечно, можно положить начальные веса во всей сети равными нулю, но тогда частные производные от невязки по всем весам будут одинаковыми, и изменения весов не будут должным образом структурированы. [7]

В результате, после окончанияпроцесса обучения нейронной сети, состоящего из построения матрицы связей, которая обеспечивает восстановление компонент набора векторов Y по определенному набору векторов X, и проверки качества обучения нейронная сеть способна выполнять процедуру восстановления функции распределения параметров физических полей по набору интегральных данных, поступающих от измерительных линий распределенной волоконно-оптической измерительной сети. На рис. 11.1 приведены результаты, иллюстрирующие работу кибернетической нейронной сети типа двухслойный персептрон для восстановления пространственной функции распределения физического поля, в сравнении с результатами, получаемыми при реконструкции этой функции распределения с использованием традиционного итерационного вычислительного метода. [8]

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

Можно встретить утверждения, что в ряде случаев локальный минимум является вполне приемлемым решением [105], однако в общей ситуации необходимо разработать стратегию, которая позволяла бы избегать таких точек и гарантировала бы сходимость обучающего алгоритма к глобальному решению. [9]
Важно

Процесс обучения нейронной сети в программе BrainMaker возможно сочетать со многими контрольными функциями, основной из которых является тестирование сети в процессе обучения. Это означает, что набор обучающих примеров можно разбить в определенной пропорции ( по умолчанию, 1 / 9) на тестирующий и обучающий наборы. [10]

Функционал F в выражении (11.1) определяется матрицей коэффициентов связи W ( wij) между нейронами входного и выходного слоев нейронной сети. Значения элементов матрицы связей формируются впроцессе обучения нейронной сети. [11]

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

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

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

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

В частности, в трехслойных перцептро-нах на нейронах скрытого слоя применяется в большинстве случаев логистическая функция, а тип передаточной функции нейронов выходного слоя определяется на основе анализа результатов вычислительных экспериментов на сети. [13]

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

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

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

В частности, в трехслойных перцептро-нах на нейронах скрытого слоя применяется в большинстве случаев логистическая функция, а тип передаточной функции нейронов выходного слоя определяется на основе анализа результатов вычислительных экспериментов на сети. [14]

Diplom Consult.ru

Обучение без учителя

Алгоритмы обучения Хебба

Сигнальный метод обучения Хебба

Изменение весов производится по правилу:

где – выходное значение i-го нейрона (q-1)-го слоя;

– выходное значение j-го нейрона (q)-го слоя;

и – весовой коэффициент синапса, соединяющего эти нейроны на t-й и (t-1)-й итерациях соответственно;

 – коэффициент скорости обучения.

При обучении по данному методу усиливаются связи между возбужденными нейронами.

Илон Маск рекомендует:  Фиксированный дизайн. Свойство float

Дифференциальный метод обучения Хебба

Изменение весов производится по правилу:

где и – выходное значение i-го нейрона (q-1)-го слоя на t-й и (t-1)-й итерациях соответственно;

и – выходное значение j-го нейрона (q)-го слоя на t-й и (t-1)-й итерациях соответственно.

Более интенсивно обучаются синапсы, соединяющие нейроны, выходы которых увеличиваются наиболее динамично.

Алгоритм обучения для обоих методов [4]:

Шаг 1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.

Шаг 2. На входы НС подается входной образ и сигналы распространяются по всем слоям.

Шаг 3. Производится изменение весовых коэффициентов по одной из указанных формул.

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

На шаге 2 НС попеременно предъявляются все образы входного набора.

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

Алгоритм обучения Кохонена

Изменение весов производится по правилу [4]:

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

Алгоритм обучения сходен с алгоритмом Хебба. Основное отличие в том, что на шаге 3 из всего слоя выбирается нейрон, значения синапсов которого максимально походят на входной образ, и подстройка весов производится только для него. Подстройка весов выбранного нейрона называется аккредитацией [2].

Критерии выбора аккредитуемого нейрона:

а) Максимум скалярного произведения вектора весов синапсов нейрона и вектора входа нейрона.

б) Минимум расстояния между этими векторами:

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

С целью сокращения длительности процесса обучения нормируют входные образы и начальные значения весовых коэффициентов:

где n – количество входных сигналов.

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

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

Обработка данных: глубокое обучение без учителя на языке Python

Введение и план курса

Здравствуйте и добро пожаловать на занятия по теме «Глубокое обучение без учителя на языке Python: глубокое обучение на языке Python, часть 4».

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

Объединив эти две вещи, мы получаем глубокое обучение без учителя.

3,0,1,0,0

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

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

Наконец, мы объединим все этих понятия и я наглядно покажу, что получается при использовании метода главных компонент и t-SNE на признаках, обнаруженных автокодировщиками и ограниченной машиной Больцмана. Вы увидите, что даже без меток взаимосвязи будут находиться.

7,1,0,0,0

Как этот курс вписывается в занятия глубоким обучением

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

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

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

10,0,0,1,0

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

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

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

14,0,0,0,1

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

Обучение без учителя

Обучение без учителя (самообучение, спонтанное обучение, англ. Unsupervised learning ) — один из способов машинного обучения, при котором испытуемая система спонтанно обучается выполнять поставленную задачу без вмешательства со стороны экспериментатора. С точки зрения кибернетики, это является одним из видов кибернетического эксперимента. Как правило, это пригодно только для задач, в которых известны описания множества объектов (обучающей выборки), и требуется обнаружить внутренние взаимосвязи, зависимости, закономерности, существующие между объектами.

Обучение без учителя часто противопоставляется обучению с учителем, когда для каждого обучающего объекта принудительно задаётся «правильный ответ», и требуется найти зависимость между стимулами и реакциями системы.

Связь с физиологией

Несмотря на многочисленные прикладные достижения, обучение с учителем критиковалось за свою биологическую неправдоподобность. Трудно вообразить обучающий механизм в мозге, который бы сравнивал желаемые и действительные значения выходов, выполняя коррекцию с помощью обратной связи. Если допустить подобный механизм в мозге, то откуда тогда возникают желаемые выходы? Обучение без учителя является намного более правдоподобной моделью обучения в биологической системе. Развитая Кохоненом и многими другими, она не нуждается в целевом векторе для выходов и, следовательно, не требует сравнения с предопределенными идеальными ответами [1] .

Понятие «обучения без учителя» в теории распознавания образов

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

Такой отход от эксперимента и построение теории связаны с различным мнением специалистов во взглядах. Различия, в частности, возникают при ответе на вопрос: «Возможны ли единые принципы адекватного описания образов различной природы, или же такое описание каждый раз есть задача для специалистов конкретных знаний?».

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

В теории распознавания образов различают в основном три подхода к данной проблеме [3] :

  • Эвристические методы;
  • Математические методы;
  • Лингвистические (синтаксические) методы.

Типы входных данных

  • Признаковое описание объектов. Каждый объект описывается набором своих характеристик, называемых признаками. Признаки могут быть числовыми или нечисловыми.
  • Матрица расстояний между объектами. Каждый объект описывается расстояниями до всех остальных объектов обучающей выборки.

Решаемые задачи

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

Задачи кластеризации

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

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

Задачи обобщения

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

При этом в эксперименте по «чистому обобщению» от модели мозга или перцептрона требуется перейти от избирательной реакции на один стимул (допустим, квадрат, находящийся в левой части сетчатки) к подобному ему стимулу, который не активизирует ни одного из тех же сенсорных окончаний (квадрат в правой части сетчатки). К обобщению более слабого вида относится, например, требование, чтобы реакции системы распространялись на элементы класса подобных стимулов, которые не обязательно отделены от уже показанного ранее (или услышанного, или воспринятого на ощупь) стимула.

Задачи поиска правил ассоциации

Исходная информация представляется в виде признаковых описаний. Задача состоит в том, чтобы найти такие наборы признаков, и такие значения этих признаков, которые особенно часто (неслучайно часто) встречаются в признаковых описаниях объектов.

Задачи сокращения размерности

Исходная информация представляется в виде признаковых описаний, причём число признаков может быть достаточно большим. Задача состоит в том, чтобы представить эти данные в пространстве меньшей размерности, по возможности, минимизировав потери информации.

Задачи визуализации данных

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

Некоторые приложения

  • Социологические исследования: формирование представительных подвыборок при организации социологических опросов.
  • Маркетинговые исследования: разбиение множества всех клиентов на кластеры для выявления типичных предпочтений.
  • Анализ рыночных корзин: выявление сочетаний товаров, часто встречающихся вместе в покупках клиентов.


См. также

Примечания

  1. ↑ Уоссермен, Ф. Нейрокомпьютерная техника: Теория и практика. — М.: Мир, 1992
  2. ↑ Вапник В. Н., Червоненкис А. Я., Теория распознавания образов. Статистические проблемы обучения, 1974
  3. ↑ Ту Дж., Гонсалес Р. Принципы распознавания образов, М. 1978

Литература

  • Айвазян С. А., Енюков И. С., Мешалкин Л. Д. Прикладная статистика: основы моделирования и первичная обработка данных. — М.: Финансы и статистика, 1983.
  • Айвазян С. А., Енюков И. С., Мешалкин Л. Д. Прикладная статистика: исследование зависимостей. — М.: Финансы и статистика, 1985.
  • Айвазян С. А., Бухштабер В. М., Енюков И. С., Мешалкин Л. Д. Прикладная статистика: классификация и снижение размерности. — М.: Финансы и статистика, 1989.
  • Журавлев Ю. И., Рязанов В. В., Сенько О. В. «Распознавание». Математические методы. Программная система. Практические применения. — М.: Фазис, 2006. ISBN 5-7036-0108-8.
  • Загоруйко Н. Г. Прикладные методы анализа данных и знаний. — Новосибирск: ИМ СО РАН, 1999. ISBN 5-86134-060-9.
  • Мандель И. Д. Кластерный анализ. — М.: Финансы и статистика, 1988. ISBN 5-279-00050-7.
  • Шлезингер М., Главач В. Десять лекций по статистическому и структурному распознаванию. — Киев: Наукова думка, 2004. ISBN 966-00-0341-2.
  • Hastie, T., Tibshirani R., Friedman J.The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer-Verlag, 2009. — 746 p. — ISBN 978-0-387-84857-0. .
  • Розенблатт, Ф.Принципы нейродинамики: Перцептроны и теория механизмов мозга = Principles of Neurodynamic: Perceptrons and the Theory of Brain Mechanisms. — М. : Мир, 1965. — 480 с. Архивная копия от 21 мая 2015 на Wayback Machine
  • Уоссермен, Ф.Нейрокомпьютерная техника: Теория и практика = Neural Computing. Theory and Practice. — М. : Мир, 1992. — 240 с. — ISBN 5-03-002115-9. Архивная копия от 30 июня 2009 на Wayback Machine
  • Л. Б. Емельянов-Ярославский, Интеллектуальная квазибиологическая система, М., «НАУКА», 1990 — книга о одном подходе самообучения в соответствии с квазибиологической парадигмой

Ссылки

Data mining (рус. добыча данных, интеллектуальный анализ данных, глубинный анализ данных) — собирательное название, используемое для обозначения совокупности методов обнаружения в данных ранее неизвестных, нетривиальных, практически полезных и доступных интерпретации знаний, необходимых для принятия решений в различных сферах человеческой деятельности. Термин введён Григорием Пятецким-Шапиро в 1989 году.

Английское словосочетание «data mining» пока не имеет устоявшегося перевода на русский язык. При передаче на русском языке используются следующие словосочетания: просев информации, добыча данных, извлечение данных, а также интеллектуальный анализ данных. Более полным и точным является словосочетание «обнаружение знаний в базах данных» (англ. knowledge discovery in databases, KDD).

Основу методов data mining составляют всевозможные методы классификации, моделирования и прогнозирования, основанные на применении деревьев решений, искусственных нейронных сетей, генетических алгоритмов, эволюционного программирования, ассоциативной памяти, нечёткой логики. К методам data mining нередко относят статистические методы (дескриптивный анализ, корреляционный и регрессионный анализ, факторный анализ, дисперсионный анализ, компонентный анализ, дискриминантный анализ, анализ временных рядов, анализ выживаемости, анализ связей). Такие методы, однако, предполагают некоторые априорные представления об анализируемых данных, что несколько расходится с целями data mining (обнаружение ранее неизвестных нетривиальных и практически полезных знаний).

Одно из важнейших назначений методов data mining состоит в наглядном представлении результатов вычислений (визуализация), что позволяет использовать инструментарий data mining людьми, не имеющими специальной математической подготовки.

Применение статистических методов анализа данных требует хорошего владения теорией вероятностей и математической статистикой.

Unscrambler — это коммерческий программный продукт для анализа многомерных данных, используемый на этапе калибровки многомерных данных. К многомерным данным чаще всего относят аналитические данные, например, данные по спектроскопии в ближней инфракрасной области, по спектроскопии комбинационного рассеяния света, по разработке прогнозных моделей при использования в режиме реального времени для материалов спектрального анализа. Это программное обеспечение было разработано в 1986 году Харальдом Мартенсом, а позже поддерживалось фирмой CAMO Software.

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

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

Чаще всего автокодировщики применяют каскадно для обучения глубоких (многослойных) сетей. Автокодировщики применяют для предварительного обучения глубокой сети без учителя. Для этого слои обучаются друг за другом, начиная с первых. К каждому новому необученному слою на время обучения подключается дополнительный выходной слой, дополняющий сеть до архитектуры автокодировщика, после чего на вход сети подается набор данных для обучения. Веса необученного слоя и дополнительного слоя автокодировщика обучаются при помощи метода обратного распространения ошибки. Затем слой автокодировщика отключается и создается новый, соответствующий следующему необученному слою сети. На вход сети снова подается тот же набор данных, обученные первые слои сети остаются без изменений и работают в качестве входных для очередного обучаемого автокодировщика слоя. Так обучение продолжается для всех слоев сети за исключением последних. Последние слои сети обычно обучаются без использования автокодировщика при помощи того же метода обратного распространения ошибки и на маркированных данных (обучение с учителем).

Ана́лиз тона́льности те́кста (сентимент-анализ, англ. Sentiment analysis, англ. Opinion mining) — класс методов контент-анализа в компьютерной лингвистике, предназначенный для автоматизированного выявления в текстах эмоционально окрашенной лексики и эмоциональной оценки авторов (мнений) по отношению к объектам, речь о которых идёт в тексте.

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

Глубокое обучение (глубинное обучение; англ. Deep learning) — совокупность методов машинного обучения (с учителем, с частичным привлечением учителя, без учителя, с подкреплением), основанных на обучении представлениям (англ. feature/representation learning), а не специализированным алгоритмам под конкретные задачи. Многие методы глубокого обучения были известны ещё в 1980-е (и даже ранее), но результаты были невпечатляющими, пока продвижения в теории искусственных нейронных сетей (предобучение нейросетей с помощью специального случая ненаправленной графической модели, так называемой ограниченной машины Больцмана) и вычислительные мощности середины 2000-х (прежде всего, графических процессоров Nvidia, а в настоящее время и тензорных процессоров Google) не позволили создавать сложные технологические архитектуры нейронных сетей, обладающие достаточной производительностью и позволяющие решать широкий спектр задач, не поддававшихся эффективному решению ранее, например, в компьютерном зрении, машинном переводе, распознавании речи, причём качество решения во многих случаях теперь сопоставимо, а в некоторых случаях превосходит эффективность «белковых» экспертов.

Задача классифика́ции — задача, в которой имеется множество объектов (ситуаций), разделённых некоторым образом на классы. Задано конечное множество объектов, для которых известно, к каким классам они относятся. Это множество называется выборкой. Классовая принадлежность остальных объектов неизвестна. Требуется построить алгоритм, способный классифицировать (см. ниже) произвольный объект из исходного множества.

Классифици́ровать объект — значит, указать номер (или наименование) класса, к которому относится данный объект.

Классифика́ция объекта — номер или наименование класса, выдаваемый алгоритмом классификации в результате его применения к данному конкретному объекту.

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

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

Некоторые алгоритмы для решения задач классификации комбинируют обучение с учителем с обучением без учителя, например, одна из версий нейронных сетей Кохонена — сети векторного квантования, обучаемые с учителем.

Импульсная нейронная сеть (ИмНС, англ. Pulsed neural networks, PNN) или Спайковая нейронная сеть (СНН, англ. Spiking neural network, SNN) — третье поколение искусственных нейронных сетей (ИНС), которое отличается от бинарных (первое поколение) и частотных/скоростных (второе поколение) ИНС тем, что в нем нейроны обмениваются короткими (у биологических нейронов — около 1-2 мс) импульсами одинаковой амплитуды (у биологических нейронов — около 100 мВ). Является самой реалистичной, с точки зрения физиологии, моделью ИНС.

Иску́сственная нейро́нная се́ть (ИНС) — математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса. После разработки алгоритмов обучения получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.

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

С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т. п.

С математической точки зрения, обучение нейронных сетей — это многопараметрическая задача нелинейной оптимизации.

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

С точки зрения развития вычислительной техники и программирования, нейронная сеть — способ решения проблемы эффективного параллелизма.

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

Иску́сственный интелле́кт (ИИ; англ. artificial intelligence, AI) — свойство интеллектуальных систем выполнять творческие функции, которые традиционно считаются прерогативой человека; наука и технология создания интеллектуальных машин, особенно интеллектуальных компьютерных программ.

ИИ связан со сходной задачей использования компьютеров для понимания человеческого интеллекта, но не обязательно ограничивается биологически правдоподобными методами.

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

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

Большинство исследователей (см., напр.,) склоняются к тому, что впервые термин «кластерный анализ» (англ. cluster — гроздь, сгусток, пучок) был предложен математиком Р. Трионом. Впоследствии возник ряд терминов, которые в настоящее время принято считать синонимами термина «кластерный анализ»: автоматическая классификация, ботриология.

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

Машинное обучение (англ. machine learning, ML) — класс методов искусственного интеллекта, характерной чертой которых является не прямое решение задачи, а обучение в процессе применения решений множества сходных задач. Для построения таких методов используются средства математической статистики, численных методов, методов оптимизации, теории вероятностей, теории графов, различные техники работы с данными в цифровой форме.

Различают два типа обучения:

Обучение по прецедентам, или индуктивное обучение, основано на выявлении эмпирических закономерностей в данных.

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

Многие методы индуктивного обучения разрабатывались как альтернатива классическим статистическим подходам. Многие методы тесно связаны с извлечением информации (англ. information extraction), интеллектуальным анализом данных (data mining).

Метод k-средних (англ. k-means ) — наиболее популярный метод кластеризации. Был изобретён в 1950-х годах математиком Гуго Штейнгаузом и почти одновременно Стюартом Ллойдом. Особую популярность приобрёл после работы Маккуина.

Действие алгоритма таково, что он стремится минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров:

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

Неокогнитрон (англ. Neocognitron) — иерархическая многослойная искусственная нейронная сеть, сверточного типа, производная от когнитрона и предложенная Кунихикой Фукусимой (1980 г.), способная к робастному распознаванию образов, обычно обучаемая по принципу «обучение без учителя». Сеть данного вида также часто применяется для распознавания рукописного текста и OCR, образов с сильно искажённой или зашумлённой структурой. Прообраз сети был позаимствован из модели, предложенной Хьюбелом и Визелем (1959 г.), согласно которой, существует два вида клеток в первичной зрительной коре: простая и сложная клетка, расположенные каскадно. Неокогнитрон также состоит из каскадно соединённых нейронов S-типа (простой, англ. simple) и C-типа (сложный, англ. complex). В процессе работы сети, локальные признаки образа извлекаются при помощи клеток S-типа, а искажения признаков, такие как, например, сдвиг, — компенсируются клетками C-типа. Локальные признаки на входе обобщаются поэтапно, и окончательная классификация выполняется в оконечных слоях. Подобная идея обобщения локальных признаков также применяется в сетях «LeNet» и «SIFT».

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

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

Обучение признакам может быть с учителем или без.

В обучении признакам с учителем обучение происходит с помощью помеченных входных данных. Примерами являются нейронные сети с учителем, многослойный перцептрон и словарное обучение (с учителем).

В обучении признакам без учителя обучение происходит с помощью непомеченных входных данных. Примерами являются словарное обучение, анализ независимых компонент, автокодировщики, разложение матриц и различные формы кластеризации.

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

Обуче́ние с учи́телем (англ. Supervised learning) — один из способов машинного обучения, в ходе которого испытуемая система принудительно обучается с помощью примеров «стимул-реакция». С точки зрения кибернетики, является одним из видов кибернетического эксперимента. Между входами и эталонными выходами (стимул-реакция) может существовать некоторая зависимость, но она неизвестна. Известна только конечная совокупность прецедентов — пар «стимул-реакция», называемая обучающей выборкой. На основе этих данных требуется восстановить зависимость (построить модель отношений стимул-реакция, пригодных для прогнозирования), то есть построить алгоритм, способный для любого объекта выдать достаточно точный ответ. Для измерения точности ответов, так же как и в обучении на примерах, может вводиться функционал качества.

Ограниченная машина Больцмана (англ. restricted Boltzmann machine), сокращённо RBM — вид генеративной стохастической нейронной сети, которая определяет распределение вероятности на входных образцах данных.

Первая ограниченная машина Больцмана была построена в 1986 году Полом Смоленски под названием Harmonium, но приобрела популярность только после изобретения Хинтоном быстрых алгоритмов обучения в середине 2000-х годов.

Такое название машина приобрела как модификация обычной машины Больцмана, в которой нейроны разделили на видимые и скрытые, а связи допустимы только между нейронами разного типа, таким способом ограничив связи. Значительно позже, в 2000-х годах, ограниченные машины Больцмана приобрели большую популярность и стали рассматриваться уже не как вариации машины Больцмана, а как особые компоненты в архитектуре сетей глубинного обучения. Объединение нескольких каскадов ограниченных машин Больцмана формирует глубокую сеть доверия, особый вид многослойных нейронных сетей, которые могут самообучаться без учителя при помощи алгоритма обратного распространения ошибки.

Особенностью ограниченных машин Больцмана является возможность проходить обучение без учителя, но в определённых приложениях ограниченные машины Больцмана обучаются с учителем. Скрытый слой машины представляет собой глубокие признаки в данных, которые выявляются в процессе обучения (см. также Data mining).

Ограниченные машины Больцмана имеют широкий спектр применений — это задачи снижения размерности данных, задачи классификации,

коллаборативная фильтрация, выделение признаков (англ. feature learning)

и тематическое моделирование.

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

Перцептро́н, или персептрон (англ. perceptron от лат. perceptio — восприятие; нем. Perzeptron) — математическая или компьютерная модель восприятия информации мозгом (кибернетическая модель мозга), предложенная Фрэнком Розенблаттом в 1957 году и впервые реализованная в виде электронной машины «Марк-1» в 1960 году. Перцептрон стал одной из первых моделей нейросетей, а «Марк-1» — первым в мире нейрокомпьютером.

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

с одним скрытым слоем;

с пороговой передаточной функцией;

с прямым распространением сигнала.На фоне роста популярности нейронных сетей в 1969 году вышла книга Марвина Минского и Сеймура Паперта, которая показала принципиальные ограничения перцептронов. Это привело к смещению интереса исследователей искусственного интеллекта в противоположную от нейросетей область символьных вычислений. Кроме того, из-за сложности математического исследования перцептронов, а также отсутствия общепринятой терминологии, возникли различные неточности и заблуждения.

Впоследствии интерес к нейросетям, и в частности, работам Розенблатта, возобновился. Так, например, сейчас стремительно развивается биокомпьютинг, который в своей теоретической основе вычислений, в том числе, базируется на нейронных сетях, а перцептрон воспроизводят на основе бактериородопсин-содержащих плёнок.

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

Методы обучения нейронных сетей

Содержание

Каждая созданная нейронная сеть требует обучения, в противном случае правильный результат вряд ли будет получен. Методов обучения нейросети существует несколько.

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

Метод обратного распространения

Этот метод является основным и имеет ещё одно название — Backpropagation, так как использует алгоритм градиентного спуска. То есть при помощи движения вдоль градиента рассчитывается локальный минимум и максимум функции. Понимание этого метода приведёт к тому, что следующий не вызовет затруднений.

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

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

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

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

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

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

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

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

Затем необходимо произвести расчёт градиента для каждой исходящей связи. Затем имея все необходимые данные необходимо выполнить обновление весов и рассчитать благодаря функции МОР значение, которое станет величиной изменения.

При этом не стоит забывать про момент и скорость обучения.

Одна итерация МОР даёт небольшой процент уменьшения ошибки, поэтому повторять их необходимо снова и снова пока показатель ошибки не будет приближен к 0.

Метод упругого распространения

Следующий метод обучения сети Resilient propagation или Rprop. Предыдущий способ обучения, представленный выше имеет недостаток в виде больших временных затрат на процесс обучения неуместных в случае необходимости получить быстрый результат.

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

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

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

Если знак производной не изменился, то величина изменения веса, наоборот, увеличивается для большей сходимости.

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

Чтобы вес не принимал слишком большие или малые значения используются установленные ограничения величины коррекции. Значение коррекции также вычисляется по определённому правилу.

Уважаемые посетители, сохраните эту статью в социальных сетях. Мы публикуем очень полезные статьи, которые помогут Вам в вашем деле. Поделитесь! Жмите!

То есть если производная функции в конкретной точке меняет знак с плюса на минус, означает, что ошибка возрастает и вес требует коррекции и происходит его уменьшение, в противном случае — увеличение.

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

Генетический Алгоритм

Третий наиболее интересный алгоритм обучения искусственных нейронных сетей — Genetic Algorithm. Он представляет собой упрощённую интерпретацию природного алгоритма, основанного на скрещивании результатов. То есть, по сути, происходит скрещивание результатов, выбор наилучших и формирование на их основе нового поколения.

В случае если результат не устраивает алгоритм повторяется пока поколение не становиться идеальным. Алгоритм может завершиться без достижения нужного результата если количество попыток будет исчерпано или же будет исчерпан время на мутацию. Этот алгоритм применим к процессу оптимизации веса нейронной сети, при заданной по умолчанию топологии.

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

Видеомаркетинг поможет привлечь клиентов и продвинуть ваш товар.

Как правильно заполнить сниппет, читай в нашей статье.

Рекомендации по написанию хорошей статьи ты найдешь здесь.

Другие вариации обучения

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

В этом случае тренер выступает в роли учителя, а созданная сеть — ученика. Тренер задаёт входные данные и требующийся результат, соответственно сеть понимает к какому именно результату необходимо стремиться при заданных параметрах.

Обучение без учителя носит несколько иной характер и встречается реже. При таком раскладе нейронная сеть не получает желаемого результата. Такая тренировка подходит сетям, задача которых кластеризация данных по заданным параметрам. То есть, проанализировав большой объем входных данных, сеть разделяет их на категории по определённым признакам.

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

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

Благодаря этому сеть будет искать наилучшие способы достижения цели без данных от тренера.

Есть ещё несколько методов обучения:

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

В процессе любого обучения приходится применять гиперпараметры, подбор которых выполняется вручную, при этом они не являются переменными в определённом уравнении. Это уже упомянутые выше момент и скорость обучения.

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

В случае когда процесс обучения затягивается есть риск возникновения ситуации, в которой потребуется переобучение сети. Как правило, это происходит в момент, когда сеть перенасыщена данными и начинает не обучаться, а просто запоминать результаты для определённого набора входных параметров. И при подаче новых параметров возникают шумы, влияющие на результат.

Чтобы избежать такой необходимости, обучение необходимо проводить на разных входных данных имеющих значительные различия между собой.

Нейронные сети — очень перспективное направление разработки. Создав нейронную сеть можно обучить её многому, в частности тому, что человек привык делать бессознательно, а соответственно алгоритм чего ему неизвестен.

Считается, что нейросети являются аналогом человеческого мозга, возможно, это и так, но стоит помнить — это всего лишь копия, отдалённо напоминающая свой прототип.

ИИС / поштучно / 4.Обучение нейронной сети без учителя

Обучение без учителя

Алгоритмы обучения Хебба

Сигнальный метод обучения Хебба

Изменение весов производится по правилу:

где – выходное значение i-го нейрона (q-1)-го слоя;

– выходное значение j-го нейрона (q)-го слоя;

и – весовой коэффициент синапса, соединяющего эти нейроны на t-й и (t-1)-й итерациях соответственно;

 – коэффициент скорости обучения.

При обучении по данному методу усиливаются связи между возбужденными нейронами.

Дифференциальный метод обучения Хебба

Изменение весов производится по правилу:

где и – выходное значение i-го нейрона (q-1)-го слоя на t-й и (t-1)-й итерациях соответственно;

и – выходное значение j-го нейрона (q)-го слоя на t-й и (t-1)-й итерациях соответственно.

Более интенсивно обучаются синапсы, соединяющие нейроны, выходы которых увеличиваются наиболее динамично.

Алгоритм обучения для обоих методов [4]:

Шаг 1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.

Шаг 2. На входы НС подается входной образ и сигналы распространяются по всем слоям.

Шаг 3. Производится изменение весовых коэффициентов по одной из указанных формул.

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

На шаге 2 НС попеременно предъявляются все образы входного набора.

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

Алгоритм обучения Кохонена

Изменение весов производится по правилу [4]:

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

Алгоритм обучения сходен с алгоритмом Хебба. Основное отличие в том, что на шаге 3 из всего слоя выбирается нейрон, значения синапсов которого максимально походят на входной образ, и подстройка весов производится только для него. Подстройка весов выбранного нейрона называется аккредитацией [2].

Критерии выбора аккредитуемого нейрона:

а) Максимум скалярного произведения вектора весов синапсов нейрона и вектора входа нейрона.

б) Минимум расстояния между этими векторами:

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

С целью сокращения длительности процесса обучения нормируют входные образы и начальные значения весовых коэффициентов:

где n – количество входных сигналов.

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

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

Нейронные сети: обучение без учителя

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

Главная черта, делающая обучение без учителя привлекательным, – это его «самостоятельность». Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов синапсов. Некоторые алгоритмы, правда, изменяют и структуру сети, то есть количество нейронов и их взаимосвязи, но такие преобразования правильнее назвать более широким термином – самоорганизацией, и в рамках данной лекции они рассматриваться не будут. Очевидно, что подстройка синапсов может проводиться только на основании информации, доступной в нейроне, то есть его состояния и уже имеющихся весовых коэффициентов. Исходя из этого соображения и, что более важно, по аналогии с известными принципами самоорганизации нервных клеток, построены алгоритмы обучения Хебба.

Илон Маск рекомендует:  История и навигация в HTML5. pushstate, popstate.

Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу:

где – выходное значение нейрона i слоя (n-1), – выходное значение нейрона j слоя n; и – весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно; – коэффициент скорости обучения. Здесь и далее, для общности, под n подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами.

Существует также и дифференциальный метод обучения Хебба.

Здесь и – выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1; и – то же самое для нейрона j слоя n. Как видно из формулы (2), сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

Полный алгоритм обучения с применением вышеприведенных формул будет выглядеть так:

1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.

2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей[1], то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение , i=0. Mi-1, где Mi – число нейронов в слое i; n=0. N-1, а N – число слоев в сети.

3. На основании полученных выходных значений нейронов по формуле (18) или (19) производится изменение весовых коэффициентов.

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

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

Другой алгоритм обучения без учителя – алгоритм Кохонена – предусматривает подстройку синапсов на основании их значений от предыдущей итерации.

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

Полный алгоритм обучения имеет примерно такую же структуру, как в методах Хебба, но на шаге 3 из всего слоя выбирается нейрон, значения синапсов которого максимально походят на входной образ, и подстройка весов по формуле (4.20) проводится только для него. Эта так называемая аккредитация может сопровождаться затормаживанием всех остальных нейронов слоя и введением выбранного нейрона в насыщение. Выбор такого нейрона может осуществляться, например, расчетом скалярного произведения вектора весовых коэффициентов с вектором входных значений. Максимальное произведение дает выигравший нейрон.

Другой вариант – расчет расстояния между этими векторами в p-мерном пространстве, где p – размер векторов.

где j – индекс нейрона в слое n, i – индекс суммирования по нейронам слоя (n-1), wij – вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n. Корень в формуле (21) брать не обязательно, так как важна лишь относительная оценка различных Dj.


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

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

где xi – i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n – его размерность. Это позволяет сократить длительность процесса обучения.

Инициализация весовых коэффициентов случайными значениями может привести к тому, что различные классы, которым соответствуют плотно распределенные входные образы, сольются или, наоборот, раздробятся на дополнительные подклассы в случае близких образов одного и того же класса. Для избежания такой ситуации используется метод выпуклой комбинации [3]. Суть его сводится к тому, что входные нормализованные образы подвергаются преобразованию:

где xi – i-ая компонента входного образа, n – общее число его компонент, – коэффициент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине

где n – размерность вектора весов для нейронов инициализируемого слоя.

На основе рассмотренного выше метода строятся нейронные сети особого типа – так называемые самоорганизующиеся структуры – self-organizing feature maps (этот устоявшийся перевод с английского, на мой взгляд, не очень удачен, так как речь идет не об изменении структуры сети, а только о подстройке синапсов). Для них после выбора из слоя n нейрона j с минимальным расстоянием Dj (4.21) обучается по формуле (4.20) не только этот нейрон, но и его соседи, расположенные в окрестности R. Величина R на первых итерациях очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля. Таким образом, чем ближе конец обучения, тем точнее определяется группа нейронов, отвечающих каждому классу образов.

Обучение без учителя

Обучение без учителя (самообучение, спонтанное обучение, англ. Unsupervised learning ) — один из способов машинного обучения, при котором испытуемая система спонтанно обучается выполнять поставленную задачу без вмешательства со стороны экспериментатора. С точки зрения кибернетики, это является одним из видов кибернетического эксперимента. Как правило, это пригодно только для задач, в которых известны описания множества объектов (обучающей выборки), и требуется обнаружить внутренние взаимосвязи, зависимости, закономерности, существующие между объектами.

Обучение без учителя часто противопоставляется обучению с учителем, когда для каждого обучающего объекта принудительно задаётся «правильный ответ», и требуется найти зависимость между стимулами и реакциями системы.

Связь с физиологией

Несмотря на многочисленные прикладные достижения, обучение с учителем критиковалось за свою биологическую неправдоподобность. Трудно вообразить обучающий механизм в мозге, который бы сравнивал желаемые и действительные значения выходов, выполняя коррекцию с помощью обратной связи. Если допустить подобный механизм в мозге, то откуда тогда возникают желаемые выходы? Обучение без учителя является намного более правдоподобной моделью обучения в биологической системе. Развитая Кохоненом и многими другими, она не нуждается в целевом векторе для выходов и, следовательно, не требует сравнения с предопределенными идеальными ответами [1] .

Понятие «обучения без учителя» в теории распознавания образов

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

Такой отход от эксперимента и построение теории связаны с различным мнением специалистов во взглядах. Различия, в частности, возникают при ответе на вопрос: «Возможны ли единые принципы адекватного описания образов различной природы, или же такое описание каждый раз есть задача для специалистов конкретных знаний?».

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

В теории распознавания образов различают в основном три подхода к данной проблеме [3] :

  • Эвристические методы;
  • Математические методы;
  • Лингвистические (синтаксические) методы.

Типы входных данных

  • Признаковое описание объектов. Каждый объект описывается набором своих характеристик, называемых признаками. Признаки могут быть числовыми или нечисловыми.
  • Матрица расстояний между объектами. Каждый объект описывается расстояниями до всех остальных объектов обучающей выборки.

Решаемые задачи

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

Задачи кластеризации

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

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

Задачи обобщения

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

При этом в эксперименте по «чистому обобщению» от модели мозга или перцептрона требуется перейти от избирательной реакции на один стимул (допустим, квадрат, находящийся в левой части сетчатки) к подобному ему стимулу, который не активизирует ни одного из тех же сенсорных окончаний (квадрат в правой части сетчатки). К обобщению более слабого вида относится, например, требование, чтобы реакции системы распространялись на элементы класса подобных стимулов, которые не обязательно отделены от уже показанного ранее (или услышанного, или воспринятого на ощупь) стимула.

Задачи поиска правил ассоциации

Исходная информация представляется в виде признаковых описаний. Задача состоит в том, чтобы найти такие наборы признаков, и такие значения этих признаков, которые особенно часто (неслучайно часто) встречаются в признаковых описаниях объектов.

Задачи сокращения размерности

Исходная информация представляется в виде признаковых описаний, причём число признаков может быть достаточно большим. Задача состоит в том, чтобы представить эти данные в пространстве меньшей размерности, по возможности, минимизировав потери информации.

Задачи визуализации данных

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

Некоторые приложения

  • Социологические исследования: формирование представительных подвыборок при организации социологических опросов.
  • Маркетинговые исследования: разбиение множества всех клиентов на кластеры для выявления типичных предпочтений.
  • Анализ рыночных корзин: выявление сочетаний товаров, часто встречающихся вместе в покупках клиентов.

См. также

Примечания

  1. ↑ Уоссермен, Ф. Нейрокомпьютерная техника: Теория и практика. — М.: Мир, 1992
  2. ↑ Вапник В. Н., Червоненкис А. Я., Теория распознавания образов. Статистические проблемы обучения, 1974
  3. ↑ Ту Дж., Гонсалес Р. Принципы распознавания образов, М. 1978

Литература

  • Айвазян С. А., Енюков И. С., Мешалкин Л. Д. Прикладная статистика: основы моделирования и первичная обработка данных. — М.: Финансы и статистика, 1983.
  • Айвазян С. А., Енюков И. С., Мешалкин Л. Д. Прикладная статистика: исследование зависимостей. — М.: Финансы и статистика, 1985.
  • Айвазян С. А., Бухштабер В. М., Енюков И. С., Мешалкин Л. Д. Прикладная статистика: классификация и снижение размерности. — М.: Финансы и статистика, 1989.
  • Журавлев Ю. И., Рязанов В. В., Сенько О. В. «Распознавание». Математические методы. Программная система. Практические применения. — М.: Фазис, 2006. ISBN 5-7036-0108-8.
  • Загоруйко Н. Г. Прикладные методы анализа данных и знаний. — Новосибирск: ИМ СО РАН, 1999. ISBN 5-86134-060-9.
  • Мандель И. Д. Кластерный анализ. — М.: Финансы и статистика, 1988. ISBN 5-279-00050-7.
  • Шлезингер М., Главач В. Десять лекций по статистическому и структурному распознаванию. — Киев: Наукова думка, 2004. ISBN 966-00-0341-2.
  • Hastie, T., Tibshirani R., Friedman J.The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer-Verlag, 2009. — 746 p. — ISBN 978-0-387-84857-0. .
  • Розенблатт, Ф.Принципы нейродинамики: Перцептроны и теория механизмов мозга = Principles of Neurodynamic: Perceptrons and the Theory of Brain Mechanisms. — М. : Мир, 1965. — 480 с. Архивная копия от 21 мая 2015 на Wayback Machine
  • Уоссермен, Ф.Нейрокомпьютерная техника: Теория и практика = Neural Computing. Theory and Practice. — М. : Мир, 1992. — 240 с. — ISBN 5-03-002115-9. Архивная копия от 30 июня 2009 на Wayback Machine
  • Л. Б. Емельянов-Ярославский, Интеллектуальная квазибиологическая система, М., «НАУКА», 1990 — книга о одном подходе самообучения в соответствии с квазибиологической парадигмой

Ссылки

Data mining (рус. добыча данных, интеллектуальный анализ данных, глубинный анализ данных) — собирательное название, используемое для обозначения совокупности методов обнаружения в данных ранее неизвестных, нетривиальных, практически полезных и доступных интерпретации знаний, необходимых для принятия решений в различных сферах человеческой деятельности. Термин введён Григорием Пятецким-Шапиро в 1989 году.

Английское словосочетание «data mining» пока не имеет устоявшегося перевода на русский язык. При передаче на русском языке используются следующие словосочетания: просев информации, добыча данных, извлечение данных, а также интеллектуальный анализ данных. Более полным и точным является словосочетание «обнаружение знаний в базах данных» (англ. knowledge discovery in databases, KDD).

Основу методов data mining составляют всевозможные методы классификации, моделирования и прогнозирования, основанные на применении деревьев решений, искусственных нейронных сетей, генетических алгоритмов, эволюционного программирования, ассоциативной памяти, нечёткой логики. К методам data mining нередко относят статистические методы (дескриптивный анализ, корреляционный и регрессионный анализ, факторный анализ, дисперсионный анализ, компонентный анализ, дискриминантный анализ, анализ временных рядов, анализ выживаемости, анализ связей). Такие методы, однако, предполагают некоторые априорные представления об анализируемых данных, что несколько расходится с целями data mining (обнаружение ранее неизвестных нетривиальных и практически полезных знаний).

Одно из важнейших назначений методов data mining состоит в наглядном представлении результатов вычислений (визуализация), что позволяет использовать инструментарий data mining людьми, не имеющими специальной математической подготовки.

Применение статистических методов анализа данных требует хорошего владения теорией вероятностей и математической статистикой.

Unscrambler — это коммерческий программный продукт для анализа многомерных данных, используемый на этапе калибровки многомерных данных. К многомерным данным чаще всего относят аналитические данные, например, данные по спектроскопии в ближней инфракрасной области, по спектроскопии комбинационного рассеяния света, по разработке прогнозных моделей при использования в режиме реального времени для материалов спектрального анализа. Это программное обеспечение было разработано в 1986 году Харальдом Мартенсом, а позже поддерживалось фирмой CAMO Software.

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

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

Чаще всего автокодировщики применяют каскадно для обучения глубоких (многослойных) сетей. Автокодировщики применяют для предварительного обучения глубокой сети без учителя. Для этого слои обучаются друг за другом, начиная с первых. К каждому новому необученному слою на время обучения подключается дополнительный выходной слой, дополняющий сеть до архитектуры автокодировщика, после чего на вход сети подается набор данных для обучения. Веса необученного слоя и дополнительного слоя автокодировщика обучаются при помощи метода обратного распространения ошибки. Затем слой автокодировщика отключается и создается новый, соответствующий следующему необученному слою сети. На вход сети снова подается тот же набор данных, обученные первые слои сети остаются без изменений и работают в качестве входных для очередного обучаемого автокодировщика слоя. Так обучение продолжается для всех слоев сети за исключением последних. Последние слои сети обычно обучаются без использования автокодировщика при помощи того же метода обратного распространения ошибки и на маркированных данных (обучение с учителем).

Ана́лиз тона́льности те́кста (сентимент-анализ, англ. Sentiment analysis, англ. Opinion mining) — класс методов контент-анализа в компьютерной лингвистике, предназначенный для автоматизированного выявления в текстах эмоционально окрашенной лексики и эмоциональной оценки авторов (мнений) по отношению к объектам, речь о которых идёт в тексте.

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

Глубокое обучение (глубинное обучение; англ. Deep learning) — совокупность методов машинного обучения (с учителем, с частичным привлечением учителя, без учителя, с подкреплением), основанных на обучении представлениям (англ. feature/representation learning), а не специализированным алгоритмам под конкретные задачи. Многие методы глубокого обучения были известны ещё в 1980-е (и даже ранее), но результаты были невпечатляющими, пока продвижения в теории искусственных нейронных сетей (предобучение нейросетей с помощью специального случая ненаправленной графической модели, так называемой ограниченной машины Больцмана) и вычислительные мощности середины 2000-х (прежде всего, графических процессоров Nvidia, а в настоящее время и тензорных процессоров Google) не позволили создавать сложные технологические архитектуры нейронных сетей, обладающие достаточной производительностью и позволяющие решать широкий спектр задач, не поддававшихся эффективному решению ранее, например, в компьютерном зрении, машинном переводе, распознавании речи, причём качество решения во многих случаях теперь сопоставимо, а в некоторых случаях превосходит эффективность «белковых» экспертов.

Задача классифика́ции — задача, в которой имеется множество объектов (ситуаций), разделённых некоторым образом на классы. Задано конечное множество объектов, для которых известно, к каким классам они относятся. Это множество называется выборкой. Классовая принадлежность остальных объектов неизвестна. Требуется построить алгоритм, способный классифицировать (см. ниже) произвольный объект из исходного множества.

Классифици́ровать объект — значит, указать номер (или наименование) класса, к которому относится данный объект.

Классифика́ция объекта — номер или наименование класса, выдаваемый алгоритмом классификации в результате его применения к данному конкретному объекту.

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

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

Некоторые алгоритмы для решения задач классификации комбинируют обучение с учителем с обучением без учителя, например, одна из версий нейронных сетей Кохонена — сети векторного квантования, обучаемые с учителем.

Импульсная нейронная сеть (ИмНС, англ. Pulsed neural networks, PNN) или Спайковая нейронная сеть (СНН, англ. Spiking neural network, SNN) — третье поколение искусственных нейронных сетей (ИНС), которое отличается от бинарных (первое поколение) и частотных/скоростных (второе поколение) ИНС тем, что в нем нейроны обмениваются короткими (у биологических нейронов — около 1-2 мс) импульсами одинаковой амплитуды (у биологических нейронов — около 100 мВ). Является самой реалистичной, с точки зрения физиологии, моделью ИНС.

Иску́сственная нейро́нная се́ть (ИНС) — математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса. После разработки алгоритмов обучения получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.

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

С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т. п.

С математической точки зрения, обучение нейронных сетей — это многопараметрическая задача нелинейной оптимизации.

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

С точки зрения развития вычислительной техники и программирования, нейронная сеть — способ решения проблемы эффективного параллелизма.

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

Иску́сственный интелле́кт (ИИ; англ. artificial intelligence, AI) — свойство интеллектуальных систем выполнять творческие функции, которые традиционно считаются прерогативой человека; наука и технология создания интеллектуальных машин, особенно интеллектуальных компьютерных программ.

ИИ связан со сходной задачей использования компьютеров для понимания человеческого интеллекта, но не обязательно ограничивается биологически правдоподобными методами.

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

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

Большинство исследователей (см., напр.,) склоняются к тому, что впервые термин «кластерный анализ» (англ. cluster — гроздь, сгусток, пучок) был предложен математиком Р. Трионом. Впоследствии возник ряд терминов, которые в настоящее время принято считать синонимами термина «кластерный анализ»: автоматическая классификация, ботриология.

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

Машинное обучение (англ. machine learning, ML) — класс методов искусственного интеллекта, характерной чертой которых является не прямое решение задачи, а обучение в процессе применения решений множества сходных задач. Для построения таких методов используются средства математической статистики, численных методов, методов оптимизации, теории вероятностей, теории графов, различные техники работы с данными в цифровой форме.

Различают два типа обучения:

Обучение по прецедентам, или индуктивное обучение, основано на выявлении эмпирических закономерностей в данных.

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

Многие методы индуктивного обучения разрабатывались как альтернатива классическим статистическим подходам. Многие методы тесно связаны с извлечением информации (англ. information extraction), интеллектуальным анализом данных (data mining).

Метод k-средних (англ. k-means ) — наиболее популярный метод кластеризации. Был изобретён в 1950-х годах математиком Гуго Штейнгаузом и почти одновременно Стюартом Ллойдом. Особую популярность приобрёл после работы Маккуина.

Действие алгоритма таково, что он стремится минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров:

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

Неокогнитрон (англ. Neocognitron) — иерархическая многослойная искусственная нейронная сеть, сверточного типа, производная от когнитрона и предложенная Кунихикой Фукусимой (1980 г.), способная к робастному распознаванию образов, обычно обучаемая по принципу «обучение без учителя». Сеть данного вида также часто применяется для распознавания рукописного текста и OCR, образов с сильно искажённой или зашумлённой структурой. Прообраз сети был позаимствован из модели, предложенной Хьюбелом и Визелем (1959 г.), согласно которой, существует два вида клеток в первичной зрительной коре: простая и сложная клетка, расположенные каскадно. Неокогнитрон также состоит из каскадно соединённых нейронов S-типа (простой, англ. simple) и C-типа (сложный, англ. complex). В процессе работы сети, локальные признаки образа извлекаются при помощи клеток S-типа, а искажения признаков, такие как, например, сдвиг, — компенсируются клетками C-типа. Локальные признаки на входе обобщаются поэтапно, и окончательная классификация выполняется в оконечных слоях. Подобная идея обобщения локальных признаков также применяется в сетях «LeNet» и «SIFT».

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

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

Обучение признакам может быть с учителем или без.

В обучении признакам с учителем обучение происходит с помощью помеченных входных данных. Примерами являются нейронные сети с учителем, многослойный перцептрон и словарное обучение (с учителем).

В обучении признакам без учителя обучение происходит с помощью непомеченных входных данных. Примерами являются словарное обучение, анализ независимых компонент, автокодировщики, разложение матриц и различные формы кластеризации.

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

Обуче́ние с учи́телем (англ. Supervised learning) — один из способов машинного обучения, в ходе которого испытуемая система принудительно обучается с помощью примеров «стимул-реакция». С точки зрения кибернетики, является одним из видов кибернетического эксперимента. Между входами и эталонными выходами (стимул-реакция) может существовать некоторая зависимость, но она неизвестна. Известна только конечная совокупность прецедентов — пар «стимул-реакция», называемая обучающей выборкой. На основе этих данных требуется восстановить зависимость (построить модель отношений стимул-реакция, пригодных для прогнозирования), то есть построить алгоритм, способный для любого объекта выдать достаточно точный ответ. Для измерения точности ответов, так же как и в обучении на примерах, может вводиться функционал качества.

Ограниченная машина Больцмана (англ. restricted Boltzmann machine), сокращённо RBM — вид генеративной стохастической нейронной сети, которая определяет распределение вероятности на входных образцах данных.

Первая ограниченная машина Больцмана была построена в 1986 году Полом Смоленски под названием Harmonium, но приобрела популярность только после изобретения Хинтоном быстрых алгоритмов обучения в середине 2000-х годов.

Такое название машина приобрела как модификация обычной машины Больцмана, в которой нейроны разделили на видимые и скрытые, а связи допустимы только между нейронами разного типа, таким способом ограничив связи. Значительно позже, в 2000-х годах, ограниченные машины Больцмана приобрели большую популярность и стали рассматриваться уже не как вариации машины Больцмана, а как особые компоненты в архитектуре сетей глубинного обучения. Объединение нескольких каскадов ограниченных машин Больцмана формирует глубокую сеть доверия, особый вид многослойных нейронных сетей, которые могут самообучаться без учителя при помощи алгоритма обратного распространения ошибки.

Особенностью ограниченных машин Больцмана является возможность проходить обучение без учителя, но в определённых приложениях ограниченные машины Больцмана обучаются с учителем. Скрытый слой машины представляет собой глубокие признаки в данных, которые выявляются в процессе обучения (см. также Data mining).

Ограниченные машины Больцмана имеют широкий спектр применений — это задачи снижения размерности данных, задачи классификации,

коллаборативная фильтрация, выделение признаков (англ. feature learning)

и тематическое моделирование.

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

Перцептро́н, или персептрон (англ. perceptron от лат. perceptio — восприятие; нем. Perzeptron) — математическая или компьютерная модель восприятия информации мозгом (кибернетическая модель мозга), предложенная Фрэнком Розенблаттом в 1957 году и впервые реализованная в виде электронной машины «Марк-1» в 1960 году. Перцептрон стал одной из первых моделей нейросетей, а «Марк-1» — первым в мире нейрокомпьютером.

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

с одним скрытым слоем;

с пороговой передаточной функцией;

с прямым распространением сигнала.На фоне роста популярности нейронных сетей в 1969 году вышла книга Марвина Минского и Сеймура Паперта, которая показала принципиальные ограничения перцептронов. Это привело к смещению интереса исследователей искусственного интеллекта в противоположную от нейросетей область символьных вычислений. Кроме того, из-за сложности математического исследования перцептронов, а также отсутствия общепринятой терминологии, возникли различные неточности и заблуждения.

Впоследствии интерес к нейросетям, и в частности, работам Розенблатта, возобновился. Так, например, сейчас стремительно развивается биокомпьютинг, который в своей теоретической основе вычислений, в том числе, базируется на нейронных сетях, а перцептрон воспроизводят на основе бактериородопсин-содержащих плёнок.

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

Обучение нейронной сети

Изучаем нейронные сети за четыре шага

Рассказывает Per Harald Borgen

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

Шаг 1. Нейроны и метод прямого распространения

Так что же такое «нейронная сеть»? Давайте подождём с этим и сперва разберёмся с одним нейроном.

Нейрон похож на функцию: он принимает на вход несколько значений и возвращает одно.

Круг ниже обозначает искусственный нейрон. Он получает 5 и возвращает 1. Ввод — это сумма трёх соединённых с нейроном синапсов (три стрелки слева).

В левой части картинки мы видим 2 входных значения (зелёного цвета) и смещение (выделено коричневым цветом).

Входные данные могут быть численными представлениями двух разных свойств. Например, при создании спам-фильтра они могли бы означать наличие более чем одного слова, написанного ЗАГЛАВНЫМИ БУКВАМИ, и наличие слова «виагра».

Входные значения умножаются на свои так называемые «веса», 7 и 3 (выделено синим).

Теперь мы складываем полученные значения со смещением и получаем число, в нашем случае 5 (выделено красным). Это — ввод нашего искусственного нейрона.

Потом нейрон производит какое-то вычисление и выдает выходное значение. Мы получили 1, т.к. округлённое значение сигмоиды в точке 5 равно 1 (более подробно об этой функции поговорим позже).

Если бы это был спам-фильтр, факт вывода 1 означал бы то, что текст был помечен нейроном как спам.

Иллюстрация нейронной сети с Википедии.

Если вы объедините эти нейроны, то получите прямо распространяющуюся нейронную сеть — процесс идёт от ввода к выводу, через нейроны, соединённые синапсами, как на картинке слева.

Я очень рекомендую посмотреть серию видео от Welch Labs для улучшения понимания процесса.

Шаг 2. Сигмоида

После того, как вы посмотрели уроки от Welch Labs, хорошей идеей было бы ознакомиться с четвертой неделей курса по машинному обучению от Coursera, посвящённой нейронным сетям — она поможет разобраться в принципах их работы. Курс сильно углубляется в математику и основан на Octave, а я предпочитаю Python. Из-за этого я пропустил упражнения и почерпнул все необходимые знания из видео.

Сигмоида просто-напросто отображает ваше значение (по горизонтальной оси) на отрезок от 0 до 1.

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

Но на одних видео далеко не уедешь. Для полного понимания я решил закодить её самостоятельно. Поэтому я начал писать реализацию алгоритма логистической регрессии (который использует сигмоиду).

Это заняло целый день, и вряд ли результат получился удовлетворительным. Но это неважно, ведь я разобрался, как всё работает. Код можно увидеть здесь.

Вам необязательно делать это самим, поскольку тут требуются специальные знания — главное, чтобы вы поняли, как устроена сигмоида.

Шаг 3. Метод обратного распространения ошибки

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

Вкратце: вы оцениваете, насколько сеть ошиблась, и изменяете вес входных значений (синие числа на первой картинке).

Процесс идёт от конца к началу, так как мы начинаем с конца сети (смотрим, насколько отклоняется от истины догадка сети) и двигаемся назад, изменяя по пути веса, пока не дойдём до ввода.

Для вычисления всего этого вручную потребуются знания матанализа. Khan Academy предоставляет хорошие курсы по матанализу, но я изучал его в университете.

Также можно не заморачиваться и воспользоваться библиотеками, которые посчитают весь матан за вас.

Скриншот из руководства Мэтта Мазура по методу обратного распространения ошибки.

Вот три источника, которые помогли мне разобраться в этом методе:

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

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

Эти статьи также помогут вам изучить такие понятия, как функция стоимости и градиентный спуск.

Шаг 4. Создание своей нейронной сети

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

Ещё одной полезной статьёй оказалась A Neural Network in 11 lines of Python от IAmTrask. В ней содержится удивительное количество знаний, сжатых до 11 строк кода.

Скриншот руководства от IAmTrask

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

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

После этого можно ознакомиться с руководством Wild ML от Denny Britz, в котором разбираются нейронные сети посложнее.

Скриншот из руководства WildML

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

Для поиска хороших наборов данных можете посетить мой сайт Datasets.co и выбрать там подходящий.

Так или иначе, теперь вам лучше начать свои эксперименты, чем слушать мои советы. Лично я сейчас изучаю Python-библиотеки для программирования нейронных сетей, такие как Theano, Lasagne и nolearn.

Перевод статьи «Learning How To Code Neural Networks»

Как обучить свою первую глубокую нейронную сеть

Пошаговое руководство по обучению нейронной сети.

Автор: Пит Уорден (Pete Warden)

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

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

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

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

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

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

Устанавливаем виртуальную машину

Для работы с виртуальной машиной нам понадобится компьютер с OS X или Linux и свободное ПО для виртуализации Vagrant. Если у вас еще нет Vagrant, перейдите по ссылке и следуйте инструкциям в разделе «Getting Started» («Приступая к работе»).

После установки Vagrant открываем новое окно терминала и создаем каталог для виртуальной машины с помощью следующих команд:


Теперь загружаем образ виртуальной машины. Размер образа составляет почти 2 ГБ, поэтому процесс загрузки может занять некоторое время.

vagrant box add dl_webcast https://d2rlgkokhpr1uq.cloudfront.net/dl_webcast.box

Загрузив образ, запускаем новый виртуальный сервер:

vagrant init dl_webcast vagrant up

Входим в виртуальную машину:

Используем предварительно обученную нейронную сеть

Я покажу вам, как работать с фреймворком для глубокого обучения Caffe, разработанным Янцином Цзя (Yangqing Jia) и командой Berkeley Vision and Learning Center (BVLC).

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

Мы будем использовать нейронную сеть, основанную на архитектуре Крижевского (Krizhevsky) и его команды, позволившей им выиграть соревнование ImageNet 2012.

Сеть уже обучена командой BVLC, но поскольку обучение происходило на наборе изображений, доступном только для некоммерческого использования, она также может применяться только в исследовательских целях.

Данная сеть способна распознавать 1 000 различных категорий объектов. Классификация выполняется с помощью простой команды:

python python/classify.py –print_results examples/images/cat.jpg foo

Мы увидим ряд информационных сообщений, последнее из которых будет иметь следующий вид:

[(‘kit fox’, ‘0.27215’), (‘red fox’, ‘0.19984’), (‘wood rabbit’, ‘0.13209’), (‘hare’, ‘0.07283’), (‘Egyptian cat’, ‘0.06632’)]

Поздравляю! Только что вы впервые классифицировали изображение с помощью глубокой нейронной сети. Выходной массив содержит предположения о том, какой объект представлен на изображении. Числа характеризуют «уверенность» алгоритма, а текстовые метки описывают категории. Взглянув на тестовое изображение, мы увидим, что это не совсем лисица (kit fox), но причина ошибки вполне понятна.

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

В файловой системе виртуальной машины они появятся в следующем каталоге:

Самостоятельно обучаем нейронную сеть

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

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

Я расскажу вам, как обучить сеть для решения одной из них.

Одной из первых задач, для решения которых были применены сверточные нейронные сети (convolutional neural network), была задача распознавания рукописных цифр. Ян Лекун (Yann LeCun) сделал большой вклад в данную область знаний в 90-е годы, а версия его архитектуры LeNet включена в состав Caffe. Загрузим набор данных MNIST, состоящий из 70 000 изображений рукописных цифр:

cd data/mnist ./get_mnist.sh cd ../.. cd examples/mnist

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

prototxt в редакторе nano (или в любом другом) и изменить последнюю строку, задав CPU вместо GPU, потому что в виртуальной машине мы не можем использовать преимущества видеокарты.

Запустим процесс обучения с помощью следующего скрипта:

Будет выведено большое количество информационных сообщений, и через несколько минут процесс завершится. Теперь выполним команду:

Мы должны увидеть созданный файл со следующим именем:

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

python python/classify.py –print_results –model_def examples/mnist/lenet.prototxt –pretrained_model examples/mnist/lenet_iter_10000 –force_grayscale –center_only –labels_file data/mnist/mnist_words.txt –images_dim 28,28 data/mnist/sample_digit.png foo

В результате получим сообщение о том, что с вероятностью 100% это цифра 4, что соответствует действительности!

Руководство по установке

Ниже представлены команды, которые я выполнил, чтобы создать виртуальную машину, описанную выше. Если вы используете Vagrant, создайте чистый образ Ubuntu 14.04:

vagrant box add ubuntu-14.04 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box

После создания и инициализации виртуальной машины, входим в нее и запускаем процесс установки CUDA. Чтобы собрать Caffe, необходимы заголовочные файлы и библиотеки CUDA, даже если мы собираемся работать только на CPU. Поэтому нам не обойтись без пакета CUDA, размер которого составляет 900 МБ.

sudo apt-get install linux-headers-uname -r curl -O “http://developer.download.nv >

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

echo ‘export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64’ >>

Теперь установим ряд зависимостей с помощью apt-get:

Обучение нейронных сетей

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

Представление знаний в нейронных сетях состоит из сети, весов связей и семантических интерпретаций, присоединенных к активациям узлов.

Например, в контексте управленческой классификации при использовании обученной нейронной сети можно предугадать, выберет ли клиент новый продукт, основываясь на выраженных в числах данных о клиенте, таких как последняя купленная марка, интерес к предварительному экспонированию, возможность дополнительного экспонирования и интерес к нему. Эти кванторные признаки атрибутов являются входами в обученную нейронную сеть. Активация «+1», полученная от нейронной сети, может указывать на то, что клиент выберет новое изделие, а «-1» — наоборот.

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

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

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

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

В системах нейронных сетей большое количество парадигм обучения. Обучение с учителем (контролируемое обучение) и обучение без учителя (неконтролируемое обучение или самообучение) — вот две главные парадигмы, обычно используемые в проектировании обучающих алгоритмов. Бывает ещё смешанная парадигма.

В парадигме обучения с учителем нейронная сеть располагает правильными ответами (выходами сети) на каждый входной пример. Процесс обучения пытается минимизировать «дистанцию» между фактическими и желаемыми выходами нейронной сети.

Илон Маск рекомендует:  readdir - Получить элемент каталога по его дескриптору

Веса настраиваются так, чтобы сеть производила ответы как можно более близкие к известным правильным ответам.

Усиленный вариант обучения с учителем предполагает, что известна только критическая оценка правильности выхода нейронной сети, но не сами правильные значения выхода.

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

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

Нейронная сеть должна развить собственное представление стимулов входа без помощи учителя.

При смешанном обучении часть весов определяется посредством обучения с учителем, в то время как остальная получается с помощью самообучения.

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

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

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

Известны 4 основных типа правил обучения: коррекция по ошибке, машина Больцмана, правило Хебба и обучение методом соревнования.

Правило коррекции по ошибке. При обучении с учителем для каждого входного примера задан желаемый выход d. Реальный выход сети y может не совпадать с желаемым.

Принцип коррекции по ошибке при обучении состоит в использовании сигнала (d-y) для модификации весов, обеспечивающей постепенное уменьшение ошибки. Обучение имеет место только в случае, когда перцептрон ошибается. Известны различные модификации этого алгоритма обучения [J. Hertz, A.

Krogh, and R.G. Palmer, Introduction to the Theory of Neural Computation, Addison-Wesley, Reading, Mass., 1991].

Обучение Больцмана. Представляет собой стохастическое правило обучения, которое следует из информационных теоретических и термодинамических принципов [J.A. Anderson and E. Rosenfeld, “Neurocomputing: Foundation of Research”, MIT Press, Cambridge, Mass., 1988.].

Целью обучения Больцмана является такая настройка весовых коэффициентов, при которой состояния видимых нейронов удовлетворяют желаемому распределению вероятностей.

Обучение Больцмана может рассматриваться как специальный случай коррекции по ошибке, в котором под ошибкой понимается расхождение корреляций состояний в двух режимах.

Правило Хебба. Самым старым обучающим правилом является постулат обучения Хебба [D.O. Hebb, The Organization of Behavior, John Wiley & Sons, New York, 1949.].

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

Важной особенностью этого правила является то, что изменение синаптического веса зависит только от активности нейронов, которые связаны данным синапсом. Это существенно упрощает цепи обучения в реализации VLSI.

Обучение методом соревнования. В отличие от обучения Хебба, в котором множество выходных нейронов могут возбуждаться одновременно, при соревновательном обучении выходные нейроны соревнуются между собой за активизацию.

Это явление известно как правило “победитель берет все”. Подобное обучение имеет место в биологических нейронных сетях.

Обучение посредством соревнования позволяет кластеризовать входные данные: подобные примеры группируются сетью в соответствии с корреляциями и представляются одним элементом.

При обучении модифицируются только веса “победившего” нейрона. Эффект этого правила достигается за счет такого изменения сохраненного в сети образца (вектора весов связей победившего нейрона), при котором он становится чуть ближе ко входному примеру. На рис. 3 дана геометрическая иллюстрация обучения методом соревнования.

Входные векторы нормализованы и представлены точками на поверхности сферы. Векторы весов для трех нейронов инициализированы случайными значениями. Их начальные и конечные значения после обучения отмечены Х на рис. 3а и 3б соответственно.

Каждая из трех групп примеров обнаружена одним из выходных нейронов, чей весовой вектор настроился на центр тяжести обнаруженной группы.


Рис. N.
Пример обучения методом соревнования: (а) перед обучением; (б) после обучения

Можно заметить, что сеть никогда не перестанет обучаться, если параметр скорости обучения не равен 0. Некоторый входной образец может активизировать другой выходной нейрон на последующих итерациях в процессе обучения. Это ставит вопрос об устойчивости обучающей системы.

Система считается устойчивой, если ни один из примеров обучающей выборки не изменяет своей принадлежности к категории после конечного числа итераций обучающего процесса.

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

Эти особенности обучения методом соревнования известны под названием дилеммы стабильности-пластичности Гроссберга.

В Таблице 2 представлены различные алгоритмы обучения и связанные с ними архитектуры сетей (список не является исчерпывающим).

В последней колонке перечислены задачи, для которых может быть применен каждый алгоритм.

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

Adaline и Madaline [R.P.Lippmann, “An Introduction to Computing with Neural Nets”, IEEE ASSP Magazine, Vol.4, No.2, Apr. 1987, pp. 4-22.],

линейный дискриминантный анализ], проекции Саммона [A.K. Jain and J. Mao, “Neural Networks and Pattern Recognition”, in Computational Intelligence: Imitating Life, J.M. Zurada, R.J. Marks II, and C.J. Robinson, eds., IEEE Press, Piscataway, N.J., 1994, pp. 194-212.],

метод/анализ главных компонентов [J. Hertz, A. Krogh, and R.G. Palmer, Introduction to the Theory of Neural Computation, Addison-Wesley, Reading, Mass., 1991.].

Таблица 2. Известные алгоритмы обучения.

Парадигма
Обучающее правило
Архитектура
Алгоритм обучения
Задача

С учителем
Коррекция ошибки
Однослойный и многослойный перцептрон
Алгоритмы обучения перцептрона Обратное распространение Adaline и Madaline
Классификация образов Аппроксимация функций Предсказание, управление

Больцман
Рекуррентная
Алгоритм обучения Больцмана
Классификация образов

Хебб
Многослойная прямого распространения
Линейный дискриминантный анализ
Анализ данных Классификация образов

Соревнование
Соревнование
Векторное квантование
Категоризация внутри класса Сжатие данных

Сеть ART
ARTMap
Классификация образов

Без учителя
Коррекция ошибки
Многослойная прямого распространения
Проекция Саммона
Категоризация внутри класса Анализ данных

Хебб
Прямого распространения или соревнование
Анализ главных компонентов
Анализ данных Сжатие данных

Сеть Хопфилда
Обучение ассоциативной памяти
Ассоциативная память

Соревнование
Соревнование
Векторное квантование
Категоризация Сжатие данных

SOM Кохонена
SOM Кохонена
Категоризация Анализ данных

Сети ART
ART1, ART2
Категоризация

Смешанная
Коррекция ошибки и соревнование
Сеть RBF
Алгоритм обучения RBF
Классификация образов Аппроксимация функций Предсказание, управление

Дата добавления: 2020-12-27; просмотров: 3715;

2.5. Алгоритмы обучения нейронных сетей с учителем

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

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

Обучение НС может вестись с учителем или без учителя.

В первом случае сети предъявляются значения как входных, так и желательных выходных сигналов, и она по некоторому внутреннему алгоритму подстраивает веса своих синаптических связей.

Во втором случае выходы НС формируются самостоятельно, а веса изменяются по алгоритму, учитывающему только входные и производные от них сигналы.

Существует большое множество различных алгоритмов обучения, которые делятся на два больших класса: детерминистские и стохастические. В первом из них подстройка весов представляет собой жесткую последовательность действий, во втором – она производится на основе действий, подчиняющихся некоторому случайному процессу.

Рассмотрим алгоритм обучения с учителем (рис. 2.11).

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

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

По этому принципу строится, например, алгоритм обучения однослойного персептрона.

Рассмотрим более подробно алгоритм обучения НС с учителем для однослойной нейронной сети, примером которой является однослойный персептрон (см. рис. 2.7).

1) Проинициализировать элементы весовой матрицы (обычно небольшими случайными значениями).

Рис. 2.11. Схема процесса обучения нейросети с учителем

2) Подать на входы один из входных векторов, которые сеть должна научиться различать, и вычислить ее выход.

3) Если выход правильный, перейти на шаг 4.

Иначе вычислить разницу между идеальным и полученным значениями выхода:

Модифицировать веса в соответствии с формулой

где t и t+1 – номера соответственно текущей и следующей итераций; – коэффициент скорости обучения, 0 1000.

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

Кроме того, фигурирующее в названии емкости прилагательное “детерминистский” означает, что полученная оценка емкости подходит абсолютно для всех возможных входных образов, которые могут быть представлены Nx входами.

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

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

При этом каждый логический уровень – “1” и “0” – будет обозначать отдельный класс. На двух выходах можно закодировать уже 4 класса и так далее. Однако результаты работы сети, организованной таким образом, можно сказать – “под завязку”, – не очень надежны.

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

Такие НС позволяют проводить классификацию входных образов, объединенных в нечеткие (размытые или пересекающиеся) множества. Это свойство приближает подобные НС к условиям реальной жизни.

Рассматриваемая НС имеет несколько “узких мест”. Во-первых, в процессе обучения может возникнуть ситуация, когда большие положительные или отрицательные значения весовых коэффициентов сместят рабочую точку на сигмоидах многих нейронов в область насыщения. Малые величины производной от логистической функции приведут в соответствие с (2.21) и (2.22) к остановке обучения, что парализует НС.

Во-вторых, применение метода градиентного спуска не гарантирует, что будет найден глобальный, а не локальный минимум целевой функции. Эта проблема связана еще с одной, а именно – с выбором величины скорости обучения.

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

Поэтому в качестве h обычно выбирается число меньше 1, но не очень маленькое, например, 0.1, и оно, вообще говоря, может постепенно уменьшаться в процессе обучения.

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

Существует и иной метод исключения локальных минимумов, а заодно и паралича НС, заключающийся в применении стохастических НС.

Нейронные сети. C чего начать?

Недавно меня пригласили в закрытый чат в телеграмме – Нейронные сети (AI Community). В этом чате собрались полторы тысячи специалистов и людей, интересующихся нейронными сетями, машинным обучением и работой с данными.

Я попал туда из-за рабочего интереса к теме, но, к своему удивлению, узнал, что многие начали свой путь в познании нейронных сетей недавно.

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

Из чата я узнал, как люди изучают построение нейронных сетей с нуля.

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

В этом мне помогли следующие два видео:

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

Часть первая. В ней идет постановка проблемы и дается определение нейронной сети на примере распознавания рукописного ввода чисел. Видео требует понимания математики на уровне старшей школы/первых курсов ВУЗа, однако проблема разобрана постепенно и в общем виде ее поймет каждый.

Представьте, что перед вами написанное от руки число. Вне зависимости от особенностей почерка, человек легко отличит 3 от 6 или 1. Как быть компьютеру? Наклон, размер и даже вид различных цифр отличается каждый раз. Чтобы решить такую сложную задачу, нужно разбить ее на несколько меньших частей.

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

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

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

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

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

С помощью изначального набора данных сеть сможет “тренироваться”, получая результаты. Чем больше сеть угадывает правильный результат, тем крепче становятся связи между нейронами на разных слоях, которые отвечают за успешный результат.

После сравнительно большого числа повторений, нейросеть станет давать правильный ответ с определенной, достаточно высокой вероятностью.

Для оценки результатов тренировки создается еще одна функция, которая оценивает отклонение. Такую функцию называют функцией ошибки или функцией потерь (cost function). Задача обучения состоит в нахождении минимума этой функции. Сам процесс обучения т.н. backpropagation (Метод обратного распространения ошибки) будет рассмотрен в следующем видео, которое выйдет скоро.

Я подписался на канал и буду держать вас в курсе новых лекций. Для того, чтобы приближать светлое будущее с технологическим прогрессом, нужно понимать, как он работает и с чем именно он нам поможет. В следующей части я сделаю обзор самых популярных курсов для новичков по ИИ и machine learning.

Один из таких курсов начинается на Coursera с 30 октября 2020 года. “Введение в машинное обучение” – это стартовый курс по машинному обучению от Школы Анализа Данных Яндекса и Высшей Школы Экономики. Я беру этот курс сейчас, у вас тоже есть возможность присоединиться. Курс бесплатный, если вы не хотите получить сертификат о прохождении по завершению.

Чтобы получить приглашение в чат о нейронных сетях, свяжитесь со мной в telegram @vintego

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

Нейронные сети: обучение без учителя

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

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

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

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

Главная черта, делающая обучение без учителя привлекательным, – это его “самостоятельность”. Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов синапсов.

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

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

Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу:

где yi(n-1) – выходное значение нейрона i слоя (n-1), yj(n) – выходное значение нейрона j слоя n; wij(t) и wij(t-1) – весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно; – коэффициент скорости обучения. Здесь и далее, для общности, под n подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами.

Существует также и дифференциальный метод обучения Хебба.

Здесь yi(n-1)(t) и yi(n-1)(t-1) – выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1; yj(n)(t) и yj(n)(t-1) – то же самое для нейрона j слоя n. Как видно из формулы (2), сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

Полный алгоритм обучения с применением вышеприведенных формул будет выглядеть так:

1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения.

На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей[1], то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение yi(n), i=0…Mi-1, где Mi – число нейронов в слое i; n=0…N-1, а N – число слоев в сети.

3. На основании полученных выходных значений нейронов по формуле (1) или (2) производится изменение весовых коэффициентов.

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

На втором шаге цикла попеременно предъявляются все образы из входного набора.

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

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

Другой алгоритм обучения без учителя – алгоритм Кохонена – предусматривает подстройку синапсов на основании их значений от предыдущей итерации.

Из вышеприведенной формулы видно, что обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя yi(n-1), и весовыми коэффициентами его синапсов.

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

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

Максимальное произведение дает выигравший нейрон.

Другой вариант – расчет расстояния между этими векторами в p-мерном пространстве, где p – размер векторов.

где j – индекс нейрона в слое n, i – индекс суммирования по нейронам слоя (n-1), wij – вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n. Корень в формуле (4) брать не обязательно, так как важна лишь относительная оценка различных Dj.

В данном случае, “побеждает” нейрон с наименьшим расстоянием. Иногда слишком часто получающие аккредитацию нейроны принудительно исключаются из рассмотрения, чтобы “уравнять права” всех нейронов слоя. Простейший вариант такого алгоритма заключается в торможении только что выигравшего нейрона.

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

где xi – i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n – его размерность. Это позволяет сократить длительность процесса обучения.

Инициализация весовых коэффициентов случайными значениями может привести к тому, что различные классы, которым соответствуют плотно распределенные входные образы, сольются или, наоборот, раздробятся на дополнительные подклассы в случае близких образов одного и того же класса. Для избежания такой ситуации используется метод выпуклой комбинации[3]. Суть его сводится к тому, что входные нормализованные образы подвергаются преобразованию:

где xi – i-ая компонента входного образа, n – общее число его компонент, (t) – коэффициент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине

где n – размерность вектора весов для нейронов инициализируемого слоя.

На основе рассмотренного выше метода строятся нейронные сети особого типа – так называемые самоорганизующиеся структуры – self-organizing feature maps (этот устоявшийся перевод с английского, на мой взгляд, не очень удачен, так как, речь идет не об изменении структуры сети, а только о подстройке синапсов).

Для них после выбора из слоя n нейрона j с минимальным расстоянием Dj (4) обучается по формуле (3) не только этот нейрон, но и его соседи, расположенные в окрестности R. Величина R на первых итерациях очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля.

Таким образом, чем ближе конец обучения, тем точнее определяется группа нейронов, отвечающих каждому классу образов.

Большая Энциклопедия Нефти и Газа

Процесс обучения нейронной сети заключается в подборе значений всех ее характеристик таким образом, чтобы отличия выходных векторов от эталонных не превышали заранее установленной величины. [1]

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

Обычно итеративная настройка весов связей осуществляется в соответствии с обучающей выборкой.

Свойство сети обучаться на примерах делает их более привлекательными по сравнению с системами, которые следуют системе правил функционирования, сформулированной экспертами. [2]

Процесс обучения нейронной сети встречного распространения различен для слоев нейронов Кохонена и Гроссберга. Рассмотрим вопросы, возникающие при обучении каждого из этих слоев. [3]

Впроцессе обучения нейронной сети значения D и а постепенно уменьшаются. [4]

Таким образом, процесс обучения нейронной сети состоит из двух этапов. Первоначально производится обучение нейронной сети восстановлению компонент выходного вектора по данным компонент входного вектора. На втором же этапе осуществляется проверка качества обучения. Скорость обучения нейронной сети зависит от значения параметра еп и от выбранного метода обучения. [5]

Важное значение для оптимизациипроцесса обучения нейронной сети имеет подбор пар обучающих векторов ( У) для обучающей страницы.

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

В противном случае, нейронная сеть либо не будет обучаться, либо будет существовать некоторое предельное, достаточно большое, значение суммарной ошибки рассогласования, достичь значений ниже которого окажется невозможно. [6]

Перед тем, как начинатьпроцесс обучения нейронной сети, необходимо присвоить весам начальные значения.

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

Конечно, можно положить начальные веса во всей сети равными нулю, но тогда частные производные от невязки по всем весам будут одинаковыми, и изменения весов не будут должным образом структурированы. [7]

В результате, после окончанияпроцесса обучения нейронной сети, состоящего из построения матрицы связей, которая обеспечивает восстановление компонент набора векторов Y по определенному набору векторов X, и проверки качества обучения нейронная сеть способна выполнять процедуру восстановления функции распределения параметров физических полей по набору интегральных данных, поступающих от измерительных линий распределенной волоконно-оптической измерительной сети. На рис. 11.1 приведены результаты, иллюстрирующие работу кибернетической нейронной сети типа двухслойный персептрон для восстановления пространственной функции распределения физического поля, в сравнении с результатами, получаемыми при реконструкции этой функции распределения с использованием традиционного итерационного вычислительного метода. [8]

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

Можно встретить утверждения, что в ряде случаев локальный минимум является вполне приемлемым решением [105], однако в общей ситуации необходимо разработать стратегию, которая позволяла бы избегать таких точек и гарантировала бы сходимость обучающего алгоритма к глобальному решению. [9]
Важно

Процесс обучения нейронной сети в программе BrainMaker возможно сочетать со многими контрольными функциями, основной из которых является тестирование сети в процессе обучения. Это означает, что набор обучающих примеров можно разбить в определенной пропорции ( по умолчанию, 1 / 9) на тестирующий и обучающий наборы. [10]

Функционал F в выражении (11.1) определяется матрицей коэффициентов связи W ( wij) между нейронами входного и выходного слоев нейронной сети. Значения элементов матрицы связей формируются впроцессе обучения нейронной сети. [11]

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

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

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

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

В частности, в трехслойных перцептро-нах на нейронах скрытого слоя применяется в большинстве случаев логистическая функция, а тип передаточной функции нейронов выходного слоя определяется на основе анализа результатов вычислительных экспериментов на сети. [13]

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

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

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

В частности, в трехслойных перцептро-нах на нейронах скрытого слоя применяется в большинстве случаев логистическая функция, а тип передаточной функции нейронов выходного слоя определяется на основе анализа результатов вычислительных экспериментов на сети. [14]

Нейронные сети: обучение без учителя

    Римма Маевская 2 лет назад Просмотров:

1 С.Короткий Нейронные сети: обучение без учителя В статье рассмотрены алгоритмы обучения искусственных нейронных сетей без учителя. Приведена библиотека классов на C++ и тестовый пример. Рассмотренный в [1] алгоритм обучения нейронной сети с помощью процедуры обратного распространения подразумевает наличие некоего внешнего звена, предоставляющего сети кроме входных так же и целевые выходные образы. Алгоритмы, пользующиеся подобной концепцией, называются алгоритмами обучения с учителем. Для их успешного функционирования необходимо наличие экспертов, создающих на предварительном этапе для каждого входного образа эталонный выходной. Так как создание искусственного интеллекта движется по пути копирования природных прообразов, ученые не прекращают спор на тему, можно ли считать алгоритмы обучения с учителем натуральными или же они полностью искусственны. Например, обучение человеческого мозга, на первый взгляд, происходит без учителя: на зрительные, слуховые, тактильные и прочие рецепторы поступает информация извне, и внутри нервной системы происходит некая самоорганизация. Однако, нельзя отрицать и того, что в жизни человека не мало учителей и в буквальном, и в переносном смысле, которые координируют внешние воздействия. Вместе в тем, чем бы ни закончился спор приверженцев этих двух концепций обучения, они обе имеют право на существование. Главная черта, делающая обучение без учителя привлекательным, это его «самостоятельность». Процесс обучения, как и в случае обучения с учителем, заключается в подстраивании весов синапсов. Некоторые алгоритмы, правда, изменяют и структуру сети, то есть количество нейронов и их взаимосвязи, но такие преобразования правильнее назвать более широким термином самоорганизацией, и в рамках данной статьи они рассматриваться не будут. Очевидно, что подстройка синапсов может проводиться только на основании информации, доступной в нейроне, то есть его состояния и уже имеющихся весовых коэффициентов. Исходя из этого соображения и, что более важно, по аналогии с известными принципами самоорганизации нервных клеток[2], построены алгоритмы обучения Хебба. Сигнальный метод обучения Хебба заключается в изменении весов по следующему правилу: n 1 w () t = w ( t 1) + y y ( ) ( n) ij ij i j α (1) где y (n-1) i выходное значение нейрона i слоя (n-1), y (n) j выходное значение нейрона j слоя n; w ij (t) и w ij (t-1) весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и t-1 соответственно; α коэффициент скорости обучения. Здесь и далее, для общности, под n подразумевается произвольный слой сети. При обучении по данному методу усиливаются связи между возбужденными нейронами. Существует также и дифференциальный метод обучения Хебба. ( n [ 1) ( n 1) ( n) ( n) i ] [ j j ] w () t = w ( t 1) + α y () t y ( t 1) y () t y ( t 1 ) (2) ij ij i 1

2 Здесь y (n-1) i (t) и y (n-1) i (t-1) выходное значение нейрона i слоя n-1 соответственно на итерациях t и t-1; y (n) j (t) и y (n) j (t-1) то же самое для нейрона j слоя n. Как видно из формулы (2), сильнее всего обучаются синапсы, соединяющие те нейроны, выходы которых наиболее динамично изменились в сторону увеличения. Полный алгоритм обучения с применением вышеприведенных формул будет выглядеть так: 1. На стадии инициализации всем весовым коэффициентам присваиваются небольшие случайные значения. 2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принципам классических прямопоточных (feedforward) сетей[1], то есть для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная (передаточная) функция нейрона, в результате чего получается его выходное значение y (n) i, i=0. m i -1, где M i число нейронов в слое i; n=0. n-1, а N число слоев в сети. 3. На основании полученных выходных значений нейронов по формуле (1) или (2) производится изменение весовых коэффициентов. 4. Цикл с шага 2, пока выходные значения сети не застабилизируются с заданной точностью. Применение этого нового способа определения завершения обучения, отличного от использовавшегося для сети обратного распространения, обусловлено тем, что подстраиваемые значения синапсов фактически не ограничены. На втором шаге цикла попеременно предъявляются все образы из входного набора. Следует отметить, что вид откликов на каждый класс входных образов не известен заранее и будет представлять собой произвольное сочетание состояний нейронов выходного слоя, обусловленное случайным распределением весов на стадии инициализации. Вместе с тем, сеть способна обобщать схожие образы, относя их к одному классу. Тестирование обученной сети позволяет определить топологию классов в выходном слое. Для приведения откликов обученной сети к удобному представлению можно дополнить сеть одним слоем, который, например, по алгоритму обучения однослойного перцептрона необходимо заставить отображать выходные реакции сети в требуемые образы. Другой алгоритм обучения без учителя алгоритм Кохонена предусматривает подстройку синапсов на основании их значений от предыдущей итерации. ( n 1) α [ ij ] w ( t) = w ( t 1) + y w ( t 1 ) (3) ij ij i Из вышеприведенной формулы видно, что обучение сводится к минимизации разницы между входными сигналами нейрона, поступающими с выходов нейронов предыдущего слоя y (n-1) i, и весовыми коэффициентами его синапсов. Полный алгоритм обучения имеет примерно такую же структуру, как в методах Хебба, но на шаге 3 из всего слоя выбирается нейрон, значения синапсов которого максимально походят на входной образ, и подстройка весов по формуле (3) проводится только для него. Эта, так называемая, аккредитация может сопровождаться затормаживанием всех остальных 2

3 нейронов слоя и введением выбранного нейрона в насыщение. Выбор такого нейрона может осуществляться, например, расчетом скалярного произведения вектора весовых коэффициентов с вектором входных значений. Максимальное произведение дает выигравший нейрон. Другой вариант расчет расстояния между этими векторами в p-мерном пространстве, где p размер векторов. p 1 ( n ) Dj = ( yi wij ) i= 0 1 2, (4) где j индекс нейрона в слое n, i индекс суммирования по нейронам слоя (n-1), w ij вес синапса, соединяющего нейроны; выходы нейронов слоя (n-1) являются входными значениями для слоя n. Корень в формуле (4) брать не обязательно, так как важна лишь относительная оценка различных D j. В данном случае, «побеждает» нейрон с наименьшим расстоянием. Иногда слишком часто получающие аккредитацию нейроны принудительно исключаются из рассмотрения, чтобы «уравнять права» всех нейронов слоя. Простейший вариант такого алгоритма заключается в торможении только что выигравшего нейрона. При использовании обучения по алгоритму Кохонена существует практика нормализации входных образов, а так же на стадии инициализации и нормализации начальных значений весовых коэффициентов. 2 x = x / xj, (5) i i n 1 j= 0 где x i i-ая компонента вектора входного образа или вектора весовых коэффициентов, а n его размерность. Это позволяет сократить длительность процесса обучения. Инициализация весовых коэффициентов случайными значениями может привести к тому, что различные классы, которым соответствуют плотно распределенные входные образы, сольются или, наоборот, раздробятся на дополнительные подклассы в случае близких образов одного и того же класса. Для избежания такой ситуации используется метод выпуклой комбинации[3]. Суть его сводится к тому, что входные нормализованные образы подвергаются преобразованию: x = α() t x + ( 1 α()) t i i 1, (6) n где x i i-ая компонента входного образа, n общее число его компонент, α(t) коэффициент, изменяющийся в процессе обучения от нуля до единицы, в результате чего вначале на входы сети подаются практически одинаковые образы, а с течением времени они все больше сходятся к исходным. Весовые коэффициенты устанавливаются на шаге инициализации равными величине w = 1 o, (7) n где n размерность вектора весов для нейронов инициализируемого слоя. 3

4 На основе рассмотренного выше метода строятся нейронные сети особого типа так называемые самоорганизующиеся структуры self-organizing feature maps (этот устоявшийся перевод с английского, на мой взгляд, не очень удачен, так как, речь идет не об изменении структуры сети, а только о подстройке синапсов). Для них после выбора из слоя n нейрона j с минимальным расстоянием D j (4) обучается по формуле (3) не только этот нейрон, но и его соседи, расположенные в окрестности R. Величина R на первых итерациях очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля. Таким образом, чем ближе конец обучения, тем точнее определяется группа нейронов, отвечающих каждому классу образов. В приведенной ниже программе используется именно этот метод обучения. Развивая объектно-ориентированный подход в моделировании нейронных сетей, рассмотренный в [1], для программной реализации сетей, использующих алгоритм обучения без учителя, были разработаны отдельные классы объектов типа нейрон, слой и сеть, названия которых снабжены суффиксом UL. Они наследуют основные свойства от соответствующих объектов прямопоточной сети, описанной в [1]. Фрагмент заголовочного файла с описаниями классов и функций для таких сетей представлен на листинге 1. Как видно из него, в классе NeuronUL в отличие от NeuronBP отсутствуют обратные связи и инструменты их поддержания, а по сравнению с NeuronFF здесь появилось лишь две новых переменных delta и inhibitory. Первая из них хранит расстояние, рассчитываемое по формуле (4), а вторая величину заторможенности нейрона. В классе NeuronUL существует два конструктора один, используемый по умолчанию, не имеет параметров, и к созданным с помощью него нейронам необходимо затем применять метод _allocateneuron класса NeuronFF. Другой сам вызывает эту функцию через соответствующий конструктор NeuronFF. Метод Propagate является почти полным аналогом одноименного метода из NeuronFF, за исключением вычисления величин delta и inhibitory. Методы Normalize и Equalize выполняют соответственно нормализацию значений весовых коэффициентов по формуле (5) и их установку согласно (7). Метод CountDistance вычисляет расстояние (4). Следует особо отметить, что в классе отсутствует метод IsConverged, что, объясняется, как говорилось выше, различными способами определения факта завершения обучения. Хотя в принципе написать такую функцию не сложно, в данной программной реализации завершение обучения определяется по «телеметрической» информации, выводимой на экран, самим пользователем. В представленном же вместе со статьей тесте число итераций, выполняющих обучение, вообще говоря, эмпирически задано равным В состав класса LayerUL входит массив нейронов neurons и переменная с размерностью массивов синапсов neuronrang. Метод распределения нейронов внешний или внутренний определяется тем, как создавался слой. Этот признак хранится в переменной allocation. Конструктор LayerUL(unsigned, unsigned) сам распределяет память под нейроны, что соответствует внутренней инициализации; конструктор LayerUL(NeuronUL _FAR *, unsigned, unsigned) создает слой из уже готового, внешнего массива нейронов. Все методы этого класса аналогичны соответствующим методам класса LayerFF и, в большинстве своем, используют одноименные методы класса NeuronUL. 4

5 В классе NetUL также особое внимание необходимо уделить конструкторам. Один из них NetUL(unsigned n) создает сеть из n пустых слоев, которые затем необходимо заполнить с помощью метода SetLayer. Конструктор NetUL(unsigned n, unsigned n1. ) не только создает сеть из n слоев, но и распределяет для них соответствующее число нейронов с синапсами, обеспечивающими полносвязность сети. После создания сети необходимо связать все нейроны с помощью метода FullConnect. Как и в случае сети обратного распространения, сеть можно сохранять и загружать в/из файла с помощью методов SaveToFile, LoadFromFile. Из всех остальных методов класса новыми по сути являются лишь NormalizeNetInputs и ConvexCombination. Первый из них нормализует входные вектора, а второй реализует преобразование выпуклой комбинации (6). В конце заголовочного файла описаны глобальные функции. SetSigmoidTypeUL, SetSigmoidAlfaUL и SetDSigmaUL аналогичны одноименным функциям для сети обратного распространения. Функция SetAccreditationUL устанавливает режим, при котором эффективность обучения нейронов, попавших в окружение наиболее возбужденного на данной итерации нейрона, пропорциональна функции Гаусса от расстояния до центра области обучения. Если этот режим не включен, то все нейроны попавшие в область с текущим радиусом обучения одинаково быстро подстраивают свои синапсы, причем область является квадратом со стороной, равной радиусу обучения. Функция SetLearnRateUL устанавливает коэффициент скорости обучения, а SetMaxDistanceUL радиус обучения. Когда он равен 0 обучается только один нейрон. Функции SetInhibitionUL и SetInhibitionFresholdUL устанавливают соответственно длительность торможения и величину возбуждения, его вызывающего. Тексты функций помещены в файле neuro_mm.cpp, представленном в листинге 2. Кроме него в проект тестовой программы входят также модули neuron_ff.cpp и subfun.cpp, описанные в [1]. Главный модуль, neuman7.cpp приведен в листинге 3. Программа компилировалась с помощью компилятора Borland C в модели LARGE. Тестовая программа демонстрирует христоматийный пример обучения самонастраивающейся сети следующей конфигурации. Входной слой состоит из двух нейронов, значения аксонов которых генерируются вспомогательной функцией на основе генератора случайных чисел. Выходной слой имеет размер 10 на 10 нейронов. В процессе обучения он приобретает свойства упорядоченной структуры, в которой величины синапсов нейронов плавно меняются вдоль двух измерений, имитируя двумерную сетку координат. Благодаря новой функции DigiShow и выводу индексов X и Y выигравшего нейрона, пользователь имеет возможность убедиться, что значения на входе сети достаточно точно определяют позицию точки максимального возбуждения на ее выходе. Необходимо отметить, что обучение без учителя гораздо более чувствительно к выбору оптимальных параметров, нежели обучение с учителем. Во-первых, его качество сильно зависит от начальных величин синапсов. Во-вторых, обучение критично к выбору радиуса обучения и скорости его изменения. И наконец, разумеется, очень важен характер изменения собственно 5

6 коэффициента обучения. В связи с этим пользователю, скорее всего, потребуется провести предварительную работу по подбору оптимальных параметров обучения сети. Несмотря на некоторые сложности реализации, алгоритмы обучения без учителя находят обширное и успешное применение. Например, в [4] описана многослойная нейронная сеть, которая по алгоритму самоорганизующейся структуры обучается распознавать рукописные символы. Возникающее после обучения разбиение на классы может в случае необходимости уточняться с помощью обучения с учителем. По сути дела, по алгоритму обучения без учителя функционируют и наиболее сложные из известных на сегодняшний день искусственные нейронные сети когнитрон и неокогнитрон, максимально приблизившиеся в своем воплощении к структуре мозга. Однако они, конечно, существенно отличаются от рассмотренных выше сетей и намного более сложны. Тем не менее, на основе вышеизложенного материала можно создать реально действующие системы для распознавания образов, сжатия информации, автоматизированного управления, экспертных оценок и много другого. Литература 1. С.Короткий, Нейронные сети: алгоритм обратного распространения. 2. Ф.Блум, А.Лейзерсон, Л.Хофстедтер, Мозг, разум и поведение, М., Мир, Ф.Уоссермен, Нейрокомпьютерная техника, М., Мир, Keun-Rong Hsieh and Wen-Tsuen Chen, A Neural Network Model which Combines Unsupervised and Supervised Learning, IEEE Trans. on Neural Networks, vol.4, No.2, march

9 fmax=maxdistance; imax=-1; for(i=0;i 0) for(cy=max(ny-(int)maxdistance,0); cy =1.0) neurons[i].delta= exp(-sqrt((nx-x)*(nx-x)+(ny-y)*(ny-y)) /MaxDistance); Accreditation=0; NetUL::NetUL(unsigned nlayers) layers=null; if(nlayers==0) status=error; return; layers=new LayerUL _FAR *[nlayers]; if(layers==null) status=error; rang=nlayers; layers[i]=null; NetUL::

NetUL() if(rang) if(layers!=null) layers[i]- >

LayerUL(); delete [] layers; layers=null; int NetUL::SetLayer(unsigned n, LayerUL _FAR * pl) unsigned i,p; if(n>=rang) return 1; p=pl->rang; if(p==0) return 2; if(n) // если не первый слой if(layers[n-1]!=null) // если предыдущий слой уже установлен, // проверяем соответствие числа нейронов // в нем и синапсов в добавляемом слое for(i=0;i

rang) return 3; if(n rang;i++) if(p!=layers[n+1]->neurons[i].rang) return 4; layers[n]=pl; int NetUL::FullConnect(vo >rang==0) return 1; n=(*layers[i-1]).rang; if(n==0) return 2; for(j=0;j rang;j++) // по нейронам for(k=0;k neurons[j].inputs[k]= &(layers[i-1]->neurons[k].axon); vo >propagate(); vo >rang;i++) layers[0]->neurons[i].axon=mv[i]; vo >rang;i++) s+=(mv[i]+0.5)*(mv[i]+0.5); s=sqrt(s); if(s) for(i=0;i rang;i++) mv[i]=(mv[i]+0.5)/s-0.5; int Signum(float a, float b) if(a 0 && b>0) return 1; vo >rang;i++) // по нейронам if(layers[j]->neurons[i].delta == 0) continue; for(k=0;k neuronrang;k++) // по синапсам layers[j]->neurons[i].synapses[k]+=learnrate* (layers[j-1]->neurons[k].axon — layers[j]->neurons[i].synapses[k]); for(i=0;i rang;i++) // по нейронам if(inhibition // заторможенные пропускаем 9

10 && layers[j]->neurons[i].inhibitory>0) continue; for(k=0;k neuronrang;k++) // по синапсам layers[j]->neurons[i].synapses[k]+=learnrate *layers[j]->neurons[i].delta *(layers[j-1]->neurons[k].axon — layers[j]->neurons[i].synapses[k]); void NetUL::Randomize(float range) layers[i]->randomize(range); vo >equalize(); vo >normalize(); int NetUL::SaveToFile(unsigned char *file) FILE *fp; fp=fopen(file,»wt»); if(fp==null) return 1; fprintf(fp,»%u»,rang); fprintf(fp,»\n+%u»,layers[i]->rang); fprintf(fp,»\n %u»,layers[i]->neuronrang); for(unsigned j=0;j rang;j++) fprintf(fp,»\n +%f»,layers[i]->neurons[j].state); fprintf(fp,»\n %f»,layers[i]->neurons[j].axon); fprintf(fp,»\n %f»,layers[i]->neurons[j].delta); for(unsigned k=0;k neuronrang;k++) fprintf(fp,»\n %f», layers[i]->neurons[j].synapses[k]); fprintf(fp,»\n +»); fprintf(fp,»\n+»); fclose(fp); int NetUL::LoadFromFile(unsigned char *file) FILE *fp; unsigned i,r,nr; unsigned char bf[12]; fp=fopen(file,»rt»); if(fp==null) return 1; fscanf(fp,»%u\n»,&r); if(r==0) goto allerr; layers=new LayerUL _FAR *[r]; if(layers==null) allerr: status=error; fclose(fp); return 2; rang=r; for(i=0;i rang;j++) fscanf(fp,» +%f\n»,&(layers[i]- >neurons[j].state)); fscanf(fp,» %f\n»,&(layers[i]- >neurons[j].axon)); fscanf(fp,» %f\n»,&(layers[i]- >neurons[j].delta)); for(unsigned k=0;k neuronrang;k++) fscanf(fp,» %f\n», &(layers[i]->neurons[j].synapses[k])); fgets(bf,10,fp); fgets(bf,10,fp); fclose(fp); NetUL::NetUL(unsigned n, unsigned n1. ) unsigned i, num, prenum; va_list varlist; status=ok; rang=0; pf=null; learncycle=0;layers=null; layers=new LayerUL _FAR *[n]; if(layers==null) allerr: status=error; rang=n; for(i=0;i getstatus()==error) status=error; va_start(varlist,n1); for(i=1;i getstatus()==error) status=error; va_end(varlist); int NetUL::LoadNextPattern(float _FAR *IN) unsigned char buf[256]; unsigned char *s, *ps; int i; if(imgfile==1) restart: for(i=0;i dy;i++) if(fgets(buf,256,pf)==null) if(learncycle) rewind(pf); learncycle—; goto restart; return 2; for(int j=0;j dx;j++) if(buf[j]==’x’) IN[i*layers[0]->dx+j]=0.5; if(buf[j]==’.’) IN[i*layers[0]->dx+j]=-0.5; fgets(buf,256,pf); if(imgfile==2 && emuf!= NULL) return (*emuf)(layers[0]->rang,in,null); if(pf==null) return 1; // разбор строки доверять функции scanf нельзя start: if(fgets(buf,250,pf)==null) if(learncycle) rewind(pf); learncycle—; goto start; return 2; s=buf; for(;*s==’ ‘;s++); for(i=0;i rang;i++) ps=strchr(s,’ ‘); if(ps) *ps=0; IN[i]=atof(s); s=ps+1; for(;*s==’ ‘;s++); fgets(buf,256,pf); // функция внесения помех float NetUL::Change(float In) return -In; vo >rang); layers[0]->neurons[k].axon= Change(layers[0]->neurons[k].axon); 10

А.В. Чижков ОБУЧЕНИЕ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ Технологический институт Южного федерального университета в г. Таганроге e-mail: 4ijkov@rambler.ru Главным свойством искусственных нейронных сетей является

Лекция 5. Тема 3.3 Сети с самоорганизацией на основе конкуренции. Содержание:

Лекция 5 Тема 3.3 Сети с самоорганизацией на основе конкуренции Содержание: 1. Архитектура сети Кохонена 2. Меры расстояния между векторами и нормализация векторов 1. Архитектура сети Кохонена Под термином

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL