Хиймэл нейроны сүлжээ гэж юу вэ?

Энэ постны зорилго нь feedforward neural network гэж нэрлэгддэг хамгийн энгийн хиймэл нейроны сүлжээний талаар анхны ойлголт өгөх явдал болно. Энэ төрлийн сүлжээ нь дангаараа олон төрлийн бодлого бодох чадвартайгаас гадна (CNN, RNN гэх мэт) илүү хүчирхэг сүлжээнүүдийн эд эс, хөрс суурь нь болж өгдөг.

Юуны түрүүнд, нейроны сүлжээ маань ер нь ямар бодлого шийдэх гээд байгаа билээ гэдгийг маш энгийн нэг жишээгээр төлөөлүүлэн авч үзье. Ямар температурыг халуун, ямрыг хүйтэн гэх вэ гэсэн санал асуулга хүмүүсийн дунд явуулахад, дараах үр дүн гарсан гэе.

Үүнд хүйтэнг 0, халууныг 1 гэсэн утгаар төлөөлүүлсэн. Одоо энэ өгөгдөл дээр тулгуурлаад, цаашдаа дурын температурын утга x өгөгдсөн үед үүнийг халуун гэх үү хүйтэн гэх үү гэдгийг шийдэж чаддаг алгоритм байгуулах асуудлыг сонирхоё. Энэ бодлого нь x\in\mathbb{R} гэсэн тоо «халуун», «хүйтэн» гэсэн хоёр ангийн алинд нь орохыг шийдэх ангиллын бодлого бөгөөд цөөн тооны өгөгдөл дээр тулгуурлан ерөнхий зүй тогтлыг нь нээн илрүүлэхийг зорьж байгаагаараа статистикийн хувьд регресс, компьютерийн ухааны хувьд машин сургалтын салбарт хамаарагдах асуудал юм. Мөн түүнчлэн, өгөгдсөн температурын халуун хүйтнийг шийддэг

x\mapsto F(x)

гэсэн бидний мэдэхгүй нэг функц «цаана нь» байгаа гэж үзвэл, дээрх бодлого нь F(x_i)=y_i (эсвэл илүү ерөнхийгөөр F(x_i)\approx y_i) байх \{(x_i,y_i):i=1,\ldots,N\} гэсэн N ширхэг өгөгдсөн хос дээр тулгуурлаад,

x\mapsto f(x)

гэсэн функцийг,

f(x)\approx F(x)

байхаар байгуулах асуудал болох ба үүнийг математик анализын үүднээс ойролцооллын онолд хамааруулан судалж болно.

Функцийг ойролцоолох хамгийн хялбар арга бол шугаман функцээр ойролцоолох явдал юм. Өөрөөр хэлбэл

f(x)=f_{a,b}(x)=ax+b

гэсэн хоёр параметртэй функцээр F(x) функцээ ойролцоолно. Үүнийг статистикт шугаман регресс гэж нэрлэдэг. Одоо өгөгдөл дээрээ тулгуурлан a,b\in\mathbb{R} параметрүүдээ сонгохын тулд ямар нэг алдааны хэмжүүр бидэнд хэрэгтэй. Хамгийн өргөн хэрэглэгддэг ийм хэмжүүр нь квадратлаг алдааны функц

\displaystyle E(a,b)=\frac12\sum_{i=1}^N(ax_i+b-y_i)^2

юм. Хэрвээ бүх i-ийн хувьд ax_i+b=y_i байдаг (ө.х. шугаман ойролцоолол нь өгөгдлүүдтэйгээ яв цав таардаг) бол E(a,b)=0 байх нь ойлгомжтой. Бодит байдал дээр бол өгөгдлүүд маань яг нэг шулуун дээр оршино гэж бараг байхгүй тул E(a,b) функцийг хамгийн бага болгодог тийм a,b\in\mathbb{R} параметрүүдийн утгыг олох нь бидний дараагийн зорилго болно. Үүнийг хамгийн бага квадратын арга гэдэг. Дорх зурагт E(a,b) функц параметрүүдээсээ хэрхэн хамаарахыг дүрсэлж үзүүлэв.

Эндээс a\approx0.05,\,b\approx0 үед E(a,b) функц минимум утгаа авах нь харагдаж байна. Үүнийг яг бодохын тулд E(a,b) функцээс a ба b хувьсагчдаар авсан тухайн уламжлалуудыг тэгтэй тэнцүүлэхэд хангалттай:

