Зовсім не нейронні мережі



Нещодавно ZlodeiBaal писав про досягнення в згорткових нейронних мережах (CNN) (і, до речі, тут же успішно налаштував і навчив мережа для пошуку області автомобільного номера).
А я хочу розповісти про принципово іншу і, напевно, більш складнумодель, яку зараз розвиває Олексій Редозубов (
AlexeyR), і про те, як ми, звичайно проігнорувавши деякі важливі елементи, і її застосували для розпізнавання автомобільних реєстраційних знаків!

У статті дещо спрощено нагадаю про деякі моменти цієї концепції і покажу, як воно спрацювало у нашій задачі.


Якщо витратити трохи часу на читання останніх новин з нейробіології, то кожному, хто знайомий з обчислювальними нейромережами, стане трохи не по собі. Більш того, може з'явитися пароноидальная думка: «може, даремно взагалі з нейронів намагаються зібрати ШІ, може нейрони там не головні?» Нейрони простіше було дослідити з-за їх електричної активності. Наприклад, гліальних клітин значно більше, ніж нейронів, а з їх функцією не все зрозуміло.
І не залишає загальне враження, що ті, хто займається Deep learning, користуються уявленнями вчених 40х-60х років, не поспішаючи особливо розбиратися в величезному масиві досліджень нейробіологів.

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

Особисто для мене важлива перевірка адекватності ідеї — її конструктивність. Можна озброїтися цією ідеєю і спорудити що-небудь реально працює?

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

Для початку наведу мої трактування основних позицій ідей Редозубова, які мені здаються важливими:

Некласичний нейрон і хвильові ідентифікатори

Вчені давно помітили, що на тілі нейрона поза синаптичних щілин є ще й метаботропные детектори, які не очевидно що роблять. Ось на них можна покласти оригінальний механізм запам'ятовування певної навколишнього цей детектор активності. При цьому відбувається одиночний спайк нейрона (його називають спонтанним), на якій розташовується цей детектор. Такий не хитрий механізм дозволяє запам'ятати і поширити унікальним візерунком інформаційну хвилю. У цій серії статей можна знайти оригінал цієї моделі. Взагалі, це дуже схоже на поширення чуток в соціальній групі. Не обов'язково всім жити поруч і збиратися разом, щоб інформація поширювалася. Важливо лише щоб зв'язки з сусідами були досить щільні.



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

Друге, наступне з першого
Різні зони мозку з'єднані не такою вже й великою кількістю аксонів. Звісно, їх там тьма, але точно не від кожного нейрона до кожного нейрона на наступному рівні, як прийнято в обчислювальних нейронних мережах зараз. А якщо ми навчилися поширювати унікальні хвилі-ідентифікатори, то от і будемо між зонами спілкуватися за допомогою таких дискретних ідентифікаторів. Вся інформація, що обробляється мозком, буде описуватися дискретними хвилями-ідентифікаторами (попросту — цифрами), наприклад:
— позиція (скажімо, позиція проекції об'єкта на сітківці);
— час (суб'єктивне відчуття часу людиною);
— масштаб;
— частоту звуку;
— колір
і т. д.

І будемо користуватися пакетним описом, тобто просто списком таких дискретних ідентифікаторів для опису того, що дізналася зона.

Третє

Ось тут все з ніг на голову щодо того, до чого всі звикли з Хьюбела і Визела
Невеликий екскурс в історію:

В 1959р. Хьюбел і Візел поставили цікавий експеримент. Вони подивилися, як у зоровій корі першого рівня нейрони реагують на різні стимули. І виявили деяку організацію в ній. Одні нейрони реагували на один нахил зорового стимулу, інші на інший. При цьому всередині одного мініколонкі (вертикальна структура з 100-300 нейронів у неокортексі) всі нейрони реагували на однакові стимули. Потім з'явилися сотні, якщо не тисячі, досліджень вже з сучасним обладнанням, де селективність до чого тільки не виявляли в різних зонах. І до нахилу, і до просторовій частоті, і до позиції, і швидкості руху, і до частоти звуку. Який релевантний для заданого ділянки мозку параметр не ставили, обов'язково знаходили певну селективність.


Візуальний кортекс зона V1


В залежності від частоти звуку А1

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

Але буде куди ефективніше, каже Олексій Редозубов, якщо ця миниколонка запам'ятає на собі зовсім не конкретну фічу, а контекст. Контекст, наприклад, — кут повороту. Другий контекст — позицію, третій — масштаб. А фічі будуть взагалі спільні для деякій околиці на корі.

Таким чином, потрібні самоорганізуються карти не для вхідних картинки (в зорової корі), а самоорганізуються карти різних контекстів, релевантних зорової корі. При цьому близькість цих контекстів можна оцінити або за рахунок їх тимчасової близькості, або за рахунок близькості кодів ідентифікаторів.

І навіщо потрібна ця складність з контекстом? А потім, що будь-яка інформація, з якою ми маємо справу, виглядає абсолютно по-різному в залежності від контексту. У відсутності якої-небудь апріорної інформації про поточному контексті, в якому знаходиться спостережувана сутність, необхідно розглянути всі можливі контексти. Чому в рамках запропонованої моделі і будуть займатися мініколонкі неокортексу.

Такий підхід — це лише трактування тих же сотень або тисяч експериментів про самоорганізацію в корі мозку. Не можна відрізнити в ході експерименту два результату:
1) я бачу нахилену на 45 градусів кордон відносно вертикалі.
2) я бачу вертикальну межу, нахилену на 45 градусів.

