ස්නායු ජාල සමඟ වැඩ කිරීම: දෝෂහරණය සඳහා පිරික්සුම් ලැයිස්තුව

ස්නායු ජාල සමඟ වැඩ කිරීම: දෝෂහරණය සඳහා පිරික්සුම් ලැයිස්තුව

යන්ත්‍ර ඉගෙනුම් මෘදුකාංග නිෂ්පාදන කේතය බොහෝ විට සංකීර්ණ සහ තරමක් ව්‍යාකූල වේ. එහි ඇති දෝෂ හඳුනා ගැනීම සහ ඉවත් කිරීම සම්පත් බහුල කාර්යයකි. සරලම පවා පෝෂක ස්නායු ජාල ජාල ගෘහ නිර්මාණ ශිල්පය, බර ආරම්භ කිරීම සහ ජාල ප්‍රශස්තකරණය සඳහා බරපතල ප්‍රවේශයක් අවශ්‍ය වේ. කුඩා අත්වැරැද්දක් අප්රසන්න ගැටළු වලට තුඩු දිය හැකිය.

මෙම ලිපිය ඔබගේ ස්නායුක ජාල නිදොස් කිරීම සඳහා ඇල්ගොරිතමයක් ගැන වේ.

Skillbox නිර්දේශ කරයි: ප්රායෝගික පාඨමාලාව මුල සිට පයිතන් සංවර්ධකයා.

අපි ඔබට මතක් කරමු: "Habr" හි සියලුම පාඨකයින් සඳහා - "Habr" ප්‍රවර්ධන කේතය භාවිතයෙන් ඕනෑම Skillbox පාඨමාලාවකට ලියාපදිංචි වන විට රූබල් 10 ක වට්ටමක්.

ඇල්ගොරිතම අදියර පහකින් සමන්විත වේ:

  • පහසු ආරම්භය;
  • පාඩු තහවුරු කිරීම;
  • අතරමැදි ප්රතිඵල සහ සම්බන්ධතා පරීක්ෂා කිරීම;
  • පරාමිති රෝග විනිශ්චය;
  • වැඩ පාලනය.

යමක් ඔබට අනෙක් ඒවාට වඩා රසවත් බව පෙනේ නම්, ඔබට වහාම මෙම කොටස් වෙත යා හැක.

පහසු ආරම්භය

සංකීර්ණ ගෘහනිර්මාණ ශිල්පයක්, විධිමත් කිරීම සහ ඉගෙනුම් අනුපාත කාලසටහනක් සහිත ස්නායුක ජාලයක් සාමාන්‍ය එකකට වඩා දෝෂහරණය කිරීමට අපහසු වේ. කාරණය නිදොස්කරණයට වක්‍රව සම්බන්ධ වන බැවින් අපි මෙහි ටිකක් උපක්‍රමශීලී වන්නෙමු, නමුත් මෙය තවමත් වැදගත් නිර්දේශයකි.

සරල ආරම්භයක් වන්නේ සරල කළ ආකෘතියක් නිර්මාණය කිරීම සහ එය එක් දත්ත කට්ටලයක් (ලක්ෂ්ය) මත පුහුණු කිරීමයි.

මුලින්ම අපි සරල කළ ආකෘතියක් නිර්මාණය කරමු

ඉක්මනින් ආරම්භ කිරීම සඳහා, අපි තනි සැඟවුණු ස්ථරයක් සහිත කුඩා ජාලයක් නිර්මාණය කර සෑම දෙයක්ම නිවැරදිව ක්රියා කරන බව පරීක්ෂා කරන්න. ඉන්පසුව අපි ක්රමයෙන් ආකෘතිය සංකීර්ණ කර, එහි ව්යුහයේ එක් එක් නව අංගයන් (අතිරේක ස්ථරය, පරාමිතිය, ආදිය) පරීක්ෂා කර, ඉදිරියට යන්න.

අපි තනි දත්ත කට්ටලයක් (ලක්ෂ්යය) මත ආකෘතිය පුහුණු කරන්නෙමු

ඔබේ ව්‍යාපෘතිය සඳහා ඉක්මන් සනීපාරක්‍ෂක පරීක්‍ෂාවක් ලෙස, පද්ධතිය නිවැරදිව ක්‍රියා කරන්නේද යන්න තහවුරු කර ගැනීම සඳහා පුහුණුව සඳහා දත්ත ලකුණු එකක් හෝ දෙකක් භාවිත කළ හැක. ස්නායුක ජාලය පුහුණුවීම් සහ පරීක්ෂණ වලදී 100% නිරවද්‍යතාවය පෙන්විය යුතුය. මෙය එසේ නොවේ නම්, එක්කෝ ආකෘතිය ඉතා කුඩා හෝ ඔබට දැනටමත් දෝෂයක් තිබේ.