\displaystyle\frac{\partial E}{\partial a}=\sum_{i=1}^N(ax_i+b-y_i)x_i=a\sum_{i=1}^Nx_i^2+b\sum_{i=1}^Nx_i-\sum_{i=1}^Nx_iy_i=0,

\displaystyle\frac{\partial E}{\partial b}=\sum_{i=1}^N(ax_i+b-y_i)=a\sum_{i=1}^Nx_i+Nb-\sum_{i=1}^Ny_i=0.

Эдгээр нь a,b-ийн хувьд шугаман тэгшитгэлүүдийн систем тул бодоход маш амархан (x_i,y_i тоонууд өгөгдсөн байгаа гэдгийг сана). Ингээд хариу нь

a\approx0.0256,\,b\approx0.0102

гарах ба, f(x)=ax+b функцийн графикийг өгөгдлүүдтэйгээ хамт зурвал

болно. Тэгэхээр энэ загварын хувьд халуун хүйтний зааг 20ºC орчимд байна.

Дээрхийг дүгнэж хэлэхэд, хичнээн ч хэмжээний өгөгдөл \{(x_i,y_i):i=1,\ldots,N\} өгөгдсөн байсан гэсэн a,b параметрүүдийг тооцоолох процесс нь бүрэн автоматжисан, компьютерийн хувьд маш хялбар процесс байна. Машин сургалтын нэр томъёонд \{(x_i,y_i):i=1,\ldots,N\} өгөгдлийг сургалтын өгөгдөл (эсвэл сургалтын багц),  a,b параметрүүдийг тооцоолох процессыг өөрийг нь сургалт гэж нэрлэдэг. Ерөнхий тохиолдолд,

  • Шугаман функцүүдийн оронд шугаман бус, илүү нарийн нийлмэл функцүүдээр ойролцоолох гэж оролдож болно. Тэгэхээр дотоод параметрийн тоо нь асар их байна.
  • «Цаадах» функц нь маш олон оролттой, бас олон гаралттай F(x_1,\ldots,x_n)\in\mathbb{R}^m маягийн функц байж болно. Жишээ нь, x_1,\ldots,x_n хувьсагчид нь гараар бичсэн үсгийг 16×16 хэмжээтэй хар цагаан зураг болгоод, пикселүүд нь хэр цайвар вэ гэдгийг хэмжсэн утгууд байг. Тэгвэл n=256 болох ба F(x_1,\ldots,x_n) функц нь жишээ нь, m=35 ширхэг гаралттай, гаралт бүр нь тухайн зураг цагаан толгойн тодорхой нэг үсэг байх магадлалд харгалздаг байж болно.
  • Түүнчлэн сургалтын зорилго маань халуун, хүйтэн гэсэн 2-хон ангид задлах биш, гараар бичсэн үсгийг цагаан толгойн ямар үсэг вэ гэдгийг таних явдал байж болно.
  • Алдааны хэмжүүр нь квадратлаг биш функц байж болно.

Эдгээр сонголтуудыг хийсний дараа, ойролцоологч функцийнхээ дотоод параметрүүдийг яаж тооцоолох вэ (ө.х. сургалтаа яаж явуулах вэ) гэдэг нь машин сургалтын гол асуудалд хувирна. Энэ нь үнэндээ алдааны хэмжүүрийг дотоод параметрүүдээс хамааруулан минимумчлэх бодлого юм. Бодит байдал дээр алдааны хэмжүүр нь дотоод параметрүүдээс хамаарсан гүдгэр биш функц байдаг бөгөөд машин сургалтын бодлого маань гүдгэр биш оптималчлал гэгддэг маш том бөгөөд хэцүү салбарт хамаарагдана. Практикт энэ зорилгоор ихэвчлэн градиентийн дагуу уруудах төрлийн алгоритмуудыг ашигладаг.

Градиентийн дагуу уруудах алгоритмыг цаашид бид градиент алгоритм, уруудах алгоритм гэх мэтээр товчлох болно. Энэ алгоритмыг дээрх хялбар жишээн дээрээ тайлбарлая. Дээр бид алдааны хэмжүүрийн тухайн уламжлалуудыг

\displaystyle\frac{\partial E}{\partial a}(a,b)=\sum_{i=1}^N(ax_i+b-y_i)x_i,

\displaystyle\frac{\partial E}{\partial b}(a,b)=\sum_{i=1}^N(ax_i+b-y_i),