Здається, що це одне і теж. Але в разі другої трактування можна знайти точно таку ж активність в тій же самій миниколонке, якщо ми покажемо, скажімо, обличчя людини: «я бачу вертикальне особа, нахилене на 45 градусів». І зона не буде обмежена сприйняттям лише одного типу об'єктів.

А з іншого боку, контекст і пізнаване явище поміняються місцями в іншій зоні. Так, наприклад, існують два шляхи, за яким аналізується візуальна інформація: dorsal і vental. Для «dorsal stream» контекст — розташування у просторі, напрямок руху та ін. А для «vental stream» контекстом можуть бути характеристики спостережуваного об'єкта, навіть тип об'єкта. Якщо один із візуальних потоків обробки буде пошкоджений, то людина не стане сліпим. Виникнуть проблеми з сприйняттям відразу декількох об'єктів одночасно, але з часом здатність до сприймання декількох об'єктів і взаємодії з ними частково повертається. Тобто непоганий опис об'єкта виходить і в «dorsal stream», і в «vental stream». А краще зовсім не хворіти і, з одного боку, розглядати різні гіпотези щодо стану, орієнтації, а з іншого, гіпотези виду «я бачу людину», «я бачу голову», «я бачу стілець». Десятки мільйонів тих і інших гіпотез одночасно аналізуються у зоровому тракті.

А тепер, власне, про алгоритм розпізнавання автомобільних номерів, який заснований на ідеях
AlexeyR.

Розпізнавання автомобільних номерів

Почну з прикладів розпізнавання автомобільних номерів.
image

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

Архітектура

Щоб розпізнати автомобільні номери, ми використовували 2 зони:

1) Перша зона дізнавалася все, що схоже на літери і цифри в автомобільному номері.
Вхідна інформація — зображення.
При цьому було 5 параметрів, за якими була розбита вся зона:
— становище по X
— положеие по Y
— орієнтація
— масштаб по осі X
— масштаб по Y

У підсумку вийшло близько 700 000 гіпотез. Що навіть для відеокарти на ноутбуці не стало великою проблемою.

вихід зони — опис виду:
знак такий-то, положення, орієнтація, масштаб.

візуалізація виходу:


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

2) Друга зона

вхідна інформація — вихід першої зони.

Займалася перспективними перетвореннями. Гіпотез було близько 6 млн. І єдиний стійкий паттерн, який узнавался тут — автомобільний номер у форматі 6 знаків більшого масштабу зліва і 3 знаки меншого праворуч.

Перевірялися всі можливі перспективні перетворення. В одному з варіантів знаки із зони 1 «складалися» найкращим чином у відомий нам патерн автомобільного номера. Цей максимум і перемагав.



Але ми знаємо, в яких контекстах повинні бути знаки при заданому перспективного перетворення, тому можемо спроектувати їх назад на першу зону і знайти вже коректні локальні максимуми в просторі першої зони.



Час на виконання цього алгоритму склало близько 15с на не самої швидкої NVIDIA GF GT 740M.

Ще приклади розпізнавання



Особливо показові 3 і 4 стовпці автомобільних номерів.

Можна закрити половину (і навіть більше) знака, але все одно вибереться єдина вірна гіпотеза про положення і орієнтації автомобільного знака, оскільки нам відома його модель. Це фундаментальна властивість людського мозку — лише за кількома ознаками (іноді помилково) впізнавати об'єкти і явища.

А на четвертому прикладі з-за неідеальності роботи першої зони більшість цифр «загубилося». Але знову ж таки, за рахунок уявлення про те, як виглядає автомобільний номер, була вірно обрана гіпотеза про перспективне перетворення. І вже за рахунок зворотного проекціювання на першу зону інформації про те, де повинні бути знаки, номер успішно розпізнається! Частина інформації була втрачена, але відновлена за рахунок того, що ми знаємо — «саме там мають бути цифри та літери».

Навчання

Безпосередньо у наведеному прикладі навчання проводилося, з одного боку, найпростіше: «один раз показали і запам'ятали». А з іншого боку, щоб отримати сильний алгоритм розпізнавання, досить було просто пред'явити 22 знака для першої зони і один автомобільний номер для другої зони. Це надшвидке навчання. Не потрібно було тисяч зображень.

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

