ជម្រាល​ជម្រាល៖ បណ្តុំ និង​ការ​ធ្លាក់​ចុះ​ជម្រាល។ វិធីសាស្រ្តក្នុងការអភិវឌ្ឍន៍ផលិតផលកម្មវិធីដើម្បីស្វែងរកហេតុផលសម្រាប់ការផ្លាស់ប្តូរនិន្នាការទិន្នន័យ

កន្លែងណា f i – អនុគមន៍​ដែល​បាន​គណនា​លើ​ក្រុម i-th, ខ្ញុំ​ត្រូវ​បាន​ជ្រើស​រើស​ដោយ​ចៃដន្យ;

ជំហានសិក្សាគឺ hyperparameter; ប្រសិនបើតម្លៃធំពេក ក្បួនដោះស្រាយការរៀននឹងខុសគ្នា ប្រសិនបើតម្លៃតូចពេក វានឹងបង្រួបបង្រួមបន្តិចម្តងៗ។

ការចុះជម្រាល Stochastic ជាមួយនឹងនិចលភាព

នៅក្នុងវិធីសាស្រ្ត stochastic gradient descent method វាមិនមែនជារឿងចម្លែកទេសម្រាប់ gradient ដែលត្រូវផ្លាស់ប្តូរទៅជាវិសាលភាពធំនៅពេលធ្វើម្តងទៀតនីមួយៗ។ នេះគឺដោយសារតែការពិតដែលថាមុខងារត្រូវបានគណនាលើទិន្នន័យផ្សេងៗដែលអាចមានភាពខុសគ្នាខ្លាំង។ ការផ្លាស់ប្តូរនេះអាចត្រូវបានធ្វើឱ្យរលូនដោយប្រើជម្រាលដែលបានគណនានៅក្នុងការធ្វើឡើងវិញមុន និងធ្វើមាត្រដ្ឋានដោយ inertia hyperparameter μ:

(14)
(15)

ដូចដែលអ្នកអាចទាយបាន អាំងតេក្រាលអតិផរណាអ៊ីដ្រូសែន μ មានឈ្មោះនេះដោយសារតែការពិតដែលហៅថា កម្លាំងនិចលភាពញូតុន ពោលគឺឧ។ កម្លាំងប្រឆាំង "ទប់ទល់" ការផ្លាស់ប្តូរនៅក្នុងជម្រាល និងកាត់បន្ថយការផ្លាស់ប្តូរនៃមេគុណទម្ងន់ក្នុងអំឡុងពេលហ្វឹកហាត់។ ក្បួនដោះស្រាយការរៀននេះត្រូវបានគេហៅថា stochastic gradient descent ជាមួយនឹងសន្ទុះ ឬ SGDM (stochastic gradient descent with momentum)។

វិធីសាស្រ្តជម្រាលអាដាប់ធ័រ

វិធីសាស្រ្តជម្រាលអាដាប់ធ័រ (Adagrad - មកពីភាសាអង់គ្លេស "ក្បួនដោះស្រាយជម្រាលអាដាប់ធ័រ") គឺផ្អែកលើគំនិតនៃការធ្វើមាត្រដ្ឋាន។ វាធ្វើមាត្រដ្ឋានឡើងវិញនូវអត្រាសិក្សាសម្រាប់ប៉ារ៉ាម៉ែត្រដែលអាចលៃតម្រូវបាននីមួយៗដោយឡែកពីគ្នា ខណៈពេលដែលយកទៅក្នុងគណនីប្រវត្តិនៃជម្រាលអតីតកាលទាំងអស់សម្រាប់ប៉ារ៉ាម៉ែត្រនោះ។ ដើម្បីធ្វើដូចនេះធាតុជម្រាលនីមួយៗត្រូវបានបែងចែកដោយឫសការ៉េនៃផលបូកនៃការ៉េនៃធាតុជម្រាលដែលត្រូវគ្នាពីមុន។ វិធីសាស្រ្តនេះមានប្រសិទ្ធភាពកាត់បន្ថយអត្រាសិក្សាសម្រាប់ទម្ងន់ទាំងនោះដែលមានតម្លៃជម្រាលធំ ហើយថែមទាំងកាត់បន្ថយអត្រាសិក្សាសម្រាប់ប៉ារ៉ាម៉ែត្រទាំងអស់តាមពេលវេលាផងដែរ ដោយសារផលបូកនៃការ៉េកើនឡើងជាលំដាប់សម្រាប់ប៉ារ៉ាម៉ែត្រទាំងអស់ជាមួយនឹងការធ្វើម្តងទៀតនីមួយៗ។ នៅពេលកំណត់ប៉ារ៉ាម៉ែត្រមាត្រដ្ឋានដំបូងសូន្យ g = 0 រូបមន្តសម្រាប់គណនាមេគុណទម្ងន់មានទម្រង់ (ការបែងចែកត្រូវបានអនុវត្តធាតុដោយធាតុ) ។

ជម្រាល stochastic ត្រូវបានប៉ាន់ស្មានដោយរូបមន្ត៖

i.e. វាគឺជាផលបូកនៃវ៉ិចទ័រចៃដន្យទាំងអស់ដែលមានទម្ងន់ស្មើនឹងការបង្កើនមុខងារដែលត្រូវបានបង្រួមអប្បបរមាក្នុងទិសដៅចៃដន្យដែលបានផ្តល់ឱ្យ។

ប្រសិនបើយើងយកវ៉ិចទ័រឯកតាជាប៉ារ៉ាម៉ែត្រ នោះការប៉ាន់ប្រមាណនេះសម្រាប់ ដូចដែលអាចមើលឃើញយ៉ាងងាយស្រួលពី (3.3.22) ផ្តល់តម្លៃពិតប្រាកដនៃជម្រាល។

ការប៉ាន់ប្រមាណកម្រិតពណ៌ដែលបានពិពណ៌នាទាំងពីរអាចត្រូវបានប្រើយ៉ាងមានប្រសិទ្ធភាពសម្រាប់តម្លៃណាមួយ រួមទាំង និងដែលបែងចែកវាយ៉ាងសំខាន់ពីវិធីសាស្ត្រប៉ាន់ស្មានកំណត់ (3.3.22) ដែលកាលៈទេសៈដូចគ្នានេះបញ្ជាក់យ៉ាងតឹងរ៉ឹងថាវិធីសាស្ត្រកំណត់ត្រូវបានកំណត់ជាទូទៅទៅជាចៃដន្យ (សូមមើលចុងបញ្ចប់នៃ ផ្នែករង 3.3.1) ។ ចូរយើងផ្តល់ឧទាហរណ៍មួយទៀតនៃការធ្វើទូទៅបែបនេះ។

ការស្វែងរកតាមជម្រាល (3.3.21) គឺជាករណីពិសេសនៃក្បួនដោះស្រាយការស្វែងរកចៃដន្យយ៉ាងហោចណាស់ពីរ។ ក្បួនដោះស្រាយដំបូង៖

ដែលជាកន្លែងដែលនៅតែជាវ៉ិចទ័រចៃដន្យ -dimensional ឯកតា។ នេះ​ជា​ក្បួន​ដោះស្រាយ​ការ​ស្វែងរក​ដោយ​ចៃដន្យ​តាម​ជម្រាល​ដ៏ល្បី។ ក្បួនដោះស្រាយទីពីរមានទម្រង់ (3.3.23) ប៉ុន្តែការប៉ាន់ប្រមាណជម្រាលត្រូវបានគណនាដោយប្រើរូបមន្ត

នៅពេលដែលវាងាយស្រួលមើល ក្បួនដោះស្រាយទាំងពីរនេះ degenerate ទៅជា gradient search algorithm (3.3.21)។

ដូច្នេះ ការស្វែងរកដោយចៃដន្យគឺជាផ្នែកបន្ថែមធម្មជាតិ ការបន្ត និងការធ្វើឱ្យទូទៅនៃវិធីសាស្រ្តស្វែងរកធម្មតាដែលគេស្គាល់។

លក្ខណៈពិសេសមួយទៀតនៃការស្វែងរកដោយចៃដន្យ ដែលបើកលទ្ធភាពធំទូលាយសម្រាប់ការប្រើប្រាស់ប្រកបដោយប្រសិទ្ធភាពគឺការប្រើប្រាស់នៃប្រតិបត្តិករជំហានចៃដន្យជាគំរូ stochastic នៃប្រតិបត្តិករធម្មតាស្មុគស្មាញសម្រាប់ការស្វែងរកទិសដៅស្វែងរកក្នុងចន្លោះនៃប៉ារ៉ាម៉ែត្រដែលបានធ្វើឱ្យប្រសើរ។