гэж тооцоолсон байгаа. Эдгээр нь a,b хувьсагчдаас хамаарсан

\nabla E(a,b)=(\frac{\partial E}{\partial a},\frac{\partial E}{\partial b})\in\mathbb{R}^2

гэсэн вектор орныг тодорхойлох ба үүнийг E(a,b) функцийн градиент гэж нэрлэдгийг бид мэднэ. Цаашилбал, (a,b) цэг дээрх градиент нь E(a,b) функцийн хамгийн хурдан өсөх чиглэлийг заадаг. Тэгэхээр (a,b) хавтгай дээр градиентийн эсрэг чиглэлд явбал E(a,b) функц хамгийн хурднаар буурна гэсэн үг. Энэ чанарыг градиент алгоритмд дараах байдлаар ашигладаг.

  • Эхлээд (a_0,b_0) гэсэн анхны таамгийг сонгож авна.
  • Мөн \eta>0 гэсэн сургалтын хурд нэртэй (бага) параметр бэхэлнэ.
  • (a_0,b_0) цэг дээрээ \nabla E(a_0,b_0) градиентийг тооцно.
  • (a_1,b_1)=(a_0,b_0)-\eta\nabla E(a,b) томъёогоор дараагийн цэг рүүгээ шилжинэ.
  • (a_0,b_0)\longleftarrow(a_1,b_1) гээд, сүүлийн 3 алхмыг хангалттай олон дахин давтана.

Бидний өмнөх жишээн дээр бол E функцийн минимумын нөхцөл нь шугаман тэгшитгэл учраас шууд бодчих боломжтой байсан. Одоо илүү ерөнхий тохиолдлын загвар болгоод тэр жишээн дээрээ градиент алгоритмыг ажиллуулж үзье. Ингэхэд дараах дүр зураг харагдаж байна.

Анхны таамгийг (a_0,b_0)=(0.15,1), сургалтын хурдыг \eta=0.0001 гэж өгөөд, градиент алгоритмын 5000 алхмыг гүйцэтгэсэн. Ө.х. сургалтыг 5000 удаа давтсан (градиент алгоритмын алхам бүрт сургалтын багц бүхлээрээ ашиглагдаж байгааг анхаар). Зураг дээрээс, (a,b) цэг (буюу сурсан параметрийн утга) эхлээд зүүн гар тийшээ явж байгаад, огцом эргээд баруун доошоо чиглэн явж минимум цэг дээр очсон байна. Одоо алдааны хэмжүүр (E функц) алгоритмын алхмаас яаж хамаарсныг харъя.

Эндээс эхний хэдхэн алхмын дотор алдааны хэмжүүр бараг 100 дахин буурсан нь харагдана. Үүнийг дээрх зурагтайгаа харьцуулбал, (a,b) цэг огцом эргэдэг газар нь алдааны хэмжүүр хурдан буурахаа болиод, аажмаар буурч эхлэх цэгт харгалзах нь илэрхий. Өөрөөр хэлбэл (a,b) цэг зүүн гар тийшээ явдаг хэсэг нь хэдхэн алхмын дотор болж өнгөрсөн гэсэн үг. Эндээс сургалтын хурдыг яагаад бага сонгодгийг харж болно: Хэрэв \eta их байсан бол градиент алгоритм нэг алхмын дотор хэт хол буудаж, E функц тэр хавьдаа аль чиглэлийн дагуу хурдан буурч байсан бэ гэсэн мэдээлэл ашиглагдалгүй хаягдах юм.

Дээрх жишээнийхээ шийдийг дахиад нэг ажиглая.

Шугаман функцийн гаралт нь (-\infty,\infty) байдаг нь түүнийг энэ бодлогонд зохимжгүй болгож байна. Функцийн гаралт 0 юм уу 1, эсвэл ядаж л [0,1] гэсэн интервал байвал энэ бодлогонд илүү тохиромжтой. Энэ дутагдлыг засахад амархан: Шугаман функцийнхээ гаралтыг (-\infty,\infty) мужийг [0,1] интервал руу хувиргадаг функцийн оролтонд хийгээд өгчих хэрэгтэй. Ийм функцийн жишээ нь логистик функц гэж нэрлэгддэг

\displaystyle\sigma(x)=\frac1{1+e^{-x}}

функц юм. Үүний графикийг дор дүрслэв.

Тэгэхээр бид F(x) функцийг

