" - Аннушка $$\dots$$ Аннушка?.. - забормотал поэт, тревожно озираясь, - позвольте, позвольте $$\dots$$
К слову "Аннушка" привязались слова "подсолнечное масло", а затем почему-то "Понтий Пилат". Пилата поэт отринул и стал вязать цепочку, начиная со слова "Аннушка". И цепочка эта связалась очень быстро и тотчас привела к сумасшедшему профессору".
Объединим множество эталонов, требующих возбуждения одного нейрона выходного слоя, понятием R1. Тогда для , которая объединяет все посылки, ведущие к одному выводу, A1B1C1C2C3C4C5->R1.
Выберем нейросеть, отражающую, как нам кажется, все особенности, которые необходимо учесть при построении алгоритма трассировки, и, как мы уже начали, возьмем тот же пример, который выглядит теперь следующим образом:
$$\begin{array}{l} A1\ B1\ C1\ C2\ C3\ C4\ C5 \to R1\\ A1\ B2\ B3\ C1\ C2\ C3 \to R2\\ A1\ B2\ B3\ C4\ C5 \to R3\\ A2\ B3\ C1\ C2\ C3\ C4\ C5 \to R4\\ A2\ B1\ B2\ C1\ C2\ C3\ C4\ C5 \to R5\end{array}$$Мы хотим, задавая
При этом мы строим эвристический алгоритм, который крайне экономно расходует ресурсы сети - ее нейроны и связи, но и так же экономно вводит изменения, развивает сеть, если связей оказывается недостаточно.
Ибо мы видели, с каким трудом удается приспособить "готовую" нейросеть под конкретную задачу. Мы постоянно склонялись к вопросу: "А не лучше ли сразу строить сеть "под задачу", а не наоборот?" Нам кажется, мы нашли диалектический компромисс: беря что-то близкое, подходящее, мы минимально переделываем, словно костюм с жмущим гульфиком, купленный в универсальном магазине. Кроме того, нам очень важно сделать алгоритм доступным широким массам студенческой молодежи, овладевшей основами таинства параллельного программирования!
(рис 4.1) Нейросеть, подлежащая обучению
(рис 4.2) Матрица следования с транзитивными связямиПусть выбранная нейросеть представлена на рис. 4.1, где первоначально
заданные связи обозначены тонкими стрелками. Строим соответствующую S и в ней
-
В данном случае из нейрона В1 не исходит ни одной Вых5. Это следует из того, что в строке, соответствующей нейрону Вых5,
нет даже В1. То же касается нейрона В3.
Введем В1 -> Вых5 и В3 -> Вых5, что отмечено
на рис. 4.1 жирными стрелками, а на рис.
4.2 – нулевыми весами введенных связей.
Сформируем {B1,
A1, C1, C2, C3, C4, C5} -> Вых1 и отобразим его матрицей S1[B1,A1,C1,C2,C3,C4,C5
-> Вых1] на рис. 4.3.
(рис 4.3) Матрица следования при обучении первому эталонуПытаясь сымитировать прокладываемые пути возбуждений, снабдим все нейроны входного слоя, отраженные в этой матрице, признаком "возбужден".
Найдем входы матрицы S1 (пустые строки), обладающие признаком "возбужден".
Выделим в одну совокупность соответствующие им столбцы, в данном случае столбцы 1-7, и найдем в ней строку, содержащую
максимальное число "нулей", - строку, соответствующую нейрону 6. Заменяем в этой строке (в выделенной совокупности
столбцов) "нули" "единицами", т.е. максимально увеличиваем соответствующие веса. Присваиваем нейрону 6 признак
"возбужден", а также значение m6 = 5, характеризующее то количество нейронов, "возбуждение"
которых мы "собрали" на входе этого нейрона. Впредь мы можем только повторно использовать этот нейрон, но менять веса связей на
его входе мы не должны. Изменение весов отображаем в матрице S.
Исключаем из матрицы S1 строки и столбцы, соответствующие нейронам С1,
С2, С3, С4, С5. Новый вид матрицы S1 представлен на рис.
4.4.
(рис 4.4) Шаг преобразования матрицы следованияВновь выделяем столбцы, соответствующие "возбужденным" входам матрицы. Это столбцы, соответствующие
нейронам В1, А1, 6. Находим строку в выделенной совокупности столбцов, имеющую максимальное число "нулей".
Такая строка соответствует нейрону 11. Заменяем в этой строке (в выделенной совокупности столбцов) "нули" "единицами",
т.е. максимально увеличиваем веса. Присваиваем нейрону 11 признак "возбужден" и значение m11 = 3. Отражаем
изменение весов в матрице S.
Исключаем из матрицы S1 строки и столбцы, соответствующие нейронам В1,
А1, 6. Матрица принимает вид, изображенный на рис. 4.5.
(рис 4.5) Шаг преобразования матрицы следованияИсключаем из матрицы все входы, которые соответствуют нейронам 1, 2, 3, 4, 5, не обладающим
признаком "возбужден". Ведь строящийся нами 9 и 10.
Последовательное исключение сверху вниз динамически учитывает появление таких нейронов и гарантирует
полное исключение за один проход. Матрица S1 примет вид на рис.
4.6.
(рис 4.6) Шаг преобразования матрицы следованияТеперь в первом столбце имеется единственная строка с "нулем" - соответствующая нейрону Вых1. Меняем "нуль" на "единицу" - получаем окончательный возможный
S.
Мы не будем приводить новый вид S, а на изображении самой сети (рис. 4.7) выделим темным построенную трассу (она же - опорный путь, а также
Реакции на эталон одной комбинации мы сеть научили.
Составим R2, - {A1, B2, B3, C1, C2, C3}. Свяжем это решение с нейроном Вых2.
По сети на рис. 4.7 или по матрице на рис.
4.2 (с учетом частичного обучения!) построим (рис. 4.8) матрицу S2[B2, B3, A1, C1, C2,
C3 -> Вых2].
Нейрон 6 ранее "объединил" возбуждение пяти нейронов: С1, С2, С3, С4, С5,
т.е. в матрице S в соответствующей строке содержится пять единиц и m6
= 5. Однако в составленной матрице S2 в строке, соответствующей этому
нейрону, присутствуют лишь три единицы. Значит, этот нейрон не может быть использован для трассировки
необходимого С1С2С3С4С5 нам здесь не
нужна.
(рис 4.7) Нейросеть, обученная первому эталону
(рис 4.8) Матрица следования для обучения второму эталонуТо же следует сказать и о нейроне 11.
Исключим из данной матрицы строки и столбцы, соответствующие нейронам 6 и 11.
Матрица примет вид, показанный на рис. 4.9.
(рис 4.9) Шаг преобразования матрицы следованияОбъединяем столбцы множества входов матрицы, обладающих признаком "возбужден". На данном
шаге - это первые шесть столбцов матрицы. Находим в них первую строку, содержащую максимальное число нулей.
Это строка, соответствующая нейрону 4. Меняем в ней все нули на единицы, полагаем m4
= 4. Присваиваем нейрону 4 признак "возбужден". Отражаем внесенные изменения весов в
матрице S.
Исключаем из матрицы S2 строки и столбцы, соответствующие нейронам В2, А1, С1, С2, "передавшим" свое возбуждение
нейрону 4.
Вновь объединяем столбцы множества входов, обладающих признаком "возбужден". Это столбцы,
соответствующие нейронам В3, С3, 4. В совокупности этих столбцов выбираем первую из строк,
содержащую максимальное число нулей. В данном случае это строка, соответствующая нейрону 1.
Меняем нуль на единицу, полагаем m1 = 1, нейрону 1 присваиваем признак
"возбужден".
Исключаем из матрицы строку и столбец, соответствующие нейрону В3, "передавшему"
возбуждение нейрону 1. Исключаем из матрицы строки и столбцы, соответствующие образовавшимся входам
- "не возбужденным" нейронам 2 и 3.
Выделяем столбцы, которые соответствуют нейронам - входам, обладающим признаком "возбужден",
и в их совокупности находим строку, обладающую наибольшим числом нулей. Такая строка соответствует нейрону 10. Меняем нули на единицы, присваиваем нейрону признак "возбужден", полагаем m10
= 2.
Исключаем из матрицы S2 строки и столбцы, которые соответствуют нейронам 1 и 4, передавшим возбуждение нейрону 10.
Нейрон 9, не обладающий признаком "возбужден", образует вход матрицы. Исключаем
соответствующие ему строку и столбец.
Выделяем столбцы, соответствующие нейронам С3 и 10, и в них находим строку
с максимальным числом нулей. Первая из таких строк соответствует нейрону 5. Заменяем в ней
единственный нуль единицей, присваиваем нейрону признак "возбужден", полагаем m5
= 1. Отражаем изменение веса в матрице S.
Исключаем из матрицы S2 строку и столбец, которые соответствуют нейрону С3,
передавшему возбуждение нейрону 5.
Исключаем строку и столбец, соответствующие нейрону 7, как порождающему вход матрицы
и не имеющему признака "возбужден".
В совокупности выделенных столбцов, соответствующих нейронам 5 и 10, строка,
соответствующая нейрону 12, имеет единственный нуль. Меняем его на единицу, присваиваем нейрону 12 признак "возбужден", полагаем m12 = 1. Отражаем внесенное изменение
веса в матрице S. Исключаем из матрицы S1 строку и столбец, соответствующие нейрону 5.
И, наконец, на последнем шаге, заменяя нули в строке, соответствующей нейрону Вых2,
единицами, мы получим окончательный искомый
(рис 4.10) Нейросеть после обучения двум эталонамОбучим сеть третьей ситуации, требующей решения R3. Закрепим за этим решением нейрон Вых3. Матрица S3[B2, B3, A1, C4, C5 -> Вых3] представлена на
рис. 4.11.
(рис 4.11) Матрица следования для обучения третьему эталонуИсключаем из матрицы S3 представительство тех ранее использованных ("возбужденных")
нейронов, для которых значение m (указано в дополнительном столбце матрицы) превышает количество единиц в соответствующей
строке. Это значит, что эти нейроны "собрали" уже возбуждение нейронов, которые в данном S3,
не используются. Это нейроны 4, 5, 6, 11. Переиспользование их невозможно.
Повторяем попытки исключения из матрицы S3 представительства тех нейронов,
для которых значение m стало превышать количество единиц в соответствующей строке. И так далее - до исчерпания
этой возможности.
В данном случае нам придется исключить из рассмотрения (вследствие исключения нейронов 4
и 5 ) нейроны 10 и 12. Матрица S3 примет окончательный
вид на рис. 4.12.
(рис 4.12) Шаг преобразования матрицы следования Присваиваем всем нейронам, образующим входы матрицы, признак "возбужден".
Выделяем и объединяем столбцы, соответствующие входам матрицы S3.
Разовьем предшествующие аналогичные действия следующим образом.
В выделенных столбцах находим строку, содержащую хотя бы одну единицу. Она (строка) представляет тот нейрон, который "собрал" (при анализе предыдущих эталонов) возбуждение одного или более нейронов, образующих входы. Эти нейроны, "передавшие" свое возбуждение, могут быть исключены из рассмотрения. Среди таких строк выбираем строку с максимальным числом единиц.
Так, нейрон 1 возбужден единственным нейроном, принадлежащим текущему множеству входов матрицы, -
нейроном В3. Впредь он представляет этот нейрон, который может быть исключен из рассмотрения.
Матрица S3 принимает вид на рис. 4.13.
(рис 4.13) Шаг преобразования матрицы следованияПодтверждаем нейрону 1 признак "возбужден" и превращаем его во вход матрицы S3,
уничтожив веса в его строке.
Вновь находим множество входов матрицы и выделяем соответствующие им столбцы. Пытаемся найти строку,
содержащую единицы в этих и только этих столбцах, но таких больше нет. Тогда находим строку, содержащую
максимальное число нулей. Первая такая строка соответствует нейрону 2. "Объединяем"
на нем возбуждение нейронов В2 и А1, заменяя нули единицами. Полагаем m2
= 2, исключаем нейроны В2 и А1 из рассмотрения, присваиваем нейрону 2 признак
"возбужден". Отражаем сделанные изменения весов в матрице S.
Исключаем входы, не обладающие признаком "возбужден", - нейроны 3 и 5.
Выделяем столбцы, соответствующие входам. В их совокупности не находим строк, содержащих единицы.
Тогда находим строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 7.
Меняем нули (в выделенной совокупности столбцов!) на единицы, полагаем m7 = 2, присваиваем
нейрону 7 признак "возбужден", отражаем изменение весов в матрице S. Исключаем
нейроны С4 и С5 из рассмотрения. Сразу замечаем, что сформируется "невозбужденный"
вход, соответствующий нейрону 8. Исключаем из рассмотрения и этот нейрон (рис.
4.14).
(рис 4.14) Шаг преобразования матрицы следованияВыделяем столбцы, соответствующие "возбужденным" входам, и не находим строк, содержащих
единицы. Тогда находим первую строку, содержащую максимальное число нулей. Это строка, соответствующая
нейрону 13. Меняем нуль на единицу, нейрону 13 присваиваем признак "возбужден",
полагаем m13 = 1. Исключаем нейрон 7 из рассмотрения.
Выделяем столбцы, соответствующие множеству "возбужденных" входов. В них не находим строку
с единицами, но единственная строка с максимальным числом нулей соответствует нейрону Вых3.
Меняем нуль на единицу. Однако статус этого нейрона особый, и значение m, как и признак "возбужден",
ему не присваиваем.
Исключаем нейрон 13 из рассмотрения.
Выделяем множество столбцов, соответствующих "возбужденным" входам. Это столбцы, соответствующие
нейронам 1 и 2. Пытаемся в этих столбцах найти строку с единицами, затем с максимальным
числом нулей, - но таковых нет! Значит, необходимо введение дополнительных связей. Тогда в каждом столбце при просмотре
сверху вниз находим первую 1 -> Вых3 и 2 -> Вых3.
Построение трассы решения R3 закончено. После этого этапа обучения сеть имеет вид как
на рис. 4.15.
Приступим к обучению следующему A2B3C1C2C3C4C5 -> R4. S4[B3,
A2, C1, C2, C3, C4, C5 -> Вых4] представлена на рис. 4.16.
Исключим из рассмотрения те нейроны, для которых количество единиц в строках меньше значения m. Такими
нейронами являются 4 и 11. Матрица S4 имеет вид как на рис. 4.17.
(рис 4.15) Нейросеть после обучения третьему эталону
(рис 4.16) Матрица следования для обучения четвертому эталону
(рис 4.17) Шаг преобразования матрицы следования Присваиваем всем нейронам-входам значение "возбужден". Выделяем столбцы, соответствующие
входам - первым строкам "возбужденных" нейронов. Это первые семь столбцов. Среди строк этой
совокупности столбцов находим строку с максимальным числом единиц в этих столбцах, при отсутствии единиц
в других столбцах. Это строка, соответствующая нейрону 6. Теперь нейрон 6 будет
представлять нейроны С1, С2, С3, С4, С5, "передавшие" ему свое возбуждение. Присваиваем
ему признак "возбужден", исключаем из рассмотрения перечисленные нейроны, матрица S4
принимает вид как на рис. 4.18.
(рис 4.18) Шаг преобразования матрицы следованияДля "не возбужденных" нейронов исключаем из матрицы S4 строки (и
столбцы), число единиц в которых стало меньше соответствующего значения m. Они соответствуют
нейронам 5 и 7. Повторяем этот шаг до полного исключения таких нейронов, - исключаются
нейроны 12 и 13. Матрица имеет вид как на рис. 4.19.
(рис 4.19) Шаг преобразования матрицы следованияИсключаем из рассмотрения множество "невозбужденных" входов. К таким относится нейрон 8.
Выделяем множество столбцов, соответствующих входам матрицы. В их совокупности находим первую строку, обладающую максимальным
числом нулей (единиц нет во всей матрице!). Такая строка соответствует нейрону 3. Нули в ней соответствуют нейронам В3 и А2. Исключаем эти нейроны из рассмотрения, полагаем m3 = 2, присваиваем нейрону 3 признак "возбужден".
Вновь выделяем множество столбцов, соответствующих входам матрицы, и так как в их совокупности нет
строк, содержащих единицы, находим строку с максимальным количеством нулей. Эта строка соответствует нейрону 14. Заменяем в ней нуль на единицу, полагаем m14 = 1, присваиваем нейрону 14 признак "возбужден". Исключаем нейрон 6 из матрицы. Матрица принимает вид
как на рис. 4.20.
(рис 4.20) Шаг преобразования матрицы следованияВыделяем множество столбцов, соответствующих входам матрицы, и так как в их совокупности нет строк,
содержащих единицы, находим строку с максимальным количеством нулей. Эта строка соответствует нейрону выходного
слоя Вых4. Меняем в ней нуль на единицу. Так как это - нейрон выходного слоя, не присваиваем ему признак
"возбужден" и значение m. Исключаем нейрон 14 из рассмотрения. Матрица имеет вид как на рис. 4.21.
(рис 4.21) Шаг преобразования матрицы следованияВ этой матрице множество "возбужденных" входов составляет единственный нейрон 3.
Однако в его столбце нет ни единичных, ни нулевых элементов. Тогда, как и прежде, вводим в сеть дополнительную
связь, найдя в столбце, соответствующем нейрону 3, первую сверху 3 -> Вых4.
Все изменения отражаем в матрице S.
Построение трассы решения R4 закончено. Не приводя промежуточного вида матрицы S,
дадим на рис. 4.22 вид сети, полученной после данного этапа трассировки.
И, наконец, приступим к трассировке последнего R5, A2B1B2C1C2C3C4C5
-> R5. За решением R5 закреплен нейрон выходного слоя Вых5.
На основе текущего вида матрицы S построим матрицу S5[B1, B2, A2, C1,
C2, C3, C4, C5 -> Вых5], исключая из S "ненужные" строки и столбцы и
сохраняя 4, для которого количество единиц в строке меньше значения m4
= 4. Получившаяся матрица S5 представлена на рис. 4.23.
(рис 4.22) Нейросеть после обучения четырем эталонам
(рис 4.23) Матрица следования для обучения пятому эталонуПрисваиваем всем входам признак "возбужден". Выделяем столбцы, соответствующие "возбужденным"
входам. В совокупности этих столбцов находим строку, содержащую максимальное число единиц в этих и только этих столбцах,
если таковые имеются. В данном случае это строка, соответствующая нейрону 6. Присваиваем нейрону 6
признак "возбужден" и исключаем из рассмотрения нейроны С1, ..., С5.
Исключаем из рассмотрения нейроны 5 и 7, так как в соответствующих им строках
отсутствуют единицы при отличных от нуля значениях m. Однако видно, что после их исключения придется
исключить по той же причине нейроны 12 и 13. Получившаяся матрица представлена на рис. 4.24.
(рис 4.24) Шаг преобразования матрицы следованияИсключаем из рассмотрения "невозбужденный" вход, соответствующий нейрону 8.
Выделяем столбцы, соответствующие "возбужденным" входам, и в их совокупности находим строку,
содержащую наибольшее число единиц при отсутствии единиц в других столбцах. Такая строка соответствует
нейрону 14. Исключаем из рассмотрения нейрон 6 как передавший свое возбуждение
нейрону 14, присваиваем нейрону 14 признак "возбужден". Матрица S5
принимает вид как на рис. 4.25.
(рис 4.25) Шаг преобразования матрицы следованияВыделяем столбцы входов, соответствующие "возбужденным" нейронам, и в их совокупности находим
строку, содержащую максимальное число нулей (строк с единицами больше нет). Такая строка соответствует нейрону
выходного слоя Вых5. Меняем нули на единицы. Исключаем нейроны В1 и 14 из
рассмотрения. Отражаем введенные изменения в матрице S. Новый вид матрицы S5
приведен на рис. 4.26.
(рис 4.26) Шаг преобразования матрицы следованияВыделяем множество столбцов, соответствующих входам матрицы. В этих столбцах не находим ни строк,
содержащих единицы, ни строк, содержащих нули. Тогда в каждом столбце заносим единицы на места В2 -> Вых5
и А2 -> Вых5, а веса этих связей полагаем равными единице.
Трассировка (обучение сети по
(рис 4.27) Обученная нейросеть В результате решения примера сформировались и даже стали привычными действия, на основе которых мы можем сформулировать
Алгоритм трассировки (обучения по
S Выхi за обобщенными ситуациями. Для каждой обобщенной ситуации
выполняем пункты 4-15.i ( i = 1,
2, ..., m ) строим Si[Vi1, Vi2,
..., Vir -> Выхi], где Vi1, Vi2, ..., Vir
- нейроны входного слоя, возбуждающиеся (до максимальной величины) при подаче Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие
столбцы), которые содержат количество единиц меньше значения m, указанного при строке.Примечание. Так как в процессе такого вычеркивания могут образовываться новые подобные строки, а
матрица S - треугольная, то это вычеркивание должно быть произведено последовательно, сверху
вниз по одной строке. Тогда все вычеркивание выполнится за один проход. В противном случае, если сразу наметить
для вычеркивания несколько строк (и столбцов), не избежать повторного, возможно, многократного анализа появления
новых строк для вычеркивания.
Si.Si более одной строки? Если содержит, выполняется
следующий пункт, в противном случае выполняется пункт 3.Si строки и столбцы, соответствующие нейронам–входам,
не обладающим признаком "возбужден".Si, обладающих признаком "возбужден".Выполняем действие, отраженное в пункте 5 (во внешнем цикле): исключаем из текущего вида матрицы Si строки (и столбцы), которые содержат количество единичных элементов меньшее,
чем указанное при строке значение m.
Примечание. Такое действие необходимо после каждого вычеркивания строк и столбцов.
m.) Соответствующий ей нейрон может быть переиспользован. Если такой строки найти не удается, выполняем
пункт 13.Исключаем из рассмотрения нейроны (вычеркиваем строки и столбцы) которым соответствуют единицы
в найденной строке. Присваиваем нейрону, соответствующему выделенной строке, признак "возбужден".
Уничтожаем в выделенной строке все нули и символы Si.
Примечание. В рассмотренном примере обращение строки во вход матрицы пришлось делать однажды, при трассировке третьего эталона. Однако при развитии примера в следующей лекции такое действие придется выполнять многократно.
Переходим к выполнению пункта 7.
Меняем значение возбуждения соответствующих связей, то есть заменяем нули единицами. Присваиваем
нейрону, соответствующему выделенной строке, значение m, равное количеству единиц в строке,
и признак "возбужден". Исключаем из рассмотрения нейроны (вычеркиванием строк и столбцов), "передавшие"
свое возбуждение найденному нейрону.
Примечание. Значения весов связей одного нейрона могут корректироваться лишь однажды. В других ситуациях, при обучении другим эталонам, нейрон может только переиспользоваться, если в этом обучении участвуют все те нейроны, возбуждение которых он использует с весом, равным единице. При этом достаточно учитывать лишь число единиц в строке. В процессе такого обучения эталоны не мешают друг другу!
Внесенные изменения весов учитываем в матрице S. Переходим к выполнению пункта 7.
По каждому выделенному столбцу "спускаемся" вниз и находим первый из непустых элементов,
соответствующий S.
Примечание. Как мы видели в примере, а, по-видимому, это верно всегда, такая m уже излишне, так как это может быть последним актом выполнения данного алгоритма.
Переходим к выполнению шага 7.
Описание алгоритма закончено.
Построенный алгоритм трассировки, несомненно, эвристический, то есть дающий приблизительное, удовлетворительное решение. Точный алгоритм трассировки, минимизирующий число использованных нейронов и дополнительных связей, требует совместного анализа всех эталонов и решений, выделения и создания термов, участвующих в получении всех решений. Но само понятие точности алгоритма трассировки проблематично ввиду неопределенности критерия.
Так, в нашем случае удачно сложился терм в результате связи [C1, C2, C3, C4,C5 -> 6 ].
Он использовался при получении трех решений по эталонным ситуациям – R1, R4, R5. По-видимому,
целесообразны термы в результате объединения С1, С2, С3, а также С4
и С5, В1 и В2 и др.
Мы предлагаем читателю самому произвести трассировку сети, представленной на рис. 2.14, по предложенному алгоритму. Избежит ли он введения дополнительных связей? Мы не знаем. Но, во-первых, мы строим простой, нетрудоемкий алгоритм; во-вторых - мы же раньше говорили о нецелесообразности экономии! При такой скудости наших знаний на что нам тратить сто миллиардов нейронов с десятью тысячами дендритов каждый?!
Зафиксируем передаточную функцию, например
$$\begin{array}{l} V:= \sum_j \omega_j V_j \\ V_i := if\: V > h\: then \: V else \: 0\end{array}$$Будем задавать конкретные эталоны и наблюдать величину возбуждения соответствующего нейрона выходного слоя.
Рассмотренный выше пример нехарактерен. В нем каждый эталон приводил, при данной передаточной функции, к одинаковой величине возбуждения нейронов выходного слоя. Но, например, при распознавании знаков алфавита величины возбуждения нейронов выходного слоя, в ответ на предъявление различных эталонов, могут быть различными. Так, в первом примере лекции 2 для записи буквы О потребовалось возбуждение шести нейронов-рецепторов, а для записи буквы А – восьми рецепторов. Очевидно, эталон латинской I "засветит" на входном слое (на клетчатке) меньшее число нейронов, чем, скажем, буква Q, но значительно большее число, чем необходимо для записи запятой. Значит, при рассматриваемых простейших видах передаточной функции величины возбуждения на выходе будут существенно различаться.
Тогда закрадывается подозрение: а не приведет ли некоторое незначительное искажение ситуации А, логично
требующее все же решения RA, в сторону ситуации В, то есть принятия решения RB?
Разная по возможному максимуму величина возбуждения нейронов выходного слоя утверждает неравноправие, приоритет ситуаций. И возбуждение нейронов выходного слоя следует как-то уровнять по эталонным ситуациям, привести к одному диапазону изменения или к достаточно близким величинам.
Введем эту величину U, например, как максимальное значение возбуждения некоторого нейрона
выходного слоя или понравившуюся нам оценку, не обязательно превышающую такой максимум. Введем для каждого
нейрона выходного слоя коэффициент приведения
Однако значение Vj находим не по {A1, B1, C1} образует реальный эталон в составе {A1, B1, C1, C2, C3, C4, C5}. По нему (другие ситуации аналогичны) находится
величина возбуждения VВых1 нейрона Вых1. Значит,
Впредь, в режиме распознавания, каждое значение возбуждения нейрона выходного слоя будем умножать на его коэффициент приведения. Таким образом, мы поставим все ситуации на входе в равное положение.
Однако в лекциях 9–11 будет показано, что в общем случае проблема приведения значительно более сложна. Она требует корректировки весов связей, в частности, в зависимости от того, какая логическая операция явилась прообразом данного нейрона выходного слоя.
" - Аннушка $$\dots$$ Аннушка?.. - забормотал поэт, тревожно озираясь, - позвольте, позвольте $$\dots$$
К слову "Аннушка" привязались слова "подсолнечное масло", а затем почему-то "Понтий Пилат". Пилата поэт отринул и стал вязать цепочку, начиная со слова "Аннушка". И цепочка эта связалась очень быстро и тотчас привела к сумасшедшему профессору".
Объединим множество эталонов, требующих возбуждения одного нейрона выходного слоя, понятием R1. Тогда для , которая объединяет все посылки, ведущие к одному выводу, A1B1C1C2C3C4C5->R1.
Выберем нейросеть, отражающую, как нам кажется, все особенности, которые необходимо учесть при построении алгоритма трассировки, и, как мы уже начали, возьмем тот же пример, который выглядит теперь следующим образом:
$$\begin{array}{l} A1\ B1\ C1\ C2\ C3\ C4\ C5 \to R1\\ A1\ B2\ B3\ C1\ C2\ C3 \to R2\\ A1\ B2\ B3\ C4\ C5 \to R3\\ A2\ B3\ C1\ C2\ C3\ C4\ C5 \to R4\\ A2\ B1\ B2\ C1\ C2\ C3\ C4\ C5 \to R5\end{array}$$Мы хотим, задавая
При этом мы строим эвристический алгоритм, который крайне экономно расходует ресурсы сети - ее нейроны и связи, но и так же экономно вводит изменения, развивает сеть, если связей оказывается недостаточно.
Ибо мы видели, с каким трудом удается приспособить "готовую" нейросеть под конкретную задачу. Мы постоянно склонялись к вопросу: "А не лучше ли сразу строить сеть "под задачу", а не наоборот?" Нам кажется, мы нашли диалектический компромисс: беря что-то близкое, подходящее, мы минимально переделываем, словно костюм с жмущим гульфиком, купленный в универсальном магазине. Кроме того, нам очень важно сделать алгоритм доступным широким массам студенческой молодежи, овладевшей основами таинства параллельного программирования!
(рис 4.1) Нейросеть, подлежащая обучению
(рис 4.2) Матрица следования с транзитивными связямиПусть выбранная нейросеть представлена на рис. 4.1, где первоначально
заданные связи обозначены тонкими стрелками. Строим соответствующую S и в ней
-
В данном случае из нейрона В1 не исходит ни одной Вых5. Это следует из того, что в строке, соответствующей нейрону Вых5,
нет даже В1. То же касается нейрона В3.
Введем В1 -> Вых5 и В3 -> Вых5, что отмечено
на рис. 4.1 жирными стрелками, а на рис.
4.2 – нулевыми весами введенных связей.
Сформируем {B1,
A1, C1, C2, C3, C4, C5} -> Вых1 и отобразим его матрицей S1[B1,A1,C1,C2,C3,C4,C5
-> Вых1] на рис. 4.3.
(рис 4.3) Матрица следования при обучении первому эталонуПытаясь сымитировать прокладываемые пути возбуждений, снабдим все нейроны входного слоя, отраженные в этой матрице, признаком "возбужден".
Найдем входы матрицы S1 (пустые строки), обладающие признаком "возбужден".
Выделим в одну совокупность соответствующие им столбцы, в данном случае столбцы 1-7, и найдем в ней строку, содержащую
максимальное число "нулей", - строку, соответствующую нейрону 6. Заменяем в этой строке (в выделенной совокупности
столбцов) "нули" "единицами", т.е. максимально увеличиваем соответствующие веса. Присваиваем нейрону 6 признак
"возбужден", а также значение m6 = 5, характеризующее то количество нейронов, "возбуждение"
которых мы "собрали" на входе этого нейрона. Впредь мы можем только повторно использовать этот нейрон, но менять веса связей на
его входе мы не должны. Изменение весов отображаем в матрице S.
Исключаем из матрицы S1 строки и столбцы, соответствующие нейронам С1,
С2, С3, С4, С5. Новый вид матрицы S1 представлен на рис.
4.4.
(рис 4.4) Шаг преобразования матрицы следованияВновь выделяем столбцы, соответствующие "возбужденным" входам матрицы. Это столбцы, соответствующие
нейронам В1, А1, 6. Находим строку в выделенной совокупности столбцов, имеющую максимальное число "нулей".
Такая строка соответствует нейрону 11. Заменяем в этой строке (в выделенной совокупности столбцов) "нули" "единицами",
т.е. максимально увеличиваем веса. Присваиваем нейрону 11 признак "возбужден" и значение m11 = 3. Отражаем
изменение весов в матрице S.
Исключаем из матрицы S1 строки и столбцы, соответствующие нейронам В1,
А1, 6. Матрица принимает вид, изображенный на рис. 4.5.
(рис 4.5) Шаг преобразования матрицы следованияИсключаем из матрицы все входы, которые соответствуют нейронам 1, 2, 3, 4, 5, не обладающим
признаком "возбужден". Ведь строящийся нами 9 и 10.
Последовательное исключение сверху вниз динамически учитывает появление таких нейронов и гарантирует
полное исключение за один проход. Матрица S1 примет вид на рис.
4.6.
(рис 4.6) Шаг преобразования матрицы следованияТеперь в первом столбце имеется единственная строка с "нулем" - соответствующая нейрону Вых1. Меняем "нуль" на "единицу" - получаем окончательный возможный
S.
Мы не будем приводить новый вид S, а на изображении самой сети (рис. 4.7) выделим темным построенную трассу (она же - опорный путь, а также
Реакции на эталон одной комбинации мы сеть научили.
Составим R2, - {A1, B2, B3, C1, C2, C3}. Свяжем это решение с нейроном Вых2.
По сети на рис. 4.7 или по матрице на рис.
4.2 (с учетом частичного обучения!) построим (рис. 4.8) матрицу S2[B2, B3, A1, C1, C2,
C3 -> Вых2].
Нейрон 6 ранее "объединил" возбуждение пяти нейронов: С1, С2, С3, С4, С5,
т.е. в матрице S в соответствующей строке содержится пять единиц и m6
= 5. Однако в составленной матрице S2 в строке, соответствующей этому
нейрону, присутствуют лишь три единицы. Значит, этот нейрон не может быть использован для трассировки
необходимого С1С2С3С4С5 нам здесь не
нужна.
(рис 4.7) Нейросеть, обученная первому эталону
(рис 4.8) Матрица следования для обучения второму эталонуТо же следует сказать и о нейроне 11.
Исключим из данной матрицы строки и столбцы, соответствующие нейронам 6 и 11.
Матрица примет вид, показанный на рис. 4.9.
(рис 4.9) Шаг преобразования матрицы следованияОбъединяем столбцы множества входов матрицы, обладающих признаком "возбужден". На данном
шаге - это первые шесть столбцов матрицы. Находим в них первую строку, содержащую максимальное число нулей.
Это строка, соответствующая нейрону 4. Меняем в ней все нули на единицы, полагаем m4
= 4. Присваиваем нейрону 4 признак "возбужден". Отражаем внесенные изменения весов в
матрице S.
Исключаем из матрицы S2 строки и столбцы, соответствующие нейронам В2, А1, С1, С2, "передавшим" свое возбуждение
нейрону 4.
Вновь объединяем столбцы множества входов, обладающих признаком "возбужден". Это столбцы,
соответствующие нейронам В3, С3, 4. В совокупности этих столбцов выбираем первую из строк,
содержащую максимальное число нулей. В данном случае это строка, соответствующая нейрону 1.
Меняем нуль на единицу, полагаем m1 = 1, нейрону 1 присваиваем признак
"возбужден".
Исключаем из матрицы строку и столбец, соответствующие нейрону В3, "передавшему"
возбуждение нейрону 1. Исключаем из матрицы строки и столбцы, соответствующие образовавшимся входам
- "не возбужденным" нейронам 2 и 3.
Выделяем столбцы, которые соответствуют нейронам - входам, обладающим признаком "возбужден",
и в их совокупности находим строку, обладающую наибольшим числом нулей. Такая строка соответствует нейрону 10. Меняем нули на единицы, присваиваем нейрону признак "возбужден", полагаем m10
= 2.
Исключаем из матрицы S2 строки и столбцы, которые соответствуют нейронам 1 и 4, передавшим возбуждение нейрону 10.
Нейрон 9, не обладающий признаком "возбужден", образует вход матрицы. Исключаем
соответствующие ему строку и столбец.
Выделяем столбцы, соответствующие нейронам С3 и 10, и в них находим строку
с максимальным числом нулей. Первая из таких строк соответствует нейрону 5. Заменяем в ней
единственный нуль единицей, присваиваем нейрону признак "возбужден", полагаем m5
= 1. Отражаем изменение веса в матрице S.
Исключаем из матрицы S2 строку и столбец, которые соответствуют нейрону С3,
передавшему возбуждение нейрону 5.
Исключаем строку и столбец, соответствующие нейрону 7, как порождающему вход матрицы
и не имеющему признака "возбужден".
В совокупности выделенных столбцов, соответствующих нейронам 5 и 10, строка,
соответствующая нейрону 12, имеет единственный нуль. Меняем его на единицу, присваиваем нейрону 12 признак "возбужден", полагаем m12 = 1. Отражаем внесенное изменение
веса в матрице S. Исключаем из матрицы S1 строку и столбец, соответствующие нейрону 5.
И, наконец, на последнем шаге, заменяя нули в строке, соответствующей нейрону Вых2,
единицами, мы получим окончательный искомый
(рис 4.10) Нейросеть после обучения двум эталонамОбучим сеть третьей ситуации, требующей решения R3. Закрепим за этим решением нейрон Вых3. Матрица S3[B2, B3, A1, C4, C5 -> Вых3] представлена на
рис. 4.11.
(рис 4.11) Матрица следования для обучения третьему эталонуИсключаем из матрицы S3 представительство тех ранее использованных ("возбужденных")
нейронов, для которых значение m (указано в дополнительном столбце матрицы) превышает количество единиц в соответствующей
строке. Это значит, что эти нейроны "собрали" уже возбуждение нейронов, которые в данном S3,
не используются. Это нейроны 4, 5, 6, 11. Переиспользование их невозможно.
Повторяем попытки исключения из матрицы S3 представительства тех нейронов,
для которых значение m стало превышать количество единиц в соответствующей строке. И так далее - до исчерпания
этой возможности.
В данном случае нам придется исключить из рассмотрения (вследствие исключения нейронов 4
и 5 ) нейроны 10 и 12. Матрица S3 примет окончательный
вид на рис. 4.12.
(рис 4.12) Шаг преобразования матрицы следованияПрисваиваем всем нейронам, образующим входы матрицы, признак "возбужден".
Выделяем и объединяем столбцы, соответствующие входам матрицы S3.
Разовьем предшествующие аналогичные действия следующим образом.
В выделенных столбцах находим строку, содержащую хотя бы одну единицу. Она (строка) представляет тот нейрон, который "собрал" (при анализе предыдущих эталонов) возбуждение одного или более нейронов, образующих входы. Эти нейроны, "передавшие" свое возбуждение, могут быть исключены из рассмотрения. Среди таких строк выбираем строку с максимальным числом единиц.
Так, нейрон 1 возбужден единственным нейроном, принадлежащим текущему множеству входов матрицы, -
нейроном В3. Впредь он представляет этот нейрон, который может быть исключен из рассмотрения.
Матрица S3 принимает вид на рис. 4.13.
(рис 4.13) Шаг преобразования матрицы следованияПодтверждаем нейрону 1 признак "возбужден" и превращаем его во вход матрицы S3,
уничтожив веса в его строке.
Вновь находим множество входов матрицы и выделяем соответствующие им столбцы. Пытаемся найти строку,
содержащую единицы в этих и только этих столбцах, но таких больше нет. Тогда находим строку, содержащую
максимальное число нулей. Первая такая строка соответствует нейрону 2. "Объединяем"
на нем возбуждение нейронов В2 и А1, заменяя нули единицами. Полагаем m2
= 2, исключаем нейроны В2 и А1 из рассмотрения, присваиваем нейрону 2 признак
"возбужден". Отражаем сделанные изменения весов в матрице S.
Исключаем входы, не обладающие признаком "возбужден", - нейроны 3 и 5.
Выделяем столбцы, соответствующие входам. В их совокупности не находим строк, содержащих единицы.
Тогда находим строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 7.
Меняем нули (в выделенной совокупности столбцов!) на единицы, полагаем m7 = 2, присваиваем
нейрону 7 признак "возбужден", отражаем изменение весов в матрице S. Исключаем
нейроны С4 и С5 из рассмотрения. Сразу замечаем, что сформируется "невозбужденный"
вход, соответствующий нейрону 8. Исключаем из рассмотрения и этот нейрон (рис.
4.14).
(рис 4.14) Шаг преобразования матрицы следованияВыделяем столбцы, соответствующие "возбужденным" входам, и не находим строк, содержащих
единицы. Тогда находим первую строку, содержащую максимальное число нулей. Это строка, соответствующая
нейрону 13. Меняем нуль на единицу, нейрону 13 присваиваем признак "возбужден",
полагаем m13 = 1. Исключаем нейрон 7 из рассмотрения.
Выделяем столбцы, соответствующие множеству "возбужденных" входов. В них не находим строку
с единицами, но единственная строка с максимальным числом нулей соответствует нейрону Вых3.
Меняем нуль на единицу. Однако статус этого нейрона особый, и значение m, как и признак "возбужден",
ему не присваиваем.
Исключаем нейрон 13 из рассмотрения.
Выделяем множество столбцов, соответствующих "возбужденным" входам. Это столбцы, соответствующие
нейронам 1 и 2. Пытаемся в этих столбцах найти строку с единицами, затем с максимальным
числом нулей, - но таковых нет! Значит, необходимо введение дополнительных связей. Тогда в каждом столбце при просмотре
сверху вниз находим первую 1 -> Вых3 и 2 -> Вых3.
Построение трассы решения R3 закончено. После этого этапа обучения сеть имеет вид как
на рис. 4.15.
Приступим к обучению следующему A2B3C1C2C3C4C5 -> R4. S4[B3,
A2, C1, C2, C3, C4, C5 -> Вых4] представлена на рис. 4.16.
Исключим из рассмотрения те нейроны, для которых количество единиц в строках меньше значения m. Такими
нейронами являются 4 и 11. Матрица S4 имеет вид как на рис. 4.17.
(рис 4.15) Нейросеть после обучения третьему эталону
(рис 4.16) Матрица следования для обучения четвертому эталону
(рис 4.17) Шаг преобразования матрицы следованияПрисваиваем всем нейронам-входам значение "возбужден". Выделяем столбцы, соответствующие
входам - первым строкам "возбужденных" нейронов. Это первые семь столбцов. Среди строк этой
совокупности столбцов находим строку с максимальным числом единиц в этих столбцах, при отсутствии единиц
в других столбцах. Это строка, соответствующая нейрону 6. Теперь нейрон 6 будет
представлять нейроны С1, С2, С3, С4, С5, "передавшие" ему свое возбуждение. Присваиваем
ему признак "возбужден", исключаем из рассмотрения перечисленные нейроны, матрица S4
принимает вид как на рис. 4.18.
(рис 4.18) Шаг преобразования матрицы следованияДля "не возбужденных" нейронов исключаем из матрицы S4 строки (и
столбцы), число единиц в которых стало меньше соответствующего значения m. Они соответствуют
нейронам 5 и 7. Повторяем этот шаг до полного исключения таких нейронов, - исключаются
нейроны 12 и 13. Матрица имеет вид как на рис. 4.19.
(рис 4.19) Шаг преобразования матрицы следованияИсключаем из рассмотрения множество "невозбужденных" входов. К таким относится нейрон 8.
Выделяем множество столбцов, соответствующих входам матрицы. В их совокупности находим первую строку, обладающую максимальным
числом нулей (единиц нет во всей матрице!). Такая строка соответствует нейрону 3. Нули в ней соответствуют нейронам В3 и А2. Исключаем эти нейроны из рассмотрения, полагаем m3 = 2, присваиваем нейрону 3 признак "возбужден".
Вновь выделяем множество столбцов, соответствующих входам матрицы, и так как в их совокупности нет
строк, содержащих единицы, находим строку с максимальным количеством нулей. Эта строка соответствует нейрону 14. Заменяем в ней нуль на единицу, полагаем m14 = 1, присваиваем нейрону 14 признак "возбужден". Исключаем нейрон 6 из матрицы. Матрица принимает вид
как на рис. 4.20.
(рис 4.20) Шаг преобразования матрицы следованияВыделяем множество столбцов, соответствующих входам матрицы, и так как в их совокупности нет строк,
содержащих единицы, находим строку с максимальным количеством нулей. Эта строка соответствует нейрону выходного
слоя Вых4. Меняем в ней нуль на единицу. Так как это - нейрон выходного слоя, не присваиваем ему признак
"возбужден" и значение m. Исключаем нейрон 14 из рассмотрения. Матрица имеет вид как на рис. 4.21.
(рис 4.21) Шаг преобразования матрицы следованияВ этой матрице множество "возбужденных" входов составляет единственный нейрон 3.
Однако в его столбце нет ни единичных, ни нулевых элементов. Тогда, как и прежде, вводим в сеть дополнительную
связь, найдя в столбце, соответствующем нейрону 3, первую сверху 3 -> Вых4.
Все изменения отражаем в матрице S.
Построение трассы решения R4 закончено. Не приводя промежуточного вида матрицы S,
дадим на рис. 4.22 вид сети, полученной после данного этапа трассировки.
И, наконец, приступим к трассировке последнего R5, A2B1B2C1C2C3C4C5
-> R5. За решением R5 закреплен нейрон выходного слоя Вых5.
На основе текущего вида матрицы S построим матрицу S5[B1, B2, A2, C1,
C2, C3, C4, C5 -> Вых5], исключая из S "ненужные" строки и столбцы и
сохраняя 4, для которого количество единиц в строке меньше значения m4
= 4. Получившаяся матрица S5 представлена на рис. 4.23.
(рис 4.22) Нейросеть после обучения четырем эталонам
(рис 4.23) Матрица следования для обучения пятому эталонуПрисваиваем всем входам признак "возбужден". Выделяем столбцы, соответствующие "возбужденным"
входам. В совокупности этих столбцов находим строку, содержащую максимальное число единиц в этих и только этих столбцах,
если таковые имеются. В данном случае это строка, соответствующая нейрону 6. Присваиваем нейрону 6
признак "возбужден" и исключаем из рассмотрения нейроны С1, ..., С5.
Исключаем из рассмотрения нейроны 5 и 7, так как в соответствующих им строках
отсутствуют единицы при отличных от нуля значениях m. Однако видно, что после их исключения придется
исключить по той же причине нейроны 12 и 13. Получившаяся матрица представлена на рис. 4.24.
(рис 4.24) Шаг преобразования матрицы следованияИсключаем из рассмотрения "невозбужденный" вход, соответствующий нейрону 8.
Выделяем столбцы, соответствующие "возбужденным" входам, и в их совокупности находим строку,
содержащую наибольшее число единиц при отсутствии единиц в других столбцах. Такая строка соответствует
нейрону 14. Исключаем из рассмотрения нейрон 6 как передавший свое возбуждение
нейрону 14, присваиваем нейрону 14 признак "возбужден". Матрица S5
принимает вид как на рис. 4.25.
(рис 4.25) Шаг преобразования матрицы следованияВыделяем столбцы входов, соответствующие "возбужденным" нейронам, и в их совокупности находим
строку, содержащую максимальное число нулей (строк с единицами больше нет). Такая строка соответствует нейрону
выходного слоя Вых5. Меняем нули на единицы. Исключаем нейроны В1 и 14 из
рассмотрения. Отражаем введенные изменения в матрице S. Новый вид матрицы S5
приведен на рис. 4.26.
(рис 4.26) Шаг преобразования матрицы следованияВыделяем множество столбцов, соответствующих входам матрицы. В этих столбцах не находим ни строк,
содержащих единицы, ни строк, содержащих нули. Тогда в каждом столбце заносим единицы на места В2 -> Вых5
и А2 -> Вых5, а веса этих связей полагаем равными единице.
Трассировка (обучение сети по
(рис 4.27) Обученная нейросеть В результате решения примера сформировались и даже стали привычными действия, на основе которых мы можем сформулировать
Алгоритм трассировки (обучения по
S Выхi за обобщенными ситуациями. Для каждой обобщенной ситуации
выполняем пункты 4-15.i ( i = 1,
2, ..., m ) строим Si[Vi1, Vi2,
..., Vir -> Выхi], где Vi1, Vi2, ..., Vir
- нейроны входного слоя, возбуждающиеся (до максимальной величины) при подаче Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие
столбцы), которые содержат количество единиц меньше значения m, указанного при строке.Примечание. Так как в процессе такого вычеркивания могут образовываться новые подобные строки, а
матрица S - треугольная, то это вычеркивание должно быть произведено последовательно, сверху
вниз по одной строке. Тогда все вычеркивание выполнится за один проход. В противном случае, если сразу наметить
для вычеркивания несколько строк (и столбцов), не избежать повторного, возможно, многократного анализа появления
новых строк для вычеркивания.
Si.Si более одной строки? Если содержит, выполняется
следующий пункт, в противном случае выполняется пункт 3.Si строки и столбцы, соответствующие нейронам–входам,
не обладающим признаком "возбужден".Si, обладающих признаком "возбужден".Выполняем действие, отраженное в пункте 5 (во внешнем цикле): исключаем из текущего вида матрицы Si строки (и столбцы), которые содержат количество единичных элементов меньшее,
чем указанное при строке значение m.
Примечание. Такое действие необходимо после каждого вычеркивания строк и столбцов.
m.) Соответствующий ей нейрон может быть переиспользован. Если такой строки найти не удается, выполняем
пункт 13.Исключаем из рассмотрения нейроны (вычеркиваем строки и столбцы) которым соответствуют единицы
в найденной строке. Присваиваем нейрону, соответствующему выделенной строке, признак "возбужден".
Уничтожаем в выделенной строке все нули и символы Si.
Примечание. В рассмотренном примере обращение строки во вход матрицы пришлось делать однажды, при трассировке третьего эталона. Однако при развитии примера в следующей лекции такое действие придется выполнять многократно.
Переходим к выполнению пункта 7.
Меняем значение возбуждения соответствующих связей, то есть заменяем нули единицами. Присваиваем
нейрону, соответствующему выделенной строке, значение m, равное количеству единиц в строке,
и признак "возбужден". Исключаем из рассмотрения нейроны (вычеркиванием строк и столбцов), "передавшие"
свое возбуждение найденному нейрону.
Примечание. Значения весов связей одного нейрона могут корректироваться лишь однажды. В других ситуациях, при обучении другим эталонам, нейрон может только переиспользоваться, если в этом обучении участвуют все те нейроны, возбуждение которых он использует с весом, равным единице. При этом достаточно учитывать лишь число единиц в строке. В процессе такого обучения эталоны не мешают друг другу!
Внесенные изменения весов учитываем в матрице S. Переходим к выполнению пункта 7.
По каждому выделенному столбцу "спускаемся" вниз и находим первый из непустых элементов,
соответствующий S.
Примечание. Как мы видели в примере, а, по-видимому, это верно всегда, такая m уже излишне, так как это может быть последним актом выполнения данного алгоритма.
Переходим к выполнению шага 7.
Описание алгоритма закончено.
Построенный алгоритм трассировки, несомненно, эвристический, то есть дающий приблизительное, удовлетворительное решение. Точный алгоритм трассировки, минимизирующий число использованных нейронов и дополнительных связей, требует совместного анализа всех эталонов и решений, выделения и создания термов, участвующих в получении всех решений. Но само понятие точности алгоритма трассировки проблематично ввиду неопределенности критерия.
Так, в нашем случае удачно сложился терм в результате связи [C1, C2, C3, C4,C5 -> 6 ].
Он использовался при получении трех решений по эталонным ситуациям – R1, R4, R5. По-видимому,
целесообразны термы в результате объединения С1, С2, С3, а также С4
и С5, В1 и В2 и др.
Мы предлагаем читателю самому произвести трассировку сети, представленной на рис. 2.14, по предложенному алгоритму. Избежит ли он введения дополнительных связей? Мы не знаем. Но, во-первых, мы строим простой, нетрудоемкий алгоритм; во-вторых - мы же раньше говорили о нецелесообразности экономии! При такой скудости наших знаний на что нам тратить сто миллиардов нейронов с десятью тысячами дендритов каждый?!
Зафиксируем передаточную функцию, например
$$\begin{array}{l} V:= \sum_j \omega_j V_j \\ V_i := if\: V > h\: then \: V else \: 0\end{array}$$Будем задавать конкретные эталоны и наблюдать величину возбуждения соответствующего нейрона выходного слоя.
Рассмотренный выше пример нехарактерен. В нем каждый эталон приводил, при данной передаточной функции, к одинаковой величине возбуждения нейронов выходного слоя. Но, например, при распознавании знаков алфавита величины возбуждения нейронов выходного слоя, в ответ на предъявление различных эталонов, могут быть различными. Так, в первом примере лекции 2 для записи буквы О потребовалось возбуждение шести нейронов-рецепторов, а для записи буквы А – восьми рецепторов. Очевидно, эталон латинской I "засветит" на входном слое (на клетчатке) меньшее число нейронов, чем, скажем, буква Q, но значительно большее число, чем необходимо для записи запятой. Значит, при рассматриваемых простейших видах передаточной функции величины возбуждения на выходе будут существенно различаться.
Тогда закрадывается подозрение: а не приведет ли некоторое незначительное искажение ситуации А, логично
требующее все же решения RA, в сторону ситуации В, то есть принятия решения RB?
Разная по возможному максимуму величина возбуждения нейронов выходного слоя утверждает неравноправие, приоритет ситуаций. И возбуждение нейронов выходного слоя следует как-то уровнять по эталонным ситуациям, привести к одному диапазону изменения или к достаточно близким величинам.
Введем эту величину U, например, как максимальное значение возбуждения некоторого нейрона
выходного слоя или понравившуюся нам оценку, не обязательно превышающую такой максимум. Введем для каждого
нейрона выходного слоя коэффициент приведения
Однако значение Vj находим не по {A1, B1, C1} образует реальный эталон в составе {A1, B1, C1, C2, C3, C4, C5}. По нему (другие ситуации аналогичны) находится
величина возбуждения VВых1 нейрона Вых1. Значит,
Впредь, в режиме распознавания, каждое значение возбуждения нейрона выходного слоя будем умножать на его коэффициент приведения. Таким образом, мы поставим все ситуации на входе в равное положение.
Однако в лекциях 9–11 будет показано, что в общем случае проблема приведения значительно более сложна. Она требует корректировки весов связей, в частности, в зависимости от того, какая логическая операция явилась прообразом данного нейрона выходного слоя.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.