Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог...

38
Deep Learning Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Transcript of Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог...

Page 1: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Deep Learning

Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Page 2: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

AI буюу Хиймэл оюун

Өнөөдрийн ярих хэсэг маань

Page 3: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Deep Learning ≈ Deep Neural Network

• Deep Learning гэж юу вэ?• Биологийн мэдрэлийн сүлжээ буюу хүн болон амьтны

төв мэдрэлийн системийг дуурайлган хийсэн математик загварчлал.

• Эхэн үед Neural Network нэрээр судалгааны ажлууд хийгдэж байсан ч биологийн судалгааны ажлуудтай андуурах тохиолдлууд байсан тул Deep Learning нэрийн дор нэгтгэх болсон.

• Supervised болон Unsupervised Learning гэсэн 2 төрөл бий.

Page 4: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Supervised эсвэл Unsupervised

• Supervised Learning– Ямар нэг датаг оруулан өөрийн хүссэн гаралтыг авах(ямар нэг

ангилалд оруулах)-ын тулд урьдчилан ангилан бэлдсэн сургалтын дата(Оролт болон гаралтыг хос болгон бэлдсэн дата)-г сургалтын дата гэж өгөн машинаар онцлог шинжийг суралцуулах.

Урьдчилан ангилан бэлдсэн дата

Сургалтын процессыг олон дахин давтах

Алгоритм

Сургалтын үр дүнг бусад датанд ашиглах

Page 5: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Supervised эсвэл Unsupervised

• Unsupervised Learning– Урьдчилсан боловсруулалт болон ангилан ялгаагүй дата(Түүхий

дата)-гаас ямар нэгэн түгээмэл онцлог шинжүүдийг машинаар өөрөөр нь олуулах .

Түүхий дата

Алгоритм

Машины олсон онцлог шинж чанарууд

Page 6: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Зорилго

• Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?Үүний тулд Supervised Learning дээр төвлөрч ярих болно.

Page 7: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

• Хүн нэг зурагнаас юу дүрслэгдсэн байгааг амархан ойлгож таних чадвартай боловч үүнийг машинаар хийлгэх боломжтой юу гэсэн асуулт өнөөг хүртэл тавигдсаар ирсэн билээ.

• Энэхүү асуултанд хариу өгөх Deep Learning-н талаар сурж мэдэцгээе.

Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Page 8: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Агуулга

• Тархи болон нейрон– Тархины талаар– Нейрон(мэдрэлийн эс)-н ажиллагаа

• Neural Network – Neural Network болон математик загварчлал– Convolutional Neural Network

Deep Learning нь тархины бүтэц болон үйл ажиллагаан дээр үндэслэгдсэн тул эхлээд тархины талаар жаахан судалъя.

Тархины талаар мэдлээ тэгвэл хиймэл тархины талаар

Page 9: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

• Тархины талаар– Тархины үйл ажиллагаа нь түүнийг бүрдүүлэгч олон тооны

мэдрэлийн эс нейроны үйл ажиллагаатай нягт холбоотой. – Нейрон бүр нь бусад нейронтой холбоосууд үүсгэж, үүсгэн

цахилгаан болон химийн мэдээлэл илгээдэг. Мөн нэг бүр нь маш нарийн төвөгтэй бүтэцтэй.

– Хулганы тархи 5 сая эсээс, сармагчны тархи 10 тэрбум эсээс, дөнгөж төрсөн хүүхдийн тархи 100 тэрбум эсээс бүрддэг байна.

Тархи болон нейрон

Page 10: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Нейрон• Нейрон

– Бичил цахилгаан гүйдэлд цочрох чадвартай эс– Мэдээллийг хүлээн авах, боловсруулах, дамжуулах үйл ажиллагаа

гүйцэтгэнэ

• Бүтцийн хувьд: – Их бие (сома) – Мэдээллийг хүлээн авах, нэгтгэн дүгнэх– Аксон – мэдээллийг бусад эс рүү дамжуулах– Дендрит хэсгүүдтэй – Мэдээллийг хүлээн авах гол үүрэгтэй.

Page 11: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