f(x)=f_{a,b}(x)=\sigma(ax+b)

гэсэн 2 параметртэй функцээр ойролцоолно гэсэн үг. Үүнийг статистикт логистик регресс гэдэг. Алдааныхаа хэмжүүрийг квадратлаг байхаар авбал

\displaystyle E(a,b)=\frac12\sum_{i=1}^N\big[\sigma(ax_i+b)-y_i\big]^2

болно. Энэ функцийн графикийг (дээрх сургалтын өгөгдлийн хувьд) зурж үзье.

Үүний шугаман регрессийнхээс ялгагдах нэг гол шинж нь шаталсан, «хавтгай газар» ихтэй харагдаж байна. Хавтгай газар ихтэй байгаа нь логисик функцийн уламжлал \sigma'(x) нь x их үед 0 рүү тэмүүлдэгтэй холбоотой. Одоо графикаа «дээрээс нь» нэг харж үзье.

Эндээс «ангалын ёроолд» байгаа хавтгай хар газар E функц маш бага байгааг харж болно. Жишээ болгоод хэд хэдэн ийм цэг дээр E функцийг тооцож үзвэл

a b E(a,b)
2 –40 2·10–9
3 –60 9·10–14
3 –80 2·10–9
4 –80 4·10–18
4 –100 4·10–18
5 –100 2·10–22
6 –100 2·10–9

Тэгэхээр «ангалын ёроолын» цэгүүд чанарын хувьд хоорондоо бараг ялгагдахгүй. Эдгээр цэгүүд ямар шийдүүдэд харгалзахыг зурж үзье.

Эндээс харахад бүх зүйл ойлгомжтой болж байна: Сургалтын өгөгдөл дээр түшиглээд халуун хүйтний зааг 15ºC ба 30ºC-ын хооронд яг хаана байхыг хэлэх арга байхгүй. Халуун хүйтний заагийг 15ºC ба 30ºC-ын хооронд хаана л бол хаана бэхлээд, a,b параметрүүдийг ихэсгэх замаар E(a,b) функцийг хичнээн л бол хичнээн багасгах боломжтой.

Дээрх жишээнд E(a,b) функцийн минимумын шинж чанар хялбархан ойлгогдохоор байсан учраас градиент алгоритмыг ашиглах шаардлага гарсангүй. Харин ерөнхий тохиолдолд энэ алгоритм шаардлагатай болох тул E(a,b) функцийн градиентийн байгуулагчуудыг тооцъё:

\displaystyle \frac{\partial E}{\partial a}(a,b)=\sum_{i=1}^N\big[\sigma(ax_i+b)-y_i\big]\sigma'(ax_i+b)x_i,

\displaystyle \frac{\partial E}{\partial b}(a,b)=\sum_{i=1}^N\big[\sigma(ax_i+b)-y_i\big]\sigma'(ax_i+b).

Логистик функцийн уламжлалыг

\displaystyle\sigma'(x)=\frac{e^{-x}}{(1+e^{-x})^2}=\sigma(x)\big(1-\sigma(x)\big)

томъёогоор хялбархан тооцож болно.

Одоо логистик регрессийг ашигласан бас нэг жишээ авч үзье. Энд 20 оюутан тодорхой нэг хичээлийн шалгалтанд орсноос 10 нь тэнцээд, 10 нь унасан бөгөөд оюутан бүрийн шалгалтандаа хэдэн цаг бэлдсэн нь мэдэгдэж байгаа (өгөгдлийг Википедиа дээрээс авсан):

Энэ өгөгдлийн хувьд градиент алгоритм ашиглан логистик регрессийн параметрүүдийг «сурсан» үйл явцыг дараах зурагт дүрслэв.

Үүнд анхны таамгийг (a_0,b_0)=(4,0), сургалтын хурдыг \eta=0.01 гэж аваад, градиент алгоритмын 1500 алхмыг гүйцэтгэсэн (Графикийг харахад E(a,b) функц ганц минимумтэй байх гэсэн итгэл төрнө). Ингээд гарсан эцсийн шийд нь (a,b)=(1.16,-3.19) бөгөөд, f(x)=\sigma(ax+b) функцийг зурж үзүүлбэл

Статистикийн үүднээс f(x)=\sigma(ax+b) функцийн утгыг шалгалтанд тэнцэх магадлал гэж тайлбарлаж болно.

Логистик регрессийн y=\sigma(ax+b) томъёог

эсвэл

