Мы выкарыстоўваем файлы cookie на гэтым сайце для паляпшэння вашага вопыту карыстання.
Для больш падрабязнай інфармацыі азнаёмцеся з Палітыка канфідэнцыяльнасці

AI
ML/DL
Скруткавая нейронная сетка з нуля
25.09.2024

Скруткавая нейронная сетка – спецыяльная архітэктура штучных нейронных сетак, прапанаваная Янам Лекунам. Яна накіравана на эфектыўнае распазнаванне вобразаў. Дадзеная архітэктура значна дакладней распазнае аб’екты на малюнках, менавіта таму, што ў адрозненне ад шматслойнага персэптрона ўлічваецца двухмерная тапалогія малюнка. Пры гэтым скруткавыя сеткі ўстойлівыя да невялікіх зрушэнняў, змен маштабу і паваротаў аб’ектаў на ўваходных малюнках.

 

Чаму менавіта скруткавыя сеткі?

 

Нейронныя сеткі добра распазнаюць малюнкі. Добрая дакладнасць дасягаецца і звычайнымі сеткамі прамога распаўсюджвання. Аднак, калі гаворка заходзіць пра апрацоўку малюнкаў з вялікім лікам пікселяў, то лік параметраў для нейроннай сеткі шматкратна павялічваецца. Прычым настолькі, што час, які затрачваецца на іх навучанне, становіцца неймаверна вялікім.

 

Галоўнай асаблівасцю скруткавых сетак з’яўляецца тое, што яны працуюць менавіта з малюнкамі, а таму можна вылучыць асаблівасці, уласцівыя менавіта ім. Шматслойныя персэптроны працуюць з вектарамі, а таму для іх няма розніцы, ці знаходзяцца нейкія кропкі побач або на процілеглых канцах. Так адбываецца, таму што ўсе кропкі раўназначныя і счытваюцца цалкам аднолькавым чынам. Малюнкі ж валодаюць лакальнай складнасцю. Напрыклад, калі гаворка ідзе пра малюнкі чалавечых асоб, то лагічна чакаць, што кропкі асноўных частак твару будуць побач, а не разрознена размяшчацца на малюнку. Таму патрабавалася знайсці больш эфектыўныя алгарытмы для працы з выявамі і імі апынуліся скруткавыя сеткі.

 

Што ўяўляюць сабой скруткавыя нейронныя сеткі

 

У адрозненне ад сетак прамога распаўсюджвання, якія працуюць з данымі ў выглядзе вектараў, скруткавыя сеткі працуюць з выявамі ў выглядзе тэнзараў. Тэнзары – гэта 3D масівы лікаў, або, прасцей кажучы, масівы матрыц лікаў.

Малюнкі ў камп’ютары прадстаўляюцца ў выглядзе пікселяў, а кожны піксель – гэта значэнне інтэнсіўнасці адпаведных каналаў. Пры гэтым інтэнсіўнасць кожнага з каналаў апісваецца цэлым лікам ад 0 да 255. Часцей за ўсё выкарыстоўваюцца каляровыя малюнкі, якія складаюцца з RGB пікселяў – пікселяў, якія змяшчаюць яркасці па трох каналах: чырвонаму, зялёнаму і сіняму. Розныя камбінацыі гэтых колераў дазваляюць стварыць любы з колераў усяго спектру. Таму цалкам лагічна выкарыстоўваць менавіта тэнзары для прадстаўлення малюнкаў: кожная матрыца тэнзара адказвае за інтэнсіўнасць свайго канала, а сукупнасць усіх матрыц апісвае ўвесь малюнак.

З чаго складаюцца скруткавыя сеткі

 

Скруткавыя нейронныя сеткі складаюцца з базавых блокаў, дзякуючы чаму іх можна збіраць як канструктар, дадаючы слой за слоем і атрымліваючы ўсё больш магутныя архітэктуры. Асноўнымі блокамі скруткавых нейронных сетак з’яўляюцца скруткавыя слаі, слаі падвыбаркі (пулінга), слаі актывацыі і паўназвязныя слаі.

