ក្បួនដោះស្រាយឆ្លាតវៃ និងបញ្ញាសិប្បនិម្មិត។ បញ្ញាសិប្បនិម្មិត

ជាដំបូង តើបញ្ញាសិប្បនិម្មិតជាអ្វី? AI សំដៅលើសំណុំនៃក្បួនដោះស្រាយ និងទិសដៅនៃការស្រាវជ្រាវលើការងារស្វ័យប្រវត្តិកម្មដែលដោះស្រាយដោយខួរក្បាលមនុស្ស ក៏ដូចជាការក្លែងធ្វើសកម្មភាព។ ខួរក្បាលរបស់មនុស្សដើម្បីកែលម្អដំណោះស្រាយនៃបញ្ហាកុំព្យូទ័រ។ ឧទាហរណ៍:

  • ការទទួលស្គាល់លំនាំ ការវិភាគព័ត៌មានដែលមើលឃើញ។
  • ការទទួលស្គាល់ព័ត៌មានសំឡេង។
  • ហេតុផល, ការសម្រេចចិត្ត។
  • ការច្នៃប្រឌិត, វិចារណញាណ។

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

ឥឡូវនេះអំពីតំបន់ធម្មតាមួយចំនួននៃ AI ។

  • ធ្វើជាម្ចាស់លើគោលការណ៍ជាមូលដ្ឋាននៃការប្រើប្រាស់បញ្ញាសិប្បនិម្មិតនៅក្នុង ហ្គេម​កុំព្យូទ័រ.
  • ពិចារណាក្បួនដោះស្រាយបញ្ញាសិប្បនិម្មិតដែលអាចអនុវត្តបាននៅក្នុងហ្គេម
  • បង្កើតហ្គេមកុំព្យូទ័រដោយប្រើគោលការណ៍នៃបញ្ញាសិប្បនិម្មិត

ទិដ្ឋភាពទូទៅនៃវិធីសាស្រ្តក្នុងការអភិវឌ្ឍន៍ប្រព័ន្ធ AI

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

វាពិបាកណាស់ក្នុងការស្វែងរកហ្គេមកុំព្យូទ័រដែលមិនមាន AI ។ ឧទាហរណ៍បុរាណនៃហ្គេម "ឆ្លាតវៃ" គឺជាកម្មវិធីសម្រាប់លេង checkers, អុក និងហ្គេមក្តារផ្សេងទៀត។ រាល់ហ្គេមដែលកុំព្យូទ័រលេងទល់នឹងអ្នកប្រើប្រាស់ត្រូវបានបំពាក់ដោយ AI ។

ហ្គេម AI ដល់ការប៉ាន់ស្មានដំបូងអាចបែងចែកជាពីរប្រភេទ។ ទីមួយ - និងច្បាស់បំផុត - គឺជាភាពវៃឆ្លាតនៃតួអង្គហ្គេមនីមួយៗ។ ជាឧទាហរណ៍ ធុងនីមួយៗនៅក្នុងហ្គេមកុងសូលដ៏ពេញនិយម Battle City ព្យាយាមចូលទៅមូលដ្ឋានរបស់អ្នកលេង ហើយបំផ្លាញវា និងធុងរបស់គាត់។ រថក្រោះនៅក្នុងហ្គេមធ្វើសកម្មភាពមិនសំរបសំរួល ពួកគេមិនមានភាពវៃឆ្លាតពិសេសនោះទេ ប៉ុន្តែវាគួរអោយចាប់អារម្មណ៍ក្នុងការលេង - ចំនុចទាំងមូលគឺថាប្រភេទ AI នេះគឺពិតជាសាកសមសម្រាប់ហ្គេមនេះ។ វាមិនធ្វើឱ្យហ្គេមធុញទ្រាន់ទេ។

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

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

ដោយវិធីនេះ វាជាការងាយស្រួលក្នុងការកត់សម្គាល់ថានៅក្នុង StarCraft ដូចគ្នា គ្រឿងដែលគ្រប់គ្រងដោយអ្នកប្រើប្រាស់ក៏មាន AI ផ្ទាល់ខ្លួនផងដែរ។ ឧទាហរណ៍ ពាក្យបញ្ជា "ល្បាត" ដូចគ្នាដែលផ្តល់ឱ្យដោយអ្នកប្រើប្រាស់នឹងធ្វើឱ្យសត្វ StarCraft ដើរដោយគោរពតាមផ្លូវដែលបានបញ្ជាក់។ ប៉ុន្តែប្រសិនបើឧបសគ្គមួយលេចឡើងនៅលើផ្លូវ (ឧទាហរណ៍អ្នកលេងសាងសង់អាគារនៅទីនោះបិទផ្លូវ) - អង្គភាពនឹងសម្រេចចិត្តដោយខ្លួនឯងថាត្រូវធ្វើអ្វី។ ដូចគ្នានេះដែរ គាត់នឹងសម្រេចចិត្តវាយប្រហារដោយឯករាជ្យ ប្រសិនបើសត្រូវលេចឡើងក្នុងវិស័យចក្ខុវិស័យរបស់គាត់។

ប្រព័ន្ធ AI ដែលប្រើក្នុងហ្គេមកុំព្យូទ័រអាចបែងចែកជាពីរប្រភេទធំៗ។ ទីមួយ ទាំងនេះគឺជាអ្វីដែលហៅថាប្រព័ន្ធកំណត់។ ពួកវាត្រូវបានសម្គាល់ដោយការព្យាករណ៍នៃសកម្មភាពរបស់តួអង្គ។ ហើយទីពីរ ទាំងនេះគឺជាប្រព័ន្ធមិនកំណត់ - តួអក្សរដែលគ្រប់គ្រងដោយ AI បែបនេះអាចធ្វើសកម្មភាពដែលមិនអាចទាយទុកជាមុនបាន និងធ្វើការសម្រេចចិត្តដែលមិនរំពឹងទុក។

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

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

