Original Title: 神经形态计算——从脉冲神经网络到边缘部署
Source: doi.org/10.13328/j.cnki.jos.000000
Disclaimer: Summary generated by AI based on the provided document. Please refer to the original paper for full scientific accuracy.

ការគណនាបែបសរសៃប្រសាទ (Neuromorphic Computing) - ពីបណ្តាញសរសៃប្រសាទ Spiking ដល់ការដាក់ពង្រាយនៅគែម (Edge Deployment)

ចំណងជើងដើម៖ 神经形态计算——从脉冲神经网络到边缘部署

អ្នកនិពន្ធ៖ YU Shi-Hang (Nanjing University), YI Meng-Jun (Nanjing University), WU Zhou (Nanjing University), SHEN Fu-Rao (Nanjing University), ZHAO Jian (Nanjing University)

ឆ្នាំបោះពុម្ព៖ 2021 Journal of Software

វិស័យសិក្សា៖ Computer Science / Artificial Intelligence

១. សេចក្តីសង្ខេបប្រតិបត្តិ (Executive Summary)

បញ្ហា (The Problem)៖ បណ្តាញសរសៃប្រសាទ Spiking (SNNs) មានប្រសិទ្ធភាពថាមពលខ្ពស់ និងស័ក្តិសមបំផុតសម្រាប់ការគណនានៅគែម (Edge computing) ដែលមានធនធានមានកំណត់។ ទោះជាយ៉ាងណាក៏ដោយ ការដាក់ពង្រាយ SNNs លើឧបករណ៍ផ្នែករឹង (Hardware) ជួបប្រទះបញ្ហាប្រឈមជាច្រើនទាក់ទងនឹងឧបករណ៍ (Toolchains) ការរចនាផ្នែករឹង និងភាពធន់នឹងកំហុស (Fault tolerance)។

វិធីសាស្ត្រ (The Methodology)៖ ឯកសារនេះផ្តល់នូវការពិនិត្យឡើងវិញយ៉ាងទូលំទូលាយ (Comprehensive review) ចាប់ពីគោលការណ៍នៃគំរូកម្មវិធី SNN រហូតដល់ការអនុវត្តលើប្រព័ន្ធផ្នែករឹងផ្សេងៗ និងបញ្ហាកំហុសប្រព័ន្ធ។

លទ្ធផលសំខាន់ៗ (The Verdict)៖

២. ការវិភាគលើប្រសិទ្ធភាព និងដែនកំណត់ (Performance & Constraints)