ដូច្នេះ ក្បួនដោះស្រាយការស្វែងរកដោយចៃដន្យជាមួយនឹងយុទ្ធសាស្ត្រលីនេអ៊ែរ (3.3.12) គឺជាគំរូ stochastic នៃក្បួនដោះស្រាយការចុះចតដ៏ចោតបំផុត៖

ដែលនៅក្នុងគំរូវ៉ិចទ័រចៃដន្យ ប៉ាន់ប្រមាណជម្រាល។ វាជាការចង់ដឹងចង់ឃើញដែលថា "ការប៉ាន់ប្រមាណ" បែបនេះមិនអាចត្រូវបានគេហៅថារដុបទេចាប់តាំងពីលក្ខណៈសម្បត្តិ stochastic របស់វាមិនស្រដៀងនឹងលក្ខណៈសម្បត្តិនៃជម្រាលដែលបានប៉ាន់ប្រមាណ។ ទោះជាយ៉ាងណាក៏ដោយ ដូចដែលបានបង្ហាញខាងលើ ក្បួនដោះស្រាយការស្វែងរកដោយចៃដន្យមិនត្រឹមតែមានប្រសិទ្ធភាពប៉ុណ្ណោះទេ ប៉ុន្តែក្នុងករណីខ្លះវាមានប្រសិទ្ធភាពជាងក្បួនដោះស្រាយការចុះចតដ៏ចោតបំផុត។ នៅទីនេះ

ប្រតិបត្តិករជំហានចៃដន្យជំនួសប្រតិបត្តិករប៉ាន់ប្រមាណជម្រាលដ៏លំបាក ឧទាហរណ៍ យោងតាមរូបមន្ត (3.3.22)។

លក្ខណៈពិសេសបន្ទាប់នៃការស្វែងរកដោយចៃដន្យដែលសម្គាល់វាដោយអនុគ្រោះពីវិធីសាស្ត្រធម្មតាគឺភាពជាសកលរបស់វា ដែលបង្ហាញឱ្យឃើញដោយខ្លួនវាផ្ទាល់នៅក្នុងក្បួនដោះស្រាយការស្វែងរកចៃដន្យក្នុងតំបន់ដែលមិនមានបំណងស្វែងរកភាពជ្រុលនិយមជាសកល។ ដូច្នេះ ក្បួនដោះស្រាយការចុះចូលដោយចៃដន្យអាចរកឃើញភាពជ្រុលនិយមជាសកល ប៉ុន្តែជាគោលការណ៍នៃក្បួនដោះស្រាយការចុះចុះដ៏ចោតបំផុតធម្មតា មិនអនុញ្ញាតឱ្យមានលទ្ធភាពនេះទេ ព្រោះវាត្រូវបានបង្កើតឡើងដើម្បីស្វែងរកភាពជ្រុលនិយមក្នុងតំបន់។

ដូច្នេះហើយ លក្ខណៈសកលនៃក្បួនដោះស្រាយការស្វែងរកដោយចៃដន្យគឺជាប្រភេទនៃ "បុព្វលាភ" សម្រាប់ការប្រើប្រាស់ចៃដន្យ និងអ្វីមួយដូចជា "កម្មវិធីឥតគិតថ្លៃ" ទៅនឹងក្បួនដោះស្រាយ។ កាលៈទេសៈនេះមានសារៈសំខាន់ជាពិសេសនៅពេលការបង្កើនប្រសិទ្ធភាពវត្ថុជាមួយនឹងរចនាសម្ព័ន្ធមិនស្គាល់ នៅពេលដែលមិនមានទំនុកចិត្តទាំងស្រុងលើលក្ខណៈនៃបញ្ហាតែមួយ និងវត្តមាននៃ extrema ជាច្រើនអាចធ្វើទៅបាន (ទោះបីជាមិនរំពឹងទុកក៏ដោយ) ។ ការប្រើវិធីសាស្រ្តស្វែងរកសកលក្នុងករណីនេះនឹងក្លាយជាកាកសំណល់មិនសមហេតុផល។ វិធីសាស្រ្តស្វែងរកដោយចៃដន្យក្នុងតំបន់គឺសមស្របបំផុតនៅទីនេះ ព្រោះវាមានប្រសិទ្ធភាពដោះស្រាយបញ្ហាក្នុងតំបន់ ហើយជាគោលការណ៍អាចដោះស្រាយសកលមួយប្រសិនបើមានកើតឡើង។ នេះផ្តល់នូវការស្វែងរកដោយចៃដន្យជាមួយនឹងប្រភេទនៃភាពជឿជាក់ខាងផ្លូវចិត្តដែលត្រូវបានវាយតម្លៃខ្ពស់ដោយអ្នកប្រើប្រាស់។

ភាពសាមញ្ញនៃក្បួនដោះស្រាយនៃការស្វែងរកដោយចៃដន្យធ្វើឱ្យវាមានភាពទាក់ទាញជាចម្បងចំពោះអ្នកប្រើប្រាស់។ បទពិសោធន៍បង្ហាញថា ក្បួនដោះស្រាយការស្វែងរកដោយចៃដន្យដែលគេស្គាល់គឺគ្រាន់តែជា "ផ្ទាំងក្រណាត់" ដែលអ្នកប្រើប្រាស់ ក្នុងករណីជាក់លាក់នីមួយៗ "លំនាំប៉ាក់" នៃក្បួនដោះស្រាយថ្មីដែលឆ្លុះបញ្ចាំងមិនត្រឹមតែចំណង់ចំណូលចិត្ត និងទំនោររបស់គាត់ (ដែលមិនអាចមិនអើពើបាន) ប៉ុន្តែក៏មានលក្ខណៈពិសេសផងដែរ។ នៃវត្ថុដែលកំពុងត្រូវបានធ្វើឱ្យប្រសើរ។ ក្រោយមកទៀតបង្កើតមូលដ្ឋានអំណោយផលសម្រាប់ការអនុវត្តគោលការណ៍ល្បីដែលថាក្បួនដោះស្រាយគួរតែត្រូវបានរចនា "សម្រាប់វត្ថុ" ។ ជាចុងក្រោយ ភាពសាមញ្ញនៃក្បួនដោះស្រាយនៃការស្វែងរកដោយចៃដន្យកំណត់ភាពសាមញ្ញនៃការអនុវត្តផ្នែករឹងរបស់វា។ នេះមិនត្រឹមតែធ្វើឱ្យវាអាចបង្កើតកម្មវិធីបង្កើនប្រសិទ្ធភាពសាមញ្ញ បង្រួម និងអាចជឿទុកចិត្តបានជាមួយនឹងចំនួនប៉ារ៉ាម៉ែត្រដែលបង្កើនប្រសិទ្ធភាពគ្មានដែនកំណត់ប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងធ្វើឱ្យវាសាមញ្ញក្នុងការរៀបចំការសំយោគដ៏ល្អប្រសើររបស់ពួកគេនៅលើកុំព្យូទ័រផងដែរ។

ការបញ្ជូនការងារល្អរបស់អ្នកទៅកាន់មូលដ្ឋានចំណេះដឹងគឺងាយស្រួល។ ប្រើទម្រង់ខាងក្រោម

សិស្សានុសិស្ស និស្សិតបញ្ចប់ការសិក្សា អ្នកវិទ្យាសាស្ត្រវ័យក្មេង ដែលប្រើប្រាស់មូលដ្ឋានចំណេះដឹងក្នុងការសិក្សា និងការងាររបស់ពួកគេ នឹងដឹងគុណអ្នកជាខ្លាំង។

បង្ហោះនៅលើ http://www.allbest.ru/

ក្រសួងអប់រំនិងវិទ្យាសាស្ត្រនៃសហព័ន្ធរុស្ស៊ី

ស្ថាប័នអប់រំស្វយ័តរដ្ឋសហព័ន្ធ

ការអប់រំខ្ពស់។

"សាកលវិទ្យាល័យសហព័ន្ធ KAZAN (VOLGA)"

វិទ្យាល័យនៃបច្ចេកវិទ្យាព័ត៌មាន និងប្រព័ន្ធព័ត៌មាន

វគ្គសិក្សា

ការចុះជម្រាល Stochastic ។ ជម្រើសនៃការអនុវត្ត

សេចក្តីផ្តើម

ជម្រាលជម្រាលគឺជាវិធីសាស្រ្តនៃការស្វែងរកកម្រិតខ្លាំងក្នុងតំបន់ (អប្បបរមា ឬអតិបរមា) នៃមុខងារដោយផ្លាស់ទីតាមជម្រាលមួយ។