маягаар схемчлэн дүрсэлдэг. Үүнд хар тойргууд оролт ба гаралтыг, цэнхэр дөрвөлжин нь оролтон дээр шугаман хувиргалт (x\mapsto ax) хийгээд хазайлт (bias) гэгдэх тогтмол тоог нэмэх (+b) үйлдлийг, ногоон блок нь логистик функцийн үйлчлэлийг дүрсэлнэ. Цэнхэр блокны x оролтонд харгалзах a тоог тухайн оролтны (эсвэл холбоосын) жин гэж нэрлэдэг. Жин болон хазайлтын тогтмолуудыг диаграм зурахдаа ихэвчлэн орхиж зурна. Түүнчлэн, цэнхэр ба ногоон блокуудыг ихэнхдээ хамтад нь нэг блок болгож зурах ба үүнийгээ (хиймэл) нейрон гэж ярьдаг. Тэгэхээр дээрх диаграмуудыг ердөөбайдлаар зурж болно гэсэн үг. Энд сумууд болон оролт гаралтын x,y гэсэн тэмдэглэгээг нь ч орхичихсон байгаа. Ерөнхий тохиолдолд \sigma функцийн оронд өөр функц байж болох ба энэ функцийг нь нейроны өдөөгч функц (activation) гэдэг.

Шугаман болон логистик регрессийг олон хувьсагчтай функцийн хувьд өргөтгөхөд амархан. Тухайлбал, 2 хувьсагчийн тохиолдолд шугаман регресс нь

f(x_1,x_2)=a_1x_1+a_2x_2+b

хэлбэрийн функцүүдийг, логистик регресс нь

f(x_1,x_2)=\sigma(a_1x_1+a_2x_2+b)

хэлбэрийн функцүүдийг ашиглана. Хоёр хувьсагчийн логистик регрессийг диаграмаар дүрсэлбэлбуюу товчоорболно. Үүний хэрэглээ болгоод нэг жишээ авч үзье. Хүний халуун хүйтний мэдрэмжид зөвхөн агаарын температур төдийгүй чийгшил бас нөлөөлдгийг бид мэднэ. Дорх зурагт хүн ямар үед агаарыг «хэт халуун» гэж мэдрэх вэ, ямар үед «хэт халуун биш» гэж мэдрэх вэ гэсэн сургалтын өгөгдлийг дүрслэв.

«Хэт халуун» гэснийг нь 1, «үгүй» гэснийг нь 0 гэсэн утгаар төлөөлүүлээд, сургалтын өгөгдлүүдээ

(x^{(1)}_1,x^{(1)}_2,y^{(1)})= (28,25,0),\quad (x^{(2)}_1,x^{(2)}_2,y^{(2)})=(32,40,1), \ldots

гэх мэтчилэн бичье. Энд x^{(i)}=(x^{(i)}_1,x^{(i)}_2) гэсэн цэг бүр нь өөрөө 2 байгуулагчтай учраас өмнөх жишээнүүдийг бодвол 1 илүү индекс хэрэг болоод байгаа. Ингээд

\displaystyle E(a_1,a_2,b)=\frac12\sum_{i=1}^N\big[\sigma(a_1x^{(i)}_1+a_2x^{(i)}_2+b)-y^{(i)}\big]^2

функцийг минимумчлэх градиент алгоритм ажиллуулбал

(a_1,a_2,b)=(6.29,0.89,-225.03)

гэсэн шийдэнд хүрч байна. Эдгээр параметрүүдийн утгуудыг бэхлээд, f(x_1,x_2)=\sigma(a_1x_1+a_2x_2+b) функцийг (x_1 нь температур, x_2 нь чийгшил) дүрсэлж үзүүлбэл

Параметр огторгуй маань 3 хэмжээстэй учраас E(a_1,a_2,b) функцийн графикийг зурж ойлгоход хэцүү. Гэхдээ ерөнхий шинж чанар нь бидний анхны жишээтэй төстэй байх ёстой. Бага зэрэг ойлголт авах үүднээс b=-225.03 гэж бэхлээд, E(a_1,a_2,-225.03) функц a_1,a_2 параметрүүдээс яаж хамаарахыг харъя.

Тэр ёроолын хар талбайд байгаа шийдүүд чанараараа хоорондоо бараг ялгагдахгүй байх ёстой. Хэдэн ийм цэг дээр алдааны хэмжүүрийг бодож үзье.