វិធីសាស្ត្រ (Method) គុណសម្បត្តិ (Pros) គុណវិបត្តិ (Cons) លទ្ធផលគន្លឹះ (Key Result)
Traditional Artificial Neural Networks (ANNs)
បណ្តាញសរសៃប្រសាទសិប្បនិម្មិតប្រពៃណី (ANNs)
មានភាពចាស់ទុំខ្ពស់ មានក្បួនដោះស្រាយការបណ្តុះបណ្តាលច្បាស់លាស់ (ឧ. Backpropagation) និងផ្តល់នូវភាពសុក្រឹតខ្ពស់បំផុតក្នុងការស្គាល់ទិន្នន័យ។ ស៊ីថាមពលខ្លាំង ត្រូវការធនធានគណនាធំ (GPU) និងមានបញ្ហាកកស្ទះទិន្នន័យដោយសារស្ថាបត្យកម្ម Von Neumann ដែលមិនស័ក្តិសមសម្រាប់ឧបករណ៍គែម (Edge devices)។ ជាទូទៅត្រូវបានប្រើប្រាស់លើឧបករណ៍ដែលមានថាមពលខ្ពស់ ហើយប្រតិបត្តិការមួយអាចស៊ីថាមពលប្រមាណ ៤.៦ pJ (picojoules) នៅក្នុងបន្ទះឈីប 45nm។
Spiking Neural Networks (SNNs)
បណ្តាញសរសៃប្រសាទ Spiking (SNNs)
មានប្រសិទ្ធភាពថាមពលខ្ពស់ខ្លាំង ដំណើរការផ្អែកលើព្រឹត្តិការណ៍ (Event-driven) មានលក្ខណៈស្រដៀងនឹងជីវសាស្ត្រខួរក្បាល និងស័ក្តិសមបំផុតសម្រាប់ការគណនានៅគែមប្រព័ន្ធ (Edge computing)។ ពិបាកក្នុងការបណ្តុះបណ្តាលដោយសារប្រតិបត្តិការ Spikes មិនអាចធ្វើការគណនាដេរីវេ (Non-differentiable) ហើយប្រព័ន្ធផ្នែករឹងនិងទន់នៅមានកម្រិតនៅឡើយ។ ស៊ីថាមពលត្រឹមតែ ០.៩ pJ ក្នុងមួយប្រតិបត្តិការ (ទាបជាង ANN ប្រមាណ ៥ ដង) និងអាចផ្តល់ប្រសិទ្ធភាពថាមពលខ្ពស់ជាង ANN រហូតដល់ ៩ ដងក្នុងដំណើរការ Inference។
Rate Coding
ការបំប្លែងកូដតាមអត្រា (Rate Coding)
សាមញ្ញ ងាយស្រួលក្នុងការទាញយកទម្ងន់ពី ANN មក SNN និងមានភាពធន់ (Robustness) ខ្ពស់ប្រឆាំងនឹងសំលេងរំខាន (Noise)។ ត្រូវការចំនួន Spikes ច្រើនដើម្បីបញ្ជូនព័ត៌មាន ដែលបណ្តាលឱ្យស៊ីថាមពលខ្ពស់ មានភាពយឺតយ៉ាវ និងមិនអាចទាញយកប្រយោជន៍ពីព័ត៌មានពេលវេលាបានពេញលេញ។ ផ្តល់នូវភាពសុក្រឹតប្រហាក់ប្រហែលនឹង ANN នៅក្នុងការបំប្លែង ANN-to-SNN តែប្រើប្រាស់ថាមពលខ្ពស់ជាង Temporal Coding។
Temporal Coding
ការបំប្លែងកូដតាមពេលវេលា (Temporal Coding)
ស៊ីថាមពលទាបបំផុត ដោយសារសរសៃប្រសាទអាចបញ្ចេញ Spike តែមួយដងប៉ុណ្ណោះ ហើយមានល្បឿនឆ្លើយតបលឿនបំផុត។ ក្បួនដោះស្រាយមានភាពស្មុគស្មាញខ្ពស់ ពិបាកក្នុងការបណ្តុះបណ្តាល និងងាយរងឥទ្ធិពលពីសំលេងរំខាន (Noise)។ អាចកាត់បន្ថយចំនួន Spikes យ៉ាងច្រើនសន្ធឹកសន្ធាប់ ដែលជួយសន្សំសំចៃថាមពលបានយ៉ាងមានប្រសិទ្ធភាពនៅលើឧបករណ៍ Edge AI។

ការចំណាយលើធនធាន (Resource Cost)៖ ការដាក់ពង្រាយ SNN តម្រូវឱ្យមានផ្នែកទន់ពិសេស និងប្រព័ន្ធផ្នែករឹងកម្រិតខ្ពស់ ដើម្បីទាញយកអត្ថប្រយោជន៍ពេញលេញពីសន្សំសំចៃថាមពលរបស់វា។

៣. ការពិនិត្យសម្រាប់បរិបទកម្ពុជា/អាស៊ីអាគ្នេយ៍

ភាពលំអៀងនៃទិន្នន័យ (Data Bias)៖

ឯកសារនេះគឺជាអត្ថបទរំលឹកឡើងវិញ (Review paper) ដែលពឹងផ្អែកលើសំណុំទិន្នន័យស្រាវជ្រាវជាសកល (ដូចជា MNIST, CIFAR) និងការអភិវឌ្ឍផ្នែករឹងពីក្រុមហ៊ុនធំៗដូចជា IBM និង Intel។ ការស្រាវជ្រាវភាគច្រើនតម្រូវឱ្យមានមន្ទីរពិសោធន៍បច្ចេកវិទ្យាកម្រិតខ្ពស់សម្រាប់ការរចនាបន្ទះឈីប ដែលអាចជាឧបសគ្គសម្រាប់កម្ពុជាដោយសារខ្វះខាតហេដ្ឋារចនាសម្ព័ន្ធផលិត និងតេស្តផ្នែករឹង (Hardware manufacturing infrastructure) ក៏ដូចជាធនធានស្រាវជ្រាវ។