ក្នុងចំណោមវិធីសាស្រ្តបង្កើនប្រសិទ្ធភាពក្នុងស្រុកទាំងអស់ វាជាការងាយស្រួលបំផុតក្នុងការអនុវត្ត។ វាមានលក្ខខណ្ឌ convergence ខ្សោយ ប៉ុន្តែអត្រា convergence គឺទាបណាស់។

ការចុះជម្រាលជម្រាលគឺជាក្បួនដោះស្រាយដ៏ពេញនិយមសម្រាប់ម៉ូដែលសិក្សាម៉ាស៊ីនដ៏ធំទូលាយ រួមទាំងម៉ាស៊ីនវ៉ិចទ័រគាំទ្រ ការតំរែតំរង់ផ្នែកដឹកជញ្ជូន និងគំរូក្រាហ្វិក។ រួមបញ្ចូលគ្នាជាមួយក្បួនដោះស្រាយ backpropagation វាគឺជាក្បួនដោះស្រាយស្តង់ដារសម្រាប់ការបណ្តុះបណ្តាលបណ្តាញសរសៃប្រសាទសិប្បនិម្មិត។ Stochastic gradient descent ប្រកួតប្រជែងជាមួយ L-BFGS algorithm ដែលត្រូវបានគេប្រើយ៉ាងទូលំទូលាយផងដែរ។ Stochastic gradient descent ត្រូវបានប្រើប្រាស់តាំងពីឆ្នាំ 1960 ដើម្បីបណ្តុះបណ្តាលគំរូតំរែតំរង់លីនេអ៊ែរ ដែលដំបូងឡើយក្រោមឈ្មោះ Adaline ។

គោលបំណងនៃការងារវគ្គសិក្សានេះគឺដើម្បីពិចារណាលើការអនុវត្តជម្រើសជាច្រើនសម្រាប់ការបន្តពូជជម្រាល stochastic ការប្រៀបធៀបជាបន្តបន្ទាប់របស់ពួកគេ និងការបញ្ជាក់ពីគុណសម្បត្តិ និងគុណវិបត្តិ។

1. Stochastic gradient descent

Stochastic gradient descent គឺជាក្បួនដោះស្រាយបង្កើនប្រសិទ្ធភាព ហើយជារឿយៗត្រូវបានប្រើដើម្បីលៃតម្រូវប៉ារ៉ាម៉ែត្រនៃគំរូសិក្សាម៉ាស៊ីន។

ជម្រាលជម្រាលស្តង់ដារប្រើជម្រាលដើម្បីផ្លាស់ប្តូរប៉ារ៉ាម៉ែត្រគំរូ។ ជម្រាលត្រូវបានគណនាជាធម្មតាជាផលបូកនៃជម្រាលដែលបណ្តាលមកពីធាតុហ្វឹកហាត់នីមួយៗ។ វ៉ិចទ័រប៉ារ៉ាម៉ែត្រផ្លាស់ប្តូរក្នុងទិសដៅនៃអង្គបដិប្រាណជាមួយនឹងជំហានដែលបានផ្តល់ឱ្យ។ ដូច្នេះ ការ​ចុះ​ជម្រាល​តាម​ស្តង់ដារ​តម្រូវ​ឱ្យ​មាន​ការ​ឆ្លង​កាត់​ទិន្នន័យ​បណ្ដុះបណ្ដាល​មុន​ពេល​ដែល​វា​អាច​ផ្លាស់ប្ដូរ​ប៉ារ៉ាម៉ែត្រ។

នៅក្នុង stochastic gradient descent តម្លៃនៃ gradient ត្រូវបានប៉ាន់ស្មានដោយ gradient នៃ function cost ដែលគណនាលើធាតុហ្វឹកហាត់តែមួយប៉ុណ្ណោះ។ បន្ទាប់មកប៉ារ៉ាម៉ែត្រត្រូវបានផ្លាស់ប្តូរតាមសមាមាត្រទៅនឹងជម្រាលប្រហាក់ប្រហែល។ ដូច្នេះប៉ារ៉ាម៉ែត្រគំរូត្រូវបានផ្លាស់ប្តូរបន្ទាប់ពីវត្ថុសិក្សានីមួយៗ។ សម្រាប់សំណុំទិន្នន័យធំ ការចុះជម្រាលជម្រាល stochastic អាចផ្តល់នូវអត្ថប្រយោជន៍ល្បឿនដ៏សំខាន់ជាងការចុះជម្រាលស្តង់ដារ។

មានការសម្របសម្រួលគ្នារវាងប្រភេទជម្រាលពីរប្រភេទនេះ ដែលជួនកាលគេហៅថា "ឈុតតូច"។ ក្នុងករណីនេះជម្រាលត្រូវបានប៉ាន់ប្រមាណដោយផលបូកសម្រាប់គំរូហ្វឹកហាត់មួយចំនួនតូច។

1.1 តម្រូវការជាមុន

ការប៉ាន់ប្រមាណស្ថិតិ និងការរៀនម៉ាស៊ីនពិចារណាពីបញ្ហានៃការបង្រួមអប្បបរមាមុខងារ ដែលមានទម្រង់៖

កន្លែងដែលប៉ារ៉ាម៉ែត្រដែលកាត់បន្ថយត្រូវតែត្រូវបានប៉ាន់ប្រមាណ។ ពាក្យនីមួយៗជាធម្មតាត្រូវបានភ្ជាប់ជាមួយនឹងការសង្កេត i-th នៅក្នុងសំណុំទិន្នន័យ (ប្រើសម្រាប់ការបណ្តុះបណ្តាល)។

នៅក្នុងស្ថិតិបុរាណ បញ្ហានៃការបង្រួមអប្បបរមាកើតឡើងនៅក្នុងវិធីសាស្រ្តការេតិចបំផុត ក៏ដូចជានៅក្នុងវិធីសាស្រ្តលទ្ធភាពអតិបរមា (សម្រាប់ការសង្កេតឯករាជ្យ)។ ថ្នាក់ទូទៅនៃការប៉ាន់ប្រមាណដែលកើតចេញពីការបង្រួមអប្បបរមាត្រូវបានគេហៅថា M-estimator ។ ទោះជាយ៉ាងណាក៏ដោយ នៅក្នុងស្ថិតិ វាត្រូវបានទទួលស្គាល់ជាយូរមកហើយថា តម្រូវការនៃការបង្រួមអប្បបរមាក្នុងតំបន់គឺរឹតត្បិតពេកសម្រាប់បញ្ហាប៉ាន់ស្មានលទ្ធភាពអតិបរមាមួយចំនួន។ ដូច្នេះ ទ្រឹស្ដីស្ថិតិសម័យទំនើបតែងតែពិចារណាចំណុចស្ថានីលើមុខងារលទ្ធភាព (សូន្យនៃដេរីវេ មុខងារប៉ាន់ស្មាន និងសមីការប៉ាន់ប្រមាណផ្សេងទៀត)។

បញ្ហានៃការបង្រួមអប្បបរមាក៏កើតឡើងផងដែរក្នុងការកាត់បន្ថយហានិភ័យជាក់ស្តែង។ ក្នុងករណីនេះ នេះគឺជាតម្លៃនៃមុខងារបាត់បង់សម្រាប់ i-set និងហានិភ័យជាក់ស្តែង។

នៅពេលបង្រួមអប្បបរមាមុខងារ ស្តង់ដារ (ឬ "បាច់") ជម្រាលជម្រាលនឹងអនុវត្តការបន្តបន្ទាប់ដូចខាងក្រោមៈ

តើទំហំជំហាននៅឯណា (ជួនកាលគេហៅថា អត្រារៀននៅក្នុងម៉ាស៊ីនរៀន)។

ក្នុងករណីជាច្រើន អនុគមន៍ summand មានគំរូសាមញ្ញមួយដែលពាក់ព័ន្ធនឹងការគណនាសាមញ្ញនៃអនុគមន៍ផលបូក និងផលបូកនៃជម្រាល។ ជាឧទាហរណ៍ នៅក្នុងស្ថិតិ គ្រួសារអិចស្ប៉ូណង់ស្យែលដែលមានប៉ារ៉ាម៉ែត្រមួយអនុញ្ញាតឱ្យមានការគណនាសន្សំសំចៃនៃមុខងារ និងជម្រាល។