සියල්ල හොඳින් සිදු වුවද, ඉදිරියට යාමට පෙර යුග එකක් හෝ කිහිපයක් සඳහා ආකෘතිය සූදානම් කරන්න.

පාඩු තක්සේරු කිරීම

ආකෘතියේ කාර්ය සාධනය පිරිපහදු කිරීම සඳහා ප්රධාන මාර්ගය වන්නේ පාඩු ඇස්තමේන්තු කිරීමයි. අලාභය ගැටලුවට සුදුසු බවත්, පාඩු ශ්‍රිත නිවැරදි පරිමාණයෙන් ශ්‍රේණිගත කර ඇති බවත් ඔබ සහතික විය යුතුය. ඔබ අලාභ වර්ග එකකට වඩා භාවිතා කරන්නේ නම්, ඒවා සියල්ලම එකම අනුපිළිවෙලින් සහ නිවැරදිව පරිමාණය කර ඇති බවට වග බලා ගන්න.

මුල් පාඩු ගැන අවධානයෙන් සිටීම වැදගත්ය. ආදර්ශය අහඹු අනුමානයකින් ආරම්භ වූයේ නම් සැබෑ ප්‍රතිඵලය අපේක්ෂිත ප්‍රතිඵලයට කෙතරම් සමීපදැයි පරීක්ෂා කරන්න. තුල Andrey Karpathy ගේ කෘතිය පහත සඳහන් දේ යෝජනා කරයි:: “ඔබ කුඩා පරාමිතීන් සංඛ්‍යාවකින් ආරම්භ කරන විට ඔබ අපේක්ෂා කරන ප්‍රතිඵලය ලබා ගැනීමට වග බලා ගන්න. දත්ත නැතිවීම වහාම පරීක්ෂා කිරීම වඩා හොඳය ( විධිමත් කිරීමේ උපාධිය බිංදුවට සකසා ඇත). උදාහරණයක් ලෙස, Softmax වර්ගීකාරකයක් සහිත CIFAR-10 සඳහා, අපි බලාපොරොත්තු වන විසරණ සම්භාවිතාව එක් එක් පන්තිය සඳහා 2.302 (පංති 0,1 ක් ඇති බැවින්) සහ Softmax අලාභය නිවැරදි පන්තියේ සෘණ ලඝු සම්භාවිතාව නිසා මූලික අලාභය 10 වනු ඇතැයි අපි අපේක්ෂා කරමු. − ln (0.1) = 2.302 ලෙස.

ද්විමය උදාහරණය සඳහා, එක් එක් පන්තිය සඳහා සමාන ගණනය කිරීමක් සරලව සිදු කෙරේ. මෙන්න, උදාහරණයක් ලෙස, දත්ත: 20% 0 සහ 80% 1. අපේක්ෂිත ආරම්භක පාඩුව –0,2ln (0,5) –0,8ln (0,5) = 0,693147 දක්වා වනු ඇත. ප්රතිඵලය 1 ට වඩා වැඩි නම්, ස්නායු ජාලයේ බර නිසි ලෙස සමතුලිත නොවන බව හෝ දත්ත සාමාන්යකරණය කර නොමැති බව පෙන්නුම් කරයි.

අතරමැදි ප්රතිඵල සහ සම්බන්ධතා පරීක්ෂා කිරීම

ස්නායුක ජාලයක් දෝශ නිරාකරණය කිරීම සඳහා, ජාලය තුළ ඇති ක්‍රියාවලීන්ගේ ගතිකත්වය සහ ඒවා සම්බන්ධ වී ඇති තනි අතරමැදි ස්ථර වල කාර්යභාරය අවබෝධ කර ගැනීම අවශ්‍ය වේ. ඔබට හමුවිය හැකි පොදු දෝෂ මෙන්න:

  • gradle යාවත්කාලීන සඳහා වැරදි ප්‍රකාශන;
  • බර යාවත්කාලීන කිරීම් අදාළ නොවේ;
  • පිපිරෙන අනුක්‍රමික.