លទ្ធភាពនៃការអនុវត្ត (Applicability)៖

ទោះជាមានឧបសគ្គផ្នែករចនាបន្ទះឈីបក្តី ការយល់ដឹង និងការប្រើប្រាស់ SNN លើបច្ចេកវិទ្យា Edge Computing គឺមានអត្ថប្រយោជន៍យ៉ាងធំធេងសម្រាប់បរិបទប្រទេសកម្ពុជា។

ការចាប់យកបច្ចេកវិទ្យា SNN និង Neuromorphic អាចជួយឲ្យស្ថាប័នស្រាវជ្រាវ និងក្រុមហ៊ុនបច្ចេកវិទ្យានៅកម្ពុជាបង្កើតដំណោះស្រាយ Edge AI ដែលមានតម្លៃថោក និងប្រើប្រាស់ថាមពលទាបបានយ៉ាងមានប្រសិទ្ធភាព។

៤. ផែនការសកម្មភាពសម្រាប់និស្សិត (Actionable Roadmap)

ដើម្បីអនុវត្តតាមការសិក្សានេះ និស្សិតគួរអនុវត្តតាមជំហានខាងក្រោម៖

  1. សិក្សាមូលដ្ឋានគ្រឹះនៃ SNN និង Neuromorphic Computing: និស្សិតគប្បីចាប់ផ្តើមដោយការសិក្សាពីគំរូសរសៃប្រសាទ Leaky Integrate-and-Fire (LIF) និងយន្តការនៃការបំប្លែងកូដ (Spike Coding) ដោយប្រៀបធៀបវាទៅនឹង ANNs ធម្មតា។
  2. អនុវត្តការក្លែងធ្វើកម្មវិធីដោយប្រើប្រាស់ Frameworks ទំនើប: ដំឡើងនិងអនុវត្តការសរសេរកូដនៅលើបណ្ណាល័យ SpikingJellyBindsNET ដែលដំណើរការលើ PyTorch ដើម្បីបង្កើតគំរូ SNN សម្រាប់ការស្គាល់រូបភាពសាមញ្ញ (ដូចជា MNIST)។
  3. រៀនពីបច្ចេកទេស ANN-to-SNN Conversion: សាកល្បងហ្វឹកហាត់ (Train) គំរូ ANN ធម្មតានៅលើកុំព្យូទ័រ បន្ទាប់មកប្រើប្រាស់ក្បួនដោះស្រាយបំប្លែង (Conversion algorithms) ដើម្បីបំប្លែងវាទៅជា SNN ដោយវាយតម្លៃពីភាពខុសគ្នានៃកម្រិតសុក្រឹតភាព និងប្រសិទ្ធភាពថាមពល។
  4. អនុវត្តការដាក់ពង្រាយ SNN លើបន្ទះ FPGA: ទិញបន្ទះ FPGA ខ្នាតតូចនិងមានតម្លៃសមរម្យ (ឧ. Xilinx PYNQ-Z2) រួចប្រើប្រាស់ឧបករណ៍ High-Level Synthesis (HLS) ដើម្បីសាកល្បងបញ្ចូលកូដ SNN ទៅក្នុងផ្នែករឹងដោយផ្ទាល់។
  5. បង្កើតគម្រោង Edge AI (IoT Prototype) សម្រាប់ដោះស្រាយបញ្ហាជាក់ស្តែង: ប្រើប្រាស់គំរូ SNN ដែលបានដាក់លើ FPGA ដើម្បីតភ្ជាប់ជាមួយឧបករណ៍ចាប់សញ្ញា (Sensors) បង្កើតជាគម្រោងស្រាវជ្រាវបញ្ចប់ឆ្នាំ (Captsone Project) ដូចជាប្រព័ន្ធតាមដានកសិកម្មឆ្លាតវៃសន្សំសំចៃថាមពល។