ទោះយ៉ាងណាក៏ដោយ ក្នុងករណីផ្សេងទៀត ការប៉ាន់ប្រមាណជម្រាលសរុបអាចតម្រូវឱ្យមានការប៉ាន់ប្រមាណតម្លៃថ្លៃនៃជម្រាលពីមុខងារពាក្យទាំងអស់។ នៅពេលដែលសំណុំហ្វឹកហ្វឺនមានទំហំធំ ហើយមិនមានរូបមន្តសាមញ្ញទេ ការប៉ាន់ប្រមាណផលបូកនៃជម្រាលនឹងមានតម្លៃថ្លៃណាស់ ពីព្រោះការប៉ាន់ប្រមាណពណ៌ជម្រាលទាមទារឱ្យប៉ាន់ស្មានជម្រាលទាំងអស់នៃមុខងារដោយ summand ។ ដើម្បីសន្សំលើការចំណាយលើការគណនានៅពេលធ្វើម្តងទៀតនីមួយៗ នៅក្នុងការចុះជម្រាល stochastic គំរូគឺជាសំណុំរងនៃមុខងារនៃពាក្យនៅជំហាននីមួយៗ។ វាមានប្រសិទ្ធភាពណាស់ក្នុងករណីមានបញ្ហារៀនម៉ាស៊ីនខ្នាតធំ។

1.2 វិធីសាស្រ្តដដែលៗ

នៅក្នុងការចុះជម្រាល stochastic ជម្រាលពិតត្រូវបានប៉ាន់ប្រមាណដោយជម្រាលនៅក្នុងឧទាហរណ៍នេះ៖

នៅពេលដែលក្បួនដោះស្រាយប្រញាប់ប្រញាល់តាមរយៈសំណុំហ្វឹកហាត់ វាដំណើរការការអាប់ដេតខាងលើសម្រាប់ឧទាហរណ៍ហ្វឹកហាត់នីមួយៗ។ ការឆ្លងកាត់ជាច្រើនអាចត្រូវបានធ្វើឡើងលើសំណុំហ្វឹកហាត់រហូតដល់ក្បួនដោះស្រាយបញ្ចូលគ្នា។ ទិន្នន័យអាចត្រូវបានសាប់សម្រាប់ការឆ្លងកាត់នីមួយៗដើម្បីការពាររង្វិលជុំ។ ការអនុវត្តធម្មតាអាចប្រើអត្រាសិក្សាដែលប្រែប្រួល ដើម្បីឱ្យក្បួនដោះស្រាយបញ្ចូលគ្នា។

នៅក្នុង pseudocode, stochastic gradient descent អាចត្រូវបានតំណាងដូចខាងក្រោម:

1) ជ្រើសរើសវ៉ិចទ័រប៉ារ៉ាម៉ែត្រដំបូងនិងអត្រាសិក្សា។

2) ធ្វើម្តងទៀតរហូតដល់អប្បបរមាគឺប្រហែលទទួលបាន:

2.1) ចៃដន្យសាប់ឧទាហរណ៍នៅក្នុងសំណុំបណ្តុះបណ្តាល។

2.2) សម្រាប់ i = 1,2,...,n, do:

ការបង្រួបបង្រួមនៃជម្រាលជម្រាល stochastic ត្រូវបានវិភាគដោយប្រើទ្រឹស្ដីនៃការបង្រួមអប្បបរមានៃប៉ោង និងការប៉ាន់ស្មាន stochastic ។ នៅពេលដែលអត្រាសិក្សាធ្លាក់ចុះក្នុងអត្រាសមស្របមួយ ហើយស្ថិតក្រោមការសន្មត់ខ្សោយ ការចុះជម្រាល stochastic ឈានដល់កម្រិតអប្បបរមាជាសកល នៅពេលដែលមុខងារមានរាងប៉ោង ឬ pseudoconvex ហើយបើមិនដូច្នេះទេវាប្រែទៅជាអប្បបរមាក្នុងតំបន់។

1.3 ជម្រើសនៃការអនុវត្ត

ការកែលម្អជាច្រើនត្រូវបានស្នើឡើង និងប្រើប្រាស់លើវិធីសាស្រ្តមូលដ្ឋាននៃជម្រាលជម្រាល stochastic ។ ជាពិសេសនៅក្នុងការរៀនម៉ាស៊ីន តម្រូវការដើម្បីកំណត់អត្រាសិក្សា (ទំហំជំហាន) ត្រូវបានរកឃើញថាមានបញ្ហា។

ប្រសិនបើអ្នកកំណត់ប៉ារ៉ាម៉ែត្រនេះធំពេក វាអាចបណ្តាលឱ្យក្បួនដោះស្រាយខុសគ្នា។ ប្រសិនបើវាជាមធ្យោបាយផ្សេងទៀត នោះក្បួនដោះស្រាយនឹងបង្រួបបង្រួមយឺតៗ។

ការបន្ថែមដ៏សាមញ្ញតាមគំនិតនៃការចុះជម្រាល stochastic ធ្វើឱ្យអត្រាសិក្សាមានការថយចុះអាស្រ័យលើចំនួននៃការធ្វើឡើងវិញ m ។

ដោយបានធ្វើប្រតិបត្តិការនេះ វាច្បាស់ណាស់ថាការធ្វើម្តងទៀតដំបូងបណ្តាលឱ្យមានការផ្លាស់ប្តូរដ៏ធំនៅក្នុងប៉ារ៉ាម៉ែត្រ ខណៈពេលដែលអ្នកក្រោយៗទៀតធ្វើការកែតម្រូវតែប៉ុណ្ណោះ។

នៅក្នុងក្របខ័ណ្ឌនៃការងារនេះ ជម្រើសខាងក្រោមសម្រាប់ការអនុវត្តជម្រាលជម្រាល stochastic នឹងត្រូវបានពិចារណា៖

1. 4 សន្ទុះ

Momentum ដែលត្រូវបានគេស្គាល់ថាជាវិធីសាស្ត្រសន្ទុះ មានប្រភពមកពីអ្នកចិត្តសាស្រ្តជនជាតិអាមេរិក David Ramelhart ក៏ដូចជាពីការងាររបស់ Geoffrey Hinton និង Ronald J William ការសិក្សាអំពីវិធីសាស្ត្រ backpropagation ។ Stochastic gradient descent ជាមួយនឹងសន្ទុះចងចាំការអាប់ដេតនៅពេលធ្វើម្តងទៀតនីមួយៗ ហើយកំណត់ការអាប់ដេតបន្ទាប់ជាការរួមបញ្ចូលគ្នាលីនេអ៊ែរនៃជម្រាល និងការធ្វើបច្ចុប្បន្នភាពពីមុន៖

ដែលនាំទៅដល់៖

ដែលប៉ារ៉ាម៉ែត្រដែលកាត់បន្ថយត្រូវតែត្រូវបានប៉ាន់ប្រមាណ និងទំហំជំហាន (ជួនកាលគេហៅថា អត្រារៀននៅក្នុងម៉ាស៊ីនរៀន)។

ឈ្មោះ impulse បានមកពីការប្រៀបធៀបជាមួយ impulse នៅក្នុងរូបវិទ្យា: វ៉ិចទ័រទម្ងន់។ គំនិតដែលថាចលនានៃចំណុចសម្ភារៈមួយតាមរយៈលំហប៉ារ៉ាម៉ែត្ររួមបញ្ចូលការបង្កើនល្បឿនដោយសារតែកម្លាំង ដែលជាជម្រាលការបាត់បង់។

មិនដូចវិធីសាស្ត្រចុះជម្រាល stochastic បុរាណទេ វាមានទំនោររក្សាចលនាក្នុងទិសដៅតែមួយ ការពារការយោល។ សន្ទុះត្រូវបានប្រើប្រាស់ដោយជោគជ័យជាច្រើនទសវត្សរ៍មកហើយ។

1.5 អាដាហ្គ្រាដ

AdaGrad គឺជាការកែប្រែជម្រាល stochastic ជាមួយនឹងប៉ារ៉ាម៉ែត្រនៃអត្រាសិក្សា បោះពុម្ពលើកដំបូងក្នុងឆ្នាំ 2011។ ក្រៅផ្លូវការ វាបង្កើនអត្រាសិក្សាសម្រាប់ប៉ារ៉ាម៉ែត្រដែលមិនសូវល្អិតល្អន់ និងបន្ថយអត្រាសិក្សាសម្រាប់អ្នកដែលមិនសូវមាន។ យុទ្ធសាស្រ្តនេះច្រើនតែធ្វើអោយប្រសើរឡើងនូវលទ្ធភាពនៃការបញ្ចូលគ្នាបើប្រៀបធៀបទៅនឹងស្តង់ដារស្តង់ដារ stochastic gradient descent algorithm នៅកន្លែងដែលទិន្នន័យមិនសូវច្បាស់ ហើយប៉ារ៉ាម៉ែត្រ sparse គឺផ្តល់ព័ត៌មានច្រើនជាង។

ឧទាហរណ៍នៃកម្មវិធីបែបនេះរួមមានដំណើរការភាសាធម្មជាតិ និងការទទួលស្គាល់លំនាំ។