E(6.29,0.89,-225.03)=1.26\cdot10^{-11},

E(5.5,1.5,-225.03)=4.96\cdot10^{-5},

E(7,0.75,-225.03)=1.18\cdot10^{-9}.

Эхнийх нь дээр зурагдсан шийд. Нөгөө хоёрт нь харгалзах шийдүүд дараах байдалтай харагдана.

Бидний анхны жишээтэй төстэйгөөр, сургалтын өгөгдөл дээр түшиглээд хоёр ангийг тусгаарлах шулууныг яг хаагуур нь яаж зурахыг нэг утгатай шийдэх боломжгүй бөгөөд, дээрх шийдүүдийн аль нь ч практикт «боломжийн шийд» болно.

Дурын n хувьсагчийн хувьд, x=(x_1,\ldots,x_n)\in\mathbb{R}^n гэсэн тэмдэглэгээ оруулан, логистик регрессийг

f(x)=f(x_1,\ldots,x_n)=\sigma(a_1x_1+\ldots+a_nx_n+b)=\sigma(a\cdot x+b)

гэж бичиж болно. Энд

a\cdot x=a_1x_1+\ldots+a_nx_n

нь a\in\mathbb{R}^n ба x\in\mathbb{R}^n векторуудын скаляр үржвэр. Диаграмаар болмаягтай, эсвэл мэдээлэл доороос дээшээ урсаж буй байдлаармаягтай дүрсэлнэ. Машин сургалтын салбарт эдгээрийг ганц давхаргатай нейроны сүлжээ гэж нэрлэдэг.

Аливаа ангиллын бодлого ганц давхаргатай сүлжээгээр бодогдох зайлшгүй бөгөөд хүрэлцээтэй нөхцөл нь бодлогонд орж байгаа 2 анги ямар нэг цэгээр (2, 3 ба 3-аас дээш хэмжээстэй нөхцөлд харгалзан шулуунаар,  хавтгайгаар, гиперхавтгайгаар) зааглагддаг байх явдал юм гэдэг нь ойлгомжтой. Энэ нөхцлийг хангадаггүй хялбар жишээ гэвэл өгөгдсөн температурыг хүнд тааламжтай юу үгүй юу гэдгээр нь ангилах бодлого байна.

Параметрүүдийг нь яаж ч сонгосон гэсэн f(x)=\sigma(ax+b) төрлийн функц нь 0-ээс 1 рүү нэг л удаа шилжих болохоор дээрх сургалтын өгөгдлийг бүрэн сурах боломжгүй. Үүнийг яаж шийдэх вэ гээд жаахан бодвол дорх зурагт үзүүлсэн шиг эхний 6 цэгийг ашиглаж нэг сургалт хийгээд, сүүлийн 6 цэгийг ашиглаж бас нэг сургалт хийгээд, гарч ирсэн хоёр логистик ойролцооллоо зэрэг ашиглачихмаар санагдаж байгаа.

Энд цэнхэр ба улбар шараар дүрслэгдсэн функцүүд нь

f_1(x)=\sigma(2x-30),\qquad{}f_2(x)=\sigma(-2x+70)

гэсэн 2 функц байгаа. Эдгээрийг зүгээр «гар аргаар»

f(x)=f_1(x)+f_2(x)-1

гээд эвлүүлчихвэл яг бидний хүссэн үр дүн гарч ирнэ.

Гэхдээ бид алгоритмын дотоод руу ингэж хамаагүй «гараа дүрж» болохгүй, аль цэгийг хэзээ хаях вэ, хэзээ ашиглах вэ гэдгийг компьютер өөрөө автоматаар шийддэг байх хэрэгтэй. Мөн f_1 ба f_2 ойролцооллуудаа яаж хооронд нь автоматаар залгаж эвлүүлэх вэ гэсэн асуудал сөхөгдөнө. Дээр бидний гараар байгуулсан ойролцоолол бол

f(x)=c_1\sigma(a_1x+b_1)+c_2\sigma(a_2x+b_2)+b

төрлийн ойролцоолол байгаа. Энд харилцан хамааралгүй 2 логистик регрессийн гаралтыг 2 хэмжээстэй шугаман регрессийн оролтонд өгсөн байна. Цаашилбал, бодлого маань ангиллын бодлого учраас 2-р шатанд нь шугаман регрессийн оронд логистик регресс байвал илүү зохимжтой гэдгийг бид мэднэ:

