Нейронная сеть — многослойный персептрон на задачах распознавания образов.

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

  1. 25 нейронов входного слоя — датчики затемнения пикселя в матрице 5 на 5 точек
  2. Внутренние слои с 25 нейронами в каждом слое
  3. Выходной слой с 10 нейронами, выход каждого из которых сигнализирует о своей цифре.

Обучим нейронную сеть на 10 цифрах-примерах следующего начертания:

Начальная обучающая выборка

Начальная обучающая выборка

После обучения нейросеть даёт 100% правильные ответы при подаче на неё исходных обучающих примеров.

Затем подадим на входы для опознания цифры следующего начертания

Примеры для контроля

Примеры для контроля


И построим таблицу соответствия. В строках — та цифра из примеров для контроля, что мы подавали на сход нейросети, в столбцах — выходы нейросети, в ячейках — процент уверенности нейросети в том, что поданная на вход цифра соответствует определённому выходу. Например, 10% в строке 1 столбце 7 говорит о том, что нейросеть с 10% уверенностью определила поданную на вход единичку как цифру 7. Чем выше уверенность — тем темнее ячейка. В идеале на главной диагонали таблицы должны быть одни тёмные клетки.

А что же на самом деле?

Что подавали Как опозналось(%)
0 1 2 3 4 5 6 7 8 9
0 1.36 4.91 0.33 17.11 0.11 0.01 0 5.56 0.72 25.86
1 0.01 35.81 0.83 5.22 7.84 0 0 0.12 6.28 3.38
2 13.8 0.22 0.08 0.81 0.21 0.07 0.01 0.11 33.4 95.49
3 34.45 0.08 0.76 0.01 0.16 0 0.48 0.02 97.9 46.95
4 0 54.95 0.03 2.73 53.74 0.03 0 0.08 0.12 0.57
5 5.33 0 0.19 0.21 0.17 81.63 27.99 0.22 0.04 0.91
6 1.14 0 1.1 0 1.74 0.62 83.5 0 64.75 0.15
7 12.89 0.01 3.46 10.83 0 6.92 0.64 60.64 0 0.01
8 7.61 0.06 1.47 0.01 0.76 0 0.89 0 99.16 31.14
9 0.89 0.5 0.01 1.2 3.91 0.88 0 0.02 25.79 99.34

Верно опознались только 6 из 10 цифр.

Попробуем добавить ещё один внутренний слой нейронов и запустить обучение снова.

Что подавали Как опозналось(%)
0 1 2 3 4 5 6 7 8 9
0 9.4 1.21 7.75 8.51 12.63 7.77 7.1 13.07 7.63 8.12
1 8.8 4.04 5.49 7.17 14.16 5.21 4.26 14.76 5.64 6.39
2 10.44 0.06 16.14 12.09 9.04 18.15 20.88 9.18 14.53 13.43
3 10.46 0.05 16.58 12.24 8.89 18.73 21.71 9.02 14.88 13.68
4 7.45 43.08 2.35 4.69 18.27 1.95 1.22 19.35 2.68 3.55
5 10.56 0.02 20.11 13.31 7.79 23.37 28.56 7.86 17.62 15.57
6 10.55 0.02 19.54 13.16 7.97 22.61 27.43 8.04 17.18 15.28
7 10.46 0.04 16.98 12.36 8.73 19.25 22.48 8.86 15.19 13.9
8 10.47 0.05 16.61 12.25 8.9 18.76 21.75 9.03 14.91 13.7
9 10.38 0.08 15.07 11.72 9.42 16.77 18.89 9.58 13.69 12.82

Ужас.

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

 

Дополнительные примеры для обучения

Дополнительные примеры для обучения

И снова прогоним обучение на нейросети из 1 слоя.

Что подавали Как опозналось(%)
0 1 2 3 4 5 6 7 8 9
0 12.61 0.69 0.94 0.19 0.04 0 0 0.86 0.23 1.69
1 0.53 39.95 0.05 25.26 1.24 0 0 0.37 0.06 7.54
2 6.4 0.01 2.95 0.01 0.04 0.09 0 1.73 62.27 59.84
3 13.5 0.02 1.27 0 0.15 0.01 0.38 0.01 91.67 1.26
4 0.01 64.56 0.05 0.19 67.51 0 0.03 4.22 0.02 0.05
5 0.11 0 0 0.24 0.59 68.89 0.03 0.54 0.59 87.8
6 0.23 0 1.46 0 0.2 1.1 86.33 0 19.11 0
7 0.03 0.03 1.77 0.26 0.1 0.21 0 55.62 0 0.08
8 1.64 0.01 0.68 0 0.76 0.03 0.75 0.02 98.19 5.51
9 2.7 0.02 0.02 0.21 0.04 0.49 0 0.16 13.81 94.8

Результат немного получше 8 опознанных символов из 10.  Причем четвёрка — очень неуверенно, с единицей пополам.

Только 2 путает то ли с 8 то ли  9, и тройку с 8-кой. А ведь и вправду похожи. Особенно 3 на 8.

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

Что подавали Как опозналось(%)
0 1 2 3 4 5 6 7 8 9
0 55.75 3.65 0 0.07 0.46 0.01 0 0.15 1.81 1.73
1 8.06 77.55 0 1.59 0.05 0 0 0.03 0 62.46
2 3.89 0.47 0.06 2.03 0.01 6.1 0 0 0.14 89.83
3 41.99 0.03 0.02 0 2.18 0.3 0.08 0.06 81.48 0.05
4 0.08 0.79 0.3 0.01 65.25 0 0.01 71.64 0.13 0
5 0.02 0 2.45 1 0 93.84 0.52 0.01 4.75 0.64
6 0.02 0 2.02 0.01 0.62 5.67 92.33 1.68 16.05 0
7 0 0 29.12 0.32 0.54 0 3.71 80.02 0.03 0
8 44.77 0.03 0.01 0.01 0.74 0.7 0.07 0.05 66.11 0.17
9 8.02 1.24 0.04 1.57 0.01 2.81 0 0 0.07 96.19

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

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

 

 


Добавить комментарий