វានៅតែមានមូលដ្ឋានអត្រាសិក្សា ប៉ុន្តែត្រូវបានគុណដោយធាតុនៃវ៉ិចទ័រដែលជាអង្កត់ទ្រូងនៃផលិតផល tensor នៃម៉ាទ្រីស។

តើ​ជម្រាល​នៅ​កន្លែង​ណា​ដែល​ការ​ធ្វើ​ឡើងវិញ m ។

អង្កត់ទ្រូងត្រូវបានបញ្ជាក់ដូចជា៖

វ៉ិចទ័រត្រូវបានធ្វើបច្ចុប្បន្នភាពបន្ទាប់ពីការធ្វើម្តងទៀតនីមួយៗ។ រូបមន្តធ្វើបច្ចុប្បន្នភាពឥឡូវនេះមើលទៅដូចនេះ៖

ឬសរសេរជាការអាប់ដេតប៉ារ៉ាម៉ែត្របឋម

នីមួយៗបង្កើនវិសាលភាពនៃកត្តាអត្រាសិក្សាដែលត្រូវបានអនុវត្តចំពោះប៉ារ៉ាម៉ែត្រតែមួយ។

ដោយសារភាគបែងគឺជាបទដ្ឋាន Euclidean នៃនិស្សន្ទវត្ថុមុនៗ តម្លៃរឹមនៃប៉ារ៉ាម៉ែត្រអាប់ដេតត្រូវបានរឹតបន្តឹង ខណៈដែលប៉ារ៉ាម៉ែត្រដែលមានការអាប់ដេតតូចៗទទួលបានកម្រិតសិក្សាខ្ពស់ជាង។

ខណៈពេលដែលការងារកំពុងត្រូវបានធ្វើនៅលើបញ្ហាបង្កើនប្រសិទ្ធភាពប៉ោង AdaGrad ត្រូវបានអនុវត្តដោយជោគជ័យចំពោះបញ្ហាបង្កើនប្រសិទ្ធភាពដែលមិនប៉ោង។

1.6 RMProp

RMProp ក៏ជាវិធីសាស្រ្តមួយដែលអត្រាសិក្សាត្រូវបានកែសម្រួលសម្រាប់ប៉ារ៉ាម៉ែត្រនីមួយៗ។ គំនិតនេះគឺដើម្បីបែងចែកអត្រាសិក្សាសម្រាប់ទម្ងន់ជាក់លាក់មួយដោយការផ្លាស់ប្តូរមធ្យមនៃជម្រាលចុងក្រោយបំផុតសម្រាប់ទម្ងន់នោះ។ ដូច្នេះ មធ្យមភាគទីមួយត្រូវបានគណនាជាការ៉េ៖

តើប៉ារ៉ាម៉ែត្រទម្ងន់អិចស្ប៉ូណង់ស្យែលនៅឯណា ឬប៉ារ៉ាម៉ែត្រ "កត្តាភ្លេច"

ប៉ារ៉ាម៉ែត្រត្រូវបានធ្វើបច្ចុប្បន្នភាពដោយប្រើរូបមន្តខាងក្រោម៖

RMProp បានបង្ហាញពីការសម្របខ្លួនដ៏ល្អនៃអត្រាសិក្សានៅទូទាំងកម្មវិធីផ្សេងៗ។ RMSProp អាច​ត្រូវ​បាន​គេ​ចាត់​ទុក​ថា​ជា​ការ​ធ្វើ​ឱ្យ​មាន​លក្ខណៈ​ទូទៅ​នៃ Rprop ហើយ​វា​ក៏​មាន​សមត្ថភាព​ធ្វើ​ការ​ជាមួយ​ជម្រើស​នៃ​ការ​ចុះ​ជម្រាល​ដូច​ជា​ mini-batch ដែល​ផ្ទុយ​ពី​ការ​ចុះ​ជម្រាល​ធម្មតា។

2. ការអនុវត្តនៃជម្រាលជម្រាល stochastic

នៅដំណាក់កាលនេះ វ៉ារ្យ៉ង់ជាច្រើននៃជម្រាល stochastic នឹងត្រូវបានអនុវត្តជាទម្រង់កូដកម្មវិធីនៅក្នុងភាសាសរសេរកម្មវិធី Python ។

2.1 ការអនុវត្តស្តង់ដារជម្រាល stochastic

ដំបូងអ្នកត្រូវការសំណុំទិន្នន័យ។ ក្នុងករណីនេះ សំណុំទិន្នន័យត្រូវបានបង្កើតដោយប្រើបណ្ណាល័យ Scikit-Learn៖

ការរៀនក្បួនដោះស្រាយ stochastic ជម្រាល

ពី sklearn.datasets នាំចូល make_moons

ពី sklearn.cross_validation នាំចូល train_test_split

X, y = make_moons(n_samples=5000, random_state=42, noise=0.1)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

នេះជាអ្វីដែលយើងទទួលបាន៖

រូបភាពទី 1 - តំណាងក្រាហ្វិកនៃសំណុំទិន្នន័យ

បន្ទាប់មក គំរូបណ្តាញសរសៃប្រសាទត្រូវបានកំណត់។ នេះនឹងជាបីស្រទាប់នៃបណ្តាញ (ស្រទាប់លាក់មួយ)៖

នាំចូល numpy ជា np

def make_network(n_hidden=100)៖