Слой скруткі з’яўляецца самым галоўным слоем сеткі. Яго асноўнае прызначэнне – вылучыць прыкметы на ўваходным малюнку і сфарміраваць карту прыкмет. Карта прыкмет – тэнзар (масіў матрыц), у якім кожны канал адказвае за якую-небудзь выдзеленую прыкмету.

 

Для таго, каб слой мог вылучаць прыкметы, у ім маюцца так званыя фільтры (або ядры). Ядры – гэта набор тэнзараў. Гэтыя тэнзары маюць адзіны памер, а іх колькасць вызначае глыбіню выхаднога 3D масіва. Пры гэтым глыбіня саміх фільтраў супадае з колькасцю каналаў уваходнага малюнка. Так, калі на ўваход скруткаваму слою падаецца RGB малюнак і патрабуецца карта прыкмет, якая складаецца з 32 каналаў, то скруткавы слой будзе ўтрымліваць у сабе 32 фільтры глыбінёй 3.

Для таго, каб сфарміраваць карту прыкмет з уваходнага малюнка, ажыццяўляецца аперацыя скруткі ўваходнага тэнзара з кожным з фільтраў. Скрутка – гэта аперацыя вылічэння новага значэння абранага пікселя, якая ўлічвае значэнні навакольных пікселяў. Алгарытм атрымання выніку скруткі:

 

  1. Фільтр накладваецца на левую верхнюю частку малюнка і вырабляецца пакампанентнае множанне значэнняў фільтра і значэнняў малюнка, пасля чаго фільтр перамяшчаецца далей па малюнку да таго часу, пакуль аналагічным чынам не будуць апрацаваны ўсе яго ўчасткі.
  2. Затым колькасці атрыманых матрыц сумуюцца ў адзіную матрыцу – вынік прымянення фільтра.Пасля гэтага да кожнага значэння матрыцы дадаецца аднолькавы лік – значэнне зрушэння дадзенага фільтра. Атрыманая матрыца складае адзін канал выходнай карты прыкмет.
  3. Далей да кожнага значэння матрыцы дадаецца аднолькавы лік – значэнне зрушэння дадзенага фільтра. Атрыманая матрыца складае адзін канал выходнай карты прыкмет.
  4. Пасля таго, як будуць атрыманы каналы для кожнага з фільтраў, матрыцы аб’ядноўваюцца ў адзіны тэнзар, дзякуючы чаму на выхадзе зноў атрымліваецца малюнак з іншым лікам каналаў і, магчыма, іншым памерам.

 

 

Слой падвыбаркі (пулінга). Дазваляе паменшыць прастору прыкмет, захоўваючы найбольш важную інфармацыю. Існуе некалькі розных версій слоя пілінга, сярод якіх максімальны пілінг, сярэдні пілінг і пілінг сумы. Найбольш часта выкарыстоўваецца менавіта слой макспулінга.Слой актывацыі. Уяўляе сабой некаторую функцыю, якая ўжываецца да кожнага ліку ўваходнага малюнка. Найбольш часта выкарыстоўваюцца такія функцыі актывацыі, як ReLU, Sigmoid, Tanh, LeakyReLU. Звычайна актывацыйны слой ставіцца адразу пасля слоя скруткі, з-за чаго некаторыя бібліятэкі нават убудоўваюць Rely функцыю прама ў скруткавы слой.

Паўназвязны слой. Змяшчае матрыцу вагавых каэфіцыентаў і вектар зрушэнняў і нічым не адрозніваецца ад такога ж слоя ў звычайнай паўназвязнай сетцы. Адзіным гіперпараметрам слоя з’яўляецца колькасць выходных значэнняў. Пры гэтым вынікам прымянення слоя з’яўляецца вектар або тэнзар, у якога матрыцы ў кожным канале маюць памер 1х1.

Навучанне скруткавай сеткі

 

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