f(x)=\sigma\big(c_1\sigma(a_1x+b_1)+c_2\sigma(a_2x+b_2)+b\big)

Ингээд бид анхныхаа 2 давхаргатай нейроны сүлжээг гарган авлаа:

буюу товчоор

Нэр томъёоны хувьд, энэ сүлжээ нь 1 оролт, 1 гаралттай бөгөөд эхний давхаргынх нь өргөн 2, дараагийн давхаргынх нь өргөн 1 гэж ярьдаг. Түүнчлэн, эхний давхаргаас гарах мэдээлэл бидэнд харагдахгүй тул уг давхаргыг далд давхарга гэдэг. Энэ сүлжээний амжилтыг арай өөр өнцгөөс харан дараах маягаар тайлбарлаж болно.

  • Сүлжээний эхний давхарга шулуун дээр байсан цэгүүдийг хавтгай дээрх ямар нэг муруйн дагуух цэгүүдэд буулгана.
  • Хоёрдахь давхарга нь энэ хавтгай дээр шулуун татах замаар цэгүүдээ 2 ангид хуваана.

Өгөгдлийн цэгүүдийг x\mapsto(\sigma(0.1x-0.5),\sigma(-0.1x+3.5)) хувиргалтаар хувиргасныг дорх зурагт үзүүлэв. Энэ хавтгайн хаагуур нь шулуун татвал цэгүүд 2 ангид зөв хуваагдах нь ойлгомжтой харагдана. Дүгнэж хэлэхэд, шулуун дээр байрлаж байсан цэгүүдийг «муруйлгаж» байгаагаараа уг сүлжээний гол ид шид нь далд давхаргын нейронуудын өдөөгч функцийн шугаман бус чанарт оршиж байна. Хэрэв эдгээр функц шугаман байсан бол далд давхаргыг хичнээн ч өргөн болгоод, дунд нь хэдэн ч давхарга нэмээд шулууныг шулуунд л буулгах учраас эцсийн үр дүн ганц давхаргатай сүлжээнээс ялгагдахгүй юм.

Одоо дээрх сүлжээний a_1,a_2,b_1,b_2,c_1,c_2,b гэсэн 7 параметрээс квадратлаг алдааны функц яаж хамаарахыг бичвэл

\displaystyle E=\frac12\sum_{i=1}^N\big[\sigma\big(c_1\sigma(a_1x_i+b_1)+c_2\sigma(a_2x_i+b_2)+b\big)-y_i\big]^2

Градиент алгоритмыг ажиллуулахын тулд одоо эндээсээ 7 параметрээрээ уламжлал авах л үлдлээ. Жишээ болгоод нэг уламжлал бодож үзье.

\displaystyle\frac{\partial E}{\partial a_2}=\sum_{i=1}^N\big[\sigma(z_i)-y_i\big]\sigma'(z_i)c_2\sigma'(a_2x_i+b_2)a_2

Энд

z_i=c_1\sigma(a_1x_i+b_1)+c_2\sigma(a_2x_i+b_2)+b

гэсэн товчлол хийсэн. Ингээд градиент алгоритмаа ажиллуулахад

f(x)=\sigma\big(8.44\sigma(2.02x-30)+8.44\sigma(-2x+70)-12.75\big)

гэсэн шийд гарч байна.

Үүнийг дээр бидний «гар аргаар» гаргасан

f(x)=\sigma\big(\sigma(2x-30)+\sigma(-2x+70)-1\big)

шийдтэй харьцуулахад, E функц 1.72 байснаа 0.0018 болтлоо буурсан байгаа. Сүлжээний алдааны хэмжүүр E функцийн талаар бага зэрэг ойлголт авахын тулд (бусад 6 параметрыг нь сүүлийн гаргадаг шийдийнхээр бэхлээд) түүний a_1,a_2 параметрүүдээс хамаарсан хамаарлыг зурж үзвэл ийм харагдаж байна:

Ерөнхий тохиолдолд, нейроны сүлжээ нь хэдэн ч оролт, гаралт, давхаргатай, давхаргууд нь хичнээн ч өргөн байж болно. Жишээ нь 3 оролт, 3 гаралттай, 2 давхаргатай, давхаргууд нь 4, 3 гэсэн өргөнтэй сүлжээ дараах маягаар дүрслэгдэнэ.Олон гаралттай сүлжээний нэг хэрэглээ нь (үсэг таних, зураг таних гэх мэтчилэн) өгөгдлийг m ширхэг ангид ялгах бодлого юм.