នៅក្នុងការអនុវត្ត ទាំងប្រភេទ AI កំណត់និងមិនកំណត់ត្រូវបានប្រើប្រាស់។ ជាធម្មតាពួកគេធ្វើសកម្មភាពរួមគ្នា។ ឧទាហរណ៍ ដើម្បីអនុវត្តសកម្មភាពមិនច្បាស់លាស់សាមញ្ញមួយចំនួន (និយាយ រមៀលឡើងនៅពេលចូលទៅជិតជញ្ជាំង) ក្បួនដោះស្រាយកំណត់សាមញ្ញ និងរហ័សអាចត្រូវបានប្រើ។ ក្នុងករណីស្មុគស្មាញជាងនេះ (ឧទាហរណ៍ថាតើត្រូវទិញភាគហ៊ុនរបស់ក្រុមហ៊ុន X ដោយគិតគូរពីប៉ារ៉ាម៉ែត្រជាច្រើនថាតើត្រូវវាយប្រហារសត្រូវដោយគិតគូរពីសមត្ថភាពរបស់គាត់ សមត្ថភាពរបស់មនុស្សម្នាក់ វត្តមាននៃការពង្រឹង។ ល។ ) ច្រើនទៀត។ ក្បួនដោះស្រាយមិនកំណត់ស្មុគស្មាញត្រូវបានប្រើ។ ការកំណត់ដោយផ្នែក (ឧទាហរណ៍ នៅពេលចូលទៅជិតជញ្ជាំង តួអង្គមួយមានឱកាស 50% ក្នុងការបត់ឆ្វេង 30% ឱកាសបត់ស្តាំ និង 20% ឱកាសនៃការបង្វិល និងថយក្រោយ) ក៏ត្រូវបានគេប្រើយ៉ាងទូលំទូលាយនៅក្នុងហ្គេមផងដែរ។

ការអនុវត្តក្បួនដោះស្រាយការស្វែងរក

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

តោះបង្កើតគម្រោងហ្គេមថ្មី P8_1 ដោយផ្អែកលើគម្រោង P5_1។ យើងនឹងប្រើវត្ថុពីរ - អ្នកដេញតាម និងជនរងគ្រោះ។ អ្នក​បើក​បរ​នឹង​បើក​សំដៅ​ទៅ​រក​ជន​រង​គ្រោះ​ក្នុង​ល្បឿន​១​តិច​ជាង​ល្បឿន​របស់​ជន​រង​គ្រោះ ។ ប្រសិនបើវត្ថុទាំងនោះប៉ះទង្គិចគ្នា ជនរងគ្រោះនឹងត្រូវបំផ្លាញចោល។

នៅក្នុងរូបភព។ ១២.១. បង្អួចត្រូវបានបង្ហាញ ដំណោះស្រាយ Explorerគម្រោងហ្គេម P8_1.


អង្ករ។

១២.១.

យើងប្រើថ្នាក់មូលដ្ឋានហៅថា gBaseClass ដែលជាថ្នាក់សម្រាប់វត្ថុដែលដេញតាម (សត្រូវ) ថ្នាក់សម្រាប់វត្ថុជនរងគ្រោះ (ខ្ញុំ) និងថ្នាក់សម្រាប់វត្ថុជញ្ជាំង។ យើងនឹងត្រូវការថ្នាក់វត្ថុជញ្ជាំង ដើម្បីសិក្សាពីឥរិយាបទរបស់វត្ថុដែលអនុវត្តក្បួនដោះស្រាយការស្វែងរក នៅពេលប្រឈមមុខនឹងឧបសគ្គដែលមិនអាចគ្រប់គ្រងបាននៅតាមផ្លូវទៅកាន់ជនរងគ្រោះ។ យើងបានកែប្រែកូដថ្នាក់យ៉ាងសំខាន់ពីគម្រោង P5_1 ដើម ដូច្នេះខាងក្រោមអ្នកនឹងឃើញកូដពេញលេញសម្រាប់ថ្នាក់ហ្គេម។ នៅក្នុងបញ្ជី 12.1 ។ អ្នកអាចស្វែងរកលេខកូដសម្រាប់ថ្នាក់ Game1 ។

