කෘතිම බුද්ධිය (AI) මෑත වසරවලදී සැලකිය යුතු ජනප්රියත්වයක් ලබා ඇත.
ඔබ සාමාන්යයෙන් මෘදුකාංග ඉංජිනේරුවෙක්, පරිගණක විද්යාඥයෙක් හෝ දත්ත විද්යාවට ඇලුම් කරන්නෙක් නම්, මෙම ක්ෂේත්රය මඟින් සපයනු ලබන රූප සැකසීම, රටා හඳුනාගැනීම සහ වස්තු හඳුනාගැනීම වැනි විශ්මිත යෙදුම් ගැන ඔබ කුතුහලයෙන් සිටින්නට ඇත.
ඔබ බොහෝ විට අසා ඇති AI හි වැදගත්ම උප ක්ෂේත්රය වන්නේ ගැඹුරු ඉගෙනීමයි. මෙම ක්ෂේත්රය මානව මොළයේ ක්රියාකාරීත්වය අනුව හැඩගැසුණු ප්රබල ඇල්ගොරිතම (පරිගණක වැඩසටහන් උපදෙස්) කෙරෙහි අවධානය යොමු කරයි. ස්නායුක ජාල.
මෙම ලිපියෙන් අපි Neural Networks පිළිබඳ සංකල්පය සහ මෙම ආකෘති භාවිතා කරමින් ගොඩනගා ගන්නේ කෙසේද, සම්පාදනය කරන්නේ කෙසේද, ගැලපෙන්නේ කෙසේද සහ ඇගයීමට ලක් කරන්නේ කෙසේද යන්න පිළිබඳව අපි යන්නෙමු. Python මීට උදාහරණ.
ස්නායුක ජාල
Neural Networks නොහොත් NNs යනු මිනිස් මොළයේ ජීව විද්යාත්මක ක්රියාකාරකම් අනුව සකස් කරන ලද ඇල්ගොරිතම මාලාවකි. ස්නායුක ජාල නෝඩ් වලින් සමන්විත වන අතර ඒවා නියුරෝන ලෙසද හැඳින්වේ.
සිරස් නෝඩ් එකතුවක් ස්ථර ලෙස හැඳින්වේ. ආකෘතිය එක් ආදානයකින්, එක් ප්රතිදානයකින් සහ සැඟවුණු ස්ථර ගණනාවකින් සමන්විත වේ. සෑම ස්ථරයක්ම නෝඩ් වලින් සමන්විත වන අතර එය නියුරෝන ලෙසද හැඳින්වේ, එහිදී ගණනය කිරීම් සිදු වේ.
පහත රූප සටහනෙහි, කවයන් නෝඩ් නියෝජනය කරන අතර නෝඩ් වල සිරස් එකතුව ස්ථර නියෝජනය කරයි. මෙම ආකෘතියේ ස්ථර තුනක් ඇත.
පහත දැක්වෙන පරිදි එක් ස්ථරයක නෝඩ් සම්ප්රේෂණ මාර්ග හරහා ඊළඟ ස්ථරයට සම්බන්ධ වේ.
අපගේ දත්ත කට්ටලය ලේබල් කළ දත්ත වලින් සමන්විත වේ. මෙයින් අදහස් කරන්නේ සෑම දත්ත වස්තුවකටම නිශ්චිත නාම අගයක් පවරා ඇති බවයි.
එබැවින් සත්ව වර්ගීකරණ දත්ත කට්ටලයක් සඳහා අපගේ දත්ත ලෙස බළලුන්ගේ සහ බල්ලන්ගේ රූප ඇත, අපගේ ලේබල ලෙස 'පූසා' සහ 'බල්ලා' ඇත.
ලේබල් අපගේ ආකෘතිය සඳහා සංඛ්යාත්මක අගයන් බවට පරිවර්තනය කළ යුතු බව සැලකිල්ලට ගැනීම වැදගත්ය, එබැවින් අපගේ සත්ව ලේබල බළලා සඳහා '0' සහ බල්ලා සඳහා '1' බවට පත් වේ. දත්ත සහ ලේබල් දෙකම ආකෘතිය හරහා යවනු ලැබේ.
ඉගෙනුම්
දත්ත එක් වරකට එක් ආයතනයකට සපයනු ලැබේ. මෙම දත්ත කොටස් වලට කැඩී ආකෘතියේ එක් එක් නෝඩය හරහා ගමන් කරයි. නෝඩ් මෙම කොටස් මත ගණිතමය මෙහෙයුම් සිදු කරයි.
මෙම නිබන්ධනය සඳහා ඔබට ගණිතමය කාර්යයන් හෝ ගණනය කිරීම් දැන ගැනීමට අවශ්ය නැත, නමුත් මෙම ආකෘති ක්රියා කරන ආකාරය පිළිබඳ සාමාන්ය අදහසක් තිබීම වැදගත්ය. එක් ස්ථරයක ගණනය කිරීම් මාලාවකින් පසුව, දත්ත ඊළඟ ස්ථරයට යවනු ලැබේ.
සම්පුර්ණ වූ පසු, අපගේ ආකෘතිය ප්රතිදාන ස්ථරයේ දත්ත ලේබලය පුරෝකථනය කරයි (උදාහරණයක් ලෙස, සත්ව වර්ගීකරණ ගැටලුවකදී අපට බළලෙකු සඳහා '0' අනාවැකියක් ලැබේ).
ආකෘතිය පසුව මෙම පුරෝකථනය කළ අගය සැබෑ ලේබල් අගය සමඟ සංසන්දනය කරයි.
අගයන් ගැළපෙන්නේ නම්, අපගේ ආකෘතිය මීළඟ ආදානය ගනු ඇත, නමුත් අගයන් වෙනස් නම්, ආකෘතිය අලාභය ලෙස හැඳින්වෙන අගයන් දෙක අතර වෙනස ගණනය කරයි, සහ ඊළඟ වතාවේ ගැළපෙන ලේබල නිපදවීමට නෝඩ් ගණනය කිරීම් සීරුමාරු කරයි.
ගැඹුරු ඉගෙනුම් රාමු
Neural Networks කේතයෙන් ගොඩනැගීමට, අපි ආයාත කළ යුතුයි ගැඹුරු ඉගෙනුම් රාමු අපගේ ඒකාබද්ධ සංවර්ධන පරිසරය (IDE) භාවිතා කරන පුස්තකාල ලෙස හැඳින්වේ.
මෙම රාමු මෙම නිබන්ධනයේදී අපට උපකාර වන පෙර-ලිඛිත කාර්යයන් එකතුවකි. අපගේ ආකෘතිය ගොඩනැගීම සඳහා අපි Keras රාමුව භාවිතා කරන්නෙමු.
Keras යනු ගැඹුරු ඉගෙනුම් සහ කෘතිම බුද්ධි පසුබිමක් භාවිතා කරන පයිතන් පුස්තකාලයකි ආතන්ය ප්රවාහය පහසුවෙන් සරල අනුක්රමික ආකෘති ආකාරයෙන් NNs නිර්මාණය කිරීමට.
Keras ද භාවිතා කළ හැකි තමන්ගේම පෙර පැවති මාදිලි සමඟ පැමිණේ. මෙම නිබන්ධනය සඳහා, අපි Keras භාවිතයෙන් අපගේම ආකෘතියක් නිර්මාණය කරන්නෙමු.
ඔබට මෙම ගැඹුරු ඉගෙනුම් රාමුව ගැන වැඩිදුර ඉගෙන ගත හැක Keras වෙබ් අඩවිය.
ස්නායු ජාලයක් ගොඩනැගීම (නිබන්ධනය)
Python භාවිතයෙන් Neural Network එකක් සෑදීමට අපි ඉදිරියට යමු.
ගැටළු ප්රකාශය
Neural Networks යනු AI මත පදනම් වූ ගැටළු සඳහා විසඳුම් වර්ගයකි. මෙම නිබන්ධනය සඳහා අපි ලබා ගත හැකි Pima Indians Diabetes Data හරහා යන්නෙමු මෙහි.
දැඩි සත්කාර ඒකකය Machine Learning මෙම දත්ත කට්ටලය සම්පාදනය කර ඇත සහ ඉන්දියානු රෝගීන්ගේ වෛද්ය වාර්තාවක් අඩංගු වේ. රෝගියාට වසර 5ක් ඇතුළත දියවැඩියා රෝගය වැලඳෙනවාද නැද්ද යන්න අපගේ ආදර්ශය පුරෝකථනය කළ යුතුයි.
දත්ත කට්ටලය පූරණය වේ
අපගේ දත්ත කට්ටලය Microsoft Excel භාවිතයෙන් පහසුවෙන් හැසිරවිය හැකි 'diabetes.csv' නම් තනි CSV ගොනුවකි.
අපගේ ආකෘතිය නිර්මාණය කිරීමට පෙර, අපි අපගේ දත්ත කට්ටලය ආයාත කළ යුතුය. පහත කේතය භාවිතා කිරීමෙන් ඔබට මෙය කළ හැකිය:
pd ලෙස pandas ආනයනය කරන්න
දත්ත = pd.read_csv('diabetes.csv')
x = data.drop ("ප්රතිඵලය")
y = දත්ත[“ප්රතිඵලය”]
මෙන්න අපි භාවිතා කරන්නේ පාණ්ඩස් පුස්තකාලය අපගේ CSV ගොනු දත්ත හැසිරවීමට හැකි වන පරිදි, read_csv() යනු Pandas හි බිල්ට් ශ්රිතයක් වන අතර එමඟින් අපගේ ගොනුවේ අගයන් 'data' නම් විචල්යයකට ගබඩා කිරීමට ඉඩ සලසයි.
x විචල්යයේ ප්රතිඵල (ලේබල්) දත්ත නොමැතිව අපගේ දත්ත කට්ටලය අඩංගු වේ. අපි මෙය සාක්ෂාත් කර ගන්නේ data.drop() ශ්රිතය මඟින් x සඳහා ලේබල ඉවත් කරන අතර y හි ප්රතිඵල (ලේබල්) දත්ත පමණක් අඩංගු වේ.
ගොඩනැගිලි අනුක්රමික ආකෘතිය
පියවර 1: පුස්තකාල ආනයනය කිරීම
පළමුව, අපි අපගේ ආකෘතියට අවශ්ය ඇතැම් පරාමිතීන් සමඟින් TensorFlow සහ Keras ආනයනය කළ යුතුය. පහත කේතය අපට මෙය කිරීමට ඉඩ දෙයි:
tf ලෙස tensorflow ආනයනය කරන්න
ටෙන්සර්ෆ්ලෝ ආනයනික කෙරස් වලින්
tensorflow.keras.models import Sequential වෙතින්
tensorflow.keras.layers වෙතින් ආනයනය සක්රිය කිරීම, ඝනත්වය
tensorflow.keras.optimizers වෙතින් Adam ආනයනය කරයි
tensorflow.keras.metrics ආයාත කැටෙගොරිකල්_ක්රොසෙන්ට්රොපි වෙතින්
අපගේ ආකෘතිය සඳහා අපි ඝන ස්ථර ආනයනය කරන්නෙමු. මේවා සම්පූර්ණයෙන්ම සම්බන්ධිත ස්ථර; එනම්, ස්තරයක ඇති සෑම නෝඩයක්ම ඊළඟ ස්ථරයේ වෙනත් නෝඩයක් සමඟ සම්පුර්ණයෙන්ම සම්බන්ධ වේ.
අපිත් ආනයනය කරනවා සක්රිය කිරීම නෝඩ් වෙත යවන ලද දත්ත පරිමාණය කිරීම සඳහා අවශ්ය කාර්යය. Optimizers පාඩුව අවම කර ගැනීමට ද ආනයනය කර ඇත.
ඇඩම් යනු අපගේ මාදිලි යාවත්කාලීන නෝඩ් ගණනය කිරීම් වඩාත් කාර්යක්ෂමව සිදු කරන සුප්රසිද්ධ ප්රශස්තකරණයකි වර්ගික_හරස් අන්තරාය යනු අප භාවිතා කරන අලාභ ශ්රිතයේ වර්ගය (සැබෑ සහ පුරෝකථනය කළ ලේබල් අගයන් අතර වෙනස ගණනය කරයි).
පියවර 2: අපගේ ආකෘතිය සැලසුම් කිරීම
මම හදන මොඩල් එකේ ඉන්පුට් එකක් (ඒකක 16ක් එක්ක), හැංගිච්ච එකක් (ඒකක 32ක් එක්ක) සහ අවුට්පුට් එකක් (ඒකක 2ක් සහිත) ස්තරයක් තියෙනවා. මෙම සංඛ්යා ස්ථාවර නොවන අතර ලබා දී ඇති ගැටලුව මත සම්පූර්ණයෙන්ම රඳා පවතී.
නිවැරදි ඒකක සහ ස්ථර සංඛ්යාව සැකසීම ප්රායෝගිකව අතිකාල වැඩි දියුණු කළ හැකි ක්රියාවලියකි. සක්රිය කිරීම නෝඩයක් හරහා යැවීමට පෙර අපගේ දත්ත මත සිදු කරනු ලබන පරිමාණයේ වර්ගයට අනුරූප වේ.
Relu සහ Softmax මෙම කාර්යය සඳහා සුප්රසිද්ධ සක්රීය කිරීමේ කාර්යයන් වේ.
ආකෘතිය = අනුක්රමික ([
ඝන (ඒකක = 16, ආදාන_හැඩය = (1,), සක්රිය කිරීම = 'relu'),
ඝන (ඒකක = 32, සක්රිය කිරීම = 'relu'),
ඝන (ඒකක = 2, සක්රිය කිරීම = 'softmax')
])
ආකෘතියේ සාරාංශය කෙබඳු විය යුතුද යන්න මෙන්න:
ආකෘතිය පුහුණු කිරීම
අපගේ ආකෘතිය පියවර දෙකකින් පුහුණු කරනු ලැබේ, පළමුවැන්න ආකෘතිය සම්පාදනය කිරීම (ආකෘතිය එකට තැබීම) සහ ඊළඟට දී ඇති දත්ත කට්ටලයක් මත ආකෘතිය සවි කිරීම.
මෙය model.fit() ශ්රිතයෙන් පසුව model.compile() ශ්රිතය භාවිතයෙන් සිදු කල හැක.
model.compile(optimizer = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
'නිරවද්යතා' මෙට්රික් නියම කිරීමෙන් පුහුණුව අතරතුර අපගේ ආකෘතියේ නිරවද්යතාවය නිරීක්ෂණය කිරීමට අපට ඉඩ සලසයි.
අපගේ ලේබල 1 සහ 0 ආකාරයෙන් පවතින බැවින්, සත්ය සහ පුරෝකථනය කළ ලේබල අතර වෙනස ගණනය කිරීමට අපි ද්විමය අලාභ ශ්රිතයක් භාවිතා කරන්නෙමු.
දත්ත කට්ටලය ද 10 (කාණ්ඩ_ප්රමාණය) කාණ්ඩවලට බෙදා ඇති අතර 30 වතාවක් (යුග) ආකෘතිය හරහා යවනු ලැබේ. ලබා දී ඇති දත්ත කට්ටලයක් සඳහා, x යනු දත්ත වන අතර y යනු දත්ත වලට අනුරූප ලේබල වේ.
අනාවැකි භාවිතා කරමින් ආකෘතිය පරීක්ෂා කිරීම
අපගේ ආකෘතිය ඇගයීම සඳහා, අපි අනාවැකි() ශ්රිතය භාවිතයෙන් පරීක්ෂණ දත්ත මත පුරෝකථනය කරන්නෙමු.
අනාවැකි = model.predict(x)
ඒක තමයි!
යන්න පිළිබඳව ඔබට දැන් හොඳ අවබෝධයක් තිබිය යුතුය ගැඹුරු ඉගෙනීම යෙදුම, ස්නායුක ජාල, ඒවා සාමාන්යයෙන් ක්රියා කරන ආකාරය සහ පයිතන් කේතයේ ආකෘතියක් තැනීම, පුහුණු කිරීම සහ පරීක්ෂා කිරීම.
මෙම නිබන්ධනය ඔබට ඔබේම ගැඹුරු ඉගෙනුම් ආකෘති නිර්මාණය කිරීමට සහ යෙදවීමට කික්ස්ටාට් ලබා දෙනු ඇතැයි මම බලාපොරොත්තු වෙමි.
ලිපිය ප්රයෝජනවත් නම් අදහස් දැක්වීමේදී අපට දන්වන්න.
ඔබමයි