Але в концепції закладено незвичайний і потужний механізм самонавчання. Точніше, тут необхідно навчати двом речам:
1) одні й ті ж «фічі» перетворюються в різних контекстах. І відповісти на не менш складне питання: а що є контекст для даної зони? Інтуїтивно здається, що для звуку — частота і темп. Для рухів — напрямок і темп. Для зображень — для якої зони 2D перетворення, для якої вже 3D.
2) Знайти стійкі ситуації, тобто набір функцій, які проявляються часто в різних контекстах.

За останні кілька місяців вийшло дещо зробити і в напрямку самонавчання. Так, наприклад, при роботі з візуальними образами об'єкту достатньо двічі з'явитися в кадрі в різному контексті (масштаб, орієнтація, положення) і вдається отримати його портрет, який потім придатний для розпізнавання, незважаючи на досить складний фон і перешкоди. Все це виглядає, як надшвидке самонавчання.

На жаль, докладний опис механізмів самонавчання залишиться за рамками цієї статті.

А згорткові мережі Яна Лекуна?

Згорткові мережі (CNN) теж чудово вписуються в цю модель. Згортка з ядрами проводиться для кожної позиції X,Y. тобто на кожному рівні в кожній позиції шукають одне із спогадів (ядер), таким чином позиція — той самий контекст. І навіть необхідно розташування поруч близьких позицій, т. к. це використовується на наступному рівні downsample, де вибирається локальний максимум з 4 точок. За рахунок цього виходить навчати нейронну мережу відразу для всіх позицій на зображенні. Іншими словами, якщо ми навчилися впізнавати кішечку в лівому верхньому кутку, то, безумовно, дізнаємося її і в центрі. Варто лише зауважити, що ми не зможемо відразу дізнатися її, повернену на 45 градусів, або іншого масштабу. Буде потрібно велика навчальна вибірка для цього.

Згорткові мережі за рахунок такого механізму пристрої стали дуже потужним інструментом в умілих руках. Але є декілька недоліків, які компенсуються різними методами, але є принциповими:

— вже зафіксовано тільки контекст положення, хоча навіть при роботі із зображеннями важливі орієнтація, масштаб, перспектива, швидкості руху при роботі з відео та інші параметри;
— а значить потрібно збільшувати навчальну вибірку, т. до. у сверточной мережі не закладений механізм перетворення, крім переміщення, і сподіватися, що інші закономірності «спливуть» після тривалого навчання;
— немає механізму «запам'ятовування», тільки зміна вагових коефіцієнтів. Одного разу побачене вже не допоможе при подальшому навчанні, а значить навчальну вибірку потрібно правильно організовувати і в будь-якому випадку знову збільшувати. Іншими словами: пам'ять відокремлена від архітектури CNN.
— втрата інформації при downsample і подальшому upsample (в автоенкодерах на базі CNN), тобто якщо будувати зворотний зв'язок або зворотну проекцію CNN, то виникають проблеми з точністю відтворення;
— кожен наступний рівень так і продовжує оперувати просторової інваріантністю «в площині», а на вищих рівнях через відсутність конструктивних ідей знову приходять, наприклад, до повнозв'язної архітектурі;
— досить складно відстежувати і налагоджувати ті «моделі», які сформулировались в ході навчання, та й не завжди вони коректні.

Можна і посилити згорткові мережі, наприклад «зашити» ще кілька параметрів, крім X,Y. Але взагалі-то треба розвивати не найпростіші алгоритми самоорганізації карти контекстів, організувати «перетрактовку» спогадів, узагальнення в різних контекстах і багато іншого, що не зовсім схоже на базові ідеї CNN.

Висновок

Одного прикладу з розпізнаванням номерів, реалізованого досить спрощеним чином, звичайно, недостатньо, щоб говорити про те, що у нас в руках нова конструктивна модель пристрою мозку. Лише проба пера. Попереду ще дуже багато цікавої роботи. Зараз
AlexeyR готує приклади з класичним MNIST на одній зоні, самонавчанням декількох зон для розпізнавання мови. Крім того, ми вчимося працювати з менш структурованою інформацією — особами людей. Тут вже не обійтися без потужного самонавчання. І саме ці практичні приклади змушують буквально кожні 2 тижні переглядати деякі деталі концепції. Можна скільки завгодно красиво розповідати про стрункої концепції і писати чудові книги, але куди важливіше створити реально працюючі програми.

В результаті, крок за кроком, повинна вийти досить розвинена модель, яка буде значно досконаліше існуючих CNN або, скажімо, RNN по відношенню до вхідної інформації, часом навчається буквально з кількох прикладів.

Запрошуємо Вас стежити за розвитком моделі у цей блоґ
AlexeyR!
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.