គំរូ = dict(W1=np.random.randn(n_feature, n_hidden),

W2=np.random.randn(n_hidden, n_class)

វាក៏កំណត់ប្រតិបត្តិការពីរផងដែរ៖ ការបន្តពូជ និងការបន្តពូជ។ ចូរយើងធ្វើជម្រើសដំបូងជាមុនសិន៖

ត្រឡប់ np.exp(x) / np.exp(x.sum()

def ទៅមុខ(x, គំរូ)៖

h = x @model["W1"]

prob = softmax(h @ model["W2"])

សៀគ្វីត្រូវតែបង្កើតជាស៊េរីនៃចំណុចពីធាតុបញ្ចូលទៅស្រទាប់លាក់ហើយបន្ទាប់មកទៅស្រទាប់លទ្ធផល។ នៅក្នុងស្រទាប់ដែលលាក់ ភាពមិនលីនេអ៊ែរក៏អាចត្រូវបានអនុវត្តផងដែរ ដើម្បីឱ្យបណ្តាញសរសៃប្រសាទអាចទស្សន៍ទាយព្រំដែននៃការសម្រេចចិត្តដែលមិនមែនជាលីនេអ៊ែរ។ អ្នកតំណាងដ៏លេចធ្លោនៃមុខងារមិនលីនេអ៊ែរនាពេលបច្ចុប្បន្ននេះគឺ ReLU ។

ReLU ត្រូវបានកំណត់ជា f(x)=max(0,x) ប៉ុន្តែជំនួសឱ្យការធ្វើ np.max(0, x) មានល្បិចអនុវត្តយ៉ាងត្រឹមត្រូវ៖ x = 0។

នៅពេលដែលស្រទាប់លទ្ធផលត្រូវបានឈានដល់ លទ្ធផលត្រូវតែដូចដែលការចែកចាយប្រូបាប៊ីលីតេ Bernoulli មានភាពត្រឹមត្រូវ ដូច្នេះលទ្ធផលត្រូវបានបង្រួមដោយប្រើមុខងារ SoftMax ដើម្បីទទួលបានការចែកចាយដែលបានផ្តល់ឱ្យ។

ឥឡូវនេះប្រតិបត្តិការទីពីរត្រូវបានកំណត់។ ការបន្តពូជមើលទៅដូចនេះ៖

def ថយក្រោយ (គំរូ, xs, hs, កំហុស):

dW2 = hs.T @ កំហុស

dh = errs @ model["W2"].T

dh = 0

ត្រឡប់ dict(W1=dW1, W2=dW2)

មូលដ្ឋាននៃក្បួនដោះស្រាយត្រូវបានបង្កើតឡើង។ មុខងារ sgd កំពុងត្រូវបានអនុវត្ត។ វាមើលទៅដូចនេះ៖

def sgd (គំរូ X_train, y_train, batch_size):

សម្រាប់ iter ក្នុង range(n_iter):

បោះពុម្ព("ការសរសេរឡើងវិញ()"។format(iter))

X_train, y_train = សាប់(X_train, y_train)

សម្រាប់ i ក្នុង range(0, X_train.shape, batch_size)៖

X_train_mini = X_train

y_train_mini = y_train

ម៉ូដែល = sgd_step(គំរូ, X_train_mini, y_train_mini)

ម៉ូដែលត្រឡប់មកវិញ

មុខងារ sgd_step កំពុងត្រូវបានអនុវត្ត។ វាមើលទៅដូចនេះ៖

def sgd_step(គំរូ, X_train, y_train):

grad = get_batch_grad(គំរូ, X_train, y_train)

model = model.copy()

សម្រាប់ស្រទាប់ក្នុងថ្នាក់៖

គំរូ += learning_rate * grad

មុខងារ get_batch_grad កំពុងត្រូវបានអនុវត្ត។ វាមើលទៅដូចនេះ៖

def get_batch_grad (គំរូ, X_train, y_train):

xs, hs, កំហុស = , ,

សម្រាប់ x, cls_idx ក្នុង zip (X_train, y_train):

h, y_pred = ទៅមុខ (x, គំរូ)

y_true = np.zeros(n_class)

y_true = ១.

err = y_true - y_pred

errs.append(err)

ត្រឡប់ថយក្រោយ(គំរូ, np.array(xs), np.array(hs), np.array(errs))

មុខងារនេះរាប់បញ្ចូលចំណុចទិន្នន័យនីមួយៗជាបាច់ បន្ទាប់មកបញ្ជូនវាទៅបណ្តាញ ហើយប្រៀបធៀបលទ្ធផលនៃស្លាកពិតដែលទទួលបានដោយទិន្នន័យបណ្តុះបណ្តាល។ កំហុសត្រូវបានកំណត់ដោយភាពខុសគ្នារវាងប្រូបាប៊ីលីតេនៃស្លាកពិត និងប្រូបាប៊ីលីតេនៃការទស្សន៍ទាយរបស់យើង។

2.2 ការអនុវត្តសន្ទុះ

សន្ទុះធ្វើការលើគោលការណ៍នៃច្បាប់រូបវន្តនៃចលនា វាឆ្លងកាត់តំបន់ optima (ភ្នំតូច)។ ការបន្ថែមសន្ទុះនឹងធ្វើឱ្យក្បួនដោះស្រាយបញ្ចូលគ្នាលឿនជាងមុន ដោយសារល្បឿនប្រមូលផ្តុំ ហើយជំហានវិធីសាស្ត្រអាចធំជាងជំហានថេរក្នុងវិធីសាស្ត្រធម្មតា។

ដោយពិចារណាថាគំរូកម្មវិធីគឺរួចរាល់ហើយ អ្នកគ្រាន់តែត្រូវអនុវត្តមុខងារសំខាន់នៃវិធីសាស្ត្រនេះប៉ុណ្ណោះ។ មុខងារសន្ទុះត្រូវបានផ្តល់ឱ្យដូចខាងក្រោម:

def momentum (គំរូ, X_train, y_train, batch_size):

ល្បឿន = (k: np.zeros_like(v) សម្រាប់ k, v ក្នុង model.items())

ហ្គាម៉ា =.៩

X_mini, y_mini = បាច់

សម្រាប់ស្រទាប់ក្នុងថ្នាក់៖

ល្បឿន = ហ្គាម៉ា * ល្បឿន + អាល់ហ្វា * ថ្នាក់ទី

ម៉ូដែល += ល្បឿន

អថេរល្បឿនថ្មីត្រូវបានបើកដែលនឹងប្រមូលផ្តុំសន្ទុះសម្រាប់ប៉ារ៉ាម៉ែត្រនីមួយៗ។ អថេរនឹងត្រូវបានអាប់ដេតជាមួយនឹងពាក្យ alpha*grad នៅជំហានថ្មីនីមួយៗនៃការចុះជម្រាល។ វាក៏មានការថយចុះបន្តិចនៃតម្លៃនៃអថេរល្បឿនដែលត្រូវបានគណនាក្នុងជំហានមុនដោយប្រើមេគុណហ្គាម៉ា។

2.3 ការអនុវត្ត AdaGrad

រហូតមកដល់ពេលនេះ អត្រាសិក្សាអាល់ហ្វាមិនត្រូវបានគេអើពើទេ ព្រោះវាថេរ។ បញ្ហាកើតឡើងដែលថាអត្រាសិក្សាប៉ះពាល់ដល់ប៉ារ៉ាម៉ែត្រទាំងអស់ ហើយក្បួនដោះស្រាយមិនតែងតែដំណើរការប្រកបដោយប្រសិទ្ធភាពក្នុងអត្រាសិក្សាថេរនោះទេ។ AdaGrad អាចជាដំណោះស្រាយចំពោះបញ្ហានេះ។

នៅពេលប្រើ AdaGrad ការធ្វើបច្ចុប្បន្នភាពប៉ារ៉ាម៉ែត្រកើតឡើងដោយចង្អុល ដូច្នេះអត្រាសិក្សាគឺជាប៉ារ៉ាម៉ែត្រសម្របខ្លួន។

ការអនុវត្តវិធីសាស្រ្តនេះកំពុងដំណើរការ។ កម្មវិធីទាំងមូលគឺរួចរាល់ហើយ អ្នកគ្រាន់តែត្រូវផ្លាស់ប្តូរមុខងារសំខាន់ប៉ុណ្ណោះ។ វានឹងត្រូវបានគេហៅថា adagrad ។ មុខងារត្រូវបានបង្ហាញខាងក្រោម៖

def adagrad(គំរូ, X_train, y_train, batch_size):

បាច់ = get_batch(X_train, y_train, batch_size)

សម្រាប់ iter ក្នុងជួរ (1, n_iter + 1):

idx = np.random.randint(0, len(បាច់))

X_mini, y_mini = បាច់

grad = get_batch_grad(គំរូ, X_mini, y_mini)

cache[k] += grad[k]**2

ម៉ូដែលត្រឡប់មកវិញ

អ្នក​អាច​មើល​ឃើញ​ថា​អត្រា​នៃ​ការ​រៀន​សូត្រ​មាន​លក្ខណៈ​ធម្មតា។ ឥឡូវនេះវាអាចធំជាង ឬតូចជាងនេះ អាស្រ័យលើរបៀបដែលជម្រាលចុងក្រោយបំផុតមានឥរិយាបទ។

2.4 ការអនុវត្ត RMProp

អ្នកអាចកត់សំគាល់ថានៅក្នុងផ្នែកបន្ថែមនៃ Adagrad ឃ្លាំងសម្ងាត់តម្លៃ[k] += grad[k]**2 កើនឡើងឯកតាជាលទ្ធផលនៃផលបូក និងការ៉េ។ នេះអាចមានបញ្ហា ដោយសារអត្រាសិក្សានឹងថយចុះជាឯកតាទៅអត្រាសិក្សាដ៏តូចបំផុត។

ដើម្បីប្រយុទ្ធប្រឆាំងនឹងបញ្ហានេះ RMProp បំបែកតម្លៃជម្រាលដែលបានប្រមូលពីមុន ដូច្នេះមានតែផ្នែកមួយនៃជម្រាលចុងក្រោយបំផុតប៉ុណ្ណោះដែលត្រូវបានពិចារណា។ ឥឡូវនេះ ជំនួសឱ្យការពិចារណាលើជម្រាលចុងក្រោយបំផុតទាំងអស់ RMProp មានឥរិយាបទដូចជាការផ្លាស់ប្តូរមធ្យម។

ការអនុវត្តវិធីសាស្រ្តនេះកំពុងដំណើរការ។ កម្មវិធីទាំងមូលគឺរួចរាល់ហើយ អ្នកគ្រាន់តែត្រូវផ្លាស់ប្តូរមុខងារសំខាន់ប៉ុណ្ណោះ។ វានឹងត្រូវបានគេហៅថា rmsprop ។ មុខងារត្រូវបានបង្ហាញខាងក្រោម៖

def rmsprop(គំរូ, X_train, y_train, batch_size):

ឃ្លាំងសម្ងាត់ = (k: np.zeros_like(v) សម្រាប់ k, v ក្នុង model.items())

ហ្គាម៉ា =.៩

បាច់ = get_batch(X_train, y_train, batch_size)

សម្រាប់ iter ក្នុងជួរ (1, n_iter + 1):

idx = np.random.randint(0, len(បាច់))

X_mini, y_mini = បាច់

grad = get_batch_grad(គំរូ, X_mini, y_mini)

cache[k] = gamma * cache[k] + (1 - gamma) * (grad[k]**2)

គំរូ[k] += alpha * grad[k] / (np.sqrt(cache[k]) + eps)

ភាពខុសគ្នាសំខាន់គឺនៅក្នុងការគណនាតម្លៃឃ្លាំងសម្ងាត់ [k] ហើយឥឡូវនេះតម្លៃជម្រាលដែលបានបង្គរនឹងមិនកើនឡើងជាឯកតោភាគីទេ។

3. ការធ្វើតេស្តនិងការប្រៀបធៀប

ជំពូកនេះនឹងសាកល្បងការអនុវត្ត និងវិភាគលទ្ធផលដែលទទួលបាន។

3.1 ការធ្វើតេស្តស្តង់ដារ stochastic gradient descent

នៅដំណាក់កាលនេះ ការចុះជម្រាល stochastic ស្តង់ដារនឹងត្រូវបានសាកល្បង។ នីតិវិធីនឹងត្រូវបានអនុវត្ត 100 ដងហើយបន្ទាប់មកភាពត្រឹមត្រូវជាមធ្យមនឹងត្រូវបានគណនា។

n_experiment = 100

accs = np.zeros(n_experiment)

សម្រាប់ k ក្នុងជួរ (n_experiment)៖

គំរូ = make_network()

ម៉ូដែល = sgd (គំរូ, X_train, y_train, minibatch_size)

probe = ទៅមុខ (x, គំរូ)

y = np.argmax(prob)

បន្ទាប់ពីដំណើរការកូដនេះ ខ្ញុំទទួលបានតម្លៃដូចខាងក្រោម៖

ភាពត្រឹមត្រូវជាមធ្យម៖ 0.8765040000000001

ដូច្នេះយើងអាចសន្និដ្ឋានបានថាភាពត្រឹមត្រូវនៃការប្រតិបត្តិជាមធ្យមគឺ 87% ។

3.2 សន្ទុះសាកល្បង

នៅដំណាក់កាលនេះ ការចុះជម្រាល stochastic នឹងត្រូវបានសាកល្បងដោយផ្អែកលើការអនុវត្ត Momentum ។ នីតិវិធីនឹងត្រូវបានអនុវត្ត 100 ដងហើយបន្ទាប់មកភាពត្រឹមត្រូវជាមធ្យមនឹងត្រូវបានគណនា។

កម្មវិធីសាកល្បងមានដូចខាងក្រោម៖

n_experiment = 100

accs = np.zeros(n_experiment)

សម្រាប់ k ក្នុងជួរ (n_experiment)៖

គំរូ = make_network()

model = momentum(model, X_train, y_train, minibatch_size)

y_pred = np.zeros_like(y_test)

សម្រាប់ i, x ក្នុង enumerate (X_test):

probe = ទៅមុខ (x, គំរូ)

y = np.argmax(prob)

accs[k] = (y_pred == y_test).sum() / y_test.size

print("ភាពជាក់លាក់ជាមធ្យម៖ (), តម្លៃដែលទទួលបាន៖ ()" format(accs.mean(), accs.std()))

ភាពត្រឹមត្រូវជាមធ្យម៖

1) 0.3152 ដែលមានអាល់ហ្វា = 0.5

2) 0.85546666666666666 ដែលមានអាល់ហ្វា = 1e-2