СинапсНейрон хооронд мэдээлэл дамжуулдаг бүтцийг синапс гэнэ. Синапсын өмнөх мэдрэлийн эсэд байрлах синапсын товгор нь синапсын арын мэдрэлийн эсийн дендрит эсвэл эсийн биед байх жижиг хонхорт залгагдснаар синапс бий болно.

Page 12: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Хеббийн хууль

“Нейрон дээрх синапсд өмнөх нейроны давтамжит ‘идэвхжилт’-ээс үүдэн тухайн нейронд цочрол үүссэн тохиолдолд тухайн синапсын мэдээлэл дамжуулах чадамж улам нэмэгдэнэ. Эсрэгээр удаан хугацаанд цочрол үүсэхгүй байвал синапсын мэдээлэл дамжуулах чадамж буурна.”Үүнийг хүний суралцах процесс хэлж болно :)

Доналд. О. Хебб:The Organization of Behavior (1949)

Page 13: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Нейрон хэзээ идэвхжихвэ?• Нейрон нь бусад мэдрэлийн эсээс ирэх сэрэл(импульс)-ийг хүлээн авч

идэвхжсэнээр тэрхүү импульсээ дараагийн нейронд дамжуулна. • Мөн дандаа дамжуулах бус нейронд тохиромжгүй импульсыг

дамжуулахаас сэргийлэх механизм бас бий.

Page 14: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Нейрон хэзээ идэвхжих вэ?• Нейроны ажиллагаа нь идэвхжих үү үгүй юу гэсэн 1 юм уу

0 гэсэн дижитал хэлбэрээр илэрхийлэгдэх боломжтой.

Идэвхжсэн синапсаас ирэх импульсын

хүчээс саатуулахүүрэгтэй синапсаас

ирэх импульсын хүчийг хассан утга нь

тодорхой утгаас их байвал нейрон

идэвхжинэ.

Адил импульс дамжуулагдсан ч нейрон доторх импульсын хүч нь синапсаас шалтгаалан харилцан адилгүй!

Page 15: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

• Нейроны идэвхжих нөхцөлийг математик хэлбэрт оруулбал:– Өдөөгдсөн синапсаас ирэх импульсын утга P– Саатуулах синапсаас ирэх импульсын утга M– Эцэст идэвхжих үгүйг шийдэх хязгаарын утга B

P – M > B идэвхжинэ.P – M < B идэвхжихгүй.

Нейрон хэзээ идэвхжих вэ?

Page 16: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

P : 3+3+0 = 6M: 2+0+2 = 4P – M = 2>1

B=1 гэвэл

Нейрон хэзээ идэвхжих вэ? Жишээлбэл

Нэг нейроны ажиллагааг математик хэлбэрээр илэрхийлж чадаж байгаа юм чинь олон тооны нейроны сүлжээг математик загварчлалд оруулж чадах юм биш үү?

Page 17: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Нейроны сүлжээг математик загварчлал руу

Муур

Тархи шиг олон тооны хиймэл нейроноос бүрдэх сүлжээг математик загварчлалд оруулж чадвал тооцоолон бодох машиныг(үүнээс хойш машин)ухаалаг болгож доорх зургийг оруулахад “муур ” гэж таньдаг болгох боломжтой болно.

Page 18: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Нейроны сүлжээг математик загварчлал руу

Үүнээс хойш тэгшитгэлийг хялбарчлахын тулд параметрүүд P болон М-г нэгтгэн Weight гээд Wi=[-2,3,-1,3,2,-2]B-н хасах утгыг bias гээд b=-1Импульсыг оролт болгон Xi=[1,0,1,0,1,1] гэж тэмдэглэх болно.

Page 19: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Олон нейрон байх тохиолдолд

X1

X2

X3

нейрон1W1 ・ XT + b1 > 0

нейрон2W2 ・ XT + b2 > 0

нейрон3W3 ・ XT + b3 > 0

Оролт X=[X1,X2,X3]

Weight W1=[W11,W12,W13]bias b1

Weight W2=[W21,W22,W23]bias b2

Weight W3=[W31,W32,W33]bias b3

W11X1+W12X2+W13X3+b1

W21X1+W22X2+W23X3+b2

W31X1+W32X2+W33X3+b3

Матриц хэлбэрт бичвэл

W11,W12,W13 X1    b1

W21,W22,W23 X2 + b2 =