៥. វាក្យសព្ទបច្ចេកទេស (Technical Glossary)

ពាក្យបច្ចេកទេស ការពន្យល់ជាខេមរភាសា (Khmer Explanation) និយមន័យសាមញ្ញ (Simple Definition)
Neuromorphic Computing គឺជាស្ថាបត្យកម្មកុំព្យូទ័រនិងបន្ទះឈីបដែលយកគំរូតាមរចនាសម្ព័ន្ធ និងរបៀបធ្វើការរបស់ខួរក្បាលជីវសាស្ត្រ ដោយភ្ជាប់អង្គគណនា និងអង្គចងចាំឲ្យនៅជាមួយគ្នា (មិនបំបែកជា CPU និង RAM ដូចកុំព្យូទ័រធម្មតា) ដើម្បីដំណើរការទិន្នន័យបានលឿននិងសន្សំសំចៃថាមពលបំផុតកម្រិតខ្ពស់។ ដូចជាការសាងសង់រោងចក្រមួយដែលកម្មករម្នាក់ៗមានឃ្លាំងផ្ទុកទំនិញផ្ទាល់ខ្លួននៅក្បែរដៃ មិនចាំបាច់រត់ទៅយកទំនិញពីឃ្លាំងកណ្តាលឡើយ ដែលធ្វើឱ្យការងារលឿននិងមិនចំណាយកម្លាំងច្រើន។
Spiking Neural Networks ជាបណ្តាញសរសៃប្រសាទសិប្បនិម្មិតជំនាន់ទី៣ ដែលដំណើរការតែនៅពេលមានសញ្ញាព្រឹត្តិការណ៍ (Spike) បញ្ជូនមកប៉ុណ្ណោះ ជំនួសឲ្យការគណនាលេខបន្តបន្ទាប់គ្នារហូត ដែលជួយកាត់បន្ថយការប្រើប្រាស់ថាមពលបានយ៉ាងច្រើនសម្រាប់ការគណនានៅចុងគែម (Edge Computing)។ ដូចជាអំពូលភ្លើងភ្ជាប់សេនស័រ (Sensor) ដែលភ្លឺតែនៅពេលមានមនុស្សដើរកាត់ ជំនួសឲ្យការបើកភ្លើងចោលរហូតពេញមួយយប់។
Leaky Integrate-and-Fire គឺជាគំរូគណិតវិទ្យាស្តង់ដារដែលក្លែងធ្វើសកម្មភាពរបស់កោសិកាសរសៃប្រសាទ ដោយវាប្រមូលផ្តុំសញ្ញាអគ្គិសនីបន្តិចម្តងៗ ហើយបើគ្មានសញ្ញាថ្មីមកទេ វានឹងលេចធ្លាយថាមពលនោះចេញវិញ ប៉ុន្តែបើវាប្រមូលបានគ្រប់កម្រិតដែលកំណត់ វានឹងបញ្ចេញសញ្ញា (Spike) មួយទៅមុខទៀត។ ដូចជាការចាក់ទឹកចូលក្នុងធុងមួយដែលមានប្រហោងតូចៗនៅបាត បើចាក់ទឹកចូលលឿនជាងទឹកដែលស្រក់ចេញរហូតដល់ពេញធុង វានឹងហៀរចេញមកក្រៅដើម្បីបញ្ជូនបន្ត។
Spike-Timing Dependent Plasticity ជាក្បួនដោះស្រាយការបណ្តុះបណ្តាលដោយខ្លួនឯង (Unsupervised learning) របស់សរសៃប្រសាទ ដែលវាផ្លាស់ប្តូរកម្លាំងនៃការតភ្ជាប់រវាងកោសិកាពីរ អាស្រ័យលើគម្លាតពេលវេលានៃការបញ្ចេញសញ្ញារបស់ពួកវា។ បើវាបញ្ចេញសញ្ញាជាប់ៗគ្នាល្អ ការតភ្ជាប់នឹងកាន់តែរឹងមាំ។ ដូចជាមិត្តភក្តិពីរនាក់ បើឧស្សាហ៍ជួបគ្នានិងនិយាយគ្នាត្រូវញឹកញាប់ ចំណងមិត្តភាពនឹងកាន់តែស្អិតរមួត ប៉ុន្តែបើខានជួបគ្នាយូរ ទំនាក់ទំនងនឹងប្រែជាសាបរលាប។
Rate Coding ជាយន្តការបំប្លែងទិន្នន័យទៅជាសញ្ញា Spike ដោយប្រើប្រាស់ "ចំនួនដង ឬ ភាពញឹកញាប់" នៃ Spike ក្នុងចន្លោះពេលកំណត់មួយ ដើម្បីតំណាងឲ្យទំហំនៃទិន្នន័យ (លេខធំ = មានចំនួន Spike ច្រើន)។ ដូចជាការគោះទ្វារបញ្ជូនសញ្ញាសម្ងាត់ បើគោះញាប់និងចំនួនដងច្រើន មានន័យថាជារឿងបន្ទាន់ខ្លាំង។
Temporal Coding ជាយន្តការបំប្លែងទិន្នន័យទៅជាសញ្ញា Spike ដែលប្រើប្រាស់ "ពេលវេលាជាក់លាក់" ឬការពន្យារពេលនៃ Spike តែមួយគត់ ដើម្បីផ្ទុកព័ត៌មាន ដែលយន្តការនេះជួយសន្សំសំចៃចំនួន Spike និងថាមពលបានច្រើនជាង Rate Coding ឆ្ងាយណាស់។ ដូចជាការណាត់ជួបនរណាម្នាក់ ការមកដល់យឺតឬលឿនជាងម៉ោងកំណត់ត្រឹមតែម្តង គឺជាសារបញ្ជាក់ពីកម្រិតនៃការយកចិត្តទុកដាក់ ដោយមិនបាច់ពន្យល់អ្វីច្រើន។
Surrogate Gradient ជាវិធីសាស្ត្រគណិតវិទ្យាដែលប្រើអនុគមន៍បន្តបន្ទាប់ (Continuous function) មកជំនួសអនុគមន៍ដាច់ៗ (Non-differentiable) របស់ Spike ក្នុងពេលហ្វឹកហាត់ ដើម្បីអនុញ្ញាតឲ្យបណ្តាញ SNN អាចរៀនសូត្រតាមក្បួន Backpropagation ដូចការបណ្តុះបណ្តាល AI ធម្មតា។ ដូចជាការប្រើផ្លូវវាងដែលរលោងស្រួលជិះ ដើម្បីជំនួសផ្លូវកាត់ដែលដាច់ៗមានក្រហូងធំៗ ជួយឲ្យរថយន្តទំនិញ(ទិន្នន័យហ្វឹកហាត់) អាចធ្វើដំណើរទៅដល់គោលដៅបានដោយរលូន។
Memristor គឺជាគ្រឿងបន្លាស់អេឡិចត្រូនិកដែលចងចាំកម្រិតចរន្តដែលធ្លាប់ឆ្លងកាត់វាពីមុន ដោយរក្សាទុកស្ថានភាពរេស៊ីស្តង់ (Resistance) របស់វាសូម្បីតែពេលដាច់ភ្លើងក៏ដោយ។ វាត្រូវគេប្រើសម្រាប់បង្កើតជាអង្គចងចាំ និងជាតំណភ្ជាប់សរសៃប្រសាទ (Synapse) ដោយផ្ទាល់នៅលើផ្នែករឹងនៃបន្ទះឈីប AI។ ដូចជាផ្លូវលំមួយនៅលើវាលស្មៅ កាលណាមានមនុស្សដើរកាត់កាន់តែច្រើន ផ្លូវនោះកាន់តែសឹករលោង ចងចាំស្នាមជើង និងងាយស្រួលដើរជាងមុននៅពេលក្រោយៗទៀត។

៦. ប្រធានបទពាក់ព័ន្ធ (Further Reading)

អត្ថបទដែលបានបោះពុម្ពនៅលើ KhmerResearch ដែលទាក់ទងនឹងប្រធានបទនេះ៖

ប្រធានបទ និងសំណួរស្រាវជ្រាវដែលទាក់ទងនឹងឯកសារនេះ ដែលអ្នកអាចស្វែងរកបន្ថែម៖