3) 0.86133333333333334 ជាមួយអាល់ហ្វា = 1e-5

ដូច្នេះយើងអាចសន្និដ្ឋានថានៅតម្លៃទាបនៃអត្រាសិក្សា ភាពត្រឹមត្រូវនៃការប្រតិបត្តិគឺខ្ពស់ជាងគួរឱ្យកត់សម្គាល់។

3.3 ការធ្វើតេស្តអាដាហ្គ្រាដ

នៅដំណាក់កាលនេះ យើងនឹងសាកល្បងជម្រាលជម្រាល stochastic ដោយផ្អែកលើការអនុវត្ត AdaGrad ។ នីតិវិធីនឹងត្រូវបានអនុវត្ត 100 ដងហើយបន្ទាប់មកភាពត្រឹមត្រូវជាមធ្យមនឹងត្រូវបានគណនា។

កម្មវិធីសាកល្បងមានដូចខាងក្រោម៖

n_experiment = 100

accs = np.zeros(n_experiment)

សម្រាប់ k ក្នុងជួរ (n_experiment)៖

គំរូ = make_network()

គំរូ = adagrad(គំរូ, X_train, y_train, minibatch_size)

y_pred = np.zeros_like(y_test)

សម្រាប់ i, x ក្នុង enumerate (X_test):

probe = ទៅមុខ (x, គំរូ)

y = np.argmax(prob)

accs[k] = (y_pred == y_test).sum() / y_test.size

print("ភាពជាក់លាក់ជាមធ្យម៖ (), តម្លៃដែលទទួលបាន៖ ()" format(accs.mean(), accs.std()))

ដោយការប្រតិបត្តិកូដនេះ តម្លៃខាងក្រោមត្រូវបានទទួល៖

ភាពត្រឹមត្រូវជាមធ្យម៖

1) 0.87546666666666667 ដែលមានអាល់ហ្វា = 0.5

2) 0.87866666666666677 ដែលមានអាល់ហ្វា = 1e-2

3) 0.504 ដែលមានអាល់ហ្វា = 1e-5

ដូច្នេះយើងអាចសន្និដ្ឋានថានៅតម្លៃទាបបំផុតនៃអត្រាសិក្សា ភាពត្រឹមត្រូវនៃការប្រតិបត្តិត្រូវបានកាត់បន្ថយយ៉ាងខ្លាំង។

3.4 ការធ្វើតេស្ត RMProp

នៅដំណាក់កាលនេះ ការចុះជម្រាល stochastic នឹងត្រូវបានសាកល្បងដោយផ្អែកលើការអនុវត្ត RMProp ។ នីតិវិធីនឹងត្រូវបានអនុវត្ត 100 ដងហើយបន្ទាប់មកភាពត្រឹមត្រូវជាមធ្យមនឹងត្រូវបានគណនា។

កម្មវិធីសាកល្បងមានដូចខាងក្រោម៖

n_experiment = 100

accs = np.zeros(n_experiment)

សម្រាប់ k ក្នុងជួរ (n_experiment)៖

គំរូ = make_network()

គំរូ = rmsprop(គំរូ, X_train, y_train, minibatch_size)

y_pred = np.zeros_like(y_test)

សម្រាប់ i, x ក្នុង enumerate (X_test):

probe = ទៅមុខ (x, គំរូ)

y = np.argmax(prob)

accs[k] = (y_pred == y_test).sum() / y_test.size

print("ភាពជាក់លាក់ជាមធ្យម៖ (), តម្លៃដែលទទួលបាន៖ ()" format(accs.mean(), accs.std()))

ដោយការប្រតិបត្តិកូដនេះ តម្លៃខាងក្រោមត្រូវបានទទួល៖

ភាពត្រឹមត្រូវជាមធ្យម៖

1) 0.8506666666666667 ដោយមានអាល់ហ្វា = 0.5

2) 0.8727999999999999 ជាមួយអាល់ហ្វា = 1e-2

3) 0.306933333333333334 ដែលមានអាល់ហ្វា = 1e-5

ដូច្នេះយើងអាចសន្និដ្ឋានថានៅតម្លៃទាបបំផុតនៃអត្រាសិក្សា ភាពត្រឹមត្រូវនៃការប្រតិបត្តិរបស់វាស្រដៀងទៅនឹង AdaGrad ត្រូវបានកាត់បន្ថយយ៉ាងខ្លាំង។

សេចក្តីសន្និដ្ឋាន

តាមការវិភាគប្រៀបធៀប វាច្បាស់ណាស់ថា នៅពេលប្រើអត្រាសិក្សាធំ វិធីសាស្ត្រដែលមានអត្រារៀនប្រែប្រួល មានប្រសិទ្ធភាពជាងវិធីសាស្ត្រជាមួយនឹងអត្រាសិក្សាថេរ។

ទោះជាយ៉ាងណាក៏ដោយ ភាពផ្ទុយគ្នាកើតឡើងនៅពេលប្រើតម្លៃអត្រាសិក្សាតូចមួយ ដូចជា 1e-5។ សម្រាប់វ៉ារ្យ៉ង់ស្ដង់ដារនៃការចុះជម្រាល stochastic និងវិធីសាស្រ្តសន្ទុះ តម្លៃតូចល្មមអនុញ្ញាតឱ្យពួកគេដំណើរការបានល្អ។ ម៉្យាងវិញទៀត ប្រសិនបើអត្រានៃការរៀនសូត្រគឺតូចណាស់ ហើយវាត្រូវបានធ្វើឱ្យមានលក្ខណៈធម្មតានៅក្នុងវិធីសាស្រ្តនៃអត្រាការរៀនប្រែប្រួល នោះវានឹងកាន់តែតូចទៅៗ ដែលប៉ះពាល់ដល់អត្រាការបញ្ចូលគ្នា។ នេះធ្វើឱ្យការហ្វឹកហ្វឺនមានភាពយឺតយ៉ាវខ្លាំង ហើយវិធីសាស្ត្រទាំងនេះដំណើរការអាក្រក់ជាងការចុះជម្រាល stochastic ស្តង់ដារជាមួយនឹងចំនួនដដែលៗ។