W31,W32,W33 X3     b3

Үүнийг ч гэсэн W ・ XT + b хэлбэрээр илэрхийлж болно!

Page 20: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Олон нейроныг ашиглавал

X1

X2 Class A (y=1)

Class B (y=0)

• Олон нейроныг ашиглан доорх цэнхэр улаан элементүүдийг ялгаж үзье.

• Улаан шугаман зураас татах хэлбэрээр амархан ялгах боловч бодит амьдрал дээр ихэнх зүйлс шугаман бус

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

Page 21: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Activation function(хөрвүүлэгч функц)

Өмнөх тэгшитгэлүүдээс бид бүхэн дандаа шугаман функц ашиглаж ирсэн бол шугаман бус хэлбэр дүрсийг ялгахын тулд бидэнд шугаман бус үр дүн гаргах функц хэрэгтэй.

y= f(b+Σwnxn)

x1

x2

xm

.

.

. y

w1

w2

wm

b

f

Facebook-н лого? Function – ийн “f” шүү

Page 22: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Activation function(хөрвүүлэгч функц)

1 1 1

1 1 1

-1 -1 -1

Good for classification Simple computation Continuous & Differentiable

Threshold Function/ Hard Limiter Linear Function sigmoid Function

Түгээмэл ашиглагдаж буй хөрвүүлэгч функц

Page 23: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Олон давхаргат бүтэцтэй нейроны сүлжээ (Deep Neural Network:DNN)

X1

X2

X3

X4

H1

H2

H3

M1

M2

M3

M4

Y1

Y2

Одоо л нэг сүлжээ шиг харагдаж эхэллээ шүү!

Оролтын давхарга X=[X1,X2,X3...] Гаралтын давхарга

Y=[Y1,Y2,...]

W=[WXH, WHM, WHY] b=[bH, bM, bY]

WXH

Улам нарийвчлалыг сайжруулахын тулд улам олон үе давхаргатай загварчлал хэрэгтэй

Page 24: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Deep Neural Network

X1

X2

X3

X4

H1

H2

H3

M1

M2

M3

M4

Y1

Y2

Оролтын давхарга  

Гаралтын давхарга

Далд давхаргаОролт болон гаралтаас бусад давхаргыг далд давхарга гэе.

Page 25: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Энэ хүртэл

• Бид тархийг математик загварчлалд оруулж чадлаа. Одоо яах вэ?

Бодит амьдрал дээрх ойлгомжтой бөгөөд хэцүү асуудлыг хиймэл оюунаар шийдүүлж үзэцгээе. Жишээлбэл: Хүний бичсэн тоог доорх хэлбэрээр өгөгдсөн үед хиймэл оюун маань “1” гэж таниж чадах уу?

Page 26: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Бичмэл тоог таньдаг болгохын тулд эхлээд машиныг сургах хэрэгтэй!

Оролт 28x28 пиксел(=784 нейрон) хэмжээтэй маш олон тооны зургийг сургалтын дата болгон өгж тохиромжтой параметрүүдийг олно

28

28

Машиныг сургана гэдэг маань тохиромжит Weight, bias параметрүүдийг тооцоолж олох гэсэн үг. Үүний тулд эхлээд бидэнд маш их хэмжээний дата хэрэгтэй

Page 27: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Deep Neural Network –н тохиромжит параметрүүдийг олох аргачлал

• Backpropagation – NN-н гаралтын утгаас хамааран тохиромжтой weight, bias

параметрүүдийг олох

• Loss Function– Гаралт оролтын ялгаа буюу алдагдлыг илэрхийлэх ямар нэгэн функцан

илэрхийлэл. Хамгийн амархан жишээ: Дундаж квадрат алдаа

• Gradient Descent– Гаралт оролтын ялгааг хамгийн бага байлгахын тулд алдааны функцыг

ашиглан параметрүүдийг бага багаар өөрчлөн(суралцах) алдааны хамгийн бага утга руу дөхөх арга

Бүгдийнх талаар тайлбарлах гэвэл улам төвөгтэй болох тул энэ удаад маань хамгийн чухал Gradient Descent –н талаар Тайлбарлая. Улам мэдмээр байгаа бол google pls :)