අනුක්‍රමණ අගයන් ශුන්‍ය නම්, මෙයින් අදහස් කරන්නේ ප්‍රශස්තකරණයේ ඉගෙනීමේ වේගය ඉතා මන්දගාමී බවයි, නැතහොත් අනුක්‍රමය යාවත්කාලීන කිරීම සඳහා ඔබ වැරදි ප්‍රකාශනයක් හමු වන බවයි.

ඊට අමතරව, එක් එක් ස්ථරයේ සක්‍රීය කිරීමේ කාර්යයන්, බර සහ යාවත්කාලීන කිරීම් වල අගයන් නිරීක්ෂණය කිරීම අවශ්‍ය වේ. උදාහරණයක් ලෙස, පරාමිති යාවත්කාලීනවල විශාලත්වය (බර සහ පක්ෂග්‍රාහී) 1-e3 විය යුතුය.

"Dying ReLU" හෝ නමින් ප්රපංචයක් තිබේ "අතුරුදහන් ශ්‍රේණියේ ගැටලුව", ReLU නියුරෝන එහි බර සඳහා විශාල සෘණ නැඹුරු අගයක් ඉගෙනීමෙන් පසු ශුන්‍ය ප්‍රතිදානය කරන විට. මෙම නියුරෝන නැවත කිසි දිනක දත්තවල කිසිම අවස්ථාවක වෙඩි නොතබයි.

සංඛ්‍යාත්මක ප්‍රවේශයක් භාවිතයෙන් ශ්‍රේණිය ආසන්න කිරීමෙන් මෙම දෝෂ හඳුනා ගැනීමට ඔබට අනුක්‍රමණ පරීක්ෂාව භාවිතා කළ හැක. එය ගණනය කළ අනුක්‍රමණයට ආසන්න නම්, පසු ප්‍රචාරණය නිවැරදිව ක්‍රියාත්මක කරන ලදී. අනුක්‍රමික චෙක්පතක් සෑදීමට, CS231 වෙතින් මෙම විශිෂ්ට සම්පත් පරීක්ෂා කරන්න මෙහි и මෙහිසහ සමඟ පාඩම මෙම මාතෘකාව පිළිබඳ ඇන්ඩෲ එන්ගා.

ෆයිසාන් ෂෙයික් ස්නායු ජාලයක් දෘශ්‍යමාන කිරීම සඳහා ප්‍රධාන ක්‍රම තුනක් දක්වයි:

  • පූර්වගාමීන් යනු පුහුණු කරන ලද ආකෘතියේ සාමාන්ය ව්යුහය අපට පෙන්වන සරල ක්රම වේ. මේවාට ස්නායුක ජාලයේ තනි ස්තරවල හැඩතල හෝ ෆිල්ටරවල ප්‍රතිදානය සහ එක් එක් ස්ථරයේ පරාමිති ඇතුළත් වේ.
  • සක්රිය කිරීම පදනම් වේ. ඒවා තුළ, අපි තනි නියුරෝන හෝ නියුරෝන කණ්ඩායම්වල සක්‍රීය කිරීම් ඒවායේ ක්‍රියාකාරිත්වය තේරුම් ගැනීමට විකේතනය කරමු.
  • අනුක්‍රමික මත පදනම්ව. මෙම ක්‍රම මගින් ආදර්ශ පුහුණුවේ ඉදිරි සහ පසුගාමී සාමාර්ථ වලින් සෑදෙන අනුක්‍රම හැසිරවීමට නැඹුරු වේ (ලවණතා සිතියම් සහ පන්ති සක්‍රීය කිරීමේ සිතියම් ඇතුළුව).

තනි ස්ථර වල සක්‍රිය කිරීම් සහ සම්බන්ධතා දෘශ්‍යමාන කිරීම සඳහා ප්‍රයෝජනවත් මෙවලම් කිහිපයක් තිබේ, උදා. කොන්එක්ස් и ටෙන්සර්බෝඩ්.

ස්නායු ජාල සමඟ වැඩ කිරීම: දෝෂහරණය සඳහා පිරික්සුම් ලැයිස්තුව

පරාමිති රෝග විනිශ්චය

ස්නායුක ජාලයන් එකිනෙකා සමඟ අන්තර්ක්‍රියා කරන පරාමිති රාශියක් ඇති අතර එය ප්‍රශස්තිකරණය සංකීර්ණ කරයි. ඇත්ත වශයෙන්ම, මෙම කොටස විශේෂඥයින් විසින් සක්‍රීය පර්යේෂණ විෂයය වේ, එබැවින් පහත යෝජනා සලකා බැලිය යුත්තේ උපදෙස් ලෙස පමණි, එය ගොඩනැගීමට ආරම්භක ස්ථාන.