បញ្ជីប្រភពដែលបានប្រើ

1. ការរៀនតាមម៉ាស៊ីន - Stochastic Gradient Descent

2. បញ្ញាសិប្បនិមិត្តជាភាសារុស្សី - ពូជពង្សជម្រាល

3. ការបង្រៀនវីគី - ការអនុវត្តក្បួនដោះស្រាយ/ការចុះជម្រាល

4. សាកលវិទ្យាល័យស្ទែនហ្វដ - វិធីសាស្ត្របន្សាំរង

5. សារព័ត៌មានសាកលវិទ្យាល័យខេមប្រ៊ីជ - ក្បួនដោះស្រាយលើបណ្តាញ និងការប៉ាន់ស្មាន Stochastic

6. Sanjoy Dasgupta និង David Mccallester - នៅលើសារៈសំខាន់នៃការចាប់ផ្តើម និងសន្ទុះក្នុងការរៀនសូត្រជ្រៅ [ធនធានអេឡិចត្រូនិក] ។

បានដាក់ប្រកាសនៅលើ Allbest.ru

...

ឯកសារស្រដៀងគ្នា

    លក្ខខណ្ឌចាំបាច់សម្រាប់ជ្រុល។ ការអភិវឌ្ឍន៍ក្បួនដោះស្រាយម៉ាស៊ីន និងកម្មវិធីបង្កើនប្រសិទ្ធភាពពហុវិមាត្រសម្រាប់វិធីសាស្ត្រជម្រាលដោយប្រើវិធីសាស្ត្រស្វែងរកឯកសណ្ឋាន។ ការពិនិត្យមើលលក្ខខណ្ឌចាំបាច់ និងគ្រប់គ្រាន់សម្រាប់ភាពខ្លាំងបំផុតសម្រាប់ចំណុចអប្បបរមាដែលបានរកឃើញ។

    ការងារវគ្គសិក្សា, បានបន្ថែម 09/25/2013

    ការអនុវត្តកម្មវិធីនៃកម្មវិធីសម្រាប់គណនាមុខងារដែលបានបញ្ជាក់។ នីតិវិធីសម្រាប់ការស្វែងរកអប្បបរមានៃមុខងារមួយ។ ការប្រើប្រាស់ Hooke-Jeeves និងវិធីសាស្ត្រចុះជម្រាល ដើម្បីដោះស្រាយបញ្ហា។ ការសិក្សាអំពីមុខងារមួយនៅក្នុងតំបន់ជុំវិញនៃចំណុចមូលដ្ឋាន កំណត់កូអរដោនេរបស់វា។

    ការធ្វើតេស្តបន្ថែម ០២/០២/២០១៤

    ការបង្កើនប្រសិទ្ធភាពនៃដំណោះស្រាយបញ្ហាដោយប្រើក្បួនដោះស្រាយ annealing ។ ការវិភាគទ្រឹស្តីបង្កើនប្រសិទ្ធភាពជាមុខងារគោលបំណង។ វិធីសាស្រ្តចុះជម្រាល។ អថេរ និងការពិពណ៌នានៃក្បួនដោះស្រាយការបញ្ចូល តំណាងនៃបញ្ហាអ្នកលក់ធ្វើដំណើរតាមក្រាហ្វ។ កាត់បន្ថយបញ្ហាទៅជាអថេរ និងដោះស្រាយវា។

    ការងារវគ្គសិក្សា, បានបន្ថែម 05/21/2015

    ការបណ្តុះបណ្តាលបណ្តាញសរសៃប្រសាទសិប្បនិម្មិតសាមញ្ញបំផុត និងពហុស្រទាប់។ វិធីសាស្រ្តបណ្តុះបណ្តាល Perceptron ដោយផ្អែកលើគោលការណ៍នៃជម្រាលជម្រាលតាមបណ្តោយផ្ទៃកំហុស។ ការអនុវត្តនៅក្នុងផលិតផលកម្មវិធី NeuroPro 0.25 ។ ដោយប្រើក្បួនដោះស្រាយ backpropagation ។

    ការងារវគ្គសិក្សា, បានបន្ថែម 05/05/2015

    ការដោះស្រាយបញ្ហាលើការពង្រីកមុខងារអតិបរមានៃអថេរជាច្រើន។ ការពិពណ៌នាអំពីវិធីសាស្រ្ត dichotomy កម្មវិធីរបស់វាសម្រាប់ការដោះស្រាយសមីការ nonlinear ។ ការដោះស្រាយបញ្ហានេះដោយប្រើវិធីសំរបសំរួលចុះក្រោម។ គូរឡើង ក្បួនដោះស្រាយ កម្មវិធីរាយបញ្ជី។

    ការងារវគ្គសិក្សាបន្ថែម 10/01/2009

    ការកំណត់អត្តសញ្ញាណវត្ថុដោយប្រើវិធីសាស្ត្រការ៉េតិចបំផុត។ ការវិភាគនៃមេគុណជាប់ទាក់ទងគ្នាជាគូ មួយផ្នែក និងច្រើន។ ការសាងសង់គំរូលីនេអ៊ែរនិងគំរូដែលមានប៉ារ៉ាម៉ែត្រចែកចាយ។ វិធីសាស្រ្តលេខផ្ទួនសម្រាប់ការស្វែងរកឫស (សូន្យ) នៃអនុគមន៍ដែលបានផ្តល់ឱ្យ។

    ការងារវគ្គសិក្សា, បានបន្ថែម 03/20/2014

    មូលដ្ឋាននៃបច្ចេកវិទ្យាសម្រាប់ការប្រើប្រាស់កញ្ចប់កម្មវិធី LabVIEW គុណសម្បត្តិនៃប្រព័ន្ធ។ ការសរសេរកម្មវិធីផ្អែកលើស្ថាបត្យកម្មលំហូរទិន្នន័យ។ វិធីសាស្រ្តស្វែងរកភាពខ្លាំង។ ដោយប្រើវិធីសាស្ត្រ Gauss-Seidel ដើម្បីស្វែងរកអតិបរមានៃមុខងារពីរវិមាត្រ។

    សាកល្បង, បានបន្ថែម 03/18/2011

    គោលបំណង និងការចាត់ថ្នាក់នៃវិធីសាស្ត្របង្កើនប្រសិទ្ធភាពម៉ាស៊ីនស្វែងរក។ ប្រសិទ្ធភាពនៃវិធីសាស្ត្រស្វែងរក។ វិធីសាស្រ្តស្វែងរកលំដាប់សូន្យ៖ ធាតុបញ្ចូល លក្ខខណ្ឌ គុណវិបត្តិ និងកម្មវិធី។ រចនាសម្ព័ន្ធនៃវិធីសាស្រ្តស្វែងរកជម្រាល។ គំនិតសំខាន់នៃវិធីសាស្ត្រចុះចោតបំផុត។

    ការបង្រៀន, បានបន្ថែម ០៣/០៤/២០០៩

    សេចក្តីថ្លែងការណ៍អំពីបញ្ហា និងការរៀបចំជាផ្លូវការរបស់វា។ ការស្វែងរកតម្លៃនៃពហុនាមអន្តរប៉ូលនៅចំនុច x1 និង x2 ។ ស្វែងរកអប្បបរមានៃអនុគមន៍ F(x) នៅលើផ្នែក។ ពិនិត្យមើលលក្ខខណ្ឌនៃការបញ្ចូលគ្នានៃវិធីសាស្រ្ត។ ការធ្វើតេស្តម៉ូឌុលកម្មវិធី។ ដ្យាក្រាមលម្អិតនៃក្បួនដោះស្រាយ។

    ការងារវគ្គសិក្សា, បានបន្ថែម 02/04/2011

    វិធីសាស្រ្តលេខនៅក្នុងបញ្ហាដោយគ្មានការរឹតបន្តឹង។ គ្រោងការណ៍នៃវិធីសាស្រ្តចុះចត។ បរិស្ថានកម្មវិធីនិពន្ធ Visual Basic ។ ការប្រើប្រាស់វត្ថុ ActiveX ក្នុងទម្រង់។ គំនូសតាងលំហូរនៃក្បួនដោះស្រាយការក្លែងធ្វើ។ បញ្ហាបង្កើនប្រសិទ្ធភាពសម្រាប់មុខងារកំណត់ដែលមានចំណុចខ្លាំងតែមួយ។