Page 28: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Gradient DescentАлдагдлын функцийг J(w) гэсэн тохиолдолд w –н хувьд бага байх чиглэл рүү бага багаар w-г шинэчлэн явна. Доорх тохиолдолд α нь суралцах нэгж(Learning Rate) болно.

Энд Backpropagation ашиглан

-г амархан олох боломжтой

Page 29: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Gradient DescentБодит амьдрал дээр алдагдлын функц маань олон параметруудаас хамаарах тулалдагдлыг хамгийн бага байлгах параметруудыг олохгүй байх магадлал бий.

Хамгийн бага утга

Тодорхой муж дахь хамгийн бага утга

Page 30: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Бичмэл тоог таних

Оролт 28x28 пиксел (=784 нейрон) зураг

28

28 Гаралтын давхарга Y=[0,1,2, … 9]

15 нейрон бүхий далд давхарга

Энэ сүлжээний нарийвчлал 95%!

Тохиромжтой параметрүүдийг олж чадсан тохиолдолд

Page 31: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Гаралтын функц softmax

Softmax гаралтын функцын гаралтуудын нийлбэр 1 бөгөөд classification буюу тухайн оролтыг ангилах асуудлыг шийдэхэд түгээмэл ашиглагддаг. Softmax-с өөр функцууд мөн бий.

0.50.3 0.15 0.05

0 1 2 3 4 5 6 7 8 9

Нейроны үр дүнгээс 5 дах нейроны утга хамгийн их ба цифр маань 5 байх магадлалыг(50%) илэрхийлж байна гэж ойлгож болно. Түүнчлэн бусад үр дүнгээс харахад оролт маань 3 болон 6, 8 ялимгүй төстэй гэж хэлж болохоор байна.

Page 32: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Улам нарийвчлалыг сайжруулж чадах уу?

• Хэдийгээр бидний хийсэн загварчлал маань маш хүчирхэг боловч бүр илүү нарийвчлалыг дээшлүүлэх боломж бий.

Жишээлбэл доорх зургийг ажиглавал хүн бол баруун дээд өнцгөөс зүүн доод хэсэг рүү чиглэсэн онцлогийг төвөггүй анзаарна.

Эсрэгээр машин маань зөвхөн 1 пикселийг харж байгаа тул энэ онцлогийг анзааралгүй эцэстээ дүрсийг буруу таних магадлалтай!

Page 33: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Улам нарийвчлалыг сайжруулж чадах уу?

• Хүн биет юмсыг харахдаа зөвхөн нэг цэгийг бус хэсэг бүхлээр юмыг хардаг.

Үүнийг өөрсдийн загварчлалдаа оруулахын тулд Convolution filter(матриц филтер)-ийг зургийн тодорхой хэсэгт ашиглавал янз бүрийн ерөнхий онцлогуудыг мэдэх боломжтой болно

Convolution filter

Page 34: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Улам нарийвчлалыг сайжруулж чадах уу?

• Бодит зурган дээр филтер ашиглаж буй жишээ

Page 35: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Улам нарийвчлалыг сайжруулж чадах уу?

• Convolution filter ашигласан ч хэт их мэдээлэл агуулах тул Pooling(Оролт болсон датагийн хэмжээг багасгах) ашиглан улам ерөнхий онцлог болсон мэдээллийг ашиглах боломжтой

Жишээ : Max Pooling(2х2 хэмжээтэй матрицын хамгийн их утгыг хадгалж үлдэх)

Max Pooling

Тооцоолж олох параметрүүдийн тоог багасгах сайн талтай.

Page 36: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Улам нарийвчлалыг сайжруулж чадах уу?

• Эцэст нь Convolution filter давхаргаа оруулсан манай ерөнхий загварчлал маань

Page 37: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Алдартай Convolution Neural Network

• LeNet– Гараар бичигдсэн тоог 99%-с дээш нарийвцлалтайгаар таних

чадвартай

Page 38: Deep learning: Тооцоолон бодох машиныг яаж зураг ойлгодог болгох вэ?

Neural Network-ийг туршиж үзмээр байвал доорх сайтуудаар зочилж үзнэ үү.

• http://playground.tensorflow.org/• https://transcranial.github.io/keras-js/

Artificial Neural Network