Информация об изменениях

Сообщение Re[12]: Нейросеть для чайников от 21.07.2018 12:30

Изменено 21.07.2018 12:31 Khimik

Re[12]: Нейросеть для чайников
Здравствуйте, Erop, Вы писали:

E>И первая матрица 13х13 на 169 тоже одна для всех положений квадратика 13х13


Я вроде понял так.
Напомню, текущая задача – НС, которая распознаёт цифры от 0 до 9 на рисунке 16*16 из готового шаблона, но с произвольным сдвигом; например должно распознаваться это:



Делается НС из трёх слоёв. “Синапсы” от первого ко второму слою – это массив 256*16*10; последний индекс соответствует цифре, первый – исходному растру, второй – это массив окошек общим размером 4*4.
Например, в этом массиве слой X*1*1 выглядит, например, так:



Здесь внешние пиксели чёрные, поскольку окно имеет размер 13*13, то что за этими границами – просто обнуляется. Я рисую неточно. Вторая цифра 1 в X*1*1 означает левое нижнее окошко, третье – что распознаётся единица.

При перемножении исходной картинки 16*16 на эту матрицу синапсов получается матрица 16*10. Опять же, последний индекс – конкретная цифра которая распознаётся, первый – номер пикселя в растре 4*4.

Если на вход подавался рисунок с единицей, который изображён в начале поста, то эта матрица 16*10 будет большей частью заполнена нулями или близкими к нулю значениями, за исключением элемента 16*1: он будет равен 1.0, что означает что в пикселе с номером 4*4 картинки совпали и при перемножении растров получилось максимальное значение.

Здесь, правда, я уже изрядно запутался. Во-первых, я стал рисовать цветные рисунки, в то время как для начала проще было бы разобраться с бинарными чёрно-белыми. Во-вторых, если перемножать бинарные растры, то наверно должно использовать умножение XOR (ноль на ноль дают один, один на один тоже дают один). А как сделать XOR для небинарных рисунков, да ещё цветных – мне непонятно.
В третьих, чтобы при перемножении совпадающих шаблонов получилось в сумме 1.0, надо ещё их отнормировать.

Но это наверно частности. Далее идёт переход от второго к третьему слою: в каждом слое 4*4 значения просто суммируются, и получается массив из 10 чисел. Если на вход подавался рисунок двойки (в любом положении), то второй элемент массива будет равен 1.

Тем не менее, а я по-прежнему не вижу философского камня фундаментального принципа НС. Возникает такой вопрос: не является ли изложенная выше НС относительно медленной по сравнению с продвинутыми НС, которых обучали по Deep Learning и которые могут распознавать гораздо более произвольные рисунки?
Re[12]: Нейросеть для чайников
Здравствуйте, Erop, Вы писали:

E>И первая матрица 13х13 на 169 тоже одна для всех положений квадратика 13х13


Я вроде понял так.
Напомню, текущая задача – НС, которая распознаёт цифры от 0 до 9 на рисунке 16*16 из готового шаблона, но с произвольным сдвигом; например должно распознаваться это:



Делается НС из трёх слоёв. “Синапсы” от первого ко второму слою – это массив 256*16*10; последний индекс соответствует цифре, первый – исходному растру, второй – это массив окошек общим размером 4*4.
Например, в этом массиве слой X*1*1 выглядит, например, так:



Здесь внешние пиксели чёрные, поскольку окно имеет размер 13*13, то что за этими границами – просто обнуляется. Я рисую неточно. Вторая цифра 1 в X*1*1 означает левое нижнее окошко, третье – что распознаётся единица.

При перемножении исходной картинки 16*16 на эту матрицу синапсов получается матрица 16*10. Опять же, последний индекс – конкретная цифра которая распознаётся, первый – номер пикселя в растре 4*4.

Если на вход подавался рисунок с единицей, который изображён в начале поста, то эта матрица 16*10 будет большей частью заполнена нулями или близкими к нулю значениями, за исключением элемента 16*1: он будет равен 1.0, что означает что в пикселе с номером 4*4 картинки совпали и при перемножении растров получилось максимальное значение.

Здесь, правда, я уже изрядно запутался. Во-первых, я стал рисовать цветные рисунки, в то время как для начала проще было бы разобраться с бинарными чёрно-белыми. Во-вторых, если перемножать бинарные растры, то наверно должно использоваться умножение XOR (ноль на ноль дают один, один на один тоже дают один). А как сделать XOR для небинарных рисунков, да ещё цветных – мне непонятно.
В третьих, чтобы при перемножении совпадающих шаблонов получилось в сумме 1.0, надо ещё их отнормировать.

Но это наверно частности. Далее идёт переход от второго к третьему слою: в каждом слое 4*4 значения просто суммируются, и получается массив из 10 чисел. Если на вход подавался рисунок двойки (в любом положении), то второй элемент массива будет равен 1.

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