පැකේජය තරම (කණ්ඩායම් ප්‍රමාණය) - ඔබට නිවැරදි දෝෂ අනුක්‍රමික ඇස්තමේන්තු ලබා ගැනීමට ප්‍රමාණවත් තරම් විශාල වීමට අවශ්‍ය නම්, නමුත් ඔබේ ජාලය ක්‍රමවත් කිරීමට ස්ටෝචස්ටික් අනුක්‍රමය බැසීමට (SGD) ප්‍රමාණවත් තරම් කුඩා වේ. කුඩා කණ්ඩායම් ප්‍රමාණයන් පුහුණු ක්‍රියාවලියේදී ඇතිවන ඝෝෂාව හේතුවෙන් වේගවත් අභිසාරීතාවයකට තුඩු දෙනු ඇති අතර පසුව ප්‍රශස්තිකරණ දුෂ්කරතා ඇති වේ. මෙය වඩාත් විස්තරාත්මකව විස්තර කෙරේ මෙහි.

ඉගෙනීමේ අනුපාතය - ඉතා අඩු වීම මන්දගාමී අභිසාරීතාවයට හෝ දේශීය අවමයේ සිරවීමේ අවදානමට හේතු වේ. ඒ අතරම, ඉහළ ඉගෙනුම් අනුපාතයක් ප්‍රශස්තිකරණ අපසරනය ඇති කරයි, මන්ද ඔබ අලාභ ශ්‍රිතයේ ගැඹුරු නමුත් පටු කොටස හරහා පැනීමේ අවදානමක් ඇති බැවිනි. ස්නායුක ජාලය පුහුණු කරන අතරතුර එය අඩු කිරීමට වේග කාලසටහන භාවිතා කිරීමට උත්සාහ කරන්න. CS231n සමඟ යාවත්කාලීන මෙම ගැටලුව සඳහා කැප වූ විශාල අංශයක් තිබේ.

අනුක්‍රමණය කැපීම  — උපරිම අගය හෝ ආන්තික සම්මතය දී backpropagation තුළ පරාමිති අනුක්‍රමණයන් කැපීම. තුන්වන කරුණේදී ඔබට හමු විය හැකි ඕනෑම පිපිරෙන අනුක්‍රමික දෝෂ නිරාකරණය සඳහා ප්‍රයෝජනවත් වේ.

කණ්ඩායම් සාමාන්යකරණය - එක් එක් ස්ථරයේ ආදාන දත්ත සාමාන්‍යකරණය කිරීමට භාවිතා කරයි, එමඟින් අභ්‍යන්තර covariate මාරුවීමේ ගැටළුව විසඳීමට අපට ඉඩ සලසයි. ඔබ Dropout සහ Batch Norma එකට භාවිතා කරන්නේ නම්, මෙම ලිපිය බලන්න.

ස්ටෝචස්ටික් අනුක්‍රමණ සම්භවය (SGD) - ගම්‍යතාව, අනුවර්තන ඉගෙනුම් අනුපාත සහ නෙස්ටරොව් ක්‍රමය භාවිතා කරන SGD වර්ග කිහිපයක් තිබේ. කෙසේ වෙතත්, ඉගෙනීමේ කාර්යක්ෂමතාව සහ සාමාන්‍යකරණය යන දෙකම සම්බන්ධයෙන් ඔවුන්ගෙන් කිසිවකුට පැහැදිලි වාසියක් නොමැත (විස්තර මෙතනින්).

විධිමත් කිරීම - සාමාන්‍යකරණය කළ හැකි ආකෘතියක් ගොඩනැගීම සඳහා තීරනාත්මක වේ, එය ආකෘති සංකීර්ණත්වය හෝ ආන්තික පරාමිති අගයන් සඳහා දඩයක් එකතු කරයි. මෙය එහි නැඹුරුව සැලකිය යුතු ලෙස වැඩි නොකර ආදර්ශ විචලනය අඩු කිරීමේ ක්‍රමයකි. තව සවිස්තරාත්මක තොරතුරු - මෙහි.