Ийм сүлжээний «томъёог нь» бичье гэвэл дараах маягаар явж болно. Юуны түрүүнд, сүлжээний оролтонд орж байгаа өгөгдлийг z^{(0)}=x буюу, байгуулагч бүрээр нь салгаж бичвэл

z^{(0)}_j=x_j,\qquad j=1,\ldots,n

гэе. Ингээд хамгийн эхний давхаргыг 1-р давхарга гээд тоолбол, k дугаар давхаргын j дэх нейроны гаралтыг

z^{(k)}_j=\sigma\big(w^{(k)}_{j1}z^{(k-1)}_1+\ldots+w^{(k)}_{jN_{k-1}}z^{(k-1)}_{N_{k-1}}+b^{(k)}_j\big)

гэж илэрхийлж болно. Үүнд

  • N_k нь k дугаар давхаргын өргөн (N_0=n гэж үзнэ),
  • W^{(k)}=[w^{(k)}_{ij}]\in\mathbb{R}^{N_{k-1}\times N_k} нь k дугаар давхаргын жингийн матриц гэгдэх матриц,
  • b^{(k)}=[b^{(k)}_j]\in\mathbb{R}^{N_k} нь уг давхаргын хазайлтын вектор гэгдэх вектор.

Хэрэв W^{(k)} матрицын j дэх мөрийг W^{(k)}_j=(w^{(k)}_{j1},\ldots,w^{(k)}_{jN_{k-1}}) гэж тэмдэглэвэл, дээрхийг

z^{(k)}_j=\sigma\big(W^{(k)}_{j}z^{(k-1)}+b^{(k)}_j\big),\qquad j=1,\ldots,N_k

гэж товчлох ба, бүр цаашилбал, \sigma функцийн оролтонд m хэмжээстэй векторыг өгвөл тухайн векторын байгуулагч бүрт үйлчлээд, m хэмжээстэй векторыг гаргадаг гэж тохиролцсоны үндсэн дээр

z^{(k)}=\sigma\big(W^{(k)}z^{(k-1)}+b^{(k)}\big)

гэж бичих ч боломжтой. Тэгвэл M ширхэг давхаргаас тогтсон сүлжээ нь

z^{(k)}=\sigma\big(W^{(k)}z^{(k-1)}+b^{(k)}\big),\qquad k=1,\ldots,M

гэж бичигдэнэ.

Эцэст нь, практикт ашиглагддаг нейроны сүлжээнүүдийн талаар хэдэн үг хэлээд постоо өндөрлөе.

  • Нейроны сүлжээгээр хүрсэн сүүлийн үеийн ихэнх гайхамшигт амжилтууд нь маш олон давхаргатай гүн сүлжээг үлэмж хэмжээний өгөгдлөөр сургаснаар боломжтой болсон байгаа.
  • Алдааны функцийн градиентыг (буюу тухайн уламжлалуудыг нь) бодох стандарт арга нь гэдрэг тархалтын арга болно.
  • Их өгөгдөлтэй, том сүлжээн дээр градиентийн арга их өртөгтэй болдог тул үүний оронд стохастик градиентийн арга нэртэй хувилбарыг нь өргөн ашигладаг.
  • Ялангуяа гүн сүлжээн дээр алдааны функцийн градиент маш бага болоод градиентын аргыг гацаадаг явдалтай тэмцэх зорилгоор логистик функцийн оронд шулуутгагч функц гэж нэрлэгддэг r(x)=\max\{x,0\} функцийг их хэрэглэнэ.

Жич: Тооцоо болон зарим графикийг зурахад ашигласан Python програмыг сонирхвол эндээс аваарай.

Сурталчилгаа
This entry was posted in Статистик, алгоритм and tagged , , , , . Bookmark the permalink.

Хариу Үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

Та WordPress.com гэсэн бүртгэлээрээ сэтгэгдэл бичиж байна. Гарах /  Өөрчлөх )

Google photo

Та Google гэсэн бүртгэлээрээ сэтгэгдэл бичиж байна. Гарах /  Өөрчлөх )

Twitter picture

Та Twitter гэсэн бүртгэлээрээ сэтгэгдэл бичиж байна. Гарах /  Өөрчлөх )

Facebook photo

Та Facebook гэсэн бүртгэлээрээ сэтгэгдэл бичиж байна. Гарах /  Өөрчлөх )

Connecting to %s