ការប្រើប្រាស់ប្រព័ន្ធ; ដោយប្រើ System.Collections.Generic; ដោយប្រើ Microsoft.Xna.Framework; ដោយប្រើ Microsoft.Xna.Framework.Audio; ដោយប្រើ Microsoft.Xna.Framework.Content; ដោយប្រើ Microsoft.Xna.Framework.GamerServices; ដោយប្រើ Microsoft.Xna.Framework.Graphics; ដោយប្រើ Microsoft.Xna.Framework.Input; ដោយប្រើ Microsoft.Xna.Framework.Net; ដោយប្រើ Microsoft.Xna.Framework.Storage; namespace P8_1 ( ///ថ្នាក់សាធារណៈ Game1៖ Microsoft.Xna.Framework.Game ( ក្រាហ្វិកឧបករណ៍គ្រប់គ្រងឧបករណ៍; SpriteBatch spriteBatch; Texture2D txtBackground; Texture2D txtEnemy; Texture2D txtMe; Texture2D txtWall; // អារេសម្រាប់សាងសង់កម្រិតសាធារណៈ int[,] ស្រទាប់ឡើងវិញ Rectang ថ្មី; 0 , 0, 640, 512); ចតុកោណកែង recSprite = ចតុកោណកែងថ្មី(0, 0, 64, 64); ( ) ( // TODO៖ បន្ថែមតក្កវិជ្ជាចាប់ផ្តើមរបស់អ្នកនៅទីនេះ ស្រទាប់ = ថ្មី int ( ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ( 0, 0, 0, 0, 1, 0 , 0, 0, 0, 0 ), ( 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 1, 6, 0, 0, 0 , 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ) // កំណត់ហ្គេម គុណភាពបង្ហាញរបស់បង្អួច //640x512 ក្រាហ្វិក.PreferredBackBufferWidth = 640; base.Initialize(); ) ការបដិសេធដែលត្រូវបានការពារទុកជាមោឃៈ LoadContent() ( // បង្កើត SpriteBatch ថ្មី ដែលអាចត្រូវបានប្រើដើម្បីគូរវាយនភាព។ ("ផ្ទៃខាងក្រោយ"); txtEnemy = Content.Load ("សត្រូវ"); txtMe = Content.Load ("ខ្ញុំ"); txtWall = Content.Load ("ជញ្ជាំង"); // ហៅនីតិវិធីសម្រាប់ការរៀបចំវត្ថុនៅក្នុងបង្អួចហ្គេម AddSprites(); // TODO: ប្រើ this.Content ដើម្បីផ្ទុកមាតិកាហ្គេមរបស់អ្នកនៅទីនេះ ) // នីតិវិធីសម្រាប់ការរៀបចំវត្ថុនៅក្នុងបង្អួចហ្គេមចាត់ទុកជាមោឃៈ AddSprites() ( // អថេរសម្រាប់រក្សាទុកអាសយដ្ឋាន // នៃវត្ថុអ្នកលេងជាបណ្តោះអាសន្នក្នុង a = 0, b = 0; // រកមើលស្រទាប់អារេសម្រាប់ (int i = 0; i< 8; i++) { for (int j = 0; j < 10; j++) { //Если элемент с индексом (i,j) равен 1 - //устанавливаем в соответствующую позицию элемент с //номером 1, то есть - стену if (Layer == 1) Components.Add(new GameObj.Wall(this, ref txtWall, new Vector2(j, i), recSprite)); if (Layer == 5) Components.Add(new GameObj.Enemy(this, ref txtEnemy, new Vector2(j, i), new Rectangle(0, 0, 32, 32))); //Если обнаружен объект игрока - запишем его координаты if (Layer == 6) { a = i; b = j; } } } //Последним установим объект игрока - так он гарантированно //расположен поверх всех остальных объектов Components.Add(new GameObj.Me(this, ref txtMe, new Vector2(b, a), new Rectangle(0, 0, 32, 32))); } protected override void UnloadContent() { } protected override void Update(GameTime gameTime) { base.Update(gameTime); } protected override void Draw(GameTime gameTime) { spriteBatch.Begin(); //выведем фоновое изображение spriteBatch.Draw(txtBackground, recBackround, Color.White); //Выведем игровые объекты base.Draw(gameTime); spriteBatch.End(); } } } ការចុះបញ្ជី 12.1 ។ លេខកូដហ្គេម 1

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

លទ្ធផលនៃការងារគឺថា AI ដោយមិនដឹងពីច្បាប់ បានស្ទាត់ជំនាញហ្គេម tic-tac-toe ដោយឯករាជ្យ ហើយបានរកឃើញចំណុចខ្សោយរបស់ bots ដែលលេងប្រឆាំងនឹងវា។ ប៉ុន្តែខ្ញុំចាប់ផ្តើមជាមួយនឹងកិច្ចការសាមញ្ញជាងនេះ។

សំណុំពាក្យបញ្ជា

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

ខ្ញុំត្រូវការ AI ដើម្បីអាចអាន និងបញ្ចេញទិន្នន័យ ធ្វើការជាមួយអង្គចងចាំ អនុវត្តការគណនា និងប្រតិបត្តិការឡូជីខល ធ្វើការផ្លាស់ប្តូរ និងរង្វិលជុំ។ ខ្ញុំបានឆ្លងកាត់ភាសា Brainfuck ដែលមានតែ 8 ពាក្យបញ្ជា ហើយអាចធ្វើការគណនាណាមួយបាន (មានន័យថា វាគឺជា Turing ពេញលេញ)។ ជាគោលការណ៍ វាស័ក្តិសមសម្រាប់ការសរសេរកម្មវិធីហ្សែន ប៉ុន្តែខ្ញុំបានទៅបន្ថែមទៀត។

ខ្ញុំឆ្ងល់៖ តើចំនួនពាក្យបញ្ជាអប្បបរមាដែលត្រូវការដើម្បីអនុវត្តក្បួនដោះស្រាយណាមួយគឺជាអ្វី? ដូចដែលវាបានប្រែក្លាយថាមានតែមួយ!

ដំណើរការ URISC មានការណែនាំតែមួយប៉ុណ្ណោះ៖ ដក និងរំលងការណែនាំបន្ទាប់ ប្រសិនបើ subtrahend ធំជាង minuend ។ នេះគឺគ្រប់គ្រាន់ដើម្បីកសាងក្បួនដោះស្រាយណាមួយ។

Oleg Mazonka បានទៅបន្ថែមទៀត; ការណែនាំមានអាសយដ្ឋានបី ចម្លងមួយប៊ីតពីអាសយដ្ឋានអង្គចងចាំទីមួយទៅអាសយដ្ឋានអង្គចងចាំទីពីរ ហើយផ្ទេរការគ្រប់គ្រងទៅអាសយដ្ឋានទីបី។

ដោយខ្ចីគំនិតរបស់ Oleg ដើម្បីសម្រួលការងារ ខ្ញុំបានបង្កើតពាក្យបញ្ជា SumIfJump ។ ពាក្យបញ្ជាមាន operands បួន៖ A, B, C, D ហើយធ្វើដូចខាងក្រោម៖ ទៅក្រឡានៅអាសយដ្ឋាន B វាបន្ថែមទិន្នន័យពីក្រឡានៅអាសយដ្ឋាន A ប្រសិនបើតម្លៃធំជាងតម្លៃដែលបានបញ្ជាក់* នោះវាទៅអាសយដ្ឋាន C បើមិនដូច្នោះទេវាទៅអាសយដ្ឋាន D ។

ចំណាំ

* ក្នុងករណីនេះ 128 ត្រូវបានគេប្រើ - ពាក់កណ្តាលប្រវែងនៃហ្សែន។


នៅពេល operand A ចូលប្រើទីតាំងអង្គចងចាំ N0 ការបញ្ចូលទិន្នន័យកើតឡើង ហើយនៅពេលដែល operand A ចូលប្រើទីតាំង memory N1 លទ្ធផលនឹងកើតឡើង។

ខាងក្រោមនេះគឺជាកូដ SumIfJump នៅក្នុង FreePascal ( analogue ឥតគិតថ្លៃរបស់ Delphi) ។

ដំណើរការកម្មវិធី RunProg(s: TData); var a, b, c, d: TData; ចាប់ផ្តើម Inc (NSStep); ប្រសិនបើ NStep > MaxStep បន្ទាប់មកចាប់ផ្តើម ProgResult:= "MaxStep"; ចេញ; បញ្ចប់; a:=s; b:= s + 1; c:= s + 2; d:= s + 3; a:= Prog[a]; b:= Prog[b]; c:= Prog[c]; d:=Prog[d]; ប្រសិនបើ a = 0 បន្ទាប់មកចាប់ផ្តើម ProgResult:= "បញ្ចូល"; ចេញ; បញ្ចប់; ប្រសិនបើ a = 1 បន្ទាប់មកចាប់ផ្តើម ProgResult:= "លទ្ធផល"; ចេញ; បញ្ចប់; Prog[b] := Prog[b] + Prog[a]; ប្រសិនបើ Prog[b]< ProgLength div 2 then RunProg(c) else RunProg(d); end;
SumIfJump អនុវត្តកូដកែប្រែខ្លួនឯង។ អាចប្រតិបត្តិក្បួនដោះស្រាយណាមួយដែលមាននៅក្នុងភាសាសរសេរកម្មវិធីធម្មតា។ កូដមានភាពងាយស្រួលក្នុងការផ្លាស់ប្តូរ និងអាចទប់ទល់នឹងឧបាយកលណាមួយ។

កិច្ចការសាមញ្ញ

ដូច្នេះ AI របស់យើងមានពាក្យបញ្ជាតែមួយប៉ុណ្ណោះ។ រហូតមកដល់ពេលនេះ tic-tac-toe គឺជាហ្គេមដ៏លំបាកសម្រាប់គាត់ ដូច្នេះហើយខ្ញុំចាប់ផ្តើមជាមួយនឹងហ្គេមដែលសាមញ្ញជាងនេះ។

bot បង្កើតលេខចៃដន្យ ហើយ AI ត្រូវតែអានទិន្នន័យ និងផ្តល់ចម្លើយ។ ប្រសិនបើលេខធំជាងមធ្យម (នៃជួរនៃលេខចៃដន្យ) AI គួរតែបង្កើតលេខតិចជាងមធ្យម និងច្រាសមកវិញ។

ហ្សែននៃ AI របស់យើងមានកោសិកាចំនួន 256 ដែលមានតម្លៃពី 0 ដល់ 255 ។ តម្លៃនីមួយៗគឺជាអង្គចងចាំ លេខកូដ និងអាសយដ្ឋាន។ ចំនួននៃជំហានប្រតិបត្តិកូដត្រូវបានកំណត់ត្រឹម 256។ ប្រតិបត្តិករត្រូវបានអានម្តងមួយៗ។

ដំបូង genome ត្រូវបានបង្កើតឡើងដោយសំណុំនៃលេខចៃដន្យ ដូច្នេះ AI មិនដឹងថាវាត្រូវការអ្វីដើម្បីលេងនោះទេ។ លើសពីនេះទៅទៀត គាត់មិនដឹងថាគាត់ត្រូវការបញ្ចូល និងបញ្ចេញទិន្នន័យតាមលំដាប់លំដោយនៅពេលឆ្លើយតបទៅនឹង bot នោះទេ។

ចំនួនប្រជាជននិងការជ្រើសរើស

ចំនួនប្រជាជនដំបូងមាន 256 AI ដែលចាប់ផ្តើមលេងជាមួយ bot ។ ប្រសិនបើ AI អនុវត្តសកម្មភាពត្រឹមត្រូវ ឧទាហរណ៍ វាបានស្នើសុំទិន្នន័យសម្រាប់ការបញ្ចូល ហើយបន្ទាប់មកបញ្ចេញអ្វីមួយ នោះ AI ទទួលបានពិន្ទុ។ សកម្មភាពត្រឹមត្រូវកាន់តែច្រើន ចំណុចកាន់តែច្រើន។

AI ចំនួន 16 ដែលរកបានពិន្ទុច្រើនជាងគេនីមួយៗបង្កើតបាន 15 កូនចៅ ហើយបន្តចូលរួមក្នុងហ្គេមនេះ។ កូនចៅគឺជាមនុស្សផ្លាស់ប្តូរ។ ការផ្លាស់ប្តូរកើតឡើងដោយការជំនួសក្រឡាចៃដន្យមួយនៅក្នុងច្បាប់ចម្លងនៃមេជាមួយនឹងតម្លៃចៃដន្យ។

ប្រសិនបើគ្មាន AI ទទួលបានពិន្ទុក្នុងចំនួនប្រជាជនដំបូងទេ នោះចំនួនប្រជាជនបន្ទាប់ត្រូវបានបង្កើតឡើង។ ហើយបន្តរហូតដល់ AI មួយក្នុងចំណោម AI ចាប់ផ្តើមធ្វើសកម្មភាពត្រឹមត្រូវ និងបង្កើតកូនចៅ "ត្រឹមត្រូវ" ។

ការវិវត្តន៍


ការផ្លាស់ប្តូរជំនាន់រាប់ពាន់បានកើតឡើងរវាងព្រឹត្តិការណ៍សំខាន់ៗ។ កម្មវិធីនេះត្រូវបានដំណើរការជាខ្សែស្រឡាយជាច្រើននៅលើ Core i7។ ការគណនាចំណាយពេលប្រហែល 15 នាទី។

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

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

ទីបំផុត ខ្ញុំបានធ្វើដូចគ្នាជាមួយនឹងហ្គេម tic-tac-toe ។ ទំហំហ្សែនដែលបានប្រើគឺដូចគ្នានឹងករណីដំបូងដែរ។ ចំនួនជំហានត្រូវបានកើនឡើងដល់ 1024 និងចំនួនប្រជាជនដល់ 64 (សម្រាប់ការគណនាកាន់តែលឿន)។ ការគណនាចំណាយពេលយូរបន្តិច។ អ្វីគ្រប់យ៉ាងបានកើតឡើងយោងទៅតាមសេណារីយ៉ូប្រហាក់ប្រហែល។

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

កូន​ប្រុស​របស់​ខ្ញុំ​បាន​សុំ​ឱ្យ​ខ្ញុំ​សរសេរ​កម្មវិធី​មួយ​ដើម្បី​ឱ្យ AIs លេង​ក្នុង​ចំណោម​ខ្លួន​គេ​មិន​មែន​ជាមួយ bot ទេ។ មានគំនិតដើម្បីធ្វើដូចគ្នាសម្រាប់ហ្គេម checkers ឬ Go ទោះបីជាយ៉ាងណាក៏ដោយ ខ្ញុំលែងមានពេលគ្រប់គ្រាន់សម្រាប់រឿងនេះទៀតហើយ។

វិធីសាស្រ្តតែមួយគត់ដែលខ្ញុំបានប្រើដើម្បីទទួលបានបុគ្គលថ្មីគឺការផ្លាស់ប្តូរ។ អ្នកក៏អាចប្រើប្រភេទ Crossover និង Inversion ផងដែរ។ ប្រហែលជាវិធីសាស្រ្តទាំងនេះនឹងបង្កើនល្បឿននៃការទទួលបានលទ្ធផលដែលត្រូវការ។

នៅទីបញ្ចប់ គំនិតមួយបានកើត៖ ដើម្បីផ្តល់ឱ្យ AI នូវសមត្ថភាពក្នុងការគ្រប់គ្រងដំណើរការទាំងអស់នៅលើកុំព្យូទ័រ និងប្រកួតប្រជែងសម្រាប់ធនធានកុំព្យូទ័រ។ ភ្ជាប់កុំព្យូទ័ររបស់អ្នកទៅអ៊ីនធឺណិត ហើយប្រើអាងចិញ្ចឹមត្រី Bitcoin ចាស់ជាថាមពលកុំព្យូទ័រ...

ដូចដែលអ្នកសរសេរប្លុកបាននិយាយខណៈពេលកំពុងធ្វើការពិសោធន៍ស្រដៀងគ្នា

បញ្ញាសិប្បនិម្មិត៖ របៀបនិងកន្លែងដែលត្រូវសិក្សា - អ្នកជំនាញឆ្លើយ

“ខ្ញុំចង់ធ្វើ AI ។ តើអ្វីដែលមានតម្លៃសិក្សា? តើខ្ញុំគួរប្រើភាសាអ្វី? តើខ្ញុំគួរសិក្សា និងធ្វើការនៅក្នុងអង្គការអ្វីខ្លះ?

យើង​បាន​ងាក​ទៅ​រក​អ្នក​ជំនាញ​របស់​យើង​សម្រាប់​ការ​បំភ្លឺ ហើយ​យើង​បង្ហាញ​ចម្លើយ​ដែល​ទទួល​បាន​ចំពោះ​ការ​ចាប់​អារម្មណ៍​របស់​អ្នក។

វាអាស្រ័យលើការបណ្តុះបណ្តាលជាមូលដ្ឋានរបស់អ្នក។ ជាដំបូង អ្នកត្រូវការវប្បធម៌គណិតវិទ្យា (ចំណេះដឹងអំពីស្ថិតិ ទ្រឹស្ដីប្រូបាប៊ីលីតេ គណិតវិទ្យាដាច់ពីគ្នា ពិជគណិតលីនេអ៊ែរ ការវិភាគ។ល។) និងឆន្ទៈរៀនឱ្យបានឆាប់។ នៅពេលអនុវត្តវិធីសាស្ត្រ AI ការសរសេរកម្មវិធី (ក្បួនដោះស្រាយ រចនាសម្ព័ន្ធទិន្នន័យ OOP ។ល។) នឹងត្រូវបានទាមទារ។

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

ខ្ញុំសូមណែនាំឱ្យសិក្សាដោយល្អ។ សាកលវិទ្យាល័យរុស្ស៊ី! ឧទាហរណ៍ MIPT, MSU, និង HSE មាននាយកដ្ឋានដែលត្រូវគ្នា។ វគ្គសិក្សាតាមប្រធានបទជាច្រើនមាននៅលើ Coursera, edX, Udacity, Udemy និងវេទិកា MOOC ផ្សេងទៀត។ អង្គការឈានមុខគេមួយចំនួនមានកម្មវិធីបណ្តុះបណ្តាលផ្ទាល់ខ្លួននៅក្នុងវិស័យ AI (ឧទាហរណ៍ សាលាវិភាគទិន្នន័យនៅ Yandex)។

បញ្ហាកម្មវិធីដែលដោះស្រាយដោយវិធីសាស្ត្រ AI អាចត្រូវបានរកឃើញនៅកន្លែងផ្សេងៗគ្នា។ ធនាគារ, វិស័យហិរញ្ញវត្ថុ, ការប្រឹក្សា, ការលក់រាយ, ពាណិជ្ជកម្មអេឡិចត្រូនិក, ម៉ាស៊ីនស្វែងរកសេវាកម្មប្រៃសណីយ៍ ឧស្សាហកម្មហ្គេម ឧស្សាហកម្មប្រព័ន្ធសុវត្ថិភាព ហើយជាការពិតណាស់ Avito - ទាំងអស់ត្រូវការអ្នកឯកទេសនៃគុណវុឌ្ឍិផ្សេងៗ។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

យើងមានគម្រោង fintech ទាក់ទងនឹងការរៀនម៉ាស៊ីន និងចក្ខុវិស័យកុំព្យូទ័រ ដែលក្នុងនោះអ្នកអភិវឌ្ឍន៍ដំបូងរបស់វាបានសរសេរអ្វីគ្រប់យ៉ាងនៅក្នុង C++ បន្ទាប់មកអ្នកអភិវឌ្ឍន៍បានមកជាមួយ និងសរសេរឡើងវិញនូវអ្វីគ្រប់យ៉ាងនៅក្នុង Python ។ ដូច្នេះ ភាសាមិនមែនជារឿងសំខាន់បំផុតនៅទីនេះទេ ព្រោះភាសាគឺជាឧបករណ៍ដំបូង និងសំខាន់បំផុត ហើយវាអាស្រ័យលើអ្នកពីរបៀបប្រើវា។ វាគ្រាន់តែថាបញ្ហាភាសាខ្លះអាចដោះស្រាយបានលឿនជាង ហើយខ្លះទៀតយឺតជាង។

វាពិបាកក្នុងការនិយាយថាកន្លែងដែលត្រូវសិក្សា - បុរសរបស់យើងទាំងអស់បានសិក្សាដោយខ្លួនឯង សំណាងល្អមានអ៊ីនធឺណិត និង Google ។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

ខ្ញុំអាចណែនាំអ្នកឱ្យរៀបចំខ្លួនអ្នកតាំងពីដំបូងសម្រាប់ការពិតដែលថាអ្នកនឹងត្រូវសិក្សាច្រើន។ ដោយមិនគិតពីអ្វីដែលមានន័យថា "ធ្វើ AI" - ធ្វើការជាមួយទិន្នន័យធំឬបណ្តាញសរសៃប្រសាទ។ ការអភិវឌ្ឍន៍នៃបច្ចេកវិទ្យា ឬការគាំទ្រ និងការបណ្តុះបណ្តាលប្រព័ន្ធដែលបានអភិវឌ្ឍរួចហើយ។

សូមទទួលយកវិជ្ជាជីវៈដ៏ពេញនិយមរបស់ Data Scientist សម្រាប់ជាប្រយោជន៍នៃភាពជាក់លាក់។ តើបុគ្គលនេះកំពុងធ្វើអ្វី? ជាទូទៅ វាប្រមូល វិភាគ និងរៀបចំទិន្នន័យធំៗសម្រាប់ប្រើប្រាស់។ ទាំងនេះគឺជាអ្វីដែល AI រីកចម្រើន និងបណ្តុះបណ្តាល។ តើ Data Scientist គួរដឹង និងអាចធ្វើអ្វីបាន? ការវិភាគឋិតិវន្ត និងការធ្វើគំរូគណិតវិទ្យាតាមលំនាំដើម និងនៅកម្រិតនៃភាពស្ទាត់ជំនាញ។ ភាសា - និយាយថា R, SAS, Python ។ វា​ក៏​ជា​ការ​ល្អ​ដែរ​ក្នុង​ការ​មាន​បទពិសោធន៍​អភិវឌ្ឍន៍​ខ្លះ។ ជាការប្រសើរណាស់, និយាយជាទូទៅ, អ្នកវិទ្យាសាស្ត្រទិន្នន័យល្អគួរមានអារម្មណ៍ជឿជាក់លើមូលដ្ឋានទិន្នន័យ, ក្បួនដោះស្រាយ, និងការមើលឃើញទិន្នន័យ។

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

បាទ វានឹងចំណាយពេលបន្តិច។ ប៉ុន្តែ​ហ្គេម​នេះ​គឺ​ស័ក្តិសម​នឹង​ការ​ប្រើ​ប្រាស់​សម្រាប់​ការ​ប្រើ​ប្រាស់​ទិន្នន័យ​ ព្រោះ​អ្នក​វិទ្យាសាស្ត្រ​ទិន្នន័យ​ល្អ​មាន​ជោគជ័យ​ខ្លាំង​ណាស់។ ហើយថ្លៃណាស់។ ក៏មានចំណុចមួយទៀតដែរ។ ម្យ៉ាងវិញទៀត បញ្ញាសិប្បនិម្មិត គឺមិនមែនគ្រាន់តែជាវត្ថុនៃការឃោសនាបំផ្លើសនោះទេ ប៉ុន្តែជាបច្ចេកវិទ្យាដែលឈានដល់ដំណាក់កាលផលិតភាពទាំងស្រុង។ ម្យ៉ាងវិញទៀត AI នៅតែកំពុងអភិវឌ្ឍ។ ការអភិវឌ្ឍន៍នេះទាមទារធនធានច្រើន ជំនាញ និងថវិកាច្រើន។ រហូត​មក​ដល់​ពេល​នេះ​គឺ​ជា​កម្រិត​លីគ​ធំ។ ខ្ញុំនឹងនិយាយឱ្យច្បាស់ឥឡូវនេះ ប៉ុន្តែប្រសិនបើអ្នកចង់ក្លាយជាអ្នកនាំមុខគេនៃការវាយប្រហារ និងជំរុញការរីកចំរើនដោយដៃរបស់អ្នកផ្ទាល់ គោលដៅសម្រាប់ក្រុមហ៊ុនដូចជា Facebook ឬ Amazon ។

ទន្ទឹមនឹងនេះដែរ បច្ចេកវិទ្យានេះកំពុងត្រូវបានប្រើប្រាស់ក្នុងវិស័យមួយចំនួនដូចជា៖ នៅក្នុងវិស័យធនាគារ ទូរគមនាគមន៍ សហគ្រាសឧស្សាហកម្មយក្ស និងការលក់រាយ។ ហើយ​ពួកគេ​ត្រូវ​ការ​មនុស្ស​ដែល​អាច​គាំទ្រ​វា​រួច​ទៅ​ហើយ។ Gartner ព្យាករណ៍ថានៅឆ្នាំ 2020 20% នៃអាជីវកម្មទាំងអស់នៅក្នុង ប្រទេសអភិវឌ្ឍន៍នឹងជួល បុគ្គលិកពិសេសដើម្បីបណ្តុះបណ្តាលបណ្តាញសរសៃប្រសាទដែលបានប្រើនៅក្នុងក្រុមហ៊ុនទាំងនេះ។ ដូច្នេះ​នៅ​មាន​ពេល​បន្តិច​ទៀត​ដើម្បី​រៀន​ដោយ​ខ្លួន​ឯង។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

ឥឡូវនេះ AI កំពុងអភិវឌ្ឍយ៉ាងសកម្ម ហើយវាពិបាកក្នុងការទស្សន៍ទាយដប់ឆ្នាំជាមុន។ ក្នុងរយៈពេល 2 ទៅ 3 ឆ្នាំខាងមុខ វិធីសាស្រ្តដែលផ្អែកលើបណ្តាញសរសៃប្រសាទ និងការគណនា GPU នឹងគ្របដណ្តប់។ អ្នកដឹកនាំនៅក្នុងតំបន់នេះគឺ Python ជាមួយនឹងបរិយាកាសអន្តរកម្ម Jupyter និងបណ្ណាល័យ numpy, scipy, និង tensorflow ។

មានវគ្គសិក្សាតាមអ៊ីនធឺណិតជាច្រើនដែលផ្តល់នូវការយល់ដឹងជាមូលដ្ឋានអំពីបច្ចេកវិទ្យាទាំងនេះ និង គោលការណ៍ទូទៅ AI ឧទាហរណ៍វគ្គសិក្សារបស់ Andrew Ng ។ ហើយនៅក្នុងលក្ខខណ្ឌនៃការបង្រៀនប្រធានបទនេះប្រទេសរុស្ស៊ីឥឡូវនេះមានប្រសិទ្ធភាពបំផុត។ ការអប់រំដោយខ្លួនឯងឬនៅក្នុងក្រុមចំណាប់អារម្មណ៍ក្នុងតំបន់ (ឧទាហរណ៍នៅទីក្រុងមូស្គូ ខ្ញុំដឹងពីអត្ថិភាពនៃក្រុមយ៉ាងហោចណាស់ពីរបីដែលមនុស្សចែករំលែកបទពិសោធន៍ និងចំណេះដឹង)។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

សព្វថ្ងៃនេះ ផ្នែកដែលរីកចម្រើនយ៉ាងឆាប់រហ័សបំផុតនៃបញ្ញាសិប្បនិម្មិត គឺប្រហែលជាបណ្តាញសរសៃប្រសាទ។
ការសិក្សាអំពីបណ្តាញសរសៃប្រសាទ និង AI គួរតែចាប់ផ្តើមជាមួយនឹងជំនាញពីរផ្នែកនៃគណិតវិទ្យា - ពិជគណិតលីនេអ៊ែរ និងទ្រឹស្តីប្រូបាប៊ីលីតេ។ នេះ​ជា​ចំនួន​អប្បបរមា​ជា​កាតព្វកិច្ច ជា​សសរស្តម្ភ​ដែល​មិន​អាច​រង្គោះរង្គើ​បាន​នៃ​បញ្ញា​សិប្បនិម្មិត។ បេក្ខជនដែលចង់ស្វែងយល់ពីមូលដ្ឋានគ្រឹះនៃ AI នៅពេលជ្រើសរើសសាកលវិទ្យាល័យ តាមគំនិតរបស់ខ្ញុំគួរតែយកចិត្តទុកដាក់លើមហាវិទ្យាល័យដែលមានសាលាគណិតវិទ្យាខ្លាំង។

ជំហានបន្ទាប់គឺសិក្សាពីបញ្ហានៃបញ្ហា។ មានអក្សរសិល្ប៍យ៉ាងច្រើន ទាំងការអប់រំ និងឯកទេស។ ការបោះពុម្ពភាគច្រើនលើប្រធានបទនៃបញ្ញាសិប្បនិម្មិត និងបណ្តាញសរសៃប្រសាទត្រូវបានសរសេរជាភាសាអង់គ្លេស ប៉ុន្តែសម្ភារៈជាភាសារុស្សីក៏ត្រូវបានបោះពុម្ពផងដែរ។ ជាឧទាហរណ៍ អក្សរសិល្ប៍ដែលមានប្រយោជន៍អាចត្រូវបានរកឃើញនៅក្នុងបណ្ណាល័យឌីជីថលសាធារណៈ arxiv.org។

ប្រសិនបើយើងនិយាយអំពីផ្នែកនៃសកម្មភាព នៅទីនេះយើងអាចបញ្ជាក់ពីការបណ្តុះបណ្តាលនៃបណ្តាញសរសៃប្រសាទដែលបានអនុវត្ត និងការអភិវឌ្ឍន៍នៃបណ្តាញសរសៃប្រសាទជំនាន់ថ្មីទាំងស្រុង។ ឧទាហរណ៍ដ៏គួរឱ្យចាប់អារម្មណ៍មួយ៖ មានជំនាញពិសេសដ៏ពេញនិយមមួយឥឡូវនេះ - "អ្នកវិទ្យាសាស្ត្រទិន្នន័យ" (Data Scientist) ។ ទាំងនេះគឺជាអ្នកអភិវឌ្ឍន៍ដែលជាធម្មតាសិក្សា និងរៀបចំសំណុំទិន្នន័យជាក់លាក់សម្រាប់ការបណ្តុះបណ្តាលបណ្តាញសរសៃប្រសាទនៅក្នុងតំបន់កម្មវិធីជាក់លាក់។ ដើម្បីសង្ខេប ខ្ញុំចង់បញ្ជាក់ថា ឯកទេសនីមួយៗ ទាមទារផ្លូវនៃការរៀបចំដាច់ដោយឡែក។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

មុនពេលចាប់ផ្តើមវគ្គសិក្សាឯកទេស អ្នកត្រូវសិក្សាពិជគណិតលីនេអ៊ែរ និងស្ថិតិ។ ខ្ញុំសូមផ្តល់អនុសាសន៍ឱ្យចាប់ផ្តើមការជ្រមុជរបស់អ្នកនៅក្នុង AI ជាមួយនឹងសៀវភៅសិក្សា "Machine Learning. វិទ្យាសាស្រ្ត និងសិល្បៈនៃការកសាងក្បួនដោះស្រាយដែលទាញយកចំណេះដឹងពីទិន្នន័យ" គឺជាមូលដ្ឋានគ្រឹះដ៏ល្អសម្រាប់អ្នកចាប់ផ្តើមដំបូង។ នៅលើ Coursera វាគឺមានតម្លៃក្នុងការស្តាប់ការបង្រៀនណែនាំដោយ K. Vorontsov (ខ្ញុំសង្កត់ធ្ងន់ថាពួកគេទាមទារចំណេះដឹងល្អអំពីពិជគណិតលីនេអ៊ែរ) និងវគ្គសិក្សា "Machine Learning" នៅសាកលវិទ្យាល័យ Stanford ដែលបង្រៀនដោយ Andrew Ng សាស្រ្តាចារ្យ និងជាប្រធាន Baidu AI ក្រុម/Google Brain។

ភាគច្រើនត្រូវបានសរសេរជា Python បន្ទាប់មក R និង Lua ។

ប្រសិនបើយើងនិយាយអំពី ស្ថាប័នអប់រំវាជាការប្រសើរក្នុងការចុះឈ្មោះចូលរៀននៅនាយកដ្ឋានគណិតវិទ្យាអនុវត្ត និងវិទ្យាសាស្ត្រកុំព្យូទ័រ មានកម្មវិធីអប់រំសមរម្យ។ ដើម្បីសាកល្បងសមត្ថភាពរបស់អ្នក អ្នកអាចចូលរួមក្នុងការប្រកួតប្រជែង Kaggle ដែលម៉ាកល្បីៗទូទាំងពិភពលោកផ្តល់ជូនករណីរបស់ពួកគេ។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

នៅក្នុងអាជីវកម្មណាមួយ មុនពេលចាប់ផ្តើមគម្រោង វាជាការល្អក្នុងការទទួលបានមូលដ្ឋានទ្រឹស្តី។ មានកន្លែងជាច្រើនដែលអ្នកអាចទទួលបានសញ្ញាប័ត្រអនុបណ្ឌិតផ្លូវការក្នុងវិស័យនេះ ឬកែលម្អគុណវុឌ្ឍិរបស់អ្នក។ ឧទាហរណ៍ Skoltech ផ្តល់ជូននូវកម្មវិធីថ្នាក់អនុបណ្ឌិតនៅក្នុងផ្នែកនៃ "វិទ្យាសាស្ត្រកុំព្យូទ័រ និងវិស្វកម្ម" និង "វិទ្យាសាស្ត្រទិន្នន័យ" ដែលរួមបញ្ចូលវគ្គសិក្សានៅក្នុង "ការរៀនម៉ាស៊ីន" និង "ដំណើរការភាសាធម្មជាតិ" ។ អ្នកក៏អាចលើកឡើងពីវិទ្យាស្ថានប្រព័ន្ធអ៊ីនធឺណេតឆ្លាតវៃនៃសាកលវិទ្យាល័យស្រាវជ្រាវជាតិនុយក្លេអ៊ែរ MEPhI មហាវិទ្យាល័យគណិតវិទ្យា និងស៊ីបប៊ឺនេទិចនៃសាកលវិទ្យាល័យរដ្ឋម៉ូស្គូ និងនាយកដ្ឋានប្រព័ន្ធឆ្លាតវៃនៃ MIPT ។

ប្រសិនបើអ្នកមានការអប់រំផ្លូវការរួចហើយ មានវគ្គសិក្សាជាច្រើនដែលមាននៅលើវេទិកា MOOC ផ្សេងៗ។ ជាឧទាហរណ៍ EDx.org ផ្តល់ជូននូវវគ្គសិក្សាបញ្ញាសិប្បនិមិត្តពី Microsoft និងសាកលវិទ្យាល័យ Columbia ដែលក្រោយមកទៀតផ្តល់នូវកម្មវិធីមីក្រូម៉ាស្ទ័រក្នុងតម្លៃសមរម្យ។ ខ្ញុំចង់កត់សម្គាល់ជាពិសេសថា ជាធម្មតាអ្នកអាចទទួលបានចំណេះដឹងដោយខ្លួនឯងដោយមិនគិតថ្លៃ អ្នកគ្រាន់តែចំណាយសម្រាប់វិញ្ញាបនបត្រប្រសិនបើវាត្រូវការសម្រាប់ប្រវត្តិរូបរបស់អ្នក។

ប្រសិនបើអ្នកចង់ "ជ្រមុជទឹកឱ្យជ្រៅ" ទៅក្នុងប្រធានបទ ក្រុមហ៊ុនមួយចំនួននៅទីក្រុងមូស្គូ ផ្តល់ជូននូវវគ្គសិក្សាដែលពឹងផ្អែកខ្លាំងរយៈពេលមួយសប្តាហ៍ជាមួយនឹងថ្នាក់អនុវត្តជាក់ស្តែង ហើយថែមទាំងផ្តល់ឧបករណ៍សម្រាប់ការពិសោធន៍ (ឧទាហរណ៍ newprolab.com) ទោះជាយ៉ាងណាក៏ដោយ តម្លៃនៃវគ្គសិក្សាបែបនេះ ចាប់ផ្តើមពីរាប់សិបពាន់រូប្លិ៍។

ក្នុងចំណោមក្រុមហ៊ុនដែលអភិវឌ្ឍបញ្ញាសិប្បនិម្មិត អ្នកប្រហែលជាស្គាល់ Yandex និង Sberbank ប៉ុន្តែមានក្រុមហ៊ុនជាច្រើនទៀតដែលមានទំហំខុសៗគ្នា។ ជាឧទាហរណ៍ ក្នុងសប្តាហ៍នេះ ក្រសួងការពារជាតិបានបើកកម្មវិធី ERA Military Innovation Technopolis នៅ Anapa ដែលជាប្រធានបទមួយក្នុងចំណោមប្រធានបទនោះគឺការអភិវឌ្ឍន៍ AI សម្រាប់តម្រូវការយោធា។

លើក​កម្ពស់​ការ​បន្ទាប​ខ្លួន

មុននឹងសិក្សាពីបញ្ញាសិប្បនិមិត្ត យើងត្រូវសម្រេចចិត្តសំណួរជាមូលដ្ឋានមួយ៖ តើយើងគួរលេបថ្នាំក្រហម ឬពណ៌ខៀវ។
ថ្នាំគ្រាប់ពណ៌ក្រហមគឺដើម្បីក្លាយជាអ្នកអភិវឌ្ឍន៍ ហើយធ្លាក់ចូលទៅក្នុងពិភពដ៏ឃោរឃៅនៃវិធីសាស្រ្តស្ថិតិ ក្បួនដោះស្រាយ និងការយល់ច្បាស់ឥតឈប់ឈរនៃអ្វីដែលមិនស្គាល់។ ម្យ៉ាងវិញទៀត អ្នកមិនចាំបាច់ប្រញាប់ប្រញាល់ចូលទៅក្នុង "រន្ធទន្សាយ" ភ្លាមៗនោះទេ៖ អ្នកអាចក្លាយជាអ្នកគ្រប់គ្រង និងបង្កើត AI ឧទាហរណ៍ ជាអ្នកគ្រប់គ្រងគម្រោង។ ទាំងនេះគឺជាផ្លូវពីរផ្សេងគ្នាជាមូលដ្ឋាន។

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

មានតែបន្ទាប់ពីមូលដ្ឋានត្រូវបានស្ទាត់ជំនាញប៉ុណ្ណោះដែលវាមានតម្លៃសិក្សាវិធីសាស្រ្តឯកទេសបន្ថែមទៀត: ដើមឈើការសម្រេចចិត្តនិងក្រុមនៃពួកគេ។ នៅដំណាក់កាលនេះ អ្នកត្រូវចូលជ្រៅទៅក្នុងវិធីសាស្រ្តជាមូលដ្ឋាននៃការសាងសង់ និងការបណ្តុះបណ្តាលគំរូ - ពួកគេត្រូវបានលាក់នៅពីក្រោយពាក្យសុំទាន លើកស្ទួយ ជង់ ឬលាយបញ្ចូលគ្នា។

វាក៏មានតម្លៃផងដែរក្នុងការរៀនអំពីវិធីសាស្រ្តសម្រាប់ការគ្រប់គ្រងការបណ្តុះបណ្តាលគំរូ ("ing" មួយផ្សេងទៀត - overfitting) ។

ហើយទីបំផុតកម្រិត Jedi ខ្លាំង - ទទួលបានចំណេះដឹងឯកទេសខ្ពស់។ ជាឧទាហរណ៍ ការរៀនស៊ីជម្រៅនឹងទាមទារឱ្យមានការស្ទាត់ជំនាញនៃស្ថាបត្យកម្ម និងក្បួនដោះស្រាយការចុះជម្រាលមូលដ្ឋាន។ ប្រសិនបើអ្នកចាប់អារម្មណ៍លើបញ្ហាដំណើរការភាសាធម្មជាតិ ខ្ញុំសូមណែនាំឱ្យសិក្សាបណ្តាញសរសៃប្រសាទដែលកើតឡើងដដែលៗ។ ហើយអ្នកបង្កើត algorithms នាពេលអនាគតសម្រាប់ដំណើរការរូបភាព និងវីដេអូ គួរតែពិនិត្យមើលឱ្យបានល្អនូវបណ្តាញសរសៃប្រសាទ convolutional ។

រចនាសម្ព័ន្ធពីរចុងក្រោយដែលបានលើកឡើងគឺជាប្លុកអគារនៃស្ថាបត្យកម្មដ៏ពេញនិយមនាពេលបច្ចុប្បន្ននេះ៖ បណ្តាញសត្រូវ (GANs) បណ្តាញទំនាក់ទំនង និងបណ្តាញសំណាញ់។ ដូច្នេះ វានឹងមានប្រយោជន៍ក្នុងការសិក្សាពួកគេ ទោះបីជាអ្នកមិនមានគម្រោងបង្រៀនកុំព្យូទ័រឱ្យមើលឃើញ ឬស្តាប់ក៏ដោយ។

វិធីសាស្រ្តខុសគ្នាទាំងស្រុងក្នុងការសិក្សា AI - ហៅថា "ថ្នាំពណ៌ខៀវ" - ចាប់ផ្តើមដោយការស្វែងរកខ្លួនឯង។ បញ្ញាសិប្បនិម្មិតផ្តល់កំណើតដល់កិច្ចការជាច្រើន និងវិជ្ជាជីវៈទាំងមូល៖ ពីអ្នកគ្រប់គ្រងគម្រោង AI ដល់វិស្វករទិន្នន័យដែលមានសមត្ថភាពរៀបចំទិន្នន័យ សម្អាតវា និងបង្កើតប្រព័ន្ធដែលអាចធ្វើមាត្រដ្ឋាន ផ្ទុក និងអត់ឱនកំហុស។

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

វិធីសាស្រ្ត ML សំខាន់ៗត្រូវបានអនុវត្តជាទម្រង់បណ្ណាល័យដែលត្រៀមរួចជាស្រេចដែលអាចរកបានសម្រាប់ភ្ជាប់ទៅ ភាសាផ្សេងគ្នា. ភាសាដែលពេញនិយមបំផុតនៅក្នុង ML សព្វថ្ងៃនេះគឺ៖ C++, Python និង R.

មានវគ្គសិក្សាជាច្រើនទាំងជាភាសារុស្សី និង ភាសាអង់គ្លេសដូចជា សាលា Yandex នៃការវិភាគទិន្នន័យ វគ្គសិក្សា SkillFactory និង OTUS ។ ប៉ុន្តែមុនពេលវិនិយោគពេលវេលា និងប្រាក់នៅក្នុងការបណ្តុះបណ្តាលឯកទេស ខ្ញុំគិតថាវាមានតម្លៃ "ចូលទៅក្នុងប្រធានបទ"៖ មើលការបង្រៀនបើកចំហនៅលើ YouTube ពីសន្និសីទ DataFest ក្នុងរយៈពេលប៉ុន្មានឆ្នាំកន្លងមកនេះ ទទួលយកវគ្គសិក្សាដោយឥតគិតថ្លៃពី Coursera និង Habrahabr ។

mob_info