සෑම දෙයක්ම ඔබ විසින්ම ඇගයීමට ලක් කිරීම සඳහා, ඔබ විසින් විධිමත් කිරීම අක්‍රිය කර දත්ත නැතිවීමේ අනුක්‍රමය ඔබම පරීක්ෂා කළ යුතුය.

අයින් වෙනවා තදබදය වැළැක්වීම සඳහා ඔබේ ජාලය විධිමත් කිරීමේ තවත් ක්රමයකි. පුහුණුව අතරතුර, අත්හැරීම සිදු කරනු ලබන්නේ නිශ්චිත සම්භාවිතාවක් සහිත නියුරෝන ක්රියාකාරිත්වය පවත්වා ගැනීමෙන් පමණි p (අධිපරාමිතිය) හෝ ප්රතිවිරුද්ධ අවස්ථාවක එය ශුන්යයට සැකසීම. එහි ප්‍රතිඵලයක් වශයෙන්, ජාලය විසින් එක් එක් පුහුණු කණ්ඩායම සඳහා විවිධ පරාමිති උප කුලකයක් භාවිතා කළ යුතු අතර, එය ප්‍රමුඛ වන ඇතැම් පරාමිතීන්හි වෙනස්කම් අඩු කරයි.

වැදගත්: ඔබ අතහැර දැමීම සහ කණ්ඩායම් සාමාන්‍යකරණය යන දෙකම භාවිතා කරන්නේ නම්, මෙම මෙහෙයුම්වල අනුපිළිවෙල ගැන හෝ ඒවා එකට භාවිතා කිරීම ගැන පවා සැලකිලිමත් වන්න. මේ සියල්ල තවමත් සක්‍රීයව සාකච්ඡා කර පරිපූරණය වෙමින් පවතී. මෙම මාතෘකාව පිළිබඳ වැදගත් සාකච්ඡා දෙකක් මෙන්න Stackoverflow මත и ආක්සිව්.

වැඩ පාලනය

එය කාර්ය ප්‍රවාහ සහ අත්හදා බැලීම් ලේඛනගත කිරීමකි. ඔබ කිසිවක් ලේඛනගත නොකරන්නේ නම්, ඔබට අමතක විය හැකිය, උදාහරණයක් ලෙස, කුමන ඉගෙනුම් අනුපාතය හෝ පන්ති බර භාවිතා කරන්නේද යන්න. පාලනයට ස්තූතියි, ඔබට පෙර අත්හදා බැලීම් පහසුවෙන් බැලීමට සහ ප්‍රතිනිෂ්පාදනය කළ හැකිය. මෙය ඔබට අනුපිටපත් අත්හදා බැලීම් ගණන අඩු කිරීමට ඉඩ සලසයි.

කෙසේ වෙතත්, විශාල වැඩ පරිමාවකදී අතින් ලියකියවිලි දුෂ්කර කාර්යයක් විය හැකිය. Comet.ml වැනි මෙවලම් ඔබට ස්වයංක්‍රීයව දත්ත කට්ටල, කේත වෙනස් කිරීම්, පර්යේෂණාත්මක ඉතිහාසය සහ නිෂ්පාදන ආකෘති, ඔබේ ආකෘතිය පිළිබඳ ප්‍රධාන තොරතුරු (අධිපරාමිතීන්, ආකෘති කාර්ය සාධන ප්‍රමිතික සහ පාරිසරික තොරතුරු) ඇතුළුව ලොග් කිරීමට උදවු කිරීමට පැමිණෙන්නේ මෙහිදීය.

ස්නායුක ජාලයක් කුඩා වෙනස්කම් වලට ඉතා සංවේදී විය හැකි අතර, මෙය ආදර්ශ කාර්ය සාධනය පහත වැටීමට තුඩු දෙනු ඇත. ඔබේ වැඩ ලුහුබැඳීම සහ ලේඛනගත කිරීම ඔබේ පරිසරය සහ ආකෘතිකරණය ප්‍රමිතිකරණය කිරීමට ඔබට ගත හැකි පළමු පියවරයි.

ස්නායු ජාල සමඟ වැඩ කිරීම: දෝෂහරණය සඳහා පිරික්සුම් ලැයිස්තුව

ඔබගේ ස්නායුක ජාලය නිදොස් කිරීම ආරම්භ කිරීමට මෙම සටහන ඔබට ආරම්භක ලක්ෂ්‍යයක් වනු ඇතැයි මම බලාපොරොත්තු වෙමි.

Skillbox නිර්දේශ කරයි:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න