diff --git a/translated_images/bn/.co-op-translator.json b/translated_images/bn/.co-op-translator.json index 32dc35927..97435c7ac 100644 --- a/translated_images/bn/.co-op-translator.json +++ b/translated_images/bn/.co-op-translator.json @@ -101,6 +101,12 @@ "source_file": "8-Reinforcement/2-Gym/images/cartpole.png", "language_code": "bn" }, + "catplot.e73fc35fdf96242b.webp": { + "original_hash": "90cd4782a2f9b40dec8218b224b29c1c", + "translation_date": "2026-07-14T02:30:22+00:00", + "source_file": "2-Regression/2-Data/images/catplot.png", + "language_code": "bn" + }, "centroid.097fde836cf6c918.webp": { "original_hash": "c8f866ed446563d8e59087f1bca1f97d", "translation_date": "2026-01-16T10:50:47+00:00", @@ -383,6 +389,12 @@ "source_file": "2-Regression/3-Linear/images/heatmap.png", "language_code": "bn" }, + "heatmap.bd98dce43b404c57.webp": { + "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e", + "translation_date": "2026-07-14T02:30:34+00:00", + "source_file": "2-Regression/2-Data/images/heatmap.png", + "language_code": "bn" + }, "hierarchical.bf59403aa43c8c47.webp": { "original_hash": "50b9bc3298659c463ae76564ca645b12", "translation_date": "2026-01-16T10:50:26+00:00", @@ -473,6 +485,12 @@ "source_file": "2-Regression/3-Linear/images/linear.png", "language_code": "bn" }, + "lineplot.f9034ba47b1e30ee.webp": { + "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb", + "translation_date": "2026-07-14T02:30:41+00:00", + "source_file": "2-Regression/2-Data/images/lineplot.png", + "language_code": "bn" + }, "lobe.2fa0806408ef9923.webp": { "original_hash": "e6ec71dbe350aef39135dbf88bc89163", "translation_date": "2026-01-16T10:47:45+00:00", @@ -743,6 +761,12 @@ "source_file": "2-Regression/3-Linear/images/recipes.png", "language_code": "bn" }, + "relplot.a03837d8f0329cec.webp": { + "original_hash": "4733544cb1c2e58e987087283e66b4a5", + "translation_date": "2026-07-14T02:30:27+00:00", + "source_file": "2-Regression/2-Data/images/relplot.png", + "language_code": "bn" + }, "scaled.91897dfbaa26ca4a.webp": { "original_hash": "789c70fafe6f6dd6e377a90b66e7d740", "translation_date": "2026-01-16T11:01:24+00:00", diff --git a/translated_images/bn/catplot.e73fc35fdf96242b.webp b/translated_images/bn/catplot.e73fc35fdf96242b.webp new file mode 100644 index 000000000..178746233 Binary files /dev/null and b/translated_images/bn/catplot.e73fc35fdf96242b.webp differ diff --git a/translated_images/bn/heatmap.bd98dce43b404c57.webp b/translated_images/bn/heatmap.bd98dce43b404c57.webp new file mode 100644 index 000000000..1bf4350ed Binary files /dev/null and b/translated_images/bn/heatmap.bd98dce43b404c57.webp differ diff --git a/translated_images/bn/lineplot.f9034ba47b1e30ee.webp b/translated_images/bn/lineplot.f9034ba47b1e30ee.webp new file mode 100644 index 000000000..dd5e41ab0 Binary files /dev/null and b/translated_images/bn/lineplot.f9034ba47b1e30ee.webp differ diff --git a/translated_images/bn/relplot.a03837d8f0329cec.webp b/translated_images/bn/relplot.a03837d8f0329cec.webp new file mode 100644 index 000000000..22c209625 Binary files /dev/null and b/translated_images/bn/relplot.a03837d8f0329cec.webp differ diff --git a/translated_images/mr/.co-op-translator.json b/translated_images/mr/.co-op-translator.json index 8351255e8..39102836c 100644 --- a/translated_images/mr/.co-op-translator.json +++ b/translated_images/mr/.co-op-translator.json @@ -101,6 +101,12 @@ "source_file": "8-Reinforcement/2-Gym/images/cartpole.png", "language_code": "mr" }, + "catplot.e73fc35fdf96242b.webp": { + "original_hash": "90cd4782a2f9b40dec8218b224b29c1c", + "translation_date": "2026-07-14T02:30:24+00:00", + "source_file": "2-Regression/2-Data/images/catplot.png", + "language_code": "mr" + }, "centroid.097fde836cf6c918.webp": { "original_hash": "c8f866ed446563d8e59087f1bca1f97d", "translation_date": "2026-01-16T10:50:50+00:00", @@ -383,6 +389,12 @@ "source_file": "2-Regression/3-Linear/images/heatmap.png", "language_code": "mr" }, + "heatmap.bd98dce43b404c57.webp": { + "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e", + "translation_date": "2026-07-14T02:30:37+00:00", + "source_file": "2-Regression/2-Data/images/heatmap.png", + "language_code": "mr" + }, "hierarchical.bf59403aa43c8c47.webp": { "original_hash": "50b9bc3298659c463ae76564ca645b12", "translation_date": "2026-01-16T10:50:31+00:00", @@ -473,6 +485,12 @@ "source_file": "2-Regression/3-Linear/images/linear.png", "language_code": "mr" }, + "lineplot.f9034ba47b1e30ee.webp": { + "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb", + "translation_date": "2026-07-14T02:30:42+00:00", + "source_file": "2-Regression/2-Data/images/lineplot.png", + "language_code": "mr" + }, "lobe.2fa0806408ef9923.webp": { "original_hash": "e6ec71dbe350aef39135dbf88bc89163", "translation_date": "2026-01-16T10:47:53+00:00", @@ -743,6 +761,12 @@ "source_file": "2-Regression/3-Linear/images/recipes.png", "language_code": "mr" }, + "relplot.a03837d8f0329cec.webp": { + "original_hash": "4733544cb1c2e58e987087283e66b4a5", + "translation_date": "2026-07-14T02:30:29+00:00", + "source_file": "2-Regression/2-Data/images/relplot.png", + "language_code": "mr" + }, "scaled.91897dfbaa26ca4a.webp": { "original_hash": "789c70fafe6f6dd6e377a90b66e7d740", "translation_date": "2026-01-16T11:01:25+00:00", diff --git a/translated_images/mr/catplot.e73fc35fdf96242b.webp b/translated_images/mr/catplot.e73fc35fdf96242b.webp new file mode 100644 index 000000000..f33ebc4d4 Binary files /dev/null and b/translated_images/mr/catplot.e73fc35fdf96242b.webp differ diff --git a/translated_images/mr/heatmap.bd98dce43b404c57.webp b/translated_images/mr/heatmap.bd98dce43b404c57.webp new file mode 100644 index 000000000..572984f0e Binary files /dev/null and b/translated_images/mr/heatmap.bd98dce43b404c57.webp differ diff --git a/translated_images/mr/lineplot.f9034ba47b1e30ee.webp b/translated_images/mr/lineplot.f9034ba47b1e30ee.webp new file mode 100644 index 000000000..1aad81145 Binary files /dev/null and b/translated_images/mr/lineplot.f9034ba47b1e30ee.webp differ diff --git a/translated_images/mr/relplot.a03837d8f0329cec.webp b/translated_images/mr/relplot.a03837d8f0329cec.webp new file mode 100644 index 000000000..8b6a37ca8 Binary files /dev/null and b/translated_images/mr/relplot.a03837d8f0329cec.webp differ diff --git a/translated_images/ne/.co-op-translator.json b/translated_images/ne/.co-op-translator.json index 67de5c55b..06697d30d 100644 --- a/translated_images/ne/.co-op-translator.json +++ b/translated_images/ne/.co-op-translator.json @@ -101,6 +101,12 @@ "source_file": "8-Reinforcement/2-Gym/images/cartpole.png", "language_code": "ne" }, + "catplot.e73fc35fdf96242b.webp": { + "original_hash": "90cd4782a2f9b40dec8218b224b29c1c", + "translation_date": "2026-07-14T02:30:25+00:00", + "source_file": "2-Regression/2-Data/images/catplot.png", + "language_code": "ne" + }, "centroid.097fde836cf6c918.webp": { "original_hash": "c8f866ed446563d8e59087f1bca1f97d", "translation_date": "2026-01-16T10:50:54+00:00", @@ -383,6 +389,12 @@ "source_file": "2-Regression/3-Linear/images/heatmap.png", "language_code": "ne" }, + "heatmap.bd98dce43b404c57.webp": { + "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e", + "translation_date": "2026-07-14T02:30:40+00:00", + "source_file": "2-Regression/2-Data/images/heatmap.png", + "language_code": "ne" + }, "hierarchical.bf59403aa43c8c47.webp": { "original_hash": "50b9bc3298659c463ae76564ca645b12", "translation_date": "2026-01-16T10:50:36+00:00", @@ -473,6 +485,12 @@ "source_file": "2-Regression/3-Linear/images/linear.png", "language_code": "ne" }, + "lineplot.f9034ba47b1e30ee.webp": { + "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb", + "translation_date": "2026-07-14T02:30:44+00:00", + "source_file": "2-Regression/2-Data/images/lineplot.png", + "language_code": "ne" + }, "lobe.2fa0806408ef9923.webp": { "original_hash": "e6ec71dbe350aef39135dbf88bc89163", "translation_date": "2026-01-16T10:48:02+00:00", @@ -743,6 +761,12 @@ "source_file": "2-Regression/3-Linear/images/recipes.png", "language_code": "ne" }, + "relplot.a03837d8f0329cec.webp": { + "original_hash": "4733544cb1c2e58e987087283e66b4a5", + "translation_date": "2026-07-14T02:30:31+00:00", + "source_file": "2-Regression/2-Data/images/relplot.png", + "language_code": "ne" + }, "scaled.91897dfbaa26ca4a.webp": { "original_hash": "789c70fafe6f6dd6e377a90b66e7d740", "translation_date": "2026-01-16T11:01:26+00:00", diff --git a/translated_images/ne/catplot.e73fc35fdf96242b.webp b/translated_images/ne/catplot.e73fc35fdf96242b.webp new file mode 100644 index 000000000..213f9d3e4 Binary files /dev/null and b/translated_images/ne/catplot.e73fc35fdf96242b.webp differ diff --git a/translated_images/ne/heatmap.bd98dce43b404c57.webp b/translated_images/ne/heatmap.bd98dce43b404c57.webp new file mode 100644 index 000000000..e87ad37c4 Binary files /dev/null and b/translated_images/ne/heatmap.bd98dce43b404c57.webp differ diff --git a/translated_images/ne/lineplot.f9034ba47b1e30ee.webp b/translated_images/ne/lineplot.f9034ba47b1e30ee.webp new file mode 100644 index 000000000..59e17a205 Binary files /dev/null and b/translated_images/ne/lineplot.f9034ba47b1e30ee.webp differ diff --git a/translated_images/ne/relplot.a03837d8f0329cec.webp b/translated_images/ne/relplot.a03837d8f0329cec.webp new file mode 100644 index 000000000..98e4a59e7 Binary files /dev/null and b/translated_images/ne/relplot.a03837d8f0329cec.webp differ diff --git a/translations/bn/.co-op-translator.json b/translations/bn/.co-op-translator.json index 329ce4706..97cc4464b 100644 --- a/translations/bn/.co-op-translator.json +++ b/translations/bn/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "bn" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-04T21:06:45+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T02:09:21+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "bn" }, @@ -54,8 +54,8 @@ "language_code": "bn" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-04T20:59:44+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T02:05:54+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "bn" }, @@ -72,8 +72,8 @@ "language_code": "bn" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-04T21:00:41+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T02:06:44+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "bn" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "bn" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T02:02:14+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "bn" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:56:52+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-04T21:13:21+00:00", + "translation_date": "2026-07-14T02:07:40+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "bn" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-04T21:14:05+00:00", + "translation_date": "2026-07-14T02:08:33+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "bn" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-04T21:05:51+00:00", + "translation_date": "2026-07-14T02:10:18+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "bn" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "bn" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "bn", + "failure_date": "2026-07-14T02:05:09+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "docs/_sidebar.md": { "original_hash": "68dd06c685f6ce840e0acfa313352e7c", "translation_date": "2025-08-29T21:08:07+00:00", diff --git a/translations/bn/1-Introduction/3-fairness/README.md b/translations/bn/1-Introduction/3-fairness/README.md index 93b4d4eb5..2b9efdead 100644 --- a/translations/bn/1-Introduction/3-fairness/README.md +++ b/translations/bn/1-Introduction/3-fairness/README.md @@ -1,144 +1,167 @@ -# দায়িত্বশীল AI দিয়ে মেশিন লার্নিং সমাধান তৈরি করা +# দায়িত্বশীল AI দিয়ে মেশিন লার্নিং সমাধান তৈরি + +![মেশিন লার্নিং-এ দায়িত্বশীল AI-এর সারাংশ একটি স্কেচনোটে](../../../../translated_images/bn/ml-fairness.ef296ebec6afc98a.webp) +> স্কেচনোট লিখেছেন [Tomomi Imura](https://www.twitter.com/girlie_mac) -![মেশিন লার্নিং-এ দায়িত্বশীল AI-এর সারাংশ একটি স্কেচনোটে](../../../../sketchnotes/ml-fairness.png) -> স্কেচনোট: [Tomomi Imura](https://www.twitter.com/girlie_mac) +## [প্রী-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) + +## পরিচিতি -## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) +এই পাঠক্রমে, আপনি আবিষ্কার করতে শুরু করবেন যে কীভাবে মেশিন লার্নিং আমাদের প্রতিদিনের জীবনে প্রভাব ফেলছে এবং ফেলতে পারে। বিশেষ করে আজকের দিনে, সিস্টেম এবং মডেলগুলি প্রতিদিনের সিদ্ধান্ত গ্রহণের কাজগুলোতে জড়িত থাকে, যেমন স্বাস্থ্যসেবা নির্ণয়, ঋণ অনুমোদন বা দুর্নীতির সনাক্তকরণ। তাই, এই মডেলগুলোর সঠিক ও বিশ্বাসযোগ্য ফলাফল দেওয়া জরুরি। যেকোন সফটওয়্যার অ্যাপ্লিকেশনের মতো, AI সিস্টেমও প্রত্যাশা পূরণ করতে না পারা বা অনাকাঙ্ক্ষিত ফলাফল দেয়ার সম্ভাবনা থাকে। এজন্য AI মডেলের আচরণ বোঝা এবং ব্যাখ্যা করার ক্ষমতা থাকা অপরিহার্য। -## ভূমিকা +ভাবুন যখন আপনি মডেল তৈরিতে ব্যবহার করা ডাটাতে কোনো নির্দিষ্ট জনগোষ্ঠীর যেমন: বর্ণ, লিঙ্গ, রাজনৈতিক মতামত, ধর্মের অভাব থাকে বা অনুপাতে বেশি প্রতিনিধিত্ব পায়, তখন কী হতে পারে? যখন মডেলের আউটপুট কোনো নির্দিষ্ট জনগোষ্ঠীর পক্ষে যায় তখন কী হয়? তার পরিণতি কী? এছাড়াও, মডেলের ফলাফল কোনো ক্ষতিকর হলে এবং মানুষের জন্য অযাচিত হলে কী ঘটে? AI সিস্টেমের আচরণের জন্য কে দায়ী? এই প্রশ্নগুলোই আমরা এই পাঠক্রমে অনুসন্ধান করব। -এই পাঠ্যক্রমে, আপনি শিখতে শুরু করবেন কীভাবে মেশিন লার্নিং আমাদের দৈনন্দিন জীবনে প্রভাব ফেলছে। এমনকি এখন, সিস্টেম এবং মডেলগুলি স্বাস্থ্যসেবা নির্ণয়, ঋণ অনুমোদন বা প্রতারণা সনাক্তকরণের মতো দৈনন্দিন সিদ্ধান্ত গ্রহণের কাজে জড়িত। তাই, এটি গুরুত্বপূর্ণ যে এই মডেলগুলি এমন ফলাফল প্রদান করে যা বিশ্বাসযোগ্য। যেকোনো সফটওয়্যার অ্যাপ্লিকেশনের মতো, AI সিস্টেমগুলি প্রত্যাশা পূরণে ব্যর্থ হতে পারে বা অনাকাঙ্ক্ষিত ফলাফল দিতে পারে। এজন্য AI মডেলের আচরণ বুঝতে এবং ব্যাখ্যা করতে সক্ষম হওয়া অত্যন্ত গুরুত্বপূর্ণ। +এই পাঠে আপনি: -কল্পনা করুন, আপনি যখন এই মডেলগুলি তৈরি করতে ব্যবহৃত ডেটাতে নির্দিষ্ট জনসংখ্যার অভাব থাকে, যেমন জাতি, লিঙ্গ, রাজনৈতিক মতামত, ধর্ম, বা অসমভাবে প্রতিনিধিত্ব করা হয়। যদি মডেলের আউটপুট কিছু জনসংখ্যাকে প্রাধান্য দেয়, তাহলে এর ফলাফল কী হতে পারে? এছাড়াও, যদি মডেলটি ক্ষতিকর ফলাফল দেয় এবং মানুষের জন্য ক্ষতিকর হয়, তাহলে এর জন্য কে দায়ী? এই পাঠ্যক্রমে আমরা এই প্রশ্নগুলো নিয়ে আলোচনা করব। - -এই পাঠে আপনি: - -- মেশিন লার্নিং-এ ন্যায্যতার গুরুত্ব এবং ন্যায্যতা-সম্পর্কিত ক্ষতির বিষয়ে সচেতনতা বৃদ্ধি করবেন। -- আউটলায়ার এবং অস্বাভাবিক পরিস্থিতি অন্বেষণের অনুশীলনে পরিচিত হবেন যাতে নির্ভরযোগ্যতা এবং নিরাপত্তা নিশ্চিত করা যায়। -- সবাইকে ক্ষমতায়িত করার জন্য অন্তর্ভুক্তিমূলক সিস্টেম ডিজাইনের প্রয়োজনীয়তা বুঝবেন। -- ডেটা এবং মানুষের গোপনীয়তা এবং নিরাপত্তা রক্ষার গুরুত্ব অন্বেষণ করবেন। -- AI মডেলের আচরণ ব্যাখ্যা করার জন্য একটি স্বচ্ছ পদ্ধতির গুরুত্ব দেখবেন। -- AI সিস্টেমে বিশ্বাস তৈরি করতে দায়বদ্ধতার গুরুত্ব সম্পর্কে সচেতন হবেন। +- মেশিন লার্নিংয়ে ন্যায়বিচারের গুরুত্ব এবং ন্যায়বিচার সংক্রান্ত ক্ষতির বিষয়ে সচেতনতা বাড়াবেন। +- আউটলায়ার এবং অস্বাভাবিক পরিস্থিতি অন্বেষণ করার অভ্যাসে পরিচিত হবেন, যাতে নির্ভরযোগ্যতা ও নিরাপত্তা নিশ্চিত করা যায়। +- অন্তর্ভুক্তিমূলক সিস্টেম ডিজাইন করে সবাইকে ক্ষমতায়িত করার প্রয়োজনীয়তা সম্পর্কে বোঝাপড়া লাভ করবেন। +- ডেটা এবং মানুষের গোপনীয়তা ও সুরক্ষা রক্ষার গুরুত্ব অন্বেষণ করবেন। +- AI মডেলের আচরণ ব্যাখ্যার জন্য গ্লাস বক্স পদ্ধতির গুরুত্ব দেখবেন। +- AI সিস্টেমে বিশ্বাস গড়ে তুলতে জবাবদিহিতা কতটা অপরিহার্য তা সচেতন থাকবেন। ## পূর্বশর্ত -পূর্বশর্ত হিসেবে, "Responsible AI Principles" শেখার পথটি গ্রহণ করুন এবং নিচের ভিডিওটি দেখুন: +পূর্বশর্ত হিসেবে, অনুগ্রহ করে "দায়িত্বশীল AI নীতি" লার্ন পাথ সম্পন্ন করুন এবং নিচের ভিডিওটি দেখুন: -[Responsible AI শেখার পথ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +দায়িত্বশীল AI সম্পর্কে আরও শিখতে এই [লার্ন পাথ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) অনুসরণ করুন -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![Microsoft-এর দায়িত্বশীল AI-এর পদ্ধতি](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 উপরের ছবিতে ক্লিক করুন: Microsoft's Approach to Responsible AI +> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: Microsoft-এর দায়িত্বশীল AI-এর পদ্ধতি -## ন্যায্যতা +## ন্যায়বিচার -AI সিস্টেমগুলোকে সবার প্রতি ন্যায্য আচরণ করতে হবে এবং একই ধরনের গোষ্ঠীর মানুষের প্রতি ভিন্নভাবে প্রভাব না ফেলতে হবে। উদাহরণস্বরূপ, যখন AI সিস্টেমগুলো চিকিৎসা, ঋণ আবেদন বা চাকরির ক্ষেত্রে নির্দেশনা প্রদান করে, তখন একই উপসর্গ, আর্থিক পরিস্থিতি বা পেশাগত যোগ্যতা থাকা সবার জন্য একই সুপারিশ করা উচিত। আমাদের প্রত্যেকের মধ্যে এমন উত্তরাধিকারসূত্রে প্রাপ্ত পক্ষপাত রয়েছে যা আমাদের সিদ্ধান্ত এবং কর্মে প্রভাব ফেলে। এই পক্ষপাতগুলো আমরা AI সিস্টেম প্রশিক্ষণের জন্য ব্যবহৃত ডেটাতে দেখতে পাই। কখনও কখনও এই ধরনের প্রভাব অনিচ্ছাকৃতভাবে ঘটে। ডেটাতে পক্ষপাত যুক্ত করার সময় সচেতনভাবে তা জানা প্রায়ই কঠিন। +AI সিস্টেমকে সবার প্রতি ন্যায়বান হতে হবে এবং একই ধরনের মানুষের গোষ্ঠীগুলোর প্রতি ভিন্নভাবে আচরণ এড়াতে হবে। উদাহরণস্বরূপ, যখন AI সিস্টেম চিকিৎসা নির্দেশনা, ঋণ আবেদন বা চাকরির ক্ষেত্রে পরামর্শ দেয়, তখন একই ধরনের উপসর্গ, আর্থিক পরিস্থিতি বা পেশাগত যোগ্যতা সম্পন্ন সবাইকে একই সুপারিশ করা উচিত। আমরা প্রত্যেকেই এমন বংশগত পক্ষপাত বহন করি যা আমাদের সিদ্ধান্ত ও কার্যকলাপকে প্রভাবিত করে। এই পক্ষপাতগুলি ডেটায় প্রতিফলিত হতে পারে যা AI সিস্টেমকে প্রশিক্ষিত করতে ব্যবহৃত হয়। কখনো কখনো এমন প্রভাব অজান্তে চলে আসে। পক্ষপাত অন্তর্ভুক্তির সজ্ঞানে সচেতন হওয়া কঠিন। -**“অন্যায্যতা”** বলতে একটি গোষ্ঠীর জন্য নেতিবাচক প্রভাব বা “ক্ষতি” বোঝায়, যেমন জাতি, লিঙ্গ, বয়স বা অক্ষমতার ভিত্তিতে সংজ্ঞায়িত। ন্যায্যতা-সম্পর্কিত প্রধান ক্ষতিগুলোকে নিম্নরূপ শ্রেণীবদ্ধ করা যায়: +**“অন্যায়”** মানে নেতিবাচক প্রভাব বা “ক্ষতি”, যা নির্দিষ্ট জনগোষ্ঠীর জন্য হয়, যেমন বর্ণ, লিঙ্গ, বয়স বা প্রতিবন্ধী অবস্থার ভিত্তিতে। প্রধান ন্যায়বিচার-সংক্রান্ত ক্ষতি শ্রেণীবদ্ধ করা যায়: -- **বণ্টন**, যদি একটি লিঙ্গ বা জাতি অন্যটির তুলনায় প্রাধান্য পায়। -- **সেবার গুণমান**। যদি আপনি একটি নির্দিষ্ট পরিস্থিতির জন্য ডেটা প্রশিক্ষণ করেন কিন্তু বাস্তবতা অনেক বেশি জটিল হয়, তাহলে এটি একটি দুর্বল সেবার দিকে নিয়ে যায়। উদাহরণস্বরূপ, একটি হাত ধোয়ার সাবান ডিসপেনসার যা গাঢ় ত্বকের মানুষের উপস্থিতি সনাক্ত করতে পারে না। [রেফারেন্স](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **অপমান**। অন্যায়ভাবে সমালোচনা করা বা কিছু বা কাউকে লেবেল দেওয়া। উদাহরণস্বরূপ, একটি ইমেজ লেবেলিং প্রযুক্তি কালো ত্বকের মানুষের ছবি ভুলভাবে গরিলা হিসেবে চিহ্নিত করেছিল। -- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হলো একটি নির্দিষ্ট গোষ্ঠীকে একটি নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো সেবা বা কার্যক্রম যা এটি প্রচার করে তা ক্ষতির দিকে অবদান রাখে। -- **স্টেরিওটাইপিং**। একটি নির্দিষ্ট গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা। উদাহরণস্বরূপ, ইংরেজি এবং তুর্কি ভাষার মধ্যে একটি ভাষা অনুবাদ সিস্টেমে লিঙ্গ-সম্পর্কিত স্টেরিওটাইপের কারণে ভুল হতে পারে। +- **বন্টন**, যেমন লিঙ্গ বা জাতিগততার ক্ষেত্রে এক পক্ষের পক্ষে বেশি সুবিধা দেওয়া হয়। +- **পরিষেবার গুণগত মান**। যদি আপনি এক বিশেষ পরিস্থিতির জন্য ডেটা প্রশিক্ষণ দেন কিন্তু বাস্তবতা অনেক বেশি জটিল হয়, তবে তা খারাপ সেবাতে পরিণত হয়। উদাহরণস্বরূপ, এমন একটি হ্যান্ড সাবান ডিসপেন্সার যা গাঢ় রঙের ত্বকের মানুষের উপস্থিতি শনাক্ত করতে পারে না। [তথ্যসূত্র](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **হেয় করা**। অন্যায়ভাবে কারো সমালোচনা বা খারাপ ট্যাগ দেয়া। উদাহরণস্বরূপ, একটি ছবি লেবেলিং প্রযুক্তি গাঢ় রঙের মানুষের ছবি গোড়িলাদের হিসেবে ভুল চিহ্নিত করেছিল। +- **অধিক বা কম প্রতিনিধিত্ব**। ধারণাটি হলো কোনো নির্দিষ্ট গোষ্ঠী কোনো পেশায় দেখা যায় না এবং যেকোনো পরিষেবা বা কাজ যা তা প্রাধান্য দেয়, তা ক্ষতিকর হতে পারে। +- **স্টেরিওটাইপিং**। কোনো গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা। উদাহরণস্বরূপ, ইংরেজি এবং তুর্কি ভাষার অনুবাদ ব্যবস্থায় লিঙ্গভিত্তিক স্টেরিওটাইপিক্যাল শব্দ থাকার কারণে ভুল হতে পারে। -![তুর্কিতে অনুবাদ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![তুর্কিতে অনুবাদ](../../../../translated_images/bn/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > তুর্কিতে অনুবাদ -![ইংরেজিতে ফিরে অনুবাদ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> ইংরেজিতে ফিরে অনুবাদ +![আবার ইংরেজিতে অনুবাদ](../../../../translated_images/bn/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> আবার ইংরেজিতে অনুবাদ -AI সিস্টেম ডিজাইন এবং পরীক্ষা করার সময়, আমাদের নিশ্চিত করতে হবে যে AI ন্যায্য এবং পক্ষপাতমূলক বা বৈষম্যমূলক সিদ্ধান্ত নিতে প্রোগ্রাম করা হয়নি, যা মানুষের জন্যও নিষিদ্ধ। AI এবং মেশিন লার্নিং-এ ন্যায্যতা নিশ্চিত করা একটি জটিল সামাজিক-প্রযুক্তিগত চ্যালেঞ্জ। +AI সিস্টেম ডিজাইন ও পরীক্ষার সময় নিশ্চিত করতে হয় যে AI ন্যায়সঙ্গত এবং পক্ষপাতমূলক বা বৈষম্যমূলক সিদ্ধান্ত না দেয়, যা মানবকেও বাধ্যতামূলকভাবে এড়াতে হয়। AI ও মেশিন লার্নিংয়ে ন্যায়প্রদতা নিশ্চিত করা একটি জটিল সামাজিক-প্রযুক্তিগত চ্যালেঞ্জ। ### নির্ভরযোগ্যতা এবং নিরাপত্তা -বিশ্বাস তৈরি করতে, AI সিস্টেমগুলোকে স্বাভাবিক এবং অপ্রত্যাশিত পরিস্থিতিতে নির্ভরযোগ্য, নিরাপদ এবং ধারাবাহিক হতে হবে। বিভিন্ন পরিস্থিতিতে AI সিস্টেমের আচরণ কেমন হবে তা জানা গুরুত্বপূর্ণ, বিশেষত যখন তারা অস্বাভাবিক পরিস্থিতিতে থাকে। AI সমাধান তৈরি করার সময়, AI সমাধানগুলো যে বিভিন্ন পরিস্থিতির সম্মুখীন হতে পারে তা পরিচালনা করার জন্য যথেষ্ট মনোযোগ দেওয়া প্রয়োজন। উদাহরণস্বরূপ, একটি স্বয়ংচালিত গাড়িকে মানুষের নিরাপত্তাকে সর্বোচ্চ অগ্রাধিকার দিতে হবে। ফলস্বরূপ, গাড়ির AI-কে রাত, বজ্রঝড় বা তুষারঝড়, রাস্তা পার হওয়া শিশু, পোষা প্রাণী, রাস্তা নির্মাণ ইত্যাদির মতো সমস্ত সম্ভাব্য পরিস্থিতি বিবেচনা করতে হবে। একটি AI সিস্টেম কতটা ভালোভাবে বিভিন্ন পরিস্থিতি নির্ভরযোগ্য এবং নিরাপদভাবে পরিচালনা করতে পারে তা ডেটা বিজ্ঞানী বা AI ডেভেলপার ডিজাইন বা পরীক্ষার সময় কতটা প্রত্যাশা করেছেন তা প্রতিফলিত করে। +বিশ্বাস গড়ে তুলতে AI সিস্টেমগুলোকে সাধারণ ও অপ্রত্যাশিত পরিস্থিতিতেও নির্ভরযোগ্য, নিরাপদ এবং নিয়মিত থাকতে হবে। একাধিক পরিস্থিতিতে বিশেষ করে আউটলায়ার হলে AI সিস্টেম কেমন আচরণ করবে জানা গুরুত্বপূর্ণ। AI সমাধান গড়ে তোলার সময়ে AI সমাধানগুলো বিভিন্ন পরিস্থিতি মোকাবেলার উপর শক্ত ফোকাস থাকা প্রয়োজন। উদাহরণস্বরূপ, স্বয়ংচালিত গাড়ি মানুষের নিরাপত্তাকে সর্বোচ্চ অগ্রাধিকার দেবে। তাই গাড়িকে AI চালিত করার সময় গাড়িটি রাত, বিদ্যুৎ ঝড়, তুষারঝড়, রাস্তা পারাপারকারী শিশু, পোষা প্রাণী, রাস্তা নির্মাণ ইত্যাদি সকল সম্ভাব্য পরিস্থিতি বিবেচনা করতে হবে। একটি AI সিস্টেম কতটা ভালোভাবে এবং নিরাপদে বিভিন্ন পরিবেশ মোকাবেলা করতে পারে তা প্রকৌশলী বা AI ডেভেলপার কতটা পূর্বাভাস দিয়েছে, তা প্রতিফলিত করে। -> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 ভিডিও দেখতে এখানে ক্লিক করুন: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### অন্তর্ভুক্তিমূলকতা -AI সিস্টেমগুলোকে এমনভাবে ডিজাইন করা উচিত যাতে সবার অংশগ্রহণ এবং ক্ষমতায়ন নিশ্চিত হয়। AI সিস্টেম ডিজাইন এবং বাস্তবায়নের সময়, ডেটা বিজ্ঞানী এবং AI ডেভেলপাররা সিস্টেমে সম্ভাব্য বাধাগুলো চিহ্নিত করেন এবং সমাধান করেন যা অনিচ্ছাকৃতভাবে মানুষকে বাদ দিতে পারে। উদাহরণস্বরূপ, বিশ্বে ১ বিলিয়ন প্রতিবন্ধী মানুষ রয়েছে। AI-এর অগ্রগতির মাধ্যমে, তারা তাদের দৈনন্দিন জীবনে আরও সহজে তথ্য এবং সুযোগগুলোতে প্রবেশ করতে পারে। বাধাগুলো দূর করার মাধ্যমে, এটি উদ্ভাবনের সুযোগ তৈরি করে এবং সবার জন্য আরও ভালো অভিজ্ঞতা সহ AI পণ্য তৈরি করে। +AI সিস্টেম এমনভাবে ডিজাইন করা উচিত যা সবাইকে জড়িত করে এবং ক্ষমতায়িত করে। AI সিস্টেম ডিজাইন ও বাস্তবায়নের সময় ডেটা বিজ্ঞানী ও ডেভেলপাররা সিস্টেমের সম্ভাব্য প্রতিবন্ধকতাগুলো সনাক্ত করে যা মানুষের বেছে নিয়ে বাদ দিতে পারে। উদাহরণস্বরূপ, বিশ্বে ১ বিলিয়ন প্রতিবন্ধী মানুষ আছেন। AI প্রগতির মাধ্যমে তারা প্রতিদিনের জীবনে তথ্য ও সুযোগ আরও সহজে পেতে পারেন। প্রতিবন্ধকতাগুলো মোকাবেলা করে, everyoneকে উপকৃত করে এমন AI পণ্য উদ্ভাবন এবং উন্নয়নের সুযোগ তৈরি হয়। -> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: AI-তে অন্তর্ভুক্তিমূলকতা](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 AI-তে অন্তর্ভুক্তিমূলকতা সম্পর্কে ভিডিও দেখতে এখানে ক্লিক করুন](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### নিরাপত্তা এবং গোপনীয়তা +### সুরক্ষা ও গোপনীয়তা -AI সিস্টেমগুলোকে নিরাপদ হতে হবে এবং মানুষের গোপনীয়তার প্রতি সম্মান দেখাতে হবে। এমন সিস্টেমে মানুষের কম বিশ্বাস থাকে যা তাদের গোপনীয়তা, তথ্য বা জীবনকে ঝুঁকিতে ফেলে। মেশিন লার্নিং মডেল প্রশিক্ষণের সময়, আমরা সেরা ফলাফল পেতে ডেটার উপর নির্ভর করি। এটি করার সময়, ডেটার উৎস এবং অখণ্ডতা বিবেচনা করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, ডেটা কি ব্যবহারকারী জমা দিয়েছে নাকি এটি সর্বজনীনভাবে উপলব্ধ? পরবর্তী ধাপে, ডেটার সাথে কাজ করার সময়, এটি অত্যন্ত গুরুত্বপূর্ণ যে AI সিস্টেমগুলো গোপনীয় তথ্য রক্ষা করতে এবং আক্রমণ প্রতিরোধ করতে সক্ষম। AI আরও ব্যাপক হওয়ার সাথে সাথে গোপনীয়তা রক্ষা এবং গুরুত্বপূর্ণ ব্যক্তিগত এবং ব্যবসায়িক তথ্য সুরক্ষিত করা আরও গুরুত্বপূর্ণ এবং জটিল হয়ে উঠছে। গোপনীয়তা এবং ডেটা নিরাপত্তার বিষয়গুলো AI-এর জন্য বিশেষভাবে ঘনিষ্ঠ মনোযোগ প্রয়োজন কারণ ডেটার অ্যাক্সেস AI সিস্টেমগুলোকে মানুষের সম্পর্কে সঠিক এবং তথ্যপূর্ণ পূর্বাভাস এবং সিদ্ধান্ত নিতে সক্ষম করে। +AI সিস্টেম নিরাপদ হওয়া উচিত এবং মানুষের গোপনীয়তা সম্মান করা উচিত। যারা তাদের গোপনীয়তা, তথ্য বা জীবন ঝুঁকিতে ফেলে এমন সিস্টেমে কম বিশ্বাস করে। মেশিন লার্নিং মডেল প্রশিক্ষণের সময় সেরা ফলাফল পাওয়ার জন্য আমরা ডেটার ওপর নির্ভর করি। এজন্য ডেটার উৎস ও অখণ্ডতা বিবেচনা জরুরি। যেমন, ডেটা ব্যবহারকারী জমা দিয়েছেন কি না বা এটি কি প্রকাশ্যে উপলব্ধ ছিল? পরবর্তী ধাপে, ডেটার সঙ্গে কাজ করার সময় গোপনীয় তথ্য রক্ষা এবং আক্রমণ প্রতিরোধী AI সিস্টেম তৈরি করা আবশ্যক। AI ব্যাপক হওয়ায় গোপনীয়তা এবং গুরুত্বপূর্ণ ব্যক্তিগত ও ব্যবসায়িক তথ্য রক্ষা করা আরও গুরুত্বপূর্ণ ও জটিল হয়ে দাঁড়িয়েছে। গোপনীয়তা ও ডেটা সুরক্ষা সমস্যা AI-র জন্য বিশেষ মনোযোগ দাবি করে কারণ সঠিক ও সচেতন পূর্বাভাস ও সিদ্ধান্ত নেওয়ার জন্য AI সিস্টেমের ডেটা প্রবেশাধিকার অপরিহার্য। -> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: AI-তে নিরাপত্তা](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 AI-তে সুরক্ষা সম্পর্কে ভিডিও দেখতে এখানে ক্লিক করুন](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- শিল্প হিসেবে আমরা গোপনীয়তা এবং নিরাপত্তায় উল্লেখযোগ্য অগ্রগতি করেছি, যা GDPR (General Data Protection Regulation)-এর মতো নিয়ম দ্বারা উল্লেখযোগ্যভাবে চালিত হয়েছে। -- তবে AI সিস্টেমের ক্ষেত্রে আমাদের স্বীকার করতে হবে যে ব্যক্তিগত ডেটার প্রয়োজনীয়তা এবং গোপনীয়তার মধ্যে একটি টানাপোড়েন রয়েছে। -- ইন্টারনেটের সাথে সংযুক্ত কম্পিউটারের জন্মের মতো, আমরা AI-সম্পর্কিত নিরাপত্তা সমস্যার সংখ্যায়ও একটি বড় বৃদ্ধি দেখছি। -- একই সময়ে, আমরা AI ব্যবহার করে নিরাপত্তা উন্নত করতে দেখেছি। উদাহরণস্বরূপ, আজকের বেশিরভাগ আধুনিক অ্যান্টি-ভাইরাস স্ক্যানার AI হিউরিস্টিক দ্বারা চালিত। -- আমাদের নিশ্চিত করতে হবে যে আমাদের ডেটা সায়েন্স প্রক্রিয়াগুলো সর্বশেষ গোপনীয়তা এবং নিরাপত্তা অনুশীলনের সাথে সুরেলা ভাবে মিশে যায়। - -### স্বচ্ছতা +- একটি শিল্প হিসেবে, আমরা গোপনীয়তা ও সুরক্ষায় উল্লেখযোগ্য অগ্রগতি করেছি, বিশেষ করে GDPR (জনरल ডেটা প্রোটেকশন রেগুলেশন) এর মত নিয়মকানুন দ্বারা চালিত হয়। +- তবে AI সিস্টেমে আমাদের মেনে নিতে হবে যে, ব্যক্তিগত ডেটার বেশি প্রয়োজন এবং গোপনীয়তার মধ্যে একটি টানাপোড়েন আছে। +- যেমন ইন্টারনেটের জন্মের সময় সংযুক্ত কম্পিউটারগুলোর ক্ষেত্রে, এখনও AI-এর সাথে সম্পর্কিত সুরক্ষা সমস্যাগুলোর ব্যাপক বৃদ্ধি দেখছি। +- একই সাথে, আমরা দেখেছি AI কে সুরক্ষা উন্নত করতে ব্যবহার করা হচ্ছে। উদাহরণস্বরূপ, অধিকাংশ আধুনিক অ্যান্টিভাইরাস স্ক্যানার আজকাল AI হিউরিস্টিক দ্বারা চালিত হয়। +- আমাদের ডেটা সায়েন্স প্রক্রিয়াগুলো সম্প্রতি গোপনীয়তা এবং সুরক্ষার সর্বাধুনিক অনুশীলনের সাথে αρμονিয়ভাবে মিশতে হবে। -AI সিস্টেমগুলোকে বোঝার মতো হতে হবে। স্বচ্ছতার একটি গুরুত্বপূর্ণ অংশ হলো AI সিস্টেম এবং এর উপাদানগুলোর আচরণ ব্যাখ্যা করা। AI সিস্টেমের বোঝাপড়া উন্নত করতে, স্টেকহোল্ডারদের বুঝতে হবে কীভাবে এবং কেন তারা কাজ করে যাতে তারা সম্ভাব্য কর্মক্ষমতা সমস্যা, নিরাপত্তা এবং গোপনীয়তা উদ্বেগ, পক্ষপাত, বাদ দেওয়ার অনুশীলন বা অনিচ্ছাকৃত ফলাফল চিহ্নিত করতে পারে। আমরা বিশ্বাস করি যে যারা AI সিস্টেম ব্যবহার করেন তাদের উচিত সেগুলো কখন, কেন এবং কীভাবে ব্যবহার করা হয় তা সম্পর্কে সৎ এবং খোলামেলা হওয়া। সেইসাথে তারা যে সিস্টেমগুলো ব্যবহার করেন তার সীমাবদ্ধতা সম্পর্কে। উদাহরণস্বরূপ, যদি একটি ব্যাংক তার ভোক্তা ঋণ সিদ্ধান্তে সহায়তা করার জন্য একটি AI সিস্টেম ব্যবহার করে, তাহলে ফলাফলগুলো পরীক্ষা করা এবং কোন ডেটা সিস্টেমের সুপারিশকে প্রভাবিত করে তা বোঝা গুরুত্বপূর্ণ। সরকার বিভিন্ন শিল্পে AI নিয়ন্ত্রণ করতে শুরু করেছে, তাই ডেটা বিজ্ঞানী এবং সংস্থাগুলোকে ব্যাখ্যা করতে হবে যে একটি AI সিস্টেম নিয়ন্ত্রক প্রয়োজনীয়তা পূরণ করে কিনা, বিশেষত যখন একটি অনাকাঙ্ক্ষিত ফলাফল ঘটে। -> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: AI-তে স্বচ্ছতা](https://www.microsoft.com/videoplayer/embed/RE4voJF) +### স্বচ্ছতা +AI সিস্টেম বোঝাপড়াযোগ্য হওয়া উচিত। স্বচ্ছতার একটি গুরুত্বপূর্ণ অংশ হলো AI সিস্টেম ও তাদের উপাদানগুলোর আচরণ ব্যাখ্যা করা। AI সিস্টেমের ভালো বোঝাপড়া নিশ্চিত করতে অংশীদারদের বুঝতে হবে তারা কেন এবং কীভাবে কাজ করে যাতে তারা সম্ভাব্য কর্মক্ষমতা সমস্যা, নিরাপত্তা ও গোপনীয়তা উদ্বেগ, পক্ষপাত, বঞ্চনামূলক অনুশীলন অথবা অনিচ্ছাকৃত ফলাফলের সনাক্তকরণ করতে পারে। আমরা বিশ্বাস করি AI ব্যবহারকারীদের উচিত সতর্ক এবং সৎ হওয়া যে কখন, কেন এবং কীভাবে তারা AI ব্যবহার করছেন, এবং ব্যবহৃত সিস্টেমের সীমাবদ্ধতা সম্পর্কে জানান। উদাহরণস্বরূপ, যদি একটি ব্যাংক তাদের ভোক্তা ঋণ সিদ্ধান্ত সমর্থনে AI সিস্টেম ব্যবহার করে, তবে ফলাফলগুলি নিরীক্ষণ ও বুঝা জরুরি কোন ডেটা সিস্টেমের পরামর্শকে প্রভাবিত করে। সরকার শিল্পগুলোর AI নিয়ন্ত্রণ শুরু করছে, তাই ডেটা বিজ্ঞানী ও প্রতিষ্ঠানগুলোকে ব্যাখ্যা করতে হবে যদি AI সিস্টেম আইনগত শর্ত পূরণ করে, বিশেষ করে অনিচ্ছাকৃত ফলাফল হলে। -- AI সিস্টেমগুলো এতটাই জটিল যে সেগুলো কীভাবে কাজ করে এবং ফলাফলগুলো ব্যাখ্যা করা কঠিন। -- এই বোঝার অভাব সিস্টেমগুলো কীভাবে পরিচালিত, কার্যকরী এবং নথিভুক্ত হয় তা প্রভাবিত করে। -- এই বোঝার অভাব আরও গুরুত্বপূর্ণভাবে সিস্টেমগুলো যে ফলাফল তৈরি করে তা ব্যবহার করে নেওয়া সিদ্ধান্তগুলোকে প্রভাবিত করে। +> [🎥 AI-তে স্বচ্ছতা সম্পর্কিত ভিডিও দেখতে এখানে ক্লিক করুন](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### দায়িত্বশীলতা +- AI সিস্টেমগুলি এত জটিল যে তারা কীভাবে কাজ করে এবং ফলাফল কেমন আসে বোঝা কঠিন। +- এর ফলে এই সিস্টেমগুলোর ব্যবস্থাপনা, প্রয়োগ এবং নথিবদ্ধকরণ প্রভাবিত হয়। +- সবচেয়ে গুরুত্বপূর্ণ, এর ফলে সিস্টেমগুলোর ফলাফল ব্যবহার করে যেসব সিদ্ধান্ত নেওয়া হয়, তারা প্রভাবিত হয়। -AI সিস্টেম ডিজাইন এবং মোতায়েনকারী ব্যক্তিদের তাদের সিস্টেমের কার্যক্রমের জন্য দায়িত্বশীল হতে হবে। দায়িত্বশীলতার প্রয়োজনীয়তা বিশেষভাবে গুরুত্বপূর্ণ সংবেদনশীল প্রযুক্তি যেমন মুখের স্বীকৃতির ক্ষেত্রে। সম্প্রতি, মুখের স্বীকৃতি প্রযুক্তির জন্য একটি ক্রমবর্ধমান চাহিদা রয়েছে, বিশেষত আইন প্রয়োগকারী সংস্থাগুলোর কাছ থেকে যারা নিখোঁজ শিশুদের খুঁজে বের করার মতো ব্যবহারগুলোতে প্রযুক্তির সম্ভাবনা দেখছেন। তবে, এই প্রযুক্তিগুলো একটি সরকার তার নাগরিকদের মৌলিক স্বাধীনতাকে ঝুঁকিতে ফেলতে ব্যবহার করতে পারে, যেমন নির্দিষ্ট ব্যক্তিদের ক্রমাগত নজরদারি সক্ষম করা। তাই, ডেটা বিজ্ঞানী এবং সংস্থাগুলোকে তাদের AI সিস্টেমের ব্যক্তিগত বা সামাজিক প্রভাবের জন্য দায়িত্বশীল হতে হবে। +### জবাবদিহিতা + +যারা AI সিস্টেম ডিজাইন ও প্রয়োগ করে তাদের সিস্টেমের কার্যকরির জন্য দায়ী হতে হবে। বিশেষত ফেসিয়াল রিকগনিশন মত সংবেদনশীল প্রযুক্তিতে জবাবদিহিতা অপরিহার্য। সম্প্রতি, ফেসিয়াল রিকগনিশন প্রযুক্তির উপর চাহিদা বেড়েছে, বিশেষত আইন প্রয়োগকারী সংস্থাগুলো থেকে যারা হারানো শিশু খুঁজে পেতে সম্ভাবনা দেখছেন। তবে এই প্রযুক্তি সরকার দ্বারা নাগরিকদের মৌলিক স্বাধীনতা ঝুঁকিতে ফেলতে ব্যবহৃত হতে পারে যেমন নির্দিষ্ট ব্যক্তিদের অব্যাহত নজরদারি চালানোর মাধ্যমে। তাই, ডেটা বিজ্ঞানী ও প্রতিষ্ঠানগুলোকে দায়িত্বশীল হতে হবে AI সিস্টেম মানুষ অথবা সমাজে কী প্রভাব ফেলে তার জন্য। -[![AI গবেষকের সতর্কবার্তা: মুখের স্বীকৃতির মাধ্যমে ব্যাপক নজরদারি](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") +[![ফেসিয়াল রিকগনিশন দ্বারা বৃহৎ পর্যবেক্ষণের বিষয়ে অগ্রগামী AI গবেষকের সতর্কতা](../../../../translated_images/bn/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: মুখের স্বীকৃতির মাধ্যমে ব্যাপক নজরদারি সম্পর্কে সতর্কবার্তা +> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: ফেসিয়াল রিকগনিশন দ্বারা বৃহৎ পর্যবেক্ষণের সতর্কতা -অবশেষে, আমাদের প্রজন্মের জন্য সবচেয়ে বড় প্রশ্নগুলোর একটি হলো, প্রথম প্রজন্ম হিসেবে যারা AI সমাজে নিয়ে আসছে, কীভাবে নিশ্চিত করা যায় যে কম্পিউটারগুলো মানুষের কাছে দায়বদ্ধ থাকবে এবং যারা কম্পিউটার ডিজাইন করেন তারা সবার কাছে দায়বদ্ধ থাকবেন। +আমাদের প্রজন্মের জন্য সবচেয়ে বড় প্রশ্নগুলোর মধ্যে একটি হলো, আমরা কিভাবে নিশ্চিত করব যে কম্পিউটার মানুষের প্রতি দায়বদ্ধ থাকবে এবং যারা কম্পিউটার ডিজাইন করে তারা সকলের প্রতি দায়বদ্ধ থাকবে। ## প্রভাব মূল্যায়ন -মেশিন লার্নিং মডেল প্রশিক্ষণের আগে, AI সিস্টেমের উদ্দেশ্য, এর পরিকল্পিত ব্যবহার, এটি কোথায় মোতায়েন করা হবে এবং কারা সিস্টেমের সাথে যোগাযোগ করবে তা বুঝতে একটি প্রভাব মূল্যায়ন পরিচালনা করা গুরুত্বপূর্ণ। এটি পর্যালোচক বা পরীক্ষকদের জন্য সহায়ক যারা সিস্টেমটি মূল্যায়ন করছেন, যাতে সম্ভাব্য ঝুঁকি এবং প্রত্যাশিত পরিণতি চিহ্নিত করার সময় কোন বিষয়গুলো বিবেচনা করতে হবে তা জানা যায়। +মেশিন লার্নিং মডেল প্রশিক্ষণের আগে, AI সিস্টেমের উদ্দেশ্য, এর পরিকল্পিত ব্যবহার, কোথায় এটি বসানো হবে এবং কারা সিস্টেমের সঙ্গে ইন্টার‌্যাক্ট করবে তা বোঝার জন্য প্রভাব মূল্যায়ন করা জরুরি। এটি রিভিউয়ার বা টেস্টারদের জন্য উপকারী যারা সিস্টেম পর্যালোচনা করছেন, যাতে তারা সম্ভাব্য ঝুঁকি ও প্রত্যাশিত পরিণতি নির্ধারণের জন্য প্রাসঙ্গিক বিষয় বিবেচনা করতে পারেন। + +প্রভাব মূল্যায়ন করার সময় নিম্নলিখিত বিষয়গুলো ফোকাসের অধীনে থাকে: -প্রভাব মূল্যায়ন পরিচালনার সময় নিম্নলিখিত বিষয়গুলোতে মনোযোগ দেওয়া হয়: +* **ব্যক্তিগত ওপর নেতিবাচক প্রভাব**। কোন বিধিনিষেধ, সীমাবদ্ধতা, অপর্যাপ্ত ব্যবহার বা পরিচিত সীমাবদ্ধতা যা সিস্টেমের কর্মদক্ষতাকে বাধাগ্রস্ত করে, তা জেনে রাখা জরুরি যেন সিস্টেম মানুষের ক্ষতি করতে ব্যবহৃত না হয়। +* **ডেটা প্রয়োজনীয়তা**। সিস্টেম কিভাবে এবং কোথায় ডেটা ব্যবহার করবে তা বোঝার মাধ্যমে রিভিউয়াররা কোন ডেটা নিয়ম (যেমন, GDPR বা HIPAA) মেনে চলা প্রয়োজন কী না তা পরীক্ষা করতে পারবেন। আর ডেটার উৎস বা পরিমাণ প্রশিক্ষণের জন্য যথেষ্ট কি না তাও নিশ্চিত করবেন। +* **প্রভাবের সারাংশ**। সিস্টেম ব্যবহার থেকে সম্ভাব্য ক্ষতির একটি তালিকা সংগ্রহ করুন। পুরো মেশিন লার্নিং ব lifecycle জুড়ে এই সমস্যা সমাধান বা মোকাবেলা হচ্ছে কিনা তা পর্যালোচনা করুন। +* প্রতিটি ছয়টি মূল নীতির জন্য **প্রযোজ্য লক্ষ্য**। প্রতিটি নীতির লক্ষ্যে পৌঁছানো হয়েছে কিনা এবং কোনো ফাঁক আছে কিনা তা মূল্যায়ন করুন। -* **ব্যক্তিদের উপর নেতিবাচক প্রভাব**। কোনো সীমাবদ্ধতা বা প্রয়োজনীয়তা, অসমর্থিত ব্যবহার বা সিস্টেমের কর্মক্ষমতাকে বাধাগ্রস্ত করে এমন কোনো পরিচিত সীমাবদ্ধতা সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ যাতে সিস্টেমটি এমনভাবে ব্যবহার না করা হয় যা ব্যক্তিদের ক্ষতি করতে পারে। -* **ডেটার প্রয়োজনীয়তা**। সিস্টেমটি কীভাবে এবং কোথায় ডেটা ব্যবহার করবে তা বোঝা পর্যালোচকদের ডেটার প্রয়োজনীয়তা সম্পর্কে সচেতন হতে সহায়তা করে (যেমন GDPR বা HIPPA ডেটা নিয়মাবলী)। এছাড়াও, ডেটার উৎস বা পরিমাণ প্রশিক্ষণের জন্য যথেষ্ট কিনা তা পরীক্ষা করুন। -* **প্রভাবের সারাংশ**। সিস্টেম ব্যবহার থেকে উদ্ভূত সম্ভাব্য ক্ষতির একটি তালিকা সংগ্রহ করুন। ML লাইফসাইকেল জুড়ে, চিহ্নিত সমস্যাগুলো সমাধান করা হয়েছে কিনা তা পর্যালোচনা করুন। -* **প্রতিটি ছয়টি মূল নীতির জন্য প্রযোজ্য লক্ষ্য**। প্রতিটি নীতির লক্ষ্যগুলো পূরণ হয়েছে কিনা এবং কোনো ফাঁক রয়েছে কিনা তা মূল্যায়ন করুন। ## দায়িত্বশীল AI দিয়ে ডিবাগিং -একটি সফটওয়্যার অ্যাপ্লিকেশন ডিবাগ করার মতো, একটি AI সিস্টেম ডিবাগ করা একটি প্রয়োজনীয় প্রক্রিয়া যা সিস্টেমে সমস্যাগুলো চিহ্নিত এবং সমাধান করে। অনেক কারণ রয়েছে যা একটি মডেলের প্রত্যাশিত বা দায়িত্বশীলভাবে কাজ না করার ক্ষেত্রে প্রভাব ফেলতে পারে। বেশিরভাগ ঐতিহ্যবাহী মডেল কর্মক্ষমতা মেট্রিকগুলো একটি মডেলের কর্মক্ষমতার পরিমাণগত সামগ্রিক মান, যা দায়িত্বশীল AI নীতিগুলো লঙ্ঘন করে কীভাবে একটি মডেল বিশ্লেষণ করা যায় তা যথেষ্ট নয়। তদ্ব্যতীত, একটি মেশিন লার্নিং মডেল একটি ব্ল্যাক বক্স যা এর ফলাফল চালিত করে কী তা বোঝা বা যখন এটি ভুল করে তখন ব্যাখ্যা প্রদান করা কঠিন করে তোলে। এই কোর্সের পরে, আমরা শিখব কীভাবে দায়িত্বশীল AI ড্যাশবোর্ড ব্যবহার করে AI সিস্টেম ডিবাগ করতে হয়। ড্যাশবোর্ডটি ডেটা বিজ্ঞানী এবং AI ডেভেলপারদের জন্য একটি সামগ্রিক টুল প্রদান করে যা নিম্নলিখিত কাজগুলো সম্পাদন করতে সহায়তা করে: +সফটওয়্যার অ্যাপ্লিকেশন ডিবাগিংয়ের মতোই, AI সিস্টেমে সমস্যা চিহ্নিত করা এবং সমাধান করা একটি অপরিহার্য প্রক্রিয়া। মডেল প্রত্যাশিত বা দায়িত্বশীলভাবে কাজ না করার অনেক কারণ থাকতে পারে। অনেক প্রচলিত মডেল কর্মক্ষমতা মেট্রিক্স একটি মডেলের ফলাফলের পরিমাণগত সামগ্রিক হিসাব প্রদান করে, যা দায়িত্বশীল AI নীতিমালা লঙ্ঘনের বিশ্লেষণে যথেষ্ট নয়। তদুপরি, মেশিন লার্নিং মডেল একটি কালো বাক্স যা এর ফলাফলের কারণ বোঝা বা ভুল হলে ব্যাখ্যা দেওয়া কঠিন করে তোলে। এই কোর্সের পরে, আমরা শেখব কিভাবে দায়িত্বশীল AI ড্যাশবোর্ড ব্যবহার করে AI সিস্টেম ডিবাগ করতে হয়। ড্যাশবোর্ড ডেটা বিজ্ঞানী ও AI ডেভেলপারদের জন্য একটি সমন্বিত টুল যা নিম্নলিখিত কাজ করতে সাহায্য করে: + +* **ত্রুটি বিশ্লেষণ**। মডেলের ত্রুটি বণ্টন চিহ্নিত করতে যা সিস্টেমের ন্যায়বিচার বা নির্ভরযোগ্যতাকে প্রভাবিত করতে পারে। +* **মডেল ওভারভিউ**। ডেটা গোষ্ঠীগুলোর মধ্যে মডেলের পারফরম্যান্সের পার্থক্য কোথায় তা আবিষ্কার করতে। +* **ডেটা বিশ্লেষণ**। ডেটা বণ্টন বোঝার ও ডেটায় যে কোনো পক্ষপাত চিহ্নিত করার জন্য, যা ন্যায়বিচার, অন্তর্ভুক্তিমূলকতা, এবং নির্ভরযোগ্যতার সমস্যা তৈরি করতে পারে। +* **মডেল ব্যাখ্যাযোগ্যতা**। মডেলের পূর্বাভাসকে কী প্রভাবিত করে বা প্রভাব ফেলছে তা বুঝতে। এটি মডেলের আচরণ ব্যাখ্যা করতে সাহায্য করে যা স্বচ্ছতা ও জবাবদিহিতার জন্য গুরুত্বপূর্ণ। + + +## 🚀 চ্যালেঞ্জ + +প্রথম থেকেই বিপদ এড়াতে আমাদের উচিত: + +- সিস্টেমে কাজ করা মানুষের মধ্যে বিভিন্ন পটভূমি ও দৃষ্টিভঙ্গির বৈচিত্র রাখা +- এমন ডেটাসেটগুলিতে বিনিয়োগ করা যা আমাদের সমাজের বৈচিত্র প্রতিফলিত করে +- মেশিন লার্নিং লাইফসাইকেলের প্রতিটি ধাপে দায়িত্বশীল AI এর ত্রুটি সনাক্ত ও সংশোধনের উন্নত পদ্ধতি উন্নয়ন করা + +বাস্তব জীবনের পরিস্থিতি ভাবুন যেখানে মডেলের অবিশ্বাসযোগ্যতা মডেল নির্মাণ ও ব্যবহারে স্পষ্ট। আর কী বিবেচনা করা উচিত? + +## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) + +## পুনর্বিবেচনা ও স্ব-অধ্যয়ন + -* **ত্রুটি বিশ্লেষণ**। মডেলের ত্রুটির বিতরণ চিহ্নিত করতে যা সিস্টেমের ন্যায্যতা বা নির্ভরযোগ্যতাকে প্রভাবিত করতে পারে। -* **মডেলের ওভারভিউ**। মডেলের কর্মক্ষমতায় ডেটা কোহর্টগুলোর মধ্যে কোথায় বৈষম্য রয়েছে তা আবিষ্কার করতে। -* **ডেটা বিশ -এই কর্মশালাটি দেখুন আরও গভীরভাবে বিষয়গুলো বোঝার জন্য: +এই পাঠে, আপনি মেশিন লার্নিংয়ে ন্যায্যতা এবং অন্যায়তার ধারণাগুলির কিছু মৌলিক বিষয় শিখেছেন। + +এই কর্মশালাটি দেখুন বিষয়গুলির ওপর গভীরভাবে জানতে: -- দায়িত্বশীল AI-এর সন্ধানে: নীতিগুলোকে বাস্তবে রূপ দেওয়ার উপায়, উপস্থাপনায় বেসমিরা নুশি, মেহরনুশ সামেকি এবং অমিত শর্মা +- দায়িত্বশীল AI অনুসরণে: নীতিগুলোকে অনুশীলনে আনা Besmira Nushi, Mehrnoosh Sameki এবং Amit Sharma দ্বারা -[![দায়িত্বশীল AI টুলবক্স: দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI টুলবক্স: দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: RAI টুলবক্স - দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক, উপস্থাপনায় বেসমিরা নুশি, মেহরনুশ সামেকি এবং অমিত শর্মা +> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: RAI Toolbox: An open-source framework for building responsible AI by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma -এছাড়াও পড়ুন: +এছাড়াও পড়ুন: -- মাইক্রোসফটের RAI রিসোর্স সেন্টার: [দায়িত্বশীল AI রিসোর্স – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- মাইক্রোসফটের RAI রিসোর্স সেন্টার: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- মাইক্রোসফটের FATE গবেষণা দল: [FATE: AI-তে ন্যায্যতা, জবাবদিহিতা, স্বচ্ছতা এবং নৈতিকতা - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- মাইক্রোসফটের FATE গবেষণা দল: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI টুলবক্স: +RAI Toolbox: -- [দায়িত্বশীল AI টুলবক্স GitHub রিপোজিটরি](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) -Azure Machine Learning-এর ন্যায্যতা নিশ্চিত করার টুলগুলো সম্পর্কে জানুন: +এজুর মেশিন লার্নিংয়ের সরঞ্জামগুলোর সম্পর্কে পড়ুন যা ন্যায্যতা নিশ্চিত করে: -- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) ## অ্যাসাইনমেন্ট -[RAI টুলবক্স অন্বেষণ করুন](assignment.md) +[RAI Toolbox এক্সপ্লোর করুন](assignment.md) --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/bn/2-Regression/1-Tools/README.md b/translations/bn/2-Regression/1-Tools/README.md index 6d7480ace..75ab8bd3d 100644 --- a/translations/bn/2-Regression/1-Tools/README.md +++ b/translations/bn/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# পাইথন এবং স্কিকিট-লার্ন দিয়ে রিগ্রেশন মডেল শুরু করা +# রিগ্রেশন মডেলগুলির জন্য পাইথন এবং স্কিকিট-লার্ন দিয়ে শুরু করুন -![স্কেচনোটে রিগ্রেশনের সারাংশ](../../../../sketchnotes/ml-regression.png) +![একটি স্কেচনোটে রিগ্রেশনগুলির সারসংক্ষেপ](../../../../translated_images/bn/ml-regression.4e4f70e3b3ed446e.webp) -> স্কেচনোট: [টোমোমি ইমুরা](https://www.twitter.com/girlie_mac) +> স্কেচনোট তৈরি করেছেন [তোমোমি ইমুরা](https://www.twitter.com/girlie_mac) -## [পাঠের পূর্ববর্তী কুইজ](https://ff-quizzes.netlify.app/en/ml/) +## [পূর্বে-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) -> ### [এই পাঠটি R-এও উপলব্ধ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [এই পাঠটি R-এ উপলব্ধ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) -## ভূমিকা +## পরিচিতি -এই চারটি পাঠে, আপনি রিগ্রেশন মডেল তৈরি করতে শিখবেন। আমরা শীঘ্রই আলোচনা করব যে এগুলো কী কাজে লাগে। তবে তার আগে, নিশ্চিত করুন যে আপনার কাছে সঠিক সরঞ্জাম রয়েছে এই প্রক্রিয়া শুরু করার জন্য! +এই চারটি পাঠে, আপনি কিভাবে রিগ্রেশন মডেল তৈরি করতে হয় তা জানবেন। আমরা এক্ষুনি আলোচনা করব এগুলি কী জন্য। কিন্তু কিছু করার আগে, নিশ্চিত করুন যে আপনার কাছে প্রক্রিয়া শুরু করার জন্য সঠিক সরঞ্জাম রয়েছে! -এই পাঠে, আপনি শিখবেন কীভাবে: +এই পাঠে, আপনি শিখবেন কিভাবে: -- আপনার কম্পিউটারকে লোকাল মেশিন লার্নিং কাজের জন্য কনফিগার করবেন। -- জুপিটার নোটবুক ব্যবহার করবেন। -- স্কিকিট-লার্ন ব্যবহার করবেন, যার মধ্যে ইনস্টলেশন অন্তর্ভুক্ত। -- একটি হাতে-কলমে অনুশীলনের মাধ্যমে লিনিয়ার রিগ্রেশন অন্বেষণ করবেন। +- আপনার কম্পিউটারকে স্থানীয় মেশিন লার্নিং কাজের জন্য কনফিগার করবেন। +- জুপিটার নোটবুকের সাথে কাজ করবেন। +- স্কিকিট-লার্ন ব্যবহার করবেন, ইনস্টলেশন সহ। +- একটি হাতে-কলমে অনুশীলন সহ লিনিয়ার রিগ্রেশন অন্বেষণ করবেন। ## ইনস্টলেশন এবং কনফিগারেশন -[![শিক্ষার্থীদের জন্য মেশিন লার্নিং - মডেল তৈরির জন্য সরঞ্জাম প্রস্তুত করুন](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "শিক্ষার্থীদের জন্য মেশিন লার্নিং - মডেল তৈরির জন্য সরঞ্জাম প্রস্তুত করুন") +[![শুরুর জন্য এমএল - মেশিন লার্নিং মডেল তৈরির জন্য আপনার টুলস প্রস্তুত করুন](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "শুরুর জন্য এমএল - মেশিন লার্নিং মডেল তৈরির জন্য আপনার টুলস প্রস্তুত করুন") -> 🎥 উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিও দেখার জন্য যেখানে আপনার কম্পিউটারকে মেশিন লার্নিংয়ের জন্য কনফিগার করা দেখানো হয়েছে। +> 🎥 এমএল কনফিগার করার জন্য একটি সংক্ষিপ্ত ভিডিও দেখতে উপরের চিত্রে ক্লিক করুন। -1. **পাইথন ইনস্টল করুন**। নিশ্চিত করুন যে [পাইথন](https://www.python.org/downloads/) আপনার কম্পিউটারে ইনস্টল করা আছে। আপনি ডেটা সায়েন্স এবং মেশিন লার্নিংয়ের অনেক কাজের জন্য পাইথন ব্যবহার করবেন। বেশিরভাগ কম্পিউটার সিস্টেমে ইতোমধ্যেই পাইথন ইনস্টল করা থাকে। কিছু [পাইথন কোডিং প্যাক](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)ও রয়েছে, যা কিছু ব্যবহারকারীর জন্য সেটআপ সহজ করে তোলে। +1. **পাইথন ইনস্টল করুন**। নিশ্চিত করুন যে [Python](https://www.python.org/downloads/) আপনার কম্পিউটারে ইনস্টল করা আছে। আপনি অনেক ডেটা সাইন্স এবং মেশিন লার্নিং কাজের জন্য পাইথন ব্যবহার করবেন। বেশিরভাগ কম্পিউটার সিস্টেমে ইতিমধ্যে পাইথন ইনস্টল থাকে। কিছু ব্যবহারকারীর জন্য সহজতর করতে [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)ও পাওয়া যায়। - তবে, পাইথনের কিছু ব্যবহার একটি নির্দিষ্ট ভার্সন প্রয়োজন করে, আবার অন্য কিছু ব্যবহার অন্য ভার্সন চায়। এই কারণে, একটি [ভার্চুয়াল এনভায়রনমেন্ট](https://docs.python.org/3/library/venv.html) ব্যবহার করা সুবিধাজনক। + তবে, পাইথনের কিছু ব্যবহার এক ভার্সনের সফটওয়্যার চান, আবার কিছু অন্য ভার্সনের। এজন্য, একটি [ভার্চুয়াল এনভায়রনমেন্টে](https://docs.python.org/3/library/venv.html) কাজ করা উপকারী। -2. **ভিজ্যুয়াল স্টুডিও কোড ইনস্টল করুন**। নিশ্চিত করুন যে ভিজ্যুয়াল স্টুডিও কোড আপনার কম্পিউটারে ইনস্টল করা আছে। [ভিজ্যুয়াল স্টুডিও কোড ইনস্টল](https://code.visualstudio.com/) করার জন্য এই নির্দেশাবলী অনুসরণ করুন। এই কোর্সে আপনি ভিজ্যুয়াল স্টুডিও কোডে পাইথন ব্যবহার করবেন, তাই [পাইথন ডেভেলপমেন্টের জন্য ভিজ্যুয়াল স্টুডিও কোড কনফিগার](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) করার পদ্ধতি দেখে নিন। +2. **ভিজুয়াল স্টুডিও কোড ইনস্টল করুন**। নিশ্চিত করুন যে আপনার কম্পিউটারে ভিজুয়াল স্টুডিও কোড ইনস্টল করা আছে। বেসিক ইনস্টলেশনের জন্য এই নির্দেশনাগুলো অনুসরণ করুন: [Visual Studio Code ইনস্টল করুন](https://code.visualstudio.com/)। এই কোর্সে আপনি ভিজুয়াল স্টুডিও কোডে পাইথন ব্যবহার করবেন, তাই পাইথন ডেভেলপমেন্টের জন্য [Visual Studio Code কনফিগার করা](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) সম্পর্কেও জানতে পারেন। - > পাইথন নিয়ে স্বাচ্ছন্দ্যবোধ করতে এই [লার্ন মডিউল](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) সংগ্রহটি অনুসরণ করুন। + > এই [লার্ন মডিউলস](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) থেকে কাজ করে পাইথনে স্বাচ্ছন্দ্যতা অর্জন করুন > - > [![ভিজ্যুয়াল স্টুডিও কোডে পাইথন সেটআপ করুন](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "ভিজ্যুয়াল স্টুডিও কোডে পাইথন সেটআপ করুন") + > [![Visual Studio Code-এ Python সেটআপ করুন](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code-এ Python সেটআপ করুন") > - > 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিও দেখার জন্য: ভিজ্যুয়াল স্টুডিও কোডে পাইথন ব্যবহার। + > 🎥 ভিডিওটির জন্য উপরের চিত্রে ক্লিক করুন: VS কোডে পাইথন ব্যবহার। -3. **স্কিকিট-লার্ন ইনস্টল করুন**, এই [নির্দেশাবলী](https://scikit-learn.org/stable/install.html) অনুসরণ করে। যেহেতু আপনাকে পাইথন ৩ ব্যবহার নিশ্চিত করতে হবে, তাই ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করার পরামর্শ দেওয়া হয়। যদি আপনি M1 ম্যাক-এ এই লাইব্রেরি ইনস্টল করেন, তবে উপরের লিঙ্কে বিশেষ নির্দেশাবলী রয়েছে। +3. **স্কিকিট-লার্ন ইনস্টল করুন**, এই [নির্দেশনাগুলো](https://scikit-learn.org/stable/install.html) অনুসরণ করে। আপনাকে নিশ্চিত করতে হবে যে আপনি পাইথন ৩ ব্যবহার করছেন, তাই ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করার পরামর্শ দেওয়া হয়। লক্ষ্য করুন, যদি আপনি M1 ম্যাক-এ এই লাইব্রেরি ইনস্টল করছেন, তাহলে উপরের লিঙ্কে বিশেষ নির্দেশনাগুলো আছে। -4. **জুপিটার নোটবুক ইনস্টল করুন**। আপনাকে [জুপিটার প্যাকেজ](https://pypi.org/project/jupyter/) ইনস্টল করতে হবে। +4. **জুপিটার নোটবুক ইনস্টল করুন**। আপনাকে [জুপিটার প্যাকেজ ইনস্টল](https://pypi.org/project/jupyter/) করতে হবে। -## আপনার মেশিন লার্নিং লেখার পরিবেশ +## আপনার এমএল লেখার পরিবেশ -আপনি **নোটবুক** ব্যবহার করবেন আপনার পাইথন কোড ডেভেলপ করতে এবং মেশিন লার্নিং মডেল তৈরি করতে। এই ধরনের ফাইল ডেটা সায়েন্টিস্টদের জন্য একটি সাধারণ টুল এবং এগুলো `.ipynb` এক্সটেনশনে চিহ্নিত করা যায়। +আপনি পাইথন কোড উন্নয়ন এবং মেশিন লার্নিং মডেল তৈরি করতে **নোটবুকস** ব্যবহার করবেন। এই ধরণের ফাইল ডেটা বিজ্ঞানীদের একটি সাধারণ টুল এবং এগুলোর সাফিক্স বা এক্সটেনশন `.ipynb` দ্বারা চিহ্নিত করা হয়। -নোটবুক একটি ইন্টারঅ্যাকটিভ পরিবেশ যা ডেভেলপারকে কোড লেখার পাশাপাশি নোট এবং ডকুমেন্টেশন যোগ করতে দেয়, যা গবেষণা বা পরীক্ষামূলক প্রকল্পের জন্য বেশ সহায়ক। +নোটবুক একটি ইন্টারঅ্যাকটিভ পরিবেশ যা ডেভেলপারকে কোড করার পাশাপাশি কোডের চারপাশে নোট এবং ডকুমেন্টেশন লেখার সুযোগ দেয়, যা পরীক্ষামূলক বা গবেষণাভিত্তিক প্রকল্পে খুব সহায়ক। -[![শিক্ষার্থীদের জন্য মেশিন লার্নিং - রিগ্রেশন মডেল তৈরি করতে জুপিটার নোটবুক সেটআপ করুন](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "শিক্ষার্থীদের জন্য মেশিন লার্নিং - রিগ্রেশন মডেল তৈরি করতে জুপিটার নোটবুক সেটআপ করুন") +[![শুরুর জন্য এমএল - রিগ্রেশন মডেল তৈরির জন্য জুপিটার নোটবুক সেটআপ করুন](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "শুরুর জন্য এমএল - রিগ্রেশন মডেল তৈরির জন্য জুপিটার নোটবুক সেটআপ করুন") -> 🎥 উপরের ছবিতে ক্লিক করুন এই অনুশীলনটি কাজ করে দেখানোর একটি সংক্ষিপ্ত ভিডিও দেখার জন্য। +> 🎥 এই অনুশীলনটি করতে উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য। -### অনুশীলন - একটি নোটবুক নিয়ে কাজ করুন +### অনুশীলন - একটি নোটবুকের সাথে কাজ করুন -এই ফোল্ডারে, আপনি _notebook.ipynb_ ফাইলটি পাবেন। +এই ফোল্ডারে, আপনি _notebook.ipynb_ ফাইলটি দেখতে পাবেন। -1. ভিজ্যুয়াল স্টুডিও কোডে _notebook.ipynb_ খুলুন। +1. Visual Studio Code-এ _notebook.ipynb_ খুলুন। - একটি জুপিটার সার্ভার চালু হবে এবং পাইথন ৩+ শুরু হবে। আপনি নোটবুকের এমন কিছু অংশ পাবেন যা `run` করা যায়, অর্থাৎ কোডের টুকরো। একটি কোড ব্লক চালানোর জন্য, প্লে বোতামের মতো দেখতে আইকনটি নির্বাচন করুন। + একটি জুপিটার সার্ভার Python 3+ দিয়ে চালু হবে। আপনি নোটবুকের এমন স্থান পাবেন যা `run` করা যাবে, কোডের টুকরা। কার্টির মত দেখতে আইকনটি নির্বাচন করে কোড ব্লক চালাতে পারেন। -2. `md` আইকনটি নির্বাচন করুন এবং কিছু মার্কডাউন যোগ করুন, এবং এই টেক্সটটি লিখুন **# Welcome to your notebook**। +2. `md` আইকন নির্বাচন করুন এবং কিছু মার্কডাউন লিখুন, এবং নিম্নলিখিত টেক্সট দিন **# আপনার নোটবুকে স্বাগতম**। এরপর, কিছু পাইথন কোড যোগ করুন। -3. কোড ব্লকে **print('hello notebook')** টাইপ করুন। -4. কোড চালানোর জন্য তীর চিহ্নটি নির্বাচন করুন। +3. কোড ব্লকে টাইপ করুন **print('hello notebook')**। +4. কোড চালাতে তীর চিহ্ন নির্বাচন করুন। - আপনি প্রিন্ট করা স্টেটমেন্টটি দেখতে পাবেন: + আপনি নিম্নলিখিত প্রিন্টেড স্টেটমেন্ট দেখতে পাবেন: ```output hello notebook ``` -![ভিএস কোডে একটি নোটবুক খোলা](../../../../2-Regression/1-Tools/images/notebook.jpg) +![ভিএস কোডে একটি নোটবুক খোলা](../../../../translated_images/bn/notebook.4a3ee31f396b8832.webp) -আপনার কোডের সাথে মন্তব্য যোগ করে নোটবুকটি স্ব-ডকুমেন্ট করতে পারেন। +আপনি নোটবুক নিজেই ডকুমেন্ট করার জন্য মন্তব্যসহ কোডের মধ্যে ইন্টারলিফ করতে পারেন। -✅ এক মিনিট চিন্তা করুন, একজন ওয়েব ডেভেলপারের কাজের পরিবেশ এবং একজন ডেটা সায়েন্টিস্টের কাজের পরিবেশ কতটা আলাদা। +✅ একটি ওয়েব ডেভেলপার এবং একটি ডেটা বিজ্ঞানীর কাজের পরিবেশ কতোটা ভিন্ন হতে পারে, একটু ভাবুন। -## স্কিকিট-লার্ন দিয়ে শুরু করা +## স্কিকিট-লার্ন দিয়ে কাজ শুরু করুন -এখন যেহেতু পাইথন আপনার লোকাল পরিবেশে সেটআপ করা হয়েছে এবং আপনি জুপিটার নোটবুক নিয়ে স্বাচ্ছন্দ্যবোধ করছেন, চলুন স্কিকিট-লার্ন নিয়ে সমানভাবে স্বাচ্ছন্দ্যবোধ করি। স্কিকিট-লার্ন একটি [ব্যাপক এপিআই](https://scikit-learn.org/stable/modules/classes.html#api-ref) প্রদান করে যা আপনাকে মেশিন লার্নিংয়ের কাজ সম্পাদনে সাহায্য করে। +এখন যেহেতু পাইথন আপনার স্থানীয় পরিবেশে প্রস্তুত, এবং আপনি জুপিটার নোটবুকে স্বাচ্ছন্দ্যবোধ করছেন, চলুন স্কিকিট-লার্নের সাথেও সমান স্বাচ্ছন্দ্য অর্জন করি (উচ্চারণ `sci` যেমন `science`)। স্কিকিট-লার্ন একটি [বিস্তৃত এপিআই](https://scikit-learn.org/stable/modules/classes.html#api-ref) দেয় যেটা আপনাকে এমএল কাজ করতে সাহায্য করবে। -তাদের [ওয়েবসাইট](https://scikit-learn.org/stable/getting_started.html) অনুযায়ী, "স্কিকিট-লার্ন একটি ওপেন সোর্স মেশিন লার্নিং লাইব্রেরি যা সুপারভাইজড এবং আনসুপারভাইজড লার্নিং সমর্থন করে। এটি মডেল ফিটিং, ডেটা প্রিপ্রসেসিং, মডেল সিলেকশন এবং ইভ্যালুয়েশন, এবং আরও অনেক ইউটিলিটির জন্য বিভিন্ন টুল সরবরাহ করে।" +তাদের [ওয়েবসাইট](https://scikit-learn.org/stable/getting_started.html) অনুযায়ী, "স্কিকিট-লার্ন একটি ওপেন সোর্স মেশিন লার্নিং লাইব্রেরি যা সুপারভাইজড এবং আনসুপারভাইজড লার্নিং সাপোর্ট করে। এটি মডেল ফিটিং, ডেটা প্রিপ্রসেসিং, মডেল সিলেকশন এবং ইভ্যালুয়েশন, এবং অন্যান্য অনেক টুলস প্রদান করে।" -এই কোর্সে, আপনি স্কিকিট-লার্ন এবং অন্যান্য টুল ব্যবহার করে মেশিন লার্নিং মডেল তৈরি করবেন যা আমরা 'প্রথাগত মেশিন লার্নিং' কাজ বলে থাকি। আমরা ইচ্ছাকৃতভাবে নিউরাল নেটওয়ার্ক এবং ডিপ লার্নিং এড়িয়ে গেছি, কারণ সেগুলো আমাদের আসন্ন 'AI for Beginners' কারিকুলামে আরও ভালোভাবে কভার করা হবে। +এই কোর্সে, আপনি স্কিকিট-লার্ন এবং অন্যান্য সরঞ্জাম ব্যবহার করে একটি মেশিন লার্নিং মডেল গড়ে তুলবেন যা আমরা 'পরম্পরাগত মেশিন লার্নিং' কাজ বলে থাকি। আমরা ইচ্ছাকৃতভাবে নিউরাল নেটওয়ার্ক এবং ডিপ লার্নিং এড়িয়েছি, কারণ এগুলো আমাদের আসন্ন 'এআই ফর বিগিনার্স' কারিকুলামে ভালোভাবে কভার করা হয়েছে। -স্কিকিট-লার্ন মডেল তৈরি এবং সেগুলো ব্যবহারযোগ্যতার জন্য ইভ্যালুয়েট করা সহজ করে তোলে। এটি প্রধানত সংখ্যাসূচক ডেটা ব্যবহারে ফোকাস করে এবং শিক্ষার সরঞ্জাম হিসেবে ব্যবহারের জন্য বেশ কিছু প্রস্তুত ডেটাসেট অন্তর্ভুক্ত করে। এটি শিক্ষার্থীদের চেষ্টা করার জন্য প্রি-বিল্ট মডেলও অন্তর্ভুক্ত করে। চলুন প্রিপ্যাকেজড ডেটা লোড করা এবং একটি বিল্ট-ইন এস্টিমেটর ব্যবহার করে প্রথম মেশিন লার্নিং মডেল তৈরি করার প্রক্রিয়া অন্বেষণ করি। +স্কিকিট-লার্ন মডেল তৈরি করা এবং সেগুলোর মূল্যায়ন সহজ করে তোলে। এটি প্রধানত সংখ্যাগত ডেটা ব্যবহার করে এবং শেখার সরঞ্জাম হিসেবে বেশ কিছু প্রস্তুত ডেটাসেট রয়েছে। এতে শিক্ষার্থীদের জন্য প্রাক-তৈরি মডেলও আছে। প্রথমে স্কিকিট-লার্নের সাথে প্রিপ্যাকেজড ডেটা লোড এবং বিল্ট-ইন এস্টিমেটর ব্যবহার করে মৌলিক এমএল মডেল তৈরির প্রক্রিয়া অন্বেষণ করি। ## অনুশীলন - আপনার প্রথম স্কিকিট-লার্ন নোটবুক -> এই টিউটোরিয়ালটি স্কিকিট-লার্নের ওয়েবসাইটে থাকা [লিনিয়ার রিগ্রেশনের উদাহরণ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) দ্বারা অনুপ্রাণিত। +> এই টিউটোরিয়ালটি অনুপ্র inspirationণ হয়েছে স্কিকিট-লার্নের ওয়েবসাইটের [লিনিয়ার রিগ্রেশন উদাহরণ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) থেকে। -[![শিক্ষার্থীদের জন্য মেশিন লার্নিং - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "শিক্ষার্থীদের জন্য মেশিন লার্নিং - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প") -> 🎥 উপরের ছবিতে ক্লিক করুন এই অনুশীলনটি কাজ করে দেখানোর একটি সংক্ষিপ্ত ভিডিও দেখার জন্য। +[![শুরুর জন্য এমএল - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "শুরুর জন্য এমএল - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প") -এই পাঠের সাথে সম্পর্কিত _notebook.ipynb_ ফাইলটি খুলুন এবং সমস্ত সেল মুছে ফেলুন 'ট্র্যাশ ক্যান' আইকনে ক্লিক করে। +> 🎥 এই অনুশীলনটি দেখতে উপরের চিত্রে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য। -এই অংশে, আপনি স্কিকিট-লার্নে অন্তর্ভুক্ত ডায়াবেটিস সম্পর্কিত একটি ছোট ডেটাসেট নিয়ে কাজ করবেন। ধরুন আপনি ডায়াবেটিস রোগীদের জন্য একটি চিকিৎসা পরীক্ষা করতে চান। মেশিন লার্নিং মডেল আপনাকে ভেরিয়েবলগুলোর সংমিশ্রণের ভিত্তিতে কোন রোগীরা চিকিৎসায় ভালো সাড়া দেবে তা নির্ধারণে সাহায্য করতে পারে। এমনকি একটি খুব সাধারণ রিগ্রেশন মডেল, যখন ভিজ্যুয়ালাইজ করা হয়, তখন ভেরিয়েবলগুলোর সম্পর্ক সম্পর্কে তথ্য দেখাতে পারে যা আপনাকে তাত্ত্বিক ক্লিনিকাল ট্রায়াল সংগঠিত করতে সাহায্য করবে। +এই পাঠের সাথে সংযুক্ত _notebook.ipynb_ ফাইলে, সকল সেলগুলি 'ট্র্যাশ ক্যান' আইকন চাপ দিয়ে ক্লিয়ার করুন। -✅ রিগ্রেশনের অনেক ধরনের পদ্ধতি রয়েছে, এবং আপনি কোনটি বেছে নেবেন তা নির্ভর করে আপনি কী উত্তর খুঁজছেন তার ওপর। যদি আপনি একটি নির্দিষ্ট বয়সের ব্যক্তির সম্ভাব্য উচ্চতা পূর্বানুমান করতে চান, তবে আপনি লিনিয়ার রিগ্রেশন ব্যবহার করবেন, কারণ আপনি একটি **সংখ্যাসূচক মান** খুঁজছেন। যদি আপনি জানতে চান একটি নির্দিষ্ট ধরনের খাবার ভেগান হিসেবে বিবেচিত হওয়া উচিত কিনা, তবে আপনি একটি **ক্যাটেগরি অ্যাসাইনমেন্ট** খুঁজছেন, তাই আপনি লজিস্টিক রিগ্রেশন ব্যবহার করবেন। আপনি পরে লজিস্টিক রিগ্রেশন সম্পর্কে আরও শিখবেন। ডেটা থেকে কিছু প্রশ্ন ভাবুন এবং কোন পদ্ধতি বেশি উপযুক্ত হবে তা চিন্তা করুন। +এই অংশে, আপনি ডায়াবেটিস সম্পর্কে একটি ছোট ডেটাসেট নিয়ে কাজ করবেন যা স্কিকিট-লার্নে শেখার জন্য অন্তর্ভুক্ত। কল্পনা করুন আপনি ডায়াবেটিক রোগীদের জন্য একটি চিকিৎসা পরীক্ষা করতে চান। মেশিন লার্নিং মডেল আপনাকে নির্ধারণ করতে সাহায্য করতে পারে কোন রোগী চিকিৎসায় ভাল সাড়া দেবে বিভিন্ন ভেরিয়েবলের সংমিশ্রণের ভিত্তিতে। একটি মৌলিক রিগ্রেশন মডেল, ভিজুয়ালাইজ করা হলে, ভেরিয়েবলের তথ্য দেখাতে পারে যা আপনার তাত্ত্বিক ক্লিনিক্যাল ট্রায়াল সংগঠনে সাহায্য করবে। -চলুন এই কাজটি শুরু করি। +✅ রিগ্রেশনের অনেক ধরন আছে এবং আপনি কোনটি বেছে নেন তা নির্ভর করে আপনি কোন প্রশ্নের উত্তর খুঁজছেন তার উপর। যদি আপনি নির্দিষ্ট বয়সের একজন ব্যক্তির সম্ভাব্য উচ্চতা পূর্বাভাস দিতে চান, তাহলে আপনি লিনিয়ার রিগ্রেশন ব্যবহার করবেন, কারণ আপনি একটি **সংখ্যাগত মান** খুঁজছেন। যদি আপনি জানতে চান একটি রান্নার ধরন নিরামিষ কিনা, তাহলে সেটি একটি **শ্রেণিবিন্যাস** তাই আপনি লজিস্টিক রিগ্রেশন ব্যবহার করবেন। লজিস্টিক রিগ্রেশন সম্পর্কে পরে শিখবেন। কিছু প্রশ্ন নিয়ে ভাবুন যা আপনি ডেটাবেজে করতে পারেন এবং কোন পদ্ধতিটি উপযুক্ত হবে। -### লাইব্রেরি ইমপোর্ট করুন +চলুন এই কাজ শুরু করি। -এই কাজের জন্য আমরা কিছু লাইব্রেরি ইমপোর্ট করব: +### লাইব্রেরি আমদানি -- **matplotlib**। এটি একটি কার্যকর [গ্রাফিং টুল](https://matplotlib.org/) এবং আমরা এটি একটি লাইন প্লট তৈরি করতে ব্যবহার করব। -- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) পাইথনে সংখ্যাসূচক ডেটা পরিচালনার জন্য একটি কার্যকর লাইব্রেরি। +এই কাজের জন্য আমরা কিছু লাইব্রেরি আমদানি করব: + +- **matplotlib**। এটি একটি উপকারী [গ্রাফিং টুল](https://matplotlib.org/) এবং আমরা একটি লাইন প্লট তৈরি করতে এটি ব্যবহার করব। +- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) পাইথনে সংখ্যাগত ডেটা পরিচালনার জন্য একটি দরকারী লাইব্রেরি। - **sklearn**। এটি [স্কিকিট-লার্ন](https://scikit-learn.org/stable/user_guide.html) লাইব্রেরি। -আপনার কাজের জন্য কিছু লাইব্রেরি ইমপোর্ট করুন। +আপনার কাজের জন্য কিছু লাইব্রেরি আমদানি করুন। -1. নিচের কোডটি টাইপ করে ইমপোর্ট করুন: +1. নিচের কোড টাইপ করে আমদানি করুন: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ from sklearn import datasets, linear_model, model_selection ``` - উপরের কোডে আপনি `matplotlib`, `numpy` এবং `sklearn` থেকে `datasets`, `linear_model` এবং `model_selection` ইমপোর্ট করছেন। `model_selection` ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করার জন্য ব্যবহৃত হয়। + উপরে আপনি `matplotlib`, `numpy` আমদানি করছেন এবং `sklearn` থেকে `datasets`, `linear_model` এবং `model_selection` আমদানি করছেন। `model_selection` ডেটাকে প্রশিক্ষণ এবং পরীক্ষা সেটে ভাগ করার জন্য ব্যবহৃত। -### ডায়াবেটিস ডেটাসেট +### ডায়াবেটিস ডেটাসেট -[ডায়াবেটিস ডেটাসেট](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)-এ ডায়াবেটিস সম্পর্কিত ৪৪২টি নমুনা ডেটা রয়েছে, যার মধ্যে ১০টি ফিচার ভেরিয়েবল অন্তর্ভুক্ত, যেমন: +অন্তর্ভুক্ত [ডায়াবেটিস ডেটাসেট](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) এ ৪৪২টি নমুনা রয়েছে, যেখানে ১০টি বৈশিষ্ট্য ভেরিয়েবল আছে, কিছু হল: -- age: বয়স (বছরে) -- bmi: বডি মাস ইনডেক্স -- bp: গড় রক্তচাপ -- s1 tc: টি-সেল (এক ধরনের শ্বেত রক্তকণিকা) +- বয়স: বছরে বয়স +- BMI: শরীরের ভর সূচক +- রক্তচাপ: গড় রক্তচাপ +- s1 tc: টি-সেলস (সাদা রক্তকণিকার একটি প্রকার) -✅ এই ডেটাসেটে 'sex' ফিচার ভেরিয়েবল অন্তর্ভুক্ত রয়েছে, যা ডায়াবেটিস গবেষণার জন্য গুরুত্বপূর্ণ। অনেক মেডিকেল ডেটাসেটে এই ধরনের বাইনারি শ্রেণিবিন্যাস অন্তর্ভুক্ত থাকে। চিন্তা করুন, এই ধরনের শ্রেণিবিন্যাস কীভাবে জনসংখ্যার নির্দিষ্ট অংশকে চিকিৎসা থেকে বাদ দিতে পারে। +✅ এই ডেটাসেটে 'লিঙ্গ' নামক একটি বৈশিষ্ট্য ভেরিয়েবল অন্তর্ভুক্ত আছে, যা ডায়াবেটিস গবেষণায় গুরুত্বপূর্ণ। অনেক চিকিৎসা তথ্যসেট এই ধরনের বাইনারি শ্রেণিবিভাজন অন্তর্ভুক্ত করে। ভাবুন কিভাবে এমন শ্রেণিবিভাজন কিছু জনগোষ্ঠীকে চিকিৎসা থেকে বাদ দিতে পারে। এখন, X এবং y ডেটা লোড করুন। -> 🎓 মনে রাখবেন, এটি সুপারভাইজড লার্নিং, এবং আমাদের একটি নামকৃত 'y' টার্গেট প্রয়োজন। +> 🎓 মনে রাখবেন, এটি একটি সুপারভাইজড লার্নিং, এবং আমাদের একটি নামকৃত 'y' লক্ষ্য দরকার। -একটি নতুন কোড সেলে, `load_diabetes()` কল করে ডায়াবেটিস ডেটাসেট লোড করুন। ইনপুট `return_X_y=True` নির্দেশ করে যে `X` একটি ডেটা ম্যাট্রিক্স হবে, এবং `y` হবে রিগ্রেশন টার্গেট। +একটি নতুন কোড সেলে, `load_diabetes()` কল করে ডায়াবেটিস ডেটাসেট লোড করুন। `return_X_y=True` ইনপুট মানে হল `X` একটি ডেটা ম্যাট্রিক্স হবে, এবং `y` হবে রিগ্রেশন লক্ষ্য। -1. ডেটা ম্যাট্রিক্সের আকার এবং এর প্রথম উপাদান দেখানোর জন্য কিছু প্রিন্ট কমান্ড যোগ করুন: +1. ডেটা ম্যাট্রিক্সের আকৃতি এবং এর প্রথম উপাদান প্রদর্শনের জন্য কিছু প্রিন্ট কমান্ড যোগ করুন: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ print(X[0]) ``` - আপনি যা রেসপন্স হিসেবে পাচ্ছেন তা একটি টাপল। আপনি যা করছেন তা হলো টাপলের প্রথম দুটি মান যথাক্রমে `X` এবং `y`-তে অ্যাসাইন করা। [টাপল সম্পর্কে আরও জানুন](https://wikipedia.org/wiki/Tuple)। + আপনি যে রেসপন্স পাচ্ছেন, তা একটি tuple। আপনি tuple- এর প্রথম দুটি মান `X` এবং `y` তে আলাদা করছেন। [tuple সম্পর্কে আরও জানুন](https://wikipedia.org/wiki/Tuple)। - আপনি দেখতে পাবেন যে এই ডেটায় ৪৪২টি আইটেম রয়েছে যা ১০টি উপাদানের অ্যারে আকারে সাজানো: + আপনি দেখতে পাচ্ছেন ডেটা ৪৪২টি আইটেম নিয়ে তৈরি, যার প্রতিটি ১০টি উপাদানের অ্যারে আকারে: ```text (442, 10) @@ -159,49 +160,67 @@ -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ ডেটা এবং রিগ্রেশন টার্গেটের মধ্যে সম্পর্ক নিয়ে একটু চিন্তা করুন। লিনিয়ার রিগ্রেশন ফিচার X এবং টার্গেট ভেরিয়েবল y-এর মধ্যে সম্পর্ক পূর্বানুমান করে। ডায়াবেটিস ডেটাসেটের জন্য [টার্গেট](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ডকুমেন্টেশনে খুঁজে বের করুন। এই ডেটাসেট কী প্রদর্শন করছে? + ✅ কিছুক্ষণ ভেবে দেখুন ডেটা এবং রিগ্রেশন লক্ষ্য এর সম্পর্ক। লিনিয়ার রিগ্রেশন বৈশিষ্ট্য X এবং লক্ষ্য ভেরিয়েবল y-এর মধ্যে সম্পর্ক পূর্বাভাস দেয়। আপনি কি ডকুমেন্টেশনে ডায়াবেটিস ডেটাসেটের [লক্ষ্য](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) খুঁজে পেয়েছেন? এই ডেটাসেটটি কি প্রদর্শন করছে, লক্ষ্য দেখে? -2. এরপর, ডেটাসেটের একটি অংশ প্লট করার জন্য নির্বাচন করুন, ডেটাসেটের তৃতীয় কলামটি নির্বাচন করে। এটি করতে, `:` অপারেটর ব্যবহার করে সমস্ত সারি নির্বাচন করুন, এবং তারপর ইনডেক্স (2) ব্যবহার করে তৃতীয় কলামটি নির্বাচন করুন। আপনি `reshape(n_rows, n_columns)` ব্যবহার করে ডেটাকে ২ডি অ্যারেতে রিশেপ করতে পারেন। যদি প্যারামিটারগুলোর একটি -1 হয়, তবে সংশ্লিষ্ট ডাইমেনশন স্বয়ংক্রিয়ভাবে গণনা করা হয়। +2. তারপরে, ডেটাসেটের একটি অংশ নির্বাচন করুন প্লট করার জন্য: ডেটাসেটের ৩য় কলাম নির্বাচিত করুন। `:` অপারেটর ব্যবহার করে সব সারি নির্বাচন করে তারপর ইনডেক্স (২) ব্যবহার করে তৃতীয় কলাম নির্বাচন করতে পারেন। প্লট করার জন্য ডেটাকে 2D অ্যারেতে রিশেপ করা দরকার `reshape(n_rows, n_columns)` ব্যবহার করে। যদি একটি প্যারামিটার -1 হয়, সংশ্লিষ্ট মাত্রা স্বয়ংক্রিয়ভাবে হিসাব হয়। ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ যেকোনো সময়, ডেটার আকার প্রিন্ট করে চেক করুন। + ✅ যেকোনো সময় ডেটার আকৃতি পরীক্ষা করতে প্রিন্ট করুন। -3. এখন যেহেতু আপনার ডেটা প্লট করার জন্য প্রস্তুত, আপনি দেখতে পারেন একটি মেশিন এই ডেটাসেটে সংখ্যাগুলোর মধ্যে একটি যৌক্তিক বিভাজন নির্ধারণ করতে পারে কিনা। এটি করতে, আপনাকে ডেটা (X) এবং টার্গেট (y) উভয়কেই টেস্ট এবং ট্রেনিং সেটে ভাগ করতে হবে। স্কিকিট-লার্ন এটি করার একটি সহজ উপায় সরবরাহ করে; আপনি একটি নির্দিষ্ট পয়েন্টে আপনার টেস্ট ডেটা ভাগ করতে পারেন। +3. এখন ডেটা প্লট করার প্রস্তুত, দেখুন একটি মেশিন সংখ্যাগুলোর মধ্যে যৌক্তিক বিভাজন নির্ধারণে সাহায্য করতে পারে কিনা। এর জন্য, আপনাকে ডেটা (X) এবং লক্ষ্য (y) উভয়ই পরীক্ষা এবং প্রশিক্ষণ সেটে ভাগ করতে হবে। স্কিকিট-লার্নে এর জন্য সরল উপায় আছে; আপনি নির্দিষ্ট পয়েন্টে পরীক্ষা ডেটা ভাগ করতে পারবেন। ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. এখন আপনি আপনার মডেল ট্রেন করার জন্য প্রস্তুত! লিনিয়ার রিগ্রেশন মডেল লোড করুন এবং `model.fit()` ব্যবহার করে আপনার X এবং y ট্রেনিং সেট দিয়ে এটি ট্রেন করুন: +4. এখন আপনার মডেল প্রশিক্ষণের জন্য প্রস্তুত! লিনিয়ার রিগ্রেশন মডেল লোড করুন এবং `model.fit()` ব্যবহার করে X ও y প্রশিক্ষণ সেট দিয়ে প্রশিক্ষণ দিন: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` একটি ফাংশন যা আপনি টেনসরফ্লোসহ অনেক এমএল লাইব্রেরিতে দেখতে পাবেন। + ✅ `model.fit()` একটি ফাংশন যা আপনি অনেক এমএল লাইব্রেরিতে যেমন TensorFlow দেথতে পাবেন + +5. এরপর, `predict()` ফাংশন ব্যবহার করে পরীক্ষার ডেটা দিয়ে পূর্বাভাস তৈরি করুন। এটি ডেটা গ্রুপের মধ্যে একটি লাইন আঁকতে ব্যবহৃত হবে + + ```python + y_pred = model.predict(X_test) + ``` + +6. এখন ডেটা একটি প্লটে প্রদর্শনের সময়। এই কাজের জন্য matplotlib খুব দরকারী টুল। সমস্ত X এবং y পরীক্ষার ডেটার একটি scatterplot তৈরি করুন এবং পূর্বাভাস ব্যবহার করে মডেলের ডেটা গ্রুপের মধ্যে সবচেয়ে উপযুক্ত স্থানে একটি লাইন আঁকুন। -5. এরপর, টেস্ট ডেটা ব্যবহার করে একটি প্রেডিকশন তৈরি করুন, `predict()` ফাংশন ব্যবহার করে। এটি ডেটা গ্রুপ -✅ এখানে কী ঘটছে তা একটু চিন্তা করুন। একটি সরল রেখা অনেক ছোট ছোট ডেটা বিন্দুর মধ্য দিয়ে যাচ্ছে, কিন্তু এটি ঠিক কী করছে? আপনি কি দেখতে পাচ্ছেন যে এই রেখাটি কীভাবে আপনাকে সাহায্য করতে পারে একটি নতুন, অদেখা ডেটা পয়েন্টের অবস্থান প্লটের y অক্ষের সাথে সম্পর্কিতভাবে পূর্বাভাস করতে? এই মডেলের ব্যবহারিক প্রয়োগটি শব্দে প্রকাশ করার চেষ্টা করুন। + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.xlabel('Scaled BMIs') + plt.ylabel('Disease Progression') + plt.title('A Graph Plot Showing Diabetes Progression Against BMI') + plt.show() + ``` + + ![ডায়াবেটিসের চারপাশে ডেটাপয়েন্ট দেখাচ্ছে একটি scatterplot](../../../../translated_images/bn/scatterplot.ad8b356bcbb33be6.webp) -অভিনন্দন, আপনি আপনার প্রথম লিনিয়ার রিগ্রেশন মডেল তৈরি করেছেন, এর মাধ্যমে একটি পূর্বাভাস তৈরি করেছেন এবং এটি একটি প্লটে প্রদর্শন করেছেন! + + ✅ এখানে কী ঘটছে তা একটু ভাবুন। একটি সরলরেখা অনেক ছোট ডেটার বিন্দুর মধ্য দিয়ে যাচ্ছে, কিন্তু এটি ঠিক কী করছে? আপনি কি দেখতে পাচ্ছেন কীভাবে এই রেখাটিকে ব্যবহার করে কোনও নতুন, অদেখা ডেটা পয়েন্ট কোথায় প্লটের y অক্ষের সাথে সম্পর্ক করে বসাতে হবে তা পূর্বাভাস দেবে? এই মডেলের ব্যবহারিক উপযোগিতাটি শব্দে প্রকাশ করার চেষ্টা করুন। + +অভিনন্দন, আপনি প্রথম লিনিয়ার রিগ্রেশন মডেলটি তৈরি করেছেন, এটি দিয়ে একটি পূর্বাভাস তৈরি করেছেন, এবং এটি একটি প্লটে প্রদর্শন করেছেন! --- ## 🚀চ্যালেঞ্জ -এই ডেটাসেট থেকে একটি ভিন্ন ভেরিয়েবল প্লট করুন। ইঙ্গিত: এই লাইনটি সম্পাদনা করুন: `X = X[:,2]`। এই ডেটাসেটের লক্ষ্য অনুযায়ী, আপনি ডায়াবেটিস রোগের অগ্রগতি সম্পর্কে কী আবিষ্কার করতে সক্ষম? - +এই ডেটাসেট থেকে একটি আলাদা ভেরিয়েবল প্লট করুন। ইঙ্গিত: এই লাইনটি সম্পাদনা করুন: `X = X[:,2]`। এই ডেটাসেটের টার্গেট বিবেচনায়, আপনি কী জানতে পারছেন ডায়াবেটিস রোগের অগ্রগতির সম্পর্কে? ## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) -## পর্যালোচনা ও স্ব-অধ্যয়ন +## পর্যালোচনা এবং স্ব-অধ্যয়ন -এই টিউটোরিয়ালে, আপনি সাধারণ লিনিয়ার রিগ্রেশন নিয়ে কাজ করেছেন, ইউনিভেরিয়েট বা মাল্টিপল লিনিয়ার রিগ্রেশন নয়। এই পদ্ধতিগুলির মধ্যে পার্থক্য সম্পর্কে একটু পড়ুন, অথবা [এই ভিডিওটি](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) দেখুন। +এই টিউটোরিয়ালে, আপনি সহজ সরলরেখীয় রিগ্রেশন নিয়ে কাজ করেছেন, যা ইউনিভেরিয়েট বা মাল্টিপল লিনিয়ার রিগ্রেশনের থেকে আলাদা। এই পদ্ধতিগুলির মধ্যে পার্থক্য সম্পর্কে একটু পড়ুন, অথবা [এই ভিডিওটি](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) দেখুন। -রিগ্রেশনের ধারণা সম্পর্কে আরও পড়ুন এবং ভাবুন এই কৌশলটি দিয়ে কী ধরনের প্রশ্নের উত্তর দেওয়া যেতে পারে। আপনার জ্ঞান আরও গভীর করতে এই [টিউটোরিয়ালটি](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) নিন। +রিগ্রেশন ধারণা সম্পর্কে আরও পড়ুন এবং ভাবুন কী ধরনের প্রশ্ন এই প্রযুক্তি দ্বারা উত্তরযোগ্য। আপনার বোঝাপড়া গভীর করার জন্য এই [টিউটোরিয়ালটি](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) অনুসরণ করুন। ## অ্যাসাইনমেন্ট @@ -209,5 +228,7 @@ --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/bn/2-Regression/2-Data/README.md b/translations/bn/2-Regression/2-Data/README.md index 63453e815..81853a2b4 100644 --- a/translations/bn/2-Regression/2-Data/README.md +++ b/translations/bn/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Scikit-learn ব্যবহার করে একটি রিগ্রেশন মডেল তৈরি করুন: ডেটা প্রস্তুত এবং ভিজ্যুয়ালাইজ করুন +# Scikit-learn ব্যবহার করে রিগ্রেশন মডেল তৈরি করুন: ডেটা প্রস্তুত করুন এবং ভিজ্যুয়ালাইজ করুন -![ডেটা ভিজ্যুয়ালাইজেশন ইনফোগ্রাফিক](../../../../2-Regression/2-Data/images/data-visualization.png) +![ডেটা ভিজ্যুয়ালাইজেশন ইনফোগ্রাফিক](../../../../translated_images/bn/data-visualization.54e56dded7c1a804.webp) -ইনফোগ্রাফিক: [দাসানি মাদিপল্লি](https://twitter.com/dasani_decoded) +ইনফোগ্রাফিক [দাসানি মাদিপালি](https://twitter.com/dasani_decoded) দ্বারা -## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) +## [প্রাক-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) -> ### [এই পাঠটি R-এ উপলব্ধ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [এই পাঠ R-এ উপলব্ধ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) -## ভূমিকা +## পরিচিতি -আপনি যখন Scikit-learn ব্যবহার করে মেশিন লার্নিং মডেল তৈরি করতে শুরু করবেন, তখন আপনার ডেটা থেকে সঠিক প্রশ্ন জিজ্ঞাসা করার জন্য প্রস্তুত হতে হবে। ডেটার সাথে কাজ করার সময় এবং ML সমাধান প্রয়োগ করার সময়, সঠিক প্রশ্ন জিজ্ঞাসা করা অত্যন্ত গুরুত্বপূর্ণ যাতে আপনার ডেটাসেটের সম্ভাবনাগুলি সঠিকভাবে উন্মোচিত হয়। +এখন যেহেতু আপনি Scikit-learn সহ মেশিন লার্নিং মডেল তৈরি শুরু করার জন্য প্রয়োজনীয় সরঞ্জাম দিয়ে প্রস্তুত, আপনি আপনার ডেটাকে প্রশ্ন করার জন্য প্রস্তুত। ডেটার সাথে কাজ করার সময় এবং ML সমাধান প্রয়োগ করার সময়, আপনার ডেটাসেটের সম্ভাবনা সঠিকভাবে প্রকাশ করার জন্য সঠিক প্রশ্ন কিভাবে করতে হয় তা বোঝা খুবই গুরুত্বপূর্ণ। -এই পাঠে আপনি শিখবেন: +এই পাঠে, আপনি শিখবেন: -- কীভাবে মডেল তৈরির জন্য আপনার ডেটা প্রস্তুত করবেন। -- কীভাবে Matplotlib ব্যবহার করে ডেটা ভিজ্যুয়ালাইজ করবেন। +- কিভাবে মডেল তৈরির জন্য আপনার ডেটা প্রস্তুত করবেন। +- কিভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজেশন করবেন। +- কিভাবে Seaborn দিয়ে আরও প্রকাশময় ডেটা ভিজ্যুয়ালাইজেশন করবেন। -## আপনার ডেটার সঠিক প্রশ্ন জিজ্ঞাসা করা +## আপনার ডেটার জন্য সঠিক প্রশ্ন করা -আপনার উত্তর পেতে চাওয়া প্রশ্নটি নির্ধারণ করবে আপনি কোন ধরনের ML অ্যালগরিদম ব্যবহার করবেন। এবং আপনি যে উত্তরটি পাবেন তার গুণমান আপনার ডেটার প্রকৃতির উপর ব্যাপকভাবে নির্ভর করবে। +আপনি যে প্রশ্নের উত্তর জানতে চান তা নির্ধারণ করবে আপনি কোন ধরনের ML অ্যালগরিদম ব্যবহার করবেন। এবং আপনি যে উত্তরের মান পাবেন তা আপনার ডেটার প্রকৃতির উপর অনেক নির্ভর করবে। -এই পাঠের জন্য প্রদত্ত [ডেটা](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) দেখুন। আপনি এই .csv ফাইলটি VS Code-এ খুলতে পারেন। দ্রুত স্কিম করলে দেখা যায় যে এখানে ফাঁকা স্থান এবং স্ট্রিং ও সংখ্যার মিশ্রণ রয়েছে। এছাড়াও একটি অদ্ভুত কলাম রয়েছে যার নাম 'Package', যেখানে ডেটা 'sacks', 'bins' এবং অন্যান্য মানের মিশ্রণ। ডেটা আসলে একটু বিশৃঙ্খল। +এই পাঠের জন্য প্রদত্ত [ডেটা](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) দেখুন। আপনি এই .csv ফাইলটি VS Code-এ খুলতে পারেন। দ্রুত একবার দেখে বুঝা যায় যে সেখানে ফাঁকা ক্ষেত্র এবং স্ট্রিং ও সংখ্যাসূচক ডেটার মিশ্রণ রয়েছে। 'Package' নামে একটি অদ্ভুত কলামও আছে যেখানে ডেটা 'sacks', 'bins' এবং অন্যান্য মানের মিশ্রণ। আসলেই, ডেটাটি কিছুটা এলোমেলো। -[![ML for beginners - কীভাবে একটি ডেটাসেট বিশ্লেষণ এবং পরিষ্কার করবেন](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - কীভাবে একটি ডেটাসেট বিশ্লেষণ এবং পরিষ্কার করবেন") +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের জন্য ডেটা প্রস্তুত করার একটি সংক্ষিপ্ত ভিডিও দেখতে। +> 🎥 উপরের ছবিতে ক্লিক করে এই পাঠের জন্য ডেটা প্রস্তুত করার একটি সংক্ষিপ্ত ভিডিও দেখুন। -আসলে, সম্পূর্ণ প্রস্তুত একটি ডেটাসেট পাওয়া খুবই বিরল যা সরাসরি ML মডেল তৈরির জন্য ব্যবহার করা যায়। এই পাঠে, আপনি স্ট্যান্ডার্ড Python লাইব্রেরি ব্যবহার করে একটি কাঁচা ডেটাসেট প্রস্তুত করার পদ্ধতি শিখবেন। এছাড়াও, আপনি ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন কৌশল শিখবেন। +আসলে, ডেটাসেট সরাসরি ব্যবহার করার জন্য সম্পূর্ণ প্রস্তুত পাওয়া খুবই অস্বাভাবিক। এই পাঠে, আপনি শিখবেন কিভাবে স্ট্যান্ডার্ড পাইথন লাইব্রেরি ব্যবহার করে র ডেটাসেট প্রস্তুত করতে হয়। এছাড়াও আপনি বিভিন্ন পদ্ধতি শিখবেন ডেটা ভিজ্যুয়ালাইজেশনের। -## কেস স্টাডি: 'কুমড়ার বাজার' +## কেস স্টাডি: 'পাম্পকিন (কুমড়া) বাজার' -এই ফোল্ডারে আপনি মূল `data` ফোল্ডারে [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) নামে একটি .csv ফাইল পাবেন, যেখানে 1757 লাইনের ডেটা রয়েছে যা শহর অনুযায়ী গোষ্ঠীবদ্ধ কুমড়ার বাজার সম্পর্কে তথ্য প্রদান করে। এটি [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) থেকে প্রাপ্ত কাঁচা ডেটা, যা মার্কিন যুক্তরাষ্ট্রের কৃষি বিভাগের দ্বারা বিতরণ করা হয়। +এই ফোল্ডারে আপনি রুট `data` ফোল্ডারে [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) নামে একটি .csv ফাইল পাবেন যার মধ্যে পাম্পকিন বাজার সম্পর্কিত ১৭৫৭টি তথ্য সারি রয়েছে, শহরভিত্তিক গোষ্ঠীতে বিন্যস্ত। এটি [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) থেকে সংগৃহীত কাঁচা ডেটা যা যুক্তরাষ্ট্রের কৃষি বিভাগের দ্বারা বিতরণ করা হয়। -### ডেটা প্রস্তুত করা +### ডেটা প্রস্তুতি -এই ডেটা পাবলিক ডোমেইনে রয়েছে। এটি USDA ওয়েবসাইট থেকে শহর অনুযায়ী আলাদা ফাইল হিসেবে ডাউনলোড করা যায়। অনেক আলাদা ফাইল এড়াতে, আমরা সমস্ত শহরের ডেটা একত্রিত করে একটি স্প্রেডশিটে রেখেছি, ফলে আমরা ইতিমধ্যেই ডেটা কিছুটা _প্রস্তুত_ করেছি। এবার, ডেটার দিকে আরও গভীরভাবে নজর দিন। +এই ডেটা পাবলিক ডোমেইনে রয়েছে। এটি USDA ওয়েবসাইট থেকে প্রতিটি শহরের আলাদা আলাদা ফাইল হিসাবে ডাউনলোড করা যায়। অনেকগুলো আলাদা ফাইল এড়াতে, আমরা সব শহরের ডেটা একক স্প্রেডশীটে যুক্ত করেছি, অর্থাৎ আমরা ডেটা কিছুটা _প্রস্তুত_ করেছি। এবার, ডেটার প্রতি আরও গভীর দৃষ্টি দেওয়া যাক। -### কুমড়ার ডেটা - প্রাথমিক পর্যবেক্ষণ +### পাম্পকিন ডেটা - প্রাথমিক উপসংহার -এই ডেটা সম্পর্কে আপনি কী লক্ষ্য করেন? আপনি ইতিমধ্যেই দেখেছেন যে এখানে স্ট্রিং, সংখ্যা, ফাঁকা স্থান এবং অদ্ভুত মানের মিশ্রণ রয়েছে যা আপনাকে বুঝতে হবে। +আপনি এই ডেটার সম্পর্কে কি লক্ষ্য করেছেন? আপনি ইতোমধ্যেই দেখেছেন যে এখানে স্ট্রিং, সংখ্যা, ফাঁকা স্থান এবং কিছু অদ্ভুত মানের মিশ্রণ রয়েছে যার অর্থ আপনি খুঁজে বের করতে হবে। -রিগ্রেশন কৌশল ব্যবহার করে আপনি এই ডেটা থেকে কী প্রশ্ন করতে পারেন? যেমন, "একটি নির্দিষ্ট মাসে বিক্রয়ের জন্য একটি কুমড়ার দাম পূর্বাভাস দিন।" ডেটার দিকে আবার তাকালে, আপনি লক্ষ্য করবেন যে এই কাজের জন্য প্রয়োজনীয় ডেটা কাঠামো তৈরি করতে কিছু পরিবর্তন করতে হবে। +আপনি এই ডেটার কাছে কোন প্রশ্ন করতে পারেন, রিগ্রেশন টেকনিক ব্যবহার করে? উদাহরণস্বরূপ, "নির্দিষ্ট মাসে বিক্রির জন্য পাম্পকিনের দাম পূর্বানুমান করুন"। আবার ডেটা দেখে, কাজের জন্য প্রয়োজনীয় ডেটা স্ট্রাকচার তৈরি করতে কিছু পরিবর্তন করতে হবে। +## অনুশীলন - পাম্পকিন ডেটা বিশ্লেষণ -## অনুশীলন - কুমড়ার ডেটা বিশ্লেষণ করুন - -চলুন [Pandas](https://pandas.pydata.org/) ব্যবহার করি, (এর নাম `Python Data Analysis` থেকে এসেছে) একটি টুল যা ডেটা আকৃতির জন্য খুবই কার্যকর, কুমড়ার ডেটা বিশ্লেষণ এবং প্রস্তুত করতে। +চলুন [Pandas](https://pandas.pydata.org/) (যার অর্থ `Python Data Analysis`) ব্যবহার করি, যা ডেটা বিন্যাসে খুবই কাজে লাগে, এই পাম্পকিন ডেটা বিশ্লেষণ এবং প্রস্তুত করার জন্য। ### প্রথমে, অনুপস্থিত তারিখ পরীক্ষা করুন -আপনাকে প্রথমে অনুপস্থিত তারিখ পরীক্ষা করার জন্য কিছু পদক্ষেপ নিতে হবে: +আপনাকে প্রথমে অনুপস্থিত তারিখগুলি পরীক্ষা করার পদক্ষেপ নিতে হবে: -1. তারিখগুলোকে মাসের ফরম্যাটে রূপান্তর করুন (এগুলো US তারিখ, তাই ফরম্যাটটি `MM/DD/YYYY`)। -2. মাসটি একটি নতুন কলামে বের করুন। +১. তারিখগুলোকে মাস বিন্যাসে রূপান্তর করুন (এগুলো US তারিখ, তাই বিন্যাস `MM/DD/YYYY`)। +২. একটি নতুন কলামে মাস আলাদা করুন। -Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এবং স্প্রেডশিটটি একটি নতুন Pandas ডেটাফ্রেমে আমদানি করুন। +_notebook.ipynb_ ফাইলটি Visual Studio Code-এ খুলুন এবং স্প্রেডশীটটি নতুন Pandas ডেটাফ্রেমে ইম্পোর্ট করুন। -1. প্রথম পাঁচটি সারি দেখতে `head()` ফাংশন ব্যবহার করুন। +১. প্রথম পাঁচটি সারি দেখার জন্য `head()` ফাংশন ব্যবহার করুন। ```python import pandas as pd @@ -64,30 +64,30 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ pumpkins.head() ``` - ✅ শেষ পাঁচটি সারি দেখতে আপনি কোন ফাংশন ব্যবহার করবেন? + ✅ সর্বশেষ পাঁচটি সারি দেখার জন্য কোন ফাংশনটি ব্যবহার করবেন? -1. বর্তমান ডেটাফ্রেমে অনুপস্থিত ডেটা আছে কিনা তা পরীক্ষা করুন: +১. চেক করুন বর্তমান ডেটাফ্রেমে কি অনুপস্থিত তথ্য আছে কি না: ```python pumpkins.isnull().sum() ``` - অনুপস্থিত ডেটা রয়েছে, তবে এটি হয়তো এই কাজের জন্য গুরুত্বপূর্ণ নাও হতে পারে। + কিছু ডেটা অনুপস্থিত, কিন্তু হয়তো তা কাজের জন্য অনেকটা ততটা প্রভাব ফেলবে না। -1. আপনার ডেটাফ্রেমটি আরও সহজে কাজ করার জন্য, শুধুমাত্র প্রয়োজনীয় কলামগুলো নির্বাচন করুন, `loc` ফাংশন ব্যবহার করে যা মূল ডেটাফ্রেম থেকে একটি নির্দিষ্ট সারি এবং কলাম গ্রুপ বের করে। নিচের ক্ষেত্রে `:` এর অর্থ "সব সারি।" +১. ডেটাফ্রেম কাজ করা সহজ করতে, কেবল প্রয়োজনীয় কলামগুলি `loc` ফাংশন ব্যবহার করে বাছাই করুন, যা মূল ডেটাফ্রেম থেকে নির্দিষ্ট সারি (প্রথম প্যারামিটার) এবং কলাম (দ্বিতীয় প্যারামিটার) বের করে আনে। নিচে `:` মানে "সকল সারি"। ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### দ্বিতীয়ত, কুমড়ার গড় দাম নির্ধারণ করুন +### দ্বিতীয়, পাম্পকিনের গড় দাম নির্ণয় করুন -একটি নির্দিষ্ট মাসে কুমড়ার গড় দাম নির্ধারণ করার জন্য কীভাবে চিন্তা করবেন? এই কাজের জন্য আপনি কোন কলামগুলো বাছাই করবেন? ইঙ্গিত: আপনাকে ৩টি কলাম দরকার হবে। +একটি নির্দিষ্ট মাসের পাম্পকিনের গড় দাম কিভাবে নির্ণয় করবেন ভাবুন। এই কাজের জন্য কোন কোন কলাম প্রয়োজন? সূত্র: আপনাকে ৩টি কলাম দরকার হবে। -সমাধান: `Low Price` এবং `High Price` কলামের গড় নিয়ে নতুন Price কলামটি পূরণ করুন এবং Date কলামটি শুধুমাত্র মাস দেখানোর জন্য রূপান্তর করুন। সৌভাগ্যক্রমে, উপরের পরীক্ষার অনুযায়ী, তারিখ বা দামের জন্য কোনো অনুপস্থিত ডেটা নেই। +সমাধান: `Low Price` এবং `High Price` কলামগুলোর গড় নিয়ে নতুন `Price` কলাম পূরণ করুন, এবং `Date` কলাম শুধুমাত্র মাস দেখাবে। সৌভাগ্যক্রমে, উপরের পরীক্ষা অনুযায়ী, তারিখ বা মূল্যের জন্য কোন ডেটা অনুপস্থিত নয়। -1. গড় নির্ধারণ করতে নিম্নলিখিত কোড যোগ করুন: +১. গড় নির্ণয় করতে নিম্নলিখিত কোড যোগ করুন: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ ``` - ✅ আপনি `print(month)` ব্যবহার করে যেকোনো ডেটা পরীক্ষা করতে পারেন। + ✅ আপনি চেক করতে চাইলে `print(month)` ব্যবহার করে যেকোনো ডেটা মুদ্রণ করতে পারেন। -2. এখন, আপনার রূপান্তরিত ডেটা একটি নতুন Pandas ডেটাফ্রেমে কপি করুন: +২. এখন, আপনার রূপান্তরকৃত ডেটা একটি নতুন Pandas ডেটাফ্রেমে অনুলিপি করুন: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - আপনার ডেটাফ্রেম প্রিন্ট করলে আপনি একটি পরিষ্কার, সুশৃঙ্খল ডেটাসেট দেখতে পাবেন যার উপর আপনি আপনার নতুন রিগ্রেশন মডেল তৈরি করতে পারেন। + আপনার ডেটাফ্রেম মুদ্রণ করলে একটি পরিচ্ছন্ন, সুশৃঙ্খল ডেটাসেট দেখতে পাবেন, যার ওপর আপনি নতুন রিগ্রেশন মডেল নির্মাণ করতে পারবেন। -### কিন্তু অপেক্ষা করুন! এখানে কিছু অদ্ভুত ব্যাপার আছে +### কিন্তু অপেক্ষা করুন! এখানে কিছু অদ্ভুততা আছে -যদি আপনি `Package` কলামের দিকে তাকান, তাহলে দেখবেন কুমড়াগুলো বিভিন্ন কনফিগারেশনে বিক্রি হয়। কিছু '1 1/9 bushel' পরিমাপে বিক্রি হয়, কিছু '1/2 bushel' পরিমাপে, কিছু প্রতি কুমড়া, কিছু প্রতি পাউন্ড, এবং কিছু বড় বাক্সে বিভিন্ন প্রস্থে। +যদি আপনি `Package` কলাম দেখেন, পাম্পকিন বিক্রি হয় বিভিন্ন বিন্যাসে। কিছু বিক্রি হয় '1 1/9 bushel' মাপে, কিছু '1/2 bushel' মাপে, কিছু প্রতি পাম্পকিন, কিছু প্রতি পাউন্ড, এবং কিছু বড় বক্সে বিভিন্ন প্রস্থে। -> কুমড়াগুলোকে ধারাবাহিকভাবে ওজন করা খুবই কঠিন +> পাম্পকিন গুলো ধারাবাহিকভাবে ওজন করা খুব কঠিন বলে মনে হচ্ছে -মূল ডেটার দিকে গভীরভাবে তাকালে দেখা যায় যে `Unit of Sale` কলামে 'EACH' বা 'PER BIN' সমান মান রয়েছে, এবং `Package` টাইপ প্রতি ইঞ্চি, প্রতি বিন, বা 'each'। কুমড়াগুলোকে ধারাবাহিকভাবে ওজন করা খুবই কঠিন, তাই চলুন `Package` কলামে 'bushel' স্ট্রিং থাকা কুমড়াগুলো বাছাই করি। +মূল ডেটা বিশ্লেষণ করলে দেখা যায়, যেগুলোর `Unit of Sale` ধারায় 'EACH' বা 'PER BIN' আছে সেগুলোর `Package` প্রকার হয় প্রতি ইঞ্চি, প্রতি বিন, বা 'each'। পাম্পকিন ধারাবাহিকভাবে মাপা কঠিন, তাই `Package` কলামে 'bushel' স্ট্রিং থাকার পাম্পকিন গুলো বাছাই করে ফিল্টার করুন। -1. ফাইলের শীর্ষে, প্রাথমিক .csv আমদানির নিচে একটি ফিল্টার যোগ করুন: +১. ফাইলের শীর্ষে .csv ইম্পোর্টের নিচে একটি ফিল্টার যোগ করুন: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - এখন ডেটা প্রিন্ট করলে আপনি দেখতে পাবেন যে আপনি শুধুমাত্র 415 বা তার বেশি সারি পাচ্ছেন যেখানে কুমড়াগুলো bushel হিসেবে বিক্রি হয়। + এখন যদি ডেটা প্রিন্ট করেন, দেখতে পাবেন প্রায় ৪১৫ সারি ডেটা আসছে যা 'bushel' অনুযায়ী পাম্পকিন সম্পর্কিত। -### কিন্তু অপেক্ষা করুন! আরও একটি কাজ করতে হবে +### কিন্তু অপেক্ষা করুন! আরেকটি কাজ বাকি আছে -আপনি কি লক্ষ্য করেছেন যে bushel পরিমাণটি প্রতি সারিতে পরিবর্তিত হয়? আপনাকে দামকে স্বাভাবিক করতে হবে যাতে আপনি bushel অনুযায়ী দাম দেখাতে পারেন, তাই এটি মানক করতে কিছু গণনা করুন। +আপনি কি লক্ষ্য করেছেন যে প্রতি সারিতে bushel-এর পরিমাণ বিভিন্ন? আপনাকে মূল্যমানকে bushel প্রতি হিসেবে স্বাভাবিকীকরণ করতে হবে, তাই কিছু গণিত করতে হবে। -1. নতুন_pumpkins ডেটাফ্রেম তৈরি করার ব্লকের পরে এই লাইনগুলো যোগ করুন: +১. নতুন_pumpkins ডেটাফ্রেম তৈরির ব্লকের নিচে এই লাইনগুলো যোগ করুন: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) অনুযায়ী, একটি bushel-এর ওজন উৎপাদনের ধরন অনুযায়ী পরিবর্তিত হয়, কারণ এটি একটি ভলিউম পরিমাপ। "উদাহরণস্বরূপ, একটি bushel টমেটোর ওজন 56 পাউন্ড হওয়া উচিত... পাতা এবং সবুজ শাক বেশি জায়গা নেয় কম ওজন নিয়ে, তাই একটি bushel পালং শাকের ওজন মাত্র 20 পাউন্ড।" এটি বেশ জটিল! চলুন bushel থেকে পাউন্ড রূপান্তর করার ঝামেলা এড়িয়ে bushel অনুযায়ী দাম নির্ধারণ করি। তবে কুমড়ার bushel নিয়ে এই অধ্যয়নটি দেখায় যে আপনার ডেটার প্রকৃতি বোঝা কতটা গুরুত্বপূর্ণ! +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) অনুযায়ী, একটি bushel-এর ওজন উৎপাদনের ধরণ অনুসারে নির্ভর করে, কারণ এটি ভলিউম মাপ। "উদাহরণস্বরূপ, একটি bushel টমেটোর ওজন ৫৬ পাউন্ড হওয়া উচিত... পাতা এবং সবজি কম ওজনের পাশাপাশি বেশি স্থান নেয়, তাই স্পিনাচের bushel মাত্র ২০ পাউন্ড।" এটা বেশ জটিল! আমরা bushel থেকে pound রূপান্তরে না গিয়ে bushel অনুযায়ী মূল্য নির্ধারণ করব। এই bushel ভিত্তিক পাম্পকিন অধ্যয়ন দেখায় কতটা গুরুত্বপূর্ণ আপনার ডেটার প্রকৃতি বোঝা! -এখন, আপনি bushel পরিমাপের ভিত্তিতে ইউনিট অনুযায়ী দাম বিশ্লেষণ করতে পারেন। ডেটা আবার প্রিন্ট করলে আপনি দেখতে পাবেন এটি কীভাবে মানক হয়েছে। +এখন আপনি তাদের bushel মাপ অনুযায়ী ইউনিট প্রতি মূল্য বিশ্লেষণ করতে পারবেন। যদি আবার ডেটা প্রিন্ট করেন, দেখতে পাবেন এটা স্বাভাবিকীকৃত। -✅ আপনি কি লক্ষ্য করেছেন যে অর্ধ-bushel হিসেবে বিক্রি হওয়া কুমড়াগুলো খুবই ব্যয়বহুল? আপনি কি এর কারণ খুঁজে বের করতে পারেন? ইঙ্গিত: ছোট কুমড়াগুলো বড়গুলোর তুলনায় অনেক বেশি ব্যয়বহুল, সম্ভবত কারণ একটি বড় ফাঁপা পাই কুমড়ার দ্বারা নেওয়া অব্যবহৃত জায়গার তুলনায় bushel-এ অনেক বেশি ছোট কুমড়া থাকে। +✅ আপনি কি দেখেছেন যে অর্ধেক bushel এ বিক্রয় হওয়া পাম্পকিনগুলো অনেক ব্যয়বহুল? আপনি কি এর কারণ বের করতে পারবেন? সূত্র: ছোট পাম্পকিনগুলো বড়দের থেকে অনেক বেশি দামী, সম্ভবত কারণ প্রতিটি bushel এ অনেক বেশি ছোট পাম্পকিন থাকে, যেখানে একটি বড় গর্তযুক্ত পাই পাম্পকিনের কারণে অনেক স্পেস ফাঁকা থাকে। ## ভিজ্যুয়ালাইজেশন কৌশল -ডেটা বিজ্ঞানীর ভূমিকা হলো তারা যে ডেটার সাথে কাজ করছেন তার গুণমান এবং প্রকৃতি প্রদর্শন করা। এটি করতে তারা প্রায়ই আকর্ষণীয় ভিজ্যুয়ালাইজেশন তৈরি করেন, যেমন প্লট, গ্রাফ এবং চার্ট, যা ডেটার বিভিন্ন দিক দেখায়। এইভাবে, তারা সম্পর্ক এবং ফাঁকগুলো চাক্ষুষভাবে প্রদর্শন করতে সক্ষম হন যা অন্যথায় খুঁজে পাওয়া কঠিন। +ডেটা বিজ্ঞানীর একটি অংশ হল তারা যে ডেটার ওপর কাজ করছে তার গুণমান ও প্রকৃতি প্রদর্শন করা। এজন্য তারা সাধারণত আকর্ষণীয় ভিজ্যুয়ালাইজেশন, প্লট, গ্রাফ এবং চার্ট তৈরি করে, যা ডেটার বিভিন্ন দিক প্রদর্শন করে। এর মাধ্যমে তারা এমন সম্পর্ক এবং ফাঁক গুলো ভিজ্যুয়ালি দেখতে পান যা অন্যথায় খুঁজে বের করা কঠিন। -[![ML for beginners - কীভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজ করবেন](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - কীভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজ করবেন") +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের জন্য ডেটা ভিজ্যুয়ালাইজ করার একটি সংক্ষিপ্ত ভিডিও দেখতে। +> 🎥 উপরের ছবিতে ক্লিক করে এই পাঠের জন্য ডেটা ভিজ্যুয়ালাইজ করার একটি সংক্ষিপ্ত ভিডিও দেখুন। -ভিজ্যুয়ালাইজেশন ডেটার জন্য সবচেয়ে উপযুক্ত মেশিন লার্নিং কৌশল নির্ধারণ করতেও সাহায্য করতে পারে। একটি স্ক্যাটারপ্লট যা একটি রেখা অনুসরণ করে বলে মনে হয়, উদাহরণস্বরূপ, এটি নির্দেশ করে যে ডেটা একটি লিনিয়ার রিগ্রেশন অনুশীলনের জন্য উপযুক্ত। +ভিজ্যুয়ালাইজেশন ডেটার জন্য সবচেয়ে উপযুক্ত মেশিন লার্নিং কৌশল নির্ধারণেও সাহায্য করে। উদাহরণস্বরূপ, একটি স্ক্যাটারপ্লট যা একটি রেখা অনুসরণ করে মনে হয়, তা নির্দেশ করে যে ডেটা একটি লিনিয়ার রিগ্রেশন অনুশীলনের জন্য ভাল প্রার্থী। -একটি ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরি যা Jupyter নোটবুকে ভালো কাজ করে তা হলো [Matplotlib](https://matplotlib.org/) (যা আপনি আগের পাঠেও দেখেছেন)। +একটি ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরি যা Jupyter নোটবুকে ভাল কাজ করে তা হল [Matplotlib](https://matplotlib.org/) (যা আপনি আগের পাঠেও দেখেছিলেন)। -> ডেটা ভিজ্যুয়ালাইজেশনের আরও অভিজ্ঞতা পেতে [এই টিউটোরিয়ালগুলো](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) দেখুন। +> আরও অভিজ্ঞতা পেতে [এই টিউটোরিয়ালগুলোতে](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ডেটা ভিজ্যুয়ালাইজেশন অনুশীলন করুন। -## অনুশীলন - Matplotlib নিয়ে পরীক্ষা করুন +## অনুশীলন - Matplotlib দিয়ে পরীক্ষা করুন -আপনি যে নতুন ডেটাফ্রেম তৈরি করেছেন তা প্রদর্শনের জন্য কিছু মৌলিক প্লট তৈরি করার চেষ্টা করুন। একটি মৌলিক লাইন প্লট কী দেখাবে? +আপনি এখন যা তৈরি করেছেন নতুন ডেটাফ্রেম প্রদর্শনের জন্য কিছু মৌলিক প্লট তৈরি করার চেষ্টা করুন। একটি মৌলিক লাইন প্লট কী দেখাবে? -1. ফাইলের শীর্ষে, Pandas আমদানির নিচে Matplotlib আমদানি করুন: +১. ফাইলের উপরে, Pandas ইম্পোর্টের নিচে Matplotlib ইম্পোর্ট করুন: ```python import matplotlib.pyplot as plt ``` -1. পুরো নোটবুকটি পুনরায় চালান। -1. নোটবুকের নিচে একটি সেল যোগ করুন যাতে ডেটা একটি বক্স হিসেবে প্লট করা যায়: +১. নোটবুকটি সম্পূর্ণ আবার চালান রিফ্রেশ করার জন্য। +১. নোটবুকের নীচে একটি সেল যোগ করুন এবং ডেটাকে বক্স হিসাবে প্লট করুন: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ plt.show() ``` - ![একটি স্ক্যাটারপ্লট যা দাম এবং মাসের সম্পর্ক দেখায়](../../../../2-Regression/2-Data/images/scatterplot.png) + ![মূল্য থেকে মাস সম্পর্ক প্রদর্শন করা একটি স্ক্যাটারপ্লট](../../../../translated_images/bn/scatterplot.b6868f44cbd2051c.webp) - এটি কি একটি কার্যকর প্লট? এটি সম্পর্কে কি কিছু আপনাকে অবাক করে? + এটা কি একটি ব্যবহারযোগ্য প্লট? এতে কি কিছু চমকপ্রদ আছে? - এটি বিশেষভাবে কার্যকর নয় কারণ এটি শুধুমাত্র একটি নির্দিষ্ট মাসে আপনার ডেটাকে পয়েন্টের একটি বিস্তৃতিতে প্রদর্শন করে। + এটা বিশেষত ব্যবহারযোগ্য নয় কারণ এটি কেবল আপনার ডেটা একটি নির্দিষ্ট মাসে বিন্দু হিসেবে দেখায়। -### এটি কার্যকর করুন +### এটাকে ব্যবহারযোগ্য করুন -চার্টগুলোকে কার্যকর ডেটা প্রদর্শন করতে, সাধারণত আপনাকে ডেটাকে কোনোভাবে গ্রুপ করতে হয়। চলুন একটি প্লট তৈরি করার চেষ্টা করি যেখানে y অক্ষটি মাস দেখায় এবং ডেটা ডেটার বিতরণ প্রদর্শন করে। +চার্টে ব্যবহারযোগ্য ডেটা প্রদর্শনের জন্য সাধারণত আপনাকে ডেটাকে কোন না কোনভাবে গোষ্ঠীবদ্ধ করতে হয়। আসুন একটি প্লট তৈরির চেষ্টা করি যেখানে y অক্ষ মাস দেখায় এবং ডেটা ডিস্ট্রিবিউশন প্রদর্শন করে। -1. একটি গ্রুপড বার চার্ট তৈরি করতে একটি সেল যোগ করুন: +১. একটি সেল যোগ করুন গ্রুপ করা বার চার্ট তৈরি করতে: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![একটি বার চার্ট যা দাম এবং মাসের সম্পর্ক দেখায়](../../../../2-Regression/2-Data/images/barchart.png) + ![মূল্য থেকে মাস সম্পর্ক প্রদর্শন করা একটি বার চার্ট](../../../../translated_images/bn/barchart.a833ea9194346d76.webp) + + এটা একটি বেশি ব্যবহারযোগ্য ডেটা ভিজ্যুয়ালাইজেশন! এটা দেখাচ্ছে যে পাম্পকিনের সর্বোচ্চ মূল্য সেপ্টেম্বর ও অক্টোবর মাসে হয়। এটা আপনার প্রত্যাশার সাথে সঙ্গতিপূর্ণ? কেন বা কেন নয়? + +## অনুশীলন - Seaborn দিয়ে পরীক্ষা করুন + +Matplotlib শক্তিশালী, কিন্তু একটি পলিশড চার্ট তৈরির জন্য অনেক কোড লাগতে পারে। [Seaborn](https://seaborn.pydata.org/) হল Matplotlib এর উপরে নির্মিত একটি লাইব্রেরি যা স্ট্যাটিস্টিক্যাল ডেটা ভিজ্যুয়ালাইজেশনের জন্য ডিজাইন করা হয়েছে। এটি সরাসরি Pandas ডেটাফ্রেমের সঙ্গে কাজ করে, আকর্ষণীয় ডিফল্ট স্টাইল দেয়, এবং অনেক কম কোডে তথ্যবহুল প্লট তৈরির সুযোগ দেয়। কারণ Seaborn Matplotlib অবজেক্ট ফেরত দেয়, তাই আপনি Matplotlib সম্পর্কে যা জানেন সবকিছু ব্যবহার করে ফলাফল আরও সূক্ষ্ম করতে পারবেন। + +> যদি আপনার কাছে ইতিমধ্যেই Seaborn ইনস্টল না থাকে, তাহলে `pip install seaborn` দিয়ে ইনস্টল করুন। + +১. নোটবুকের উপরে অন্য ইম্পোর্টের নিচে Seaborn ইম্পোর্ট করুন। এটি সাধারণত `sns` নামে ইম্পোর্ট করা হয়: + + ```python + import seaborn as sns + ``` + +### সম্পর্ক প্রদর্শনের জন্য স্ক্যাটার প্লট + +মডেল তৈরি করার আগে ডেটা অনুসন্ধানের একটি বড় অংশ হল ভেরিয়েবলগুলোর মধ্যে _সম্পর্ক_ খোঁজা। একটি [স্ক্যাটার প্লট](https://en.wikipedia.org/wiki/Scatter_plot) এর সাহায্যে এটা সবচেয়ে ভাল জানা যায়: যদি বিন্দুগুলো একটি রেখার সাথেই চলে, তাহলে দুই ভেরিয়েবল হয়ত সম্পর্কিত, যা লিনিয়ার রিগ্রেশন মডেলের জন্য ভালো সংকেত। + +১. আগের মতো মূল্য থেকে মাসের স্ক্যাটার প্লট আবার তৈরি করুন, এবার Seaborn-এর [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (রিলেশনাল প্লট) ব্যবহার করে, যা সরাসরি আপনার ডেটাফ্রেম কলামের সাথে কাজ করে: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn স্ক্যাটারপ্লট যা মূল্য থেকে মাসের সম্পর্ক দেখায়](../../../../translated_images/bn/relplot.a03837d8f0329cec.webp) + + লক্ষ্য করুন কিভাবে আপনি কলামের নাম এবং ডেটাফ্রেম পাঠান, আর Seaborn অক্ষের লেবেল দেখভাল করে। + +২. `kind="line"` পাস করে আপনি একটি লাইন প্লটে পরিবর্তন করতে পারেন। Seaborn রেখার আশপাশে কনফিডেন্স ইন্টারভ্যালও দেখায়: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn লাইন প্লট যা মূল্য থেকে মাসের সম্পর্ক দেখায়](../../../../translated_images/bn/lineplot.f9034ba47b1e30ee.webp) + + এই ডেটাটি যথেষ্ট শব্দপূর্ণ, তাই লাইন প্লট সবচেয়ে স্পষ্ট নয় — তবে এটি দেখায় আপনি কিভাবে সহজেই Seaborn-এ চার্ট ধরনের পরিবর্তন করতে পারেন। + +### বারের চিত্রগুলি ডিস্ট্রিবিউশন দেখানোর জন্য + + +আগে আপনি ম্যানুয়ালি ডেটাগুলো গ্রুপ করে Matplotlib দিয়ে একটি বার চার্ট তৈরি করেছিলেন। Seaborn-এর [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (বর্গীকরণমূলক প্লট) আপনার জন্য গ্রুপিং এবং সংক্ষেপণ করতে পারে। ডিফল্ট হিসেবে `kind="bar"` প্রতিটি ক্যাটেগরির গড় দেখায় একটি কালো লাইনের সাথে যা বিশ্বাসযোগ্যতার ইন্টারভ্যাল নির্দেশ করে। + +১. মাসিক গড় মূল্যের একটি বার চার্ট তৈরি করুন: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![মাসিক দাম বিতরণ দেখানো একটি Seaborn বার চার্ট](../../../../translated_images/bn/catplot.e73fc35fdf96242b.webp) + + এটি Matplotlib দিয়ে যা আপনি দেখেছেন তা নিশ্চিত করে — দাম সেপ্টেম্বর এবং অক্টোবরের আশেপাশে শীর্ষে থাকে — তবে Seaborn এছাড়াও ভিজ্যুয়ালাইজ করে প্রতিটি মাসের মধ্যে দাম কতটা _পরিবর্তিত_ হয়। + +### হিটম্যাপ দিয়ে সম্পর্ক দেখানো + +স্ক্যাটার প্লট একই সময়ে দুইটি ভেরিয়েবল তুলনা করে। যখন আপনার একাধিক সংখ্যাসূচক কলাম থাকে, একটি [হিটম্যাপ](https://en.wikipedia.org/wiki/Heat_map) সব কলামের প্রতিটি জোড়ার সম্পর্কের শক্তি একবারে দেখায়। এটা একটি সাধারণ উপায় কোন ফিচারগুলো সবচেয়ে বেশি সম্পর্কিত তা চিহ্নিত করার আগে (এবং একই ধরনের চার্ট পরে শ্রেণিবিন্যাসে বিভ্রান্তি ম্যাট্রিক্স প্রদর্শনের জন্য ব্যবহার করা হয়) মডেলে কি ফিড দিতে হবে তা সিদ্ধান্ত নেওয়ার জন্য। + +১. Pandas দিয়ে একটি সম্পর্ক ম্যাট্রিক্স তৈরি করুন, তারপর Seaborn-এর [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) দিয়ে এটি আঁকুন। `annot=True` অপশন প্রতিটি সেলে সম্পর্কের মানগুলো প্রিন্ট করে: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![সংখ্যাসূচক কলামগুলোর মধ্যে সম্পর্ক দেখানো একটি Seaborn হিটম্যাপ](../../../../translated_images/bn/heatmap.bd98dce43b404c57.webp) + + মানগুলো `1` (অথবা `-1`) এর কাছে থাকলে বোঝায় কলামগুলো শক্তভাবে _রৈখিক_ সম্পর্কযুক্ত। লক্ষ্য করুন `Low Price` এবং `High Price` প্রায় পরিপূর্ণভাবে সম্পর্কিত। অপরদিকে `Month` মূল্যগুলোর সাথে শুধুমাত্র দুর্বল রৈখিক সম্পর্ক দেখায় — যদিও উপরোক্ত বার চার্টে সেপ্টেম্বর ও অক্টোবর মাসে স্পষ্ট ঋতুবৈশিষ্ট্য দেখা গেছে। এটা একটি গুরুত্বপূর্ণ শিক্ষা: সম্পর্ক সহগ শুধু _সোজা-সারি_ সম্পর্ক মাপতে পারে, তাই ঋতুসংক্রান্ত বা অন্য কোনো ধরণের অ-রৈখিক প্যাটার্ন মিস করতে পারে। ✅ কেন একটি হিটম্যাপ *এবং* বার চার্টের মতো চার্ট দুটোই দেখে সিদ্ধান্ত নেওয়া উচিত কোন কলামগুলো ব্যবহার করবেন? + +### Matplotlib নাকি Seaborn? + +উভয় লাইব্রেরি জানা উচিত: + +- **Matplotlib** প্রতিটি উপাদানের উপর সূক্ষ্ম নিয়ন্ত্রণ দেয় এবং প্রায় সব অন্যান্য পাইথন প্লটিং লাইব্রেরির ভিত্তি। +- **Seaborn** উচ্চ-স্তরের ফাংশন এবং আকর্ষণীয় ডিফল্ট প্রদান করে পরিসংখ্যানমূলক চার্টের জন্য, সরাসরি ডেটাফ্রেমের সাথে কাজ করে, এবং প্রায়শই অনুসন্ধানী ডেটা বিশ্লেষণের জন্য দ্রুত। - এটি একটি আরও কার্যকর ডেটা ভিজ্যুয়ালাইজেশন! এটি মনে হয় যে কুমড়ার সর্বোচ্চ দাম সেপ্টেম্বর এবং অক্টোবর মাসে ঘটে। এটি কি আপনার প্রত্যাশার সাথে মিলে যায়? কেন বা কেন নয়? +একটি সাধারণ কাজের প্রবাহ হলো দ্রুত ডেটা পর্যবেক্ষণের জন্য Seaborn ব্যবহার করা, তারপর বিস্তারিত কাস্টমাইজেশনের জন্য Matplotlib-এ নেমে যাওয়া। --- ## 🚀চ্যালেঞ্জ -Matplotlib যে বিভিন্ন ধরনের ভিজ্যুয়ালাইজেশন অফার করে তা অন্বেষণ করুন। কোন ধরনের ভিজ্যুয়ালাইজেশন রিগ্রেশন সমস্যার জন্য সবচেয়ে উপযুক্ত? +Matplotlib এবং Seaborn যে ধরনের ভিজ্যুয়ালাইজেশন দিয়ে থাকে তা অনুসন্ধান করুন। কোন ধরনের ভিজ্যুয়ালাইজেশন রিগ্রেশন সমস্যার জন্য সবচেয়ে উপযোগী? -## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) +## [পরবর্তী লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) -## পর্যালোচনা এবং স্ব-অধ্যয়ন +## পর্যালোচনা ও স্ব-মূল্যায়ন -ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন উপায় দেখুন। উপলব্ধ বিভিন্ন লাইব্রেরির একটি তালিকা তৈরি করুন এবং নোট করুন কোনটি নির্দিষ্ট ধরনের কাজের জন্য সবচেয়ে ভালো, যেমন 2D ভিজ্যুয়ালাইজেশন বনাম 3D ভিজ্যুয়ালাইজেশন। আপনি কী আবিষ্কার করেন? +ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন উপায় দেখুন। বিভিন্ন লাইব্রেরির একটি তালিকা তৈরি করুন এবং কোনগুলো নির্দিষ্ট ধরনের কাজের জন্য সবচেয়ে ভালো, যেমন ২ডি ভিজ্যুয়ালাইজেশন বনাম ৩ডি ভিজ্যুয়ালাইজেশন। আপনি কি আবিষ্কার করেছেন? ## অ্যাসাইনমেন্ট -[ভিজ্যুয়ালাইজেশন অন্বেষণ](assignment.md) +[ভিজ্যুয়ালাইজেশন অনুসন্ধান](assignment.md) --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/bn/2-Regression/2-Data/solution/notebook.ipynb b/translations/bn/2-Regression/2-Data/solution/notebook.ipynb index 00ca6a736..03b94f572 100644 --- a/translations/bn/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/bn/2-Regression/2-Data/solution/notebook.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## কুমড়ার জন্য লিনিয়ার রিগ্রেশন - পাঠ ২\n" + "## কুমড়োর জন্য রৈখিক রিগ্রেশন - পাঠ ২\n" ] }, { @@ -222,6 +222,7 @@ "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", "\n", "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", @@ -385,18 +386,78 @@ "plt.ylabel(\"Pumpkin Price\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Seaborn দিয়ে ভিজুয়ালাইজেশন\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) Matplotlib এর উপরে নির্মিত এবং সরাসরি ডেটাফ্রেমের সাথে কাজ করে, খুব কম কোডের মাধ্যমে আকর্ষণীয় পরিসংখ্যান প্লট তৈরি করা দ্রুত এবং সহজ করে তোলে।\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### সম্পর্ক প্রদর্শনের জন্য স্ক্যাটার প্লট\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### বন্টন দেখাতে বারের চার্ট\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### সম্পর্ক দেখানোর জন্য হিটম্যাপ\n" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n", + "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**অস্বীকৃতি**: \nএই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।\n" + "---\n\n\n**অস্বীকৃতি**:\nএই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।\n\n" ] } ], @@ -426,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-08-29T23:10:48+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "bn" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/bn/8-Reinforcement/1-QLearning/README.md b/translations/bn/8-Reinforcement/1-QLearning/README.md index 8eb11955c..239fb890e 100644 --- a/translations/bn/8-Reinforcement/1-QLearning/README.md +++ b/translations/bn/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ # রিইনফোর্সমেন্ট লার্নিং এবং কিউ-লার্নিং এর পরিচিতি -![মেশিন লার্নিং-এ রিইনফোর্সমেন্টের সারাংশ একটি স্কেচনোটে](../../../../sketchnotes/ml-reinforcement.png) -> স্কেচনোট: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![মেশিন লার্নিং এ রিইনফোর্সমেন্টের সারাংশ একটি স্কেচনোটে](../../../../translated_images/bn/ml-reinforcement.94024374d63348db.webp) +> স্কেচনোট করেছেন [Tomomi Imura](https://www.twitter.com/girlie_mac) -রিইনফোর্সমেন্ট লার্নিং তিনটি গুরুত্বপূর্ণ ধারণার উপর ভিত্তি করে: এজেন্ট, কিছু স্টেট এবং প্রতিটি স্টেটের জন্য একটি অ্যাকশনের সেট। নির্দিষ্ট স্টেটে একটি অ্যাকশন সম্পাদন করে এজেন্ট একটি পুরস্কার পায়। আবার সুপার মারিও কম্পিউটার গেমটি কল্পনা করুন। আপনি মারিও, আপনি একটি গেম লেভেলে আছেন, একটি ক্লিফের কিনারায় দাঁড়িয়ে। আপনার উপরে একটি কয়েন রয়েছে। আপনি মারিও, একটি গেম লেভেলে, একটি নির্দিষ্ট অবস্থানে ... এটি আপনার স্টেট। ডানদিকে এক ধাপ এগিয়ে যাওয়া (একটি অ্যাকশন) আপনাকে কিনারা থেকে ফেলে দেবে, এবং এটি আপনাকে একটি নিম্ন সংখ্যাসূচক স্কোর দেবে। তবে, জাম্প বাটন চাপলে আপনি একটি পয়েন্ট পাবেন এবং আপনি জীবিত থাকবেন। এটি একটি ইতিবাচক ফলাফল এবং এটি আপনাকে একটি ইতিবাচক সংখ্যাসূচক স্কোর প্রদান করবে। +রিইনফোর্সমেন্ট লার্নিং-এ তিনটি গুরুত্বপূর্ণ ধারণা রয়েছে: এজেন্ট, কিছু স্টেট, এবং প্রতি স্টেটে কিছু ক্রিয়া। নির্দিষ্ট স্টেটে একটি ক্রিয়া সম্পাদনের মাধ্যমে এজেন্টকে একটি পুরস্কার দেওয়া হয়। আবার কম্পিউটার গেম সুপার মারিও কল্পনা করুন। আপনি মারিও, আপনি একটি গেম লেভেলে, একটি ঝরনার পাশে দাঁড়িয়ে আছেন। আপনার উপর একটি কয়েন আছে। আপনি মারিও, একটি গেম লেভেলে, একটি নির্দিষ্ট স্থানে ... এটাই আপনার স্টেট। ডানদিকে এক ধাপ এগিয়ে যাওয়া (একটি ক্রিয়া) আপনাকে ঝরনার উপর দিয়ে নিয়ে যাবে, এবং আপনাকে একটি নিচু সংখ্যামূলক স্কোর দেবে। তবে, জাম্প বোতাম চাপলে আপনি একটি পয়েন্ট স্কোর করবেন এবং জীবিত থাকবেন। এটা একটি ইতিবাচক ফলাফল এবং এটা আপনাকে একটি ইতিবাচক সংখ্যাত্মক স্কোর প্রদান করবে। -রিইনফোর্সমেন্ট লার্নিং এবং একটি সিমুলেটর (গেম) ব্যবহার করে, আপনি গেমটি খেলার পদ্ধতি শিখতে পারেন যাতে আপনি জীবিত থাকতে পারেন এবং যত বেশি পয়েন্ট সম্ভব অর্জন করতে পারেন। +রিইনফোর্সমেন্ট লার্নিং এবং একটি সিমুলেটর (গেম) ব্যবহার করে, আপনি গেমটি কীভাবে খেলতে হয় তা শিখতে পারেন যাতে পুরস্কার সর্বাধিক হয়, যা হলো জীবিত থাকা এবং যতটা সম্ভব বেশি পয়েন্ট স্কোর করা। [![রিইনফোর্সমেন্ট লার্নিং এর পরিচিতি](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 উপরের ছবিতে ক্লিক করে Dmitry এর রিইনফোর্সমেন্ট লার্নিং আলোচনা শুনুন +> 🎥 উপরের ছবিতে ক্লিক করে Dmitry কে রিইনফোর্সমেন্ট লার্নিং নিয়ে আলোচনা করতে শুনুন ## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) -## প্রয়োজনীয়তা এবং সেটআপ +## পূর্বশর্ত এবং সেটআপ -এই পাঠে, আমরা পাইথনে কিছু কোড নিয়ে পরীক্ষা করব। আপনি এই পাঠের জুপিটার নোটবুক কোডটি আপনার কম্পিউটারে বা ক্লাউডে কোথাও চালাতে সক্ষম হওয়া উচিত। +এই পাঠে, আমরা পাইথনে কিছু কোড পরীক্ষা করব। আপনি এই পাঠের জুপিটার नोटবুক কোড চালাতে সক্ষম হওয়া উচিত, আপনার কম্পিউটারে অথবা ক্লাউডে কোথাও। -আপনি [পাঠের নোটবুক](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) খুলতে পারেন এবং এই পাঠটি অনুসরণ করে তৈরি করতে পারেন। +আপনি [পাঠের নোটবুক](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) খুলে এই পাঠের মাধ্যমে এগিয়ে যেতে পারেন। -> **Note:** যদি আপনি ক্লাউড থেকে এই কোডটি খুলছেন, তবে আপনাকে [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ফাইলটিও আনতে হবে, যা নোটবুক কোডে ব্যবহৃত হয়। এটি নোটবুকের একই ডিরেক্টরিতে যোগ করুন। +> **দ্রষ্টব্য:** যদি আপনি কোডটি ক্লাউড থেকে খুলেন, তাহলে আপনাকে নোটবুক কোডে ব্যবহৃত [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ফাইলটিও ডাউনলোড করতে হবে। এটি নোটবুকের একই ডিরেক্টরিতে যোগ করুন। ## পরিচিতি -এই পাঠে, আমরা **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** এর জগৎ অন্বেষণ করব, যা একজন রাশিয়ান সুরকার [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) এর একটি সঙ্গীতময় রূপকথার দ্বারা অনুপ্রাণিত। আমরা **রিইনফোর্সমেন্ট লার্নিং** ব্যবহার করব যাতে পিটার তার পরিবেশ অন্বেষণ করতে পারে, সুস্বাদু আপেল সংগ্রহ করতে পারে এবং নেকড়ের সাথে দেখা এড়াতে পারে। +এই পাঠে, আমরা রুশ সুরকার [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) দ্বারা অনুপ্রাণিত সঙ্গীত নাটক **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** এর জগৎ অন্বেষণ করব। আমরা **রিইনফোর্সমেন্ট লার্নিং** ব্যবহার করব যাতে পিটার তার পরিবেশ অন্বেষণ করতে পারে, সুস্বাদু আপেল সংগ্রহ করতে পারে এবং উলের সাথে দেখা এড়াতে পারে। -**রিইনফোর্সমেন্ট লার্নিং** (RL) একটি শেখার কৌশল যা আমাদের **এজেন্ট** এর **পরিবেশ**-এ একটি অপ্টিমাল আচরণ শেখার অনুমতি দেয় অনেক পরীক্ষা চালিয়ে। এই পরিবেশে একটি এজেন্টের কিছু **লক্ষ্য** থাকা উচিত, যা একটি **পুরস্কার ফাংশন** দ্বারা সংজ্ঞায়িত। +**রিইনফোর্সমেন্ট লার্নিং** (RL) একটি শেখার কৌশল যা আমাদের একটি **এজেন্ট**-এর জন্য একটি অর্থপূর্ণ আচরণ শেখার সুযোগ দেয় কিছু **পরিবেশে** বহু পরীক্ষা চালিয়ে। এই পরিবেশে একজন এজেন্টের একটি **লক্ষ্য** থাকা উচিত, যা একটি **পুরস্কার ফাংশন** দ্বারা সংজ্ঞায়িত। ## পরিবেশ -সরলতার জন্য, পিটারের জগৎকে `width` x `height` আকারের একটি বর্গাকার বোর্ড হিসাবে বিবেচনা করা যাক, যেমন: +সহজতার জন্য, আমরা ধরব পিটার এর জগত একটি `width` x `height` মাপের স্কুয়ার বোর্ড, এভাবে: -![পিটারের পরিবেশ](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![পিটারের পরিবেশ](../../../../translated_images/bn/environment.40ba3cb66256c93f.webp) এই বোর্ডের প্রতিটি সেল হতে পারে: -* **মাটি**, যেখানে পিটার এবং অন্যান্য প্রাণীরা হাঁটতে পারে। -* **পানি**, যেখানে হাঁটা সম্ভব নয়। -* একটি **গাছ** বা **ঘাস**, যেখানে আপনি বিশ্রাম নিতে পারেন। -* একটি **আপেল**, যা পিটার খুঁজে পেতে পছন্দ করবে নিজেকে খাওয়ানোর জন্য। -* একটি **নেকড়ে**, যা বিপজ্জনক এবং এড়ানো উচিত। +* **মাটি**, যেখানে পিটার এবং অন্য প্রাণীরা হাঁটতে পারে। +* **পানি**, যেখানে আপনি অবশ্যই হাঁটতে পারবেন না। +* একটি **গাছ** অথবা **ঘাস**, যা বিশ্রামের স্থান। +* একটি **আপেল**, যা পিটার খুঁজে পেলে নিজেকে খাওয়াতে পছন্দ করবে। +* একটি **বাঘ**, যা বিপজ্জনক এবং এড়ানো উচিত। -একটি পৃথক পাইথন মডিউল, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), এই পরিবেশের সাথে কাজ করার কোড ধারণ করে। যেহেতু এই কোডটি আমাদের ধারণাগুলি বোঝার জন্য গুরুত্বপূর্ণ নয়, আমরা মডিউলটি আমদানি করব এবং নমুনা বোর্ড তৈরি করতে এটি ব্যবহার করব (কোড ব্লক 1): +একটি পৃথক পাইথন মডিউল আছে, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), যা এই পরিবেশের সাথে কাজ করার কোড ধারণ করে। কারণ এই কোড আমাদের ধারণাগুলি বোঝার জন্য গুরুত্বপূর্ণ নয়, আমরা মডিউলটি ইমপোর্ট করে নমুনা বোর্ড তৈরি করব (কোড ব্লক ১): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -এই কোডটি পরিবেশের একটি ছবি মুদ্রণ করবে যা উপরের ছবির মতো। +এই কোডটি উপরের পরিবেশের একটি ছবি প্রিন্ট করবে। -## অ্যাকশন এবং পলিসি +## ক্রিয়া এবং নীতি -আমাদের উদাহরণে, পিটারের লক্ষ্য হবে একটি আপেল খুঁজে পাওয়া, নেকড়ে এবং অন্যান্য বাধা এড়ানো। এটি করতে, সে মূলত হাঁটতে পারে যতক্ষণ না সে একটি আপেল খুঁজে পায়। +আমাদের উদাহরণে, পিটার এর লক্ষ্য একটি আপেল খুঁজে পাওয়া, তবে উল এবং অন্যান্য বাধা এড়ানো। এজন্য সে মূলত হাঁটতে পারে যতক্ষণ না সে আপেল পায়। -তাই, যেকোনো অবস্থানে, সে নিম্নলিখিত অ্যাকশনগুলির মধ্যে একটি বেছে নিতে পারে: উপরে, নিচে, বামে এবং ডানে। +তাই, যেকোন স্থানে সে নিচের যেকোন একটি ক্রিয়া বেছে নিতে পারে: উপরে, নিচে, বামে, এবং ডানে। -আমরা এই অ্যাকশনগুলিকে একটি ডিকশনারি হিসাবে সংজ্ঞায়িত করব এবং সেগুলিকে সংশ্লিষ্ট কোঅর্ডিনেট পরিবর্তনের জোড়ার সাথে ম্যাপ করব। উদাহরণস্বরূপ, ডানে (`R`) যাওয়া একটি জোড়া `(1,0)` এর সাথে সম্পর্কিত হবে। (কোড ব্লক 2): +আমরা এই ক্রিয়াগুলোকে একটি অভিধান হিসেবে সংজ্ঞায়িত করব, এবং তাদের সংশ্লিষ্ট স্থানাঙ্ক পরিবর্তনের সাথে যুক্ত করব। উদাহরণস্বরূপ, ডানদিকে যাওয়া (`R`) হবে একটি জোড়া `(1,0)`। (কোড ব্লক ২): ```python actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) } action_idx = { a : i for i,a in enumerate(actions.keys()) } ``` -এই পরিস্থিতির কৌশল এবং লক্ষ্য সংক্ষেপে: +সংক্ষেপে, এই পরিস্থিতির কৌশল এবং লক্ষ্য নিম্নরূপ: -- **কৌশল**, আমাদের এজেন্ট (পিটার) এর **পলিসি** দ্বারা সংজ্ঞায়িত। একটি পলিসি একটি ফাংশন যা যেকোনো প্রদত্ত স্টেটে অ্যাকশন প্রদান করে। আমাদের ক্ষেত্রে, সমস্যার স্টেট বোর্ড দ্বারা প্রতিনিধিত্ব করা হয়, যার মধ্যে প্লেয়ারের বর্তমান অবস্থান রয়েছে। +- **কৌশল**, আমাদের এজেন্ট (পিটার) দ্বারা সংজ্ঞায়িত একটি তথাকথিত **নীতির** দ্বারা নির্ধারিত। একটি নীতি একটি ফাংশন যা যেকোন স্টেটে ক্রিয়া নির্ধারণ করে। আমাদের ক্ষেত্রে, সমস্যার স্টেট বোর্ড দ্বারা উপস্থাপিত, যার মধ্যে খেলোয়াড়ের বর্তমান অবস্থান অন্তর্ভুক্ত। -- **লক্ষ্য**, রিইনফোর্সমেন্ট লার্নিং এর লক্ষ্য হল শেষ পর্যন্ত একটি ভালো পলিসি শেখা যা আমাদের সমস্যাটি দক্ষতার সাথে সমাধান করতে সাহায্য করবে। তবে, একটি বেসলাইন হিসাবে, আসুন সবচেয়ে সহজ পলিসি বিবেচনা করি, যাকে **র‍্যান্ডম ওয়াক** বলা হয়। +- **লক্ষ্য**, রিইনফোর্সমেন্ট লার্নিং এর উদ্দেশ্য হলো এমন একটি ভালো নীতি শেখা যা আমাদের সমস্যা দক্ষতার সাথে সমাধান করতে সাহায্য করে। তবে, একটি বেসলাইন হিসাবে, আমরা সবচেয়ে সহজ নীতি **র্যান্ডম ওয়াক** বিবেচনা করব। -## র‍্যান্ডম ওয়াক +## র্যান্ডম ওয়াক -প্রথমে আসুন আমাদের সমস্যাটি র‍্যান্ডম ওয়াক কৌশল বাস্তবায়ন করে সমাধান করি। র‍্যান্ডম ওয়াকের মাধ্যমে, আমরা অনুমোদিত অ্যাকশনগুলির মধ্যে থেকে পরবর্তী অ্যাকশনটি এলোমেলোভাবে বেছে নেব, যতক্ষণ না আমরা আপেলটি খুঁজে পাই (কোড ব্লক 3)। +প্রথমে আমরা একটি র্যান্ডম ওয়াক কৌশল বাস্তবায়ন করে আমাদের সমস্যা সমাধান করব। র্যান্ডম ওয়াকে, আমরা অনুমোদিত ক্রিয়াগুলোর মধ্যে থেকে এলোমেলোভাবে পরবর্তী ক্রিয়া নির্বাচন করব যতক্ষণ না আমরা আপেল পৌঁছাই (কোড ব্লক ৩)। -1. নিচের কোড দিয়ে র‍্যান্ডম ওয়াক বাস্তবায়ন করুন: +1. নিচের কোড দিয়ে র্যান্ডম ওয়াক বাস্তবায়ন করুন: ```python def random_policy(m): return random.choice(list(actions)) def walk(m,policy,start_position=None): - n = 0 # number of steps - # set initial position + n = 0 # ধাপের সংখ্যা + # প্রাথমিক অবস্থান সেট করুন if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # সাফল্য! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # নেকড়ে খেয়ে ফেলেছে অথবা ডুবে গেছে while True: a = actions[policy(m)] new_pos = m.move_pos(m.human,a) if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: - m.move(a) # do the actual move + m.move(a) # আসল স্থানান্তর করুন break n+=1 walk(m,random_policy) ``` - `walk` এর কলটি সংশ্লিষ্ট পথের দৈর্ঘ্য ফেরত দেবে, যা এক রান থেকে অন্য রানে পরিবর্তিত হতে পারে। + `walk` কলের ফলাফল হবে সংশ্লিষ্ট পথের দৈর্ঘ্য, যা একবারের রান থেকে অন্য রানের মধ্যে পরিবর্তিত হতে পারে। -1. একাধিকবার (ধরা যাক, 100 বার) ওয়াক পরীক্ষা চালান এবং ফলাফল পরিসংখ্যান মুদ্রণ করুন (কোড ব্লক 4): +1. হেঁটার পরীক্ষা অনেকবার চালান (ধরা যাক, ১০০ বার), এবং ফলাফল পরিসংখ্যান প্রিন্ট করুন (কোড ব্লক ৪): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) } print_statistics(random_policy) ``` - লক্ষ্য করুন যে পথের গড় দৈর্ঘ্য প্রায় 30-40 ধাপ, যা বেশ দীর্ঘ, কারণ আপেলের নিকটতম দূরত্বের গড় প্রায় 5-6 ধাপ। + লক্ষ্য করুন যে পথের গড় দৈর্ঘ্য প্রায় ৩০-৪০ ধাপ, যা বেশ বড়, কারণ নিকটস্থ আপেলের গড় দূরত্ব প্রায় ৫-৬ ধাপ। - আপনি পিটারের র‍্যান্ডম ওয়াক চলাকালীন গতিবিধি দেখতে পারেন: + আপনি পিটারের চলাফেরার র্যান্ডম ওয়াক চলাকালীন দেখতে পারেন: - ![পিটারের র‍্যান্ডম ওয়াক](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![পিটারের র্যান্ডম ওয়াক](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## পুরস্কার ফাংশন -আমাদের পলিসিকে আরও বুদ্ধিমান করতে, আমাদের বুঝতে হবে কোন পদক্ষেপগুলি অন্যদের তুলনায় "ভালো"। এটি করতে, আমাদের লক্ষ্য সংজ্ঞায়িত করতে হবে। +আমাদের নীতিকে আরো বুদ্ধিমান করতে, আমাদের বুঝতে হবে কোন চলাচল "অন্যের চেয়ে ভালো"। এ জন্য, আমাদের লক্ষ্য সংজ্ঞায়িত করতে হবে। -লক্ষ্যটি একটি **পুরস্কার ফাংশন** এর মাধ্যমে সংজ্ঞায়িত করা যেতে পারে, যা প্রতিটি স্টেটের জন্য কিছু স্কোর মান ফেরত দেবে। সংখ্যাটি যত বেশি হবে, পুরস্কার ফাংশন তত ভালো। (কোড ব্লক 5) +লক্ষ্যকে একটি **পুরস্কার ফাংশন** এর মাধ্যমে সংজ্ঞায়িত করা যায়, যা প্রতি স্টেটে একটি স্কোর মান প্রদান করবে। মান যত বেশি, পুরস্কার ফাংশন তত ভাল। (কোড ব্লক ৫) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -পুরস্কার ফাংশন সম্পর্কে একটি আকর্ষণীয় বিষয় হল যে বেশিরভাগ ক্ষেত্রে, *আমরা শুধুমাত্র গেমের শেষে একটি উল্লেখযোগ্য পুরস্কার পাই*। এর মানে হল যে আমাদের অ্যালগরিদমটি "ভালো" পদক্ষেপগুলি মনে রাখতে হবে যা শেষ পর্যন্ত একটি ইতিবাচক পুরস্কার দেয় এবং তাদের গুরুত্ব বাড়াতে হবে। একইভাবে, সমস্ত পদক্ষেপ যা খারাপ ফলাফলের দিকে নিয়ে যায় তা নিরুৎসাহিত করা উচিত। +পুরস্কার ফাংশন নিয়ে একটি আকর্ষণীয় দিক হলো অধিকাংশ ক্ষেত্রে, *আমাদেরকে গেমের শেষে একটি গুরুত্বপূর্ণ পুরস্কার দেওয়া হয়*। এর মানে হলো আমাদের অ্যালগরিদমকে "ভালো" ধাপ মনে রাখতে হবে যা গেম শেষে ইতিবাচক পুরস্কারে নিয়ে যায়, এবং তাদের গুরুত্ব বাড়াতে হবে। একইভাবে, সব ভুল ধাপকে হ্রাস করতে হবে। ## কিউ-লার্নিং -আমরা এখানে যে অ্যালগরিদমটি আলোচনা করব তাকে **কিউ-লার্নিং** বলা হয়। এই অ্যালগরিদমে, পলিসি একটি ফাংশন (বা একটি ডেটা স্ট্রাকচার) দ্বারা সংজ্ঞায়িত করা হয়, যাকে **কিউ-টেবিল** বলা হয়। এটি একটি প্রদত্ত স্টেটে প্রতিটি অ্যাকশনের "ভালোত্ব" রেকর্ড করে। +আমরা যে অ্যালগরিদমটি আলোচনা করব তা হল **কিউ-লার্নিং**। এই অ্যালগরিদমে, নীতি একটি ফাংশন (বা ডেটা স্ট্রাকচার) দ্বারা সংজ্ঞায়িত যা **কিউ-টেবিল** নামে পরিচিত। এটি প্রতিটি স্টেটে প্রতিটি ক্রিয়ার "মধ্যস্থতা" রেকর্ড করে। -এটি একটি কিউ-টেবিল বলা হয় কারণ এটি প্রায়শই একটি টেবিল বা মাল্টি-ডাইমেনশনাল অ্যারে হিসাবে উপস্থাপন করা সুবিধাজনক। যেহেতু আমাদের বোর্ডের মাত্রা `width` x `height`, আমরা কিউ-টেবিলকে একটি numpy অ্যারে ব্যবহার করে উপস্থাপন করতে পারি যার আকার `width` x `height` x `len(actions)`: (কোড ব্লক 6) +এটা কিউ-টেবিল বলা হয় কারণ এটি প্রায়শই একটি টেবিল বা বহু-মাত্রিক অ্যারে হিসেবে উপস্থাপন করা সুবিধাজনক। আমাদের বোর্ডের মাত্রা `width` x `height` হওয়ায়, আমরা একটি numpy অ্যারে ব্যবহার করে কিউ-টেবিল উপস্থাপন করতে পারি যার আকার `width` x `height` x `len(actions)`: (কোড ব্লক ৬) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -লক্ষ্য করুন যে আমরা কিউ-টেবিলের সমস্ত মান সমান মান দিয়ে আরম্ভ করি, আমাদের ক্ষেত্রে - 0.25। এটি "র‍্যান্ডম ওয়াক" পলিসির সাথে সম্পর্কিত, কারণ প্রতিটি স্টেটে সমস্ত পদক্ষেপ সমানভাবে ভালো। আমরা কিউ-টেবিলকে বোর্ডে চিত্রিত করতে `plot` ফাংশনে পাস করতে পারি: `m.plot(Q)`। +লক্ষ্য করুন, আমরা কিউ-টেবিলের সব মান একরকম দিয়ে প্রাথমিক করিনি, আমাদের ক্ষেত্রে - 0.25। এটা "র্যান্ডম ওয়াক" নীতির সমতুল্য, কারণ প্রতিটি স্টেটে সব ক্রিয়াই সমান ভাল। আমরা `plot` ফাংশনে কিউ-টেবিল পাস করব যাতে বোর্ডে টেবিল ভিজ্যুয়ালাইজ করা যায়: `m.plot(Q)`. -![পিটারের পরিবেশ](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![পিটারের পরিবেশ](../../../../translated_images/bn/env_init.04e8f26d2d60089e.webp) -প্রতিটি সেলের কেন্দ্রে একটি "তীর" রয়েছে যা গতির পছন্দসই দিক নির্দেশ করে। যেহেতু সমস্ত দিক সমান, একটি বিন্দু প্রদর্শিত হয়। +প্রতিটি সেলের কেন্দ্রবিন্দুতে একটি "তীর" থাকে যা পছন্দসই চলাচলের দিক নির্দেশ করে। যেহেতু সব দিক সমান, একটি বিন্দু প্রদর্শিত হয়। -এখন আমাদের সিমুলেশন চালাতে হবে, আমাদের পরিবেশ অন্বেষণ করতে হবে এবং কিউ-টেবিল মানগুলির একটি ভালো বন্টন শিখতে হবে, যা আমাদের আপেলটি খুঁজে পেতে অনেক দ্রুত সাহায্য করবে। +এখন আমাদের সিমুলেশন চালাতে হবে, পরিবেশ অন্বেষণ করতে হবে, এবং কিউ-টেবিল মানের একটি উন্নত বন্টন শিখতে হবে, যা আপেলের পথে দ্রুত পৌঁছানোর সুযোগ দেবে। -## কিউ-লার্নিং এর মূল: বেলম্যান সমীকরণ +## কিউ-লার্নিং এর সারমর্ম: বেলম্যান সমীকরণ -একবার আমরা চলতে শুরু করলে, প্রতিটি অ্যাকশনের একটি সংশ্লিষ্ট পুরস্কার থাকবে, অর্থাৎ আমরা তাত্ত্বিকভাবে সর্বোচ্চ তাৎক্ষণিক পুরস্কারের উপর ভিত্তি করে পরবর্তী অ্যাকশনটি নির্বাচন করতে পারি। তবে, বেশিরভাগ স্টেটে, পদক্ষেপটি আমাদের আপেল খুঁজে পাওয়ার লক্ষ্য অর্জন করবে না, এবং তাই আমরা তাৎক্ষণিকভাবে সিদ্ধান্ত নিতে পারি না কোন দিকটি ভালো। +যখন আমরা চলতে শুরু করব, প্রতিটি ক্রিয়ার জন্য একটি সংশ্লিষ্ট পুরস্কার থাকবে, অর্থাৎ আমরা তাত্ক্ষণিক পুরস্কারের সর্বোচ্চ ভিত্তিতে পরবর্তী ক্রিয়া নির্বাচন করতে পারব। তবে বেশিরভাগ স্টেটে, চলাচল আমাদের লক্ষ্য — আপেল পৌঁছানো — অর্জন করবে না, তাই আমরা সাথে সাথেই সিদ্ধান্ত নিতে পারব না কোন দিক ভালো। -> মনে রাখবেন যে তাৎক্ষণিক ফলাফলটি গুরুত্বপূর্ণ নয়, বরং চূড়ান্ত ফলাফলটি গুরুত্বপূর্ণ, যা আমরা সিমুলেশনের শেষে অর্জন করব। +> মনে রাখবেন তাত্ক্ষণিক ফলাফল নয় যে গুরুত্বপূর্ণ, বরং চূড়ান্ত ফলাফল যা আমরা সিমুলেশন শেষে পাবো। -এই বিলম্বিত পুরস্কারটি বিবেচনা করার জন্য, আমাদের **[ডাইনামিক প্রোগ্রামিং](https://en.wikipedia.org/wiki/Dynamic_programming)** এর নীতিগুলি ব্যবহার করতে হবে, যা আমাদের সমস্যাটি পুনরাবৃত্তিমূলকভাবে চিন্তা করতে দেয়। +এই বিলম্বিত পুরস্কার বিবেচনার জন্য, আমাদের **[ডাইনামিক প্রোগ্রামিং](https://en.wikipedia.org/wiki/Dynamic_programming)** এর নীতিমালা ব্যবহার করতে হবে, যা আমাদের সমস্যাটিকে রিকার্সিভ ভাবতে দেয়। -ধরা যাক আমরা এখন স্টেট *s* এ আছি, এবং আমরা পরবর্তী স্টেট *s'* এ যেতে চাই। এটি করে, আমরা তাৎক্ষণিক পুরস্কার *r(s,a)* পাব, যা পুরস্কার ফাংশন দ্বারা সংজ্ঞায়িত, এবং কিছু ভবিষ্যৎ পুরস্কার। যদি আমরা ধরে নিই যে আমাদের কিউ-টেবিল প্রতিটি অ্যাকশনের "আকর্ষণীয়তা" সঠিকভাবে প্রতিফলিত করে, তাহলে স্টেট *s'* এ আমরা একটি অ্যাকশন *a'* বেছে নেব যা *Q(s',a')* এর সর্বাধিক মানের সাথে সম্পর্কিত। তাই, স্টেট *s* এ আমরা যে সর্বোত্তম সম্ভাব্য ভবিষ্যৎ পুরস্কার পেতে পারি তা হবে `max` +ধরুন আমরা এখন স্টেট *s* এ আছি, এবং পরবর্তী স্টেট *s'* তে যেতে চাই। তখন আমরা তাত্ক্ষণিক পুরস্কার *r(s,a)* পাব, যা পুরস্কার ফাংশন দ্বারা নির্ধারিত, এবং ভবিষ্যতের কিছু পুরস্কার পাব। যদি আমরা ধরি আমাদের কিউ-টেবিল প্রতিটি ক্রিয়ার আকর্ষণীয়তা সঠিকভাবে প্রতিফলিত করে, তাহলে স্টেট *s'* এ আমরা এমন একটি ক্রিয়া *a* বাছাই করব যার মান সর্বোচ্চ *Q(s',a')*। অতএব, স্টেট *s* এ সর্বোত্তম সম্ভব ভবিষ্যত পুরস্কার হবে `max`a'*Q(s',a')* (এই সর্বোচ্চ সকল সম্ভাব্য ক্রিয়া *a'* এর উপর গণনা করা হবে স্টেট *s'* এ)। -## নীতিমালা পরীক্ষা করা +এটি দেয় **বেলম্যান ফর্মুলা** কিউ-টেবিল এর মান গণনার জন্য স্টেট *s*, ক্রিয়া *a* দেওয়া হলে: -Q-Table-এ প্রতিটি অবস্থায় প্রতিটি ক্রিয়ার "আকর্ষণীয়তা" তালিকাভুক্ত করা থাকে, তাই আমাদের জগতে দক্ষ নেভিগেশনের জন্য এটি ব্যবহার করা বেশ সহজ। সহজতম ক্ষেত্রে, আমরা Q-Table-এর সর্বোচ্চ মানের সাথে সম্পর্কিত ক্রিয়াটি নির্বাচন করতে পারি: (কোড ব্লক 9) + + +এখানে γ হল তথাকথিত **ডিসকাউন্ট ফ্যাক্টর** যা নির্ধারণ করে আপনি বর্তমান পুরস্কারের তুলনায় ভবিষ্যৎ পুরস্কারের কতটা গুরুত্ব দেবেন। + +## শেখার অ্যালগরিদম + +উপরের সমীকরণ অনুযায়ী, আমরা এখন আমাদের শেখার অ্যালগরিদমের ছদ্ম-কোড লিখতে পারি: + +* সব স্টেট এবং ক্রিয়ার জন্য সমান সংখ্যায় Q-টেবিল Q শুরু করুন +* শেখার হার α ← 1 সেট করুন +* বহুবার সিমুলেশন পুনরাবৃত্তি করুন + 1. এলোমেলো অবস্থান থেকে শুরু করুন + 1. পুনরাবৃত্তি করুন + 1. স্টেট *s* এ একটি ক্রিয়া *a* নির্বাচন করুন + 2. নতুন স্টেট *s'* এ যেতে ক্রিয়া সম্পাদন করুন + 3. গেমের শেষ শর্ত পাওয়া গেলে, অথবা মোট পুরস্কার খুব কম হলে সিমুলেশন বন্ধ করুন + 4. নতুন স্টেটে পুরস্কার *r* গুণিত করুন + 5. বেলম্যান সমীকরণ অনুযায়ী Q ফাংশন আপডেট করুন: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. মোট পুরস্কার আপডেট করুন এবং α হ্রাস করুন। + +## এক্সপ্লয়েট বনাম এক্সপ্লোর + +উপরের অ্যালগরিদমে, আমরা বিস্তারিত উল্লেখ করিনি কীভাবে ২.১ ধাপে ক্রিয়া নির্বাচন করা উচিত। যদি আপনি এলোমেলোভাবে ক্রিয়া নির্বাচন করেন, তাহলে আপনি এলোমেলোভাবে পরিবেশ অন্বেষণ করবেন, এবং বেশীরভাগ সময় মরতে পারেন এবং এমন এলাকা অন্বেষণ করবেন যেখানে আপনি সাধারণত যাবেন না। একটি বিকল্প হলো ইতিমধ্যেই পরিচিত কিউ-টেবিল মান ব্যবহার করে সর্বোত্তম ক্রিয়া বেছে নেওয়া (যার মান বেশি) স্টেট *s* এ। এই পদ্ধতি পরিবেশের অন্য স্টেটগুলি অন্বেষণ না করায় হয়তো আমরা সেরা সমাধান না পেতে পারি। + +তাই, সবচেয়ে ভালো পদ্ধতি হল অন্বেষণ এবং শোষণের মধ্যে ভারসাম্য রাখা। এটি করা যায় স্টেট *s* এ এমনভাবে ক্রিয়া নির্বাচন করে যার সম্ভাবনা কিউ-টেবিল মানের সমানুপাতিক। শুরুতে, যখন সব মান সমান, এটি এলোমেলো নির্বাচনের মতো হবে, কিন্তু পরিবেশ সম্পর্কে আমরা যেমনই শিখব, তেমনই আমরা সম্ভবত সর্বোত্তম পথ অনুসরণ করব তবে মাঝে মাঝে এজেন্টকে অন্বেষণ করতে দেব। + +## পাইথন বাস্তবায়ন + +এখন আমরা শেখার অ্যালগরিদম বাস্তবায়ন করতে প্রস্তুত। এর আগে, আমাদের একটি ফাংশন দরকার যা কিউ-টেবিলের যেকোন সংখ্যাকে সংশ্লিষ্ট ক্রিয়াগুলোর সম্ভাবনার ভেক্টরে রূপান্তর করবে। + +1. একটি ফাংশন `probs()` তৈরি করুন: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + আমরা মূল ভেক্টরে কিছু `eps` যোগ করি যাতে প্রাথমিক অবস্থায়, যখন সব উপাদান সমান, ভাগফল 0 হওয়া এড়ানো যায়। + +এই শেখার অ্যালগরিদম ৫০০০ পরীক্ষার মাধ্যমে চালান, যাকে **ইপোক** বলা হয়: (কোড ব্লক ৮) +```python + for epoch in range(5000): + + # প্রাথমিক পয়েন্ট নির্বাচন করুন + m.random_start() + + # যাত্রা শুরু করুন + n=0 + cum_reward = 0 + while True: + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + dpos = actions[a] + m.move(dpos,check_correctness=False) # আমরা খেলোয়াড়কে বোর্ডের বাইরে চলার অনুমতি দিই, যা পর্ব শেষ করে দেয় + r = reward(m) + cum_reward += r + if r==end_reward or cum_reward < -1000: + lpath.append(n) + break + alpha = np.exp(-n / 10e5) + gamma = 0.5 + ai = action_idx[a] + Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max()) + n+=1 +``` + +অ্যালগরিদম চালানোর পর, কিউ-টেবিল এমন মান দিয়ে আপডেট হবে যা প্রতিটি ধাপে বিভিন্ন ক্রিয়ার আকর্ষণীয়তা সংজ্ঞায়িত করে। আমরা প্রতিটি সেলে একটি ভেক্টর প্লট করে কিউ-টেবিল ভিজ্যুয়ালাইজ করতে পারি যা পছন্দসই চলাচলের দিক নির্দেশ করবে। সহজতার জন্য, আমরা তীরের পরিবর্তে একটি ছোট বৃত্ত আঁকব। + + + +## নীতি যাচাই + +যেহেতু কিউ-টেবিল প্রতিটি স্টেটে প্রতিটি ক্রিয়ার "আকর্ষণীয়তা" তালিকাভুক্ত করে, তাই এটি ব্যবহার করে আমাদের পৃথিবীতে কার্যকর নেভিগেশন সংজ্ঞায়িত করা সহজ। সবচেয়ে সাধারণ ক্ষেত্রে, আমরা সর্বোচ্চ কিউ-টেবিল মানের সাথে ক্রিয়া নির্বাচন করতে পারি: (কোড ব্লক ৯) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> উপরের কোডটি কয়েকবার চেষ্টা করলে, আপনি লক্ষ্য করতে পারেন যে এটি কখনও কখনও "হ্যাং" করে, এবং আপনাকে নোটবুকে STOP বোতাম চাপ দিয়ে এটি বন্ধ করতে হয়। এটি ঘটে কারণ এমন পরিস্থিতি হতে পারে যেখানে দুটি অবস্থান একে অপরকে সর্বোত্তম Q-Value-এর দিক থেকে নির্দেশ করে, যার ফলে এজেন্টটি সেই অবস্থানগুলির মধ্যে অনির্দিষ্টভাবে চলতে থাকে। + +> উপরোক্ত কোডটি কয়েকবার চেষ্টা করলে, আপনি লক্ষ্য করতে পারেন যে কখনও কখনও এটি "হ্যাং" হয়ে যায়, এবং আপনাকে নোটবুকে STOP বোতামটি চাপতে হয় এটি থামানোর জন্য। এটি ঘটে কারণ এমন পরিস্থিতি হতে পারে যেখানে দুটি অবস্থা পরস্পরের প্রতি অপ্টিমাল Q-মানের দিক থেকে "ইঙ্গিত" করে, এমনক্ষেত্রে এজেন্ট সেই অবস্থাগুলোর মধ্যে অনির্দিষ্টকালের জন্য চলাচল করতে থাকে। ## 🚀চ্যালেঞ্জ -> **কাজ ১:** `walk` ফাংশনটি সংশোধন করুন যাতে পথের সর্বাধিক দৈর্ঘ্য একটি নির্দিষ্ট সংখ্যক ধাপে (যেমন, ১০০) সীমাবদ্ধ থাকে এবং উপরের কোডটি মাঝে মাঝে এই মানটি ফেরত দেয়। +> **টাস্ক ১:** `walk` ফাংশনটি পরিবর্তন করুন যাতে পথের সর্বোচ্চ দৈর্ঘ্য নির্দিষ্ট সংখ্যক ধাপ দ্বারা সীমাবদ্ধ থাকে (ধরা যাক, ১০০), এবং উপরের কোডটি মাঝে মাঝে এই মানটি ফেরত দেয় তা পর্যবেক্ষণ করুন। -> **কাজ ২:** `walk` ফাংশনটি সংশোধন করুন যাতে এটি পূর্বে যেখানে ছিল সেই জায়গাগুলিতে ফিরে না যায়। এটি `walk`-কে লুপিং থেকে রোধ করবে, তবে এজেন্টটি এখনও এমন একটি স্থানে "ফাঁদে" পড়তে পারে যেখান থেকে এটি পালাতে অক্ষম। +> **টাস্ক ২:** `walk` ফাংশনটি পরিবর্তন করুন যাতে এটি পূর্বে যেসব স্থানে গিয়েছিল সেগুলোতে ফিরে না যায়। এটি `walk` এর লুপিং প্রতিরোধ করবে, তবে, এজেন্ট তখনও এমন একটি জায়গায় ফসকে থাকতে পারে যেখানে থেকে সে পালাতে পারবে না। ## নেভিগেশন -একটি ভালো নেভিগেশন নীতিমালা হবে সেই নীতিমালা যা আমরা প্রশিক্ষণের সময় ব্যবহার করেছি, যা শোষণ এবং অনুসন্ধানের সংমিশ্রণ। এই নীতিমালায়, আমরা Q-Table-এ মানগুলির আনুপাতিক সম্ভাবনার ভিত্তিতে প্রতিটি ক্রিয়া নির্বাচন করব। এই কৌশলটি এখনও এজেন্টকে পূর্বে অন্বেষণ করা অবস্থানে ফিরে যেতে পারে, তবে, নিচের কোড থেকে আপনি দেখতে পারেন, এটি কাঙ্ক্ষিত অবস্থানে খুব ছোট গড় পথের দৈর্ঘ্য প্রদান করে (মনে রাখুন `print_statistics` ১০০ বার সিমুলেশন চালায়): (কোড ব্লক 10) +একটি উন্নত নেভিগেশন নীতি হবে যে নীতিটি আমরা প্রশিক্ষণের সময় ব্যবহার করেছি, যা এক্সপ্লোইটেশন এবং এক্সপ্লোরেশনের সমন্বয়। এই নীতিতে, আমরা Q-টেবিলের মান অনুযায়ী নির্দিষ্ট সম্ভাবনার সাথে প্রতিটি কর্ম নির্বাচন করব। এই কৌশলটি এখনও এজেন্টকে এমন একটি অবস্থানে ফিরিয়ে নিয়ে যেতে পারে যা সে পূর্বে অন্বেষণ করেছে, কিন্তু, নিচের কোড থেকে দেখা যাচ্ছে, এটি কাঙ্ক্ষিত অবস্থানে খুব ছোট গড় পথের ফলাফল দেয় (মনে রাখবেন `print_statistics` ১০০ বার সিমুলেশন চালায়): (কোড ব্লক ১০) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -এই কোডটি চালানোর পরে, আপনি আগের তুলনায় অনেক ছোট গড় পথের দৈর্ঘ্য পাবেন, যা ৩-৬ এর মধ্যে থাকবে। +এই কোড চালানোর পর, আপনার আগের তুলনায় অনেক ছোট গড় পথ দৈর্ঘ্য পাওয়া উচিত, যে পরিসর ৩-৬ এর মধ্যে থাকবে। + +## শেখার প্রক্রিয়া তদন্ত -## শেখার প্রক্রিয়া তদন্ত করা +যেমন আমরা উল্লেখ করেছি, শেখার প্রক্রিয়াটি হচ্ছে সমস্যা ক্ষেত্রের গঠন সম্পর্কে প্রাপ্ত জ্ঞানের অনুসন্ধান এবং ব্যবহার এর মধ্যে একটি সুষম অবস্থা। আমরা দেখেছি শেখার ফলাফল (এজেন্টকে একটি ছোট পথ খুঁজে পেতে সাহায্য করার ক্ষমতা) উন্নত হয়েছে, তবে শিক্ষণ প্রক্রিয়ার সময় গড় পথের দৈর্ঘ্য কীভাবে পরিবর্তিত হয় তাও পর্যবেক্ষণ করা আকর্ষণীয়: -যেমন আমরা উল্লেখ করেছি, শেখার প্রক্রিয়া হলো অনুসন্ধান এবং সমস্যার স্থান সম্পর্কে অর্জিত জ্ঞান অন্বেষণের মধ্যে একটি ভারসাম্য। আমরা দেখেছি যে শেখার ফলাফল (এজেন্টকে লক্ষ্য অর্জনের জন্য একটি ছোট পথ খুঁজে পেতে সাহায্য করার ক্ষমতা) উন্নত হয়েছে, তবে শেখার প্রক্রিয়ার সময় গড় পথের দৈর্ঘ্য কীভাবে আচরণ করে তা পর্যবেক্ষণ করাও আকর্ষণীয়: + -## শেখার সারসংক্ষেপ: +শিক্ষাগুলো সংক্ষেপে হল: -- **গড় পথের দৈর্ঘ্য বৃদ্ধি পায়**। প্রথমে, গড় পথের দৈর্ঘ্য বৃদ্ধি পায়। এর কারণ হতে পারে যে পরিবেশ সম্পর্কে কিছুই না জানার কারণে আমরা খারাপ অবস্থায়, যেমন জল বা নেকড়ের ফাঁদে পড়ে যাই। যখন আমরা আরও শিখি এবং এই জ্ঞান ব্যবহার করতে শুরু করি, তখন আমরা পরিবেশটি দীর্ঘ সময় ধরে অন্বেষণ করতে পারি, তবে এখনও আপেলগুলির অবস্থান সম্পর্কে খুব ভালোভাবে জানি না। +- **গড় পথের দৈর্ঘ্য বৃদ্ধি পায়**। প্রথম দিকে দেখা যাচ্ছে যে গড় পথের দৈর্ঘ্য বৃদ্ধি পায়। সম্ভবত এর কারণ হল যখন পরিবেশ সম্পর্কে আমরা কিছুই জানি না, তখন আমরা খারাপ অবস্থায়, জলের মধ্যে বা বাঘের কাছে আটকে যেতে পারি। যতই আমরা শিখি এবং এই জ্ঞান ব্যবহার শুরু করি, আমরা পরিবেশকে দীর্ঘ সময় ধরে অনুসন্ধান করতে পারি, তবে আপেল কোথায় আছে সেটা এখনও আমরা খুব ভাল জানি না। -- **পথের দৈর্ঘ্য কমে যায়, যত বেশি শিখি**। একবার আমরা যথেষ্ট শিখে গেলে, এজেন্টের জন্য লক্ষ্য অর্জন করা সহজ হয়ে যায়, এবং পথের দৈর্ঘ্য কমতে শুরু করে। তবে, আমরা এখনও অনুসন্ধানের জন্য উন্মুক্ত থাকি, তাই আমরা প্রায়ই সেরা পথ থেকে সরে যাই এবং নতুন বিকল্পগুলি অন্বেষণ করি, যা পথকে আদর্শের চেয়ে দীর্ঘ করে তোলে। +- **শেখার সাথে সাথে পথের দৈর্ঘ্য কমে**। একবার আমরা যথেষ্ট শিখে গেলে, এজেন্টের জন্য লক্ষ্য অর্জন করা সহজ হয়ে উঠে, এবং পথের দৈর্ঘ্য কমতে শুরু করে। তবে আমরা এখনো অনুসন্ধান চালিয়ে যাচ্ছি, তাই আমরা প্রায়ই সেরা পথে থেকে সরে গিয়ে নতুন বিকল্প পরীক্ষা করি, ফলে পথটি অপ্টিমালের চেয়ে দীর্ঘ হয়। -- **দৈর্ঘ্য হঠাৎ বৃদ্ধি পায়**। আমরা এই গ্রাফে যা লক্ষ্য করি তা হলো যে কোনো এক সময়ে দৈর্ঘ্য হঠাৎ বৃদ্ধি পায়। এটি প্রক্রিয়ার স্টোকাস্টিক প্রকৃতি নির্দেশ করে, এবং যে কোনো সময় আমরা Q-Table-এর গুণফলগুলি নতুন মান দিয়ে ওভাররাইট করে "বিগড়ে" দিতে পারি। এটি আদর্শভাবে শেখার হার কমিয়ে (যেমন, প্রশিক্ষণের শেষের দিকে, আমরা শুধুমাত্র Q-Table মানগুলি একটি ছোট মান দ্বারা সামঞ্জস্য করি) কমানো উচিত। +- **দৈর্ঘ্য আকস্মিকভাবে বৃদ্ধি পায়**। এই গ্রাফে আমরা আরও দেখতে পাই যে কোথাও কোথাও দৈর্ঘ্য হঠাৎ করে বেড়ে গেছে। এটি প্রক্রিয়াটির সম্ভাব্য বৈশিষ্ট্যকে নির্দেশ করে, এবং যে আমরা কখনও কখনও Q-টেবিলের সহগ গুলো নতুন মান দিয়ে ওভাররাইট করে "বিরূপ" করতে পারি। এটি কমানোর জন্য সাধারণত শেখার হার হ্রাস করা হয় (উদাহরণস্বরূপ, প্রশিক্ষণের শেষ দিকে আমরা শুধু ছোট মান দিয়ে Q-টেবিল মানগুলি সামঞ্জস্য করি)। -সামগ্রিকভাবে, এটি মনে রাখা গুরুত্বপূর্ণ যে শেখার প্রক্রিয়ার সাফল্য এবং গুণমান উল্লেখযোগ্যভাবে প্যারামিটারগুলির উপর নির্ভর করে, যেমন শেখার হার, শেখার হার হ্রাস, এবং ডিসকাউন্ট ফ্যাক্টর। এগুলিকে প্রায়ই **হাইপারপ্যারামিটার** বলা হয়, যাতে **প্যারামিটার** থেকে আলাদা করা যায়, যা আমরা প্রশিক্ষণের সময় অপ্টিমাইজ করি (যেমন, Q-Table গুণফল)। সেরা হাইপারপ্যারামিটার মানগুলি খুঁজে বের করার প্রক্রিয়াকে **হাইপারপ্যারামিটার অপ্টিমাইজেশন** বলা হয়, এবং এটি একটি আলাদা বিষয়ের যোগ্য। +মোটের উপর, শেখার প্রক্রিয়ার সফলতা এবং গুণমান উল্লেখযোগ্যভাবে নির্ভর করে প্যারামিটারগুলোর উপর, যেমন শেখার হার, শেখার হারের অবনতি, এবং ছাড়ের কারক। এগুলিকে প্রায়ই **হাইপারপ্যারামিটার** বলা হয়, যা **প্যারামিটার** থেকে পৃথক যেগুলোকে আমরা প্রশিক্ষণের সময় অপ্টিমাইজ করি (উদাঃ Q-টেবিলের সহগ)। সেরা হাইপারপ্যারামিটার মানগুলো খোঁজার প্রক্রিয়াটিকে **হাইপারপ্যারামিটার অপ্টিমাইজেশন** বলা হয়, এবং এটি একটি স্বতন্ত্র বিষয়। ## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) ## অ্যাসাইনমেন্ট -[একটি আরও বাস্তবসম্মত জগৎ](assignment.md) +[একটি আরো বাস্তবসম্মত বিশ্ব](assignment.md) --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/bn/8-Reinforcement/2-Gym/README.md b/translations/bn/8-Reinforcement/2-Gym/README.md index 1e1ca43f2..c00e85b1f 100644 --- a/translations/bn/8-Reinforcement/2-Gym/README.md +++ b/translations/bn/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## প্রয়োজনীয়তা +# কার্টপোল স্কেটিং -এই পাঠে আমরা **OpenAI Gym** নামক একটি লাইব্রেরি ব্যবহার করব বিভিন্ন **পরিবেশ** সিমুলেট করার জন্য। আপনি যদি এই পাঠের কোড স্থানীয়ভাবে (যেমন Visual Studio Code থেকে) চালান, তাহলে সিমুলেশনটি একটি নতুন উইন্ডোতে খুলবে। অনলাইনে কোড চালানোর সময়, আপনাকে কোডে কিছু পরিবর্তন করতে হতে পারে, যেমনটি [এখানে](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) বর্ণনা করা হয়েছে। +আমরা যা সমস্যা আগের পাঠে সমাধান করেছিলাম তা হয়তো একটি খেলনা সমস্যা মনে হতে পারে, বাস্তব জীবনের পরিস্থিতিতে খুব একটা প্রযোজ্য নয়। কিন্তু তা নয়, কারণ অনেক বাস্তব জগতের সমস্যা এই পরিস্থিতির সাথে মিল আছে - যেমন দাবা বা গো খেলা। এগুলো একই রকম কারণ আমাদেরও একটি বোর্ড এবং নির্ধারিত নিয়ম আছে এবং একটি **বিচ্ছিন্ন অবস্থা**। + +## [পাঠ পূর্ববর্তী কুইজ](https://ff-quizzes.netlify.app/en/ml/) + +## পরিচিতি + +এই পাঠে আমরা Q-লার্নিংয়ের একই নীতিগুলো একটি **অবিচ্ছিন্ন অবস্থা** বিশিষ্ট সমস্যায় প্রয়োগ করব, অর্থাৎ এমন একটি অবস্থা যা এক বা একাধিক বাস্তব সংখ্যার দ্বারা নির্ধারিত। আমরা নিম্নলিখিত সমস্যার সাথে যুক্ত হব: + +> **সমস্যা**: যদি পিটার নেকড়ে থেকে পালাতে চায়, তাকে দ্রুত গতিতে চলতে জানতে হবে। আমরা দেখব পিটার কীভাবে স্কেট শিখতে পারে, বিশেষত, কীভাবে ভারসাম্য বজায় রাখতে পারে, Q-লার্নিং ব্যবহার করে। + +![দুর্দান্ত পালানো!](../../../../translated_images/bn/escape.18862db9930337e3.webp) + +> পিটার এবং তার বন্ধুরা নেকড়ে থেকে পালানোর জন্য সৃজনশীল হচ্ছে! ছবি: [জেন লুপার](https://twitter.com/jenlooper) + +আমরা ভারসাম্য বজায় রাখার একটি সরলীকৃত সংস্করণ ব্যবহার করব, যা **কার্টপোল** সমস্যা নামে পরিচিত। কার্টপোল জগতে, আমাদের একটি অনুভূমিক স্লাইডার আছে যা বাঁয়ে বা ডানে সরতে পারে, এবং লক্ষ হল স্লাইডারের উপরে একটি উল্লম্ব খুঁটি ভারসাম্য বজায় রাখা। + +একটি কার্টপোল + +## পূর্ব-প্রয়োজনীয়তা + +এই পাঠে, আমরা **OpenAI Gym** নামে একটি লাইব্রেরি ব্যবহার করব বিভিন্ন **পরিবেশ** অনুকরণ করতে। আপনি এই পাঠের কোড স্থানীয়ভাবে (যেমন Visual Studio Code থেকে) চালাতে পারেন, যেটাতে সিমুলেশন একটি নতুন উইন্ডোতে খুলবে। অনলাইনে কোড চালানোর সময় কিছু সামঞ্জস্য প্রয়োজন হতে পারে, যেমন এখানে বর্ণিত [এখানে](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)। ## OpenAI Gym -পূর্ববর্তী পাঠে, খেলার নিয়ম এবং অবস্থান আমরা নিজেরাই সংজ্ঞায়িত `Board` ক্লাসের মাধ্যমে দিয়েছিলাম। এখানে আমরা একটি বিশেষ **সিমুলেশন পরিবেশ** ব্যবহার করব, যা ভারসাম্য রক্ষার জন্য পোলের পিছনের পদার্থবিদ্যা সিমুলেট করবে। রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদম প্রশিক্ষণের জন্য সবচেয়ে জনপ্রিয় সিমুলেশন পরিবেশগুলির মধ্যে একটি হল [Gym](https://gym.openai.com/), যা [OpenAI](https://openai.com/) দ্বারা রক্ষণাবেক্ষণ করা হয়। এই Gym ব্যবহার করে আমরা বিভিন্ন **পরিবেশ** তৈরি করতে পারি, যেমন CartPole সিমুলেশন থেকে Atari গেমস। +পূর্ববর্তী পাঠে, আমরা গেমের নিয়ম এবং অবস্থা নিজস্ব সংজ্ঞায়িত `Board` ক্লাস দ্বারা দিয়েছিলাম। এখানে আমরা একটি বিশেষ **সিমুলেশন পরিবেশ** ব্যবহার করব, যা ভারসাম্যপূর্ণ খুটির পিছনে ফিজিক্স অনুকরণ করবে। প্রশিক্ষণের জন্য সবচেয়ে জনপ্রিয় সিমুলেশন পরিবেশগুলোর মধ্যে একটি হল [Gym](https://gym.openai.com/), যা [OpenAI](https://openai.com/) দ্বারা রক্ষণাবেক্ষণ করা হয়। এই জিম ব্যবহার করে আমরা কার্টপোল সিমুলেশন থেকে অ্যাটারি গেম পর্যন্ত বিভিন্ন **পরিবেশ** তৈরি করতে পারি। -> **Note**: OpenAI Gym থেকে অন্যান্য উপলব্ধ পরিবেশগুলি আপনি [এখানে](https://gym.openai.com/envs/#classic_control) দেখতে পারেন। +> **দ্রষ্টব্য**: OpenAI Gym থেকে উপলব্ধ অন্যান্য পরিবেশগুলি আপনি দেখতে পারেন [এখানে](https://gym.openai.com/envs/#classic_control)। -প্রথমে Gym ইনস্টল করুন এবং প্রয়োজনীয় লাইব্রেরিগুলি ইমপোর্ট করুন (কোড ব্লক 1): +প্রথমে, চলুন জিম ইনস্টল করি এবং প্রয়োজনীয় লাইব্রেরিগুলো আমদানি করি (কোড ব্লক ১): ```python import sys @@ -20,15 +40,15 @@ import numpy as np import random ``` -## অনুশীলন - একটি CartPole পরিবেশ ইনিশিয়ালাইজ করুন +## অনুশীলন - একটি কার্টপোল পরিবেশ initialized করুন -CartPole ভারসাম্য সমস্যার সাথে কাজ করতে, আমাদের সংশ্লিষ্ট পরিবেশ ইনিশিয়ালাইজ করতে হবে। প্রতিটি পরিবেশের সাথে যুক্ত থাকে: +কার্টপোল ভারসাম্য সমস্যা নিয়ে কাজ করতে হলে আমাদের সংশ্লিষ্ট পরিবেশটি initialized করতে হবে। প্রতিটি পরিবেশ একটি নিম্নলিখিত গুণাবলীর সাথে যুক্ত: -- **Observation space**, যা পরিবেশ থেকে প্রাপ্ত তথ্যের গঠন সংজ্ঞায়িত করে। CartPole সমস্যার ক্ষেত্রে, আমরা পোলের অবস্থান, গতি এবং অন্যান্য কিছু মান পাই। +- **পর্যবেক্ষণ স্থান** যা পরিবেশ থেকে প্রাপ্ত তথ্যের গঠন নির্ধারণ করে। কার্টপোল সমস্যায় আমরা খুটির অবস্থান, গতি এবং কিছু অন্যান্য মান পেয়ে থাকি। -- **Action space**, যা সম্ভাব্য ক্রিয়াগুলি সংজ্ঞায়িত করে। আমাদের ক্ষেত্রে Action space ডিসক্রিট, এবং দুটি ক্রিয়া নিয়ে গঠিত - **বাম** এবং **ডান**। (কোড ব্লক 2) +- **ক্রিয়াকলাপ স্থান** যা সম্ভাব্য ক্রিয়াকলাপ নির্ধারণ করে। আমাদের ক্ষেত্রে, ক্রিয়াকলাপ স্থান বিভক্ত এবং দুটি ক্রিয়াকলাপ নিয়ে গঠিত - **বাঁয়ে** এবং **ডানে**। (কোড ব্লক ২) -1. ইনিশিয়ালাইজ করতে, নিম্নলিখিত কোড টাইপ করুন: +১. initialized করতে নিচের কোডটি টাইপ করুন: ```python env = gym.make("CartPole-v1") @@ -37,11 +57,11 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ print(env.action_space.sample()) ``` -পরিবেশটি কীভাবে কাজ করে তা দেখতে, 100 ধাপের জন্য একটি ছোট সিমুলেশন চালান। প্রতিটি ধাপে, আমরা একটি ক্রিয়া প্রদান করি যা নেওয়া হবে - এই সিমুলেশনে আমরা `action_space` থেকে এলোমেলোভাবে একটি ক্রিয়া নির্বাচন করি। +পরিবেশটি কিভাবে কাজ করছে তা দেখতে, আসুন ১০০ ধাপের একটি সংক্ষিপ্ত সিমুলেশন চালাই। প্রতিটি ধাপে, আমরা যে একটি ক্রিয়াকলাপ নেওয়ার কথা সেটি প্রদান করি - এই সিমুলেশনে আমরা শুধু এলোমেলো ভাবে একটি ক্রিয়াকলাপ `action_space` থেকে বেছে নিলে। -1. নিচের কোডটি চালান এবং এটি কী ফলাফল দেয় তা দেখুন। +১. নিচের কোডটি চালান এবং দেখুন এর ফলাফল কী হয়। - ✅ মনে রাখবেন যে এই কোডটি স্থানীয় Python ইনস্টলেশনে চালানো পছন্দনীয়! (কোড ব্লক 3) + ✅ মনে রাখবেন, স্থানীয় পাইথন ইনস্টলেশনে এটি চালানোই সর্বোত্তম! (কোড ব্লক ৩) ```python env.reset() @@ -52,11 +72,11 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ env.close() ``` - আপনি এরকম একটি চিত্র দেখতে পাবেন: + আপনি কিছু এরকম ছবি দেখতে পাবেন: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![ভারসাম্যহীন কার্টপোল](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. সিমুলেশনের সময়, আমাদের সিদ্ধান্ত নিতে পর্যবেক্ষণগুলি পেতে হবে। প্রকৃতপক্ষে, `step` ফাংশন বর্তমান পর্যবেক্ষণ, একটি রিওয়ার্ড ফাংশন এবং `done` ফ্ল্যাগ প্রদান করে যা নির্দেশ করে যে সিমুলেশন চালিয়ে যাওয়া যুক্তিযুক্ত কিনা: (কোড ব্লক 4) +১. সিমুলেশন চলাকালে, আমাদের পর্যবেক্ষণ পেতে হবে যাতে সিদ্ধান্ত নেওয়া যায় কীভাবে কাজ করতে হবে। আসলে, `step` ফাংশন বর্তমান পর্যবেক্ষণ, একটি পুরস্কার ফাংশন, এবং একটি ডন ফ্ল্যাগ (যা নির্দেশ করে সিমুলেশন চালিয়ে যাওয়া উচিত কিনা) প্রদান করে: (কোড ব্লক ৪) ```python env.reset() @@ -69,7 +89,7 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ env.close() ``` - আপনি নোটবুক আউটপুটে এরকম কিছু দেখতে পাবেন: + আপনি নতুনালে আউটপুটে কিছু এরকম দেখতে পাবেন: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - সিমুলেশনের প্রতিটি ধাপে ফেরত দেওয়া পর্যবেক্ষণ ভেক্টরটি নিম্নলিখিত মানগুলি ধারণ করে: + প্রতিটি সিমুলেশনের ধাপে ফেরত দেওয়া পর্যবেক্ষণ ভেক্টরে নিম্নলিখিত মান থাকে: - কার্টের অবস্থান - কার্টের গতি - - পোলের কোণ - - পোলের ঘূর্ণন হার + - খুটির কোণ + - খুটির ঘূর্ণন হার -1. এই সংখ্যাগুলির সর্বনিম্ন এবং সর্বাধিক মান পান: (কোড ব্লক 5) +১. সেই সংখ্যাগুলোর সর্বনিম্ন এবং সর্বোচ্চ মান পান: (কোড ব্লক ৫) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - আপনি লক্ষ্য করতে পারেন যে প্রতিটি সিমুলেশন ধাপে রিওয়ার্ড মান সর্বদা 1। এর কারণ আমাদের লক্ষ্য যতটা সম্ভব দীর্ঘ সময় ধরে টিকে থাকা, অর্থাৎ পোলটিকে একটি যুক্তিসঙ্গতভাবে উল্লম্ব অবস্থানে দীর্ঘ সময় ধরে রাখা। + আপনি লক্ষ্য করবেন প্রতিটি সিমুলেশন ধাপে পুরস্কার মান সর্বদা ১। কারণ আমাদের লক্ষ্য যত দিন সম্ভব বেঁচে থাকা, অর্থাৎ খুটিকে যথাযথ উল্লম্ব অবস্থায় দীর্ঘ সময় ধরে রাখা। - ✅ প্রকৃতপক্ষে, CartPole সিমুলেশন সমাধান করা হয়েছে বলে বিবেচিত হয় যদি আমরা 100 ধারাবাহিক ট্রায়ালের উপর গড় রিওয়ার্ড 195 অর্জন করতে পারি। + ✅ আসলে, কার্টপোল সিমুলেশন সমাধান করা হয়েছে বলে গণ্য হয় যদি আমরা ১০০ ধারাবাহিক চেষ্টা জুড়ে গড় পুরস্কার ১৯৫ বা তার বেশি পাই। -## অবস্থার ডিসক্রিটাইজেশন +## অবস্থা বিচ্ছিন্নকরণ -Q-Learning-এ, আমাদের একটি Q-Table তৈরি করতে হবে যা প্রতিটি অবস্থায় কী করতে হবে তা সংজ্ঞায়িত করে। এটি করতে, আমাদের অবস্থান **ডিসক্রিট** হতে হবে, আরও স্পষ্টভাবে, এটি একটি সীমিত সংখ্যক ডিসক্রিট মান ধারণ করতে হবে। তাই, আমাদের পর্যবেক্ষণগুলিকে **ডিসক্রিটাইজ** করতে হবে, তাদের একটি সীমিত সেটের সাথে মানচিত্র করতে হবে। +Q-লার্নিং-এ, আমাদের একটি Q-টেবিল তৈরি করতে হবে যা প্রতিটি অবস্থায় কী করতে হবে তা নির্ধারণ করে। এটি করার জন্য, আমাদের অবস্থা **বিচ্ছিন্ন** হতে হবে, অর্থাৎ নির্দিষ্ট সংখ্যক বিচ্ছিন্ন মান থাকা উচিত। তাই আমাদের পর্যবেক্ষণ গুলোকে **বিচ্ছিন্নকরণ** করতে হবে, অর্থাৎ সেগুলোকে একটি সীমাবদ্ধ সংখ্যা অবস্থা বা স্টেটে রূপান্তর করতে হবে। -এটি করার কয়েকটি উপায় রয়েছে: +আমরা এটি করার কয়েকটি উপায় আছে: -- **বিনে ভাগ করুন**। যদি আমরা একটি নির্দিষ্ট মানের পরিসর জানি, আমরা এই পরিসরটিকে একটি নির্দিষ্ট সংখ্যক **বিনে** ভাগ করতে পারি এবং তারপর মানটিকে সেই বিন নম্বর দ্বারা প্রতিস্থাপন করতে পারি যেখানে এটি অন্তর্ভুক্ত। এটি numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) পদ্ধতি ব্যবহার করে করা যেতে পারে। এই ক্ষেত্রে, আমরা সঠিকভাবে অবস্থার আকার জানব, কারণ এটি ডিজিটালাইজেশনের জন্য নির্বাচিত বিনের সংখ্যার উপর নির্ভর করবে। +- **বিনে ভাগ করা**। যদি আমরা একটি নির্দিষ্ট মানের সীমা জানি, তাহলে আমরা সেই সীমাকে অনেকগুলো **বিন** এ ভাগ করতে পারি, এবং মানটিকে সেই বিন নম্বর দিয়ে প্রতিস্থাপন করতে পারি যেখানে তা পড়ে। এটি numpy এর [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) পদ্ধতি ব্যবহার করে করা যায়। এই ক্ষেত্রে, আমরা অবস্থা আকার নির্দিষ্টভাবে জানব, কারণ তা নির্ভর করবে কতগুলো বিন ব্যবহার করেছি তার উপর। + +✅ আমরা লিনিয়ার ইন্টারপোলেশন ব্যবহার করে মানগুলোকে একটি সীমাবদ্ধ অন্তরালে (ধরি, -২০ থেকে ২০) নিয়ে যেতে পারি, এবং তারপর রাউন্ড করে পূর্ণসংখ্যায় রূপান্তর করতে পারি। এটি অবস্থা আকারে কম নিয়ন্ত্রণ দেয়, বিশেষ করে ইনপুট মানগুলোর সঠিক সীমা জানা না থাকলে। যেমন আমাদের ক্ষেত্রে ৪ মানের মধ্যে ২টির মানের উর্ধ্ব বা নিম্ন সীমা নির্ধারিত নয়, যার ফলে অবস্থা সংখ্যাই অসীম হতে পারে। -✅ আমরা লিনিয়ার ইন্টারপোলেশন ব্যবহার করে মানগুলিকে একটি সীমিত পরিসরে (যেমন, -20 থেকে 20) আনতে পারি এবং তারপর সংখ্যাগুলিকে রাউন্ডিং করে পূর্ণসংখ্যায় রূপান্তর করতে পারি। এটি আমাদের অবস্থার আকারের উপর কিছুটা কম নিয়ন্ত্রণ দেয়, বিশেষত যদি আমরা ইনপুট মানগুলির সঠিক পরিসর না জানি। উদাহরণস্বরূপ, আমাদের ক্ষেত্রে 4টির মধ্যে 2টি মানের উপরের/নিচের সীমা নেই, যা সীমাহীন সংখ্যক অবস্থার ফলস্বরূপ হতে পারে। +আমাদের উদাহরণে, আমরা দ্বিতীয় পদ্ধতিটি গ্রহণ করব। আপনি পরে লক্ষ্য করবেন, যেখানে উর্ধ্ব/নিম্ন সীমা নির্ধারিত নেই সেখানে মানগুলি বিরলভাবে সীমাবদ্ধটির বাইরে যায়, তাই চরম মানের অবস্থা খুব কমই হবে। -আমাদের উদাহরণে, আমরা দ্বিতীয় পদ্ধতির সাথে যাব। আপনি পরে লক্ষ্য করতে পারেন, অজানা উপরের/নিচের সীমা থাকা সত্ত্বেও, এই মানগুলি খুব কমই নির্দিষ্ট সীমিত পরিসরের বাইরে মান নেয়, তাই চরম মান সহ অবস্থাগুলি খুব বিরল হবে। - -1. এখানে একটি ফাংশন রয়েছে যা আমাদের মডেল থেকে পর্যবেক্ষণ গ্রহণ করবে এবং 4টি পূর্ণসংখ্যার মানের একটি টুপল তৈরি করবে: (কোড ব্লক 6) +১. এখানে একটি ফাংশন যা আমাদের মডেল থেকে পর্যবেক্ষণ নিয়ে ৪টি পূর্ণসংখ্যার টিউপল তৈরি করবে: (কোড ব্লক ৬) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. বিন ব্যবহার করে আরেকটি ডিসক্রিটাইজেশন পদ্ধতি অন্বেষণ করুন: (কোড ব্লক 7) +১. অন্য একটি বিন-ভিত্তিক বিচ্ছিন্নকরণ পদ্ধতি পরীক্ষা করা যাক: (কোড ব্লক ৭) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) - ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter - nbins = [20,20,10,10] # number of bins for each parameter + ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # প্রতিটি প্যারামিটারের জন্য মানের অন্তরগুলো + nbins = [20,20,10,10] # প্রতিটি প্যারামিটারের জন্য বিনের সংখ্যা bins = [create_bins(ints[i],nbins[i]) for i in range(4)] def discretize_bins(x): return tuple(np.digitize(x[i],bins[i]) for i in range(4)) ``` -1. এখন একটি ছোট সিমুলেশন চালান এবং সেই ডিসক্রিট পরিবেশের মানগুলি পর্যবেক্ষণ করুন। `discretize` এবং `discretize_bins` উভয়ই চেষ্টা করুন এবং পার্থক্য আছে কিনা তা দেখুন। +১. এখন একটি সংক্ষিপ্ত সিমুলেশন চালিয়ে ঐ বিচ্ছিন্ন পরিবেশের মান পর্যবেক্ষণ করি। আপনি চাইলে উভয় `discretize` ও `discretize_bins` চেষ্টা করতে পারেন এবং পার্থক্য দেখতে পারেন। - ✅ `discretize_bins` বিন নম্বর ফেরত দেয়, যা 0-ভিত্তিক। তাই ইনপুট ভেরিয়েবলের মান 0-এর কাছাকাছি থাকলে এটি পরিসরের মাঝখান থেকে একটি সংখ্যা (10) ফেরত দেয়। `discretize`-এ, আমরা আউটপুট মানগুলির পরিসরের বিষয়ে চিন্তা করিনি, তাদের নেতিবাচক হতে দিয়েছি, তাই অবস্থার মানগুলি স্থানান্তরিত হয়নি এবং 0 মানে 0। (কোড ব্লক 8) + ✅ `discretize_bins` বিন নম্বর প্রদান করে, যা ০-ভিত্তিক। তাই ইনপুট ভেরিয়েবলের মান ০ এর আশেপাশে হলে এটি অন্তরের মাঝের নম্বর (১০) দেয়। `discretize` তে, আমরা আউটপুট মানের সীমার ব্যাপারে চিন্তিত ছিলাম না, তাই মান নেতিবাচকও হতে পারে, ফলে অবস্থা মান স্থানান্তর হয়নি এবং ০ এর মান ০ই। ```python env.reset() @@ -150,15 +170,15 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত env.close() ``` - ✅ পরিবেশটি কীভাবে কার্যকর হয় তা দেখতে `env.render` দিয়ে শুরু হওয়া লাইনটি আনকমেন্ট করুন। অন্যথায় আপনি এটি ব্যাকগ্রাউন্ডে কার্যকর করতে পারেন, যা দ্রুত। আমরা আমাদের Q-Learning প্রক্রিয়ার সময় এই "অদৃশ্য" কার্যকরকরণ ব্যবহার করব। + ✅ আপনি যদি দেখতে চান পরিবেশ কিভাবে কাজ করে, তাহলে `env.render` দিয়ে শুরু হওয়া লাইনের মন্তব্য তুলে দিন। না হলে আপনি এটিকে পেছনে চলতে দিবেন, যা দ্রুত হয়। আমরা Q-লার্নিং প্রক্রিয়ায় এই "অদৃশ্য" কার্যকরকরণ ব্যবহার করব। -## Q-Table এর গঠন +## Q-টেবিল কাঠামো -পূর্ববর্তী পাঠে, অবস্থাটি 0 থেকে 8 পর্যন্ত সংখ্যার একটি সাধারণ জোড়া ছিল, এবং তাই এটি একটি numpy টেনসর দ্বারা Q-Table উপস্থাপন করা সুবিধাজনক ছিল যার আকৃতি ছিল 8x8x2। যদি আমরা বিন ডিসক্রিটাইজেশন ব্যবহার করি, আমাদের অবস্থান ভেক্টরের আকারও জানা যায়, তাই আমরা একই পদ্ধতি ব্যবহার করতে পারি এবং অবস্থানটিকে একটি অ্যারের আকার 20x20x10x10x2 দ্বারা উপস্থাপন করতে পারি (এখানে 2 হল Action space-এর মাত্রা, এবং প্রথম মাত্রাগুলি পর্যবেক্ষণ স্পেসে প্রতিটি প্যারামিটারের জন্য ব্যবহৃত বিনের সংখ্যার সাথে সম্পর্কিত)। +পূর্ববর্তী পাঠে, অবস্থা ছিল সরল ০ থেকে ৮ পর্যন্ত জোড় সংখ্যার, তাই Q-টেবিল উপযুক্ত ছিল numpy টেনসর দ্বারা আকার ৮x৮x২ যেখানে ৮x৮ অবস্থা এবং ২ অ্যাকশনের সংখ্যা। বিন-ভিত্তিক বিচ্ছিন্নকরণ করলে অবস্থা ভেক্টরের আকারও জানা থাকবে, তাই আমরা একই পদ্ধতি ব্যবহার করতে পারি এবং অবস্থা উপস্থাপন করতে পারি একটি অ্যারেতে যার আকার ২০x২০x১০x১০x২ (এখানে ২ অ্যাকশন স্পেসের মাত্রা, এবং প্রথম মাত্রাগুলো বিনের সংখ্যা যা আমরা প্রতিটি পর্যবেক্ষণ প্যারামিটারের জন্য নির্বাচন করেছি)। -তবে, কখনও কখনও পর্যবেক্ষণ স্পেসের সঠিক মাত্রা জানা যায় না। `discretize` ফাংশনের ক্ষেত্রে, আমরা কখনই নিশ্চিত হতে পারি না যে আমাদের অবস্থান নির্দিষ্ট সীমার মধ্যে থাকে, কারণ কিছু মূল মান সীমাবদ্ধ নয়। তাই, আমরা একটি সামান্য ভিন্ন পদ্ধতি ব্যবহার করব এবং Q-Table একটি ডিকশনারি দ্বারা উপস্থাপন করব। +কিন্তু কখনো কখনো পর্যবেক্ষণ স্পেসের সঠিক মাত্রা জানা যায় না। `discretize` ফাংশনের ক্ষেত্রে, আমরা কখনো নিশ্চিত হতে পারি না আমাদের অবস্থা নির্দিষ্ট সীমার মধ্যে থাকবে, কারণ কিছু মানের কোন সীমা নেই। তাই আমরা সামান্য ভিন্ন পদ্ধতি ব্যবহার করব এবং Q-টেবিলকে একটি ডিকশনারি দ্বারা উপস্থাপন করব। -1. *(state,action)* জোড়াকে ডিকশনারি কী হিসাবে ব্যবহার করুন, এবং মানটি Q-Table এন্ট্রি মানের সাথে সম্পর্কিত হবে। (কোড ব্লক 9) +১. *(state, action)* জোড়াটিকে ডিকশনারির কী হিসেবে ব্যবহার করুন, এবং মান হবে সেই Q-টেবিলের এন্ট্রি মান। (কোড ব্লক ৯) ```python Q = {} @@ -168,38 +188,38 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত return [Q.get((state,a),0) for a in actions] ``` - এখানে আমরা একটি ফাংশন `qvalues()` সংজ্ঞায়িত করি, যা একটি প্রদত্ত অবস্থার জন্য Q-Table মানগুলির একটি তালিকা ফেরত দেয় যা সমস্ত সম্ভাব্য ক্রিয়াগুলির সাথে সম্পর্কিত। যদি এন্ট্রি Q-Table-এ উপস্থিত না থাকে, আমরা ডিফল্ট হিসাবে 0 ফেরত দেব। + এখানে আমরা একটি ফাংশন `qvalues()` সংজ্ঞায়িত করেছি, যা একটি নির্দিষ্ট অবস্থার জন্য সমস্ত সম্ভাব্য অ্যাকশনের Q-টেবিল মানের একটি তালিকা প্রদান করে। যদি Q-টেবিলে এন্ট্রি না থাকে, আমরা ডিফল্ট হিসেবে ০ ফেরত দেব। -## আসুন Q-Learning শুরু করি +## চলুন Q-লার্নিং শুরু করি -এখন আমরা পিটারকে ভারসাম্য রক্ষা করতে শেখানোর জন্য প্রস্তুত! +এখন আমরা পিটারকে ভারসাম্য শিখাতে প্রস্তুত! -1. প্রথমে কিছু হাইপারপ্যারামিটার সেট করুন: (কোড ব্লক 10) +১. প্রথমে, কিছু হাইপারপ্যারামিটার সেট করি: (কোড ব্লক ১০) ```python - # hyperparameters + # হাইপারপ্যারামিটারসমূহ alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - এখানে, `alpha` হল **learning rate**, যা সংজ্ঞায়িত করে যে প্রতিটি ধাপে Q-Table এর বর্তমান মানগুলি আমরা কতটা সমন্বয় করব। পূর্ববর্তী পাঠে আমরা 1 দিয়ে শুরু করেছি এবং প্রশিক্ষণের সময় `alpha`-কে কম মানগুলিতে কমিয়েছি। এই উদাহরণে আমরা এটি স্থির রাখব শুধুমাত্র সরলতার জন্য, এবং আপনি পরে `alpha` মানগুলি সামঞ্জস্য করার সাথে পরীক্ষা করতে পারেন। + এখানে, `alpha` হলো **লার্নিং রেট** যা প্রতিটি ধাপে Q-টেবিলের বর্তমান মান কতটুকু সামঞ্জস্য করতে হবে তা নির্ধারণ করে। পূর্ববর্তী পাঠে আমরা ১ দিয়ে শুরু করেছিলাম এবং প্রশিক্ষণের সময় ধীরে ধীরে `alpha` কমিয়েছিলাম। এই উদাহরণে, আমরা সহজতার জন্য এটিকে ধ্রুবক রাখব, এবং আপনি পরে `alpha` মান পরিবর্তন করে পরীক্ষা করতে পারেন। - `gamma` হল **discount factor**, যা দেখায় যে আমরা বর্তমান রিওয়ার্ডের তুলনায় ভবিষ্যতের রিওয়ার্ডকে কতটা অগ্রাধিকার দেব। + `gamma` হলো **ডিসকাউন্ট ফ্যাক্টর** যা দেখায় ভবিষ্যতের পুরস্কার বর্তমান পুরস্কারের তুলনায় কতটা গুরুত্ব পাবে। - `epsilon` হল **exploration/exploitation factor**, যা নির্ধারণ করে যে আমরা অনুসন্ধানকে শোষণের তুলনায় বেশি পছন্দ করব কিনা বা এর বিপরীত। আমাদের অ্যালগরিদমে, আমরা `epsilon` শতাংশ ক্ষেত্রে Q-Table মান অনুযায়ী পরবর্তী ক্রিয়া নির্বাচন করব, এবং বাকি সংখ্যক ক্ষেত্রে আমরা একটি এলোমেলো ক্রিয়া কার্যকর করব। এটি আমাদের অনুসন্ধান স্পেসের এমন এলাকাগুলি অন্বেষণ করতে দেবে যা আমরা আগে কখনও দেখিনি। + `epsilon` হলো **এক্সপ্লোরেশন/এক্সপ্লাইটেশন ফ্যাক্টর** যা নির্ধারণ করে আমরা অনুসন্ধান (explore) করব না শোষণ (exploit) করব। আমাদের অ্যালগরিদমে, `epsilon` শতাংশ সময় আমরা Q-টেবিল অনুসারে পরবর্তী অ্যাকশন নির্বাচন করব, আর বাকি সময় এলোমেলো অ্যাকশন চালাব। এটি আমাদের আগে কখনো না দেখা অনুসন্ধান অঞ্চলগুলি পরীক্ষা করার সুযোগ দেবে। - ✅ ভারসাম্যের ক্ষেত্রে - এলোমেলো ক্রিয়া (অনুসন্ধান) নির্বাচন করা ভুল দিকে একটি এলোমেলো ধাক্কার মতো কাজ করবে, এবং পোলটি এই "ভুলগুলি" থেকে ভারসাম্য পুনরুদ্ধার করতে শিখতে হবে। + ✅ ভারসাম্যের ক্ষেত্রে - এলোমেলো পদক্ষেপ (exploration) হবে ভুল দিকের একটি হঠাৎ ধাক্কা, যেখান থেকে খুটিকে শেখা লাগবে কিভাবে ভারসাম্য পুনরুদ্ধার করতে হয়। ### অ্যালগরিদম উন্নত করুন -আমরা পূর্ববর্তী পাঠ থেকে আমাদের অ্যালগরিদমে দুটি উন্নতি করতে পারি: - -- **গড় সামগ্রিক রিওয়ার্ড গণনা করুন**, একটি নির্দিষ্ট সংখ্যক সিমুলেশনের উপর। আমরা প্রতি 5000 পুনরাবৃত্তিতে আমাদের অগ্রগতি প্রিন্ট করব এবং আমরা সেই সময়ের মধ্যে আমাদের সামগ্রিক রিওয়ার্ড গড় করব। এর মানে হল যে যদি আমরা 195 পয়েন্টের বেশি পাই - আমরা সমস্যাটি সমাধান হয়েছে বলে বিবেচনা করতে পারি, এমনকি প্রয়োজনীয় মানের চেয়েও বেশি মানের সাথে। +আমরা পূর্ববর্তী পাঠের থেকে আমাদের অ্যালগরিদমে দুটি উন্নতি করতে পারি: -- **সর্বাধিক গড় সামগ্রিক ফলাফল গণনা করুন**, `Qmax`, এবং আমরা সেই ফলাফলের সাথে সম্পর্কিত Q-Table সংরক্ষণ করব। যখন আপনি প্রশিক্ষণ চালান তখন আপনি লক্ষ্য করবেন যে কখনও কখনও গড় সামগ্রিক ফলাফল কমতে শুরু করে, এবং আমরা Q-Table এর মানগুলি রাখতে চাই যা প্রশিক্ষণের সময় পর্যবেক্ষণ করা সেরা মডেলের সাথে সম্পর্কিত। +- **গড় সম্মিলিত পুরস্কার হিসাব করুন**, অনেক সিমুলেশনের উপর। আমরা প্রতিটি ৫০০০ পুনরাবৃত্তিতে অগ্রগতি মুদ্রণ করব, এবং ঐ সময়কালের মধ্যে গড় সম্মিলিত পুরস্কার হিসাব করব। অর্থাৎ যদি আমরা ১৯৫ এর বেশি পেয়ে থাকি, আমরা সমস্যাটি সমাধান বলে বিবেচনা করতে পারব যা প্রয়োজনীয়তার থেকেও ভালো। + +- **সর্বোচ্চ গড় সম্মিলিত ফলাফলের হিসাব**, `Qmax`, এবং সেই ফলাফলের জন্য Q-টেবিল সংরক্ষণ করব। যখন আপনি প্রশিক্ষণ চালাবেন, দেখতে পাবেন মাঝে মাঝে গড় সম্মিলিত ফলাফল কমতে শুরু করে, এবং আমরা সেই Q-টেবিল মান রাখতে চাই যা প্রশিক্ষণের সর্বোত্তম মডেলের সাথে মিলে। -1. প্রতিটি সিমুলেশনে সমস্ত সামগ্রিক রিওয়ার্ড `rewards` ভেক্টরে সংগ্রহ করুন ভবিষ্যতে প্লট করার জন্য। (কোড ব্লক 11) +১. প্রতিটি সিমুলেশনের সম্মিলিত পুরস্কার `rewards` ভেক্টরে সংগ্রহ করুন পরবর্তী প্লটিং-এর জন্য। (কোড ব্লক ১১) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == সিমুলেশন চালান == while not done: s = discretize(obs) if random.random() Qmax: @@ -240,25 +260,25 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত cum_rewards=[] ``` -এই ফলাফলগুলি থেকে আপনি যা লক্ষ্য করতে পারেন: +আপনি যে ফলাফলগুলো দেখতে পারেন তা হলো: -- **আমাদের লক্ষ্য কাছাকাছি**। আমরা 100+ ধারাবাহিক সিমুলেশনের উপর 195 সামগ্রিক রিওয়ার্ড অর্জনের লক্ষ্য অর্জনের খুব কাছাকাছি, বা আমরা প্রকৃতপক্ষে এটি অর্জন করেছি! এমনকি যদি আমরা ছোট সংখ্যা পাই, আমরা এখনও জানি না, কারণ আমরা 5000 রান গড় করি, এবং আনুষ্ঠানিক মানদণ্ডে শুধুমাত্র 100 রান প্রয়োজন। +- **লক্ষ্যের খুব কাছাকাছি**। আমরা ১৯৫ সম্মিলিত পুরস্কার ১০০ ধারাবাহিক সিমুলেশনের মধ্যে পাওয়ার লক্ষ্য খুব কাছাকাছি বা হয়তো ইতিমধ্যেই অর্জিত! যদিও ছোট মান আসে, আমরা নিশ্চিত নই কারণ আমরা ৫০০০ এর উপর গড় করছি, এবং আনুষ্ঠানিক শর্তে শুধুমাত্র ১০০ রান প্রয়োজন। + +- **পুরস্কার কমতে শুরু**। মাঝে মাঝে পুরস্কার কমতে পারে, অর্থাৎ আমরা Q-টেবিলে ইতিমধ্যে শেখা মানগুলো ভয়ানক মান দিয়ে "ধ্বংস" করতে পারি। -- **রিওয়ার্ড কমতে শুরু করে**। কখনও কখনও রিওয়ার্ড কমতে শুরু করে, যার অর্থ আমরা Q-Table-এ ইতিমধ্যে শেখা মানগুলি "ধ্বংস" করতে পারি এমন মানগুলির সাথে যা পরিস্থিতিকে আরও খারাপ করে তোলে। - -এই পর্যবেক্ষণটি আরও স্পষ্টভাবে দৃশ্যমান হয় যদি আমরা প্রশিক্ষণের অগ্রগতি প্লট করি। +এই পর্যবেক্ষণটা স্পষ্ট হয় যদি আমরা প্রশিক্ষণের অগ্রগতি প্লট করি। ## প্রশিক্ষণের অগ্রগতি প্লট করা -প্রশিক্ষণের সময়, আমরা প্রতিটি পুনরাবৃত্তিতে সামগ্রিক রিওয়ার্ড মান `rewards` ভেক্টরে সংগ্রহ করেছি। এটি পুনরাবৃত্তি সংখ্যার বিপরীতে প্লট করলে এটি দেখতে কেমন: +প্রশিক্ষণের সময়, আমরা প্রতিটি পুনরাবৃত্তিতে সম্মিলিত পুরস্কার `rewards` ভেক্টরে সংগ্রহ করেছি। এটি পুনরাবৃত্তি সংখ্যার বিপরীতে প্লট করলে এরূপ দেখা যায়: ```python plt.plot(rewards) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![কাঁচা অগ্রগতি](../../../../translated_images/bn/train_progress_raw.2adfdf2daea09c59.webp) -এই গ্রাফ থেকে কিছু বলা সম্ভব নয়, কারণ স্টোকাস্টিক প্রশিক্ষণ প্রক্রিয়ার প্রকৃতির কারণে প্রশিক্ষণ সেশনের দৈর্ঘ্য ব্যাপকভাবে পরিবর্তিত হয়। এই গ্রাফটি আরও অর্থবহ করতে, আমরা 100টি পরীক্ষার উপর **running average** গণনা করতে পারি। এটি সুবিধামত `np.convolve` ব্যবহার করে করা যেতে পারে: (কোড ব্লক 12) +এই গ্রাফ থেকে কিছুই বলা যায় না, কারণ স্টোকাস্টিক প্রশিক্ষণ প্রক্রিয়ার প্রকৃতির কারণে সেশনগুলোর দৈর্ঘ্য অনেক ভিন্ন। এতে আরো অর্থ আনতে, আমরা একটি নির্দিষ্ট পরিসরের গড় বের করতে পারি, বলে নিই ১০০। এটা `np.convolve` ব্যবহার করে সহজে করা যায়: (কোড ব্লক ১২) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![প্রশিক্ষণ অগ্রগতি](../../../../translated_images/bn/train_progress_runav.c71694a8fa9ab359.webp) + +## হাইপারপ্যারামিটার পরিবর্তন + +শেখাকে আরো স্থিতিশীল করতে, প্রশিক্ষণের সময় কিছু হাইপারপ্যারামিটার সামঞ্জস্য করা বুদ্ধিমানের কাজ। বিশেষ করে: + +- **লার্নিং রেট** `alpha` এর জন্য, আমরা সম্ভবত ১ এর কাছাকাছি মান দিয়ে শুরু করব, তারপর ধীরে ধীরে কমাব। সময়ের সঙ্গে Q-টেবিলের মান ভাল সম্ভাবনা পাবে, তাই আমরা ছোটখাটো পরিবর্তন করব এবং পুরোপুরি নতুন মান দেওয়া থেকে বিরত থাকব। -## হাইপারপ্যারামিটার পরিবর্তন করা +- **epsilon বাড়ানো**। আমরা `epsilon` ধীরে ধীরে বাড়াতে চাইব, যাতে কম অনুসন্ধান হয় এবং বেশি শোষণ। সম্ভবত শুরুতে `epsilon` কম রাখব এবং ধীরে ধীরে ১ এর কাছাকাছি নিয়ে যাব। -শিক্ষণ আরও স্থিতিশীল করতে, প্রশিক্ষণের সময় আমাদের কিছু হাইপারপ্যারামিটার সামঞ্জস্য করা বুদ্ধিমানের কাজ। বিশেষত: +> **কাজ ১**: হাইপারপ্যারামিটার মান নিয়ে পরীক্ষা চালান এবং দেখুন আপনি কি উচ্চ সম্মিলিত পুরস্কার পেতে পারেন। আপনি কি ১৯৫ এর উপরে পৌঁছাতে পারছেন? -- **শিক্ষণ হার**, `alpha`, আমরা 1-এর কাছাকাছি মান দিয়ে শুরু করতে পারি এবং তারপর প্যারামিটারটি কমিয়ে রাখতে পারি। সময়ের সাথে সাথে, আমরা Q-Table-এ ভাল সম্ভাব্য মান পাব, এবং তাই আমাদের তাদের সামান্য সামঞ্জস্য করা উচিত এবং নতুন মানগুলির সাথে সম্পূর্ণভাবে ওভাররাইট করা উচিত নয়। -- **epsilon বৃদ্ধি করুন**। আমরা `epsilon` ধীরে ধীরে বৃদ্ধি করতে চাই, যাতে কম অনুসন্ধান এবং বেশি শোষণ করা যায়। সম্ভবত এটি কম `epsilon` মান দিয়ে শুরু করা এবং প্রায় 1 পর্যন্ত নিয়ে যাওয়া বুদ্ধিমানের কাজ। -> **টাস্ক ১**: হাইপারপ্যারামিটার মানগুলোর সাথে পরীক্ষা করুন এবং দেখুন আপনি কি উচ্চতর সামগ্রিক পুরস্কার অর্জন করতে পারেন। আপনি কি ১৯৫ এর উপরে পাচ্ছেন? -> **টাস্ক ২**: সমস্যাটি আনুষ্ঠানিকভাবে সমাধান করতে, আপনাকে ১০০ ধারাবাহিক রান জুড়ে ১৯৫ গড় পুরস্কার অর্জন করতে হবে। প্রশিক্ষণের সময় এটি পরিমাপ করুন এবং নিশ্চিত করুন যে আপনি সমস্যাটি আনুষ্ঠানিকভাবে সমাধান করেছেন! +> **কাজ ২**: সমস্যাটি আনুষ্ঠানিকভাবে সমাধান করতে, আপনাকে ১০০ ধারাবাহিক চালানোর উপর গড়ে ১৯৫ পুরস্কার পেতে হবে। প্রশিক্ষণের সময় এটি মাপুন এবং নিশ্চিত করুন যে আপনি আনুষ্ঠানিকভাবে সমস্যাটি সমাধান করেছেন! ## ফলাফল কার্যকরভাবে দেখা -প্রশিক্ষিত মডেলটি কীভাবে আচরণ করে তা দেখা বেশ আকর্ষণীয় হবে। চলুন সিমুলেশন চালাই এবং প্রশিক্ষণের সময় ব্যবহৃত একই অ্যাকশন নির্বাচন কৌশল অনুসরণ করি, Q-টেবিলের সম্ভাব্যতা বিতরণ অনুযায়ী নমুনা করি: (কোড ব্লক ১৩) +প্রকৃতপক্ষে প্রশিক্ষিত মডেলটি কীভাবে আচরণ করে তা দেখা আকর্ষণীয় হবে। চলুন সিমুলেশন চালাই এবং প্রশিক্ষণের সময় যেমন ছিল তেমনই Q-টেবিলের সম্ভাব্যতা বিতরণের অনুযায়ী নমুনা নিয়ে একই ক্রিয়া নির্বাচন কৌশল অনুসরণ করি: (কোড ব্লক ১৩) ```python obs = env.reset() @@ -295,17 +318,17 @@ while not done: env.close() ``` -আপনার কিছুটা এরকম দেখতে পাওয়া উচিত: +আপনি এরকম কিছু দেখতে পাবেন: -![একটি ব্যালেন্সিং কার্টপোল](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![একটি ব্যালান্সিং কার্টপোল](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀চ্যালেঞ্জ -> **টাস্ক ৩**: এখানে আমরা Q-টেবিলের চূড়ান্ত কপি ব্যবহার করছিলাম, যা হয়তো সেরা নাও হতে পারে। মনে রাখবেন যে আমরা `Qbest` ভেরিয়েবলে সেরা পারফর্মিং Q-টেবিল সংরক্ষণ করেছি! `Qbest`-কে `Q`-তে কপি করে একই উদাহরণ চেষ্টা করুন এবং পার্থক্য লক্ষ্য করুন। +> **কাজ ৩**: এখানে, আমরা শেষ কপি Q-টেবিল ব্যবহার করছিলাম, যা হয়তো সেরা নয়। মনে রাখবেন আমরা সেরা পারফর্ম করা Q-টেবিলটি `Qbest` ভেরিয়েবলে সংরক্ষণ করেছি! একই উদাহরণ সেরা পারফর্ম করা Q-টেবিল ব্যবহার করে চেষ্টা করুন, `Qbest` থেকে `Q` তে কপি করে এবং দেখুন পার্থক্য লক্ষ্য করছেন কিনা। -> **টাস্ক ৪**: এখানে আমরা প্রতিটি ধাপে সেরা অ্যাকশন নির্বাচন করছিলাম না, বরং সংশ্লিষ্ট সম্ভাব্যতা বিতরণ দিয়ে নমুনা করছিলাম। সর্বোচ্চ Q-টেবিল মান সহ সর্বদা সেরা অ্যাকশন নির্বাচন করা কি আরও অর্থবহ হবে? এটি `np.argmax` ফাংশন ব্যবহার করে করা যেতে পারে, যা সর্বোচ্চ Q-টেবিল মানের সাথে সম্পর্কিত অ্যাকশন নম্বর খুঁজে বের করে। এই কৌশলটি বাস্তবায়ন করুন এবং দেখুন এটি ব্যালেন্সিং উন্নত করে কিনা। +> **কাজ ৪**: এখানে আমরা প্রতিটি ধাপে সেরা ক্রিয়া নির্বাচন করছিলাম না, বরং সংশ্লিষ্ট সম্ভাব্যতা বিতরণের মাধ্যমে নমুনা নিচ্ছিলাম। সর্বদা সর্বোচ্চ Q-টেবিল মানের ক্রিয়াটি নির্বাচন করা কি আরও যুক্তিযুক্ত হবে? এটি `np.argmax` ফাংশন ব্যবহার করে করা যায় যা সর্বোচ্চ Q-টেবিল মানের সাথে সংশ্লিষ্ট ক্রিয়ার নম্বর বের করে। এই কৌশলটি বাস্তবায়ন করুন এবং দেখুন এটি ব্যালান্সিং উন্নত করছে কিনা। ## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) @@ -314,11 +337,13 @@ env.close() ## উপসংহার -আমরা এখন শিখেছি কীভাবে এজেন্টদের প্রশিক্ষণ দিয়ে ভালো ফলাফল অর্জন করা যায়, শুধুমাত্র একটি পুরস্কার ফাংশন প্রদান করে যা গেমের কাঙ্ক্ষিত অবস্থাকে সংজ্ঞায়িত করে এবং তাদের বুদ্ধিমত্তার সাথে অনুসন্ধান স্থানটি অন্বেষণ করার সুযোগ দিয়ে। আমরা সফলভাবে Q-লার্নিং অ্যালগরিদম প্রয়োগ করেছি ডিসক্রিট এবং কন্টিনিউয়াস পরিবেশের ক্ষেত্রে, তবে ডিসক্রিট অ্যাকশন সহ। +আমরা এখন শিখেছি কীভাবে একটি অ্যাজেন্টকে একটি পুরস্কার ফাংশন দিয়ে প্রশিক্ষণ দেওয়া যায় যা গেমের কাঙ্ক্ষিত অবস্থাটি নির্ধারণ করে এবং তাদের বুদ্ধিমত্তার সাথে অনুসন্ধান স্থান অন্বেষণ করার সুযোগ দেয়। আমরা সফলভাবে Q-লার্নিং অ্যালগরিদম প্রয়োগ করেছি ডিসক্রিট এবং ধারাবাহিক পরিবেশের ক্ষেত্রে, তবে ডিসক্রিট ক্রিয়াগুলির সাথে। -এটি গুরুত্বপূর্ণ যে আমরা এমন পরিস্থিতি অধ্যয়ন করি যেখানে অ্যাকশন স্টেটও কন্টিনিউয়াস এবং পর্যবেক্ষণ স্থান অনেক বেশি জটিল, যেমন অ্যাটারি গেম স্ক্রিনের চিত্র। এই ধরনের সমস্যাগুলিতে ভালো ফলাফল অর্জনের জন্য প্রায়ই আরও শক্তিশালী মেশিন লার্নিং কৌশল, যেমন নিউরাল নেটওয়ার্ক, ব্যবহার করতে হয়। এই আরও উন্নত বিষয়গুলি আমাদের আসন্ন উন্নত AI কোর্সের বিষয়। +এটি গুরুত্বপূর্ণ যে আমরা এমন পরিস্থিতিও অধ্যয়ন করি যেখানে ক্রিয়া ক্ষেত্রও ধারাবাহিক, এবং পর্যবেক্ষণের ক্ষেত্র অনেক বেশি জটিল, যেমন এটারি গেম স্ক্রিন থেকে চিত্র। সেই সমস্যাগুলিতে ভাল ফলাফল অর্জনের জন্য প্রায়শই আরও শক্তিশালী মেশিন লার্নিং কৌশল ব্যবহার করতে হয়, যেমন নিউরাল নেটওয়ার্ক। এই আরও উন্নত বিষয়গুলি আমাদের আগামের আরও উন্নত AI কোर्सের বিষয়বস্তু। --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md b/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md index a4c45e962..d55a0ed4e 100644 --- a/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,148 +1,171 @@ -# পোস্টস্ক্রিপ্ট: মডেল ডিবাগিং মেশিন লার্নিং-এ রেসপন্সিবল AI ড্যাশবোর্ড কম্পোনেন্ট ব্যবহার করে - -## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) +# পোস্টস্ক্রিপ্ট: রেস্পন্সিবল AI ড্যাশবোর্ড কম্পোনেন্ট ব্যবহার করে মেশিন লার্নিংয়ে মডেল ডিবাগিং + -## ভূমিকা +## [প্রাক-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) + +## পরিচিতি -মেশিন লার্নিং আমাদের দৈনন্দিন জীবনে প্রভাব ফেলে। AI এখন এমন গুরুত্বপূর্ণ সিস্টেমে প্রবেশ করছে যা আমাদের ব্যক্তিগত এবং সামাজিক জীবনে প্রভাব ফেলে, যেমন স্বাস্থ্যসেবা, অর্থনীতি, শিক্ষা এবং কর্মসংস্থান। উদাহরণস্বরূপ, সিস্টেম এবং মডেল দৈনন্দিন সিদ্ধান্ত গ্রহণের কাজে ব্যবহৃত হয়, যেমন স্বাস্থ্যসেবা নির্ণয় বা প্রতারণা সনাক্তকরণ। এর ফলে, AI-এর অগ্রগতি এবং দ্রুত গ্রহণের সঙ্গে সঙ্গে সমাজের প্রত্যাশা এবং নিয়মাবলীও পরিবর্তিত হচ্ছে। আমরা প্রায়ই দেখি যে AI সিস্টেমগুলি প্রত্যাশা পূরণ করতে ব্যর্থ হয়; তারা নতুন চ্যালেঞ্জ উন্মোচন করে; এবং সরকার AI সমাধান নিয়ন্ত্রণ করতে শুরু করেছে। তাই, এই মডেলগুলো বিশ্লেষণ করা গুরুত্বপূর্ণ যাতে সবার জন্য ন্যায্য, নির্ভরযোগ্য, অন্তর্ভুক্তিমূলক, স্বচ্ছ এবং দায়িত্বশীল ফলাফল নিশ্চিত করা যায়। +মেশিন লার্নিং আমাদের দৈনন্দিন জীবনে প্রভাব ফেলে। AI আমাদের প্রত্যেকে এবং আমাদের সমাজের উপর প্রভাবিত করা সবচেয়ে গুরুত্বপূর্ণ কিছু সিস্টেমে প্রবেশ করছে, যেমন স্বাস্থ্যসেবা, আর্থিক, শিক্ষা, এবং কর্মসংস্থান। উদাহরণস্বরূপ, সিস্টেম এবং মডেলগুলি দৈনন্দিন সিদ্ধান্ত গ্রহণের কাজগুলিতে জড়িত থাকে, যেমন স্বাস্থ্যসেবা নির্ণয় বা প্রতারণা সনাক্তকরণ। এর ফলে, AI এর অগ্রগতি এবং দ্রুত গ্রহণের সাথে সাথে সমাজের পরিবর্তিত প্রত্যাশা এবং বৃদ্ধিপ্রাপ্ত নিয়ন্ত্রণের মুখোমুখি হচ্ছে। আমরা ক্রমাগত দেখি এমন জায়গা যেখানে AI সিস্টেমগুলি প্রত্যাশা পূরণে ব্যর্থ হয়; তারা নতুন চ্যালেঞ্জ উন্মোচন করে; এবং সরকারগুলি AI সমাধান নিয়ন্ত্রণ শুরু করছে। তাই, এই মডেলগুলি বিশ্লেষণ করা গুরুত্বপূর্ণ যাতে সবার জন্য ন্যায়সঙ্গত, বিশ্বস্ত, অন্তর্ভুক্তিমূলক, স্বচ্ছ এবং দায়বদ্ধ ফলাফল প্রদান করা যায়। -এই পাঠ্যক্রমে, আমরা ব্যবহারিক টুল নিয়ে আলোচনা করব যা মডেলের রেসপন্সিবল AI সমস্যা আছে কিনা তা মূল্যায়ন করতে সাহায্য করে। প্রচলিত মেশিন লার্নিং ডিবাগিং কৌশল সাধারণত পরিমাণগত গণনার উপর ভিত্তি করে, যেমন সামগ্রিক সঠিকতা বা গড় ত্রুটি হার। কল্পনা করুন, আপনি যে ডেটা ব্যবহার করছেন তা যদি কিছু জনসংখ্যাগত তথ্যের অভাব থাকে, যেমন জাতি, লিঙ্গ, রাজনৈতিক মতামত, ধর্ম, বা যদি এটি এই জনসংখ্যাকে অসমভাবে উপস্থাপন করে। আবার, যদি মডেলের আউটপুট কিছু জনসংখ্যাকে প্রাধান্য দেয়, তাহলে এটি সংবেদনশীল বৈশিষ্ট্য গোষ্ঠীর অতিরিক্ত বা কম প্রতিনিধিত্ব সৃষ্টি করতে পারে, যা মডেলের ন্যায্যতা, অন্তর্ভুক্তি বা নির্ভরযোগ্যতার সমস্যার কারণ হতে পারে। আরেকটি বিষয় হলো, মেশিন লার্নিং মডেলগুলোকে "ব্ল্যাক বক্স" হিসেবে বিবেচনা করা হয়, যা মডেলের পূর্বাভাসের কারণ বোঝা এবং ব্যাখ্যা করা কঠিন করে তোলে। এই সমস্ত চ্যালেঞ্জের মুখোমুখি হন ডেটা বিজ্ঞানী এবং AI ডেভেলপাররা যখন তাদের কাছে মডেলের ন্যায্যতা বা বিশ্বাসযোগ্যতা মূল্যায়নের জন্য পর্যাপ্ত টুল থাকে না। +এই পাঠক্রমে, আমরা বাস্তবিক টুলগুলি দেখব যা ব্যবহার করে যাচাই করা যায় একটি মডেলে রেস্পন্সিবল AI সমস্যা আছে কিনা। ঐতিহ্যগত মেশিন লার্নিং ডিবাগিং কৌশলগুলি সাধারণত পরিমাপের উপর ভিত্তি করে যেমন সম্মিলিত সঠিকতা বা গড় ত্রুটির ক্ষতি। ভাবুন, যখন আপনি যে তথ্য ব্যবহার করে মডেলগুলি নির্মাণ করছেন তা কিছু জনসংখ্যার প্রতিনিধিত্ব করছে না, যেমন বর্ণ, লিঙ্গ, রাজনৈতিক দৃষ্টিভঙ্গি, ধর্ম বা এই ধরনের জনসংখ্যার অতিরিক্ত/অপ্রতুল প্রতিনিধিত্ব। মডেলের আউটপুট যদি নির্দিষ্ট কোন জনসংখ্যার পক্ষে ব্যাখ্যা করা হয় তাহলে কী হয়? এটি সংবেদনশীল বৈশিষ্ট্য গোষ্ঠীর অতিরিক্ত বা কম প্রতিনিধিত্ব সৃষ্টি করতে পারে, যার ফলে মডেলের ন্যায্যতা, অন্তর্ভুক্তিতা বা নির্ভরযোগ্যতা সমস্যা দেখা দেয়। আরেকটি কারণ হলো, মেশিন লার্নিং মডেলগুলি কালো বাক্স হিসেবে বিবেচিত হয়, যার ফলে মডেলের পূর্বাভাস কীভাবে কাজ করে তা বোঝা এবং ব্যাখ্যা করা কঠিন। এ সকলই চ্যালেঞ্জ যা ডেটা বিজ্ঞানী এবং AI ডেভেলপাররা সম্মুখীন হন যখন তাদের কাছে পর্যাপ্ত ডিবাগ এবং ন্যায়সঙ্গতা বা বিশ্বাসযোগ্যতা যাচাই করার সরঞ্জাম থাকে না। -এই পাঠে, আপনি শিখবেন কীভাবে আপনার মডেল ডিবাগ করবেন: +এই পাঠে আপনি শিখবেন কিভাবে আপনার মডেলগুলি ডিবাগ করবেন: -- **ত্রুটি বিশ্লেষণ**: আপনার ডেটা বিতরণে মডেলের উচ্চ ত্রুটি হার কোথায় রয়েছে তা চিহ্নিত করুন। -- **মডেল ওভারভিউ**: বিভিন্ন ডেটা কোহর্টের মধ্যে তুলনামূলক বিশ্লেষণ করুন যাতে মডেলের পারফরম্যান্স মেট্রিকগুলিতে বৈষম্য আবিষ্কার করা যায়। -- **ডেটা বিশ্লেষণ**: যেখানে আপনার ডেটার অতিরিক্ত বা কম প্রতিনিধিত্ব থাকতে পারে তা তদন্ত করুন, যা আপনার মডেলকে এক ডেটা জনসংখ্যার পক্ষে পক্ষপাতিত্ব করতে প্রভাবিত করতে পারে। -- **ফিচার ইম্পরট্যান্স**: বৈশ্বিক বা স্থানীয় স্তরে কোন বৈশিষ্ট্যগুলি আপনার মডেলের পূর্বাভাস চালাচ্ছে তা বুঝুন। +- **ত্রুটি বিশ্লেষণ**: আপনার ডেটা বিতরণে মডেলের কোথায় উচ্চ ত্রুটির হার আছে তা নির্ণয় করুন। +- **মডেল ওভারভিউ**: বিভিন্ন ডেটা গোষ্ঠীর মধ্যে তুলনামূলক বিশ্লেষণ করুন এবং মডেলের কর্মক্ষমতার ভিন্নতা আবিষ্কার করুন। +- **ডেটা বিশ্লেষণ**: কোথায় আপনার ডেটার অতিরিক্ত বা কম প্রতিনিধিত্ব থাকতে পারে তা অনুসন্ধান করুন যা মডেলকে এক ডেটা জনসংখ্যার পক্ষে পক্ষপাতপূর্ণ করতে পারে। +- **ফিচার ইম্পরটেন্স**: বুঝুন কোন বৈশিষ্ট্যগুলি গ্লোবাল অথবা লোকাল স্তরে মডেলের পূর্বাভাস চালায়। -## পূর্বশর্ত +## পূর্বপ্রয়োজনীয়তা -পূর্বশর্ত হিসেবে, [ডেভেলপারদের জন্য রেসপন্সিবল AI টুল](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) পর্যালোচনা করুন। +পূর্বপ্রয়োজনীয়তা হিসেবে, অনুগ্রহ করে পর্যালোচনা করুন [উন্নয়নকারীদের জন্য রেস্পন্সিবল AI টুল](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![রেসপন্সিবল AI টুলের GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![রেস্পন্সিবল AI টুলের গিফ](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## ত্রুটি বিশ্লেষণ -প্রচলিত মডেল পারফরম্যান্স মেট্রিক, যা সঠিকতা পরিমাপের জন্য ব্যবহৃত হয়, সাধারণত সঠিক বনাম ভুল পূর্বাভাসের উপর ভিত্তি করে গণনা করা হয়। উদাহরণস্বরূপ, একটি মডেল ৮৯% সময় সঠিক এবং ত্রুটি হার ০.০০১ হলে এটি ভালো পারফরম্যান্স হিসেবে বিবেচিত হতে পারে। তবে ত্রুটি আপনার ডেটাসেটে সমানভাবে বিতরণ নাও হতে পারে। আপনি ৮৯% মডেল সঠিকতার স্কোর পেতে পারেন, কিন্তু দেখতে পারেন যে আপনার ডেটার কিছু অঞ্চলে মডেল ৪২% সময় ব্যর্থ হচ্ছে। এই ব্যর্থতার প্যাটার্নের ফলে নির্দিষ্ট ডেটা গোষ্ঠীর ক্ষেত্রে ন্যায্যতা বা নির্ভরযোগ্যতার সমস্যা দেখা দিতে পারে। মডেল কোথায় ভালো করছে বা কোথায় ব্যর্থ হচ্ছে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। ডেটার সেই অঞ্চলগুলো যেখানে মডেলের ত্রুটি বেশি, তা গুরুত্বপূর্ণ ডেটা জনসংখ্যা হতে পারে। +মডেলের পারফরম্যান্স পরিমাপের জন্য ঐতিহ্যগত কর্মক্ষমতা সূচকগুলি সাধারণত সঠিক বনাম ভুল পূর্বাভাসের উপর ভিত্তি করে গণনা করা হয়। উদাহরণস্বরূপ, একটি মডেল ৮৯% সময় সঠিক বলে নির্ধারণ করা এবং ত্রুটি হার ০.০০১ হলে সেটিকে ভালো পারফরম্যান্স বলা যেতে পারে। কিন্তু ত্রুটিগুলি আপনার মূল ডেটাসেটে সমানভাবে বিতরণ হয় না। আপনি হয়তো ৮৯% সঠিকতা পাবেন কিন্তু দেখতে পাবেন এমন ডেটার বিভিন্ন অঞ্চল রয়েছে যেখানে মডেল ৪২% সময় ব্যর্থ হচ্ছে। এই ধরনের ব্যর্থতা নিদর্শন নির্দিষ্ট ডেটা গোষ্ঠীর জন্য ন্যায়সঙ্গতা বা বিশ্বাসযোগ্যতা সমস্যা তৈরি করতে পারে। মডেলটি কোথায় ভালো কাজ করছে বা করছে না তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। যেখানে মডেলে ভুলের সংখ্যা বেশি সেখানে তথ্যটি একটি গুরুত্বপূর্ণ ডেটা জনসংখ্যা হতে পারে। -![মডেল ত্রুটি বিশ্লেষণ এবং ডিবাগ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![মডেলের ত্রুটি বিশ্লেষণ ও ডিবাগ](../../../../translated_images/bn/ea-error-distribution.117452e1177c1dd8.webp) -RAI ড্যাশবোর্ডের ত্রুটি বিশ্লেষণ কম্পোনেন্ট একটি গাছের ভিজ্যুয়ালাইজেশনের মাধ্যমে মডেলের ব্যর্থতা বিভিন্ন কোহর্টে কীভাবে বিতরণ হয়েছে তা দেখায়। এটি আপনার ডেটাসেটে উচ্চ ত্রুটি হার রয়েছে এমন বৈশিষ্ট্য বা এলাকাগুলি চিহ্নিত করতে সহায়ক। মডেলের বেশিরভাগ ত্রুটি কোথা থেকে আসছে তা দেখে আপনি মূল কারণ তদন্ত শুরু করতে পারেন। আপনি ডেটা কোহর্ট তৈরি করে বিশ্লেষণ করতে পারেন। এই ডেটা কোহর্টগুলো ডিবাগিং প্রক্রিয়ায় সাহায্য করে, কেন মডেল একটি কোহর্টে ভালো পারফর্ম করছে কিন্তু অন্যটিতে ভুল করছে তা নির্ধারণ করতে। +RAI ড্যাশবোর্ডের ত্রুটি বিশ্লেষণ কম্পোনেন্টটি দেখায় কিভাবে মডেল ব্যর্থতা বিভিন্ন গোষ্ঠীর মধ্যে বিতরণ হয়েছে একটি ট্রি ভিজ্যুয়ালাইজেশনের মাধ্যমে। এটি বৈশিষ্ট্য বা এমন কোন এলাকাগুলো চিহ্নিত করতে সাহায্য করে যেখানে আপনার ডেটাসেটে উচ্চ ত্রুটির হার আছে। মডেলের ভুলের উৎস খুঁজে পেতে এটি সহায়ক। আপনি ডেটার গোষ্ঠীও তৈরি করতে পারেন বিশ্লেষণের জন্য। এই গোষ্ঠীগুলো ডিবাগিং প্রক্রিয়ায় সহায়তা করে বুঝতে কেন মডেলের পারফরম্যান্স এক গোষ্ঠীতে ভাল কিন্তু অন্যটিতে ত্রুটিপূর্ণ। -![ত্রুটি বিশ্লেষণ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![ত্রুটি বিশ্লেষণ](../../../../translated_images/bn/ea-error-cohort.6886209ea5d438c4.webp) -গাছের মানচিত্রে গাঢ় লাল রঙের ছায়া দ্রুত সমস্যার এলাকাগুলি চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি গাছের নোড যত গাঢ় লাল, ত্রুটি হার তত বেশি। +ট্রি ম্যাপের ভিজ্যুয়াল নির্দেশকগুলি সমস্যা এলাকাগুলো দ্রুত সনাক্ত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি ট্রি নোডের লাল রং যত গাঢ় হবে তত ত্রুটির হার বেশি থাকবে। -হিট ম্যাপ একটি অন্য ভিজ্যুয়ালাইজেশন কার্যকারিতা যা ব্যবহারকারীরা এক বা দুটি বৈশিষ্ট্য ব্যবহার করে ত্রুটি হার তদন্ত করতে ব্যবহার করতে পারেন, যা পুরো ডেটাসেট বা কোহর্টে মডেলের ত্রুটির কারণ খুঁজে বের করতে সাহায্য করে। +হিট ম্যাপ আরেকটি ভিজ্যুয়ালাইজেশন ফিচার যা ব্যবহারকারীরা একটি বা দুটি বৈশিষ্ট্যের মাধ্যমে ত্রুটির হার তদন্তে ব্যবহার করতে পারেন যা সম্পূর্ণ ডেটাসেট অথবা গোষ্ঠীর মধ্যে মডেল ত্রুটির কারণ খুঁজতে সাহায্য করে। -![ত্রুটি বিশ্লেষণ হিটম্যাপ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![ত্রুটি বিশ্লেষণ হিটম্যাপ](../../../../translated_images/bn/ea-heatmap.8d27185e28cee383.webp) -ত্রুটি বিশ্লেষণ ব্যবহার করুন যখন আপনি: +ত্রুটি বিশ্লেষণ ব্যবহার করুন যখন আপনাকে: -* মডেলের ব্যর্থতা কীভাবে ডেটাসেট এবং বিভিন্ন ইনপুট ও বৈশিষ্ট্য মাত্রায় বিতরণ হয়েছে তা গভীরভাবে বুঝতে চান। -* সামগ্রিক পারফরম্যান্স মেট্রিক ভেঙে ত্রুটিপূর্ণ কোহর্টগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার করতে চান, যা আপনার লক্ষ্যযুক্ত সমাধান পদক্ষেপগুলিকে জানাতে সাহায্য করবে। +* গভীরভাবে বুঝতে হবে কিভাবে মডেল ব্যর্থতা ডেটাসেট এবং বিভিন্ন ইনপুট ও বৈশিষ্ট্য মাত্রায় বিতরণ হয়েছে। +* সম্মিলিত কর্মক্ষমতা সূচক ভাঙ্গা এবং স্বয়ংক্রিয়ভাবেই ভুল গোষ্ঠী আবিষ্কার করতে যা লক্ষ্যভিত্তিক সমাধান পদক্ষেপে সাহায্য করবে। ## মডেল ওভারভিউ -একটি মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়ন করতে হলে এর আচরণের একটি সামগ্রিক ধারণা পাওয়া প্রয়োজন। এটি একাধিক মেট্রিক পর্যালোচনা করে অর্জন করা যেতে পারে, যেমন ত্রুটি হার, সঠিকতা, রিকল, প্রিসিশন, বা MAE (Mean Absolute Error) এর মধ্যে বৈষম্য খুঁজে বের করা। একটি পারফরম্যান্স মেট্রিক ভালো দেখাতে পারে, কিন্তু অন্য মেট্রিকে ত্রুটি প্রকাশিত হতে পারে। এছাড়াও, পুরো ডেটাসেট বা কোহর্টের মধ্যে মেট্রিকগুলির তুলনা পারফরম্যান্সের বৈষম্য প্রকাশ করতে সাহায্য করে। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন সংবেদনশীল বনাম অসংবেদনশীল বৈশিষ্ট্যের (যেমন রোগীর জাতি, লিঙ্গ, বা বয়স) মধ্যে মডেলের পারফরম্যান্স দেখা হয়, যাতে মডেলের সম্ভাব্য অন্যায়তা প্রকাশ করা যায়। উদাহরণস্বরূপ, যদি দেখা যায় যে মডেল একটি সংবেদনশীল বৈশিষ্ট্যযুক্ত কোহর্টে বেশি ত্রুটি করছে, তাহলে এটি মডেলের সম্ভাব্য অন্যায়তা প্রকাশ করতে পারে। +মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়নের জন্য এর আচরণের সম্পূর্ণ ধারণা প্রয়োজন। এটি একাধিক সূচক যেমন ত্রুটির হার, সঠিকতা, রিকল, প্রিসিশন, বা MAE (গড় আপেক্ষিক ত্রুটি) পর্যালোচনা করে প্রাপ্ত হতে পারে যা পারফরম্যান্স সূচকের মধ্যে বৈষম্য খুঁজে পেতে সাহায্য করে। একটি সূচক ভাল দেখলেও অন্য সূচকে ভুলসাধ্যতা প্রকাশ পেতে পারে। এছাড়া, সমগ্র ডেটাসেট বা গোষ্ঠীর মধ্যে সূচক তুলনা মডেল কোথায় ভাল কাজ করছে বা কাজ করছে না তা স্পষ্ট করে তোলে। এটি বিশেষ করে সংবেদনশীল বনাম অসংবেদনশীল বৈশিষ্ট্যের পারফরম্যান্স পর্যবেক্ষণে গুরুত্বপূর্ণ (যেমন রোগীর বর্ণ, লিঙ্গ বা বয়স) যা মডেলের সম্ভাব্য পক্ষপাত উন্মোচন করতে পারে। উদাহরণস্বরূপ, মডেল সংবেদনশীল বৈশিষ্ট্যযুক্ত গোষ্ঠীতে বেশি ভুল করলে এটি মডেলের সম্ভাব্য পক্ষপাত প্রকাশ করে। -RAI ড্যাশবোর্ডের মডেল ওভারভিউ কম্পোনেন্ট শুধুমাত্র ডেটা কোহর্টে পারফরম্যান্স মেট্রিক বিশ্লেষণ করতে সাহায্য করে না, এটি ব্যবহারকারীদের বিভিন্ন কোহর্টের মধ্যে মডেলের আচরণ তুলনা করার ক্ষমতা দেয়। +RAI ড্যাশবোর্ডের মডেল ওভারভিউ কম্পোনেন্টটি কেবল গোষ্ঠীর মধ্যে ডেটার কর্মক্ষমতা সূচক বিশ্লেষণই নয় বরং ভিন্ন গোষ্ঠীর মধ্যে মডেলের আচরণ তুলনা করার সুযোগ দেয়। -![ডেটাসেট কোহর্ট - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![ডেটাসেট গোষ্ঠী - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../translated_images/bn/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -কম্পোনেন্টের বৈশিষ্ট্য-ভিত্তিক বিশ্লেষণ কার্যকারিতা ব্যবহারকারীদের একটি নির্দিষ্ট বৈশিষ্ট্যের মধ্যে ডেটা উপগোষ্ঠী সংকুচিত করতে এবং একটি সূক্ষ্ম স্তরে অস্বাভাবিকতা চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, ড্যাশবোর্ডে একটি ব্যবহারকারী-নির্বাচিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে কোহর্ট তৈরি করার বিল্ট-ইন বুদ্ধিমত্তা রয়েছে (যেমন *"time_in_hospital < 3"* বা *"time_in_hospital >= 7"*)। এটি ব্যবহারকারীকে একটি বড় ডেটা গোষ্ঠী থেকে একটি নির্দিষ্ট বৈশিষ্ট্য আলাদা করতে সক্ষম করে, যাতে দেখা যায় এটি মডেলের ত্রুটিপূর্ণ ফলাফলের একটি মূল প্রভাবক কিনা। +এই কম্পোনেন্টের বৈশিষ্ট্য-ভিত্তিক বিশ্লেষণ ফাংশনালিটি ব্যবহারকারীকে নির্দিষ্ট বৈশিষ্ট্যের মধ্যে ডেটার উপগোষ্ঠী সংকুচিত করতে সাহায্য করে যাতে সূক্ষ্ম স্তরে ব্যতিক্রম সনাক্ত করা যায়। উদাহরণস্বরূপ, ড্যাশবোর্ডে বিল্ট-ইন বুদ্ধিমত্তা আছে যা ব্যবহারকারীর নির্বাচিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে গোষ্ঠী তৈরি করে (যেমন, *"time_in_hospital < 3"* অথবা *"time_in_hospital >= 7"*)। এটি ব্যবহারকারীকে বড় ডেটা গোষ্ঠী থেকে একটি কিছু বৈশিষ্ট্য পৃথক করে দেখতে দেয় যে তা মডেলের ভুল ফলাফলে গুরুত্বপূর্ণ প্রভাব ফেলে কিনা। -![ফিচার কোহর্ট - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![বৈশিষ্ট্য গোষ্ঠী - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../translated_images/bn/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -মডেল ওভারভিউ কম্পোনেন্ট দুটি শ্রেণির বৈষম্য মেট্রিক সমর্থন করে: +মডেল ওভারভিউ কম্পোনেন্ট দুই ধরনের বৈষম্য সূচক সমর্থন করে: -**মডেল পারফরম্যান্সে বৈষম্য**: এই সেটের মেট্রিকগুলি ডেটার উপগোষ্ঠীগুলির মধ্যে নির্বাচিত পারফরম্যান্স মেট্রিকের মানগুলির বৈষম্য (পার্থক্য) গণনা করে। এখানে কয়েকটি উদাহরণ: +**মডেল কর্মক্ষমতায় বৈষম্য**: এই সূচকগুলি নির্বাচিত কর্মক্ষমতা সূচকের (metric) মানগুলোর মধ্যে উপগোষ্ঠীর মধ্যে পার্থক্য গণনা করে। কিছু উদাহরণ: * সঠিকতার হার বৈষম্য -* ত্রুটি হার বৈষম্য -* প্রিসিশন বৈষম্য -* রিকল বৈষম্য -* গড় পরম ত্রুটি (MAE) বৈষম্য +* ত্রুটি হারের বৈষম্য +* প্রিসিশনের বৈষম্য +* রিকলের বৈষম্য +* গড় আপেক্ষিক ত্রুটি (MAE) এর বৈষম্য -**নির্বাচনের হার বৈষম্য**: এই মেট্রিকটি উপগোষ্ঠীগুলির মধ্যে নির্বাচনের হার (অনুকূল পূর্বাভাস) এর পার্থক্য ধারণ করে। এর একটি উদাহরণ হলো ঋণ অনুমোদনের হার বৈষম্য। নির্বাচনের হার মানে প্রতিটি শ্রেণির ডেটা পয়েন্টের ভগ্নাংশ যা ১ হিসেবে শ্রেণীবদ্ধ (বাইনারি শ্রেণীবিভাজনে) বা পূর্বাভাসের মানগুলির বিতরণ (রিগ্রেশনে)। +**নির্বাচন হারে বৈষম্য**: এই সূচকে উপগোষ্ঠীর মধ্যে নির্বাচনের হার (পক্ষপাতমূলক পূর্বাভাস) এর পার্থক্য থাকে। যেমন ঋণ অনুমোদনের হারে বৈষম্য। নির্বাচনের হার মানে হলো প্রতিটি শ্রেণীতে ডেটা পয়েন্টগুলোর ভাগ যা ১ হিসাবে শ্রেণীবদ্ধ হয় (বাইনারি শ্রেণীবিভাগে) অথবা পূর্বাভাসের মানের বিতরণ (রিগ্রেশনে)। ## ডেটা বিশ্লেষণ -> "যদি আপনি ডেটাকে যথেষ্ট সময় ধরে চাপ দেন, এটি যেকোনো কিছু স্বীকার করবে" - রোনাল্ড কোস +> "যদি তুমি ডেটাকে যথেষ্ট লম্বা সময় ধরে শিকলবন্দী করো, তবে এটি যেকোন কিছু স্বীকার করবে" - রোনাল্ড কোস + +এই উক্তিটি অতিরঞ্জিত শোনায়, তবে সত্য হলো তথ্যকে যেকোন সিদ্ধান্তের পক্ষে প্রভাবিত করা যায়। এমন প্রভাব কখনো তাৎক্ষণিকভাবে ঘটতে পারে। আমরা সবাই পক্ষপাত ধারণ করি, এবং সচেতনভাবে কখন ডেটায় পক্ষপাত প্রবেশ করাচ্ছি তা বুঝতে কঠিন। AI এবং মেশিন লার্নিংয়ে ন্যায়সঙ্গতা নিশ্চিত করা একটি জটিল চ্যালেঞ্জ। + +ডেটা ঐতিহ্যগত মডেল কর্মক্ষমতা সূচকের জন্য একটি বড় অন্ধস্থান। আপনার উচ্চ সঠিকতা থাকতে পারে, তবে এটি সবসময় ডেটাসেটের মধ্যে থাকা পক্ষপাত প্রতিফলিত করে না। উদাহরণস্বরূপ, যদি কোনো প্রতিষ্ঠানের কর্মচারীদের ডেটাসেটে ২৭% মহিলা নির্বাহী পদে থাকে এবং ৭৩% পুরুষ একই স্তরে থাকে, তাহলে এ তথ্য ব্যবহার করে প্রশিক্ষিত একটি চাকরির বিজ্ঞাপন AI মডেল প্রধানত পুরুষ শ্রোতাদের লক্ষ্য করত; যা লিঙ্গ পক্ষপাত প্রকাশ করে। এই ধরনের ডেটা অসমতা মডেলের পূর্বাভাসকে একটি লিঙ্গের পক্ষে পক্ষপাতপ্রবণ করে। এটা ন্যায়সঙ্গতার ইস্যু নির্দেশ করে যেখানে AI মডেলে লিঙ্গ পক্ষপাত আছে। + +RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট আস্তে সাহায্য করে সনাক্ত করতে কোথায় 과অঙ্গ বা কম প্রতিনিধিত্ব আছে। এটি ব্যবহারকারীদের নির্ণয় করতে সাহায্য করে ডেটার অসমতা বা নির্দিষ্ট গোষ্ঠীর প্রতিনিধিত্বের অভাব থেকে ত্রুটি এবং ন্যায়সঙ্গতার সমস্যা কোথা থেকে আসছে। এটি ব্যবহারকারীদের অনুমানকৃত এবং প্রকৃত ফলাফল, ত্রুটি গোষ্ঠী এবং নির্দিষ্ট বৈশিষ্ট্যের ভিত্তিতে ডেটাসেট ভিজ্যুয়ালাইজ করার অনুমতি দেয়। কখনো কখনো কম প্রতিনিধিত্বশীল ডেটা গোষ্ঠী আবিষ্কার কেবল তা নয় যে মডেল ভালো শিখছে না, ফলে ভুলের সংখ্যা বেশি। পক্ষপাতপূর্ণ মডেল হওয়া মানেই শুধু ন্যায়সঙ্গতার সমস্যা নয়, বরং মডেল অন্তর্ভুক্তিমূলক বা বিশ্বাসযোগ্য নয় তা নির্দেশ করে। + +![RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট](../../../../translated_images/bn/dataanalysis-cover.8d6d0683a70a5c1e.webp) -এই বক্তব্যটি চরম শোনায়, কিন্তু এটি সত্য যে ডেটা যেকোনো সিদ্ধান্তকে সমর্থন করার জন্য প্রভাবিত করা যেতে পারে। এমন প্রভাব কখনও কখনও অনিচ্ছাকৃতভাবে ঘটতে পারে। আমরা সবাই মানুষ হিসেবে পক্ষপাতিত্ব করি, এবং ডেটায় পক্ষপাতিত্ব প্রবর্তন করছি কিনা তা সচেতনভাবে জানা প্রায়ই কঠিন। AI এবং মেশিন লার্নিং-এ ন্যায্যতা নিশ্চিত করা একটি জটিল চ্যালেঞ্জ। -ডেটা প্রচলিত মডেল পারফরম্যান্স মেট্রিকের জন্য একটি বড় অন্ধকার অঞ্চল। আপনার সঠিকতার স্কোর উচ্চ হতে পারে, কিন্তু এটি সবসময় আপনার ডেটাসেটে থাকা অন্তর্নিহিত ডেটা পক্ষপাতিত্ব প্রতিফলিত করে না। উদাহরণস্বরূপ, যদি একটি কোম্পানির নির্বাহী পদে কর্মীদের ডেটাসেটে ২৭% নারী এবং ৭৩% পুরুষ থাকে, তাহলে এই ডেটার উপর প্রশিক্ষিত একটি চাকরি বিজ্ঞাপন AI মডেল মূলত পুরুষদের লক্ষ্য করতে পারে। এই ডেটার ভারসাম্যহীনতা মডেলের পূর্বাভাসকে এক লিঙ্গের পক্ষে পক্ষপাতিত্ব করেছে। এটি একটি ন্যায্যতার সমস্যা প্রকাশ করে যেখানে AI মডেলে লিঙ্গ পক্ষপাতিত্ব রয়েছে। +ডেটা বিশ্লেষণ ব্যবহার করুন যখন আপনাকে: -RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট ডেটাসেটে অতিরিক্ত এবং কম প্রতিনিধিত্বের এলাকাগুলি চিহ্নিত করতে সাহায্য করে। এটি ব্যবহারকারীদের ডেটা ভারসাম্যহীনতা বা একটি নির্দিষ্ট ডেটা গোষ্ঠীর প্রতিনিধিত্বের অভাব থেকে উদ্ভূত ত্রুটি এবং ন্যায্যতার সমস্যাগুলি নির্ণয় করতে সাহায্য করে। এটি ব্যবহারকারীদের পূর্বাভাস এবং প্রকৃত ফলাফল, ত্রুটি গোষ্ঠী এবং নির্দিষ্ট বৈশিষ্ট্যের উপর ভিত্তি করে ডেটাসেট ভিজ্যুয়ালাইজ করার ক্ষমতা দেয়। কখনও কখনও একটি কম প্রতিনিধিত্বকারী ডেটা গোষ্ঠী আবিষ্কার করা মডেলটি ভালোভাবে শিখছে না তা প্রকাশ করতে পারে, যার ফলে উচ্চ ত্রুটি দেখা দেয়। একটি মডেলে ডেটা পক্ষপাতিত্ব থাকা শুধুমাত্র একটি ন্যায্যতার সমস্যা নয়, এটি দেখায় যে মডেলটি অন্তর্ভুক্তিমূলক বা নির্ভরযোগ্য নয়। +* বিভিন্ন ফিল্টার নির্বাচন করে আপনার ডেটাসেট পরিসংখ্যান অনুসন্ধান করতে হবে (যাকে কোহর্টও বলা হয়)। +* বিভিন্ন গোষ্ঠী ও বৈশিষ্ট্য গোষ্ঠীগুলোর মধ্যে ডেটাসেটের বিতরণ বুঝতে হবে। +* জানতে হবে যে অন্য ড্যাশবোর্ড কম্পোনেন্ট থেকে প্রাপ্ত ন্যায়সঙ্গতা, ত্রুটি বিশ্লেষণ এবং কারণ-প্রমাণিত ফলাফল কি ডেটাসেটের বিতরণের কারণে হয়েছে কিনা। +* সিদ্ধান্ত নিতে হবে কোন এলাকায় আরও ডেটা সংগ্রহ করা দরকার যাতে প্রতিনিধিত্বের জনিত সমস্যা, লেবেল গোলমাল, বৈশিষ্ট্যের গোলমাল ইত্যাদি থেকে উদ্ভূত ত্রুটি দূর করা যায়। -![RAI ড্যাশবোর্ডে ডেটা বিশ্লেষণ কম্পোনেন্ট](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +## মডেল ব্যাখ্যাত্মকতা -ডেটা বিশ্লেষণ ব্যবহার করুন যখন আপনি: +মেশিন লার্নিং মডেলগুলি সাধারণত কালো বাক্স হিসেবে বিবেচিত হয়। কোন প্রধান বৈশিষ্ট্য মডেলের পূর্বাভাস চালাচ্ছে তা বোঝা কঠিন। কোন মডেল কেন নির্দিষ্ট পূর্বাভাস দেয় তা স্পষ্টতা দেওয়া গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি কোনো AI সিস্টেম পূর্বাভাস দেয় যে একজন ডায়াবেটিস রোগীর ৩০ দিনের কম সময়ের মধ্যে হাসপাতলে পুনরায় ভর্তি হওয়ার ঝুঁকি আছে, তবে এটি তার পূর্বাভাসের পেছনে থাকা সমর্থনকারী তথ্য দিতে পারা উচিত। এই সমর্থক তথ্য প্রদান স্বচ্ছতা আনে যা ক্লিনিশিয়ান বা হাসপাতালকে সুষ্ঠু সিদ্ধান্ত নিতে সাহায্য করে। এছাড়া, একজন নির্দিষ্ট রোগীর জন্য মডেল কেন পূর্বাভাস দিয়েছে তা ব্যাখ্যা করা স্বাস্থ্য নিয়মাবলীর সঙ্গে দায়বদ্ধতা জড়িত করে। যখন আপনি মেশিন লার্নিং মডেল মানুষের জীবনে প্রভাবিত করার জন্য ব্যবহার করছেন, তখন মডেলের আচরণ কী দ্বারা প্রভাবিত হচ্ছে তা বোঝা এবং ব্যাখ্যা করা অত্যন্ত গুরুত্বপূর্ণ। মডেল ব্যাখ্যাত্মকতা এবং বোধগম্যতা এই ধরনের প্রশ্নের উত্তর দেয় যেমন: -* আপনার ডেটাসেটের পরিসংখ্যান অন্বেষণ করতে চান, বিভিন্ন ফিল্টার নির্বাচন করে আপনার ডেটাকে বিভিন্ন মাত্রায় (কোহর্ট নামে পরিচিত) ভাগ করতে। -* বিভিন্ন কোহর্ট এবং বৈশিষ্ট্য গোষ্ঠীর মধ্যে আপনার ডেটাসেটের বিতরণ বুঝতে চান। -* ন্যায্যতা, ত্রুটি বিশ্লেষণ এবং কারণ সম্পর্কিত আপনার অনুসন্ধানগুলি (অন্যান্য ড্যাশবোর্ড কম্পোনেন্ট থেকে প্রাপ্ত) আপনার ডেটাসেটের বিতরণের ফলাফল কিনা তা নির্ধারণ করতে চান। -* প্রতিনিধিত্বের সমস্যাগুলি থেকে উদ্ভূত ত্রুটি কমানোর জন্য আরও ডেটা সংগ্রহের এলাকাগুলি সিদ্ধান্ত নিতে চান। +* মডেল ডিবাগিং: আমার মডেল কেন এই ভুল করল? কিভাবে আমি মডেল উন্নত করতে পারি? +* মানব-AI সমবায়: কিভাবে আমি মডেলের সিদ্ধান্ত বোঝব এবং বিশ্বাস করব? +* নিয়ন্ত্রক অনুপালন: আমার মডেল কি আইনি শর্ত পূরণ করে? -## মডেল ব্যাখ্যাযোগ্যতা +RAI ড্যাশবোর্ডের ফিচার ইম্পরটেন্স কম্পোনেন্ট আপনাকে ডিবাগ করতে এবং বুঝতে সাহায্য করে কিভাবে মডেল পূর্বাভাস দেয়। এটি মেশিন লার্নিং পেশাজীবী এবং সিদ্ধান্ত গ্রহণকারীদের জন্য গুরুত্বপূর্ণ যা একটি মডেলের আচরণে প্রভাব ফেলা বৈশিষ্ট্যগুলোর প্রমাণ দেখিয়ে আইনগত নিয়মাবলীর সঙ্গতি নিশ্চিত করে। পরবর্তীতে, ব্যবহারকারীরা গ্লোবাল এবং লোকাল ব্যাখ্যাত্মকতা দুটোই অন্বেষণ করতে পারেন যা যাচাই করে কোন বৈশিষ্ট্য মডেলের পূর্বাভাস চালায়। গ্লোবাল ব্যাখ্যাত্মকতায় মডেলের ওপর সর্বাধিক প্রভাব ফেলা শীর্ষ বৈশিষ্ট্য তালিকাভুক্ত হয়। লোকাল ব্যাখ্যাত্মকতায় একটি নির্দিষ্ট মামলার পূর্বাভাস চালানো বৈশিষ্ট্যগুলো প্রদর্শিত হয়। লোকাল ব্যাখ্যাত্মকতা নিরীক্ষণ বা ডিবাগিং এর জন্য সহায়ক, কারণ এতে একটি নির্দিষ্ট মামলার সঠিক বা ভুল পূর্বাভাস কেন হয় তা ব্যাখ্যা করা যায়। -মেশিন লার্নিং মডেলগুলো সাধারণত "ব্ল্যাক বক্স" হিসেবে বিবেচিত হয়। একটি মডেলের পূর্বাভাস চালানোর জন্য কোন মূল ডেটা বৈশিষ্ট্যগুলি গুরুত্বপূর্ণ তা বোঝা চ্যালেঞ্জিং হতে পারে। একটি মডেল কেন একটি নির্দিষ্ট পূর্বাভাস করেছে তা বোঝার জন্য স্বচ্ছতা প্রদান করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি একটি AI সিস্টেম পূর্বাভাস দেয় যে একটি ডায়াবেটিক রোগী ৩০ দিনের মধ্যে হাসপাতালে পুনরায় ভর্তি হওয়ার ঝুঁকিতে রয়েছে, তাহলে এটি তার পূর্বাভাসের জন্য প্রাসঙ্গিক ডেটা প্রদান করতে সক্ষম হওয়া উচিত। এই ধরনের ডেটা সূচক স্বচ্ছতা নিয়ে আসে, যা চিকিৎসক বা হাসপাতালকে ভালোভাবে সিদ্ধান্ত নিতে সাহায্য করে। এছাড়াও, একটি নির্দিষ্ট রোগীর জন্য একটি মডেল কেন পূর্বাভাস দিয়েছে তা ব্যাখ্যা করতে সক্ষম হওয়া স্বাস্থ্য নিয়মাবলীর সঙ্গে দায়িত্বশীলতা নিশ্চিত করে। যখন আপনি মেশিন লার্নিং মডেল ব্যবহার করছেন যা মানুষের জীবনে প্রভাব ফেলে, তখন মডেলের আচরণ কী দ্বারা প্রভাবিত হয় তা বোঝা এবং ব্যাখ্যা করা অত্যন্ত গুরুত্বপূর্ণ। মডেল ব্যাখ্যাযোগ্যতা এবং ব্যাখ্যা করার ক্ষমতা নিম্নলিখিত পরিস্থিতিতে প্রশ্নের উত্তর দিতে সাহায্য করে: +![RAI ড্যাশবোর্ডের ফিচার ইম্পরটেন্স কম্পোনেন্ট](../../../../translated_images/bn/9-feature-importance.cd3193b4bba3fd4b.webp) -* মডেল ডিবাগিং: আমার মডেল কেন এই ভুল করেছে? আমি কীভাবে আমার মডেল উন্নত করতে পারি? -* মানব-AI সহযোগিতা: আমি কীভাবে মডেলের সিদ্ধান্ত বুঝতে এবং বিশ্বাস করতে পারি? -* নিয়ন্ত্রক সম্মতি: আমার মডেল কি আইনি প্রয়োজনীয়তা পূরণ করে? +* গ্লোবাল ব্যাখ্যাত্মকতা: উদাহরণস্বরূপ, কোন বৈশিষ্ট্য একটি ডায়াবেটিস হাসপাতালের পুনর্ভর্তি মডেলের সামগ্রিক আচরণে প্রভাব ফেলে? +* লোকাল ব্যাখ্যাত্মকতা: উদাহরণস্বরূপ, কেন এক রোগী, যাঁর বয়স ৬০ এর বেশি এবং আগের ভর্তি ইতিহাস আছে, তাকে পূর্বাভাস দেওয়া হয় যে সে ৩০ দিনের মধ্যে পুনরায় ভর্তি হবে বা হবে না? -RAI ড্যাশবোর্ডের ফিচার ইম্পরট্যান্স কম্পোনেন্ট আপনাকে ডিবাগ করতে এবং একটি মডেল কীভাবে পূর্বাভাস তৈরি করে তা ব্যাপকভাবে বুঝতে সাহায্য করে। এটি মেশিন লার্নিং পেশাদার এবং সিদ্ধান্ত গ্রহণকারীদের জন্য একটি দরকারী টুল, যা মডেলের আচরণ প্রভাবিতকারী বৈশিষ্ট্যগুলির প্রমাণ দেখাতে এবং নিয়ন্ত্রক সম্মতির জন্য ব্যাখ্যা করতে সাহায্য করে। ব্যবহারকারীরা বৈশ্বিক এবং স্থানীয় ব্যাখ্যা উভয়ই অন্বেষণ করতে পারেন, যা মডেলের পূর্বাভাস চালানোর বৈশিষ্ট্যগুলি যাচাই করতে সাহায্য করে। বৈশ্বিক ব্যাখ্যা মডেলের সামগ্রিক পূর্বাভাসকে প্রভাবিত করা শীর্ষ বৈশিষ্ট্যগুলির তালিকা দেয়। স্থানীয় ব্যাখ্যা দেখায় যে একটি নির্দিষ্ট ক্ষেত্রে মডেলের পূর্বাভাসের জন্য কোন বৈশিষ্ট্যগুলি ভূমিকা পালন করেছে। স্থানীয় ব্যাখ্যা মূল্যায়নের ক্ষমতা একটি নির্দিষ্ট ক্ষেত্রে ডিবাগিং বা অডিটিংয়ে সহায়ক, যাতে মডেল কেন সঠিক বা ভুল পূর্বাভাস দিয়েছে তা ভালোভাবে বোঝা এবং ব্যাখ্যা করা যায়। +মডেলের পারফরম্যান্স বিভিন্ন গোষ্ঠীতে বিশ্লেষণের সময়, ফিচার ইম্পরটেন্স দেখায় বৈশিষ্ট্যের প্রভাবের মাত্রা। এটি মডেলের ভুল পূর্বাভাসে বৈশিষ্ট্যের প্রভাবের পার্থক্য প্রকাশ করে। কম্পোনেন্টটি দেখাতে পারে কোন বৈশিষ্ট্যের কোন মান মডেলের ফলাফলে ইতিবাচক বা নেতিবাচক প্রভাব ফেলেছে। উদাহরণস্বরূপ, যদি মডেল ভুল পূর্বাভাস দেয়, এটি বিস্তারিত তথ্য দিয়ে বোঝায় কোন বৈশিষ্ট্য বা মান পূর্বাভাস চালায়। এই স্তরের তথ্য ডিবাগিং ছাড়াও স্বচ্ছতা এবং যাচাই প্রক্রিয়াতে দায়বদ্ধতা বাড়ায়। অবশেষে, এটি ন্যায়সঙ্গতার সমস্যা চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, যদি এক সংবেদনশীল বৈশিষ্ট্য যেমন জাতিত্ব বা লিঙ্গ মডেলের পূর্বাভাসে অত্যন্ত প্রভাবশালী হয়, তবে এটি মডেলে জাতি বা লিঙ্গ পক্ষপাতের সংকেত হতে পারে। -![RAI ড্যাশবোর্ডের ফিচার ইম্পরট্যান্স কম্পোনেন্ট](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![ফিচার ইম্পরটেন্স](../../../../translated_images/bn/9-features-influence.3ead3d3f68a84029.webp) -* বৈশ্বিক ব্যাখ্যা: উদাহরণস্বরূপ, ডায়াবেটিস হাসপাতাল পুনরায় ভর্তি মডেলের সামগ্রিক আচরণে কোন বৈশিষ্ট্যগুলি প্রভাব ফেলে? -* স্থানীয় ব্যাখ্যা: উদাহরণস্বরূপ, কেন ৬০ বছরের বেশি বয়সী এবং পূর্ববর্তী হাসপাতালে ভর্তি থাকা একজন ডায়াবেটিক রোগীকে ৩০ দিনের মধ্যে পুনরায় ভর্তি বা পুনরায় ভর্তি না হওয়ার -- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হলো একটি নির্দিষ্ট গোষ্ঠীকে একটি নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো সেবা বা কার্যক্রম যা এটি প্রচার করে তা ক্ষতির কারণ হতে পারে। +ব্যাখ্যাত্মকতা ব্যবহার করুন যখন আপনাকে: -### Azure RAI ড্যাশবোর্ড +* বুঝতে হবে আপনার AI সিস্টেমের পূর্বাভাস কতটা বিশ্বস্ত এবং কোন বৈশিষ্ট্যগুলি পূর্বাভাসে সবচেয়ে গুরুত্বপূর্ণ ভূমিকা রাখে। +* মডেল ডিবাগ করার সময় প্রথমে মডেলটি বুঝতে হবে এবং নির্ণয় করতে হবে মডেল কি স্বাস্থ্যকর বৈশিষ্ট্য ব্যবহার করছে বা শুধুই ভুল সম্পর্ক। +* সম্ভাব্য পক্ষপাত উন্মোচন করতে হবে যে মডেল সংবেদনশীল বৈশিষ্ট্যের ওপর পূর্বাভাস করছে বা তাদের সাথে উচ্চমাত্রায় সম্পর্কিত বৈশিষ্ট্যগুলোর ওপর। +* ব্যবহারকারীদের মডেলের সিদ্ধান্তে বিশ্বাস তৈরি করতে হবে স্থানীয় ব্যাখ্যা তৈরি করে। +* AI সিস্টেমের নিয়ন্ত্রক নিরীক্ষা সম্পন্ন করতে হবে যাতে মডেলগুলি যাচাই হয় এবং মানুষের ওপর মডেল সিদ্ধান্তের প্রভাব পর্যবেক্ষণ করা যায়। + +## উপসংহার + +RAI ড্যাশবোর্ডের সব কম্পোনেন্টই ব্যাবহারিক সরঞ্জাম যা মেশিন লার্নিং মডেলগুলি কম ক্ষতিকর এবং সমাজের জন্য বেশি বিশ্বাসযোগ্য করতে সাহায্য করে। এটি মানবাধিকারের হুমকি প্রতিরোধে উন্নতি করে; নির্দিষ্ট গোষ্ঠীকে জীবন সুযোগ থেকে বঞ্চিত বা বৈষম্যমূলক আচরণ থেকে রক্ষা করে; এবং শারীরিক বা মানসিক আঘাতের ঝুঁকি হ্রাস করে। এটি মডেলের সিদ্ধান্তে বিশ্বাস তৈরি করতে স্থানীয় ব্যাখ্যা তৈরি করতেও সাহায্য করে। সম্ভাব্য ক্ষতিগুলোর শ্রেণীবিভাগ হতে পারে: + +- **বন্টন**, যেমন একটি লিঙ্গ বা জাতি অন্যটির থেকে অধিক প্রাধান্য পাওয়া। +- **সেবা গুণমান**। আপনি যদি ডেটা প্রশিক্ষণ দেন একটি নির্দিষ্ট ক্ষেত্রের জন্য, কিন্তু বাস্তবতা অনেক বেশি জটিল, তাহলে সেবা কর্মক্ষমতা খারাপ হয়। +- **স্টেরিয়োটাইপিং**। একটি নির্দিষ্ট গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা। + +- **অবমাননা**। অন্যায়ভাবে কারো বা কারো কিছু সমালোচনা এবং লেবেল করা। +- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হল একটি নির্দিষ্ট গোষ্ঠী কোনো নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো পরিষেবা বা কার্যকলাপ যা তা প্রচার করে তা ক্ষতি সাধনে অবদান রাখে। + +### অ্যাজুর RAI ড্যাশবোর্ড -[Azure RAI ড্যাশবোর্ড](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ওপেন-সোর্স টুলের উপর ভিত্তি করে তৈরি, যা শীর্ষস্থানীয় একাডেমিক প্রতিষ্ঠান এবং সংস্থাগুলি, Microsoft সহ, ডেটা বিজ্ঞানী এবং AI ডেভেলপারদের মডেলের আচরণ আরও ভালোভাবে বুঝতে, AI মডেল থেকে অপ্রত্যাশিত সমস্যাগুলি আবিষ্কার এবং সমাধান করতে সহায়ক। +[অ্যাজুর RAI ড্যাশবোর্ড](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) প্রধান একাডেমিক প্রতিষ্ঠান এবং সংস্থাগুলির দ্বারা বিকশিত ওপেন-সোর্স সরঞ্জামগুলির ওপর নির্মিত, যার মধ্যে Microsoft রয়েছে, যা ডেটা বিজ্ঞানী ও AI ডেভেলপারদের মডেল আচরণ ভালোভাবে বুঝতে, AI মডেল থেকে অপ্রত্যাশিত সমস্যাগুলো আবিষ্কার এবং প্রশমিত করতে সহায়ক। -- RAI ড্যাশবোর্ডের বিভিন্ন উপাদান কীভাবে ব্যবহার করবেন তা শিখতে [ডকুমেন্টেশন](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) দেখুন। +- RAI ড্যাশবোর্ডের বিভিন্ন উপাদান ব্যবহার শিখতে RAI ড্যাশবোর্ডের [ডকুমেন্টেশন](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) দেখুন। -- Azure Machine Learning-এ আরও দায়িত্বশীল AI পরিস্থিতি ডিবাগ করার জন্য কিছু RAI ড্যাশবোর্ডের [নমুনা নোটবুক](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) দেখুন। +- অ্যাজুর মেশিন লার্নিংয়ে আরও দায়িত্বশীল AI পরিস্থিতির ডিবাগিং-এর জন্য RAI ড্যাশবোর্ডের কিছু [স্যাম্পল নোটবুক](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) দেখুন। --- ## 🚀 চ্যালেঞ্জ -পরিসংখ্যানগত বা ডেটা পক্ষপাত এড়ানোর জন্য আমাদের উচিত: +পরিসংখ্যানগত বা ডেটা পক্ষপাত প্রথম থেকেই এড়াতে, আমাদের উচিত: -- সিস্টেমে কাজ করা ব্যক্তিদের মধ্যে বিভিন্ন পটভূমি এবং দৃষ্টিভঙ্গি থাকা -- এমন ডেটাসেটে বিনিয়োগ করা যা আমাদের সমাজের বৈচিত্র্যকে প্রতিফলিত করে -- পক্ষপাত সনাক্ত এবং সংশোধন করার জন্য আরও ভালো পদ্ধতি তৈরি করা +- সিস্টেমগুলিতে কাজ করা লোকদের মধ্যে বিভিন্ন পটভূমি এবং দৃষ্টিভঙ্গি থাকা +- আমাদের সমাজের বৈচিত্র্য প্রতিফলিত করে এমন ডেটাসেটে বিনিয়োগ করা +- পক্ষপাত সনাক্ত এবং সংশোধনের জন্য আরো উন্নত পদ্ধতি বিকাশ করা যখনই এটি ঘটে -বাস্তব জীবনের পরিস্থিতি নিয়ে চিন্তা করুন যেখানে মডেল তৈরিতে এবং ব্যবহারে অন্যায় স্পষ্ট। আর কী বিবেচনা করা উচিত? +বাস্তব জীবনের এমন পরিস্থিতি ভাবুন যেখানে মডেল তৈরি এবং ব্যবহারে অন্যায়তা স্পষ্ট। আমরা আর কী বিবেচনা করা উচিত? ## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/) ## পর্যালোচনা ও স্ব-অধ্যয়ন -এই পাঠে, আপনি মেশিন লার্নিংয়ে দায়িত্বশীল AI অন্তর্ভুক্ত করার কিছু ব্যবহারিক টুল শিখেছেন। - -এই কর্মশালাটি দেখুন বিষয়গুলো আরও গভীরভাবে বুঝতে: +এই পাঠে, আপনি দায়িত্বশীল AI মেশিন লার্নিং-এ অন্তর্ভুক্ত করার কিছু ব্যবহারিক টুল সম্পর্কে শিখেছেন। -- দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম, Besmira Nushi এবং Mehrnoosh Sameki দ্বারা +এই বিষয়গুলো আরও গভীরভাবে জানতে নিম্নলিখিত কর্মশালাটি দেখুন: -[![দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম") +- দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ, বেসমিরা নুশি ও মেহরনূশ সামেকির দ্বারা +[![দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ") -> 🎥 উপরের ছবিতে ক্লিক করুন ভিডিওর জন্য: দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম, Besmira Nushi এবং Mehrnoosh Sameki দ্বারা +> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ, বেসমিরা নুশি ও মেহরনূশ সামেকির দ্বারা -দায়িত্বশীল AI এবং আরও বিশ্বাসযোগ্য মডেল তৈরি করার বিষয়ে আরও জানতে নিম্নলিখিত উপকরণগুলি দেখুন: +আরও বিশ্বাসযোগ্য মডেল তৈরি ও দায়িত্বশীল AI সম্পর্কে জানতে নিম্নলিখিত উপকরণগুলোর সাহায্য নিন: -- ML মডেল ডিবাগ করার জন্য Microsoft-এর RAI ড্যাশবোর্ড টুল: [দায়িত্বশীল AI টুল রিসোর্স](https://aka.ms/rai-dashboard) +- মাইক্রোসফটের RAI ড্যাশবোর্ড টুলস মেশিন লার্নিং মডেল ডিবাগ করার জন্য: [দায়িত্বশীল AI টুলস রিসোর্সেস](https://aka.ms/rai-dashboard) - দায়িত্বশীল AI টুলকিট অন্বেষণ করুন: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Microsoft-এর RAI রিসোর্স সেন্টার: [দায়িত্বশীল AI রিসোর্স – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- মাইক্রোসফটের RAI রিসোর্স সেন্টার: [দায়িত্বশীল AI রিসোর্স – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft-এর FATE গবেষণা দল: [FATE: AI-তে ন্যায্যতা, জবাবদিহিতা, স্বচ্ছতা এবং নৈতিকতা - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- মাইক্রোসফটের FATE গবেষণা গ্রুপ: [FATE: ন্যায্যতা, হিসাবদারি, স্বচ্ছতা এবং AI-তে নীতি - মাইক্রোসফট রিসার্চ](https://www.microsoft.com/research/theme/fate/) ## অ্যাসাইনমেন্ট @@ -150,5 +173,7 @@ RAI ড্যাশবোর্ডের ফিচার ইম্পরট্ --- -**অস্বীকৃতি**: -এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই। + \ No newline at end of file diff --git a/translations/mr/.co-op-translator.json b/translations/mr/.co-op-translator.json index cb64b65bc..e8a5cb1ae 100644 --- a/translations/mr/.co-op-translator.json +++ b/translations/mr/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "mr" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-06T06:12:57+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T02:19:57+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "mr" }, @@ -54,8 +54,8 @@ "language_code": "mr" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-06T06:06:21+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T02:14:05+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "mr" }, @@ -72,8 +72,8 @@ "language_code": "mr" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-06T06:07:10+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T02:16:28+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "mr" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "mr" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T02:02:25+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "mr" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:58:22+00:00", @@ -115,7 +121,7 @@ }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", - "translation_date": "2025-09-06T06:05:45+00:00", + "translation_date": "2026-07-14T02:15:15+00:00", "source_file": "2-Regression/4-Logistic/README.md", "language_code": "mr" }, @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-06T06:18:51+00:00", + "translation_date": "2026-07-14T02:17:48+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "mr" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-06T06:19:34+00:00", + "translation_date": "2026-07-14T02:18:58+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "mr" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-06T06:12:09+00:00", + "translation_date": "2026-07-14T02:21:00+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "mr" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "mr" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "mr", + "failure_date": "2026-07-14T02:13:15+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "docs/_sidebar.md": { "original_hash": "68dd06c685f6ce840e0acfa313352e7c", "translation_date": "2025-08-29T17:19:16+00:00", diff --git a/translations/mr/1-Introduction/3-fairness/README.md b/translations/mr/1-Introduction/3-fairness/README.md index 8186492e2..bfe6b444c 100644 --- a/translations/mr/1-Introduction/3-fairness/README.md +++ b/translations/mr/1-Introduction/3-fairness/README.md @@ -1,143 +1,167 @@ -# मशीन लर्निंगसह जबाबदार AI उपाय तयार करणे - -![मशीन लर्निंगमधील जबाबदार AI चा सारांश एका स्केच नोटमध्ये](../../../../sketchnotes/ml-fairness.png) -> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +# जबाबदार AI सह मशीन लर्निंग सोल्यूशन्स तयार करणे + +![मशीन लर्निंगमधील जबाबदार AI चा सारांश एका स्केचनोटमध्ये](../../../../translated_images/mr/ml-fairness.ef296ebec6afc98a.webp) +> स्केचनोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांच्याकडून +## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) + ## परिचय -या अभ्यासक्रमात, तुम्ही मशीन लर्निंग कसे आणि कशा प्रकारे आपल्या दैनंदिन जीवनावर परिणाम करत आहे हे शोधायला सुरुवात कराल. सध्या, आरोग्य सेवा निदान, कर्ज मंजुरी किंवा फसवणूक शोधणे यासारख्या दैनंदिन निर्णय घेण्याच्या कामांमध्ये प्रणाली आणि मॉडेल्स सहभागी आहेत. त्यामुळे हे मॉडेल्स विश्वासार्ह परिणाम देण्यासाठी चांगले कार्य करणे महत्त्वाचे आहे. कोणत्याही सॉफ्टवेअर अनुप्रयोगाप्रमाणेच, AI प्रणाली अपेक्षांमध्ये अपयशी ठरू शकतात किंवा अवांछित परिणाम देऊ शकतात. म्हणूनच AI मॉडेलच्या वर्तनाला समजून घेणे आणि स्पष्ट करणे आवश्यक आहे. +या अभ्यासक्रमात, आपण शोधायला सुरुवात कराल की मशीन लर्निंग आपले दररोजचे जीवन कसे प्रभावित करत आहे आणि करीत आहे. अगोदरच, प्रणाली आणि मॉडेल दररोजच्या निर्णय घेण्यात सहभागी आहेत, जसे की आरोग्य देखभाल निदान, कर्ज मंजुरी किंवा फसवणूक शोधणे. त्यामुळे, हे मॉडेल विश्वसनीय निकाल देण्यासाठी चांगले काम करणे आवश्यक आहे. कोणत्याही सॉफ्टवेअर अनुप्रयोगाप्रमाणे, AI प्रणाली अपेक्षा पूर्ण करू शकत नाहीत किंवा अपेक्षित निकाल देऊ शकतात. त्यामुळे, AI मॉडेलच्या वर्तनाचे समजून घेणे आणि स्पष्ट करणे आवश्यक आहे. -कल्पना करा की तुम्ही वापरत असलेल्या डेटामध्ये विशिष्ट लोकसंख्येचा अभाव आहे, जसे की वंश, लिंग, राजकीय दृष्टिकोन, धर्म, किंवा अशा लोकसंख्येचे असमान प्रतिनिधित्व आहे. मॉडेलचा आउटपुट काही लोकसंख्येला प्राधान्य देण्यासाठी व्याख्या केला जातो तेव्हा काय होते? अनुप्रयोगासाठी त्याचा परिणाम काय होतो? याशिवाय, जेव्हा मॉडेलचा प्रतिकूल परिणाम होतो आणि तो लोकांसाठी हानिकारक ठरतो तेव्हा काय होते? AI प्रणालीच्या वर्तनासाठी कोण जबाबदार आहे? हे काही प्रश्न आहेत जे आपण या अभ्यासक्रमात शोधू. +विचार करा की जेव्हा आपण मॉडेल तयार करताना वापरत असलेला डेटा काही विशिष्ट लोकसंख्याशास्त्र जसे की जात, लिंग, राजकीय दृष्टीकोन, धर्म किंवा असममितपणे अशा लोकसंख्यांसाठी प्रतिनिधित्व करणारा नसेल तर काय होईल? जेव्हा मॉडेलचे परिणाम एखाद्या लोकसंख्यास प्राधान्य देण्यासाठी समजले जातात तेव्हा काय होते? अनुप्रयोगासाठी काय परिणाम होतो? शिवाय, जेव्हा मॉडेलचा परिणाम प्रतिकूल असेल आणि लोकांसाठी हानिकारक असेल तेव्हा काय होईल? AI प्रणालींच्या वर्तनासाठी कोण जबाबदार आहे? या काही प्रश्नांचा आपण या अभ्यासक्रमात शोध घेऊ. -या धड्यात तुम्ही: +या धडे दरम्यान, आपण: -- मशीन लर्निंगमधील न्याय्यतेचे महत्त्व आणि न्याय्यतेशी संबंधित हानींबद्दल जागरूकता वाढवाल. -- विश्वासार्हता आणि सुरक्षितता सुनिश्चित करण्यासाठी अपवाद आणि असामान्य परिस्थितींचा अभ्यास करण्याच्या पद्धतीशी परिचित व्हाल. -- सर्वांना सक्षम करण्यासाठी समावेशक प्रणाली डिझाइन करण्याची गरज समजून घ्याल. -- डेटा आणि लोकांच्या गोपनीयतेचे आणि सुरक्षिततेचे संरक्षण करणे किती महत्त्वाचे आहे हे शोधाल. -- AI मॉडेल्सच्या वर्तनाचे स्पष्टीकरण देण्यासाठी पारदर्शक दृष्टिकोनाचे महत्त्व पाहाल. -- AI प्रणालींमध्ये विश्वास निर्माण करण्यासाठी जबाबदारी किती आवश्यक आहे याची जाणीव ठेवाल. +- मशीन लर्निंगमधील निष्पक्षतेचे आणि निष्पक्षतेशी संबंधित हानिकारक परिणाम यांचे महत्त्व जाणून घ्या. +- विश्वासार्हता आणि सुरक्षिततेसाठी अपवादात्मक परिस्थिती आणि असामान्य परिस्थितींचे अन्वेषण करण्याच्या पद्धतीशी परिचित व्हा. +- सर्वांना सशक्त करण्यासाठी समावेशक प्रणाली डिझाइन करण्याच्या गरजेचा समज प्राप्त करा. +- डेटा आणि लोकांच्या गोपनीयता आणि सुरक्षिततेचे संरक्षण करणे किती महत्त्वाचे आहे, हे जाणून घ्या. +- AI मॉडेलच्या वर्तनाचे स्पष्टीकरण देण्यासाठी ग्लास बॉक्स दृष्टिकोन असण्याचे महत्त्व बघा. +- AI प्रणालींमध्ये विश्वास निर्माण करण्यासाठी जबाबदारी किती आवश्यक आहे, याची जाणीव ठेवा. -## पूर्वतयारी +## पूर्व-आवश्यकता -पूर्वतयारी म्हणून, कृपया "Responsible AI Principles" शिकण्याचा मार्ग घ्या आणि खालील व्हिडिओ पहा: +पूर्व-आवश्यकतेसाठी, कृपया "Responsible AI Principles" लर्न पाथ घ्या आणि खालील विषयावर व्हिडिओ पहा: -[Responsible AI शिकण्याचा मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +जबाबदार AI बद्दल अधिक जाणून घेण्यासाठी हा [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) फॉलो करा -[![Microsoft चा जबाबदार AI दृष्टिकोन](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft चा जबाबदार AI दृष्टिकोन") +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 वरील प्रतिमेवर क्लिक करा: Microsoft चा जबाबदार AI दृष्टिकोन +> 🎥 व्हिडिओसाठी वरील प्रतिमा क्लिक करा: Microsoft's Approach to Responsible AI -## न्याय्यता +## निष्पक्षता -AI प्रणालींनी प्रत्येकाशी न्याय्य वर्तन करावे आणि समान गटांवर वेगळ्या प्रकारे परिणाम होण्याचे टाळावे. उदाहरणार्थ, जेव्हा AI प्रणाली वैद्यकीय उपचार, कर्ज अर्ज किंवा रोजगाराबाबत मार्गदर्शन प्रदान करतात, तेव्हा त्यांना समान लक्षणे, आर्थिक परिस्थिती किंवा व्यावसायिक पात्रता असलेल्या प्रत्येकासाठी समान शिफारसी करणे आवश्यक आहे. आपल्यापैकी प्रत्येकजण मानवी म्हणून वारसा मिळालेल्या पूर्वग्रहांसह जगतो, जे आपल्या निर्णयांवर आणि कृतींवर परिणाम करतात. हे पूर्वग्रह आपण AI प्रणालींना प्रशिक्षण देण्यासाठी वापरत असलेल्या डेटामध्ये दिसून येऊ शकतात. अशा प्रकारचे फेरफार कधीकधी अनवधानाने होऊ शकते. डेटामध्ये पूर्वग्रह कधी सादर केला जातो हे जाणून घेणे अनेकदा कठीण असते. +AI प्रणाली प्रत्येकाला निष्पक्ष वागवायला हवी आणि संबंधित लोकसमुहांना भिन्न प्रकारे परिणाम करण्यापासून टाळाव्या. उदाहरणार्थ, जेव्हा AI प्रणाली वैद्यकीय उपचार, कर्ज अर्ज, किंवा नोकरी संदर्भात मार्गदर्शन करतात, तेव्हा त्यांनी अशाच लक्षणे, आर्थिक परिस्थिती, किंवा व्यावसायिक पात्रता असलेल्या सर्व लोकांना समान शिफारशी कराव्यात. आपल्यापैकी प्रत्येकजण जन्मजात पूर्वग्रह घेऊन चालतो ज्यामुळे आपल्या निर्णयांमध्ये प्रभाव पडतो. ह्या पूर्वग्रहांना आम्ही AI प्रणालींसाठी प्रशिक्षण देण्यासाठी वापरलेल्या डेटामधूनही आढळून येते. असे मनुष्याने जाणूनबुजून न करता देखील होऊ शकते. डेटा मध्ये पूर्वग्रह घेत आहात की नाही हे जाणणे अनेकदा कठीण असते. -**"अन्याय"** म्हणजे लोकांच्या गटासाठी नकारात्मक परिणाम किंवा "हानी", जसे की वंश, लिंग, वय किंवा अपंगत्व स्थितीच्या संदर्भात परिभाषित केलेले. न्याय्यतेशी संबंधित मुख्य हानी वर्गीकृत केल्या जाऊ शकतात: +**“अनिष्पक्षता”** म्हणजे एखाद्या लोकसमूहावर नकारात्मक परिणाम किंवा “हानि” अशी जसे की जात, लिंग, वय, किंवा अपंगत्वाच्या आधारे ठरवल्या गेलेल्या लोकांवर होणारी हानी. मुख्य निष्पक्षतेशी संबंधित हानिकारक परिणाम खालीलप्रमाणे वर्गीकृत करता येतात: -- **वाटप**, जसे की एखाद्या लिंगाला किंवा वंशाला दुसऱ्यापेक्षा प्राधान्य दिले जाते. -- **सेवेची गुणवत्ता**. जर तुम्ही डेटा एका विशिष्ट परिस्थितीसाठी प्रशिक्षण दिला असेल परंतु वास्तव अधिक जटिल असेल, तर ते खराब कार्यक्षमतेच्या सेवेकडे नेते. उदाहरणार्थ, एक हात साबण डिस्पेंसर जो गडद त्वचेच्या लोकांना ओळखू शकत नाही. [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **निंदा**. एखाद्या गोष्टीची किंवा व्यक्तीची अन्यायकारक टीका करणे आणि लेबल लावणे. उदाहरणार्थ, एक प्रतिमा लेबलिंग तंत्रज्ञानाने गडद त्वचेच्या लोकांच्या प्रतिमांना गोरिला म्हणून चुकीचे लेबल दिले. -- **अतिरिक्त किंवा अपुरे प्रतिनिधित्व**. एखाद्या विशिष्ट गटाला विशिष्ट व्यवसायात न पाहण्याची कल्पना, आणि कोणतीही सेवा किंवा कार्य जे ते सतत प्रोत्साहित करते ते हानीसाठी योगदान देते. -- **स्टीरिओटायपिंग**. एखाद्या गटाशी पूर्वनिर्धारित गुणधर्म जोडणे. उदाहरणार्थ, इंग्रजी आणि तुर्की भाषांमधील भाषांतर प्रणालीमध्ये लिंगाशी संबंधित स्टीरिओटायपिकल शब्दांमुळे अचूकतेचा अभाव असू शकतो. +- **विनियोजन**, उदाहरणार्थ, एखाद्या लिंग किंवा वंशाला इतरांवर प्राधान्य दिले गेले. +- **सेवेची गुणवत्ता**. जर एक विशिष्ट परिस्थितीसाठी डेटा प्रशिक्षित केला पण वास्तव अधिक गुंतागुंतीचे असेल तर ते कमी गुणवत्ता असलेल्या सेवेकडे नेतं. उदाहरणार्थ, हात धुण्याचा साबण देणारी यंत्रणा काळा त्वचा असलेल्या लोकांना ओळखू शकत नसणे. [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **अपमान**. एखाद्या व्यक्ती किंवा वस्तूचे अन्यायकारकपणे टीका करणे किंवा लेबल करणे. उदाहरणार्थ, चित्र लेबेलिंग तंत्रज्ञानाने काळ्या त्वचेच्या लोकांची चित्रे गोरिल्ला म्हणून चुकीने ग्रुप केल्या होत्या. +- **अधिक किंवा कमी प्रतिनिधित्व**. कल्पना अशी की एखादा समुह विशिष्ट व्यवसायात दिसत नाही, आणि कोणताही सेवा किंवा कार्य जे ते पुढे नेते तितका हानीकारक असतो. +- **सामान्यीकरण**. दिलेल्या गटाशी पूर्व-निर्धारित वैशिष्ट्ये जोडणे. उदाहरणार्थ, इंग्रजी ते तुर्की भाषांतरण प्रणालीत लिंगाधारित सामान्यीकरणामुळे चूका होण्याची शक्यता. -![तुर्की भाषेत भाषांतर](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> तुर्की भाषेत भाषांतर +![तुर्कीमध्ये भाषांतर](../../../../translated_images/mr/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> तुर्कीमध्ये भाषांतर -![पुन्हा इंग्रजीत भाषांतर](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> पुन्हा इंग्रजीत भाषांतर +![परत इंग्रजीमध्ये भाषांतर](../../../../translated_images/mr/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> परत इंग्रजीमध्ये भाषांतर -AI प्रणाली डिझाइन करताना आणि चाचणी करताना, आपल्याला सुनिश्चित करणे आवश्यक आहे की AI न्याय्य आहे आणि पूर्वग्रह किंवा भेदभावपूर्ण निर्णय घेण्यासाठी प्रोग्राम केलेले नाही, जे मानवी देखील घेण्यास मनाई आहे. AI आणि मशीन लर्निंगमध्ये न्याय्यता सुनिश्चित करणे हे एक जटिल सामाजिक-तांत्रिक आव्हान आहे. +AI प्रणाली डिझाइन करताना आणि चाचणी घेताना आपल्याला खात्री करावी लागेल की AI निष्पक्ष आहे आणि पूर्वग्रहित किंवा भेदभाव करणारे निर्णय घेण्यासाठी प्रोग्राम केलेले नाही, जे मानवी लोक देखील करू शकत नाहीत. AI आणि मशीन लर्निंग मधील निष्पक्षता सुनिश्चित करणे एक गुंतागुंतीची सामाजिक-तांत्रिक आव्हान आहे. ### विश्वासार्हता आणि सुरक्षितता -विश्वास निर्माण करण्यासाठी, AI प्रणालींना सामान्य आणि अनपेक्षित परिस्थितीत विश्वासार्ह, सुरक्षित आणि सुसंगत असणे आवश्यक आहे. AI प्रणाली विविध परिस्थितीत कसे वागतील हे जाणून घेणे महत्त्वाचे आहे, विशेषतः जेव्हा ते अपवाद असतात. AI उपाय तयार करताना, AI उपायांना सामोरे जावे लागणाऱ्या विविध परिस्थिती हाताळण्यासाठी कसे लक्ष केंद्रित करावे यावर भर देणे आवश्यक आहे. उदाहरणार्थ, एक स्वयंचलित कार लोकांच्या सुरक्षिततेला सर्वोच्च प्राधान्य म्हणून ठेवणे आवश्यक आहे. परिणामी, कारला चालवणाऱ्या AI ने कारला रात्री, वादळ किंवा हिमवृष्टी, रस्त्यावर धावणारी मुले, पाळीव प्राणी, रस्त्याचे बांधकाम इत्यादीसारख्या सर्व संभाव्य परिस्थितींचा विचार करणे आवश्यक आहे. AI प्रणाली विविध परिस्थिती विश्वासार्हपणे आणि सुरक्षितपणे कशी हाताळते हे डेटा वैज्ञानिक किंवा AI विकसकाने प्रणालीच्या डिझाइन किंवा चाचणी दरम्यान विचारात घेतलेल्या अपेक्षेच्या पातळीचे प्रतिबिंब आहे. +विश्वास निर्माण करण्यासाठी, AI प्रणाली विश्वासार्ह, सुरक्षित आणि सामान्य तसेच अनपेक्षित परिस्थितीत सुसंगत असणे आवश्यक आहे. AI प्रणाली कशा परिस्थितीत कशी वागतील हे जाणून घेणे महत्त्वाचे आहे, विशेषतः जेव्हा त्या अपवादात्मक असतात. AI सोल्यूशन्स तयार करताना विविध परिस्थितींशी कसे हाताळावे यावर भर देणे गरजेचे आहे. उदाहरणार्थ, स्वयंचलित कार लोकांच्या सुरक्षिततेला सर्वोच्च प्राधान्य देते. परिणामी, त्या कारला AI ने सर्व संभाव्य परिस्थितींचा विचार करावा लागतो जसे की रात्री, वादळी हवामान, अपघात, रस्त्यावरील कामे इत्यादी. AI प्रणाली विविध परिस्थितीला किती चांगल्या प्रकारे हाताळतात यावर तिच्या डिझाइनर किंवा डेव्हलपरच्या तयारीचे प्रतिबिंब दिसते. -> [🎥 येथे व्हिडिओसाठी क्लिक करा: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 व्हिडिओसाठी येथे क्लिक करा: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### समावेशकता -AI प्रणाली सर्वांना गुंतवून ठेवण्यासाठी आणि सक्षम करण्यासाठी डिझाइन केल्या पाहिजेत. AI प्रणाली डिझाइन करताना आणि अंमलात आणताना डेटा वैज्ञानिक आणि AI विकसक प्रणालीतील संभाव्य अडथळे ओळखतात आणि त्यांना दूर करतात जे अनवधानाने लोकांना वगळू शकतात. उदाहरणार्थ, जगभरात 1 अब्ज लोक अपंग आहेत. AI च्या प्रगतीमुळे, ते त्यांच्या दैनंदिन जीवनात अधिक सहजपणे माहिती आणि संधींचा मोठ्या प्रमाणावर प्रवेश करू शकतात. अडथळ्यांना दूर करून, ते सर्वांसाठी चांगल्या अनुभवांसह AI उत्पादने विकसित करण्याच्या संधी निर्माण करते. +AI प्रणाली अशा प्रकारे डिझाइन कराव्यात की ते प्रत्येकाला सहभागी करून सशक्त करतील. AI प्रणाली डिझाइन आणि अंमलबजावणी करताना डेटा वैज्ञानिक आणि AI डेव्हलपर अनपेक्षित तह टाळण्यासाठी संभाव्य अडथळ्यांची ओळख करतात आणि त्यांचे निराकरण करतात. उदाहरणार्थ, जगभरात 1 अब्ज लोक अपंग आहेत. AI च्या प्रगतीमुळे ते त्यांच्या दैनंदिन आयुष्यात सुलभपणे माहिती आणि संधींपर्यंत पोहोचू शकतात. अडथळे ओलांडून AI उत्पादनांचे नवोन्मेष आणि विकास करण्याच्या संधी निर्माण होतात. -> [🎥 येथे व्हिडिओसाठी क्लिक करा: AI मधील समावेशकता](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 इथे क्लिक करा: AI मध्ये समावेशन](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### सुरक्षा आणि गोपनीयता -AI प्रणाली सुरक्षित असाव्यात आणि लोकांच्या गोपनीयतेचा आदर करावा. जेव्हा प्रणाली गोपनीयता, माहिती किंवा जीवन धोक्यात आणते तेव्हा लोकांना त्या प्रणालींवर कमी विश्वास असतो. मशीन लर्निंग मॉडेल्स प्रशिक्षण देताना, सर्वोत्तम परिणाम मिळवण्यासाठी डेटावर अवलंबून राहतो. असे करताना, डेटाचा उगम आणि अखंडता विचारात घेतली पाहिजे. उदाहरणार्थ, डेटा वापरकर्त्याने सबमिट केला होता का किंवा सार्वजनिकपणे उपलब्ध होता का? पुढे, डेटासह काम करताना, गोपनीय माहितीचे संरक्षण करू शकणाऱ्या आणि हल्ल्यांना प्रतिकार करू शकणाऱ्या AI प्रणाली विकसित करणे आवश्यक आहे. AI अधिक प्रचलित होत असताना, गोपनीयता आणि महत्त्वाची वैयक्तिक आणि व्यावसायिक माहिती सुरक्षित करणे अधिक महत्त्वाचे आणि जटिल होत आहे. AI साठी गोपनीयता आणि डेटा सुरक्षा समस्यांवर विशेष लक्ष देणे आवश्यक आहे कारण डेटाचा प्रवेश AI प्रणालींना लोकांबद्दल अचूक आणि माहितीपूर्ण अंदाज आणि निर्णय घेण्यासाठी आवश्यक आहे. +AI प्रणाली सुरक्षित असावीत आणि लोकांच्या गोपनीयतेचा आदर करावा. लोक त्या प्रणालींवर कमी विश्वास ठेवतात ज्या त्यांच्या गोपनीयता, माहिती किंवा जीवन धोक्यात आणू शकतात. मशीन लर्निंग मॉडेल्स प्रशिक्षण देताना आम्ही उत्तम निकालांसाठी डेटावर अवलंबून असतो. त्यामुळे, डेटाचा स्रोत आणि अखंडता विचारात घेतली पाहिजे. उदाहरणार्थ, डेटा वापरकर्त्याने सबमिट केलेला आहे का सर्वसामान्यपणे उपलब्ध आहे? त्यानंतर, डेटा वापरून AI प्रणाली विकसित करताना गोपनीय माहितीचे संरक्षण करणे आणि हल्ल्यांशी लढणे आवश्यक आहे. AI अधिक प्रमाणात वापरात येत असल्याने गोपनीयता आणि महत्त्वपूर्ण वैयक्तिक व व्यावसायिक माहितीचे संरक्षण अधिक महत्त्वाचे आणि गुंतागुंतीचे होत आहे. गोपनीयता आणि डेटा सुरक्षा समस्यांवर विशेष लक्ष देणे आवश्यक आहे कारण AI प्रणाली अचूक आणि माहितीपूर्ण अंदाज व निर्णय घेण्यासाठी डेटावर अवलंबून असतात. -> [🎥 येथे व्हिडिओसाठी क्लिक करा: AI मधील सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 येथे क्लिक करा: AI मध्ये सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- उद्योग म्हणून, गोपनीयता आणि सुरक्षिततेमध्ये आम्ही महत्त्वपूर्ण प्रगती केली आहे, जी GDPR (General Data Protection Regulation) सारख्या नियमांमुळे मोठ्या प्रमाणात प्रेरित झाली आहे. -- तरीही AI प्रणालींसह, अधिक वैयक्तिक डेटा आवश्यकतेची तणाव मान्य करणे आवश्यक आहे जे प्रणालींना अधिक वैयक्तिक आणि प्रभावी बनवते – आणि गोपनीयता. -- इंटरनेटसह कनेक्टेड संगणकांच्या जन्माप्रमाणेच, आम्ही AI संबंधित सुरक्षा समस्यांमध्ये मोठी वाढ पाहत आहोत. -- त्याच वेळी, आम्ही सुरक्षा सुधारण्यासाठी AI वापरले जात असल्याचे पाहिले आहे. उदाहरणार्थ, आज बहुतेक आधुनिक अँटी-व्हायरस स्कॅनर AI ह्युरिस्टिक्सद्वारे चालवले जातात. -- आपली डेटा विज्ञान प्रक्रिया नवीनतम गोपनीयता आणि सुरक्षा पद्धतींसह सुसंवादीपणे मिसळली पाहिजे. +- उद्योग म्हणून, आम्ही गोपनीयता आणि सुरक्षा क्षेत्रांत महत्त्वपूर्ण प्रगती केली आहे, जी विशेषतः GDPR (General Data Protection Regulation) सारख्या नियमांमुळे झाली आहे. +- तरीही AI प्रणालींसाठी, अधिक वैयक्तिक डेटा आवश्यक असून सिस्टम अधिक वैयक्तिक आणि कार्यक्षम करण्याच्या गरजेमुळे गोपनीयतेत तणाव असतो. +- इंटरनेटसह कनेक्टेड संगणकांच्या उदयाप्रमाणे, AI संबंधित सुरक्षा समस्यांतही मोठ्या प्रमाणात वाढ झाली आहे. +- त्याच वेळी, AI चा वापर सुरक्षा सुधारण्यासाठीही होतो आहे. उदाहरणार्थ, आजकाल बहुतेक आधुनिक अँटी-व्हायरस स्कॅनर्स AI युक्ति वापरून चालतात. +- आम्हाला आपले डेटा सायन्स प्रक्रिया नवीनतम गोपनीयता आणि सुरक्षा धोरणांसह सुसंगत ठेवावे लागतील. -### पारदर्शकता -AI प्रणाली समजण्यासारख्या असाव्यात. पारदर्शकतेचा एक महत्त्वाचा भाग म्हणजे AI प्रणाली आणि त्यांच्या घटकांच्या वर्तनाचे स्पष्टीकरण देणे. AI प्रणालींचे समज सुधारण्यासाठी भागधारकांना त्यांचे कार्य कसे आणि का कार्य करते हे समजणे आवश्यक आहे जेणेकरून ते संभाव्य कार्यप्रदर्शन समस्या, सुरक्षा आणि गोपनीयता चिंता, पूर्वग्रह, वगळण्याच्या पद्धती किंवा अनपेक्षित परिणाम ओळखू शकतील. आम्हाला असेही वाटते की जे AI प्रणाली वापरतात त्यांनी त्या कधी, का आणि कशा प्रकारे तैनात करायचे ते प्रामाणिक आणि स्पष्ट असावे. तसेच ते वापरत असलेल्या प्रणालींच्या मर्यादा. उदाहरणार्थ, जर एखाद्या बँकेने ग्राहक कर्ज निर्णयांना समर्थन देण्यासाठी AI प्रणालीचा वापर केला असेल, तर परिणाम तपासणे आणि कोणता डेटा प्रणालीच्या शिफारसींवर प्रभाव टाकतो हे समजून घेणे महत्त्वाचे आहे. सरकार विविध उद्योगांमध्ये AI नियमन करण्यास सुरुवात करत आहेत, त्यामुळे डेटा वैज्ञानिक आणि संस्थांनी AI प्रणाली नियामक आवश्यकता पूर्ण करते का हे स्पष्ट करणे आवश्यक आहे, विशेषतः जेव्हा अवांछित परिणाम होतो. +### पारदर्शकता +AI प्रणाली समजण्याजोगी असावीत. पारदर्शकतेचा महत्त्वाचा भाग म्हणजे AI प्रणाली आणि त्यांच्या घटकांचे वर्तन स्पष्ट करणे. AI प्रणालींचे समज वाढविण्यासाठी भागधारकांनी शोधून काढले पाहिजे की ते कसे आणि का कार्य करतात जेणेकरून ते संभाव्य कार्यक्षमता प्रश्न, सुरक्षा आणि गोपनीयता चिंता, पूर्वग्रह, वगळण्याच्या प्रथांविषयी, किंवा अनपेक्षित परिणाम ओळखू शकतील. आम्हाला असा विश्वास आहे की AI प्रणाली वापरणारे लोक ईमानदारीने आणि स्पष्टपणे सांगायला हवे की ते कधी, का आणि कसे वापरतात तसेच वापरत असलेल्या सिस्टमची मर्यादा काय आहेत. उदाहरणार्थ, जर एक बँक ग्राहक कर्ज निर्णयांसाठी AI प्रणाली वापरत असेल, तर परिणाम तपासणे आणि कोणता डेटा सिस्टमच्या शिफारशींवर प्रभाव टाकतो हे समजणे महत्त्वाचे आहे. सरकारे उद्योगांमध्ये AI ला नियमन करत आहेत, म्हणून डेटा वैज्ञानिक आणि संस्थांनी AI सिस्टम नियमांचे पालन करते का ते समजावून सांगणे आवश्यक आहे, विशेषतः जेव्हा अपेक्षित परिणामीत. -> [🎥 येथे व्हिडिओसाठी क्लिक करा: AI मधील पारदर्शकता](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 येथे क्लिक करा: AI मध्ये पारदर्शकता](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- AI प्रणाली इतक्या जटिल असल्यामुळे, त्यांचे कार्य कसे चालते आणि परिणामांची व्याख्या करणे कठीण आहे. -- या समजण्याचा अभाव प्रणालींचे व्यवस्थापन, ऑपरेशनलायझेशन आणि दस्तऐवजीकरण यावर परिणाम करतो. -- या समजण्याचा अभाव अधिक महत्त्वाचा म्हणजे या प्रणालींनी तयार केलेल्या परिणामांचा वापर करून घेतलेले निर्णय प्रभावित करतो. +- AI प्रणाली इतक्या गुंतागुंतीच्या असल्यामुळे, त्यांचा कार्य कसे होते आणि निकालांचे अर्थ लावणे कठीण आहे. +- अशा समजुतीच्या अभावामुळे हे सिस्टम कसे व्यवस्थापित, ऑपरेशनल आणि दस्तऐवजीकरण केले जातात यावर परिणाम होतो. +- सर्वात महत्त्वाचे म्हणजे, परिणामांवर आधारित निर्णय घेण्यात हा अभाव परिणाम करतो. ### जबाबदारी + +जे लोक AI प्रणाली डिझाइन व वापरात आणतात त्यांना त्यांच्या प्रणाली कशा चालतात याची जबाबदारी घ्यावी लागते. विशेषतः चेहरा ओळखण्याच्या तंत्रज्ञानासारख्या संवेदनशील वापरासंबंधित तंत्रज्ञानात जबाबदारी महत्त्वाची आहे. अलीकडे, चेहरा ओळखण्याच्या तंत्रज्ञानाची मागणी वाढली आहे, विशेषतः कायदे अंमलबजावणी संघटनांकडून जे हरवलेली मुले शोधण्यात वापरतात. तरीही, ही तंत्रज्ञान सरकारकडून लोकांच्या मूलभूत स्वातंत्र्यांवर धोका आणण्यासाठीही वापरली जाऊ शकते, उदा. विशिष्ट व्यक्तींवर सातत्य surveillance करण्यासाठी. त्यामुळे, डेटा वैज्ञानिक आणि संस्था त्यांचे AI प्रणाली व्यक्तींवर किंवा समाजावर कसा परिणाम करतात यासाठी जबाबदार असायला हवे. -AI प्रणाली डिझाइन करणारे आणि तैनात करणारे लोक त्यांच्या प्रणाली कशा प्रकारे कार्य करतात यासाठी जबाबदार असले पाहिजेत. चेहरा ओळखण्यासारख्या संवेदनशील तंत्रज्ञानासह जबाबदारीची गरज विशेषतः महत्त्वाची आहे. अलीकडे, चेहरा ओळखण्याच्या तंत्रज्ञानाची मागणी वाढत आहे, विशेषतः कायद्याची अंमलबजावणी करणाऱ्या संस्थांकडून ज्यांना हरवलेल्या मुलांना शोधण्यासारख्या वापरांमध्ये तंत्रज्ञानाची क्षमता दिसते. तथापि, या तंत्रज्ञानाचा वापर सरकारकडून त्यांच्या नागरिकांच्या मूलभूत स्वातंत्र्याला धोका निर्माण करण्यासाठी केला जाऊ शकतो, उदाहरणार्थ, विशिष्ट व्यक्तींच्या सतत देखरेख सक्षम करून. त्यामुळे डेटा वैज्ञानिक आणि संस्थांनी त्यांच्या AI प्रणालीचा व्यक्ती किंवा समाजावर होणाऱ्या परिणामासाठी जबाबदार असणे आवश्यक आहे. +[![Mass Surveillance Through Facial Recognition शी संबंधित जागरूकता](../../../../translated_images/mr/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![AI संशोधकाचा चेहरा ओळखण्याद्वारे मोठ्या प्रमाणावर देखरेखीसाठी इशारा](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft चा जबाबदार AI दृष्टिकोन") +> 🎥 वरील प्रतिमा क्लिक करा: Mass Surveillance Through Facial Recognition चे इशारे -> 🎥 वरील प्रतिमेवर क्लिक करा: चेहरा ओळखण्याद्वारे मोठ्या प्रमाणावर देखरेखीसाठी इशारा - -शेवटी, आमच्या पिढीसाठी सर्वात मोठा प्रश्न, AI समाजात आणणारी पहिली पिढी म्हणून, संगणक लोकांसाठी जबाबदार राहतील याची खात्री कशी करायची आणि संगणक डिझाइन करणारे लोक इतर सर्वांसाठी जबाबदार राहतील याची खात्री कशी करायची हा आहे. +शेवटी, आपल्या पिढीसाठी, जी पहिली पिढी आहे जी AI समाजात आणत आहे, सर्वाधिक मोठा प्रश्न आहे की संगणक लोकांशी जबाबदार राहतील कसे आणि जे लोक संगणक डिझाइन करतात ते सर्वांसाठी जबाबदार राहतील कसे. ## परिणाम मूल्यांकन -मशीन लर्निंग मॉडेल प्रशिक्षण देण्यापूर्वी, AI प्रणालीचा उद्देश समजून घेण्यासाठी परिणाम मूल्यांकन करणे महत्त्वाचे आहे; त्याचा हेतू काय आहे; ते कुठे तैनात केले जाईल; आणि कोण प्रणालीशी संवाद साधत आहे. हे पुनरावलोकन करणाऱ्यांसाठी किंवा प्रणालीचे परीक्षण करणाऱ्यांसाठी संभाव्य जोखीम आणि अपेक्षित परिणाम ओळखताना विचारात घेण्यासारख्या घटकांना जाणून घेण्यासाठी उपयुक्त आहेत. +मशीन लर्निंग मॉडेल प्रशिक्षित करण्यापूर्वी, AI प्रणालीचा हेतू समजून घेण्यासाठी परिणाम मूल्यांकन करणे महत्त्वाचे आहे; उद्दिष्ट काय आहे; कुठे हे तैनात केले जाईल; आणि कोण प्रणालीशी संवाद साधेल. हे समीक्षा करणाऱ्या किंवा प्रणाली चाचणी करणाऱ्या लोकांना संभाव्य धोके आणि अपेक्षित परिणाम ओळखताना विचारात घेण्यास मदत करते. + +परिणाम मूल्यांकन करताना लक्ष द्यावयाच्या क्षेत्रांमध्ये समाविष्ट आहे: -परिणाम मूल्यांकन करताना लक्ष केंद्रित करण्याचे क्षेत्र खालीलप्रमाणे आहेत: +* **व्यक्तींवर प्रतिकूल परिणाम**. प्रणाली व न वापरले जाणारे प्रतिबंध, समर्थन नसलेली वापर किंवा ज्ञात मर्यादा याबद्दल जागरूक राहणे अत्यंत आवश्यक आहे जेणेकरून प्रणाली असा वापर होणार नाही ज्यामुळे व्यक्तींना हानी पोहोचेल. +* **डेटा आवश्यकता**. प्रणाली डेटा कसा आणि कुठे वापरेल हे समजणे समीक्षकांना डेटा आवश्यकता (उदा., GDPR किंवा HIPAA नियमांचे) लक्षात ठेवण्यासाठी मदत करते. शिवाय, डेटा स्रोत आणि प्रमाण पुरेसे आहे का तपासले पाहिजे. +* **परिणाम सारांश**. प्रणाली वापरल्यामुळे उद्भवू शकणाऱ्या संभाव्य हान्यांची यादी तयार करा. ML जीवनचक्रादरम्यान, ओळखलेल्या समस्यांचे निराकरण झाले आहे की नाही हे बघा. +* सहा मुख्य तत्त्वांसाठी **लक्ष्ये**. प्रत्येक तत्त्वांमधील लक्ष्य पूर्ण झाले आहे का आणि काही त्रुटी आहेत का याचे मूल्यमापन करा. -* **व्यक्तींवर प्रतिकूल परिणाम**. कोणत्याही निर्बंध किंवा आवश्यकता, असमर्थित वापर किंवा प्रणालीच्या कार्यक्षमतेस अडथळा आणणाऱ्या कोणत्याही ज्ञात मर्यादा याची जाणीव असणे महत्त्वाचे आहे जेणेकरून प्रणालीचा वापर व्यक्तींना हानी पोहोचविण्याच्या पद्धतीने होऊ नये. -* **डेटा आवश्यकता**. प्रणाली डेटा कसा आणि कुठे वापरेल याची समज मिळवणे पुनरावलोकन करणाऱ्यांना कोणत्याही डेटा आवश्यकता (उदा., GDPR किंवा HIPPA डेटा नियम) विचारात घेणे आवश्यक आहे. याशिवाय, प्रशिक्षणासाठी स्रोत किंवा डेटाचे प्रमाण पुरेसे आहे का हे तपासा. -* **परिणामाचा सारांश**. प्रणाली वापरण्यामुळे उद्भवू शकणाऱ्या संभाव्य हानींची यादी तयार करा. ML जीवनचक्रादरम्यान, ओळखलेल्या समस्यांचे निराकरण किंवा निराकरण केले आहे का ते पुनरावलोकन करा. -* **सहा मुख्य तत्त्वांसाठी लागू उद्दिष्टे**. प्रत्येक तत्त्वांमधील उद्दिष्टे पूर्ण झाली आहेत का आणि काही अंतर आहेत का याचे मूल्यांकन करा. ## जबाबदार AI सह डीबगिंग -सॉफ्टवेअर अनुप्रयोग डीबग करण्यासारखेच, AI प्रणाली डीबग करणे ही प्रणालीतील समस्या ओळखण्याची आणि सोडवण्याची आवश्यक प्रक्रिया आहे. मॉडेल अपेक्षेप्रमाणे किंवा जबाबदारीने कार्य करत नाही यावर परिणाम करणारे अनेक घटक आहेत. बहुतेक पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्स मॉडेलच्या कार्यप्रदर्शनाचे प्रमाणात्मक एकत्रीकरण आहेत, जे मॉडेल जबाबदार AI तत्त्वांचे उल्लंघन कसे करते हे विश्लेषण करण्यासाठी पुरेसे नाहीत. याव्यतिरिक्त, मशीन लर्निंग मॉडेल एक ब्लॅक बॉक्स आहे ज्यामुळे त्याच्या परिणामाचा काय परिणाम होतो हे समजणे कठीण होते किंवा जेव्हा ते चूक करते तेव्हा स्पष्टीकरण प्रदान करणे कठीण होते. या अभ्यासक्रमात नंतर, आम्ही जबाबदार AI डॅशबोर्ड वापरून AI प्रणाली डीबग कशी करावी हे शिकू. डॅशबोर्ड डेटा वैज्ञानिक आणि AI विकसकांना खालील कार्ये करण्यासाठी एक व्यापक साधन प्रदान करतो: +सॉफ्टवेअर अनुप्रयोग डीबगिंग प्रमाणेच, AI प्रणाली डीबगिंग ही प्रणालीतील त्रुटी ओळखण्याची व सोडविण्याची आवश्यक प्रक्रिया आहे. अनेक कारणे असू शकतात ज्या एक मॉडेल अपेक्षेप्रमाणे किंवा जबाबदारीपूर्वक काम करत नाही. बहुतेक पारंपारिक मॉडेल कार्यप्रदर्शन मेट्रिक्स हे मॉडेलच्या एकत्रित कार्याचे मात्रात्मक मूल्यांकन करतात, ज्यामुळे जबाबदार AI तत्त्वांचे उल्लंघन कसे होत आहे हे विश्लेषित करता येत नाही. अजूनही, मशीन लर्निंग मॉडेल हे एक ब्लॅक बॉक्स आहे ज्यामुळे त्याचा निकाल काय प्रेरित करेल किंवा चुका झाल्यास स्पष्टकरण देणे कठीण होते. या कोर्समध्ये पुढे, आपण Responsible AI डॅशबोर्ड वापरून AI प्रणाली डीबग करणे शिकू. हा डॅशबोर्ड डेटा वैज्ञानिक आणि AI डेव्हलपरसाठी संपूर्ण साधन देतो: + +* **त्रुटी विश्लेषण**. प्रणालीच्या निष्पक्षता किंवा विश्वासार्हतेवर परिणाम करणाऱ्या त्रुटी वितरण ओळखण्यासाठी. +* **मॉडेल पूर्वावलोकन**. डेटा समूहांमधील कार्यक्षमतेतील असमानता शोधण्यासाठी. +* **डेटा विश्लेषण**. डेटा वितरण समजण्यासाठी आणि संभाव्य पूर्वग्रह ओळखण्यासाठी ज्यामुळे निष्पक्षता, समावेशन व विश्वासार्हतेचे प्रश्न उद्भवू शकतात. +* **मॉडेल समज**. मॉडेलच्या भाकितांवर प्रभाव टाकणाऱ्या घटकांचा आढावा घ्या. हे मॉडेलच्या वर्तनाचे स्पष्टीकरण देण्यासाठी महत्त्वाचे आहे, जे पारदर्शकता आणि जबाबदारीसाठी आवश्यक आहे. + + +## 🚀 आव्हान + +हानिकारक परिणाम प्रथमच उद्भवू नयेत यासाठी, आपल्याला: + +- प्रणालींवर काम करणाऱ्या लोकांमध्ये वैविध्यपूर्ण पार्श्वभूमी आणि दृष्टीकोन असावेत +- आपल्या समाजातील विविधतेचे प्रतिबिंब दाखवणाऱ्या डेटासेटमध्ये गुंतवणूक करावी +- मशीन लर्निंगच्या संपूर्ण जीवनचक्रात संभाव्य जबाबदार AI चे शोध घेणे आणि दुरुस्ती करण्याच्या अधिक चांगल्या पद्धती विकसित कराव्यात + +वास्तविक जीवनातील अशा परिस्थितींचा विचार करा जिथे मॉडेलचा अविश्वासार्हपणा मॉडेल तयार करणे आणि वापरण्यात स्पष्ट आहे. आणखी काय विचारले पाहिजे? + +## [पश्चात्ताप व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) + +## पुनरावलोकन व स्वअध्ययन + -* **त्रुटी विश्लेषण**. मॉडेलच्या त्रुटी वितरणाची ओळख करण्यासाठी जे प्रणालीच्या न्याय्यतेवर किंवा विश्वासार्हतेवर परिणाम करू शकते. -* **मॉड -या कार्यशाळेचा अभ्यास करून विषय अधिक सखोल समजून घ्या: +या धड्यात, आपण मशीन लर्निंगमधील न्याय आणि अन्याय या संकल्पनांच्या काही मूलभूत गोष्टी शिकलात. + +या विषयांवर अधिक खोलवर जाण्यासाठी हा कार्यशाळा पहा: -- जबाबदार AI च्या शोधात: तत्त्वांपासून प्रत्यक्षात आणण्यापर्यंत, Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांच्याकडून +- जबाबदार AI च्या शोधासाठी: Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांचेद्वारे तत्त्वांना व्यवहारात आणणे -[![Responsible AI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क, Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांच्याकडून +> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांचेद्वारे RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक मुक्त स्रोत फ्रेमवर्क -तसेच वाचा: +तसेच, वाचा: -- Microsoft चा RAI संसाधन केंद्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Microsoft चे RAI संसाधन केंद्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft चा FATE संशोधन गट: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft चे FATE संशोधन समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: -- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub संग्रहालय](https://github.com/microsoft/responsible-ai-toolbox) -Azure Machine Learning च्या साधनांबद्दल वाचा जे न्याय सुनिश्चित करतात: +Azure मशीन लर्निंगच्या न्याय सुनिश्चित करण्यासाठीच्या साधनांविषयी वाचा: -- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) ## असाइनमेंट -[RAI Toolbox एक्सप्लोर करा](assignment.md) +[RAI Toolbox अन्वेषण करा](assignment.md) --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमजांकरिता किंवा चुकीच्या अर्थ लावण्याकरिता आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/2-Regression/1-Tools/README.md b/translations/mr/2-Regression/1-Tools/README.md index a32ad7300..69cffa8c8 100644 --- a/translations/mr/2-Regression/1-Tools/README.md +++ b/translations/mr/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Python आणि Scikit-learn वापरून रिग्रेशन मॉडेल्ससाठी सुरुवात करा +# पुनरावृत्ती मॉडेलसाठी Python आणि Scikit-learn सह सुरुवात करा -![रिग्रेशनचा स्केच नोटमध्ये सारांश](../../../../sketchnotes/ml-regression.png) +![स्केच नोटमधील पुनरावृत्त्यांचा सारांश](../../../../translated_images/mr/ml-regression.4e4f70e3b3ed446e.webp) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांनी तयार केले आहे +> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांचा -## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +## [पूर्व-पाठ प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/) > ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## परिचय -या चार धड्यांमध्ये, तुम्ही रिग्रेशन मॉडेल्स कसे तयार करायचे ते शिकाल. आम्ही लवकरच याचा उपयोग कशासाठी होतो ते चर्चा करू. पण काहीही करण्यापूर्वी, प्रक्रिया सुरू करण्यासाठी योग्य साधने तुमच्याकडे आहेत याची खात्री करा! +या चार धड्यांमध्ये, आपण पुनरावृत्ती मॉडेल्स कसे तयार करायचे हे शोधणार आहात. आपण लवकरच या मॉडेल्ससाठी काय उपयोग होतो ते चर्चा करू. पण काहीही करण्यापूर्वी, खात्री करा की आपल्या जवळ योग्य साधने आहेत ज्यामुळे प्रक्रिया सुरू करता येईल! -या धड्यात तुम्ही शिकाल: +या धड्यात, आपण शिकाल कसे: -- स्थानिक मशीन लर्निंग कार्यांसाठी तुमचा संगणक कॉन्फिगर करणे. -- Jupyter नोटबुक्ससह काम करणे. -- Scikit-learn वापरणे, त्यात स्थापना समाविष्ट आहे. -- एक व्यावहारिक सराव करून रेखीय रिग्रेशन एक्सप्लोर करणे. +- आपल्या संगणकाला स्थानिक मशीन लर्निंग कार्यांसाठी सेटअप करा. +- Jupyter नोटबुक्ससह काम करा. +- Scikit-learn वापरा, स्थापना समाविष्ट आहे. +- एक प्रत्यक्ष हाताळणीसह रेषीय पुनरावृत्तीचा अभ्यास करा. ## स्थापना आणि कॉन्फिगरेशन -[![मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने सेट करा](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने सेट करा") +[![ML प्रारंभिकांसाठी - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने तयार करा](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML प्रारंभिकांसाठी - तुमची साधने तयार करा") -> 🎥 वरील प्रतिमेवर क्लिक करा, तुमचा संगणक एमएलसाठी कॉन्फिगर करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी. +> 🎥 ML साठी संगणक कॉन्फिगर करण्यासंबंधी थोडक व्हिडिओ पाहण्यासाठी वरील प्रतिमेवर क्लिक करा. -1. **Python स्थापित करा**. खात्री करा की [Python](https://www.python.org/downloads/) तुमच्या संगणकावर स्थापित आहे. तुम्ही डेटा सायन्स आणि मशीन लर्निंग कार्यांसाठी Python वापराल. बहुतेक संगणक प्रणालींमध्ये आधीच Python स्थापित असते. काही वापरकर्त्यांसाठी सेटअप सुलभ करण्यासाठी उपयुक्त [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) उपलब्ध आहेत. +1. **Python स्थापित करा**. खात्री करा की [Python](https://www.python.org/downloads/) आपल्याला संगणकावर स्थापित आहे. आपण Python अनेक डेटा सायन्स आणि मशीन लर्निंग कार्यांसाठी वापरणार आहात. अनेक संगणकांमध्ये Python आधीपासूनच स्थापित असलेला असतो. काही वापरकर्त्यांसाठी सेटअप सुलभ करण्यासाठी उपयोगी [Python कोडिंग पॅक्स](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) देखील उपलब्ध आहेत. - Python चा काही उपयोग, तथापि, सॉफ्टवेअरच्या एका आवृत्तीची आवश्यकता असतो, तर इतरांना वेगळ्या आवृत्तीची आवश्यकता असते. यासाठी, [virtual environment](https://docs.python.org/3/library/venv.html) मध्ये काम करणे उपयुक्त ठरते. + काही Python चा वापर एका आवृत्तीमध्ये असतो, तर काही दुसऱ्या आवृत्तीची गरज असते. म्हणूनच, [वर्च्युअल एन्व्हायर्नमेंट](https://docs.python.org/3/library/venv.html) मध्ये काम करणे उपयोगी ठरते. -2. **Visual Studio Code स्थापित करा**. खात्री करा की Visual Studio Code तुमच्या संगणकावर स्थापित आहे. [Visual Studio Code स्थापित करण्यासाठी](https://code.visualstudio.com/) या सूचनांचे अनुसरण करा. तुम्ही या कोर्समध्ये Visual Studio Code मध्ये Python वापरणार आहात, त्यामुळे Python विकासासाठी [Visual Studio Code कॉन्फिगर कसे करावे](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) याबद्दल माहिती मिळवा. +2. **Visual Studio Code स्थापित करा**. खात्री करा की आपल्याकडे Visual Studio Code स्थापित आहे. मूलभूत स्थापना करण्यासाठी [Visual Studio Code कसे स्थापित करायचे](https://code.visualstudio.com/) याचे निर्देश पाळा. आपण या कोर्समध्ये Visual Studio Code मध्ये Python वापरणार आहात, त्यामुळे Python विकासासाठी Visual Studio Code कसे कॉन्फिगर करायचे याचा आढावा घेणे अनिवार्य आहे. [Visual Studio Code कॉन्फिगरेशन](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) कसे करायचे ते पाहा. - > Python मध्ये आरामदायक व्हा, या [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) संग्रहातून काम करून. + > Python सोबत आरामदायी होण्यासाठी या [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) मध्ये काम करा. > > [![Visual Studio Code सह Python सेटअप करा](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code सह Python सेटअप करा") > - > 🎥 वरील प्रतिमेवर क्लिक करा, VS Code मध्ये Python वापरण्यासाठी व्हिडिओ पाहण्यासाठी. + > 🎥 VS Code मध्ये Python कसा वापरायचा याबाबत व्हिडिओ पाहण्यासाठी प्रतिमेवर क्लिक करा. -3. **Scikit-learn स्थापित करा**, [या सूचनांचे अनुसरण करून](https://scikit-learn.org/stable/install.html). तुम्हाला Python 3 वापरण्याची खात्री करावी लागेल, त्यामुळे virtual environment वापरण्याची शिफारस केली जाते. लक्षात ठेवा, जर तुम्ही M1 Mac वर हे लायब्ररी स्थापित करत असाल, तर वरील लिंक केलेल्या पृष्ठावर विशेष सूचना आहेत. +3. **Scikit-learn स्थापित करा**, [या सूचनांचे](https://scikit-learn.org/stable/install.html) पालन करून. आपण Python 3 वापरत असल्याची खात्री करावी लागते, म्हणून वर्च्युअल एन्व्हायर्नमेंट वापरण्याचा सल्ला दिला जातो. लक्षात घ्या की, आपल्याला हे M1 Mac वर स्थापित करायचे असल्यास, वर दिलेल्या लिंकवर खास सूचना उपलब्ध आहेत. -4. **Jupyter Notebook स्थापित करा**. तुम्हाला [Jupyter package](https://pypi.org/project/jupyter/) स्थापित करावे लागेल. +1. **Jupyter Notebook स्थापित करा**. आपण [Jupyter पॅकेज](https://pypi.org/project/jupyter/) स्थापित करणे आवश्यक आहे. -## तुमचे एमएल लेखन वातावरण +## आपले ML लेखन वातावरण -तुम्ही **notebooks** वापरून तुमचा Python कोड विकसित कराल आणि मशीन लर्निंग मॉडेल्स तयार कराल. डेटा सायंटिस्ट्ससाठी ही फाइल प्रकार सामान्य साधन आहे आणि त्यांना त्यांच्या विस्तार `.ipynb` द्वारे ओळखले जाऊ शकते. +आपण Python कोड विकसित करण्यासाठी आणि मशीन लर्निंग मॉडेल्स तयार करण्यासाठी **नोटबुक्स** वापरणार आहात. अशा प्रकारचे फायली डेटा सायंटिस्टसाठी सामान्य साधन असून त्यांचा प्रत्यय `.ipynb` या प्रत्ययाने ओळखला जातो. -नोटबुक्स एक परस्परसंवादी वातावरण आहे जे विकसकाला कोड लिहिण्यास आणि कोडच्या आसपास टिपा आणि दस्तऐवज लिहिण्यास परवानगी देते, जे प्रायोगिक किंवा संशोधन-आधारित प्रकल्पांसाठी खूप उपयुक्त आहे. +नोटबुक्स हे एक परस्परसंवादी वातावरण आहे जे विकासकाला कोड करण्यास आणि कोडबाबत नोट्स व दस्तऐवज लिहिण्यास अनुमती देते, जे अनुभवात्मक किंवा संशोधन-उन्मुख प्रकल्पांसाठी फारच उपयुक्त आहे. -[![मशीन लर्निंगसाठी सुरुवात - रिग्रेशन मॉडेल्स तयार करण्यासाठी Jupyter Notebooks सेट करा](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंगसाठी सुरुवात - रिग्रेशन मॉडेल्स तयार करण्यासाठी Jupyter Notebooks सेट करा") +[![ML प्रारंभिकांसाठी - पुनरावृत्ती मॉडेल तयार करण्यासाठी Jupyter नोटबुक सेट करा](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML प्रारंभिकांसाठी - पुनरावृत्ती मॉडेल तयार करण्यासाठी Jupyter नोटबुक सेट करा") -> 🎥 वरील प्रतिमेवर क्लिक करा, या सरावामध्ये काम करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी. +> 🎥 या व्यायामाद्वारे कार्यरत व्हिडिओ पाहण्यासाठी वरील प्रतिमेवर क्लिक करा. -### सराव - नोटबुकसह काम करा +### व्यायाम - नोटबुकसोबत काम करा -या फोल्डरमध्ये, तुम्हाला _notebook.ipynb_ नावाची फाइल सापडेल. +या फोल्डरमध्ये, आपण _notebook.ipynb_ फाइल पाहू शकता. -1. _notebook.ipynb_ Visual Studio Code मध्ये उघडा. +1. Visual Studio Code मध्ये _notebook.ipynb_ उघडा. - Jupyter सर्व्हर Python 3+ सह सुरू होईल. तुम्हाला नोटबुकच्या भागांमध्ये `run` करता येणारे कोडचे तुकडे सापडतील. तुम्ही प्ले बटणासारखे दिसणारे चिन्ह निवडून कोड ब्लॉक चालवू शकता. + Python 3+ सह Jupyter सर्व्हर सुरू होईल. नोटबुकमध्ये काही ठिकाणी कोड ब्लॉक्स `run` करता येतात. एखादा कोड ब्लॉक चालवायला, प्ले बटणासारखा असलेला आयकॉन निवडा. -2. `md` चिन्ह निवडा आणि थोडेसे markdown आणि खालील मजकूर जोडा **# Welcome to your notebook**. +1. `md` आयकॉन निवडा आणि थोडा Markdown आणि पुढील मजकूर **# Welcome to your notebook** जोडा. - नंतर, काही Python कोड जोडा. + नंतर काही Python कोड जोडा. -3. कोड ब्लॉकमध्ये **print('hello notebook')** टाइप करा. -4. कोड चालवण्यासाठी बाण निवडा. +1. कोड ब्लॉकमध्ये **print('hello notebook')** टाइप करा. +1. कोड चालविण्यासाठी बाण आयकॉन निवडा. - तुम्हाला मुद्रित विधान दिसले पाहिजे: + तुम्हाला मुद्रित विधान दिसेल: ```output hello notebook ``` -![VS Code मध्ये नोटबुक उघडलेले](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code सह नोटबुक उघडलेला](../../../../translated_images/mr/notebook.4a3ee31f396b8832.webp) -तुम्ही तुमच्या कोडसह टिप्पण्या जोडून नोटबुक स्वतः दस्तऐवजीकरण करू शकता. +तुम्ही तुमचा कोड टिप्पणींसह एका नोटबुकमध्ये दस्तऐवजीकरणासाठी मिसळू शकता. -✅ एका मिनिटासाठी विचार करा की वेब विकसकाचे कार्य वातावरण डेटा सायंटिस्टच्या कार्य वातावरणापेक्षा किती वेगळे आहे. +✅ एक मिनिट थांबा आणि विचार करा की वेब विकसकाचे कामाचे वातावरण आणि डेटा सायंटिस्टचे कामाचे वातावरण किती वेगळे आहे. -## Scikit-learn सह सुरुवात +## Scikit-learn सह सुरू करा -आता Python तुमच्या स्थानिक वातावरणात सेट केले आहे आणि तुम्ही Jupyter नोटबुक्समध्ये आरामदायक आहात, चला Scikit-learn मध्ये तितकेच आरामदायक होऊया (`sci` म्हणजे `science` असे उच्चारले जाते). Scikit-learn तुम्हाला एमएल कार्ये करण्यास मदत करण्यासाठी [व्यापक API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करते. +आता Python आपल्या स्थानिक वातावरणामध्ये सेट झाला आहे आणि आपण Jupyter नोटबुक्ससह परिचित आहात, चला Scikit-learn (हे `sci` म्हणजे `science` सारखे उच्चारले जाते) ज्यासह समान परिचित होऊया. Scikit-learn तुम्हाला ML कार्य करण्यासाठी मोठ्या प्रमाणात API देतो. -त्यांच्या [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) नुसार, "Scikit-learn एक ओपन सोर्स मशीन लर्निंग लायब्ररी आहे जी supervised आणि unsupervised learning ला समर्थन देते. हे मॉडेल फिटिंग, डेटा preprocessing, मॉडेल निवड आणि मूल्यांकन, आणि इतर अनेक उपयुक्तता साधनांसाठी विविध साधने प्रदान करते." +त्यांच्या [वेबसाईट](https://scikit-learn.org/stable/getting_started.html) नुसार, "Scikit-learn हे एक मुक्त स्रोत मशीन लर्निंग लायब्ररी आहे जे सुपरवाइज्ड आणि अनसुपरवाइज्ड लर्निंग समर्थित करते. हे मॉडेल फिटिंग, डेटा पूर्वप्रक्रिया, मॉडेल निवड आणि मूल्यांकन यासाठी विविध साधने देते." -या कोर्समध्ये, तुम्ही Scikit-learn आणि इतर साधने वापरून मशीन लर्निंग मॉडेल्स तयार कराल जे आम्ही 'पारंपरिक मशीन लर्निंग' कार्ये म्हणतो. आम्ही neural networks आणि deep learning टाळले आहे, कारण ते आमच्या आगामी 'AI for Beginners' अभ्यासक्रमात चांगले कव्हर केले जातील. +या कोर्समध्ये, आपण Scikit-learn आणि इतर साधने वापरून पारंपरिक मशीन लर्निंग कार्ये पार पाडणारे मशीन लर्निंग मॉडेल्स तयार करणार आहोत. आम्ही नेहमीच्या न्यूरल नेटवर्क्स आणि डीप लर्निंग टाळले आहे, ते आमच्या येत्या 'AI for Beginners' अभ्यासक्रमात चांगल्या प्रकारे समजावले जातील. -Scikit-learn मॉडेल्स तयार करणे आणि त्यांचे मूल्यांकन करणे सोपे करते. हे प्रामुख्याने संख्यात्मक डेटा वापरण्यावर लक्ष केंद्रित करते आणि शिकण्याच्या साधनांप्रमाणे वापरण्यासाठी अनेक तयार केलेले डेटासेट्स समाविष्ट करते. विद्यार्थ्यांना प्रयत्न करण्यासाठी पूर्व-निर्मित मॉडेल्स देखील समाविष्ट आहेत. चला Scikit-learn सह काही मूलभूत डेटासह पूर्व-पॅकेज केलेला डेटा लोड करण्याची प्रक्रिया आणि पहिला एमएल मॉडेल वापरणे एक्सप्लोर करूया. +Scikit-learn मॉडेल तयार करणे आणि त्यांचे मूल्यांकन करणे सोपे करते. हा मुख्यतः संख्यात्मक डेटासाठी लक्ष केंद्रित करतो आणि शिकण्यासाठी अनेक तयार केलेले डेटासेट्स समाविष्ट करतो. यात पूर्व-निर्मित मॉडेल्सही आहेत, ज्याचा विद्यार्थी प्रयत्न करू शकतात. चला प्रीपॅकज्ड डेटा लोड करणे आणि स्थापत्याकार वापरून प्रथम ML मॉडेल तयार करण्याची प्रक्रिया पाहूया. -## सराव - तुमचा पहिला Scikit-learn नोटबुक +## व्यायाम - तुमचा पहिला Scikit-learn नोटबुक -> हा ट्यूटोरियल Scikit-learn च्या वेबसाइटवरील [रेखीय रिग्रेशन उदाहरण](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) द्वारे प्रेरित आहे. +> हा ट्युटोरियल Scikit-learn च्या [रेषीय पुनरावृत्ती उदाहरणावर](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) आधारित आहे. -[![मशीन लर्निंगसाठी सुरुवात - Python मध्ये तुमचा पहिला रेखीय रिग्रेशन प्रकल्प](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निंगसाठी सुरुवात - Python मध्ये तुमचा पहिला रेखीय रिग्रेशन प्रकल्प") -> 🎥 वरील प्रतिमेवर क्लिक करा, या सरावामध्ये काम करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी. +[![ML प्रारंभिकांसाठी - Python मध्ये तुमचा पहिला रेषीय पुनरावृत्ती प्रकल्प](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML प्रारंभिकांसाठी - तुमचा पहिला रेषीय पुनरावृत्ती प्रकल्प") -_नोटबुक.ipynb_ फाइलमधील सर्व सेल्स 'trash can' चिन्हावर क्लिक करून साफ करा. +> 🎥 या व्यायामामुळे कार्यरत व्हिडिओ पाहण्यासाठी प्रतिमेवर क्लिक करा. -या विभागात, तुम्ही Scikit-learn मध्ये शिकण्यासाठी तयार केलेल्या मधुमेहाबद्दलच्या लहान डेटासेटसह काम कराल. कल्पना करा की तुम्हाला मधुमेहाच्या रुग्णांसाठी उपचाराची चाचणी करायची आहे. मशीन लर्निंग मॉडेल्स तुम्हाला व्हेरिएबल्सच्या संयोजनांवर आधारित कोणते रुग्ण उपचाराला चांगला प्रतिसाद देतील हे ठरविण्यात मदत करू शकतात. अगदी मूलभूत रिग्रेशन मॉडेल, जेव्हा व्हिज्युअलाइज केले जाते, तेव्हा व्हेरिएबल्सबद्दल माहिती दर्शवू शकते जी तुम्हाला तुमच्या सैद्धांतिक क्लिनिकल चाचण्या आयोजित करण्यात मदत करू शकते. +_notebook.ipynb_ फायलीमध्ये, या धड्याशी संलग्न असलेल्या सर्व सेल काढा 'trash can' आयकॉनवर क्लिक करून. -✅ रिग्रेशन पद्धतींच्या अनेक प्रकार आहेत, आणि तुम्ही कोणती निवडता ते तुम्हाला शोधायचे उत्तर कोणते आहे यावर अवलंबून असते. जर तुम्हाला दिलेल्या वयाच्या व्यक्तीसाठी संभाव्य उंचीचा अंदाज घ्यायचा असेल, तर तुम्ही रेखीय रिग्रेशन वापराल, कारण तुम्ही **संख्यात्मक मूल्य** शोधत आहात. जर तुम्हाला एखाद्या प्रकारच्या खाद्यपदार्थाला शाकाहारी मानावे की नाही हे शोधायचे असेल, तर तुम्ही **श्रेणी असाइनमेंट** शोधत आहात, त्यामुळे तुम्ही लॉजिस्टिक रिग्रेशन वापराल. तुम्ही नंतर लॉजिस्टिक रिग्रेशनबद्दल अधिक शिकाल. डेटामधून काही प्रश्न विचारण्याचा विचार करा आणि या पद्धतींपैकी कोणती अधिक योग्य असेल. +या विभागात, आपण Scikit-learn मध्ये शिकण्यासाठी तयार केलेल्या मध्यम आकाराच्या डायबिटीज डेटासेटसह काम करणार आहात. समजा तुम्हाला डायबिटीक रुग्णांसाठी उपचाराची चाचणी करायची आहे. मशीन लर्निंग मॉडेल तुम्हाला ठरवण्यास मदत करू शकतात की कोणते रुग्ण उपचारावर चांगले प्रतिसाद देतील, भिन्न चलांच्या संयोजनावरून. अगदी प्राथमिक पुनरावृत्ती मॉडेल, जे दृश्यात आणले आहे, ते चलांबद्दल अशी माहिती दाखवू शकते जी तुमच्या तात्विक नैदानिक चाचण्यांचे आयोजन करण्यास मदत करू शकते. + +✅ पुनरावृत्तीच्या अनेक प्रकार आहेत, आणि आपल्याला कोणता वापरायचा हे तुम्ही शोधत असलेल्या उत्तरावर अवलंबून आहे. जर तुम्हाला एखाद्या वयाच्या व्यक्तीची संभाव्य उंची भविष्यवाणी करायची असेल, तर तुम्ही रेषीय पुनरावृत्ती वापराल कारण तुम्हाला **संख्यात्मक मूल्य** हवे आहे. जर तुम्हाला शोधायचे असेल की कुठल्या प्रकारच्या खाद्यपदार्थाचे वर्गीकरण व्हेगन म्हणून करायचे आहे का नाही, तर तुम्हाला **श्रेणी-नियुक्ती** पाहिजे असेल, म्हणून तुम्ही लॉजिस्टिक पुनरावृत्ती वापराल. लॉजिस्टिक पुनरावृत्तीबद्दल आपण पुढे शिकलो. डेटा विषयी तुम्ही विचार कराल असे काही प्रश्न आणि त्यासाठी कोणती पद्धत योग्य ठरेल हे थोडे विचार करा. चला या कार्यावर सुरुवात करूया. ### लायब्ररी आयात करा -या कार्यासाठी आम्ही काही लायब्ररी आयात करू: +या कार्यासाठी आपण काही लायब्ररी आयात करू: -- **matplotlib**. हे एक उपयुक्त [ग्राफिंग साधन](https://matplotlib.org/) आहे आणि आम्ही याचा वापर लाइन प्लॉट तयार करण्यासाठी करू. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ही Python मध्ये संख्यात्मक डेटा हाताळण्यासाठी उपयुक्त लायब्ररी आहे. +- **matplotlib**. हे एक उपयुक्त [ग्राफिंग साधन](https://matplotlib.org/) आहे आणि आपण याचा वापर रेषा प्लॉटसाठी करू. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) हा Python मध्ये संख्यात्मक डेटाचा हाताळणीसाठी उपयुक्त लायब्ररी आहे. - **sklearn**. ही [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) लायब्ररी आहे. -तुमच्या कार्यांसाठी मदत करण्यासाठी काही लायब्ररी आयात करा. +तुमच्या कार्यांसाठी काही लायब्ररी आयात करा. -1. खालील कोड टाइप करून आयात जोडा: +1. पुढील कोड टाइप करून आयात जोडा: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ _नोटबुक.ipynb_ फाइलमधील सर्व सेल्स from sklearn import datasets, linear_model, model_selection ``` - वरील कोडमध्ये तुम्ही `matplotlib`, `numpy` आयात करत आहात आणि तुम्ही `sklearn` मधून `datasets`, `linear_model` आणि `model_selection` आयात करत आहात. `model_selection` डेटा प्रशिक्षण आणि चाचणी संचांमध्ये विभाजित करण्यासाठी वापरले जाते. + वरील कोडमध्ये आपण `matplotlib`, `numpy` आयात करत आहात आणि `sklearn` मधून `datasets`, `linear_model` आणि `model_selection` आयात करत आहात. `model_selection` डेटा प्रशिक्षण आणि चाचणी संचात विभागण्यासाठी वापरला जातो. -### मधुमेह डेटासेट +### डायबिटीज डेटासेट -Scikit-learn मध्ये तयार केलेला [मधुमेह डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मधुमेहाबद्दल 442 नमुन्यांचा डेटा समाविष्ट करतो, ज्यामध्ये 10 वैशिष्ट्य व्हेरिएबल्स आहेत, त्यापैकी काही: +अंतर्भूत [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मध्ये डायबिटीज संदर्भातील 442 नमुने आहेत, ज्यामध्ये 10 वैशिष्ट्य चल आहेत, ज्यात काही आहेत: -- age: वय वर्षांमध्ये -- bmi: बॉडी मास इंडेक्स +- age: वय वर्षांत +- bmi: शरीर द्रव्यमान निर्देशांक - bp: सरासरी रक्तदाब -- s1 tc: टी-सेल्स (पांढऱ्या रक्त पेशींचा एक प्रकार) +- s1 tc: टी-सेल्स (पांढऱ्या रक्तकणांचा प्रकार) -✅ या डेटासेटमध्ये मधुमेहाच्या संशोधनासाठी महत्त्वाचे वैशिष्ट्य व्हेरिएबल म्हणून 'sex' चा समावेश आहे. अनेक वैद्यकीय डेटासेट्समध्ये अशा प्रकारचे binary वर्गीकरण समाविष्ट असते. अशा वर्गीकरणांमुळे लोकसंख्येच्या काही भागांना उपचारांपासून वगळले जाऊ शकते याचा विचार करा. +✅ या डेटासेटमध्ये 'sex' नावाचा एक वैशिष्ट्य चल आहे जो डायबिटीज संशोधनासाठी महत्त्वाचा आहे. अनेक वैद्यकीय डेटासेट्समध्ये अशा द्विअर्थ वर्गीकरणाचा समावेश असतो. असा विचार करा की अशा प्रकारच्या वर्गीकरणामुळे लोकसंख्येचा काही भाग उपचारापासून वगळला जाऊ शकतो. आता X आणि y डेटा लोड करा. -> 🎓 लक्षात ठेवा, हे supervised learning आहे, आणि आपल्याला नाव असलेला 'y' target आवश्यक आहे. +> 🎓 लक्षात ठेवा, हे सुपरवाइज्ड लर्निंग आहे, आणि आम्हाला एका नाव असलेल्या 'y' टारगेटची गरज आहे. -नवीन कोड सेलमध्ये, `load_diabetes()` कॉल करून मधुमेह डेटासेट लोड करा. इनपुट `return_X_y=True` संकेत देतो की `X` डेटा मॅट्रिक्स असेल, आणि `y` रिग्रेशन target असेल. +एका नवीन कोड सेलमध्ये, `load_diabetes()` कॉल करून डायबिटीज डेटासेट लोड करा. इनपुट `return_X_y=True` सूचित करतो की `X` हा डेटाचा मॅट्रिक्स असेल आणि `y` पुर्नावृत्ती टारगेट असेल. -1. डेटा मॅट्रिक्सचा आकार आणि त्याचा पहिला घटक दर्शविण्यासाठी काही print कमांड जोडा: +1. काही प्रिंट कमांडसाठी डेटा मॅट्रिक्सचा आकार आणि त्याचा पहिला घटक दाखवा: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Scikit-learn मध्ये तयार केलेला [मधुमेह print(X[0]) ``` - तुम्हाला प्रतिसाद म्हणून जे मिळत आहे ते tuple आहे. तुम्ही काय करत आहात ते म्हणजे tuple च्या दोन पहिल्या मूल्यांना अनुक्रमे `X` आणि `y` मध्ये असाइन करत आहात. [tuples बद्दल अधिक जाणून घ्या](https://wikipedia.org/wiki/Tuple). + तुमची मिळालेली प्रतिक्रिया एक ट्युपल आहे. तुम्ही ट्युपलच्या पहिल्या दोन मूल्यांना अनुक्रमे `X` आणि `y` शी जोडत आहात. अधिक जाणून घेण्यासाठी [ट्युपल बद्दल](https://wikipedia.org/wiki/Tuple) पहा. - तुम्ही पाहू शकता की या डेटामध्ये 442 आयटम आहेत जे 10 घटकांच्या अ‍ॅरेमध्ये आकारलेले आहेत: + तुम्हाला दिसेल की या डेटामध्ये 442 नोंदी आहेत ज्या 10 घटकांच्या अॅरेमध्ये आहेत: ```text (442, 10) @@ -159,39 +160,39 @@ Scikit-learn मध्ये तयार केलेला [मधुमेह -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ डेटा आणि रिग्रेशन target यांच्यातील संबंधाचा विचार करा. रेखीय रिग्रेशन वैशिष्ट्य X आणि target व्हेरिएबल y यांच्यातील संबंधांचा अंदाज लावतो. तुम्ही मधुमेह डेटासेटसाठी [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) दस्तऐवजामध्ये शोधू शकता का? target दिल्याने हा डेटासेट काय दर्शवित आहे? + ✅ डेटा आणि पुर्नावृत्ती टारगेट यामधील संबंधावर विचार करा. रेषीय पुनरावृत्ती वैशिष्ट्य X आणि टारगेट y यामधील संबंध भाकीत करते. डेटासेटच्या कागदपत्रीत [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) कोणता आहे ते पाहा? हा डेटासेट कोणत्या गोष्टीचे प्रदर्शन करतो? -2. नंतर, या डेटासेटचा एक भाग प्लॉट करण्यासाठी निवडा, डेटासेटचा तिसरा कॉलम निवडून. तुम्ही `:` ऑपरेटर वापरून सर्व रांगा निवडू शकता आणि नंतर इंडेक्स (2) वापरून तिसरा कॉलम निवडू शकता. तुम्ही `reshape(n_rows, n_columns)` वापरून डेटा 2D अ‍ॅरेमध्ये आकार बदलू शकता - प्लॉटिंगसाठी आवश्यक आहे. जर एका पॅरामीटरला -1 असेल, तर संबंधित परिमाण आपोआप गणना केली जाते. +2. नंतर, या डेटासेटचा एक भाग निवडा ज्यासाठी प्लॉट करायचा आहे, म्हणजे डेटासेटचा 3रा स्तंभ निवडा. तुम्ही `:` ऑपरेटर वापरून सर्व पंक्ती निवडू शकता, आणि नंतर 3रा स्तंभ (इंडेक्स 2) निवडू शकता. तुम्ही `reshape(n_rows, n_columns)` वापरून डेटा 2D अॅरेमध्ये देखील आणू शकता - प्लॉटिंगसाठी आवश्यक. जर एक पॅरामीटर -1 असेल, तर संबंधित परिमाण आपोआप गणना केले जाते. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ कोणत्याही वेळी, डेटा त्याचा आकार तपासण्यासाठी प्रिंट करा. + ✅ कधीही डेटा तपासण्यासाठी त्याचा आकार प्रिंट करा. -3. आता तुमच्याकडे प्लॉट करण्यासाठी डेटा तयार आहे, तुम्ही पाहू शकता की मशीन या डेटासेटमधील संख्यांमध्ये तर्कसंगत विभाजन ठरवू शकते का. हे करण्यासाठी, तुम्हाला डेटा (X) आणि target (y) दोन्ही चाचणी आणि प्रशिक्षण संचांमध्ये विभाजित करणे आवश्यक आहे. Scikit-learn मध्ये हे करण्याचा सोपा मार्ग आहे; तुम्ही तुमचा चाचणी डेटा दिलेल्या बिंदूवर विभाजित करू शकता. +3. आता डेटा प्लॉट करण्यास तयार असल्याने, पाहू या की मशीन या डेटासेटमधील संख्यांमध्ये तर्कशीर विभागणी ठरवू शकते का. यासाठी, तुम्हाला डेटा (X) आणि टारगेट (y) हे दोन्ही प्रशिक्षण आणि चाचणी संचात विभाजित करावे लागतील. Scikit-learn मध्ये हे करणे सोपे आहे; तुम्ही दिलेल्या बिंदूवर तुमचा चाचणी डेटा विभाजित करू शकता. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. आता तुम्ही तुमचे मॉडेल प्रशिक्षण देण्यासाठी तयार आहात! रेखीय रिग्रेशन मॉडेल लोड करा आणि `model.fit()` वापरून तुमच्या X आणि y प्रशिक्षण संचांसह ते प्रशिक्षण द्या: +4. आता तुम्ही तुमचा मॉडेल प्रशिक्षित करण्यास तयार आहात! रेषीय पुनरावृत्ती मॉडेल लोड करा आणि `model.fit()` वापरून तुमचा X आणि y प्रशिक्षण संचाने प्रशिक्षित करा: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` ही एक फंक्शन आहे जी तुम्हाला TensorFlow सारख्या अनेक एमएल लायब्ररींमध्ये दिसेल. + ✅ `model.fit()` हे अनेक ML लायब्ररींमध्ये वापरले जाणारे फंक्शन आहे जसे TensorFlow मध्ये. -5. नंतर, चाचणी डेटा वापरून अंदाज तयार करा, `predict()` फंक्शन वापरून. हे डेटा गटांमधील रेषा काढण्यासाठी वापरले जाईल. +5. नंतर, चाचणी डेटा वापरून `predict()` फंक्शनने भाकीत तयार करा. हे मॉडेलच्या डेटागटांदरम्यान रेषा काढण्यासाठी वापरले जाईल. ```python y_pred = model.predict(X_test) ``` -6. आता डेटा प्लॉटमध्ये दर्शविण्याची वेळ आली आहे. Matplotlib हे या कार्यासाठी खूप उपयुक्त साधन आहे. सर्व X आणि y चाचणी डेटाचा scatterplot तयार करा आणि मॉडेलच्या डेटा गटांमधील सर्वात योग्य ठिकाणी रेषा काढण्यासाठी अंदाज वापरा. +6. आता डेटा प्लॉटमध्ये दाखवण्याची वेळ आली आहे. matplotlib हे या कार्यासाठी फारच उपयुक्त साधन आहे. सर्व X आणि y चाचणी डेटाचा स्कॅटरप्लॉट तयार करा, आणि भाकीत वापरून मॉडेलच्या डेटागटांदरम्यान योग्य ठिकाणी रेषा काढा. ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Scikit-learn मध्ये तयार केलेला [मधुमेह plt.show() ``` - ![मधुमेहाबद्दल डेटा पॉइंट्स दर्शविणारा scatterplot](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ विचार करा की येथे नेमके काय चालले आहे. अनेक छोटे डेटा बिंदूंच्या माध्यमातून एक सरळ रेषा जात आहे, पण ती नेमके काय करत आहे? तुम्हाला दिसते का की तुम्ही ही रेषा वापरून नवीन, न पाहिलेला डेटा बिंदू प्लॉटच्या y अक्षाशी कसा संबंधित आहे हे अंदाज करू शकता? या मॉडेलचा व्यावहारिक उपयोग शब्दांत मांडण्याचा प्रयत्न करा. + ![डायबिटीज आजूबाजूला डेटा पॉइंट्स दाखवणारा स्कॅटरप्लॉट](../../../../translated_images/mr/scatterplot.ad8b356bcbb33be6.webp) -अभिनंदन, तुम्ही तुमचे पहिले रेषीय प्रतिगमन मॉडेल तयार केले, त्याचा वापर करून अंदाज तयार केला आणि ते प्लॉटमध्ये प्रदर्शित केले! ---- -## 🚀चॅलेंज + ✅ येथे काय घडत आहे याबद्दल थोडं विचार करा. एक सरळ रेषा अनेक लहान डेटा बिंदूंमधून जात आहे, पण ती नेमकी काय करत आहे? तुम्हाला दिसतंय का की तुम्हाला या रेषेचा वापर करून नवीन, अद्याप न पाहिलेल्या डेटा पॉइंटला प्लॉटच्या y अक्षाच्या संदर्भात कुठे बसवायचं हे अंदाज लावता येईल? या मॉडेलच्या व्यावहारिक वापराबद्दल शब्दांमध्ये मांडण्याचा प्रयत्न करा. -या डेटासेटमधून वेगळा व्हेरिएबल प्लॉट करा. सूचना: ही ओळ संपादित करा: `X = X[:,2]`. या डेटासेटच्या लक्ष्यानुसार, तुम्ही मधुमेह या आजाराच्या प्रगतीबद्दल काय शोधू शकता? +अभिनंदन, तुम्ही तुमचा पहिला रेखीय प्रतिगमन मॉडेल तयार केला, त्याच्याशी भविष्यकाळी अंदाज लावला आणि तो प्लॉटमध्ये प्रदर्शित केला! + +--- +## 🚀आव्हान -## [पाठानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/) +या डेटासेटमधल्या वेगळ्या चलाचा प्लॉट करा. इशारा: हा ओळ संपादित करा: `X = X[:,2]`. या डेटासेटच्या लक्ष्याला पाहता, तुम्हाला मधुमेह या रोगाच्या प्रगतीबद्दल काय शोधायला मिळतं? +## [व्याख्यानानंतरचे प्रश्नसंच](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन आणि स्व-अभ्यास +## पुनरावलोकन आणि स्वअध्ययन -या ट्युटोरियलमध्ये, तुम्ही साध्या रेषीय प्रतिगमनासोबत काम केले, न की एकच व्हेरिएबल असलेले किंवा अनेक व्हेरिएबल्स असलेले प्रतिगमन. या पद्धतींमधील फरकांबद्दल थोडे वाचा किंवा [या व्हिडिओ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) कडे लक्ष द्या. +या शिक्षणात, तुम्ही सोपा रेखीय प्रतिगमन वापरला आहे, एकक किंवा बहुविध रेखीय प्रतिगमन नव्हे. या पद्धतींच्या फरकांबद्दल थोडे वाचा, किंवा [हा व्हिडिओ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) पाहा. -प्रतिगमनाच्या संकल्पनेबद्दल अधिक वाचा आणि कोणत्या प्रकारचे प्रश्न या तंत्राद्वारे उत्तर दिले जाऊ शकतात याचा विचार करा. तुमचे ज्ञान वाढवण्यासाठी [हा ट्युटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) घ्या. +प्रतिगमन या संकल्पनेबद्दल अधिक माहिती वाचा आणि कोणत्या प्रकारच्या प्रश्नांना या तंत्राने उत्तर दिलं जाऊ शकतं हे विचार करा. तुमचं ज्ञान खोल करण्यासाठी हा [ट्युटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) करा. -## असाइनमेंट +## कामगिरी [वेगळा डेटासेट](assignment.md) --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/2-Regression/2-Data/README.md b/translations/mr/2-Regression/2-Data/README.md index d14434224..eb2b245b1 100644 --- a/translations/mr/2-Regression/2-Data/README.md +++ b/translations/mr/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Scikit-learn वापरून एक रिग्रेशन मॉडेल तयार करा: डेटा तयार करा आणि व्हिज्युअलाइझ करा +# Scikit-learn वापरून एक रिग्रेशन मॉडेल तयार करा: डेटा तयार करा आणि दृश्य रूपात सादर करा -![डेटा व्हिज्युअलायझेशन इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) +![डेटा दृश्य रूपात सादरीकरण इन्फोग्राफिक](../../../../translated_images/mr/data-visualization.54e56dded7c1a804.webp) -इन्फोग्राफिक: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) +इन्फोग्राफिक [दसानी मादीपल्ली](https://twitter.com/dasani_decoded) यांच्याकडून ## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) -> ### [हे धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) -## परिचय +## प्रस्तावना -आता तुम्ही Scikit-learn चा वापर करून मशीन लर्निंग मॉडेल तयार करण्यासाठी आवश्यक असलेल्या साधनांसह तयार आहात, त्यामुळे तुम्ही तुमच्या डेटावर प्रश्न विचारायला सुरुवात करू शकता. डेटा हाताळताना आणि ML सोल्यूशन्स लागू करताना, योग्य प्रश्न विचारणे खूप महत्त्वाचे आहे, जेणेकरून तुमच्या डेटासेटची क्षमता योग्य प्रकारे उलगडता येईल. +आता तुम्ही Scikit-learn सह मशीन लर्निंग मॉडेल बांधणीसाठी आवश्यक साधने सेटअप केलीत, त्यामुळे आता तुम्हाला तुमच्या डेटावर प्रश्न विचारण्यास तयार आहात. डेटा वापरताना आणि ML उपाय लागू करताना, योग्य प्रश्न कसे विचारायचे हे समजून घेणे फार आवश्यक आहे जेणेकरून तुमच्या डेटासेटच्या क्षमता योग्यरित्या उकलता येतील. -या धड्यात, तुम्ही शिकाल: +या धड्यामध्ये तुम्ही शिकाल: -- मॉडेल तयार करण्यासाठी तुमचा डेटा कसा तयार करायचा. -- डेटा व्हिज्युअलायझेशनसाठी Matplotlib कसा वापरायचा. +- मॉडेल-बांधणीसाठी तुमचा डेटा कसा तयार करायचा. +- डेटा दृश्य रूपात सादर करण्यासाठी Matplotlib कसा वापरायचा. +- अधिक अभिव्यक्तीपूर्ण डेटा दृश्यासाठी Seaborn वापरण्यासाठी कसे. ## तुमच्या डेटावर योग्य प्रश्न विचारणे -तुम्हाला उत्तर हवे असलेला प्रश्न ठरवतो की तुम्ही कोणत्या प्रकारच्या ML अल्गोरिदमचा वापर कराल. आणि तुम्हाला मिळणाऱ्या उत्तराची गुणवत्ता तुमच्या डेटाच्या स्वरूपावर खूप अवलंबून असते. +जे प्रश्न तुम्हाला उत्तर हवे आहे ते ठरवेल तुम्ही कोणत्या प्रकारचे ML अल्गोरिदम वापराल. आणि मिळालेल्या उत्तराची गुणवत्ता तुमच्या डेटाच्या स्वरूपावर अवलंबून असेल. -या धड्यासाठी दिलेल्या [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) वर एक नजर टाका. तुम्ही हा .csv फाइल VS Code मध्ये उघडू शकता. पटकन पाहिल्यास लक्षात येते की काही जागा रिकाम्या आहेत आणि स्ट्रिंग्स व संख्यात्मक डेटाचा एकत्रित समावेश आहे. 'Package' नावाचा एक विचित्र कॉलम आहे, जिथे डेटा 'sacks', 'bins' आणि इतर मूल्यांचा मिश्रण आहे. खरं तर, हा डेटा थोडासा गोंधळलेला आहे. +या धड्यासाठी दिलेला [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) पहा. तुम्ही हा .csv फाइल VS Code मध्ये उघडू शकता. त्वरित पाहिल्यावर काही रिकाम्या जागा आणि स्ट्रिंग्ज व संख्यात्मक डेटाचा संगम दिसतो. 'Package' नावाचा एक विचित्र स्तंभही आहे ज्यामध्ये 'sacks', 'bins' आणि इतर मूल्यमिश्रण आहे. डेटा प्रत्यक्षात थोडा गोंधळलेला आहे. -[![ML for beginners - डेटासेट कसा विश्लेषण आणि स्वच्छ करायचा](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटासेट कसा विश्लेषण आणि स्वच्छ करायचा") +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा तयार करण्याची प्रक्रिया पाहा. +> 🎥 या चित्रावर क्लिक करून या धड्यासाठी डेटा तयार करण्याचे एक लहान व्हिडिओ पाहा. -खरं तर, पूर्णपणे तयार डेटासेट मिळणे, जे ML मॉडेल तयार करण्यासाठी तत्काळ वापरता येईल, हे फारसे सामान्य नाही. या धड्यात, तुम्ही स्टँडर्ड Python लायब्ररींचा वापर करून कच्चा डेटा कसा तयार करायचा ते शिकाल. तुम्ही डेटा व्हिज्युअलायझेशनसाठी विविध तंत्रे देखील शिकाल. +प्रत्यक्षात, पूर्णपणे वापरण्यास तयार असा डेटा सेट देणे फारसा सामान्य नाही. या धड्यात, तुम्ही पारंपरिक Python लायब्ररी वापरून कच्चा डेटा सेट कसा तयार करायचा ते शिकाल. तुम्हाला डेटा दृश्य सादर करण्याच्या विविध तंत्रांचीही ओळख होईल. -## केस स्टडी: 'भोपळ्यांचा बाजार' +## केस स्टडी: 'द पंपकिन मार्केट' -या फोल्डरमध्ये, तुम्हाला `data` फोल्डरच्या मूळ भागात [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नावाचा .csv फाइल सापडेल, ज्यामध्ये शहरांनुसार गटांमध्ये वर्गीकृत केलेल्या भोपळ्यांच्या बाजाराविषयी 1757 ओळींचा डेटा आहे. हा डेटा [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) कडून घेतलेला आहे, जो United States Department of Agriculture द्वारे वितरित केला जातो. +या फोल्डरमध्ये 'data' रूट फोल्डरमध्ये [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नावाची .csv फाइल आहे ज्यात शहरांनुसार गटबद्ध केलेल्या पंपकिन मार्केटचा 1757 ओळींचा डेटा आहे. हा डेटा संयुक्त राज्य कृषी विभागाद्वारे वितरित [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) मधून काढलेला कच्चा डेटा आहे. ### डेटा तयार करणे -हा डेटा सार्वजनिक डोमेनमध्ये आहे. तो USDA वेबसाइटवरून वेगवेगळ्या शहरांनुसार अनेक स्वतंत्र फाइल्समध्ये डाउनलोड केला जाऊ शकतो. खूप जास्त स्वतंत्र फाइल्स टाळण्यासाठी, आम्ही सर्व शहरांचा डेटा एका स्प्रेडशीटमध्ये एकत्र केला आहे, त्यामुळे आम्ही आधीच डेटा थोडासा _तयार_ केला आहे. आता, या डेटावर बारकाईने नजर टाकूया. +हा डेटा सार्वजनिक क्षेत्रातील आहे. तो USDA वेबसाईटवरून शहरानिहाय अनेक वेगळ्या फाइल्समध्ये डाउनलोड करता येऊ शकतो. जास्त फाइल टाळण्यासाठी, आम्ही सर्व शहरांचे डेटा एका स्प्रेडशीटमध्ये एकत्र केले आहेत, त्यामुळे डेटा थोडा तयार केलेला आहे. आता, डेटा आणखी जवळून पाहूया. -### भोपळ्यांचा डेटा - प्राथमिक निरीक्षणे +### पंपकिन डेटाबाबत प्राथमिक निष्कर्ष -या डेटाबद्दल तुम्हाला काय जाणवते? तुम्ही आधीच पाहिले आहे की येथे स्ट्रिंग्स, संख्या, रिकाम्या जागा आणि विचित्र मूल्यांचा एकत्रित समावेश आहे, ज्याचा अर्थ लावणे आवश्यक आहे. +या डेटाबद्दल तुम्हाला काय लक्षात येते? तुम्हाला आधीच दिसले की यात स्ट्रिंग्ज, संख्या, रिकाम्या जागा आणि विचित्र मूल्यांचा संगम आहे ज्यांना तुम्हाला अर्थ लावावा लागेल. -Regression तंत्राचा वापर करून तुम्ही या डेटावर कोणता प्रश्न विचारू शकता? "एखाद्या महिन्यात विक्रीसाठी असलेल्या भोपळ्याची किंमत अंदाजे किती असेल?" हा प्रश्न विचारता येईल. पुन्हा डेटाकडे पाहिल्यास, तुम्हाला आवश्यक टास्कसाठी डेटा संरचना तयार करण्यासाठी काही बदल करावे लागतील. +या डेटावर तुम्ही रिग्रेशन तंत्र वापरून कोणता प्रश्न विचारू शकता? "ठराविक महिन्यात विक्रीसाठी पंपकिनचा किंमत भाकीत करा" हा प्रश्न कसा राहील? पुन्हा डेटा पाहताना, या कामासाठी आवश्यक डेटा स्ट्रक्चर तयार करण्यासाठी काही बदल करावे लागतील. +## सराव - पंपकिन डेटा विश्लेषण करा -## व्यायाम - भोपळ्यांचा डेटा विश्लेषण करा +चला [Pandas](https://pandas.pydata.org/) वापरूया, (नाम `Python Data Analysis` प्रतीक) जो डेटा तयार करण्यासाठी उपयुक्त साधन आहे, आणि या पंपकिन डेटाचा विश्लेषण आणि तयारी करूया. -आता [Pandas](https://pandas.pydata.org/) वापरूया, (याचा अर्थ `Python Data Analysis`) जे डेटा आकार देण्यासाठी खूप उपयुक्त साधन आहे, भोपळ्यांचा डेटा विश्लेषण आणि तयार करण्यासाठी. +### प्रथम, हरवलेले तारखे तपासा -### प्रथम, हरवलेल्या तारखा तपासा +तुम्हाला प्रथम हरवलेल्या तारखा तपासण्याने सुरुवात करायची आहे: -तुम्हाला प्रथम हरवलेल्या तारखांसाठी तपासणी करावी लागेल: +1. तारखा महिन्याच्या स्वरूपात रूपांतरित करा (ही तारीखा US स्वरूपात आहेत, म्हणजे `MM/DD/YYYY`). +2. महिन्याला नवीन स्तंभात काढा. -1. तारखांना महिन्याच्या स्वरूपात रूपांतरित करा (या US तारखा आहेत, त्यामुळे स्वरूप `MM/DD/YYYY` आहे). -2. नवीन कॉलममध्ये महिना काढा. +_notebook.ipynb_ फाइल Visual Studio Code मध्ये उघडा आणि नवीन Pandas डेटा फ्रेममध्ये स्प्रेडशीट आयात करा. -_नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उघडा आणि स्प्रेडशीट नवीन Pandas dataframe मध्ये आयात करा. - -1. `head()` फंक्शन वापरून पहिल्या पाच ओळी पहा. +1. `head()` फंक्शन वापरून सुरुवातीच्या पाच ओळी पहा. ```python import pandas as pd @@ -64,30 +64,30 @@ _नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उ pumpkins.head() ``` - ✅ शेवटच्या पाच ओळी पाहण्यासाठी तुम्ही कोणते फंक्शन वापराल? + ✅ शेवटच्या पाच ओळी पाहण्यासाठी कोणता फंक्शन वापराल? -1. सध्याच्या dataframe मध्ये हरवलेला डेटा आहे का ते तपासा: +1. सध्या डेटाफ्रेममध्ये हरवलेला डेटा आहे का ते तपासा: ```python pumpkins.isnull().sum() ``` - हरवलेला डेटा आहे, परंतु कदाचित तो सध्याच्या टास्कसाठी महत्त्वाचा नसेल. + हरवलेला डेटा आहे, पण कदाचित हा कार्यासाठी असा वाईट परिणाम होणार नाही. -1. तुमचा dataframe अधिक सोयीस्कर बनवण्यासाठी, तुम्हाला आवश्यक असलेल्या कॉलम्स निवडा, `loc` फंक्शन वापरून, जे मूळ dataframe मधून ओळींचा गट (पहिला पॅरामीटर म्हणून पास केलेला) आणि कॉलम्स (दुसरा पॅरामीटर म्हणून पास केलेला) काढते. खालील प्रकरणात `:` चा अर्थ "सर्व ओळी" असा आहे. +1. तुमचा डेटाफ्रेम सोपा करण्यासाठी, तुम्हाला आवश्यक स्तंभ निवडा, `loc` फंक्शन वापरून जो मूळ डेटा फ्रेममधून रो (पहिल्या पॅरामीटर) आणि स्तंभ (दुसऱ्या पॅरामीटर) निवडतो. खालील `:` म्हणजे "सर्व रो". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### दुसरे, भोपळ्याची सरासरी किंमत ठरवा +### दुसरे, पंपकिनची सरासरी किमत ठरवा -एखाद्या महिन्यात भोपळ्याची सरासरी किंमत कशी ठरवाल याचा विचार करा. या टास्कसाठी तुम्ही कोणते कॉलम निवडाल? हिंट: तुम्हाला 3 कॉलम्सची गरज आहे. +एका निश्चित महिन्यातील पंपकिनची सरासरी किंमत कशी ठरवाल? या कामासाठी कोणती स्तंभ काढाल? संकेत: तुम्हाला 3 स्तंभांची गरज आहे. -उत्तरे: `Low Price` आणि `High Price` कॉलम्सची सरासरी काढा आणि नवीन Price कॉलममध्ये भरा, तसेच Date कॉलमला फक्त महिना दाखवण्यासाठी रूपांतरित करा. वरच्या तपासणीनुसार, तारखा किंवा किंमतींसाठी हरवलेला डेटा नाही. +उत्तर: `Low Price` आणि `High Price` स्तंभांची सरासरी काढून नवीन `Price` स्तंभ भरा, आणि `Date` स्तंभ फक्त महिन्यासाठी रूपांतरित करा. वर दिलेल्या तपासणीनुसार, तारीख किंवा किमतीसाठी हरवलेला डेटा नाही. -1. सरासरी काढण्यासाठी, खालील कोड जोडा: +1. सरासरी काढण्यासाठी पुढील कोड जोडा: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ _नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उ ``` - ✅ तुम्हाला हवे असल्यास, `print(month)` वापरून कोणताही डेटा तपासा. + ✅ `print(month)` वापरून तुम्हाला पाहिजे ते काहीही तपासण्यासाठी छापू शकता. -2. आता, तुमचा रूपांतरित डेटा नवीन Pandas dataframe मध्ये कॉपी करा: +2. आता, तुमचा रूपांतरित डेटा एका नवीन Pandas डेटा फ्रेममध्ये कॉपी करा: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - तुमचा dataframe प्रिंट केल्यास, तुम्हाला एक स्वच्छ, व्यवस्थित डेटासेट दिसेल, ज्यावर तुम्ही तुमचे नवीन रिग्रेशन मॉडेल तयार करू शकता. + तुमचा डेटाफ्रेम छापल्यावर तुम्हाला एक स्वच्छ, नीटनेटका डेटासेट दिसेल ज्यावर तुम्ही तुमचा रिग्रेशन मॉडेल तयार करू शकता. -### पण थांबा! येथे काहीतरी विचित्र आहे +### पण थांबा! इथे काहीतरी विचित्र आहे -जर तुम्ही `Package` कॉलम पाहिला, तर भोपळे अनेक वेगवेगळ्या स्वरूपात विकले जातात. काही '1 1/9 bushel' मोजमापात विकले जातात, काही '1/2 bushel' मोजमापात, काही प्रति भोपळा, काही प्रति पाउंड, आणि काही मोठ्या बॉक्समध्ये विविध रुंदींसह विकले जातात. +`Package` स्तंभ पहा, पंपकिन अनेक वेगवेगळ्या प्रकारांनी विकले जातात. काही '1 1/9 bushel' मोजमापात विकले जातात, काही '1/2 bushel' मध्ये, काही पंपकिनप्रमाणे, काही पाउंडप्रमाणे, आणि काही फरकलेल्या रुंदीच्या मोठ्या बॉक्समध्ये. -> भोपळ्यांचे वजन सातत्याने मोजणे खूप कठीण आहे +> पंपकिनचे वजन एकसारखे ठरवणे खूप कठीण वाटते -मूळ डेटामध्ये डोकावल्यावर, असे दिसते की `Unit of Sale` 'EACH' किंवा 'PER BIN' असलेल्या कोणत्याही गोष्टींमध्ये `Package` प्रकार प्रति इंच, प्रति बिन, किंवा 'each' आहे. भोपळ्यांचे वजन सातत्याने मोजणे खूप कठीण आहे, त्यामुळे `Package` कॉलममध्ये 'bushel' असलेल्या भोपळ्यांनाच निवडूया. +मूळ डेटामध्ये पाहिल्यास, 'Unit of Sale' जर 'EACH' किंवा 'PER BIN' असेल तर `Package` चा प्रकार प्रति इंच, प्रति बिन, किंवा 'each' असतो. पंपकिनचे वजन एका प्रकारे ठरवणे कठीण असल्याने, चल करा केवळ ज्या पंपकिनच्या `Package` स्तंभात 'bushel' आहे त्याचं फिल्टर करा. -1. फाइलच्या सुरुवातीला, सुरुवातीच्या .csv आयातीनंतर एक फिल्टर जोडा: +1. फाइलच्या सुरुवातीला, .csv आयाताखाली फिल्टर जोडा: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - जर तुम्ही डेटा प्रिंट केला, तर तुम्हाला फक्त 'bushel' असलेल्या 415 ओळींचा डेटा दिसेल. + आता जर डेटा छापला तर एवढेच दिसेल की तुम्हाला 'bushel' च्या पंपकिनच्या अंदाजे 415 ओळींचा डेटा मिळतोय. -### पण थांबा! अजून एक गोष्ट करायची आहे +### पण थांबा! आणखी एक गोष्ट करायची आहे -तुम्हाला लक्षात आले का की प्रत्येक ओळीत bushel प्रमाण वेगळे आहे? तुम्हाला किंमती सामान्य करायच्या आहेत, त्यामुळे तुम्ही bushel प्रमाणावर आधारित किंमती दाखवू शकता. त्यामुळे किंमतींचे प्रमाण समान करण्यासाठी गणित करा. +लक्षात आलं का की bushel चे प्रमाण प्रत्येक रो वर वेगवेगळे आहे? तुम्हाला किमती बसलेली दाखवावी लागतील, म्हणून काही गणित करून त्यास मानकीकृत करा. -1. नवीन_pumpkins dataframe तयार करण्याच्या ब्लॉकनंतर हे ओळी जोडा: +1. `new_pumpkins` डेटा फ्रेम तयार केल्यानंतर ही ओळी जोडा: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ _नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उ new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) नुसार, bushel चे वजन उत्पादनाच्या प्रकारावर अवलंबून असते, कारण ते व्हॉल्यूम मोजमाप आहे. "उदाहरणार्थ, टोमॅटोच्या bushel चे वजन 56 पाउंड असते... पानं आणि हिरव्या भाज्या अधिक जागा घेतात पण कमी वजन असते, त्यामुळे पालकाच्या bushel चे वजन फक्त 20 पाउंड असते." हे सर्व खूप गुंतागुंतीचे आहे! चला bushel-to-pound रूपांतरण करण्याचा विचार न करता, फक्त bushel प्रमाणे किंमत ठरवूया. भोपळ्यांच्या bushels चा अभ्यास करताना, तुमच्या डेटाच्या स्वरूपाचे समजून घेणे किती महत्त्वाचे आहे हे लक्षात येते! +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) नुसार, bushel चे वजन उत्पादनानुसार बदलते कारण ते प्रमाण मोजण्याचं एक वॉल्यूम मोजमाप आहे. "टमाटराचा बशेल साधारण 56 पौंडांचा असतो... परंतु पालेभाज्या जास्त जागा घ्यतात पण वजन कमी असल्यामुळे पालकाचा बशेल फक्त 20 पौंडांचा असतो." ही बाब सारखीच गुंतागुंतीची आहे! चल तर वजनाप्रमाणे रुपांतर करण्याची काळजी करू नका, फक्त बशेलमुळे किमती ठरवा. मात्र हे बशेलच्या पंपकिनचा अभ्यास दाखवतो की तुमच्या डेटाचा स्वभाव समजून घेणे किती आवश्यक आहे! -आता, तुम्ही bushel मोजमापावर आधारित युनिटच्या किंमतींचे विश्लेषण करू शकता. जर तुम्ही डेटा पुन्हा प्रिंट केला, तर तुम्हाला तो कसा प्रमाणित झाला आहे ते दिसेल. +आता तुम्ही त्यांच्या बशेल मोजमापावर आधारित किंमतींचे विश्लेषण करू शकता. जर तुम्ही डेटा पुन्हा छापलात तर कसा मानकीकृत आहे ते दिसेल. -✅ तुम्हाला लक्षात आले का की अर्ध्या-bushel ने विकले जाणारे भोपळे खूप महाग आहेत? तुम्ही याचे कारण शोधू शकता का? हिंट: लहान भोपळे मोठ्या भोपळ्यांपेक्षा खूप महाग असतात, कदाचित कारण bushel मध्ये मोठ्या पोकळ पाई भोपळ्यामुळे अधिक जागा वाया जाते. +✅ लक्षात आलं का पंपकिन जे अर्ध्या बशेलने विकले जातात ते फार महाग आहेत? का असेल याचा विचार करा? संकेत: लहान पंपकिन मोठ्यांच्या तुलनेने खूप जास्त महाग असू शकतात कारण एका मोठ्या खोबणीदार पाई पंपकिनमुळे रिकाम्या जागा जास्त असते, त्यामुळे प्रति बशेल त्यांची संख्या जास्त असते. -## व्हिज्युअलायझेशन स्ट्रॅटेजीज +## दृश्य रूपात सादरीकरणाच्या धोरणा -डेटा सायंटिस्टची भूमिका म्हणजे ते ज्या डेटावर काम करत आहेत त्याची गुणवत्ता आणि स्वरूप प्रदर्शित करणे. हे करण्यासाठी, ते डेटा व्हिज्युअलायझेशन तयार करतात, जसे की प्लॉट्स, ग्राफ्स, आणि चार्ट्स, जे डेटाचे विविध पैलू दाखवतात. यामुळे, ते नातेसंबंध आणि अंतर दाखवू शकतात, जे अन्यथा शोधणे कठीण असते. +डेटा सायंटिस्टच्या भूमिकेचा एक भाग म्हणजे ते काम करत असलेल्या डेटाच्या गुणवत्तेचा आणि स्वरूपाचा दाखला देणे. हे साध्य करण्यासाठी, ते अनेकदा मनोरंजक दृश्य रूपात सादरीकरण, प्लॉट्स, ग्राफ्स, आणि चार्ट तयार करतात जे डेटा चे वेगवेगळे पैलू दाखवतात. अशा प्रकारे, ते दृश्यमानपणे अशा नात्यां आणि रिकाम्या जागा दाखवू शकतात ज्या इतरथा शोधणे कठीण असते. -[![ML for beginners - Matplotlib वापरून डेटा कसा व्हिज्युअलायझ करायचा](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib वापरून डेटा कसा व्हिज्युअलायझ करायचा") +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा व्हिज्युअलायझेशन प्रक्रिया पाहा. +> 🎥 या चित्रावर क्लिक करून या धड्यासाठी डेटा दृश्य रूपात दाखवण्याचे एक लहान व्हिडिओ पाहा. -व्हिज्युअलायझेशन मशीन लर्निंग तंत्र ठरवण्यासाठी देखील मदत करू शकते. उदाहरणार्थ, जर एखादा scatterplot एका रेषेचे अनुसरण करत असल्याचे दिसत असेल, तर डेटा linear regression साठी योग्य उमेदवार असल्याचे सूचित करते. +दृश्य रूपात सादरीकरणाने मशीन लर्निंग तंत्रासाठी योग्य पर्याय निश्चित करण्यासही मदत होते. जसे की, जर एक scatterplot रेषेला अनुसरते वाटत असेल तर डेटा linear regression करण्यासाठी योग्य असू शकतो. -Jupyter notebooks मध्ये चांगले काम करणारे एक डेटा व्हिज्युअलायझेशन लायब्ररी म्हणजे [Matplotlib](https://matplotlib.org/) (जे तुम्ही मागील धड्यातही पाहिले). +Jupyter नोटबुकमध्ये काम करणारी एक डेटा दृश्य रूपात सादरीकरण लायब्ररी म्हणजे [Matplotlib](https://matplotlib.org/) (ज्याला तुम्ही मागील धड्यांतही पाहिलं आहे). -> डेटा व्हिज्युअलायझेशनचा अधिक अनुभव मिळवण्यासाठी [या ट्युटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) पहा. +> डेटा दृश्य रूपात अधिक अनुभव मिळवण्यासाठी [हे ट्युटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) पाहा. -## व्यायाम - Matplotlib सह प्रयोग करा +## सराव - Matplotlib सह प्रयोग करा -तुम्ही नुकत्याच तयार केलेल्या नवीन dataframe चे प्रदर्शन करण्यासाठी काही मूलभूत प्लॉट्स तयार करण्याचा प्रयत्न करा. मूलभूत line plot काय दाखवेल? +तुम्ही तयार केलेल्या नवीन डेटा फ्रेमसाठी काही मूलभूत प्लॉट तयार करण्याचा प्रयत्न करा. मूलभूत रेषीय प्लॉट काय दर्शवेल? -1. फाइलच्या सुरुवातीला Pandas आयातीनंतर Matplotlib आयात करा: +1. फाइलच्या वर Pandas आयाताखाली Matplotlib आयात करा: ```python import matplotlib.pyplot as plt ``` -1. संपूर्ण notebook पुन्हा चालवा. -1. notebook च्या तळाशी, डेटा box म्हणून प्लॉट करण्यासाठी एक सेल जोडा: +1. संपूर्ण नोटबुक पुन्हा चालवा. +1. नोटबुकच्या शेवटी डेटा बॉक्स प्लॉट म्हणून दाखवण्यासाठी सेल जोडा: ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ Jupyter notebooks मध्ये चांगले काम करणार plt.show() ``` - ![प्राइस टू मंथ रिलेशनशिप दाखवणारा scatterplot](../../../../2-Regression/2-Data/images/scatterplot.png) + ![महिना आणि किंमतीचे नाते दर्शवणारा scatterplot](../../../../translated_images/mr/scatterplot.b6868f44cbd2051c.webp) - हा प्लॉट उपयुक्त आहे का? याबद्दल तुम्हाला काही आश्चर्य वाटते का? + हा प्लॉट उपयुक्त आहे का? यात काही आश्चर्यकारक आहे का? - हा फारसा उपयुक्त नाही, कारण तो फक्त तुमच्या डेटाला एका महिन्यातील पॉइंट्सच्या स्वरूपात दाखवतो. + हा फारसा उपयोगी नाही कारण तो केवळ तुमच्या डेटाला एका महिन्यात बिंदूंमध्ये दर्शवितो. -### याला उपयुक्त बनवा +### याला उपयोगी बनवा -डेटा उपयुक्ततेने दाखवण्यासाठी, तुम्हाला सहसा डेटा कशात तरी गटबद्ध करावा लागतो. चला एक प्लॉट तयार करून पाहू, जिथे y अक्षावर महिने दाखवले जातील आणि डेटा वितरण दर्शवेल. +डेटा वापरून उपयोगी चार्ट दर्शवण्यासाठी तुम्हाला सहजपणे डेटा कसा गटबद्ध करायचा हे करावे लागते. चला, एक प्लॉट तयार करू जिथे y-अक्षावर महिने असतील आणि डेटा विक्षेप दाखवेल. -1. गटबद्ध बार चार्ट तयार करण्यासाठी एक सेल जोडा: +1. गटबद्ध बार चार्ट तयार करण्यासाठी सेल जोडा: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![प्राइस टू मंथ रिलेशनशिप दाखवणारा बार चार्ट](../../../../2-Regression/2-Data/images/barchart.png) + ![महिना आणि किंमतीचे नाते दर्शवणारा बार चार्ट](../../../../translated_images/mr/barchart.a833ea9194346d76.webp) + + हा अधिक उपयुक्त डेटा दृश्य रूपात सादरीकरण आहे! असे दिसते की पंपकिनसाठी सर्वोच्च किंमत सप्टेंबर आणि ऑक्टोबरमध्ये आहे. हे तुमच्या अपेक्षेशी सुसंगत आहे का? का किंवा का नाही? + +## सराव - Seaborn सह प्रयोग करा + +Matplotlib शक्तिशाली आहे, पण त्यासाठी बराच कोड लिहावा लागतो एक आकर्षक चार्ट तयार करण्यासाठी. [Seaborn](https://seaborn.pydata.org/) ही Matplotlib वर आधारित लायब्ररी आहे जी सांख्यिक डेटा दृश्यासाठी डिझाइन केलेली आहे. ती थेट Pandas डेटा फ्रेमसह काम करते, आकर्षक डीफॉल्ट स्टाइल लागू करते, आणि खूप कमी कोड वापरून माहितीपूर्ण प्लॉट तयार करू देते. Seaborn Matplotlib ऑब्जेक्ट्स परत करते म्हणून तुम्ही Matplotlib विषयी आधीच जाणणं वापरून निकाल बरोबर करू शकता. + +> जर तुम्ही अजून Seaborn इंस्टॉल केला नसेल तर, `pip install seaborn` वापरून त्यास इंस्टॉल करा. + +1. नोटबुकच्या वर इतर आयाताखाली Seaborn आयात करा. पारंपारिकरित्या तो `sns` नावाने आयात केला जातो: + + ```python + import seaborn as sns + ``` + +### नातेसंबंध दाखवण्यासाठी scatter plot + +मॉडेल तयार करण्यापूर्वी डेटामध्ये नाते शोधणे महत्त्वाचे असते. [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) त्यासाठी उत्तम साधन आहे: जर बिंदू एखाद्या रेषेला अनुसरतात, तर दोन चल सहसंबंधित असू शकतात, जे linear regression साठी चांगली चिन्हे आहेत. + +1. आधीच्या किमत-ते-महिना scatter plot पुन्हा Seaborn च्या [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) वापरून करा, जे थेट तुमच्या डेटा फ्रेम स्तंभांसह काम करतो: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn चा scatterplot जे किमती ते महिन्याचा नाता दाखवतो](../../../../translated_images/mr/relplot.a03837d8f0329cec.webp) + + लक्षात घ्या कसे तुम्ही स्तंभांची नावे आणि डेटा फ्रेम पास करता, आणि Seaborn तुम्हाला अक्षांच्या लेबलांची काळजी घेतो. + +2. तुम्ही `kind="line"` पास करून रेषीय प्लॉटमध्ये बदल करू शकता. Seaborn रेषेभोवती आत्मविश्वास अंतर दर्शवणारी सावलीपट्टी (shaded band) काढतो: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn चा रेषीय प्लॉट जो किमती ते महिन्याचा नाता दाखवतो](../../../../translated_images/mr/lineplot.f9034ba47b1e30ee.webp) + + हा विशेष डेटा फार गोंधळलेला आहे, त्यामुळे रेषीय प्लॉट हा सर्वोत्तम पर्याय नाही — पण Seaborn मध्ये कसा सहज चार्ट प्रकार बदलायचा हे दाखवतो. + +### वितरण दर्शवण्यासाठी बार चार्ट + + +पूर्वी तुम्ही मॅटप्लॉटलिबसह बार चार्ट तयार करण्यासाठी डेटा हाताने गटबद्ध केला होता. सिबॉर्नचा [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (वर्गीकृत प्लॉट) तुमच्यासाठी गटबद्ध आणि एकत्रीकरण करू शकतो. डीफॉल्टने `kind="bar"` प्रत्येक श्रेणीचा सरासरी दर्शवतो आणि विश्वास अंतर दर्शविणारी काळी रेषाही दाखवतो. + +1. प्रति महिन्याच्या सरासरी किमतीचा बार चार्ट तयार करा: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![प्रति महिन्याच्या किंमतीचे वितरण दर्शविणारा सिबॉर्न बार चार्ट](../../../../translated_images/mr/catplot.e73fc35fdf96242b.webp) + + हे मॅटप्लॉटलिबसह तुम्ही पाहिलेलं पुष्टी करतो — किमती सप्टेंबर आणि ऑक्टोबर मध्ये उच्च असतात — पण सिबॉर्न हे देखील दाखवतो की प्रत्येक महिन्यात किंमत किती _विविध_ असते. + +### सहसंबंध दाखविण्यासाठी हीटमॅप + +स्कॅटर प्लॉट एकावेळी दोन चलांची तुलना करतात. जेव्हा तुमच्याकडे अनेक संख्यात्मक स्तंभ असतात, तेव्हा [हीटमॅप](https://en.wikipedia.org/wiki/Heat_map) तुम्हाला एकाच वेळी _प्रत्येक_ स्तंभ जोड्यांमधील संबंधांची ताकद पाहायला देते. हा एक सामान्य मार्ग आहे ज्यामुळे तुम्ही एखाद्या मॉडेलमध्ये कोणती वैशिष्ट्ये वापरायची ते ठरवण्याआधी कोणती अधिक सहसंबंधीत आहेत हे शोधू शकता (आणि त्याच प्रकारचा चार्ट नंतर वर्गीकरणातील कॉन्फ्यूजन मॅट्रिसेस दाखविण्यासाठी वापरला जातो). + +1. पांडससह सहसंबंध मॅट्रिक्स तयार करा, नंतर सिबॉर्नच्या [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) ने तो रेखाटाअ. `annot=True` पर्याय प्रत्येक सेलवर सहसंबंध मूल्ये छापतो: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![सिबॉर्न हीटमॅप जो संख्यात्मक स्तंभांमधील सहसंबंध दाखवितो](../../../../translated_images/mr/heatmap.bd98dce43b404c57.webp) + + `1` (किंवा `-1`) जवळील मूल्ये दर्शवतात की स्तंभ _रेषीय_ प्रकारे मजबूत सहसंबंधीत आहेत. लक्षात घ्या की `Low Price` आणि `High Price` जवळजवळ पूर्णपणे सहसंबंधीत आहेत. दुसरीकडे, `Month` फक्त किंमतीशी एक कमकुवत रेषीय सहसंबंध दर्शवतो — जरी बार चार्टने सप्टेंबर आणि ऑक्टोबरमध्ये स्पष्ट हंगामी शिखर दाखवले असेल. हा एक महत्त्वाचा धडा आहे: सहसंबंध गुणांक केवळ _सरळ रेषेतील_ संबंध मोजतो, त्यामुळे तो हंगामी किंवा इतर प्रकारच्या अनरेषीय नमुन्यांना गमावू शकतो. ✅ स्तंभ निवडण्याआधी हीटमॅप *आणि* बार चार्टसारख्या चार्ट दोन्ही पाहणे का उपयुक्त आहे? + +### मॅटप्लॉटलिब की सिबॉर्न? + +दोन्ही लायब्ररी जाणून घेण्यासारख्या आहेत: + +- **मॅटप्लॉटलिब** तुम्हाला चार्टमधील प्रत्येक घटकावर सूक्ष्म नियंत्रण देते आणि जवळजवळ प्रत्येक इतर Python प्लॉटिंग लायब्ररीसाठी पाया आहे. +- **सिबॉर्न** सांख्यिकीय चार्टसाठी उच्चस्तरीय फंक्शन्स आणि आकर्षक डीफॉल्ट्स देते, डायरेक्टली डेटाफ्रेम्ससोबत काम करते, आणि एक्सप्लोरेटरी डेटा अ‍ॅनालिसीसाठी अनेकदा वेगवान आहे. - हा डेटा व्हिज्युअलायझेशन अधिक उपयुक्त आहे! असे दिसते की भोपळ्यांची सर्वाधिक किंमत सप्टेंबर आणि ऑक्टोबरमध्ये असते. हे तुमच्या अपेक्षांना पूर्ण करते का? का किंवा का नाही? +सामान्य कामकाज म्हणजे जलद डेटा एक्सप्लोरेशनसाठी सिबॉर्न वापरणे, आणि नंतर तपशील सानुकूलित करण्यासाठी मॅटप्लॉटलिब वापरणे. --- -## 🚀चॅलेंज +## 🚀आव्हान -Matplotlib विविध प्रकारच्या व्हिज्युअलायझेशन ऑफर करते. कोणते प्रकार रिग्रेशन समस्यांसाठी सर्वात योग्य आहेत? +मॅटप्लॉटलिब आणि सिबॉर्न जे विविध प्रकारचे व्हिज्युअलायझेशन ऑफर करतात ते एक्सप्लोर करा. रिग्रेशन समस्यांसाठी कोणते प्रकार सर्वोत्तम आहेत? -## [व्याख्यानानंतरची प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +## [पोस्ट-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन आणि स्व-अभ्यास +## पुनरावलोकन आणि स्वअध्ययन -डेटा व्हिज्युअलायझेशनचे विविध मार्ग पाहा. उपलब्ध विविध लायब्ररींची यादी तयार करा आणि कोणत्या प्रकारच्या टास्कसाठी कोणत्या लायब्ररी सर्वोत्तम आहेत ते नोंदवा, उदाहरणार्थ 2D व्हिज्युअलायझेशन विरुद्ध 3D व्हिज्युअलायझेशन. तुम्हाला काय सापडते? +डेटा व्हिज्युअलायझ करण्याचे अनेक मार्ग पहा. उपलब्ध विविध लायब्ररींची यादी तयार करा आणि नमूद करा की कोणती विशिष्ट कार्यांसाठी सर्वोत्तम आहे, उदाहरणार्थ 2D व्हिज्युअलायझेशन विरुद्ध 3D व्हिज्युअलायझेशन. तुम्हाला काय आढळते? ## असाइनमेंट @@ -213,5 +288,7 @@ Matplotlib विविध प्रकारच्या व्हिज्य --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/2-Regression/2-Data/solution/notebook.ipynb b/translations/mr/2-Regression/2-Data/solution/notebook.ipynb index 3bc91382e..40c14c61b 100644 --- a/translations/mr/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/mr/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## भोपळ्यांसाठी रेषीय प्रतिगमन - धडा २\n" + ] }, { "cell_type": "code", @@ -220,6 +222,7 @@ "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", "\n", "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", @@ -383,18 +386,78 @@ "plt.ylabel(\"Pumpkin Price\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## सीबॉर्नसह दृश्यरूप करणे\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) हे Matplotlib च्या वर तयार केले आहे आणि ते थेट डेटा फ्रेमसोबत काम करते, ज्यामुळे फार कमी कोडमध्ये आकर्षक सांख्यिकीय आकृत्या तयार करणे सोपे होते.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### नातेसंबंध दाखवण्यासाठी स्कॅटर प्लॉट्स\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### वितरण दर्शविण्यासाठी बार चार्ट्स\n" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही.\n" + "### सहसंबंध दर्शविण्यासाठी हीटमॅप्स\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n", + "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**अस्वीकरण**:\nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-08-29T19:02:46+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "mr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/mr/2-Regression/4-Logistic/README.md b/translations/mr/2-Regression/4-Logistic/README.md index 68d44f325..831ce6559 100644 --- a/translations/mr/2-Regression/4-Logistic/README.md +++ b/translations/mr/2-Regression/4-Logistic/README.md @@ -1,77 +1,77 @@ -# वर्गांचे अंदाज लावण्यासाठी लॉजिस्टिक रिग्रेशन +# वर्गांमध्ये भाकीत करण्यासाठी लॉजिस्टिक रिग्रेशन -![लॉजिस्टिक वि. लीनियर रिग्रेशन माहितीपट](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) +![लॉजिस्टिक विरुद्ध लिनियर रिग्रेशन माहितीचित्र](../../../../translated_images/mr/linear-vs-logistic.ba180bf95e7ee667.webp) -## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +## [प्री-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/) -> ### [हे धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html) +> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html) ## परिचय -रिग्रेशनवरील या अंतिम धड्यात, जो एक मूलभूत _क्लासिक_ मशीन लर्निंग तंत्र आहे, आपण लॉजिस्टिक रिग्रेशनकडे पाहू. तुम्ही हे तंत्र बायनरी वर्गांचे अंदाज लावण्यासाठी पॅटर्न शोधण्यासाठी वापराल. ही कँडी चॉकलेट आहे का नाही? हा रोग संसर्गजन्य आहे का नाही? हा ग्राहक हा उत्पादन निवडेल का नाही? +रिग्रेशनवरील या अंतिम धड्यांमध्ये, जी एक मूलभूत _क्लासिक_ एमएल तंत्र आहे, आपण लॉजिस्टिक रिग्रेशन कडे पाहू. तुम्ही हे तंत्र वापराल बायनरी वर्गांचे भाकीत करण्यासाठी नमुने शोधायला. हा कँडी चॉकलेट आहे की नाही? ही आजार संसर्गजन्य आहे की नाही? हा ग्राहक हा उत्पादन निवडेल की नाही? या धड्यात, तुम्ही शिकाल: - डेटा व्हिज्युअलायझेशनसाठी नवीन लायब्ररी -- लॉजिस्टिक रिग्रेशनसाठी तंत्र +- लॉजिस्टिक रिग्रेशनसाठी तंत्रे -✅ या प्रकारच्या रिग्रेशनवर काम करण्याचे तुमचे ज्ञान या [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) मध्ये अधिक सखोल करा. +✅ या [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) मध्ये या प्रकारच्या रिग्रेशनसह काम करण्याचे तुमचे समज वाढवा -## पूर्वतयारी +## पूर्वअट -कद्दूच्या डेटावर काम केल्यानंतर, आपण आता याबाबत पुरेसे परिचित आहोत की आपल्याकडे काम करण्यासाठी एक बायनरी वर्ग आहे: `Color`. +कद्दूच्या डेटावर काम केल्यानंतर, आता आपण इतके परिचित आहोत की आपल्याकडे एक बायनरी वर्ग आहे ज्यावर आपण काम करू शकतो: `Color`. -चला लॉजिस्टिक रिग्रेशन मॉडेल तयार करूया जे काही व्हेरिएबल्स दिल्यास, _एखाद्या कद्दूचा रंग काय असेल याचा अंदाज लावेल_ (नारिंगी 🎃 किंवा पांढरा 👻). +चला एक लॉजिस्टिक रिग्रेशन मॉडेल तयार करू ज्याद्वारे काही चलांच्या मदतीने, _ठरवायचे काढायचे आहे की दिलेला कद्दू कोणत्या रंगाचा असण्याची शक्यता आहे_ (केशरी 🎃 की पांढरा 👻). -> आपण रिग्रेशनबद्दलच्या धड्यांमध्ये बायनरी वर्गीकरण का बोलतो आहोत? केवळ भाषिक सोयीसाठी, कारण लॉजिस्टिक रिग्रेशन [खरं तर एक वर्गीकरण पद्धत आहे](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), जरी ती लीनियर-आधारित आहे. डेटा वर्गीकृत करण्याच्या इतर पद्धतींबद्दल पुढील धड्यांमध्ये जाणून घ्या. +> आपण रिग्रेशनबद्दल ग्रुप केलेल्या धडात बायनरी वर्गीकरणाबाबत का बोलत आहोत? फक्त भाषिक सुविधेसाठी, कारण लॉजिस्टिक रिग्रेशन ही [खरेतर वर्गीकरण पद्धत आहे](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), जरी ती एक रेषीय आधारित पद्धत आहे. पुढील धडगटात डेटा वर्गीकरणाच्या इतर मार्गांबद्दल जाणून घ्या. -## प्रश्न परिभाषित करा +## प्रश्न निश्चित करा -आपल्या उद्देशांसाठी, आपण याला 'पांढरा' किंवा 'पांढरा नाही' असे बायनरी स्वरूपात व्यक्त करू. आपल्या डेटासेटमध्ये 'पट्टेदार' हा वर्ग देखील आहे, परंतु त्याचे उदाहरण कमी असल्याने आपण त्याचा वापर करणार नाही. डेटासेटमधून null मूल्ये काढून टाकल्यानंतर तो वर्ग आपोआप गाळला जातो. +आपल्या उद्दिष्टांसाठी, आपण याला बायनरी स्वरूपात मांडणार आहोत: 'पांढरा' किंवा 'पांढरा नाही'. आमच्या डेटासेटमध्ये 'स्ट्राइप्ड' हा वर्ग देखील आहे पण त्याचे उदाहरण फारच कमी आहेत, म्हणून तो वापरणार नाही. त्याला डाटासेटमधून शून्य मूल्ये काढल्यानंतर तो नाहीसा होतो. -> 🎃 मजेदार तथ्य: आम्ही कधी कधी पांढऱ्या कद्दूला 'भूत' कद्दू म्हणतो. त्यांना कोरणे सोपे नसते, त्यामुळे ते नारिंगी कद्दूइतके लोकप्रिय नाहीत, पण ते छान दिसतात! त्यामुळे आपण आपला प्रश्न 'भूत' किंवा 'भूत नाही' असा देखील मांडू शकतो. 👻 +> 🎃 मजेशीर गोष्ट, आपण कधी कधी पांढऱ्या कद्दूंना 'भुताच्या' कद्दू म्हणतो. ते फार सहज नक्की करता येत नाहीत, त्यामुळे ते केशरींपेक्षा फार फार लोकप्रिय नाहीत पण ते छान दिसतात! त्यामुळे आपण आपला प्रश्न असे देखील पुनर्बाधित करू शकतो: 'भुत' किंवा 'भुत नाही'. 👻 -## लॉजिस्टिक रिग्रेशनबद्दल +## लॉजिस्टिक रिग्रेशनबाबत -लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनपेक्षा काही महत्त्वाच्या बाबतीत वेगळे आहे, जे तुम्ही यापूर्वी शिकले होते. +यापूर्वी तुम्ही शिकलेल्या लिनियर रिग्रेशनपासून लॉजिस्टिक रिग्रेशन काही महत्त्वाच्या बाबतीत वेगळे आहे. -[![शिकण्यासाठी लॉजिस्टिक रिग्रेशन समजून घेणे](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "शिकण्यासाठी लॉजिस्टिक रिग्रेशन समजून घेणे") +[![एमएल नवशिक्यांसाठी - मशीन लर्निंग वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन समजून घेणे](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "एमएल नवशिक्यांसाठी - मशीन लर्निंग वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन समजून घेणे") -> 🎥 वरील प्रतिमेवर क्लिक करा लॉजिस्टिक रिग्रेशनचा संक्षिप्त व्हिडिओ पाहण्यासाठी. +> 🎥 लॉजिस्टिक रिग्रेशनचा संक्षिप्त विडिओ आढावा पाहण्यासाठी वरच्या चित्रावर क्लिक करा. ### बायनरी वर्गीकरण -लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनसारखी वैशिष्ट्ये देत नाही. लॉजिस्टिक रिग्रेशन बायनरी वर्गाचा अंदाज लावते ("पांढरा किंवा पांढरा नाही") तर लीनियर रिग्रेशन सतत मूल्यांचा अंदाज लावू शकते, उदाहरणार्थ कद्दूच्या उत्पत्ती आणि कापणीच्या वेळेनुसार, _त्याच्या किमतीत किती वाढ होईल_. +लॉजिस्टिक रिग्रेशन लिनियर रिग्रेशनसारख्या वैशिष्ट्ये देत नाही. पहिला बायनरी वर्गाविषयी भाकीत देतो ("पांढरा की नाही") तर दुसरा सलग मूल्ये भाकीत करू शकतो, उदा. कद्दूचा काटेकोर स्रोत आणि कापणीची वेळ दिल्यास, _त्याची किंमत किती वाढेल_. -![कद्दू वर्गीकरण मॉडेल](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) -> माहितीपट: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) +![कद्दू वर्गीकरण मॉडेल](../../../../translated_images/mr/pumpkin-classifier.562771f104ad5436.webp) +> माहितीचित्र [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) यांच्या कडून -### इतर वर्गीकरण +### इतर वर्गीकरणे -लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील आहेत, जसे की मल्टिनॉमियल आणि ऑर्डिनल: +लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील असतात, ज्यात मल्टिनॉमियल आणि ऑर्डिनल समाविष्ट आहेत: -- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "नारिंगी, पांढरा, आणि पट्टेदार". -- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जेव्हा आपण आपल्या परिणामांना तार्किकरित्या क्रमबद्ध करू इच्छितो, जसे की कद्दूंचे आकार (लहान, मध्यम, मोठा, इत्यादी). +- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "केशरी, पांढरा, आणि पट्टेदार". +- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जर आपण आपल्या निकालांना लॉजिकल क्रमाने ठेवायचा असेल तर उपयोगात येते, जसे आपल्या कद्दू ज्यांना काही निश्चित आकारांच्या श्रेणीने (मिनी, स्मॉल, मीडियम, लार्ज, एक्सएल, एक्सएक्सएल) क्रमबद्ध केले आहे. -![मल्टिनॉमियल वि. ऑर्डिनल रिग्रेशन](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) +![मल्टिनॉमियल विरुद्ध ऑर्डिनल रिग्रेशन](../../../../translated_images/mr/multinomial-vs-ordinal.36701b4850e37d86.webp) -### व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही +### चल (variables) यांचे सहसंबंध आवश्यक नाहीत -तुम्हाला आठवत असेल की लीनियर रिग्रेशन अधिक सहसंबंधित व्हेरिएबल्ससह चांगले कार्य करते? लॉजिस्टिक रिग्रेशन याच्या उलट आहे - व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही. हे या डेटासाठी योग्य आहे ज्यामध्ये सहसंबंध तुलनेने कमकुवत आहेत. +लक्षात ठेवा लिनियर रिग्रेशनसाठी जास्त सहसंबंधित चल चांगले असतात? लॉजिस्टिक रिग्रेशन याउलट आहे - चलांना जुळण्याची गरज नाही. हे त्यासाठी उपयुक्त आहे ज्यात थोडा कमी सहसंबंध आहे. -### तुम्हाला स्वच्छ डेटाची गरज आहे +### तुलनेने मोठा स्वच्छ डेटाची गरज आहे -लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अधिक अचूक परिणाम देते; आपले छोटे डेटासेट या कार्यासाठी आदर्श नाही, त्यामुळे हे लक्षात ठेवा. +लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अचूक निकाल देते; आमचा छोटा डेटासेट या कामासाठी सर्वोत्तम नाही, त्यामुळे हे लक्षात ठेवा. -[![डेटा विश्लेषण आणि तयारी](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "डेटा विश्लेषण आणि तयारी") +[![एमएल नवशिक्यांसाठी - लॉजिस्टिक रिग्रेशनसाठी डेटा विश्लेषण आणि तयारी](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "एमएल नवशिक्यांसाठी - लॉजिस्टिक रिग्रेशनसाठी डेटा विश्लेषण आणि तयारी") -> 🎥 वरील प्रतिमेवर क्लिक करा लीनियर रिग्रेशनसाठी डेटा तयार करण्याचा व्हिडिओ पाहण्यासाठी. +> 🎥 लिनियर रिग्रेशनसाठी डेटा तयार करण्याच्या आढाव्यासाठी वर दिलेल्या चित्रावर क्लिक करा -✅ अशा प्रकारच्या डेटाचा विचार करा जो लॉजिस्टिक रिग्रेशनसाठी योग्य असेल. +✅ अशा प्रकारच्या डेटाचा विचार करा जे लॉजिस्टिक रिग्रेशनसाठी चांगले असू शकतात -## व्यायाम - डेटा स्वच्छ करा +## सराव - डेटा टायडी करा -सुरुवातीला, डेटा थोडा स्वच्छ करा, null मूल्ये काढून टाका आणि फक्त काही स्तंभ निवडा: +प्रथम, डेटा थोडा स्वच्छ करा, शून्य मूल्ये काढून टाका आणि केवळ काही स्तंभ निवडा: 1. खालील कोड जोडा: @@ -83,19 +83,19 @@ pumpkins.dropna(inplace=True) ``` - नेहमीप्रमाणे, तुमच्या नवीन डेटाफ्रेमवर एक नजर टाका: + तुम्ही नेहमी तुमच्या नवीन डेटा फ्रेमवर एक नजर टाकू शकता: ```python pumpkins.info ``` -### व्हिज्युअलायझेशन - श्रेणीबद्ध प्लॉट +### व्हिज्युअलायझेशन - श्रेणीकरणीय प्लॉट -आता तुम्ही [स्टार्टर नोटबुक](../../../../2-Regression/4-Logistic/notebook.ipynb) पुन्हा लोड केले आहे आणि कद्दू डेटा स्वच्छ केला आहे, ज्यामुळे काही व्हेरिएबल्ससह डेटासेट जतन केले आहे, ज्यामध्ये `Color` समाविष्ट आहे. चला नोटबुकमध्ये डेटाफ्रेम व्हिज्युअलाइझ करूया, एका वेगळ्या लायब्ररीचा वापर करून: [Seaborn](https://seaborn.pydata.org/index.html), जी आपण यापूर्वी वापरलेल्या Matplotlib वर आधारित आहे. +आतापर्यंत तुम्ही पुन्हा [स्टार्टर नोटबुक](./notebook.ipynb) मध्ये कद्दू डेटासेट लोड केला आहे आणि स्वच्छ केला आहे जेणेकरून काही चलांचा भाग राहील, ज्यात `Color` देखील आहे. चला नोटबुकमध्ये वेगळ्या लायब्ररीचा वापर करून डेटा फ्रेम व्हिज्युअलायझेशन करूया: [Seaborn](https://seaborn.pydata.org/index.html), जी Matplotlib वर आधारित आहे जी आपण आधी वापरली होती. -Seaborn तुमचा डेटा व्हिज्युअलाइझ करण्याचे काही छान मार्ग ऑफर करते. उदाहरणार्थ, तुम्ही `Variety` आणि `Color` च्या डेटाचे वितरण श्रेणीबद्ध प्लॉटमध्ये तुलना करू शकता. +Seaborn तुमच्या डेटाचे दृश्य सादर करण्याचे काही छान मार्ग देते. उदाहरणार्थ, तुम्ही प्रत्येक `Variety` आणि `Color` साठी डेटाचे वितरण श्रेणी प्लॉटमध्ये तुलना करू शकता. -1. `catplot` फंक्शन वापरून असा प्लॉट तयार करा, आपल्या कद्दू डेटाचा (`pumpkins`) वापर करा आणि प्रत्येक कद्दू श्रेणीसाठी (नारिंगी किंवा पांढरा) रंग मॅपिंग निर्दिष्ट करा: +1. `catplot` फंक्शन वापरून असा प्लॉट तयार करा, आपल्या कद्दू डेटासेट `pumpkins` वापरून, आणि प्रत्येक कद्दू वर्गासाठी रंग नकाशा निर्दिष्ट करा (केशरी किंवा पांढरा): ```python import seaborn as sns @@ -111,50 +111,242 @@ Seaborn तुमचा डेटा व्हिज्युअलाइझ क ) ``` - ![व्हिज्युअलाइज्ड डेटाचा ग्रिड](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) + ![व्हिज्युअल डेटा ग्रिड](../../../../translated_images/mr/pumpkins_catplot_1.c55c409b71fea2ec.webp) - डेटा पाहून, तुम्ही `Color` डेटा `Variety` शी कसा संबंधित आहे हे पाहू शकता. + डेटाकडे पाहून तुम्ही पाहू शकता की Color डेटा Variety शी कसा संबंधीत आहे. - ✅ या श्रेणीबद्ध प्लॉटवरून, तुम्ही कोणत्या मनोरंजक अन्वेषणांची कल्पना करू शकता? + ✅ या श्रेणी प्लॉटवरून तुम्हाला कोणत्या काही मनोरंजक शोधांसाठी कल्पना येतात? -### डेटा पूर्व-प्रक्रिया: फीचर आणि लेबल एन्कोडिंग +### डेटा पूर्व प्रक्रियाकरण: फिचर आणि लेबल एनकोडिंग +आमच्या कद्दूंना डेटासेटमधील सर्व स्तंभांमध्ये स्ट्रिंग मूल्ये आहेत. श्रेणीकरणीय डेटाबरोबर काम करणे माणसांसाठी सोपे आहे पण मशीनसाठी नाही. मशीन लर्निंग अल्गोरिदमसंख्यांसह चांगले काम करतात. म्हणून एनकोडिंग ही डेटा पूर्व-प्रक्रियाकरण मध्ये एक महत्त्वाची पायरी आहे, कारण ती आपल्याला श्रेणीकरणीय डेटा संख्यात्मक डेटामध्ये बदलण्याची परवानगी देते, कोणतीही माहिती गमावली न जाता. चांगले एनकोडिंग चांगले मॉडेल तयार करते. -आमच्या कद्दू डेटासेटमध्ये सर्व स्तंभांसाठी स्ट्रिंग मूल्ये आहेत. श्रेणीबद्ध डेटासह काम करणे मानवांसाठी सोपे आहे, परंतु मशीनसाठी नाही. मशीन लर्निंग अल्गोरिदम्ससाठी संख्यात्मक डेटा चांगला कार्य करतो. म्हणूनच, एन्कोडिंग हा डेटा पूर्व-प्रक्रिया टप्प्यातील एक महत्त्वाचा टप्पा आहे, कारण तो श्रेणीबद्ध डेटाला संख्यात्मक डेटामध्ये रूपांतरित करण्यास सक्षम करतो, कोणतीही माहिती गमावल्याशिवाय. चांगले एन्कोडिंग चांगले मॉडेल तयार करण्यास मदत करते. +फिचर एनकोडिंगसाठी दोन मुख्य प्रकार आहेत: -... -गोंधळ मॅट्रिक्सचा अचूकता आणि पुनर्प्राप्तीशी काय संबंध आहे? लक्षात ठेवा, वर प्रिंट केलेल्या वर्गीकरण अहवालाने अचूकता (0.85) आणि पुनर्प्राप्ती (0.67) दर्शवली होती. +1. ऑर्डिनल एनकोडर: हा ऑर्डिनल चलांसाठी योग्य आहे, जे श्रेणी वर्ग आहेत ज्याचा डेटा तार्किक क्रमाने आहे, जसे आमच्या डेटासेटमधील `Item Size` स्तंभ. हा अशा प्रकारे मॅपिंग तयार करतो की प्रत्येक वर्ग क्रमाने एक संख्या दर्शवेल. -अचूकता = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 + ```python + from sklearn.preprocessing import OrdinalEncoder + + item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']] + ordinal_features = ['Item Size'] + ordinal_encoder = OrdinalEncoder(categories=item_size_categories) + ``` + +2. श्रेणीक्रमांक एनकोडर: हा नोमिनल चलांसाठी योग्य आहे, जे श्रेणी वर्ग आहेत ज्याचा डेटा तार्किक क्रमाने नाही, जसे आमच्या डेटासेटमधील `Item Size` व्यतिरिक्त सर्व वैशिष्ट्ये. ही वन-हॉट एनकोडिंग आहे, म्हणजे प्रत्येक वर्ग एक बायनरी स्तंभाने दर्शविला जातो: एनकोड केलेला चल 1 असेल जर कद्दू त्या Variety मध्ये असेल आणि 0 अन्यथा. + + ```python + from sklearn.preprocessing import OneHotEncoder + + categorical_features = ['City Name', 'Package', 'Variety', 'Origin'] + categorical_encoder = OneHotEncoder(sparse_output=False) + ``` + त्यानंतर, `ColumnTransformer` वापरून एकाच टप्प्यात अनेक एनकोडर्स एकत्र करून योग्य स्तंभावर लागू केले जातात. + +```python + from sklearn.compose import ColumnTransformer + + ct = ColumnTransformer(transformers=[ + ('ord', ordinal_encoder, ordinal_features), + ('cat', categorical_encoder, categorical_features) + ]) + + ct.set_output(transform='pandas') + encoded_features = ct.fit_transform(pumpkins) +``` + दुसरीकडे, लेबल एनकोड करण्यासाठी, आम्ही स्किकिट-लर्नच्या `LabelEncoder` वर्गाचा वापर करतो, जो लेबलेसाठी एक उपयोगी वर्ग आहे जो त्यांना 0 ते n_classes-1 (इथे, 0 आणि 1) मधील मूल्यांमध्ये सामान्यीकरण करण्यात मदत करतो. + +```python + from sklearn.preprocessing import LabelEncoder + + label_encoder = LabelEncoder() + encoded_label = label_encoder.fit_transform(pumpkins['Color']) +``` + फिचर आणि लेबल एनकोड केल्यानंतर, आम्ही त्यांना नवीन डेटा फ्रेम `encoded_pumpkins` मध्ये एकत्र करू शकतो. + +```python + encoded_pumpkins = encoded_features.assign(Color=encoded_label) +``` +✅ `Item Size` स्तंभावर ऑर्डिनल एनकोडर वापरण्याचे फायदे काय आहेत? + +### चलांमधील संबंधांचे विश्लेषण करा + +आता आमचा डेटा प्री-प्रोसेसिंग झाल्यानंतर, आम्ही फिचर आणि लेबलमधील संबंधांचे विश्लेषण करू शकतो ज्यातून मॉडेलला फिचरस दिल्यास लेबल कितपत चांगले भाकीत करता येईल हे समजू शकते. +यासाठीचा सर्वोत्तम मार्ग म्हणजे डेटा प्लॉट करणे. आम्ही पुन्हा Seaborn चा `catplot` फंक्शन वापरणार आहोत, जेणेकरून `Item Size`, `Variety` आणि `Color` यांमधील संबंध श्रेणी प्लॉटमध्ये पाहता येतील. डेटा चांगल्या प्रकारे प्लॉट करण्यासाठी आम्ही एनकोड केलेला `Item Size` स्तंभ आणि अन एनकोड केलेला `Variety` स्तंभ वापरणार आहोत. + +```python + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size'] + + g = sns.catplot( + data=pumpkins, + x="Item Size", y="Color", row='Variety', + kind="box", orient="h", + sharex=False, margin_titles=True, + height=1.8, aspect=4, palette=palette, + ) + g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6)) + g.set_titles(row_template="{row_name}") +``` +![व्हिज्युअल डेटा catplot](../../../../translated_images/mr/pumpkins_catplot_2.87a354447880b388.webp) + +### स्वार्म प्लॉट वापरा + +कारण Color हा बायनरी वर्ग आहे (पांढरा किंवा नाही), त्याला 'व्हिज्युअलायझेशनसाठी [विशेष दृष्टिकोन](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)' लागतो. या वर्गाचा इतर चलांशी संबंध दाखविण्यासाठी इतर अनेक प्रकार देखील आहेत. + +तुम्ही Seaborn प्लॉट्ससह चल बाजूने बाजूने दिसवू शकता. + +1. मूल्यांचे वितरण दाखविण्यासाठी 'स्वार्म' प्लॉट वापरून पाहा: + + ```python + palette = { + 0: 'orange', + 1: 'wheat' + } + sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) + ``` + + ![व्हिज्युअल डेटा स्वार्म](../../../../translated_images/mr/swarm_2.efeacfca536c2b57.webp) + +**जागरूक रहा**: वरील कोड स्वार्म प्लॉटमध्ये इतक्या डेटापॉइंटचे प्रतिनिधित्व न करू शकल्याने वारंवार वारंवार चेतावणी निर्माण करू शकतो. यासाठी शक्यतो 'size' पॅरामीटर वापरून मार्करचा आकार कमी करणे एक उपाय आहे. मात्र, यामुळे प्लॉट वाचायला त्रास होऊ शकतो. + + +> **🧮 मला गणित दाखवा** +> +> लॉजिस्टिक रिग्रेशन 'मॅक्सिमम लाइकलिहूड' या संकल्पनेवर आधारित आहे ज्यात [सिग्मॉइड फंक्शन्स](https://wikipedia.org/wiki/Sigmoid_function) वापरल्या जातात. प्लॉटवर 'सिग्मॉइड फंक्शन' 'S' आकारात दिसते. ते एखादे मूल्य घेते आणि त्यास 0 आणि 1 मधील मध्यभागी नकाशित करते. त्याला 'लॉजिस्टिक वक्र' असेही म्हणतात. त्याचा सूत्र असे आहे: +> +> ![लॉजिस्टिक फंक्शन](../../../../translated_images/mr/sigmoid.8b7ba9d095c789cf.webp) +> +> जिथे सिग्मॉइडचा मध्यबिंदू x च्या शून्य बिंदूवर असतो, L वक्राचे कमाल मूल्य आहे, आणि k वक्राची तिव्रता आहे. जर फंक्शनचा परिणाम 0.5 पेक्षा जास्त असेल, तर त्या वर्गाला '1' म्हणून वर्गीकृत केले जाते. अन्यथा, तो '0' म्हणून वर्गीकृत होतो. + +## तुमचे मॉडेल तयार करा + +या बायनरी वर्गीकरणासाठी मॉडेल तयार करणे Scikit-learn मध्ये आश्चर्यकारकपणे सोपे आहे. + +[![एमएल नवशिक्यांसाठी - डेटा वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "एमएल नवशिक्यांसाठी - डेटा वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन") + +> 🎥 लिनियर रिग्रेशन मॉडेल तयार करण्याच्या संक्षिप्त विडिओसाठी वरील चित्रावर क्लिक करा + +1. तुमच्या वर्गीकरण मॉडेलमध्ये वापरायचे चल निवडा आणि `train_test_split()` कॉल करून प्रशिक्षण व चाचणी संच विभाजित करा: + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. आता `fit()` कॉल करून तुमचे मॉडेल प्रशिक्षण द्या आणि त्याचा निकाल दर्शवा: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + तुमच्या मॉडेलचा स्कोरबोर्ड पहा. वाईट नाही, लक्षात घेतले तर फक्त सुमारे 1000 रांगा आहेत डेटा सेट मध्ये: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 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 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## कनफ्युजन मॅट्रिक्सद्वारे अधिक चांगले समजून घेणे + +वर दिलेल्या आयटम्स मुद्रित करून तुम्हाला स्कोरबोर्ड अहवाल मिळेल [अटी](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report), पण मॉडेल कसे कार्य करते हे समजण्यासाठी तुम्ही [कनफ्युजन मॅट्रिक्स](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) वापरू शकता. + +> 🎓 '[कनफ्युजन मॅट्रिक्स](https://wikipedia.org/wiki/Confusion_matrix)' (किंवा 'त्रुटी मॅट्रिक्स') ही एक तक्ता आहे जी तुमच्या मॉडेलच्या ख-खरे विरुद्ध खोटे सकारात्मक आणि नकारात्मक प्रदर्शित करतो, ज्यामुळे भाकीतांचे अचूक मूल्यांकन होते. + +1. कनफ्युजन मेट्रिक्स वापरण्यासाठी `confusion_matrix()` कॉल करा: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + तुमच्या मॉडेलचा कनफ्युजन मेट्रिक्स पाहा: + + ```output + array([[162, 4], + [ 11, 22]]) + ``` + +Scikit-learn मध्ये कनफ्युजन मॅट्रिक्सच्या रांगा (अक्ष 0) खरी लेबल आहेत आणि स्तंभ (अक्ष 1) भाकीत केलेली लेबल. + +| | 0 | 1 | +| :---: | :---: | :---: | +| 0 | TN | FP | +| 1 | FN | TP | + +येथे काय घडत आहे? समजा आपला मॉडेल कद्दूंना दोन बायनरी वर्गांमध्ये वर्गीकृत करण्यास सांगितला आहे, 'पांढरा' आणि 'पांढरा नाही' या वर्गांमध्ये. + +- जर तुमचा मॉडेल एखादा कद्दू पांढऱ्यासाठी नाही असे भाकीत करतो आणि तो प्रत्यक्षात 'पांढरा नाही' वर्गाचा आहे, तर आपण त्याला खरा नकारात्मक (True Negative) म्हणतो, जो वर डाव्या बाजूच्या संख्येने दाखविला आहे. +- जर तुमचा मॉडेल एखादा कद्दू पांढरा म्हणून भाकीत करतो पण तो प्रत्यक्षात 'पांढरा नाही' वर्गाचा असतो, तर आपण त्याला खोटा सकारात्मक (False Positive) म्हणतो, जो वर उजव्या बाजूच्या संख्येने दाखविला आहे. +- जर तुमचा मॉडेल एखादा कद्दू पांढऱ्यासाठी नाही असे भाकीत करतो पण तो प्रत्यक्षात 'पांढरा' वर्गाचा असतो, तर आपण त्याला खोटा नकारात्मक (False Negative) म्हणतो, जो खाली डाव्या बाजूच्या संख्येने दाखविला आहे. +- जर तुमचा मॉडेल एखादा कद्दू पांढरा म्हणून भाकीत करतो आणि तो प्रत्यक्षात 'पांढरा' वर्गाचा आहे, तर आपण त्याला खरा सकारात्मक (True Positive) म्हणतो, जो खाली उजव्या बाजूच्या संख्येने दाखविला आहे. + + +तुम्हाला कदाचित अंदाज आला असेल की खरे पॉझिटिव्ह्स आणि खरे निगेटिव्ह्सची संख्या जास्त असावी आणि खोटे पॉझिटिव्ह्स आणि खोटे निगेटिव्ह्स कमी असावेत, ज्याचा अर्थ असा की मॉडेल चांगले काम करते. + +संदिग्ध मॅट्रिक्स म्हणजे प्रिसिजन आणि रीकॉलशी कसे संबंधित आहे? लक्षात ठेवा, वर छापलेल्या वर्गीकरण अहवालात प्रिसिजन (0.85) आणि रीकॉल (0.67) दाखवले आहे. + +प्रिसिजन = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 -पुनर्प्राप्ती = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 +रीकॉल = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 -✅ प्रश्न: गोंधळ मॅट्रिक्सनुसार मॉडेलने कसे काम केले? उत्तर: वाईट नाही; बऱ्याच खऱ्या नकारात्मक आहेत पण काही खोट्या नकारात्मक देखील आहेत. +✅ प्रश्न: संदिग्ध मॅट्रिक्सनुसार, मॉडेलने कसे काम केले? उत्तर: वाईट नाही; खरे निगेटिव्ह्स चांगल्या प्रमाणात आहेत पण काही खोटे निगेटिव्ह्स आहेत. -चला गोंधळ मॅट्रिक्सच्या TP/TN आणि FP/FN मॅपिंगच्या मदतीने आपण पूर्वी पाहिलेल्या संज्ञा पुन्हा पाहूया: +चला आधी पाहिलेल्या टर्म्सना संदिग्ध मॅट्रिक्सच्या TP/TN आणि FP/FN नकाशाच्या मदतीने पुन्हा पाहूया: -🎓 अचूकता: TP/(TP + FP) पुनर्प्राप्त केलेल्या उदाहरणांमध्ये संबंधित उदाहरणांचे प्रमाण (उदा. कोणते लेबल योग्य प्रकारे लेबल केले गेले) +🎓 प्रिसिजन: TP/(TP + FP) प्राप्त झालेल्या उदाहरणांमधील संबंधित उदाहरणांचा भाग (उदा. कोणते लेबल चांगले लेबल केले गेले) -🎓 पुनर्प्राप्ती: TP/(TP + FN) पुनर्प्राप्त केलेल्या संबंधित उदाहरणांचे प्रमाण, योग्य प्रकारे लेबल केले गेले असो किंवा नसो +🎓 रीकॉल: TP/(TP + FN) प्राप्त झालेल्या संबंधित उदाहरणांचा भाग, त्यांना चांगले लेबल केले गेले असो किंवा नाही -🎓 f1-स्कोअर: (2 * अचूकता * पुनर्प्राप्ती)/(अचूकता + पुनर्प्राप्ती) अचूकता आणि पुनर्प्राप्तीचे वजनित सरासरी, सर्वोत्तम 1 आणि सर्वात वाईट 0 +🎓 f1-score: (2 * precision * recall)/(precision + recall) प्रिसिजन आणि रीकॉलचा वजनदार सरासरी, ज्यात 1 सर्वोत्तम आणि 0 सर्वात वाईट आहे -🎓 समर्थन: पुनर्प्राप्त केलेल्या प्रत्येक लेबलच्या घटना संख्या +🎓 सपोर्ट: प्रत्येक लेबलच्या प्राप्त घटनांची संख्या -🎓 अचूकता: (TP + TN)/(TP + TN + FP + FN) नमुन्यासाठी अचूकपणे अंदाज केलेल्या लेबल्सचा टक्केवारी. +🎓 अचूकता (Accuracy): (TP + TN)/(TP + TN + FP + FN) नमुन्यासाठी लेबल अचूकपणे भाकीत करण्याचा टक्केवारी. -🎓 मॅक्रो सरासरी: प्रत्येक लेबलसाठी वजन न घेता मेट्रिक्सची सरासरी गणना, लेबल असमतोल विचारात न घेता. +🎓 मॅक्रो सरासरी (Macro Avg): प्रत्येक लेबलसाठी असंवेदनशील सरासरी मेट्रिक्सची मोजणी, लेबल असंतुलन लक्षात न घेता. -🎓 वजनित सरासरी: प्रत्येक लेबलसाठी मेट्रिक्सची सरासरी गणना, समर्थनाने (प्रत्येक लेबलसाठी खऱ्या उदाहरणांची संख्या) त्यांना वजन देऊन लेबल असमतोल विचारात घेणे. +🎓 वजनदार सरासरी (Weighted Avg): प्रत्येक लेबलसाठी सरासरी मेट्रिक्सची मोजणी, त्याच्या सपोर्ट (प्रत्येक लेबलसाठी खरे उदाहरणांची संख्या) द्वारे वजन देऊन लेबल असंतुलन लक्षात घेऊन. -✅ तुम्हाला वाटते का की तुम्हाला तुमच्या मॉडेलने खोट्या नकारात्मक संख्या कमी करायची असल्यास कोणते मेट्रिक पाहावे? +✅ जर तुम्हाला तुमच्या मॉडेलच्या खोट्या निगेटिव्ह्सची संख्या कमी करायची असेल तर कोणती मेट्रिक पाहायला हवी असेल? -## या मॉडेलचा ROC वक्र व्हिज्युअलाइझ करा +## या मॉडेलचा ROC कर्व्ह व्हिज्युअलाइझ करा [![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") -> 🎥 ROC वक्रचे संक्षिप्त व्हिडिओ अवलोकन पाहण्यासाठी वरील प्रतिमेवर क्लिक करा +> 🎥 ROC कर्व्हचा थोडकासा विडियो आढावा पाहण्यासाठी वरील प्रतिमा क्लिक करा -चला आणखी एक व्हिज्युअलायझेशन करूया ज्यामध्ये तथाकथित 'ROC' वक्र पाहता येईल: +चला आणखी एक व्हिज्युअलाइजेशन करूया ज्याला 'ROC' कर्व्ह म्हणतात: ```python from sklearn.metrics import roc_curve, roc_auc_score @@ -174,36 +366,38 @@ plt.title('ROC Curve') plt.show() ``` -Matplotlib वापरून, मॉडेलचा [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) किंवा ROC प्लॉट करा. ROC वक्र सामान्यतः वर्गीकरणाच्या खऱ्या आणि खोट्या सकारात्मक बाबींचा आढावा घेण्यासाठी वापरले जातात. "ROC वक्रमध्ये सामान्यतः Y अक्षावर खऱ्या सकारात्मक दर आणि X अक्षावर खोट्या सकारात्मक दर असतो." त्यामुळे वक्राची तीव्रता आणि मध्यरेषा व वक्र यामधील जागा महत्त्वाची असते: तुम्हाला अशी वक्र हवी आहे जी लवकर वर आणि रेषेवर जाते. आमच्या बाबतीत, सुरुवातीला काही खोट्या सकारात्मक आहेत आणि नंतर रेषा योग्य प्रकारे वर जाते: +Matplotlib वापरून मॉडेलचा [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) किंवा ROC प्लॉट करा. ROC कर्व्हचा उपयोग वर्गीकरणाऱ्या बहुधा त्यांच्या खऱ्या विरुद्ध खोट्या पॉझिटिव्ह आउटपुटचा अनुभव घेण्यासाठी केला जातो. "ROC कर्व्हमध्ये सामान्यतः खर्‍या पॉझिटिव्ह रेटसाठी Y अक्षावर आणि खोट्या पॉझिटिव्ह रेटसाठी X अक्षावर दाखवले जाते." त्यामुळे कर्व्हची तीव्रता आणि मध्यरेषा व कर्व्ह यामधील अंतर महत्वाचे असते: तुम्हाला अशी कर्व पाहिजे जी पटकन वर आणि रेषेच्या वर जाईल. आपल्या बाबतीत, सुरुवातीस खोटे पॉझिटिव्ह्स आहेत, आणि नंतर रेषा वर आणि योग्य पद्धतीने वाढते: -![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) +![ROC](../../../../translated_images/mr/ROC_2.777f20cdfc4988ca.webp) -शेवटी, Scikit-learn च्या [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) वापरून प्रत्यक्ष 'Area Under the Curve' (AUC) गणना करा: +अखेरीस, Scikit-learn ची [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) वापरून वास्तविक 'कर्वखालील क्षेत्र' (AUC) मोजा: ```python auc = roc_auc_score(y_test,y_scores[:,1]) print(auc) ``` -परिणाम `0.9749908725812341` आहे. AUC 0 ते 1 पर्यंत असते, त्यामुळे तुम्हाला मोठा स्कोअर हवा आहे, कारण 100% अचूक अंदाज करणारे मॉडेल 1 चा AUC असेल; या प्रकरणात, मॉडेल _खूप चांगले_ आहे. +परिणाम आहे `0.9749908725812341`. AUC च्या मानाने जो 0 ते 1 पर्यंत असतो, तुम्हाला मोठा स्कोर हवा असतो, कारण 100% अचूक भाकित करणारा मॉडेलचा AUC 1 असेल; या बाबतीत, मॉडेल _खूप चांगले_ आहे. -वर्गीकरणावरील भविष्यातील धड्यांमध्ये, तुम्ही तुमच्या मॉडेलचे स्कोअर सुधारण्यासाठी पुनरावृत्ती कशी करायची ते शिकाल. पण सध्या, अभिनंदन! तुम्ही हे पुनरावृत्ती धडे पूर्ण केले आहेत! +भविष्यातील वर्गीकरणाच्या धडय़ांमध्ये तुम्हाला शिकायला मिळेल की तुमच्या मॉडेलच्या स्कोर्स सुधारण्यासाठी कसे पुनरावृत्ती करायची. पण सध्या, अभिनंदन! तुम्ही हे रिग्रेशनचे धडे पूर्ण केलेत! --- -## 🚀चॅलेंज +## 🚀आव्हान -लॉजिस्टिक रिग्रेशनबद्दल अजून बरेच काही समजून घेण्यासारखे आहे! पण शिकण्याचा सर्वोत्तम मार्ग म्हणजे प्रयोग करणे. अशा प्रकारच्या विश्लेषणासाठी योग्य असलेला डेटासेट शोधा आणि त्यावर मॉडेल तयार करा. तुम्हाला काय शिकायला मिळते? टिप: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) वर मनोरंजक डेटासेट्स शोधा. +लॉजिस्टिक रिग्रेशनबद्दल आणखी बरेच काही आहे! पण शिकण्याचा सर्वोत्तम मार्ग म्हणजे प्रयोग करणे. अशा प्रकारच्या विश्लेषणासाठी योग्य डेटा संच शोधा आणि त्यावर मॉडेल तयार करा. तुम्ही काय शिकलात? टिप: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) येथे मनोरंजक डेटा संच शोधा. -## [पाठानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/) +## [धडा संपल्यानंतरचे क्विझ](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन आणि स्व-अभ्यास +## पुनरावलोकन व स्वअध्ययन -[स्टॅनफोर्डच्या या पेपर](https://web.stanford.edu/~jurafsky/slp3/5.pdf) च्या पहिल्या काही पृष्ठे वाचा ज्यामध्ये लॉजिस्टिक रिग्रेशनसाठी काही व्यावहारिक उपयोग दिले आहेत. आपण आतापर्यंत अभ्यासलेल्या रिग्रेशन प्रकारांपैकी कोणत्या प्रकारासाठी कोणते कार्य अधिक योग्य आहे याचा विचार करा. काय सर्वोत्तम कार्य करेल? +लॉजिस्टिक रिग्रेशनसाठी काही व्यावहारिक वापरांबाबत [स्टॅनफोर्डचा हा पेपर](https://web.stanford.edu/~jurafsky/slp3/5.pdf) वाचा. आपण आतापर्यंत शिकलेल्या वेगवेगळ्या प्रकारच्या रिग्रेशनच्या कामांमध्ये कोणती कार्ये कोणत्या प्रकाराशी अधिक सुसंगत आहेत याचा विचार करा. काय सर्वोत्तम काम करेल? -## असाइनमेंट +## गृहपाठ -[पुनरावृत्ती रिग्रेशन पुन्हा प्रयत्न करा](assignment.md) +[हा रिग्रेशन पुन्हा प्रयत्न करा](assignment.md) --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/8-Reinforcement/1-QLearning/README.md b/translations/mr/8-Reinforcement/1-QLearning/README.md index 9605e5ba9..23eb5d37d 100644 --- a/translations/mr/8-Reinforcement/1-QLearning/README.md +++ b/translations/mr/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# रिइन्फोर्समेंट लर्निंग आणि Q-लर्निंगची ओळख +# बळकटीकरण शिक्षण आणि क्‍यू-लर्निंगची ओळख -![मशीन लर्निंगमधील रिइन्फोर्समेंटचा सारांश एका स्केच नोटमध्ये](../../../../sketchnotes/ml-reinforcement.png) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांच्याकडून +![मशीन लर्निंगमधील बळकटीकरणाचा सारांश स्केच नोटमध्ये](../../../../translated_images/mr/ml-reinforcement.94024374d63348db.webp) +> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांची -रिइन्फोर्समेंट लर्निंगमध्ये तीन महत्त्वाचे संकल्पना असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी अ‍ॅक्शनचा सेट. एका विशिष्ट स्टेटमध्ये अ‍ॅक्शन पार पाडून एजंटला एक रिवॉर्ड दिला जातो. पुन्हा सुपर मारिओ गेमची कल्पना करा. तुम्ही मारिओ आहात, तुम्ही गेमच्या एका लेव्हलमध्ये आहात, एका कड्याच्या जवळ उभे आहात. तुमच्या वर एक नाणे आहे. तुम्ही मारिओ आहात, एका गेम लेव्हलमध्ये, एका विशिष्ट ठिकाणी ... हे तुमचे स्टेट आहे. उजवीकडे एक पाऊल टाकणे (एक अ‍ॅक्शन) तुम्हाला कड्यावरून खाली नेईल, आणि त्यामुळे तुम्हाला कमी संख्यात्मक स्कोअर मिळेल. परंतु, जंप बटण दाबल्यास तुम्हाला एक पॉइंट मिळेल आणि तुम्ही जिवंत राहाल. हे एक सकारात्मक परिणाम आहे आणि त्यामुळे तुम्हाला सकारात्मक संख्यात्मक स्कोअर मिळायला हवा. +बळकटीकरण शिक्षणामध्ये तीन महत्त्वाच्या संकल्पना असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी क्रियांचा संच. एखाद्या विशिष्ट स्टेटमध्ये एखादे क्रिया केल्यावर एजंटला पारितोषिक मिळते. पुन्हा कल्पना करा संगणक खेळ सुपर मारियो. तुम्ही मारियो आहात, तुम्ही एका खेळाच्या स्तरावर आहात, एका दऱ्या कडेला उभे आहात. तुमच्या वर नाणे आहे. तुम्ही मारियो आहात, खेळाच्या एका विशिष्ट स्थितीवर... ही तुमची स्थिती आहे. उजवीकडे एक पाऊल चालण्याने (एक क्रिया) तुम्हाला दऱ्या पार नेईल आणि त्यास कमी संख्यात्मक गुण मिळतील. मात्र, उडी मारण्याचा बटण दाबल्यास तुम्हाला एक गुण मिळेल आणि तुम्ही जिवंत राहाल. हा सकारात्मक परिणाम आहे आणि त्याला सकारात्मक संख्यात्मक गुण मिळायला हवेत. -रिइन्फोर्समेंट लर्निंग आणि सिम्युलेटर (गेम) वापरून, तुम्ही गेम खेळण्याची पद्धत शिकू शकता ज्यामुळे तुम्हाला जास्तीत जास्त रिवॉर्ड मिळेल, म्हणजे जिवंत राहणे आणि जास्तीत जास्त पॉइंट्स मिळवणे. +बळकटीकरण शिक्षण आणि सिम्युलेटर (खेळ) वापरून, तुम्ही खेळ कसा खेळायचा हे शिकू शकता ज्यामुळे जिंकण्याचा उद्दिष्ट जास्तीत जास्त जिवंत राहणे आणि शक्य तितके गुण मिळवणे होय. -[![रिइन्फोर्समेंट लर्निंगची ओळख](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![बळकटीकरण शिक्षणाची ओळख](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 वर दिलेल्या प्रतिमेवर क्लिक करा आणि Dmitry यांच्याकडून रिइन्फोर्समेंट लर्निंगबद्दल ऐका +> 🎥 वरील प्रतिमेवर क्लिक करा Dmitry यांचे बळकटीकरण शिक्षणावरील चर्चा ऐकण्यासाठी -## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) +## [प्रास्ताविक क्विझ](https://ff-quizzes.netlify.app/en/ml/) -## पूर्वतयारी आणि सेटअप +## पूर्वअट व सेटअप -या धड्यात, आपण Python मध्ये काही कोडसह प्रयोग करणार आहोत. तुम्ही तुमच्या संगणकावर किंवा क्लाउडमध्ये या धड्याचा Jupyter Notebook कोड चालवू शकता. +या धड्यात, आपण पायथनमध्ये काही कोड वापरून प्रयोग करू. आपण या धड्याचा Jupyter Notebook कोड तुमच्या संगणकावर किंवा क्लाउडवर चालवू शकता. -तुम्ही [धड्याचा नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) उघडू शकता आणि या धड्याचा अभ्यास करून तयार करू शकता. +आपण [धड्याचा नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) उघडू शकता आणि या धड्याला पूर्ण करू शकता. -> **टीप:** जर तुम्ही क्लाउडमधून हा कोड उघडत असाल, तर तुम्हाला [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाईल देखील मिळवावी लागेल, जी नोटबुक कोडमध्ये वापरली जाते. ती नोटबुकसह त्याच डिरेक्टरीमध्ये जोडा. +> **नोट:** जर आपण हा कोड क्लाउडमधून उघडत असाल, तर [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाईल देखील डाउनलोड करावी लागेल, जी नोटबुक कोडमध्ये वापरली जाते. ती नोटबुक साठी खात्री करा की त्याच फोल्डरमध्ये आहे. ## ओळख -या धड्यात, आपण **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** च्या जगाचा अभ्यास करणार आहोत, जो एका रशियन संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) यांच्या संगीत परीकथेतून प्रेरित आहे. आपण **रिइन्फोर्समेंट लर्निंग** वापरून पीटरला त्याचे वातावरण एक्सप्लोर करायला, स्वादिष्ट सफरचंद गोळा करायला आणि लांडग्याला टाळायला शिकवणार आहोत. +या धड्यात, आपण **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** या जगाचा अभ्यास करणार आहोत, जो रशियन संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) यांच्या संगीत फेयरी टेलवर आधारित आहे. आपण **बळकटीकरण शिक्षण** वापरून Peter ला त्याच्या आजूबाजूच्या परिसरात शोध घेऊ देऊ, स्वादिष्ट सफरचंद गोळा करू देऊ आणि लांडग्याशी होणारी भेट टाळू देऊ. -**रिइन्फोर्समेंट लर्निंग** (RL) ही एक शिकण्याची तंत्र आहे जी आपल्याला अनेक प्रयोग चालवून **एजंट**च्या **वातावरणात** एक आदर्श वर्तन शिकण्याची परवानगी देते. या वातावरणातील एजंटकडे काही **उद्दिष्ट** असावे, जे **रिवॉर्ड फंक्शन**द्वारे परिभाषित केले जाते. +**बळकटीकरण शिक्षण** (RL) ही एक शिकण्याची पद्धत आहे जी आपल्याला अनेक प्रयोग करून एखाद्या **एजंट** चा काही **परिसर** मध्ये सर्वोत्तम वागणूक शिकण्याची संधी देते. या पर्यावरणातील एजंटला एक **लक्ष्य** असावे, जे एका **पारितोषिक फंक्शन** द्वारा परिभाषित केले जाते. -## वातावरण +## परिसर -सोप्या पद्धतीने, पीटरच्या जगाला `width` x `height` आकाराच्या चौकोनी बोर्ड मानूया, असे: +सोपेपणासाठी, चला Peter चा जग हा `width` x `height` आकाराचा चौरस फळीचा बोर्ड मानूया, खालीलप्रमाणे: -![पीटरचे वातावरण](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peter चा परिसर](../../../../translated_images/mr/environment.40ba3cb66256c93f.webp) -या बोर्डमधील प्रत्येक सेल खालीलपैकी एक असू शकतो: +या बोर्डमधील प्रत्येक सेल्युलर किंवा कोष्टकापैकी एक: -* **जमीन**, ज्यावर पीटर आणि इतर प्राणी चालू शकतात. -* **पाणी**, ज्यावर चालणे शक्य नाही. -* **झाड** किंवा **गवत**, जिथे तुम्ही विश्रांती घेऊ शकता. -* **सफरचंद**, जे पीटरला स्वतःला खायला मिळाल्यास आनंद होईल. -* **लांडगा**, जो धोकादायक आहे आणि टाळला पाहिजे. +* **भूमी**, जिथे Peter आणि इतर प्राणी चालू शकतात. +* **पाणी**, ज्यावर निश्चितच चालता येत नाही. +* एक **झाड** किंवा **गवत**, जिथे आराम करता येतो. +* एक **सफरचंद**, जे Peter ला अन्न मिळवण्यासाठी आनंददायक ठरते. +* एक **लांडगा**, जो धोकादायक आहे आणि टाळावा लागतो. -एक स्वतंत्र Python मॉड्यूल आहे, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ज्यामध्ये या वातावरणाशी संबंधित कोड आहे. कारण हा कोड आपले संकल्पना समजून घेण्यासाठी महत्त्वाचा नाही, आपण मॉड्यूल आयात करू आणि नमुना बोर्ड तयार करण्यासाठी वापरू (कोड ब्लॉक 1): +एक स्वतंत्र पायथन मॉड्यूल आहे, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ज्यामध्ये या परिसराबरोबर काम करण्याचा कोड आहे. कारण हा कोड आपल्या संकल्पना समजण्यासाठी महत्त्वाचा नाही, आपण हा मॉड्यूल आयात करू आणि नमुना बोर्ड तयार करण्यासाठी वापरू (कोड ब्लॉक 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -हा कोड वरील चित्रासारखे वातावरण प्रिंट करेल. +हा कोड वरील आसपासच्या परिसराचा चित्रपट प्रिंट करेल असा अपेक्षित आहे. -## अ‍ॅक्शन आणि पॉलिसी +## क्रिया आणि धोरण -आपल्या उदाहरणात, पीटरचे उद्दिष्ट सफरचंद शोधणे असेल, लांडगा आणि इतर अडथळ्यांना टाळून. हे करण्यासाठी, तो मूलतः चालत राहू शकतो जोपर्यंत त्याला सफरचंद सापडत नाही. +आपल्या उदाहरणात, Peter चे लक्ष्य एक सफरचंद शोधणे आहे, तर लांडगा आणि इतर अडथळे टाळणे आहे. यासाठी, तो अगदी चालत फिरत सफरचंद शोधण्याचा प्रयत्न करेल. -म्हणून, कोणत्याही स्थितीत, तो खालील अ‍ॅक्शनपैकी एक निवडू शकतो: वर, खाली, डावीकडे आणि उजवीकडे. +त्यामुळे, कोणत्याही स्थितीत, तो खालीलपैकी एक क्रिया निवडू शकतो: वर, खालून, डावीकडे आणि उजवीकडे. -आपण त्या अ‍ॅक्शनला डिक्शनरी म्हणून परिभाषित करू आणि त्यांना संबंधित समन्वय बदलांच्या जोड्यांशी नकाशा करू. उदाहरणार्थ, उजवीकडे जाणे (`R`) `(1,0)` जोड्याशी संबंधित असेल. (कोड ब्लॉक 2): +आपण त्या क्रिया एक शब्दकोश (डिक्शनरी) म्हणून परिभाषित करू आणि त्यांना संदर्भित कोऑर्डिनेट बदलांच्या जोड्यांशी नकाशित करू. उदाहरणार्थ, उजवीकडे वळणे (`R`) म्हणजे जोड (1,0) असेल. (कोड ब्लॉक 2): ```python actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) } action_idx = { a : i for i,a in enumerate(actions.keys()) } ``` -या परिस्थितीचा सारांश देण्यासाठी, रणनीती आणि उद्दिष्ट खालीलप्रमाणे आहेत: +सारांश म्हणून, या परिस्थितीची धोरण आणि लक्ष्य अशी आहे: -- **रणनीती**, आपल्या एजंटची (पीटरची) **पॉलिसी**द्वारे परिभाषित केली जाते. पॉलिसी ही एक फंक्शन आहे जी कोणत्याही दिलेल्या स्थितीत अ‍ॅक्शन परत करते. आपल्या प्रकरणात, समस्येची स्थिती बोर्डद्वारे दर्शविली जाते, ज्यामध्ये खेळाडूची वर्तमान स्थिती समाविष्ट आहे. +- **धोरण**, आपल्या एजंटचे (Peter) एक तथाकथित **पॉलिसी** द्वारा परिभाषित केले जाते. पॉलिसी ही एक फंक्शन आहे जी कोणत्याही स्थितीत क्रिया परत करते. आपल्या प्रकरणात, समस्येची स्थिती बोर्डने प्रदर्शित केली जाते, ज्यामध्ये प्लेयरची सद्यस्थिती समाविष्ट आहे. -- **उद्दिष्ट**, रिइन्फोर्समेंट लर्निंगचे अंतिम उद्दिष्ट म्हणजे एक चांगली पॉलिसी शिकणे जी आपल्याला समस्या कार्यक्षमतेने सोडवण्यास अनुमती देईल. तथापि, बेसलाइन म्हणून, आपण **रँडम वॉक** नावाची सर्वात सोपी पॉलिसी विचारात घेऊया. +- **लक्ष्य**, बळकटीकरण शिक्षणाचे अंतिम उद्दिष्ट एक चांगले धोरण शिकणे आहे जे आपल्याला समस्या परिणामकारकपणे सोडवण्याची परवानगी देईल. परंतु तत्त्वतः, सर्वात सोपा धोरण जो **रँडम वॉक** म्हणतात तो मानूया. ## रँडम वॉक -आपल्या समस्येचे निराकरण प्रथम रँडम वॉक रणनीती अंमलात आणून करूया. रँडम वॉकसह, आपण परवानगी दिलेल्या अ‍ॅक्शनमधून पुढील अ‍ॅक्शन निवडू, जोपर्यंत आपण सफरचंदापर्यंत पोहोचत नाही (कोड ब्लॉक 3). +आपल्या समस्या प्रथम रँडम वॉक धोरण अंमलात आणून सोडवूया. रँडम वॉकमध्ये आपण पुढील क्रिया परवानगी दिलेल्या क्रियांमधून अनियमितपणे निवडू, जोपर्यंत सफरचंद दिसत नाही (कोड ब्लॉक 3). -1. खालील कोडसह रँडम वॉक अंमलात आणा: +1. खालील कोड वापरून रँडम वॉक कार्यान्वित करा: ```python def random_policy(m): return random.choice(list(actions)) def walk(m,policy,start_position=None): - n = 0 # number of steps - # set initial position + n = 0 # पावलांची संख्या + # प्रारंभिक स्थान सेट करा if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # यशस्वी! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # लांडगाने खाल्लं किंवा बुडालं while True: a = actions[policy(m)] new_pos = m.move_pos(m.human,a) if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: - m.move(a) # do the actual move + m.move(a) # प्रत्यक्ष हालचाल करा break n+=1 walk(m,random_policy) ``` - `walk` कॉल संबंधित मार्गाची लांबी परत करेल, जी एका रनपासून दुसऱ्या रनपर्यंत बदलू शकते. + `walk` ची कॉल संबंधित मार्गाची लांबी परत करावी, जी एक धावणीतून दुसऱ्या धावणीत बदलू शकते. -1. वॉक प्रयोग अनेक वेळा चालवा (म्हणजे, 100 वेळा), आणि परिणामी आकडेवारी प्रिंट करा (कोड ब्लॉक 4): +1. चालण्याचा प्रयोग अनेक वेळा (उदा., 100 वेळा) चालवा आणि परिणामी आकडेवारी प्रिंट करा (कोड ब्लॉक 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) } print_statistics(random_policy) ``` - लक्षात घ्या की मार्गाची सरासरी लांबी सुमारे 30-40 पायऱ्या आहे, जी खूप जास्त आहे, दिलेल्या तथ्यामुळे की सरासरी अंतर जवळच्या सफरचंदापर्यंत सुमारे 5-6 पायऱ्या आहे. + लक्षात ठेवा की एका मार्गाची सरासरी लांबी सुमारे 30-40 पावले आहे, जे खूप आहे, कारण जवळपासच्या सफरचंदापर्यंतचा सरासरी अंतर सुमारे 5-6 पावले आहे. - तुम्ही पीटरच्या रँडम वॉक दरम्यानच्या हालचाली कशा दिसतात हे देखील पाहू शकता: + आपण पाहू शकता की रँडम वॉक चालताना Peter ची हालचाल कशी दिसते: - ![पीटरचा रँडम वॉक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peter चा रँडम वॉक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## रिवॉर्ड फंक्शन +## पारितोषिक फंक्शन -आपली पॉलिसी अधिक बुद्धिमान बनवण्यासाठी, आपल्याला समजून घ्यावे लागेल की कोणते हालचाल "चांगले" आहेत. हे करण्यासाठी, आपल्याला आपले उद्दिष्ट परिभाषित करावे लागेल. +आपली धोरण अधिक बुद्धिमान करण्यासाठी, आपल्याला हे समजून घ्यावे लागेल कोणती हालचाल इतरांपेक्षा "चांगली" आहे. यासाठी, आपल्याला आपले लक्ष्य परिभाषित करावे लागेल. -उद्दिष्ट **रिवॉर्ड फंक्शन**च्या स्वरूपात परिभाषित केले जाऊ शकते, जे प्रत्येक स्थितीसाठी काही स्कोअर मूल्य परत करेल. संख्या जितकी जास्त असेल, तितके रिवॉर्ड फंक्शन चांगले. (कोड ब्लॉक 5) +लक्ष्य एका **पारितोषिक फंक्शन**च्या संदर्भाने परिभाषित केले जाऊ शकते, जे प्रत्येक स्थितीसाठी काही गुण परत करते. संख्या जितकी जास्त तितकी पारितोषिक फंक्शन चांगले आहे. (कोड ब्लॉक 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -रिवॉर्ड फंक्शनबद्दल एक मनोरंजक गोष्ट म्हणजे बहुतेक प्रकरणांमध्ये, *आपल्याला गेमच्या शेवटीच महत्त्वपूर्ण रिवॉर्ड दिला जातो*. याचा अर्थ असा की आपला अल्गोरिदम "चांगल्या" पायऱ्यांना लक्षात ठेवावा लागेल ज्यामुळे शेवटी सकारात्मक रिवॉर्ड मिळतो, आणि त्यांचे महत्त्व वाढवावे लागेल. त्याचप्रमाणे, सर्व हालचाली ज्यामुळे वाईट परिणाम होतात त्यांना हतोत्साहित केले पाहिजे. +पारितोषिक फंक्शन्स बद्दल एक रसपूर्ण गोष्ट म्हणजे बहुतेक केसेस मध्ये, *आपल्याला गेमच्या शेवटीच मोठे पारितोषिक मिळते*. याचा अर्थ आपला अल्गोरिदम "चांगल्या" पावलांची आठवण ठेवायला पाहिजे जे शेवटी सकारात्मक पारितोषिकाकडे नेतात आणि त्यांचे महत्त्व वाढवायला पाहिजे. त्याचप्रमाणे, सर्व हालचाली ज्या वाईट परिणांमांकडे नेतात त्यांना टाळले पाहिजे. -## Q-लर्निंग +## क्‍यू-लर्निंग -आपण येथे चर्चा करणार असलेला अल्गोरिदम **Q-लर्निंग** म्हणून ओळखला जातो. या अल्गोरिदममध्ये, पॉलिसी एका फंक्शन (किंवा डेटा स्ट्रक्चर)द्वारे परिभाषित केली जाते ज्याला **Q-टेबल** म्हणतात. ते दिलेल्या स्थितीत प्रत्येक अ‍ॅक्शनच्या "चांगुलपणाची" नोंद ठेवते. +एक अल्गोरिदम जो आपण येथे चर्चा करू ते म्हणजे **क्‍यू-लर्निंग**. या अल्गोरिदममध्ये, धोरण एका फंक्शन (किंवा डेटा स्ट्रक्चर) द्वारे परिभाषित केले जाते ज्याला **Q-टेबल** म्हणतात. हे दिलेल्या स्थितीतील प्रत्येक क्रियेची "चांगलीपणा" नोंदवते. -याला Q-टेबल म्हणतात कारण ते टेबल किंवा मल्टी-डायमेन्शनल अ‍ॅरे म्हणून सादर करणे सोयीचे असते. कारण आपला बोर्ड `width` x `height` परिमाणांचा आहे, आपण Q-टेबलला `width` x `height` x `len(actions)` आकाराच्या numpy अ‍ॅरेद्वारे सादर करू शकतो: (कोड ब्लॉक 6) +ते Q-टेबल म्हणून ओळखले जाते कारण ते बहुतेकवेळी टेबल किंवा मल्टि-डायमेंशनल अरे म्हणून सादर करणे सोपे असते. आपला बोर्ड `width` x `height` परिमाणांचा आहे, त्यामुळे आपण Q-टेबल numpy अरेच्या रूपात `width` x `height` x `len(actions)` आकाराने सादर करू शकतो: (कोड ब्लॉक 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -लक्षात घ्या की आपण Q-टेबलच्या सर्व मूल्यांना समान मूल्याने प्रारंभ करतो, आपल्या प्रकरणात - 0.25. हे "रँडम वॉक" पॉलिसीशी संबंधित आहे, कारण प्रत्येक स्थितीत सर्व हालचाली समान चांगल्या आहेत. आपण Q-टेबल बोर्डवर व्हिज्युअलाइझ करण्यासाठी `plot` फंक्शनला पास करू शकतो: `m.plot(Q)`. +आपण सर्व Q-टेबलचे मूल्ये सारखी ठेवलात, आमच्या बाबतीत - 0.25. हे "रँडम वॉक" धोरणाशी जुळते, कारण प्रत्येक स्थितीत सर्व हालचाल समान चांगल्या असतात. आपण Q-टेबलला `m.plot(Q)` वापरून बोर्डवर दिसवू शकतो. -![पीटरचे वातावरण](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peter चा परिसर](../../../../translated_images/mr/env_init.04e8f26d2d60089e.webp) -प्रत्येक सेलच्या मध्यभागी एक "बाण" आहे जो हालचालीच्या प्राधान्य दिलेल्या दिशेची सूचना करतो. कारण सर्व दिशे समान आहेत, एक बिंदू दर्शविला जातो. +प्रत्येक सेल्युलरच्या मध्यभागी एक "बाण" आहे जो प्राधान्य दिलेल्या दिशेची सूचना करतो. सर्व दिशा समान असल्यामुळे, एक बिंदू दर्शविला जातो. -आता आपल्याला सिम्युलेशन चालवावे लागेल, आपले वातावरण एक्सप्लोर करावे लागेल, आणि Q-टेबल मूल्यांचे चांगले वितरण शिकावे लागेल, ज्यामुळे आपल्याला सफरचंदापर्यंत पोहोचण्याचा मार्ग खूप वेगाने सापडेल. +आता आपल्याला सिम्युलेशन चालवून आपला परिसर शोधून नवीन Q-टेबल मूल्ये शिकणे आवश्यक आहे, ज्यामुळे सफरचंद शोधण्याचा मार्ग वेगाने मिळेल. -## Q-लर्निंगचा सार: बेलमन समीकरण +## क्‍यू-लर्निंगचा सार: बेलमन समीकरण -एकदा आपण हालचाल सुरू केली की प्रत्येक अ‍ॅक्शनला संबंधित रिवॉर्ड मिळेल, म्हणजे आपण सैद्धांतिकदृष्ट्या सर्वोच्च तात्काळ रिवॉर्डच्या आधारावर पुढील अ‍ॅक्शन निवडू शकतो. तथापि, बहुतेक स्थितीत, हालचाल आपले सफरचंद गाठण्याचे उद्दिष्ट साध्य करणार नाही, आणि त्यामुळे आपण तात्काळ निर्णय घेऊ शकत नाही की कोणती दिशा चांगली आहे. +जेव्हा आपण हालचाल सुरू करतो, प्रत्येक क्रियेला संबंधित पारितोषिक मिळते, म्हणजे आपल्याला थेट सर्वात जास्त तत्काळ पारितोषिकानुसार पुढील क्रिया निवडता येईल. परंतु, बहुतेक स्थितीत ही हालचाल आपले लक्ष्य (सफरचंद गाठणे) साध्य करणार नाही, त्यामुळे सहज ठरवता येत नाही कोणती दिशा चांगली आहे. -> लक्षात ठेवा की तात्काळ परिणाम महत्त्वाचा नाही, तर अंतिम परिणाम महत्त्वाचा आहे, जो आपल्याला सिम्युलेशनच्या शेवटी मिळेल. +> लक्षात ठेवा की तत्काळ परिणाम महत्त्वाचा नाही, परंतु अंतिम परिणाम जो सिम्युलेशनच्या शेवटी मिळेल तो महत्त्वाचा आहे. -या विलंबित रिवॉर्डचा विचार करण्यासाठी, आपल्याला **[डायनॅमिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** च्या तत्त्वांचा वापर करावा लागेल, ज्यामुळे आपल्याला आपली समस्या पुनरावृत्तीने विचार करता येईल. +या विलंबित पारितोषिकासाठी विचार करण्यासाठी, आपल्याला **[डायनॅमिक प्रोग्रॅमिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** च्या तत्त्वांचा वापर करावा लागेल, जे आपल्याला पुनरावृत्तीचा वापर करून समस्या विचारण्याची परवानगी देतात. -समजा आपण आता स्थिती *s* वर आहोत, आणि आपण पुढील स्थिती *s'* वर जाण्यास इच्छुक आहोत. असे केल्याने, आपल्याला तात्काळ रिवॉर्ड *r(s,a)* मिळेल, जो रिवॉर्ड फंक्शनद्वारे परिभाषित केला जातो, तसेच काही भविष्यातील रिवॉर्ड मिळेल. जर आपण मानले की आपला Q-टेबल प्रत्येक अ‍ॅक्शनची "आकर्षकता" योग्य प्रकारे प्रतिबिंबित करतो, तर स्थिती *s'* वर आपण *a'* अ‍ॅक्शन निवडू, जो *Q(s',a')* च्या जास्तीत जास्त मूल्याशी संबंधित आहे. त्यामुळे, स्थिती *s* वर आपल्याला मिळणारा सर्वोत्तम संभाव्य भविष्यातील रिवॉर्ड परिभाषित केला जाईल म्हणून `max` +समजा आपण आताच्या स्थिती *s* वर आहोत, आणि पुढील स्थिती *s'* कडे चालायचे आहे. असे केल्यास, आपल्याला तत्काळ पारितोषिक *r(s,a)* मिळेल, जे पारितोषिक फंक्शनने व्याख्यित आहे, आणि भविष्यातील काही पारितोषिकही मिळेल. आपण समजून घेऊ की आपला Q-टेबल प्रत्येक क्रियेची "आकर्षकता" योग्य रीतीने दर्शवतो, तर स्थिती *s'* मध्ये आपण अशी क्रिया *a* निवडू ज्याची किंमत *Q(s',a')* सर्वाधिक असेल. त्यामुळे स्थिती *s* वर मिळणारे सर्वोत्तम भविष्यातील पारितोषिक `max`a'*Q(s',a')* (येथे सर्व शक्य क्रिया *a'* वरून सर्वाधिक मूल्य निवडले जाते) असेल. -## धोरण तपासणे +हे आपल्याला **बेलमन सूत्र** देते, जे स्थिती *s*, क्रिया *a* साठी Q-टेबलचे मूल्य कसे गणना करावे ते सांगते: -Q-Table प्रत्येक स्थितीतील प्रत्येक क्रियेच्या "आकर्षकतेची" यादी देते, त्यामुळे आपल्या जगात कार्यक्षम नेव्हिगेशन परिभाषित करण्यासाठी ते वापरणे सोपे आहे. सर्वात सोप्या प्रकरणात, आपण Q-Table मधील सर्वाधिक मूल्याशी संबंधित क्रिया निवडू शकतो: (कोड ब्लॉक 9) + + +इथे γ हे **डिस्काउंट फॅक्टर** आहे जे ठरवते की आपण वर्तमान पारितोषिक किती प्रमाणात भविष्याच्या पारितोषिकापेक्षा जास्त महत्व देऊ इच्छिता. + +## शिक्षण अल्गोरिदम + +मागील समीकरणानुसार, आपण आता आपला शिक्षण अल्गोरिदमचे छद्म-कोड लिहू शकतो: + +* सर्व स्थिती आणि क्रिया साठी Q-टेबल Q समान किमतीने आरंभ करा +* शिक्षण गती α ← 1 सेट करा +* अनेक वेळा सिम्युलेशन पुन्हा पुन्हा चालवा + 1. यादृच्छिक स्थितीत सुरू करा + 1. पुन्हा सांगा + 1. स्थिती *s* वरील क्रिया *a* निवडा + 2. क्रिया अंमलात आणा आणि नवीन स्थिती *s'* वर जा + 3. जर आपण गेम संपण्याच्या स्थितीवर पोहोचलो, किंवा एकूण पारितोषिक खूप कमी असेल - सिम्युलेशन थांबवा + 4. नवीन स्थितीत पारितोषिक *r* गणना करा + 5. बेलमन समीकरणानुसार Q-फंक्शन अद्ययावत करा: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. एकूण पारितोषिक अद्ययावत करा आणि α कमी करा. + +## उपयोग vs. अन्वेषण + +वर दिलेल्या अल्गोरिदममध्ये, आपण तपशीलवार सांगितले नाही की टप्पा 2.1 मध्ये क्रिया कशी निवडायची. जर आपण यादृच्छिकपणे क्रिया निवडत असाल, तर आपण पर्यावरणाचा अनियमित **अन्वेषण** करणार आहोत, आणि बहुधा आपण वारंवार मरणार आहोत तसेच ज्या भागात आपण निघणार नाही, तिथे गुणांकन करू शकु. एक पर्यायी पद्धत म्हणजे आधीच ज्ञात असलेल्या Q-टेबल मूल्यांचा **उपयोग** करून सर्वोत्तम क्रिया (जिचे Q-मूल्य जास्त आहे) निवडणे. परंतु यामुळे आपण इतर स्थिती अन्वेषण करू शकणार नाही आणि कदाचित आपण सर्वोत्तम समाधान सापडणार नाही. + +त्यामुळे, सर्वोत्तम पद्धत म्हणजे अन्वेषण आणि उपयोग यांच्यात संतुलन साधणे. हे असे करता येते की स्थिती *s* वरील क्रिया Q-टेबलमधील मूल्यांची प्रमाणानुसार निवडली जाते. सुरुवातीला, जेव्हा Q-टेबल मुळे सर्व मूल्य समान असतात, तेव्हा ही निवड रँडम असेल, पण जसे आपण पर्यावरणाबद्दल अधिक शिकू, आपल्याला अधिक शक्यता असेल की आपण आदर्श मार्गाचा अवलंब करू, तसेच एजंटला थोड्या वेळा अन्वेषित मार्ग निवडण्याची संधी देऊ. + +## पायथन अंमलबजावणी + +आपण आता शिक्षण अल्गोरिदम अंमलात आणण्यास तयार आहोत. त्याआधी, आपल्याला एक फंक्शन हवे जे Q-टेबलमधील कोणत्याही संख्यांना संबंधित क्रियांसाठी संभाव्यता व्हेक्टरमध्ये रूपांतरित करेल. + +1. `probs()` नावाचे फंक्शन तयार करा: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + आपण मूळ व्हेक्टरमध्ये काही `eps` घालतो ज्यामुळे सुरुवातीला सर्व घटक समान असताना 0 ने भागाकार टाळता येते. + +5000 प्रयोगांद्वारे, ज्याला **epochs** म्हणतात, हा अल्गोरिदम चालवा: (कोड ब्लॉक 8) +```python + for epoch in range(5000): + + # प्रारंभिक बिंदू निवडा + m.random_start() + + # सफर सुरु करा + n=0 + cum_reward = 0 + while True: + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + dpos = actions[a] + m.move(dpos,check_correctness=False) # आम्ही खेळाडूला बोर्डच्या बाहेर जाण्याची परवानगी देतो, ज्यामुळे एपिसोड समाप्त होतो + r = reward(m) + cum_reward += r + if r==end_reward or cum_reward < -1000: + lpath.append(n) + break + alpha = np.exp(-n / 10e5) + gamma = 0.5 + ai = action_idx[a] + Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max()) + n+=1 +``` + +हा अल्गोरिदम चालवल्यानंतर, Q-टेबल अद्ययावत होईल ज्यामुळे प्रत्येक पावलाच्या वेगळ्या क्रियांना आकर्षकता स्पष्ट होईल. आपण Q-टेबलसाठी एका व्हेक्टरचे प्लॉट करून दाखवू शकतो जे प्रत्येक सेल्युलरवर इच्छित निर्देश दर्शवेल. सोपेसाठी, आम्ही बाणाच्या टोकाऐवजी एक लहान वर्तुळ रेखाटतो. + + + +## धोरण तपासणी + +Q-टेबलमध्ये प्रत्येक क्रियेची आकर्षकता सूचीबद्ध असल्यामुळे, याचा वापर करून आपल्याला आपल्या जगात प्रभावी मार्ग चालवता येतो. सर्वात सोप्या प्रकरणात, आपण सर्वाधिक Q-टेबल मूल्य असलेल्या क्रियेला निवडू शकतो: (कोड ब्लॉक 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> वरील कोड काही वेळा चालवून पाहिल्यास, कधीकधी तो "अडकतो" असे तुम्हाला जाणवेल, आणि तुम्हाला नोटबुकमधील STOP बटण दाबून तो थांबवावा लागतो. असे होण्याचे कारण म्हणजे काहीवेळा दोन स्थिती "ऑप्टिमल Q-Value" च्या दृष्टीने एकमेकांकडे "दर्शवतात", अशा परिस्थितीत एजंट त्या स्थितींमध्ये सतत फिरत राहतो. -## 🚀चॅलेंज +> आपण वरील कोड काही वेळा चालवण्याचा प्रयत्न केला तर कधी कधी तो "थांबतो" असं तुम्हाला दिसू शकतं, आणि तुम्हाला त्याला थांबवण्यासाठी नोटबुकमध्ये STOP बटन दाबावं लागतं. हे असं होतं कारण असे परिस्थिती असू शकतात जिथे दोन अवस्था परस्परांच्या अनुकूल Q-मूल्याच्या संदर्भात "सूचित" करतात, अशा स्थितीत एजंट त्या अवस्थांमध्ये अनंतकाळ हालचाल करत राहतो. + +## 🚀आव्हान -> **कार्य 1:** `walk` फंक्शनमध्ये बदल करून पथाची जास्तीत जास्त लांबी एका विशिष्ट टप्प्यांपर्यंत (उदा. 100) मर्यादित करा आणि वरील कोड कधीकधी ही मूल्ये परत करत असल्याचे पाहा. +> **कार्य 1:** `walk` फंक्शनमध्ये मार्गाची कमाल लांबी काही निश्चित स्टेपपर्यंत (उदा., १००) मर्यादित करा, आणि वरील कोडमध्ये कधीकधी हा मूल्य परत येते ते पाहा. -> **कार्य 2:** `walk` फंक्शनमध्ये बदल करून असे करा की ते आधीच भेट दिलेल्या ठिकाणी परत जाऊ शकणार नाही. यामुळे `walk` लूप होण्यापासून रोखले जाईल, परंतु एजंट अजूनही अशा ठिकाणी "अडकू" शकतो जिथून तो बाहेर पडू शकत नाही. +> **कार्य 2:** `walk` फंक्शनमध्ये असे बदल करा की ते आधी जिथे गेले आहे तेथे परत जाऊ नये. यामुळे `walk` मध्ये लूप होण्यापासून टाळता येईल, परंतु एजंट काही ठिकाणी "अडकून" जाऊ शकतो ज्यापासून तो सुटू शकत नाही. ## नेव्हिगेशन -प्रशिक्षणादरम्यान वापरलेले धोरण अधिक चांगले नेव्हिगेशन धोरण ठरेल, जे शोषण आणि अन्वेषण यांचे संयोजन करते. या धोरणात, आम्ही Q-Table मधील मूल्यांच्या प्रमाणात प्रत्येक क्रिया निवडू. ही रणनीती अजूनही एजंटला आधीच शोधलेल्या स्थानावर परत येण्याची शक्यता ठेवते, परंतु, खालील कोडमधून तुम्ही पाहू शकता की, ती इच्छित स्थानापर्यंत पोहोचण्यासाठी खूपच कमी सरासरी पथ लांबी देते (लक्षात ठेवा की `print_statistics` सिम्युलेशन 100 वेळा चालवते): (कोड ब्लॉक 10) +चांगली नेव्हिगेशन धोरण म्हणजे जशी आपण प्रशिक्षणादरम्यान वापरली होती, ज्यामध्ये उपभोग आणि शोध दोन्हींचा समावेश आहे. या धोरणानुसार, आपण प्रत्येक क्रिया ठरलेल्या शक्यतेने निवडू, जी Q-टेबलमधील मूल्यांशी प्रमाणित आहे. या धोरणामुळेही एजंट कधी कधी आधीच शोधलेल्या स्थितीकडे परत येऊ शकतो, पण खालील कोडमधून दिसते की परिणामी इच्छित ठिकाणापर्यंतचा सरासरी मार्ग खूपच कमी होतो (लक्षात ठेवा `print_statistics` हे सिम्युलेशन १०० वेळा चालवते): (कोड ब्लॉक १०) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -हा कोड चालवल्यानंतर, तुम्हाला आधीच्या तुलनेत खूपच कमी सरासरी पथ लांबी मिळेल, साधारणतः 3-6 च्या दरम्यान. +हा कोड चालवल्यानंतर, तुम्हाला पूर्वीपेक्षा खूपच कमी सरासरी मार्ग लांबी मिळेल, अंदाजे ३-६ च्या दरम्यान. + +## शिक्षण प्रक्रियेची तपासणी -## शिकण्याच्या प्रक्रियेचा अभ्यास +जसे आपण म्हणालो, शिक्षण प्रक्रिया म्हणजे समस्येच्या संरचनेबद्दल मिळालेल्या ज्ञानाचा शोध आणि उपभोग यांचा समतोल आहे. आपण पाहिले की शिकण्याचे निकाल (एजंटला उद्दिष्टाचा लहान मार्ग शोधण्यास मदत करण्याची क्षमता) सुधारली आहे, परंतु शिक्षण प्रक्रियेदरम्यान सरासरी मार्गाची लांबी कशी वागते हे पाहणे देखील मनोरंजक आहे: -जसे आपण नमूद केले आहे, शिकण्याची प्रक्रिया ही अन्वेषण आणि समस्या जागेच्या संरचनेबद्दल मिळालेल्या ज्ञानाच्या अन्वेषण यामधील संतुलन आहे. आपण पाहिले आहे की शिकण्याचे परिणाम (एजंटला लक्ष्यापर्यंत पोहोचण्यासाठी लहान पथ शोधण्यात मदत करण्याची क्षमता) सुधारली आहे, परंतु शिकण्याच्या प्रक्रियेदरम्यान सरासरी पथ लांबी कशी वागते हे पाहणे देखील मनोरंजक आहे: + -## शिकवणुकीचा सारांश +शिकण्याचा सारांश असा करता येईल: -- **सरासरी पथ लांबी वाढते**. सुरुवातीला, सरासरी पथ लांबी वाढते असे दिसते. याचे कारण असे असू शकते की जेव्हा आपल्याला वातावरणाबद्दल काहीच माहिती नसते, तेव्हा आपण वाईट स्थितींमध्ये, जसे की पाणी किंवा लांडगा, अडकण्याची शक्यता असते. जसजसे आपण अधिक शिकतो आणि हे ज्ञान वापरतो, तसतसे आपण वातावरणाचा अधिक वेळ अन्वेषण करू शकतो, परंतु तरीही आपल्याला सफरचंद कुठे आहेत याची फारशी माहिती नसते. +- **सरासरी मार्गाची लांबी वाढते**. येथे आपण पाहतो की सुरुवातीला सरासरी मार्ग लांबतो. कदाचित कारण असं की जेव्हा आपल्याला वातावरणाबद्दल काहीच माहिती नसते, तेव्हा आपण वाईट स्थितींमध्ये, जसे पाणी किंवा लांडगा, अडकू शकतो. जसे आपण अधिक शिकतो आणि हे ज्ञान वापरायला सुरुवात करतो, आपण वातावरण अधिक काळ तपासू शकतो, परंतु आपल्याला सफरचंदी कुठे आहेत हे चांगलं माहितच नसतं. -- **पथ लांबी कमी होते, जसजसे आपण अधिक शिकतो**. एकदा आपण पुरेसे शिकलो की, एजंटसाठी लक्ष्य साध्य करणे सोपे होते, आणि पथ लांबी कमी होऊ लागते. परंतु, आपण अजूनही अन्वेषणासाठी खुले असतो, त्यामुळे आपण अनेकदा सर्वोत्तम पथापासून दूर जातो आणि नवीन पर्यायांचा शोध घेतो, ज्यामुळे पथ लांब होतो. +- **जसे आपल्याला अधिक ज्ञान होते तसंच मार्गाचा लांबी कमी होते**. एकदा आपण भरपूर शिकल्यावर, एजंटसाठी उद्दिष्ट गाठणं सोपं होतं आणि मार्गाची लांबी कमी होऊ लागते. तरीही, आपण शोधासाठी उघडे आहोत, त्यामुळे आपण चांगल्या मार्गापासून कधी कधी विचलित होतो आणि नवीन पर्याय शोधतो, ज्यामुळे मार्ग अनुकूलतेपेक्षा थोडा लांब होतो. -- **लांबी अचानक वाढते**. या ग्राफवर आपण हे देखील पाहतो की, एका टप्प्यावर लांबी अचानक वाढली. याचा अर्थ प्रक्रियेचा अनिश्चित स्वभाव आहे, आणि कधीकधी आपण Q-Table गुणांक नवीन मूल्यांसह अधिलेखित करून "बिघडवू" शकतो. हे आदर्शतः शिकण्याचा दर कमी करून (उदाहरणार्थ, प्रशिक्षणाच्या शेवटी, आपण Q-Table मूल्ये फक्त लहान मूल्याने समायोजित करतो) कमी केले पाहिजे. +- **लांबी अचानक वाढते**. या ग्राफवर आणखी एक गोष्ट आपण पाहतो ती म्हणजे काही ठिकाणी लांबी अचानक वाढली. हे प्रक्रियेच्या संयोगात्मक स्वरूपाचे संकेत आहे, आणि आपण वाटतं काही वेळेस Q-टेबलचे गुणाकार नवीन मुल्यांनी बदलून त्याचे नुकसान करू शकतो. प्रशिक्षणाच्या शेवटी उदाहरणार्थ, आपण Q-टेबलचे मूल्य लहान प्रमाणातच सुधारतो, हे कमीत कमी करावे. -एकूणच, हे लक्षात ठेवणे महत्त्वाचे आहे की शिकण्याच्या प्रक्रियेचे यश आणि गुणवत्ता शिकण्याचा दर, शिकण्याचा दर घट, आणि सवलत घटक यासारख्या पॅरामीटर्सवर मोठ्या प्रमाणात अवलंबून असते. यांना **हायपरपॅरामीटर्स** म्हणतात, जे **पॅरामीटर्स** पासून वेगळे आहेत, जे आपण प्रशिक्षणादरम्यान ऑप्टिमाइझ करतो (उदाहरणार्थ, Q-Table गुणांक). सर्वोत्तम हायपरपॅरामीटर मूल्ये शोधण्याच्या प्रक्रियेस **हायपरपॅरामीटर ऑप्टिमायझेशन** म्हणतात, आणि यासाठी स्वतंत्र विषय आवश्यक आहे. +एकूणच, हे लक्षात ठेवणं महत्त्वाचं आहे की शिकण्याच्या प्रक्रियेचा यश आणि गुणवत्ता अनेक घटकांवर अवलंबून असते, जसे शिक्षण दर, शिक्षण दराचा घट, आणि सूट घटक. यांना अनेकदा **हायपरपॅरामीटर्स** म्हणतात, जे प्रशिक्षणादरम्यान ऑप्टिमाइझ होणाऱ्या **पॅरामीटर्स** (उदा. Q-टेबल गुणाकार) यांतून वेगळे आहेत. उत्तम हायपरपॅरामीटर मूल्य शोधण्याच्या प्रक्रियेला **हायपरपॅरामीटर ऑप्टिमायझेशन** म्हणतात, आणि हे स्वतंत्र विषय आहे. -## [व्याख्यानानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/) +## [व्याख्यानानंतरची क्विझ](https://ff-quizzes.netlify.app/en/ml/) ## असाइनमेंट -[एक अधिक वास्तववादी जग](assignment.md) +[अधिक वास्तववादी जग](assignment.md) --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/8-Reinforcement/2-Gym/README.md b/translations/mr/8-Reinforcement/2-Gym/README.md index d6ff9d739..158f8d5a9 100644 --- a/translations/mr/8-Reinforcement/2-Gym/README.md +++ b/translations/mr/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## पूर्वअट +# कार्टपोल स्केटिंग -या धड्यात, आम्ही **OpenAI Gym** नावाच्या लायब्ररीचा वापर विविध **परिसरांचे** अनुकरण करण्यासाठी करणार आहोत. तुम्ही हा धडा स्थानिकरित्या (उदा. Visual Studio Code मधून) चालवू शकता, अशा वेळी अनुकरण एका नवीन विंडोमध्ये उघडेल. ऑनलाइन कोड चालवताना, तुम्हाला कोडमध्ये काही बदल करावे लागू शकतात, जसे की [येथे](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन केले आहे. +मागील धड्यात आपण ज्या समस्येचे समाधान करत होतो ती एक खेळणी समस्या वाटू शकते, जी खरोखरच वास्तव जीवनातील परिस्थितीसाठी लागू नाही असे वाटू शकते. असे नाही, कारण अनेक वास्तविक जगातील समस्या देखील हीच परिस्थिती सामायिक करतात - ज्यामध्ये चेस किंवा गो खेळणे देखील आहे. त्या सारखा आहेत, कारण आपल्याकडे एक फळीपाटी असून विशिष्ट नियमांसह एका **विभाजित स्थिती** असते. + +## [पूर्व व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) + +## परिचय + +या धड्यात आपण Q-लर्निंगचे तुमचेच तत्त्वज्ञान सतत असलेल्या अवस्थेशी लागू करू, म्हणजे एक स्थिती जी एका किंवा अधिक वास्तविक संख्या द्वारे दिली जाते. आपण पुढील समस्येवर काम करू: + +> **समस्या**: जर पीटरला लांडग्यापासून दूर जायचे असेल, तर त्याला वेगाने हालचाल करता येणे आवश्यक आहे. आपण पाहू की पीटर कसे स्केट करू शकतो, विशेषत: संतुलन टिकवण्यासाठी Q-लर्निंग वापरून. + +![महान पलायन!](../../../../translated_images/mr/escape.18862db9930337e3.webp) + +> पीटर आणि त्याचे मित्र लांडग्यापासून दूर जाण्यासाठी सर्जनशील होतात! छायाचित्र [जेन लूपर](https://twitter.com/jenlooper) यांचे. + +आपण संतुलनाचे एक सोप्या रूप म्हणून **कार्टपोल** समस्या वापरणार आहोत. कार्टपोल जगात, आपल्याकडे एक आडवी स्लायडर आहे जी डावीकडे किंवा उजवीकडे हलू शकते, आणि उद्दिष्ट स्लायडरच्या वर एका उभ्या पोलला संतुलित ठेवणे आहे. + +a cartpole + +## पूर्वअटी + +या धड्यात, आपण **OpenAI Gym** नावाची लायब्ररी वापरणार आहोत वेगवेगळ्या **परिस्थितींचा** अनुकरण करण्यासाठी. आपण हा धडा स्थानिकरित्या चालवू शकता (उदा. Visual Studio Code वरून), त्या स्थितीत अनुकरण नवीन विंडोमध्ये उघडेल. ऑनलाईन कोड चालवताना, कधीकधी आपल्याला कोडमध्ये काही बदल करावे लागू शकतात, जसे [येथे](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) दिले आहे. ## OpenAI Gym -मागील धड्यात, खेळाचे नियम आणि स्थिती आम्ही स्वतः परिभाषित केलेल्या `Board` वर्गाद्वारे दिले होते. येथे आम्ही एक विशेष **अनुकरण वातावरण** वापरणार आहोत, जे संतुलन राखणाऱ्या खांबाच्या भौतिकशास्त्राचे अनुकरण करेल. reinforcement learning अल्गोरिदम प्रशिक्षणासाठी सर्वात लोकप्रिय अनुकरण वातावरणांपैकी एक [Gym](https://gym.openai.com/) आहे, जे [OpenAI](https://openai.com/) द्वारे देखरेख केली जाते. या जिमचा वापर करून आपण विविध **परिसर** तयार करू शकतो, जसे की cartpole अनुकरण ते Atari गेम्स. +मागील धड्यात, खेळाचे नियम आणि स्थिती आपण `Board` वर्गाच्या साहाय्याने निश्चित केले आहे. येथे आपण एक विशेष **सिम्युलेशन पर्यावरण** वापरणार आहोत, जे संतुलन पोलच्या भौतिकशास्त्राचे अनुकरण करेल. Q-लर्निंग अल्गोरिदमसाठी प्रशिक्षणासाठी सर्वात लोकप्रिय सिम्युलेशन पर्यावरणांपैकी एक म्हणजे [Gym](https://gym.openai.com/), जे [OpenAI](https://openai.com/) द्वारे राखले जाते. या जिमचा वापर करून आपण कार्टपोल सिम्युलेशनपासून अटारी गेम्सपर्यंतचे वेगळे **पर्यावरण** तयार करू शकतो. -> **टीप**: OpenAI Gym मधील इतर उपलब्ध वातावरण तुम्ही [येथे](https://gym.openai.com/envs/#classic_control) पाहू शकता. +> **टीप**: आपण OpenAI Gym कडून उपलब्ध असलेली इतर पर्यावरणे [येथे](https://gym.openai.com/envs/#classic_control) पाहू शकता. -सुरुवातीला, जिम स्थापित करूया आणि आवश्यक लायब्ररी आयात करूया (कोड ब्लॉक 1): +प्रथम, जिम स्थापित करू आणि आवश्यक लायब्ररी आयात करू (कोड ब्लॉक 1): ```python import sys @@ -20,13 +40,13 @@ import numpy as np import random ``` -## व्यायाम - cartpole वातावरण प्रारंभ करा +## सराव - कार्टपोल पर्यावरण प्रारंभ करा -cartpole संतुलन समस्येसोबत काम करण्यासाठी, आपल्याला संबंधित वातावरण प्रारंभ करणे आवश्यक आहे. प्रत्येक वातावरणाशी संबंधित असते: +कार्टपोल संतुलन समस्येसाठी काम करण्यासाठी, आपल्याला संबंधित पर्यावरण सुरू करणे आवश्यक आहे. प्रत्येक पर्यावरणाला जोडलेले असते: -- **Observation space** जे आपल्याला वातावरणाकडून मिळणाऱ्या माहितीची रचना परिभाषित करते. cartpole समस्येसाठी, आपल्याला खांबाची स्थिती, वेग आणि इतर काही मूल्ये मिळतात. +- **निरीक्षण अवकाश** जे पर्यावरणाकडून मिळालेल्या माहितीच्या रचनेची व्याख्या करते. कार्टपोल समस्येसाठी, आपल्याला पोलची स्थिती, वेग आणि काही अन्य मूल्ये मिळतात. -- **Action space** जे संभाव्य क्रिया परिभाषित करते. आपल्या प्रकरणात action space discrete आहे आणि दोन क्रिया आहेत - **डावीकडे** आणि **उजवीकडे**. (कोड ब्लॉक 2) +- **कार्यान्वयन अवकाश** जे शक्य त्या क्रियांची व्याख्या करते. आपल्या बाबतीत, कार्यान्वयन अवकाश विभाजित आहे, आणि दोन क्रियांचा समावेश आहे - **डावा** आणि **उजवा**. (कोड ब्लॉक 2) 1. प्रारंभ करण्यासाठी, खालील कोड टाइप करा: @@ -37,11 +57,11 @@ cartpole संतुलन समस्येसोबत काम करण print(env.action_space.sample()) ``` -वातावरण कसे कार्य करते हे पाहण्यासाठी, 100 स्टेप्ससाठी एक लहान अनुकरण चालवूया. प्रत्येक स्टेपवर, आपण घेण्याची क्रिया प्रदान करतो - या अनुकरणात आम्ही फक्त `action_space` मधून एक क्रिया निवडतो. +पर्यावरण कसे कार्य करते हे पाहण्यासाठी, आपण 100 चरणांसाठी एक छोटा सिम्युलेशन चालवू. प्रत्येक टप्प्यावर, आपण घ्यायची एक क्रिया प्रदान करतो - या सिम्युलेशनमध्ये आपण `action_space` मधून यादृच्छिक क्रिया निवडतो. -1. खालील कोड चालवा आणि त्याचा परिणाम पहा. +1. खालील कोड चालवा आणि त्याचे परिणाम पहा. - ✅ लक्षात ठेवा की हा कोड स्थानिक Python इंस्टॉलेशनवर चालवणे अधिक चांगले आहे! (कोड ब्लॉक 3) + ✅ लक्षात ठेवा की हा कोड स्थानिक Python इंस्टॉलेशनवर चालवणे प्राधान्य दिले जाते! (कोड ब्लॉक 3) ```python env.reset() @@ -52,11 +72,11 @@ cartpole संतुलन समस्येसोबत काम करण env.close() ``` - तुम्हाला खालील प्रतिमेसारखे काहीतरी दिसेल: + आपण या प्रतिमेसारखे काहीतरी पाहू शकता: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![संतुलन न राखणारा कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. अनुकरणादरम्यान, आपल्याला निर्णय घेण्यासाठी निरीक्षणे मिळवणे आवश्यक आहे. प्रत्यक्षात, `step` फंक्शन वर्तमान निरीक्षणे, एक reward फंक्शन, आणि done फ्लॅग परत करते, जे अनुकरण सुरू ठेवण्यासारखे आहे की नाही हे सूचित करते: (कोड ब्लॉक 4) +1. सिम्युलेशन दरम्यान, आपल्याला निरीक्षणे मिळवणे आवश्यक आहे ज्यावरून आपण निर्णय घेतो की कसे वागायचे. प्रत्यक्षात, step फंक्शन वर्तमान निरीक्षण, एक बक्षीस फंक्शन, आणि समाप्ती चिन्ह परत करते, जे सूचित करते की सिम्युलेशन चालू ठेवणे कारणीयर आहे की नाही: (कोड ब्लॉक 4) ```python env.reset() @@ -69,7 +89,7 @@ cartpole संतुलन समस्येसोबत काम करण env.close() ``` - तुम्हाला नोटबुक आउटपुटमध्ये असे काहीतरी दिसेल: + आपण नोटबुक आउटपुटमध्ये अशा प्रकारचे काही पाहाल: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ cartpole संतुलन समस्येसोबत काम करण [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - अनुकरणाच्या प्रत्येक स्टेपवर परत येणारा observation व्हेक्टर खालील मूल्ये समाविष्ट करतो: - - गाडीची स्थिती - - गाडीचा वेग - - खांबाचा कोन - - खांबाचा फिरण्याचा दर + प्रत्येक सिम्युलेशन टप्प्यावर परत करण्यात येणारा निरीक्षण व्हेक्टर या मूल्यांचा समावेश करतो: + - कार्टची स्थिती + - कार्टचा वेग + - पोलचा कोन + - पोलचा फिरण्याचा दर -1. त्या संख्यांचे किमान आणि जास्तीत जास्त मूल्य मिळवा: (कोड ब्लॉक 5) +1. त्या संख्यांचे किमान व कमाल मूल्य मिळवा: (कोड ब्लॉक 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - तुम्ही हे देखील लक्षात घेऊ शकता की प्रत्येक अनुकरण स्टेपवरील reward मूल्य नेहमी 1 असते. कारण आपले ध्येय जास्तीत जास्त वेळ टिकून राहणे आहे, म्हणजे खांबाला शक्य तितक्या उभ्या स्थितीत ठेवणे. + आपण हे देखील नोटिस करू शकता की प्रत्येक सिम्युलेशन टप्प्यावर बक्षीस मूल्य नेहमी 1 असते. कारण आपला उद्दिष्ट जितकं शक्य तितकं टिकून राहाणे आहे, म्हणजे पोलला दीर्घकाळ उभं ठेवणे. - ✅ प्रत्यक्षात, CartPole अनुकरण सोडवले जाते जर आपण 100 सलग चाचण्यांमध्ये 195 च्या सरासरी reward मिळवू शकलो. + ✅ प्रत्यक्षात, कार्टपोल सिम्युलेशन 100 सलग चाचण्यांवर 195 ची सरासरी बक्षीस मिळाल्यास तो सोडवलेला समजला जातो. -## स्थितीचे discretization +## स्थितीचे विभाजन -Q-Learning मध्ये, आपल्याला Q-Table तयार करणे आवश्यक आहे जे प्रत्येक स्थितीत काय करावे हे परिभाषित करते. हे करण्यासाठी, स्थिती **discreet** असणे आवश्यक आहे, अधिक स्पष्टपणे, त्यात मर्यादित संख्येने discrete मूल्ये असावीत. म्हणून, आपल्याला काहीतरी करून आपली निरीक्षणे **discretize** करणे आवश्यक आहे, त्यांना मर्यादित स्थितींच्या संचाशी नकाशा करणे. +Q-लर्निंगमध्ये, आपल्याला Q-टेबल तयार करणे आवश्यक आहे जे प्रत्येक स्थितीवर काय करावे हे घोषित करते. हे करण्यासाठी, आपल्याला स्थिती **विभाजित** करणे आवश्यक आहे, म्हणजे ती एका समाप्त संख्या असलेल्या विभाजित मूल्यांचे संच असावी. त्यामुळे आपल्याला आपल्या निरीक्षणांचे कसे तरी विभाजन करावे लागेल, ज्यामुळे त्यांना स्थितींच्या समाप्त संचाशी नकाशा करता येईल. -हे करण्याचे काही मार्ग आहेत: +हे करण्यासाठी काही मार्ग आहेत: -- **Bins मध्ये विभागणे**. जर आपल्याला एखाद्या मूल्याचा अंतराल माहित असेल, तर आपण या अंतरालाला काही **bins** मध्ये विभागू शकतो आणि नंतर त्या मूल्याला त्याच्या bin क्रमांकाने बदलू शकतो. हे numpy च्या [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) पद्धतीचा वापर करून केले जाऊ शकते. या प्रकरणात, आपल्याला स्थितीचा आकार अचूकपणे माहित असेल, कारण तो डिजिटलायझेशनसाठी निवडलेल्या bins च्या संख्येवर अवलंबून असेल. +- **बिन्समध्ये विभाजित करा**. जर आपल्याला एखाद्या मूल्याचा अंतर माहित असेल, तर आपण त्या अंतराला काही **बिन्स** मध्ये विभाजित करू शकतो, आणि नंतर मूल्याला त्या बिन क्रमांकाने बदलू शकतो. हे numpy च्या [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) पद्धतीने केले जाऊ शकते. या प्रकरणी, आपण अचूकपणे स्थितीचा आकार जाणून घेऊ, कारण तो आपण निवडलेल्या बिन्सच्या संख्येवर अवलंबून असेल. + +✅ आपण linear interpolation वापरू शकतो ज्यामुळे मूल्ये काही समाप्त अंतरात (उदा. -20 ते 20) आणता येतात, आणि नंतर संख्या पूर्णांकांमध्ये वळवता येतात. हे आपल्याला स्थितीच्या आकारावर थोडेसेच नियंत्रण देते, विशेषतः जर आपण इनपुट मूल्यांची अचूक रेंज न जाणा तर. उदा. आपल्या प्रकरणी 4 पैकी 2 मूल्यांना वर/खाली मर्यादा नाही, ज्यामुळे अनंत स्थिती संभवतात. -✅ आपण linear interpolation वापरून मूल्ये काही मर्यादित अंतरालात (उदा. -20 ते 20) आणू शकतो आणि नंतर rounding करून संख्यांना integers मध्ये रूपांतरित करू शकतो. यामुळे स्थितीच्या आकारावर थोडेसे नियंत्रण मिळते, विशेषतः जर आपल्याला इनपुट मूल्यांच्या अचूक श्रेणी माहित नसतील. उदाहरणार्थ, आपल्या प्रकरणात 4 पैकी 2 मूल्ये त्यांच्या वरच्या/खालच्या मर्यादांवर मर्यादित नाहीत, ज्यामुळे स्थितींची अमर्यादित संख्या होऊ शकते. +आमच्या उदाहरणात, आपण दुसरा दृष्टिकोन वापरणार आहोत. तुम्हाला नंतर दिसेल की, अपरिभाषित वर/खाली मर्यादा असूनही, त्या मूल्ये क्वचितच निश्चित समाप्त अंतराच्या बाहेर जातात, त्यामुळे अत्यधिक मूल्यांच्या त्या स्थिती फार क्वचितच होतात. -आपल्या उदाहरणात, आपण दुसऱ्या पद्धतीचा वापर करू. तुम्ही नंतर लक्षात घेऊ शकता की अपरिभाषित वरच्या/खालच्या मर्यादांनंतरही, ती मूल्ये क्वचितच काही मर्यादित अंतरालाच्या बाहेर जातात, त्यामुळे ती स्थिती ज्यामध्ये extreme मूल्ये असतात, फारच दुर्मिळ असतील. - -1. येथे एक फंक्शन आहे जे आपल्या मॉडेलमधून निरीक्षण घेईल आणि 4 integer मूल्यांच्या tuple तयार करेल: (कोड ब्लॉक 6) +1. ही फंक्शन आहे जी आपल्या मॉडेलकडून निरीक्षण घेते आणि 4 पूर्णांकांच्या ट्युपलची निर्मिती करते: (कोड ब्लॉक 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. चला bins वापरून दुसऱ्या discretization पद्धतीचा शोध घेऊया: (कोड ब्लॉक 7) +1. आणखी एक बिन्सचा वापर करून विभाजन पद्धत पाहूया: (कोड ब्लॉक 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) - ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter - nbins = [20,20,10,10] # number of bins for each parameter + ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # प्रत्येक पॅरामीटरसाठी मूल्यांच्या अंतराल + nbins = [20,20,10,10] # प्रत्येक पॅरामीटरसाठी बिनची संख्या bins = [create_bins(ints[i],nbins[i]) for i in range(4)] def discretize_bins(x): return tuple(np.digitize(x[i],bins[i]) for i in range(4)) ``` -1. आता एक लहान अनुकरण चालवूया आणि त्या discrete वातावरण मूल्यांचे निरीक्षण करूया. `discretize` आणि `discretize_bins` दोन्ही वापरून पहा आणि फरक आहे का ते पहा. +1. आता एक छोटा सिम्युलेशन चालवू आणि त्या विभाजित पर्यावरण मूल्यानिरीक्षण करू. तुम्ही या दोन्ही `discretize` आणि `discretize_bins` वापरून पहा आणि फरक आहे का ते बघा. - ✅ `discretize_bins` bin क्रमांक परत करते, जे 0-आधारित असते. त्यामुळे इनपुट व्हेरिएबलच्या 0 च्या आसपासच्या मूल्यांसाठी ते अंतरालाच्या मध्यभागी असलेले क्रमांक (10) परत करते. `discretize` मध्ये, आम्ही आउटपुट मूल्यांच्या श्रेणीची काळजी घेतली नाही, त्यांना नकारात्मक होऊ दिले, त्यामुळे स्थिती मूल्ये shift झाली नाहीत आणि 0 म्हणजे 0. (कोड ब्लॉक 8) + ✅ discretize_bins बिन क्रमांक परत करते, जो 0-आधारित आहे. म्हणून इनपुट चलाच्या जवळच्या मूल्यांसाठी तो मध्यभागी असलेल्या संख्या (10) परत करतो. discretize मध्ये, आपण output मूल्या-च्या श्रेणीकडे लक्ष दिले नाही, त्यामुळे ते नकारात्मक देखील असू शकतात, परिणामी स्थिती मूल्ये हलवलेली नाहीत, आणि 0 म्हणजे 0. ```python env.reset() @@ -150,15 +170,15 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर env.close() ``` - ✅ `env.render` सुरू असलेली ओळ uncomment करा जर तुम्हाला वातावरण कसे कार्य करते ते पाहायचे असेल. अन्यथा तुम्ही ते background मध्ये चालवू शकता, जे जलद आहे. आम्ही Q-Learning प्रक्रियेदरम्यान या "अदृश्य" अंमलबजावणीचा वापर करू. + ✅ env.render ने सुरू होणारी ओळ अनकमेंट करा जर तुम्हाला पर्यावरण कसे कार्य करते हे पाहायचे असेल. अन्यथा तुम्ही त्याला पार्श्वभूमीत चालवू शकता, जे जलद आहे. आपला Q-लर्निंग प्रक्रियेदरम्यान आपण या "अदृश्य" कार्यान्वयनाचा वापर करू. -## Q-Table ची रचना +## Q-टेबलची रचना -मागील धड्यात, स्थिती 0 ते 8 पर्यंतच्या संख्यांच्या साध्या जोड्या होती, त्यामुळे Q-Table ला numpy tensor द्वारे 8x8x2 आकाराने दर्शवणे सोयीचे होते. जर आपण bins discretization वापरतो, तर आपल्या स्थिती व्हेक्टरचा आकार देखील माहित आहे, त्यामुळे आपण समान दृष्टिकोन वापरू शकतो आणि स्थितीला 20x20x10x10x2 आकाराच्या array ने दर्शवू शकतो (येथे 2 म्हणजे action space चे परिमाण आहे, आणि पहिली परिमाणे observation space मधील प्रत्येक पॅरामीटरसाठी निवडलेल्या bins च्या संख्येशी संबंधित आहेत). +मागील धड्यात, स्थिती साधी 0 ते 8 मधील दोन संख्यांचा जोडी होती, त्यामुळे Q-टेबल numpy टेन्सर म्हणून 8x8x2 च्या आकारात सादर करणे सोयीचे होते. जर आपण बिन्स विभाजन वापरले, तर स्थिती व्हेक्टरचा आकार देखील ज्ञात असतो, त्यामुळे आपण त्याच पद्धतीने स्थिती 20x20x10x10x2 आकाराच्या अ‍ॅरेने सादर करू शकतो (इथे 2 म्हणजे क्रियाविशिष्ट अवकाशाचा आकार, आणि पहिल्या परिमाणे निरीक्षण अवकाशातील प्रत्येक पॅरामीटरसाठी निवडलेल्या बिन्सची संख्या). -तथापि, कधीकधी observation space च्या अचूक परिमाणे माहित नसतात. `discretize` फंक्शनच्या बाबतीत, आपल्याला कधीही खात्री नसते की आपली स्थिती काही मर्यादांमध्ये राहते, कारण काही मूळ मूल्ये मर्यादित नाहीत. त्यामुळे, आम्ही थोडा वेगळा दृष्टिकोन वापरू आणि Q-Table ला dictionary द्वारे दर्शवू. +परंतु, कधी कधी निरीक्षण अवकाशाच्या अचूक परिमाणांचा माहित नसतो. `discretize` फंक्शनच्या बाबतीत, आपल्याला कधीही खात्री नसू शकते की आपली स्थिती ठराविक मर्यादेत राहील, कारण काही मूळ मूल्ये मर्यादित नाहीत. म्हणून, आपण थोडे वेगळे दृष्टीकोन वापरू आणि Q-टेबल डिक्शनरीच्या स्वरूपात सादर करू. -1. *(state,action)* जोड्याचा dictionary key म्हणून वापर करा, आणि मूल्य Q-Table entry value शी संबंधित असेल. (कोड ब्लॉक 9) +1. *(state, action)* या जोडीला डिक्शनरी की म्हणून वापरा, आणि मूल्य Q-टेबलमधील नोंदाशी जुळत असेल. (कोड ब्लॉक 9) ```python Q = {} @@ -168,38 +188,38 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर return [Q.get((state,a),0) for a in actions] ``` - येथे आम्ही `qvalues()` नावाचे फंक्शन देखील परिभाषित करतो, जे दिलेल्या स्थितीसाठी Q-Table मूल्यांची यादी परत करते जी सर्व संभाव्य क्रियांशी संबंधित असते. जर entry Q-Table मध्ये उपस्थित नसेल, तर आम्ही default म्हणून 0 परत करू. + येथे आपल्याला `qvalues()` फंक्शन सुध्दा ठरवायचे आहे, जे दिलेल्या स्थितीसाठी शक्य क्रियांसाठी Q-टेबलमधील मूल्यांची यादी परत करते. जर की Q-टेबल मध्ये उपस्थित नसेल तर आपण 0 परत करू. -## चला Q-Learning सुरू करूया +## चला Q-लर्निंग सुरू करूया -आता आपण पीटरला संतुलन शिकवण्यासाठी तयार आहोत! +आता आपण पीटरला संतुलन शिकवायला तयार आहोत! -1. प्रथम, काही hyperparameters सेट करूया: (कोड ब्लॉक 10) +1. प्रथम, काही हायपरपॅरामीटर सेट करूया: (कोड ब्लॉक 10) ```python - # hyperparameters + # हायपरपॅरामिटर्स alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - येथे, `alpha` म्हणजे **learning rate** जे प्रत्येक स्टेपवर Q-Table च्या वर्तमान मूल्यांना कोणत्या प्रमाणात adjust करावे हे परिभाषित करते. मागील धड्यात आपण 1 पासून सुरुवात केली आणि नंतर प्रशिक्षणादरम्यान `alpha` कमी केले. या उदाहरणात आपण सोपेपणासाठी ते स्थिर ठेवू आणि नंतर `alpha` मूल्ये adjust करण्याचा प्रयोग करू शकता. - - `gamma` म्हणजे **discount factor** जे भविष्याच्या reward ला वर्तमान reward वर किती प्रमाणात प्राधान्य द्यावे हे दर्शवते. + येथे, `alpha` म्हणजे **लर्निंग दर** जो ठरवतो की प्रत्येक टप्प्यावर Q-टेबलमधील विद्यमान मूल्ये कितपत बदलावीत. मागील धड्यात आपण १ ने सुरुवात केली आणि नंतर प्रशिक्षणादरम्यान `alpha` कमी केलं. या उदाहरणात आपण सोपेपणासाठी ते स्थिर ठेवणार आहोत, आणि तुम्ही नंतर `alpha` मूल्यांवर प्रयोग करू शकता. - `epsilon` म्हणजे **exploration/exploitation factor** जे ठरवते की आपल्याला exploration ला प्राधान्य द्यावे की exploitation ला. आपल्या अल्गोरिदममध्ये, आम्ही `epsilon` टक्केवारीच्या प्रकरणांमध्ये Q-Table मूल्यांनुसार पुढील क्रिया निवडू, आणि उर्वरित प्रकरणांमध्ये आम्ही random क्रिया execute करू. यामुळे आपल्याला शोध स्थानाच्या अशा भागांचा शोध घेता येईल जे आपण कधीही पाहिले नाहीत. + `gamma` म्हणजे **डिस्काउंट घटक** जो दर्शवतो की भविष्यातील बक्षीसाला वर्तमान बक्षीसापेक्षा किती प्राधान्य द्यायचे. - ✅ संतुलनाच्या बाबतीत - random क्रिया (exploration) निवडणे चुकीच्या दिशेने random धक्का देण्यासारखे असेल, आणि खांबाने त्या "चुका" मधून संतुलन कसे पुनर्प्राप्त करावे ते शिकले पाहिजे. + `epsilon` म्हणजे **अन्वेषण/उत्पादनाचा घटक** जो ठरवतो की आपल्याला अन्वेषण प्राधान्य द्यायचा की उत्पादन. आमच्या अल्गोरिदममध्ये, `epsilon` प्रमाणे आपण Q-टेबल घटकांनुसार क्रिया निवडू, आणि उर्वरित प्रसंगी यादृच्छिक क्रिया करतो. यामुळे आपण अशा शोध क्षेत्रांचा अन्वेषण करू शकू जे पूर्वी कधीच पाहिलेले नाहीत. -### अल्गोरिदम सुधारित करा + ✅ संतुलनाच्या दृष्टीने - यादृच्छिक क्रिया निवडण्याने (अन्वेषण) चुकीच्या दिशेने एक पंच मारण्यासारखे होईल, आणि पोलला त्या "चुकांवरून" संतुलन पुन्हा कसे मिळवायचे ते शिकावे लागेल. -आपल्या मागील धड्यातील अल्गोरिदममध्ये दोन सुधारणा करू शकतो: +### अल्गोरिदम सुधारणा -- **सरासरी cumulative reward** गणना करा, अनेक अनुकरणांवर. आम्ही प्रत्येक 5000 iterations वर प्रगती print करू आणि त्या कालावधीतील cumulative reward ची सरासरी काढू. याचा अर्थ असा की जर आपण 195 पेक्षा जास्त गुण मिळवले - तर आपण समस्या सोडवली असे मानू शकतो, आणि आवश्यकतेपेक्षा उच्च गुणवत्तेसह. +आपण मागील धड्यातील आपल्या अल्गोरिदममध्ये दोन सुधारणा करू शकतो: -- **जास्तीत जास्त सरासरी cumulative परिणाम** `Qmax` गणना करा, आणि आम्ही त्या परिणामाशी संबंधित Q-Table साठवू. जेव्हा तुम्ही प्रशिक्षण चालवता तेव्हा तुम्हाला लक्षात येईल की कधीकधी सरासरी cumulative परिणाम कमी होतो, आणि आम्हाला प्रशिक्षणादरम्यान पाहिलेल्या सर्वोत्तम मॉडेलशी संबंधित Q-Table च्या मूल्ये ठेवायची आहेत. +- **सरासरी संचयी बक्षीस मोजा**, अनेक सिम्युलेशन्सवर. आपण प्रत्येक 5000 पुनरावृत्तीवर प्रगती छापू आणि त्या कालावधीत संचयी बक्षीसाचा सरासरी काढू. म्हणजे जर 195 पेक्षा अधिक गुण मिळाले तर आपण समस्या सोडवलेली मानू, अगदी अधिक गुणवत्ता प्राप्त केली तरी. + +- **कमाल सरासरी संचयी निकाल मोजा**, `Qmax`, आणि त्या निकालाशी संबंधित Q-टेबल जतन करा. जेव्हा आपण प्रशिक्षण चालवता, तेव्हा कधीकधी सरासरी संचयी निकाल कमी होऊ लागतो, आणि आपण सर्वोत्कृष्ट मॉडेलसाठी Q-टेबलची मूल्ये जपू इच्छितो. -1. प्रत्येक अनुकरणाच्या cumulative rewards `rewards` व्हेक्टरमध्ये गोळा करा जेणेकरून नंतर plotting करता येईल. (कोड ब्लॉक 11) +1. प्रत्येक सिम्युलेशनच्या संचयी बक्षीस `rewards` व्हेक्टरमध्ये एकत्र करा पुढील प्लॉटिंगसाठी. (कोड ब्लॉक 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == सिम्युलेशन करा == while not done: s = discretize(obs) if random.random() Qmax: @@ -240,25 +260,25 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर cum_rewards=[] ``` -तुम्ही या परिणामांमधून काय लक्षात घेऊ शकता: +तुम्हाला त्या निकालांमधून काय दिसू शकते: -- **आपल्या ध्येयाच्या जवळ**. आम्ही 100+ सलग अनुकरणांच्या सरासरी 195 cumulative rewards मिळवण्याच्या ध्येयाच्या खूप जवळ आहोत, किंवा आम्ही प्रत्यक्षात ते साध्य केले असेल! जरी आम्हाला कमी संख्या मिळाल्या तरी, आम्हाला माहित नाही, कारण आम्ही 5000 runs वर सरासरी काढतो, आणि औपचारिक निकषांमध्ये फक्त 100 runs आवश्यक आहेत. +- **आपल्या उद्दिष्टाजवळ**. आपण 195 संचयी बक्षीस 100+ सलग सिम्युलेशन्समध्ये मिळवण्याच्या उद्दिष्टाजवळ आहोत किंवा कदाचित मिळवले आहे! कमी नंबर आले तरी फरक पडत नाही कारण आपण 5000 रनवर सरासरी काढली आहे, आणि अधिकृत निकषांनुसार फक्त 100 रन आवश्यक आहेत. + +- **बक्षीस कमी होणे सुरू होते**. कधीकधी बक्षीस कमी होण्यासाठी सुरुवात होते, याचा अर्थ असा की आपण आधीच शिकलेल्या Q-टेबलच्या मूल्यांना तशाप्रकारे बदलू शकतो जे परिस्थिती वाईट करतात. -- **Reward कमी होतो**. कधीकधी reward कमी होतो, याचा अर्थ असा की आपण Q-Table मध्ये आधी शिकलेल्या मूल्यांना "नष्ट" करू शकतो आणि परिस्थिती अधिक वाईट बनवणाऱ्या नवीन मूल्यांसह बदलू शकतो. +या निरीक्षणांचे स्पष्ट दर्शन प्रशिक्षण प्रगतीचे प्लॉटिंग केल्यावर होते. -हे निरीक्षण प्रशिक्षण प्रगती plot केल्यावर अधिक स्पष्टपणे दिसते. +## प्रशिक्षण प्रगतीचे प्लॉटिंग -## प्रशिक्षण प्रगतीचे plotting - -प्रशिक्षणादरम्यान, आम्ही प्रत्येक iteration वर cumulative reward मूल्य `rewards` व्हेक्टरमध्ये गोळा केले आहे. जेव्हा आपण ते iteration क्रमांकाच्या विरोधात plot करतो तेव्हा ते असे दिसते: +प्रशिक्षणादरम्यान, आपल्याला प्रत्येक पुनरावृत्तीवरील संचयी बक्षीस मूल्य `rewards` व्हेक्टरमध्ये जमा केले आहे. येथे आपण ते पुनरावृत्ती क्रमांकाशी कसे प्लॉट करू: ```python plt.plot(rewards) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![ताजी प्रगती](../../../../translated_images/mr/train_progress_raw.2adfdf2daea09c59.webp) -या graph वरून काहीही सांगणे शक्य नाही, कारण stochastic प्रशिक्षण प्रक्रियेच्या स्वरूपामुळे प्रशिक्षण सत्रांची लांबी खूप वेगळी असते. या graph ला अधिक अर्थपूर्ण बनवण्यासाठी, आपण 100 चाचण्यांवर **running average** गणना करू शकतो. हे `np.convolve` वापरून सोयीस्करपणे केले जाऊ शकते: (कोड ब्लॉक 12) +या ग्राफमधून काहीही सांगणे शक्य नाही, कारण यादृच्छिक प्रशिक्षण प्रक्रियेच्या निसर्गामुळे प्रशिक्षण सत्रांच्या लांबीत मोठा बदल असतो. या ग्राफचा अधिक अर्थ लावण्यासाठी, आपण 100 प्रयोगांच्या मालिकेवरील **रेल चालणारी सरासरी** काढू शकतो. हे `np.convolve` वापरून सोप्या प्रकारे करता येते: (कोड ब्लॉक 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![प्रशिक्षण प्रगती](../../../../translated_images/mr/train_progress_runav.c71694a8fa9ab359.webp) + +## हायपरपॅरामिटर्सचा बदल + +शिक्षण अधिक स्थिर करण्यासाठी, आपल्याला प्रशिक्षणादरम्यान काही हायपरपॅरामिटर्स समायोजित करणे उचित वाटते. विशेषतः: + +- **लर्निंग दरासाठी**, `alpha`, आपल्याला 1 च्या जवळील मूल्यांपासून सुरुवात करावी आणि नंतर ते कमी करत रहावे. काळाच्या ओघात, आपण Q-टेबलमधील चांगले शक्यतामान मिळवू, आणि त्यानुसार आपण त्यांना थोड्या प्रमाणात सुधारणा करावी जेणेकरून ते नवीन मूल्यांनी पूर्णपणे पुनर्लेखन होणार नाहीत. -## hyperparameters बदलणे +- **epsilon वाढवा**. आपल्याला `epsilon` हळूहळू वाढवायचा असू शकतो, ज्यामुळे अन्वेषण कमी होईल आणि उत्पादन अधिक होईल. कदाचित कमी `epsilon` ने सुरुवात करून जवळपास 1 पर्यंत वाढवणे उचित आहे. -शिकणे अधिक स्थिर बनवण्यासाठी, प्रशिक्षणादरम्यान काही hyperparameters adjust करणे योग्य ठरेल. विशेषतः: +> **कार्य 1**: हायपरपॅरामिटर्समधील मूल्यांशी प्रयोग करा आणि पहा की तुम्ही जास्त संचयी बक्षीस मिळवू शकता काय. तुम्ही 195 पेक्षा जास्त मिळवत आहात का? -- **Learning rate** `alpha` साठी, आपण 1 च्या जवळपासच्या मूल्यांपासून सुरुवात करू शकतो आणि नंतर हा parameter कमी करत राहू शकतो. कालांतराने, आपल्याला Q-Table मध्ये चांगले probability मूल्ये मिळतील, आणि त्यामुळे आपण त्यांना थोडे adjust करावे, आणि नवीन मूल्यांसह पूर्णपणे overwrite करू नये. -- **epsilon वाढवा**. आपण `epsilon` हळूहळू वाढवू इच्छितो, जेणेकरून कमी शोध घेऊन अधिक exploitation करू शकतो. कदाचित कमी `epsilon` मूल्याने सुरुवात करणे आणि जवळजवळ 1 पर्यंत जाणे योग्य ठरेल. -> **कार्य 1**: हायपरपॅरामिटरच्या मूल्यांशी प्रयोग करा आणि पाहा की तुम्ही जास्त एकत्रित बक्षीस मिळवू शकता का. तुम्हाला 195 पेक्षा जास्त मिळत आहे का? -> **कार्य 2**: समस्या औपचारिकपणे सोडवण्यासाठी, तुम्हाला 100 सलग धावांमध्ये 195 सरासरी बक्षीस मिळवणे आवश्यक आहे. प्रशिक्षणादरम्यान ते मोजा आणि सुनिश्चित करा की तुम्ही समस्या औपचारिकपणे सोडवली आहे! +> **कार्य २**: समस्येचे औपचारिकपणे निराकरण करण्यासाठी, तुम्हाला १०० सलग चाचण्यांमध्ये सरासरी १९५ बक्षीस मिळवणे आवश्यक आहे. प्रशिक्षणादरम्यान त्याचे मापन करा आणि खात्री करा की तुम्ही औपचारिकपणे समस्या सोडवली आहे! -## परिणाम प्रत्यक्षात पाहणे +## कृतीत निकाल पाहणे -प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्षात पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया आणि प्रशिक्षणादरम्यान वापरलेल्या समान कृती निवडण्याच्या रणनीतीचे अनुसरण करूया, Q-Table मधील संभाव्यता वितरणानुसार नमुना घेऊया: (कोड ब्लॉक 13) +प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्ष पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया आणि प्रशिक्षणादरम्यान वापरल्या गेलेल्या क्रिया निवड धोरणाचे पालन करूया, Q-टेबलमधील संभाव्यता वितरणानुसार नमुना घेऊन: (कोड ब्लॉक १३) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -तुम्हाला असे काहीतरी दिसेल: +तुम्हाला असे काहीतरी दिसायला हवे: ![एक संतुलित कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- -## 🚀चॅलेंज +## 🚀आव्हान -> **कार्य 3**: येथे, आम्ही Q-Table ची अंतिम प्रत वापरत होतो, जी कदाचित सर्वोत्तम नसावी. लक्षात ठेवा की आम्ही सर्वोत्तम कामगिरी करणारा Q-Table `Qbest` व्हेरिएबलमध्ये संग्रहित केला आहे! `Qbest` ला `Q` वर कॉपी करून सर्वोत्तम कामगिरी करणाऱ्या Q-Table सह समान उदाहरण वापरून पहा आणि तुम्हाला काही फरक जाणवतो का ते पहा. +> **कार्य ३**: येथे आपण Q-टेबलची अंतिम प्रती वापरत होतो, जी कदाचित सर्वोत्तम नसावी. लक्षात ठेवा की आम्ही सर्वोत्तम कामगिरी करणारा Q-टेबल `Qbest` या चलमध्ये साठवला आहे! `Qbest` कॉपी करून `Q` मध्ये ठेवून त्याच उदाहरणाचा प्रयत्न करा आणि फरक लक्षात येतो का ते पहा. -> **कार्य 4**: येथे आम्ही प्रत्येक चरणावर सर्वोत्तम कृती निवडत नव्हतो, तर संबंधित संभाव्यता वितरणासह नमुना घेत होतो. नेहमीच सर्वोत्तम कृती निवडणे अधिक अर्थपूर्ण ठरेल का, ज्यामध्ये Q-Table मूल्य सर्वाधिक आहे? हे `np.argmax` फंक्शन वापरून करता येते, जे उच्च Q-Table मूल्याशी संबंधित कृती क्रमांक शोधते. ही रणनीती अंमलात आणा आणि संतुलन सुधारते का ते पहा. +> **कार्य ४**: येथे आम्ही प्रत्येक टप्प्यावर सर्वोत्तम क्रिया निवडत नव्हतो, पण संबंधित संभाव्यता वितरणानुसार नमुना घेत होतो. नेहमी सर्वोत्तम क्रिया, म्हणजे जास्तीत जास्त Q-टेबल मूल्य असलेली क्रिया, निवडल्यास अधिक अर्थ निर्माण होतो का? हे `np.argmax` फंक्शन वापरून जास्तीत जास्त Q-टेबल मूल्याशी संबंधित क्रियेचा क्रमांक शोधून करता येते. हे धोरण अंमलात आणा आणि ते संतुलन सुधारते का ते पाहा. -## [व्याख्यानानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/) +## [लक्ष्योपचारानंतरची चाचणी](https://ff-quizzes.netlify.app/en/ml/) -## असाइनमेंट -[माउंटन कार प्रशिक्षित करा](assignment.md) +## घरकाम +[माउंटन कारचे प्रशिक्षण](assignment.md) ## निष्कर्ष -आता आपण एजंट्सना फक्त बक्षीस फंक्शन प्रदान करून चांगले परिणाम मिळवण्यासाठी प्रशिक्षण देणे शिकले आहे, जे खेळाच्या इच्छित स्थितीची व्याख्या करते, आणि त्यांना शोध जागा बुद्धिमत्तेने एक्सप्लोर करण्याची संधी देते. आम्ही Q-Learning अल्गोरिदम यशस्वीरित्या डिस्क्रीट आणि सतत वातावरणाच्या बाबतीत लागू केला आहे, परंतु डिस्क्रीट कृतींसह. +आम्ही आता शिकले आहे की एजंट्सना केवळ त्यांना हवा असलेला गेम स्थिती निर्दिष्ट करणारी बक्षीस कार्ये प्रदान करून, आणि शोध जागा बुद्धिमत्तेने शोधण्यासाठी संधी देऊन चांगले निकाल मिळवण्यासाठी प्रशिक्षण देणे कसे असते. आम्ही यशस्वीरित्या Q-लर्निंग अल्गोरिदम डिस्क्रीट आणि सलग वातावरणांमध्ये, पण डिस्क्रीट क्रियांसह, लागू केले आहे. -कृती स्थिती देखील सतत असते आणि निरीक्षण जागा खूपच जटिल असते अशा परिस्थितींचा अभ्यास करणे महत्त्वाचे आहे, जसे की अटारी गेम स्क्रीनवरील प्रतिमा. अशा समस्यांमध्ये चांगले परिणाम मिळवण्यासाठी आपल्याला neural networks सारख्या अधिक शक्तिशाली मशीन लर्निंग तंत्रांचा वापर करावा लागतो. हे अधिक प्रगत विषय आमच्या आगामी प्रगत AI कोर्सचा विषय आहेत. +हे देखील महत्त्वाचे आहे की, क्रिया स्थिती सलग असलेल्या स्थितींचा अभ्यास करणे, आणि निरीक्षण जागा जास्त गुंतागुंतीची असलेली, जसे की अटारी गेम स्क्रीनमधील प्रतिमा. अशा समस्यांमध्ये चांगले निकाल मिळवण्यासाठी आपल्याला अधिक शक्तिशाली मशीन लर्निंग तंत्रे, जसे की न्यूरल नेटवर्क्स वापरणे आवश्यक असते. ही अधिक प्रगत विषय आपल्या आगामी अधिक प्रगत AI कोर्सची विषयं आहेत. --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md b/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md index 4f26be59e..82cdc65dd 100644 --- a/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,150 +1,179 @@ -# पोस्टस्क्रिप्ट: मशीन लर्निंगमध्ये जबाबदार AI डॅशबोर्ड घटकांचा वापर करून मॉडेल डीबगिंग - -## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://ff-quizzes.netlify.app/en/ml/) +# पोस्टस्क्रिप्ट: जबाबदार AI डॅशबोर्ड घटकांचा वापर करून मशीन लर्निंगमधील मॉडेल डीबगिंग + +## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/) + ## परिचय -मशीन लर्निंग आपल्या दैनंदिन जीवनावर प्रभाव टाकते. AI आरोग्यसेवा, वित्त, शिक्षण आणि रोजगार यांसारख्या महत्त्वाच्या प्रणालींमध्ये प्रवेश करत आहे, ज्या आपल्याला व्यक्ती म्हणून तसेच समाज म्हणून प्रभावित करतात. उदाहरणार्थ, आरोग्यसेवा निदान किंवा फसवणूक शोधण्यासारख्या दैनंदिन निर्णय घेण्याच्या कार्यांमध्ये प्रणाली आणि मॉडेल्स सहभागी असतात. परिणामी, AI मधील प्रगती आणि वेगाने स्वीकारण्यासोबतच समाजाच्या अपेक्षा विकसित होत आहेत आणि त्याला प्रतिसाद म्हणून नियमन वाढत आहे. आपल्याला सतत असे क्षेत्र दिसतात जिथे AI प्रणाली अपेक्षांवर खरे उतरू शकत नाहीत; त्या नवीन आव्हाने उघड करतात; आणि सरकार AI उपाययोजनांचे नियमन करण्यास सुरुवात करत आहेत. त्यामुळे, या मॉडेल्सचे विश्लेषण करणे महत्त्वाचे आहे जेणेकरून सर्वांसाठी न्याय्य, विश्वासार्ह, समावेशक, पारदर्शक आणि जबाबदार परिणाम मिळतील. +मशीन लर्निंग आमच्या दैनंदिन आयुष्यात प्रभाव पाडते. AI काही अत्यंत महत्त्वाच्या प्रणालींमध्ये आपलं स्थान निर्माण करत आहे ज्या व्यक्ती म्हणून आम्हाला तसेच समाजाला प्रभावित करतात, जसे की आरोग्यसेवा, वित्त, शिक्षण, आणि रोजगार. उदाहरणार्थ, सिस्टम आणि मॉडेल्स दैनंदिन निर्णय घेण्याच्या कार्यांमध्ये सामील आहेत, जसे की आरोग्य सेवा निदान किंवा फसवणूक शोधणे. परिणामी, AI मधील प्रगती आणि वेगवान स्वीकारासोबत सामाजिक अपेक्षा विकसित होत आहेत आणि वाढत्या नियमांशी प्रतिसाद दिला जात आहे. आम्ही सतत असे भाग पाहतो जिथे AI सिस्टम अपेक्षा पूर्ण करत नाहीत; ते नवीन आव्हाने उभे करतात; आणि सरकार AI सोल्यूशन्सवर नियम लावत आहे. म्हणून, या मॉडेल्सचे विश्लेषण करणे महत्त्वाचे आहे जेणेकरून ते प्रत्येकासाठी न्याय्य, विश्वासार्ह, समावेशक, पारदर्शक आणि जबाबदार निकाल देऊ शकतील. -या अभ्यासक्रमात, आम्ही काही व्यावहारिक साधनांचा अभ्यास करू जे मॉडेलमध्ये जबाबदार AI संबंधित समस्या आहेत का हे तपासण्यासाठी वापरले जाऊ शकतात. पारंपरिक मशीन लर्निंग डीबगिंग तंत्रे प्रामुख्याने संख्यात्मक गणनांवर आधारित असतात, जसे की एकत्रित अचूकता किंवा सरासरी त्रुटी नुकसान. कल्पना करा की तुम्ही मॉडेल तयार करण्यासाठी वापरत असलेल्या डेटामध्ये विशिष्ट लोकसंख्येचा अभाव आहे, जसे की वंश, लिंग, राजकीय दृष्टिकोन, धर्म, किंवा अशा लोकसंख्येचे असमान प्रतिनिधित्व आहे. मॉडेलचा आउटपुट काही लोकसंख्येला प्राधान्य देण्यासाठी व्याख्या केला जातो तेव्हा काय होते? हे संवेदनशील वैशिष्ट्य गटांच्या अति किंवा कमी प्रतिनिधित्वाचा परिचय देऊ शकते, ज्यामुळे मॉडेलमधून न्याय, समावेश किंवा विश्वासार्हतेच्या समस्या निर्माण होतात. आणखी एक घटक म्हणजे, मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" मानले जातात, ज्यामुळे मॉडेलच्या अंदाजामागील कारणे समजणे आणि स्पष्ट करणे कठीण होते. डेटा वैज्ञानिक आणि AI विकसकांना मॉडेलच्या न्याय्यतेचे किंवा विश्वासार्हतेचे मूल्यांकन करण्यासाठी पुरेसे साधने नसल्यास हे सर्व आव्हाने निर्माण होतात. +या अभ्यासक्रमात, आपण अशा प्रायोगिक साधनांकडे पाहणार आहोत जे वापरून मॉडेलमध्ये जबाबदार AI समस्या आहेत का याचे मूल्यांकन करता येते. पारंपरिक मशीन लर्निंग डीबगिंग तंत्रे मुख्यतः संख्यात्मक गणनांवर आधारित असतात जसे की एकत्रित अचूकता किंवा सरासरी त्रुटी तोटा. कल्पना करा जेव्हा तुम्ही वापरत असलेल्या डेटामध्ये काही लोकसंख्याशास्त्रीय घटक जसे की वंश, लिंग, राजकीय दृष्टीकोन, धर्म नसतील किंवा अशा घटकांचे असमतोल प्रतिनिधित्व असेल तर काय होईल? मॉडेलच्या आऊटपुटचे काही लोकसंख्याकीय गटांना प्राधान्य देणारे स्पष्टीकरण कसे मिळेल? हे संवेदनशील वैशिष्ट्य गटांचा अतिप्रतीन किंवा कमी प्रतिनिधित्व घडवू शकते ज्यामुळे मॉडेलमध्ये न्याय्यपणा, समावेशन किंवा विश्वासार्हतेच्या समस्या उद्भवू शकतात. आणखी एक बाब म्हणजे मशीन लर्निंग मॉडेल्स काळ्या पेट्या म्हणून गणले जातात, ज्यामुळे मॉडेलच्या भविष्यवाण्याचे काय कारण आहे हे समजणे आणि स्पष्ट करणे कठीण होते. हे सर्व डेटा सायंटिस्ट्स आणि AI विकसकांना भेडसावणारी आव्हाने आहेत जेव्हा त्यांच्याकडे योग्य साधने नसतात मॉडेलचे न्याय्यपणा किंवा विश्वासार्हता तपासण्यासाठी. -या धड्यात, तुम्ही तुमचे मॉडेल डीबग करण्यासाठी खालील गोष्टी शिकाल: +या धड्यामध्ये, तुम्हाला खालील गोष्टींबद्दल डीबगिंग शिकवले जाईल: -- **त्रुटी विश्लेषण**: तुमच्या डेटाच्या वितरणामध्ये जिथे मॉडेलचे त्रुटी दर जास्त आहेत ते ओळखा. -- **मॉडेल विहंगावलोकन**: विविध डेटा गटांमध्ये तुलना करून तुमच्या मॉडेलच्या कार्यप्रदर्शन मेट्रिक्समधील विसंगती शोधा. -- **डेटा विश्लेषण**: तुमच्या डेटामध्ये अति किंवा कमी प्रतिनिधित्व असलेल्या ठिकाणी तपास करा, ज्यामुळे तुमचे मॉडेल एका डेटा लोकसंख्येला दुसऱ्याच्या तुलनेत प्राधान्य देऊ शकते. -- **वैशिष्ट्य महत्त्व**: जागतिक स्तरावर किंवा स्थानिक स्तरावर तुमच्या मॉडेलच्या अंदाजांवर कोणती वैशिष्ट्ये प्रभाव टाकत आहेत ते समजून घ्या. +- **त्रुटी विश्लेषण**: तुमच्या डेटाच्या वितरणात जिथे मॉडेलचे त्रुटी दर जास्त आहेत ते ओळखा. +- **मॉडेल पुनरावलोकन**: वेगवेगळ्या डेटा गटांमध्ये तुलना करून तुमच्या मॉडेलच्या कामगिरीत असणाऱ्या फरकांचा शोध घ्या. +- **डेटा विश्लेषण**: तुमच्या डेटामध्ये कोणत्या ठिकाणी काही डेटा लोकसंख्या गटांचे ओव्हर किंवा अंडर-प्रतिनिधित्व आहे का याचा तपास करा ज्यामुळे मॉडेल कोणत्याही एका डेटा लोकसंख्या गटाला प्राधान्य देण्याची शक्यता आहे. +- **वैशिष्ट्य महत्त्व**: जागतिक किंवा स्थानिक पातळीवर कोणती वैशिष्ट्ये तुमच्या मॉडेलच्या भविष्यवाण्यांना प्रभावित करत आहेत हे समजून घ्या. -## पूर्वतयारी +## पूर्वापेक्षा -पूर्वतयारी म्हणून, कृपया [विकसकांसाठी जबाबदार AI साधने](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) याचा आढावा घ्या. +कृपया पूर्वापेक्षाप्रमाणे [Answer AI साधने विकसकांसाठी](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) या पुनरावलोकन घ्या > ![जबाबदार AI साधनांवरील GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## त्रुटी विश्लेषण -पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्स अचूकता मोजण्यासाठी वापरले जातात आणि प्रामुख्याने योग्य विरुद्ध चुकीच्या अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, एखाद्या मॉडेलने 89% वेळा अचूक अंदाज लावला आणि 0.001 चा त्रुटी नुकसान आहे असे ठरवणे चांगले कार्यप्रदर्शन मानले जाऊ शकते. त्रुटी तुमच्या अंतर्निहित डेटासेटमध्ये समान रीतीने वितरित केल्या जात नाहीत. तुम्हाला 89% मॉडेल अचूकता स्कोअर मिळू शकतो, परंतु असे आढळते की तुमच्या डेटाच्या वेगवेगळ्या भागांमध्ये मॉडेल 42% वेळा अयशस्वी होत आहे. विशिष्ट डेटा गटांसह या अपयशाच्या नमुन्यांचे परिणाम न्याय किंवा विश्वासार्हतेच्या समस्यांकडे नेऊ शकतात. मॉडेल चांगले कार्य करत आहे किंवा नाही अशा क्षेत्रांना समजून घेणे आवश्यक आहे. तुमच्या मॉडेलमध्ये जिथे अचूकतेचा अभाव आहे अशा डेटा क्षेत्रे महत्त्वपूर्ण डेटा लोकसंख्या ठरू शकतात. +पारंपरिक मॉडेल कामगिरी मोजण्यासाठी वापरल्या जाणाऱ्या अचूकता मापन सरासरी चुकीच्या आणि योग्य अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, 0.001 त्रुटी तोट्याने ८९% अचूक असल्याचे ठरवणे चांगली कामगिरी मानली जाऊ शकते. त्रुटी समस्थानिकरित्या तुमच्या मूळ डेटासेटमधून विभागल्या जात नाहीत. ८९% मॉडेल अचूकता प्राप्त होताना, काही डेटा भागांमध्ये ४२% वेळा मॉडेल अपयशी ठरू शकते. विशिष्ट डेटा गटांमधले अपयशाचे नमुने न्याय्यपणा किंवा विश्वासार्हतेच्या समस्यांना हाताळू शकतात. मॉडेल जिथे चांगली कामगिरी करत आहे आणि जिथे नाही, हे समजून घेणे गरजेचे आहे. जिथे मॉडेलमध्ये चुकांची संख्या जास्त आहे त्या डेटामध्ये महत्त्वाचा डेटा लोकसंख्या गट असू शकतो. + +![मॉडेल त्रुटीचे विश्लेषण आणि डीबगिंग](../../../../translated_images/mr/ea-error-distribution.117452e1177c1dd8.webp) + +RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे विभागले आहे हे वृक्ष दर्शनाद्वारे दर्शवितो. हे तुमच्या डेटासेटमध्ये जिथे त्रुटी दर जास्त असतो अशा वैशिष्ट्ये किंवा भाग ओळखण्यासाठी उपयुक्त आहे. जास्तीत जास्त मॉडेल चुका कुठून येत आहेत हे पाहून मूळ कारणाबद्दल तपासणी सुरू करू शकता. तुम्ही विश्लेषणासाठी डेटाचा गट तयार करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात ज्यामुळे कळते का मॉडेल एका गटात चांगले काम करत आहे पण दुसर्‍यामध्ये चुकांसह आहे. + +![त्रुटी विश्लेषण](../../../../translated_images/mr/ea-error-cohort.6886209ea5d438c4.webp) + +वृक्ष नकाशावरील दृश्य निर्देशक समस्याग्रस्त भाग त्वरीत शोधायला मदत करतात. उदाहरणार्थ, ज्या वृक्ष नोडला जास्त गडद लाल रंग आहे, त्या ठिकाणी त्रुटी दर जास्त आहे. + +हीट मॅप अजून एक दृश्य फंक्शनॅलिटी आहे ज्याचा वापर वापरकर्ते एका किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी करू शकतात, ज्यामुळे तुमच्या डेटासेट किंवा गटांमध्ये मॉडेलच्या त्रुटींमध्ये योगदान देणारे भाग शोधता येतात. + +![त्रुटी विश्लेषण हीटमॅप](../../../../translated_images/mr/ea-heatmap.8d27185e28cee383.webp) + +जेव्हा तुम्हाला: + +* डेटासेट आणि अनेक इनपुट व वैशिष्ट्य परिमाणांमध्ये मॉडेल अपयश कसे विभागले आहे हे सखोल समजून घ्यायचे आहे. +* एकत्रित कामगिरी मेट्रिक्स विश्लेषण करून आपोआप चुकीचे गट शोधायचे आहेत जे उपचारात्मक कृतीसाठी मार्गदर्शक ठरतील. + + + + -![मॉडेल त्रुटींचे विश्लेषण आणि डीबग करा](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) -RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे वितरित केले जाते हे ट्री व्हिज्युअलायझेशनसह दर्शवितो. तुमच्या डेटासेटसह जिथे त्रुटी दर जास्त आहे अशा वैशिष्ट्ये किंवा क्षेत्रे ओळखण्यासाठी हे उपयुक्त आहे. मॉडेलच्या अचूकतेचा अभाव जिथून येत आहे ते पाहून तुम्ही मूळ कारण तपासण्यास सुरुवात करू शकता. तुम्ही विश्लेषण करण्यासाठी डेटा गट तयार करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात, जिथे एक गट चांगले कार्य करत आहे, तर दुसऱ्या गटात त्रुटी आहेत. -![त्रुटी विश्लेषण](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) -ट्री मॅपवरील व्हिज्युअल इंडिकेटर्स समस्या क्षेत्रे लवकर शोधण्यात मदत करतात. उदाहरणार्थ, ट्री नोडचा गडद लाल रंग जितका गडद असेल तितका त्रुटी दर जास्त. -हीट मॅप हे आणखी एक व्हिज्युअलायझेशन कार्यक्षमता आहे ज्याचा वापर वापरकर्ते एक किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी करू शकतात, ज्यामुळे संपूर्ण डेटासेट किंवा गटांमध्ये मॉडेल त्रुटींचे योगदानकर्ता शोधता येते. -![त्रुटी विश्लेषण हीटमॅप](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) -त्रुटी विश्लेषण वापरा जेव्हा तुम्हाला: -* मॉडेल अपयश तुमच्या डेटासेटमध्ये आणि अनेक इनपुट आणि वैशिष्ट्य परिमाणांमध्ये कसे वितरित केले जाते याची सखोल समज मिळवा. -* एकत्रित कार्यप्रदर्शन मेट्रिक्सचे विघटन करा आणि लक्ष्यित सुधारणा पावले सूचित करण्यासाठी त्रुटी गट आपोआप शोधा. -## मॉडेल विहंगावलोकन -मशीन लर्निंग मॉडेलचे कार्यप्रदर्शन मूल्यांकन करण्यासाठी त्याच्या वर्तनाची समग्र समज मिळवणे आवश्यक आहे. हे त्रुटी दर, अचूकता, पुनर्प्राप्ती, अचूकता किंवा MAE (मीन अॅब्सोल्यूट एरर) यासारख्या एकापेक्षा जास्त मेट्रिक्सचे पुनरावलोकन करून साध्य केले जाऊ शकते, जेणेकरून कार्यप्रदर्शन मेट्रिक्समधील विसंगती शोधता येतील. एक कार्यप्रदर्शन मेट्रिक चांगले दिसू शकते, परंतु दुसऱ्या मेट्रिकमध्ये अचूकतेचा अभाव उघड होऊ शकतो. याशिवाय, संपूर्ण डेटासेट किंवा गटांमध्ये मेट्रिक्सची तुलना करणे मॉडेल चांगले कार्य करत आहे किंवा नाही हे स्पष्ट करण्यात मदत करते. हे विशेषतः संवेदनशील विरुद्ध असंवेदनशील वैशिष्ट्यांमध्ये (उदा., रुग्णाचा वंश, लिंग किंवा वय) मॉडेलचे कार्यप्रदर्शन पाहणे महत्त्वाचे आहे, जेणेकरून मॉडेलमध्ये संभाव्य अन्याय उघड होऊ शकतो. उदाहरणार्थ, संवेदनशील वैशिष्ट्य असलेल्या गटामध्ये मॉडेल अधिक त्रुटीपूर्ण असल्याचे आढळल्यास मॉडेलमध्ये संभाव्य अन्याय उघड होऊ शकतो. -RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन घटक केवळ डेटा गटांमधील कार्यप्रदर्शन मेट्रिक्सचे विश्लेषण करण्यात मदत करत नाही, तर ते वापरकर्त्यांना विविध गटांमध्ये मॉडेलच्या वर्तनाची तुलना करण्याची क्षमता देते. -![डेटासेट गट - RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) -घटकाची वैशिष्ट्य-आधारित विश्लेषण कार्यक्षमता वापरकर्त्यांना विशिष्ट वैशिष्ट्यांमध्ये डेटा उपगट कमी करण्याची परवानगी देते, जेणेकरून सूक्ष्म स्तरावर विसंगती ओळखता येतील. उदाहरणार्थ, डॅशबोर्डमध्ये वापरकर्त्याने निवडलेल्या वैशिष्ट्यासाठी (उदा., *"time_in_hospital < 3"* किंवा *"time_in_hospital >= 7"*) स्वयंचलितपणे गट तयार करण्यासाठी अंतर्गत बुद्धिमत्ता आहे. यामुळे वापरकर्त्याला मोठ्या डेटा गटातून विशिष्ट वैशिष्ट्य वेगळे करण्यास सक्षम होते, जेणेकरून ते मॉडेलच्या त्रुटीपूर्ण परिणामांवर प्रभाव टाकणारे प्रमुख घटक आहे का हे पाहता येईल. -![वैशिष्ट्य गट - RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +* अचूकता दरातील भेद +* त्रुटी दरातील भेद +* तपशिलातील भेद +* पुनर्प्राप्तीतील भेद + + + + + -मॉडेल विहंगावलोकन घटक दोन प्रकारच्या विसंगती मेट्रिक्सला समर्थन देतो: -**मॉडेल कार्यप्रदर्शनातील विसंगती**: या मेट्रिक्सचा संच डेटा उपगटांमध्ये निवडलेल्या कार्यप्रदर्शन मेट्रिकच्या मूल्यांमधील विसंगती (फरक) मोजतो. काही उदाहरणे: -* अचूकता दरातील विसंगती -* त्रुटी दरातील विसंगती -* अचूकतेतील विसंगती -* पुनर्प्राप्तीतील विसंगती -* मीन अॅब्सोल्यूट एरर (MAE) मधील विसंगती -**निवड दरातील विसंगती**: हा मेट्रिक उपगटांमध्ये निवड दर (अनुकूल अंदाज) मधील फरक समाविष्ट करतो. याचे एक उदाहरण म्हणजे कर्ज मंजुरी दरातील विसंगती. निवड दर म्हणजे प्रत्येक वर्गातील डेटा पॉइंट्सचा अंश जो 1 म्हणून वर्गीकृत केला जातो (बायनरी वर्गीकरणामध्ये) किंवा अंदाज मूल्यांचे वितरण (प्रत्यावर्तनामध्ये). -## डेटा विश्लेषण -> "जर तुम्ही डेटा पुरेसा त्रास दिला, तर तो काहीही कबूल करेल" - रोनाल्ड कोस -हे विधान अतिशयोक्तीपूर्ण वाटते, परंतु हे खरे आहे की डेटा कोणत्याही निष्कर्षाला समर्थन देण्यासाठी हेरफेर केला जाऊ शकतो. अशा प्रकारचे हेरफेर कधीकधी अनवधानाने होऊ शकते. मानव म्हणून, आपल्याला सर्वांनाच पूर्वग्रह असतो आणि डेटा तयार करताना आपण पूर्वग्रह कधी ओळखतो हे जाणून घेणे कठीण असते. AI आणि मशीन लर्निंगमध्ये न्याय्यतेची हमी देणे ही एक गुंतागुंतीची समस्या आहे. -पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्ससाठी डेटा हा एक मोठा अंध भाग आहे. तुम्हाला उच्च अचूकता स्कोअर मिळू शकतो, परंतु याचा नेहमीच अर्थ असा नाही की तुमच्या डेटासेटमध्ये अंतर्निहित डेटा पूर्वग्रह आहे. उदाहरणार्थ, जर एखाद्या कंपनीतील कार्यकारी पदांवरील महिलांचे प्रमाण 27% आणि पुरुषांचे प्रमाण 73% असेल, तर या डेटावर प्रशिक्षित केलेला नोकरी जाहिरात AI मॉडेल वरिष्ठ स्तरावरील नोकरीसाठी प्रामुख्याने पुरुष प्रेक्षकांना लक्ष्य करू शकतो. डेटामध्ये असलेल्या या असंतुलनामुळे मॉडेलचा अंदाज एका लिंगाला प्राधान्य देण्यासाठी वाकवला गेला. यामुळे न्याय्यतेची समस्या उघड होते जिथे AI मॉडेलमध्ये लिंग पूर्वग्रह आहे. -RAI डॅशबोर्डवरील डेटा विश्लेषण घटक डेटासेटमध्ये जिथे अति- आणि कमी-प्रतिनिधित्व आहे अशा क्षेत्रांची ओळख करण्यात मदत करतो. डेटा असंतुलन किंवा विशिष्ट डेटा गटाच्या प्रतिनिधित्वाच्या अभावामुळे त्रुटी आणि न्याय्यतेच्या समस्यांचे मूळ कारण शोधण्यात हे वापरकर्त्यांना मदत करते. हे वापरकर्त्यांना अंदाजित आणि वास्तविक परिणाम, त्रुटी गट आणि विशिष्ट वैशिष्ट्यांवर आधारित डेटासेट व्हिज्युअलाइझ करण्याची क्षमता देते. कधीकधी कमी प्रतिनिधित्व असलेल्या डेटा गटाचा शोध घेतल्याने मॉडेल चांगले शिकत नाही हे देखील उघड होऊ शकते, त्यामुळे अचूकतेचा अभाव असतो. डेटा पूर्वग्रह असलेला मॉडेल असणे ही केवळ न्याय्यतेची समस्या नाही तर मॉडेल समावेशक किंवा विश्वासार्ह नाही हे देखील दर्शवते. -![RAI डॅशबोर्डवरील डेटा विश्लेषण घटक](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) डेटा विश्लेषण वापरा जेव्हा तुम्हाला: -* तुमच्या डेटासेटच्या आकडेवारीचा शोध घ्या, विविध परिमाणांमध्ये (गटांमध्ये) तुमचा डेटा विभाजित करण्यासाठी विविध फिल्टर निवडा. -* विविध गट आणि वैशिष्ट्य गटांमध्ये तुमच्या डेटासेटचे वितरण समजून घ्या. -* न्याय्यतेशी संबंधित तुमच्या निष्कर्ष, त्रुटी विश्लेषण आणि कारणात्मकता (इतर डॅशबोर्ड घटकांमधून प्राप्त) तुमच्या डेटासेटच्या वितरणाचा परिणाम आहेत का हे ठरवा. -* प्रतिनिधित्वाच्या समस्यांमुळे, लेबल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह आणि अशा घटकांमुळे त्रुटी कमी करण्यासाठी कोणत्या क्षेत्रांमध्ये अधिक डेटा गोळा करायचा आहे हे ठरवा. +* वेगवेगळ्या फिल्टर्स निवडून तुमचा डेटासेट वेगवेगळ्या मितींमध्ये (किंवा गटांमध्ये) विभाजित करून तपासायचा असेल. +* विविध गट आणि वैशिष्ट्य गटांमध्ये तुमच्या डेटासेटचे वितरण समजून घ्यायचे असेल. +* तुमच्या निष्कर्षांची (न्याय्यतेसंबंधित, त्रुटी विश्लेषण, आणि कारणात्मकता) मूलभूत कारणे डेटासेटच्या वितरणावर आधारित आहेत की नाही हे ठरवायचे असेल. +* प्रतिनिधित्वाच्या समस्यांमुळे, एल्बल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह यांसारख्या कारणांमुळे येणाऱ्या त्रुटी कमी करण्यासाठी कुठे अधिक डेटा गोळा करावा हे ठरवायचे असेल. -## मॉडेल समज +## मॉडेल समजावून सांगणे -मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" असतात. मॉडेलचा अंदाज कोणत्या प्रमुख डेटा वैशिष्ट्यांवर आधारित आहे हे समजणे आव्हानात्मक असते. मॉडेलने विशिष्ट अंदाज का लावला याबद्दल पारदर्शकता प्रदान करणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने अंदाज लावला की मधुमेह असलेल्या रुग्णाला 30 दिवसांच्या आत पुन्हा रुग्णालयात दाखल होण्याचा धोका आहे, तर त्याच्या अंदाजामागील समर्थन डेटा प्रदान करणे आवश्यक आहे. समर्थन डेटा निर्देशक असणे पारदर्शकता आणते, ज्यामुळे क्लिनिशियन किंवा रुग्णालयांना चांगले निर्णय घेता येतात. याशिवाय, एखाद्या रुग्णासाठी मॉडेलने अंदाज का लावला हे स्पष्ट करण्याची क्षमता आरोग्य नियमांसह जबाबदारी सक्षम करते. जेव्हा तुम्ही मशीन लर्निंग मॉडेल्सचा वापर लोकांच्या जीवनावर परिणाम करणाऱ्या पद्धतींमध्ये करत असता, तेव्हा मॉडेलच्या वर्तनावर काय प्रभाव पडतो हे समजून घेणे आणि स्पष्ट करणे महत्त्वाचे आहे. मॉडेल स्पष्टता आणि समज खालील परिस्थितींमध्ये प्रश्नांची उत्तरे देण्यास मदत करते: +मशीन लर्निंग मॉडेल्स बहुतेक काळा डबा असतात. कोणती मुख्य डेटा वैशिष्ट्ये मॉडेलचे भविष्यवाणी चालवतात हे समजून घेणे कठीण असते. एखाद्या मॉडेलने विशिष्ट भविष्यवाणी का केली हे स्पष्ट करणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने सूचित केले की डायबेटिक रुग्णाला ३० दिवसांच्या आत हॉस्पिटलमध्ये पुन्हा दाखल होण्याचा धोका आहे, तर त्याने त्याच्या भविष्यवाणीला काय समर्थन पुरवणारे डेटा आहे ते देखील देता यावे. समर्थन करणाऱ्या डेटा निर्देशकांनी पारदर्शकता आणते ज्यामुळे डॉक्टर किंवा रुग्णालय योग्य निर्णय घेऊ शकतात. तसेच एखाद्या रुग्णासाठी मॉडेलने भविष्यवाणी का केली आणि काय कारण होते हे स्पष्ट करण्यासशक्य असल्यास आरोग्य नियमांकडे जबाबदारीदेखील येते. लोकांच्या जीवनावर परिणाम करणाऱ्या मशीन लर्निंग मॉडेलसाठी मॉडेलचे वर्तन काय प्रभावित करते हे समजणे आणि स्पष्ट करणे अत्यंत आवश्यक आहे. मॉडेल स्पष्टता आणि समजणारी क्षमता खालील परिस्थितींसाठी उपयुक्त आहेत: -* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मी माझे मॉडेल कसे सुधारू शकतो? -* मानव-AI सहकार्य: मी मॉडेलच्या निर्णयांना कसे समजून घेऊ आणि विश्वास ठेवू शकतो? -* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकता पूर्ण करते का? +* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मॉडेल मी कसे सुधारू? +* मानवी - AI सहकार्य: मी कसे मॉडेलच्या निर्णयांवर विश्वास ठेवू शकतो आणि त्यांना समजू शकतो? +* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकतांची पूर्तता करते का? -RAI डॅशबोर्डवरील वैशिष्ट्य महत्त्व घटक तुम्हाला डीबग करण्यासाठी आणि मॉडेल अंदाज कसे लावते याची व्यापक समज मिळविण्यास मदत करते. मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी हे एक उपयुक्त साधन आहे, जे मॉडेलच्या वर्तनावर प्रभाव टाकणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करण्यासाठी आणि दाखवण्यासाठी नियामक अनुपालनासाठी उपयुक्त आहे. पुढे, वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे शोधू शकतात, जे वैशिष्ट्ये मॉडेलच्या अंदाजांवर प्रभाव टाकतात ते सत्यापित करण्यासाठी. जागतिक स्पष्टीकरणे मॉडेलच्या एकूण अंदाजावर परिणाम करणाऱ्या शीर्ष वैशिष्ट्यांची यादी करतात. स्थानिक स्पष्टीकरणे विशिष्ट प्रकरणासाठी मॉडेलच्या अंदाजामागील वैशिष्ट्ये दर्शवतात. स्थानिक स्पष्टीकरणे मूल्यांकन करण्याची क्षमता विशिष्ट प्रकरण डीबग किंवा ऑडिट करण्यासाठी उपयुक्त आहे, जेणेकरून मॉडेलने अचूक किंवा अचूक अंदाज का लावला हे चांगल्या प्रकारे समजून घेता येईल. +RAI डॅशबोर्डचा वैशिष्ट्य महत्त्व घटक तुम्हाला डीबगिंग करण्यात आणि समस्यांची संपूर्ण समज प्राप्त करण्यात मदत करतो की मॉडेल कसे भविष्यवाणी करतो. हे मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी देखील उपयुक्त साधन आहे जे मॉडेलच्या वर्तनावर परिणाम करणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करतात आणि कायदेशीर अनुपालनासाठी दाखवू शकतात. वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे तपासू शकतात ज्यात कोणती वैशिष्ट्ये मॉडेलची भविष्यवाणी चालवतात हे तपासले जाते. जागतिक स्पष्टीकरणांमध्ये मॉडेलच्या एकूण भविष्यवाणीवर परिणाम करणाऱ्या महत्त्वाच्या वैशिष्ट्यांची यादी असते. स्थानिक स्पष्टीकरणे दर्शवतात की एखाद्या विशिष्ट प्रकरणासाठी कोणती वैशिष्ट्ये मॉडेलने भविष्यवाणी करताना वापरली. स्थानिक स्पष्टीकरणांचे मूल्यांकन डीबगिंग किंवा विशिष्ट प्रकरणाच्या ऑडिटिंगसाठी उपयुक्त आहे, ज्यामुळे समजायला आणि समजावून सांगायला मदत होते की मॉडेलने अचूक किंवा चुकीचे भविष्यवाणी का केली. -![RAI डॅशबोर्डवरील -- **अतिरिक्त किंवा अपुरे प्रतिनिधित्व**. कल्पना अशी आहे की एखाद्या विशिष्ट गटाला एखाद्या व्यवसायात दिसत नाही, आणि कोणतीही सेवा किंवा कार्य जे हे पुढे चालू ठेवते ते नुकसान पोहोचवण्यास हातभार लावते. +![RAI डॅशबोर्डमधील वैशिष्ट्य महत्त्व घटक](../../../../translated_images/mr/9-feature-importance.cd3193b4bba3fd4b.webp) -### Azure RAI डॅशबोर्ड +* जागतिक स्पष्टीकरणे: उदाहरणार्थ, डायबेटीस हॉस्पिटल रीडमिशन मॉडेलच्या एकूण वर्तनावर कोणती वैशिष्ट्ये परिणाम करतात? +* स्थानिक स्पष्टीकरणे: उदाहरणार्थ, ६० वर्षांहून वर वयस्कर आणि पुर्वी हॉस्पिटलमध्ये दाखल झालेल्या डायबेटिक रुग्णाला ३० दिवसांत रीडमिट होणार की नाही यासाठी मॉडेलने का भविष्यवाणी केली? -[Azure RAI डॅशबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हे ओपन-सोर्स टूल्सवर आधारित आहे जे प्रमुख शैक्षणिक संस्थांनी आणि Microsoftसह संस्थांनी विकसित केले आहे. हे डेटा वैज्ञानिक आणि AI विकसकांना मॉडेलचे वर्तन अधिक चांगल्या प्रकारे समजून घेण्यासाठी, AI मॉडेल्समधील अवांछित समस्या शोधण्यासाठी आणि कमी करण्यासाठी उपयुक्त आहे. +विविध गटांमध्ये मॉडेलची कामगिरी तपासण्याच्या डीबगिंग प्रक्रियेत, वैशिष्ट्य महत्त्व दर्शवते की एखाद्या वैशिष्ट्याचा गटांमध्ये कितपत परिणाम होतो. हे मॉडेलच्या त्रुटीपूर्ण भविष्यवाण्यांमध्ये वैशिष्ट्यांच्या प्रभावामध्ये फरक दर्शवते. वैशिष्ट्य महत्त्व घटक दर्शवू शकतो की कोणत्या वैशिष्ट्यांच्या मूल्यांनी मॉडेलच्या निकालावर सकारात्मक किंवा नकारात्मक परिणाम झाला. उदाहरणार्थ, जर मॉडेलने चुकीची भविष्यवाणी केली असेल तर घटक तुम्हाला तपशीलात जाऊन त्या भविष्यवाणीचे कारण असलेल्या वैशिष्ट्ये किंवा मूल्ये शोधण्याची क्षमता देतो. हा तपशील डीबगिंगसाठीच नाही तर ऑडिटिंगमध्ये पारदर्शकता आणि जबाबदारी साकारण्यासाठी उपयुक्त आहे. शेवटी, हा घटक न्याय्यतेच्या समस्या शोधण्यात मदत करतो. उदाहरणार्थ, जर एखाद्या संवेदनशील वैशिष्ट्य जसे की जाती वा लिंग याचा मॉडेलच्या भविष्यवाणीवर जोरदार प्रभाव असेल, तर हे मॉडेलमध्ये वंशीय वा लिंगाचा पूर्वग्रह असल्याचे संकेत असू शकतात. -- RAI डॅशबोर्ड [डॉक्युमेंट्स](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) तपासून वेगवेगळ्या घटकांचा वापर कसा करायचा ते शिका. +![वैशिष्ट्य महत्त्व](../../../../translated_images/mr/9-features-influence.3ead3d3f68a84029.webp) -- Azure Machine Learning मध्ये अधिक जबाबदार AI परिस्थितींसाठी डीबगिंगसाठी काही RAI डॅशबोर्ड [नमुन्य नोटबुक्स](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) तपासा. +समजावून सांगण्याचा वापर करा जेव्हा तुम्हाला: ---- -## 🚀 आव्हान +* तुमच्या AI प्रणालीच्या भविष्यवाण्या किती विश्वासार्ह आहेत हे ठरवायचे असेल आणि काय वैशिष्ट्ये जास्त महत्त्वाची आहेत ते समजून घ्यायचे असेल. +* प्रथम तुमचा मॉडेल समजून घेऊन डीबगिंग व त्यानंतर मॉडेल निरोगी वैशिष्ट्यांचा वापर करत आहे की खोटे संबंध ओळखत आहे हे शोधायचे असेल. +* मॉडेल भविष्यवाणी संवेदनशील वैशिष्ट्यांवर करत आहे की त्याच्याशी उच्च संबंध असलेल्या वैशिष्ट्यांवर करत आहे हे समजून न्याय्यतेतील संभाव्य स्रोत शोधायचे असेल. +* स्थानिक स्पष्टीकरणे तयार करून तुमच्या मॉडेलच्या निर्णयांवर वापरकर्त्यांचा विश्वास वाढवायचा असेल. +* AI प्रणालीचा कायदेशीर ऑडिट पूर्ण करायचा असेल, ज्यामध्ये मॉडेलसची पडताळणी आणि मॉडेल निर्णयांचा माणसांवर होणारा परिणाम तपासायचा असेल. -सांख्यिकीय किंवा डेटा पक्षपात टाळण्यासाठी, आपल्याला खालील गोष्टी कराव्या लागतील: +## निष्कर्ष -- प्रणालींवर काम करणाऱ्या लोकांमध्ये विविध पार्श्वभूमी आणि दृष्टिकोन असणे आवश्यक आहे. -- आपल्या समाजातील विविधता प्रतिबिंबित करणाऱ्या डेटासेट्समध्ये गुंतवणूक करणे. -- पक्षपात ओळखण्यासाठी आणि तो सुधारण्यासाठी चांगल्या पद्धती विकसित करणे. +सर्व RAI डॅशबोर्ड घटक प्रायोगिक साधने आहेत ज्यामुळे तुम्ही अशा मशीन लर्निंग मॉडेल तयार करू शकता जे समाजासाठी कमी हानिकारक आणि अधिक विश्वासार्ह असतील. हे मानवी अधिकारांवर होणाऱ्या धोक्यांची, विशिष्ट गटांना जीवनाच्या संधींपासून वगळण्याच्या किंवा भेदभावाच्या धोरणांची आणि शारीरिक किंवा मानसोपचारिक आघाताच्या धोका टाळण्यास मदत करते. हे तुमच्या मॉडेलच्या निर्णयांमध्ये पारदर्शकता आणण्यासाठी स्थानिक स्पष्टीकरणे तयार करून विश्वास वाढविण्यास देखील मदत करते. संभाव्य धोके खालीलप्रमाणे वर्गीकृत करता येतात: -मॉडेल तयार करणे आणि वापरण्यात अन्याय स्पष्टपणे दिसतो अशा वास्तविक जीवनातील परिस्थितींचा विचार करा. आणखी काय विचारात घ्यायला हवे? +- **वाटप**: उदाहरणार्थ, जर एखाद्या लिंग किंवा वंशाला दुसर्‍याच्या तुलनेत प्राधान्य दिले जात असेल. +- **सेवेची गुणवत्ता**: जर एका विशिष्ट परिस्थितीसाठी डेटा ट्रेन केला जात असे आणि वास्तविकता अधिक गुंतागुंतीची असे, तर ते कमी गुणवत्तेची सेवा देते. +- **चित्रपटबद्धी**: एखाद्या गटाशी पूर्वनिर्धारित गुणधर्म जोडणे. + +- **निंदन**. कुणीतरी किंवा कोणत्यातरी गोष्टीवर अन्यायकारकपणे टीका करणे व लेबल लावणे. +- **अतिवादी किंवा अल्पविस्तारित प्रतिनिधित्व**. ही कल्पना आहे की एक विशिष्ट गट एखाद्या विशिष्ट व्यवसायात दिसत नाही, आणि कोणतीही सेवा किंवा कार्य जे याला प्रोत्साहन देते ते नुकसान करण्यास कारणीभूत आहे. + +### Azure RAI डॅशबोर्ड + +[Azure RAI डॅशबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हे आघाडीच्या अकादमिक संस्था आणि Microsoft सह विविध संस्था विकसित केलेल्या मुक्त-स्रोत साधनांवर आधारित आहे आणि हे डेटासायंटिस्ट आणि AI विकसकांना मॉडेलच्या वर्तनास अधिक समजून घेण्यासाठी, AI मॉडेलमधील नापसंतीजनक समस्या शोधण्यासाठी आणि कमी करण्यासाठी मदत करतात. + +- RAI डॅशबोर्डच्या विविध घटकांचा वापर कसा करावयाचा हे जाणून घेण्यासाठी [डॉक्युमेंट्स](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) तपासा. + +- Azure Machine Learning मध्ये अधिक जबाबदार AI परिस्थिति डिबग करण्यासाठी काही RAI डॅशबोर्ड [सॅम्पल नोटबुक्स](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) तपासा. + +--- +## 🚀 आव्हान + +आकडेमोड किंवा डेटामध्ये पूर्वग्रह टाळण्यासाठी, आपण: -## [पाठानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/) -## पुनरावलोकन आणि स्व-अभ्यास +- सिस्टिम्सवर काम करणाऱ्या लोकांमध्ये विविध पार्श्वभूमी आणि दृष्टिकोन असावेत +- आमच्या समाजाच्या विविधतेचे प्रतिबिंबित करणाऱ्या डेटासेटमध्ये गुंतवणूक करावी +- पूर्वग्रह आढळल्यावर तो शोधून काढण्यासाठी आणि दुरुस्त करण्यासाठी चांगल्या पद्धती विकसित कराव्यात -या धड्यात, तुम्ही मशीन लर्निंगमध्ये जबाबदार AI समाविष्ट करण्यासाठी काही व्यावहारिक साधने शिकली आहेत. +वास्तविक आयुष्यातील अशा परिस्थितीबद्दल विचार करा जिथे मॉडेल तयार करणे आणि वापरण्यात अन्याय स्पष्ट दिसतो. आणखी काय विचारात घ्यावे? -या कार्यशाळेचे निरीक्षण करा आणि विषयांमध्ये अधिक खोलवर जा: +## [व्याख्यानानंतर क्विझ](https://ff-quizzes.netlify.app/en/ml/) +## पुनरावलोकन & स्वअध्ययन + +या धड्यात तुम्ही जबाबदार AI मशीन लर्निंगमध्ये समाविष्ट करण्यासंबंधी काही व्यावहारिक साधने शिकली आहेत. -- जबाबदार AI डॅशबोर्ड: Besmira Nushi आणि Mehrnoosh Sameki यांच्याकडून RAI प्रत्यक्षात कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा. +या विषयांवर सखोल जाणून घेण्यासाठी हा कार्यशाळा पहा: -[![जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा") +- जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा, लेखक: Besmira Nushi आणि Mehrnoosh Sameki -> 🎥 वरील प्रतिमेवर क्लिक करा: जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा Besmira Nushi आणि Mehrnoosh Sameki यांच्याकडून. +[![जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा") -जबाबदार AI आणि अधिक विश्वासार्ह मॉडेल्स तयार करण्याबद्दल अधिक जाणून घेण्यासाठी खालील साहित्याचा संदर्भ घ्या: +> 🎥 व्हिडिओसाठी वरिल प्रतिमा क्लिक करा: जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा, Besmira Nushi आणि Mehrnoosh Sameki यांसह + +जबाबदार AI आणि विश्वासार्ह मॉडेल कसे तयार करायचे याबद्दल अधिक जाणून घेण्यासाठी खालील स्रोतांचा वापर करा: -- ML मॉडेल्स डीबग करण्यासाठी Microsoftचे RAI डॅशबोर्ड टूल्स: [जबाबदार AI टूल्स संसाधने](https://aka.ms/rai-dashboard) +- Microsoft चे ML मॉडेल डिबग करण्यासाठी RAI डॅशबोर्ड साधने: [Responsible AI tools resources](https://aka.ms/rai-dashboard) -- जबाबदार AI टूलकिट एक्सप्लोर करा: [Github](https://github.com/microsoft/responsible-ai-toolbox) +- Responsible AI टूलकिट एक्सप्लोर करा: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Microsoftचे RAI संसाधन केंद्र: [जबाबदार AI संसाधने – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Microsoft चे RAI रिसोर्स सेंटर: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoftचे FATE संशोधन गट: [FATE: AI मध्ये न्याय, जबाबदारी, पारदर्शकता आणि नैतिकता - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft चा FATE संशोधन गट: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -## असाइनमेंट +## कार्यप्रणाली [RAI डॅशबोर्ड एक्सप्लोर करा](assignment.md) --- -**अस्वीकरण**: -हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही. + \ No newline at end of file diff --git a/translations/ne/.co-op-translator.json b/translations/ne/.co-op-translator.json index b6488f994..5cd38ec33 100644 --- a/translations/ne/.co-op-translator.json +++ b/translations/ne/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "ne" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-06T06:33:11+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T02:29:09+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "ne" }, @@ -54,8 +54,8 @@ "language_code": "ne" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-06T06:26:57+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T02:25:00+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "ne" }, @@ -72,8 +72,8 @@ "language_code": "ne" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-06T06:27:36+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T02:26:00+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "ne" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "ne" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T02:02:38+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "ne" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:59:44+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-06T06:39:07+00:00", + "translation_date": "2026-07-14T02:27:05+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "ne" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-06T06:39:45+00:00", + "translation_date": "2026-07-14T02:28:12+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "ne" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-06T06:32:19+00:00", + "translation_date": "2026-07-14T02:30:12+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "ne" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "ne" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "ne", + "failure_date": "2026-07-14T02:23:55+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "docs/_sidebar.md": { "original_hash": "68dd06c685f6ce840e0acfa313352e7c", "translation_date": "2025-08-29T17:19:30+00:00", diff --git a/translations/ne/1-Introduction/3-fairness/README.md b/translations/ne/1-Introduction/3-fairness/README.md index 40d193ddf..80d0e0214 100644 --- a/translations/ne/1-Introduction/3-fairness/README.md +++ b/translations/ne/1-Introduction/3-fairness/README.md @@ -1,153 +1,167 @@ -# जिम्मेवार AI को साथमा मेसिन लर्निङ समाधान निर्माण गर्नुहोस् - -![मेसिन लर्निङमा जिम्मेवार AI को सारांश स्केच नोटमा](../../../../sketchnotes/ml-fairness.png) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा +# जिम्मेवार AI सँग मेशिन लर्निङ समाधानहरू निर्माण गर्दै + +![मेशिन लर्निङमा जिम्मेवार AI को सारांश स्केचनोटमा](../../../../translated_images/ne/ml-fairness.ef296ebec6afc98a.webp) +> स्केचनोट द्वारा [टोमोमी इमुरा](https://www.twitter.com/girlie_mac) ## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) - + ## परिचय -यस पाठ्यक्रममा, तपाईंले मेसिन लर्निङले कसरी हाम्रो दैनिक जीवनलाई प्रभाव पार्दैछ भन्ने कुरा पत्ता लगाउन सुरु गर्नुहुनेछ। अहिले पनि, प्रणालीहरू र मोडेलहरू स्वास्थ्य सेवा निदान, ऋण स्वीकृति, वा ठगी पत्ता लगाउने जस्ता दैनिक निर्णय गर्ने कार्यहरूमा संलग्न छन्। त्यसैले, यी मोडेलहरूले विश्वासयोग्य परिणामहरू प्रदान गर्न राम्रोसँग काम गर्नु महत्त्वपूर्ण छ। कुनै पनि सफ्टवेयर अनुप्रयोग जस्तै, AI प्रणालीहरूले अपेक्षाहरू पूरा गर्न नसक्न सक्छन् वा अवांछित परिणाम दिन सक्छन्। यही कारणले AI मोडेलको व्यवहारलाई बुझ्न र व्याख्या गर्न सक्षम हुनु आवश्यक छ। +यस पाठ्यक्रममा, तपाईं मेशिन लर्निङले कसरी हाम्रो दैनिक जीवनलाई प्रभाव पारिरहेको छ र पार्नेछ भन्ने कुरा पत्ता लगाउन थाल्नुहुनेछ। अहिले पनि, प्रणालीहरू र मोडेलहरू दैनिक निर्णय-प्रक्रियामा संलग्न छन्, जस्तै स्वास्थ्य सेवाको रोग निदान, ऋण स्वीकृति वा ठगी पत्ता लगाउनु। त्यसैले, यी मोडेलहरूले भरपर्दो परिणाम प्रदान गर्न राम्रोसँग काम गर्नु आवश्यक छ। जस्तो कुनै सफ्टवेयर एप्लिकेशन, AI प्रणालीहरूले अपेक्षा पुरा गर्न नसक्न सक्छन् वा अवाञ्छित परिणाम दिन सक्छन्। त्यसैले AI मोडेलको व्यवहार बुझ्न र व्याख्या गर्न सक्षम हुनु आवश्यक छ। -कल्पना गर्नुहोस् कि तपाईंले यी मोडेलहरू निर्माण गर्न प्रयोग गर्ने डाटामा जात, लिङ्ग, राजनीतिक दृष्टिकोण, धर्म जस्ता जनसांख्यिकीय तत्वहरू अभाव छन् वा ती जनसांख्यिकीय तत्वहरू असमान रूपमा प्रतिनिधित्व गरिएका छन् भने के हुन्छ। मोडेलको परिणामले कुनै जनसांख्यिकीयलाई प्राथमिकता दिएको रूपमा व्याख्या गरिन्छ भने के हुन्छ? अनुप्रयोगको लागि परिणाम के हो? साथै, मोडेलले हानिकारक परिणाम दिन्छ भने के हुन्छ? AI प्रणालीको व्यवहारको लागि को जिम्मेवार छ? यी केही प्रश्नहरू हामी यस पाठ्यक्रममा अन्वेषण गर्नेछौं। +कल्पना गर्नुहोस् कि तपाईंले यी मोडेलहरू बनाउन प्रयोग गर्ने डेटा केही जनसांख्यिकी, जस्तै जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म, वा यस्ता जनसांख्यिकीमा असमान प्रतिनिधित्व गरेको अवस्था कस्तो हुन्छ। जब मोडेलको नतिजा केही जनसांख्यिकीलाई पक्षपात गरेको व्याख्या गरिन्छ भने के हुन्छ? अनुप्रयोगका लागि यसको के परिणाम होला? थपमा, जब मोडेलले हानिकारक परिणाम दिन्छ र मानिसहरूलाई नोक्सान पुर्याउँछ भने के हुन्छ? AI प्रणालीको व्यवहारका लागि को जिम्मेवार हुन्छ? यी केही प्रश्नहरू हामी यस पाठ्यक्रममा अन्वेषण गर्नेछौं। यस पाठमा, तपाईं: -- मेसिन लर्निङमा निष्पक्षताको महत्त्व र निष्पक्षता सम्बन्धी हानिहरूको बारेमा सचेत हुनुहुनेछ। -- असामान्य परिदृश्यहरू अन्वेषण गर्ने अभ्याससँग परिचित हुनुहुनेछ ताकि विश्वसनीयता र सुरक्षा सुनिश्चित गर्न सकियोस्। -- समावेशी प्रणालीहरू डिजाइन गरेर सबैलाई सशक्त बनाउने आवश्यकता बुझ्नुहुनेछ। -- डाटा र व्यक्तिहरूको गोपनीयता र सुरक्षाको रक्षा गर्न कति महत्त्वपूर्ण छ भन्ने कुरा अन्वेषण गर्नुहुनेछ। -- AI मोडेलहरूको व्यवहार व्याख्या गर्न "ग्लास बक्स" दृष्टिकोणको महत्त्व देख्नुहुनेछ। -- AI प्रणालीहरूमा विश्वास निर्माण गर्न जिम्मेवारी कति आवश्यक छ भन्ने कुरा ध्यान दिनुहुनेछ। +- मेशिन लर्निङमा निष्पक्षताको महत्त्व र निष्पक्षता सम्बन्धी हानिहरूको बारेमा जागरुकता बढाउनुहोस्। +- विश्वसनीयता र सुरक्षा सुनिश्चित गर्न आउट्लायर्स र अस्वाभाविक परिस्थितिहरू अन्वेषण गर्ने अभ्याससँग परिचित हुनुहोस्। +- सबैलाई समावेशी प्रणालीहरू डिजाइन गरेर सशक्त पार्ने जरुरतमा बुझाइ हासिल गर्नुहोस्। +- डेटा र मानिसहरूको गोप्यता र सुरक्षा संरक्षण गर्न कति महत्त्वपूर्ण छ अन्वेषण गर्नुहोस्। +- AI मोडेलहरूको व्यवहार व्याख्या गर्न गिलास बक्स दृष्टिकोणको महत्त्व देख्नुहोस्। +- AI प्रणालीहरूमा विश्वास निर्माण गर्न जिम्मेवारी हुनु आवश्यक कुरा मनन गर्नुहोस्। -## पूर्वआवश्यकता +## पूर्वापेक्षा -पूर्वआवश्यकताका रूपमा, कृपया "जिम्मेवार AI सिद्धान्तहरू" सिक्ने मार्ग लिनुहोस् र तलको भिडियो हेर्नुहोस्: +पूर्वापेक्षाका रूपमा कृपया "जिम्मेवार AI सिद्धान्तहरू" सिक्ने मार्ग लिनुहोस् र तलको भिडियो हेर्नुहोस्: -जिम्मेवार AI को बारेमा थप जान्नका लागि यो [सिक्ने मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) अनुसरण गर्नुहोस्। +जिम्मेवार AI बारे थप जान्न यो [सिकाइ मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) पछ्याउनुहोस्। -[![Microsoft को जिम्मेवार AI को दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft को जिम्मेवार AI को दृष्टिकोण") +[![Microsoftको जिम्मेवार AI दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoftको जिम्मेवार AI दृष्टिकोण") -> 🎥 माथिको छवि क्लिक गर्नुहोस्: Microsoft को जिम्मेवार AI को दृष्टिकोण +> 🎥 माथि तस्बिरमा क्लिक गर्नुहोस् भिडियोको लागि: Microsoftको जिम्मेवार AI दृष्टिकोण ## निष्पक्षता -AI प्रणालीहरूले सबैलाई निष्पक्ष रूपमा व्यवहार गर्नुपर्छ र समान समूहका व्यक्तिहरूलाई फरक तरिकाले असर गर्नबाट बच्नुपर्छ। उदाहरणका लागि, जब AI प्रणालीहरूले चिकित्सा उपचार, ऋण आवेदन, वा रोजगारको सन्दर्भमा मार्गदर्शन प्रदान गर्छन्, तिनीहरूले समान लक्षण, वित्तीय अवस्था, वा व्यावसायिक योग्यता भएका सबैलाई समान सिफारिसहरू दिनुपर्छ। हामी प्रत्येक मानिसले हाम्रो निर्णय र कार्यहरूलाई प्रभावित गर्ने पूर्वाग्रहहरू बोक्छौं। यी पूर्वाग्रहहरू हामीले AI प्रणालीहरूलाई प्रशिक्षण दिन प्रयोग गर्ने डाटामा देखिन सक्छ। यस्तो हेरफेर कहिलेकाहीँ अनजानेमा हुन सक्छ। डाटामा पूर्वाग्रह परिचय गराउँदा तपाईं सचेत रूपमा थाहा पाउन कठिन हुन सक्छ। +AI प्रणालीहरूले सबैलाई निष्पक्ष व्यवहार गर्नुपर्छ र समान समूहका मानिसहरूलाई फरक तरिकाले प्रभावित गर्नु हुँदैन। उदाहरणका लागि, जब AI प्रणालीहरूले चिकित्सा उपचार, ऋण आवेदन वा रोजगारमा मार्गनिर्देशन प्रदान गर्छन्, तिनीहरूले समान लक्षण, आर्थिक अवस्था वा व्यावसायिक योग्यताहरू भएका सबैलाई समान सिफारिश गर्नुपर्छ। हामी सबै मान्छेले आफ्नो निर्णय र कार्यहरूमा असर गर्ने पूर्वाग्रहहरू बोकेर हिँड्छौं। यी पूर्वाग्रहहरू कहिलेकाहीँ अनायासै डेटा मार्फत AI प्रणालीहरूलाई प्रभाव पार्न सक्छ। जब तपाई डेटा भित्र पूर्वाग्रह ल्याउँदै हुनुहुन्छ भन्ने कुरा सचेत रूपले जान्न गाह्रो हुन्छ। -**"असमानता"**ले एक समूहका व्यक्तिहरूका लागि नकारात्मक प्रभावहरू वा "हानिहरू" समेट्छ, जस्तै जात, लिङ्ग, उमेर, वा अपाङ्गता स्थितिको सन्दर्भमा परिभाषित। मुख्य निष्पक्षता सम्बन्धी हानिहरूलाई निम्न प्रकारले वर्गीकृत गर्न सकिन्छ: +**"अनिष्पक्षता"** भन्नाले कुनै समूह जस्तै जाति, लिंग, उमेर वा अपाङ्गताको आधारमा नकारात्मक प्रभाव वा "हानिहरू"लाई जनाउँछ। मुख्य निष्पक्षता सम्बन्धी हानिहरू यस प्रकार वर्गीकरण गर्न सकिन्छ: -- **आवंटन**, यदि लिङ्ग वा जातीयता उदाहरणका लागि अर्कोको तुलनामा प्राथमिकता दिइन्छ। -- **सेवाको गुणस्तर**। यदि तपाईंले एक विशिष्ट परिदृश्यको लागि डाटा प्रशिक्षण दिनुभयो तर वास्तविकता धेरै जटिल छ भने, यसले खराब प्रदर्शन गर्ने सेवामा परिणत हुन्छ। उदाहरणका लागि, एउटा हात साबुन डिस्पेन्सरले गाढा छालाका व्यक्तिहरूलाई पहिचान गर्न नसक्ने समस्या। [सन्दर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **निन्दा**। कुनै कुरा वा कसैलाई अन्यायपूर्ण रूपमा आलोचना र लेबल लगाउनु। उदाहरणका लागि, छविलाई लेबल गर्ने प्रविधिले गाढा छालाका व्यक्तिहरूलाई गोरिल्ला भनेर गलत लेबल लगाएको थियो। -- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै समूहलाई कुनै पेशामा देखिँदैन, र कुनै पनि सेवा वा कार्यले त्यसलाई निरन्तर प्रवर्द्धन गरिरहन्छ भने त्यो हानिमा योगदान पुर्‍याउँछ। -- **रूढिवादी सोच**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्नु। उदाहरणका लागि, अंग्रेजी र टर्किश बीचको भाषा अनुवाद प्रणालीमा लिङ्गसँग रूढिवादी सम्बन्ध भएका शब्दहरूको कारण त्रुटिहरू हुन सक्छ। +- **वितरण**, उदाहरणका लागि एउटा लिंग वा जाति अर्कोभन्दा बढी पक्षपाती भएमा। +- **सेवाको गुणस्तर**। यदि तपाईंले एक विशिष्ट परिदृश्यको लागि डेटा प्रशिक्षण गर्नुभयो तर वास्तविकता बढी जटिल छ भने, यो खराब प्रदर्शन गर्ने सेवामा परिणत हुन्छ। उदाहरणका लागि, एउटा हात धुने साबुन डिस्पेन्सरले कालो छालाका मानिसहरूलाई चिन्ह्नेमा असमर्थ थियो। [स्रोत](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **अपमान**। अन्यायपूर्ण रूपमा केही वा कसैलाई आलोचना र लेबल लगाउनु। उदाहरणका लागि, छवि लेबलिङ प्रविधिले कालो छालाका मानिसहरूलाई गोरिल्लाका रूपमा गलत लेबल गरेको थियो। +- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै समूह विशेष पेशामा देखिन्न, र जसले यस्तो प्रवर्द्धन गर्छ त्यसले हानि पुर्याउँछ। +- **स्टिरियोटाइपिङ**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्नु। उदाहरणका लागि, अंग्रेजी र टर्किश भाषाको अनुवाद प्रणालीले लिंगसँग सम्बन्धित स्टिरियोटाइपिकल शब्दहरूका कारण गलत अनुवाद गर्न सक्छ। -![टर्किशमा अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![टर्किशमा अनुवाद](../../../../translated_images/ne/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > टर्किशमा अनुवाद -![अंग्रेजीमा पुन: अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> अंग्रेजीमा पुन: अनुवाद +![फेरि अंग्रेजीमा अनुवाद](../../../../translated_images/ne/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> फेरि अंग्रेजीमा अनुवाद -AI प्रणालीहरू डिजाइन र परीक्षण गर्दा, हामीले सुनिश्चित गर्नुपर्छ कि AI निष्पक्ष छ र पूर्वाग्रही वा भेदभावपूर्ण निर्णयहरू गर्न प्रोग्राम गरिएको छैन, जुन मानिसहरूलाई पनि गर्न निषेध गरिएको छ। AI र मेसिन लर्निङमा निष्पक्षता सुनिश्चित गर्नु एक जटिल सामाजिक-प्राविधिक चुनौती हो। +AI प्रणालीहरू डिजाइन र परीक्षण गर्दा, हामीले AI निष्पक्ष हो र पूर्वाग्राही वा भेदभावपूर्ण निर्णयहरू नगर्ने सुनिश्चित गर्नुपर्छ, जुन मानवहरूलाई पनि गर्नु निषेध गरिएको छ। AI र मेशिन लर्निङमा निष्पक्षताको ग्यारेन्टी गर्नु एक जटिल सामाजिक-प्रविधिगत चुनौती हो। ### विश्वसनीयता र सुरक्षा -विश्वास निर्माण गर्न, AI प्रणालीहरू विश्वसनीय, सुरक्षित, र सामान्य र अप्रत्याशित अवस्थाहरूमा स्थिर हुनुपर्छ। विभिन्न परिस्थितिहरूमा AI प्रणालीहरूको व्यवहार कस्तो हुन्छ भन्ने कुरा जान्न महत्त्वपूर्ण छ, विशेष गरी जब तिनीहरू असामान्य हुन्छन्। AI समाधानहरू निर्माण गर्दा, AI समाधानहरूले सामना गर्ने विभिन्न परिस्थितिहरूलाई कसरी व्यवस्थापन गर्ने भन्ने कुरामा पर्याप्त ध्यान दिन आवश्यक छ। उदाहरणका लागि, एक स्वचालित कारले मानिसहरूको सुरक्षालाई शीर्ष प्राथमिकतामा राख्नुपर्छ। नतिजा स्वरूप, कारलाई शक्ति दिने AI ले रात, आँधीबेहरी, वा हिउँको आँधी, सडकमा दौडिरहेका बच्चाहरू, घरपालुवा जनावरहरू, सडक निर्माणहरू जस्ता सबै सम्भावित परिदृश्यहरू विचार गर्नुपर्छ। AI प्रणालीले विभिन्न अवस्थाहरूलाई विश्वसनीय र सुरक्षित रूपमा कसरी व्यवस्थापन गर्न सक्छ भन्ने कुरा डाटा वैज्ञानिक वा AI विकासकर्ताले प्रणालीको डिजाइन वा परीक्षणको क्रममा कति अनुमान गरेको छ भन्ने स्तरलाई प्रतिबिम्बित गर्दछ। +विश्वास निर्माण गर्न, AI प्रणालीहरू विश्वसनीय, सुरक्षित र सामान्य तथा अप्रत्याशित अवस्थाहरूमा स्थिर हुनुपर्छ। AI प्रणालीहरूले कसरी विभिन्न परिस्थितिहरूमा व्यवहार गर्ने जानकारी हुनु महत्त्वपूर्ण छ, विशेष गरी जब तिनीहरू आउट्लायर्स हुन्छन्। AI समाधान बनाउँदा, व्यापक प्रकारका अवस्थाहरूलाई कसरी व्यवस्थापन गर्ने भन्ने कुरामा पर्याप्त ध्यान दिनुपर्छ जुन AI समाधानहरू सामना गर्न सक्छन्। उदाहरणका लागि, सेल्फ ड्राइभिङ कारले मानिसहरूको सुरक्षा प्राथमिकता राख्नुपर्छ। जसको परिणामस्वरूप, कारलाई चलाउने AI ले रात, चर्को वर्षा वा हिमपहिरो, सडक पार गर्ने बच्चाहरू, गाई-बिरालो, सडक निर्माण आदि जस्ता सम्भावित अवस्थाहरू विचार गर्नुपर्छ। कसरी AI प्रणालीले विविध अवस्थाहरूलाई विश्वसनीय र सुरक्षित रूपमा व्यवस्थापन गर्न सक्छ भन्ने कुरा डिजाइन वा परीक्षण गर्दा डाटा वैज्ञानिक वा AI विकासकर्ताले कस्तो अपेक्षा गरेका थिए भन्ने देखाउँछ। -> [🎥 यहाँ क्लिक गर्नुहोस्: भिडियो](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 भिडियोको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### समावेशिता -AI प्रणालीहरू सबैलाई संलग्न र सशक्त बनाउन डिजाइन गरिनुपर्छ। AI प्रणालीहरू डिजाइन र कार्यान्वयन गर्दा डाटा वैज्ञानिकहरू र AI विकासकर्ताहरूले प्रणालीमा सम्भावित बाधाहरू पहिचान र सम्बोधन गर्छन् जसले अनजानेमा व्यक्तिहरूलाई बहिष्कृत गर्न सक्छ। उदाहरणका लागि, विश्वभर १ अर्ब अपाङ्गता भएका व्यक्तिहरू छन्। AI को प्रगतिसँगै, उनीहरूले आफ्नो दैनिक जीवनमा जानकारी र अवसरहरूको विस्तृत दायरा सजिलैसँग पहुँच गर्न सक्छन्। बाधाहरूलाई सम्बोधन गरेर, यसले सबैलाई लाभ दिने राम्रो अनुभवहरू भएका AI उत्पादनहरू नवाचार र विकास गर्ने अवसर सिर्जना गर्दछ। +AI प्रणालीहरूले सबैलाई संलग्न र सशक्त बनाउन डिजाइन गर्नुपर्छ। AI प्रणालीहरू डिजाइन र लागू गर्दा डेटा वैज्ञानिकहरू र AI विकासकर्ताहरूले प्रणालीमा सम्भावित बाधाहरू पत्ता लगाएर समाधान गर्छन् जुन अनायासै मानिसहरूलाई बहिष्कृत गर्न सक्छ। उदाहरणका लागि, विश्वभर एक अर्ब मानिसहरू अपाङ्गता भएका छन्। AI को प्रगतिको साथ, उनीहरूले दैनिक जीवनमा जानकारी र अवसरहरू सजिलै पहुँच गर्न सक्छन्। बाधाहरू समाधान गर्दा सबैका लागि लाभदायक अनुभवहरूसहित AI उत्पादनहरू नवप्रवर्तन गर्न र विकास गर्न अवसरहरू सिर्जना हुन्छन्। -> [🎥 यहाँ क्लिक गर्नुहोस्: समावेशितामा AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 AI मा समावेशिताको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### सुरक्षा र गोपनीयता +### सुरक्षा र गोप्यता -AI प्रणालीहरू सुरक्षित हुनुपर्छ र व्यक्तिहरूको गोपनीयताको सम्मान गर्नुपर्छ। प्रणालीहरूले व्यक्तिको गोपनीयता, जानकारी, वा जीवनलाई जोखिममा राख्छन् भने मानिसहरूले प्रणालीप्रति कम विश्वास गर्छन्। मेसिन लर्निङ मोडेलहरू प्रशिक्षण गर्दा, हामीले उत्कृष्ट परिणामहरू उत्पादन गर्न डाटामा निर्भर गर्दछौं। यसो गर्दा, डाटाको उत्पत्ति र अखण्डता विचार गर्नुपर्छ। उदाहरणका लागि, डाटा प्रयोगकर्ताले प्रस्तुत गरेको हो वा सार्वजनिक रूपमा उपलब्ध छ? त्यसपछि, डाटासँग काम गर्दा, गोपनीय जानकारीको रक्षा गर्न र आक्रमणको प्रतिरोध गर्न सक्ने AI प्रणालीहरू विकास गर्नु महत्त्वपूर्ण छ। AI अधिक व्यापक हुँदै जाँदा, गोपनीयता संरक्षण र महत्त्वपूर्ण व्यक्तिगत र व्यावसायिक जानकारी सुरक्षित राख्न अझ महत्त्वपूर्ण र जटिल हुँदैछ। गोपनीयता र डाटा सुरक्षा मुद्दाहरूले AI को लागि विशेष ध्यान आवश्यक छ किनभने डाटामा पहुँचले AI प्रणालीहरूलाई व्यक्तिहरूको बारेमा सटीक र सूचित भविष्यवाणी र निर्णय गर्न सक्षम बनाउँछ। +AI प्रणालीहरूले सुरक्षित हुनुपर्छ र मानिसहरूको गोप्यता सम्मान गर्नुपर्छ। मानिसहरूले आफ्ना गोप्यता, जानकारी वा जीवन खतरा पर्ने प्रणालीहरूमा कम विश्वास गर्छन्। मेशिन लर्निङ मोडेलहरू प्रशिक्षण गर्दा, राम्रो परिणाम निकाल्नको लागि डेटा आवश्यक पर्छ। यस क्रममा, डेटाको उत्पत्ति र अखण्डता विचार गर्नुपर्छ। उदाहरणका लागि, डेटा उपयोगकर्ता द्वारा प्रस्तुत गरिएको हो वा सार्वजनिक रूपमा उपलब्ध थियो? त्यसपछि, डेटा प्रयोग गर्दा, गोप्य जानकारीलाई सुरक्षा गर्न र आक्रमणबाट बचाउन सक्षम AI प्रणाली विकास गर्नु जरुरी छ। AI बढ्दै जाँदा, गोप्यता र महत्वपूर्ण व्यक्तिगत तथा व्यवसायिक जानकारीको सुरक्षा बढी महत्वपूर्ण र जटिल हुँदै गएको छ। गोप्यता र डेटा सुरक्षा मुद्दाहरू AI को लागि विशेष ध्यान आवश्यक पार्छन् किनकि AI प्रणालीहरूलाई सटीक र सूचित भविष्यवाणी र निर्णय गर्न डेटामा पहुँच आवश्यक हुन्छ। -> [🎥 यहाँ क्लिक गर्नुहोस्: AI मा सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 AI मा सुरक्षा को भिडियोको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- उद्योगका रूपमा हामीले गोपनीयता र सुरक्षामा महत्त्वपूर्ण प्रगति गरेका छौं, GDPR (General Data Protection Regulation) जस्ता नियमहरूले महत्त्वपूर्ण रूपमा प्रेरित। -- तर AI प्रणालीहरूसँग हामीले स्वीकार गर्नुपर्छ कि प्रणालीलाई अधिक व्यक्तिगत र प्रभावकारी बनाउन थप व्यक्तिगत डाटाको आवश्यकता र गोपनीयताको बीचमा तनाव छ। -- इन्टरनेटको साथमा जडित कम्प्युटरहरूको जन्मसँगै, हामी AI सम्बन्धित सुरक्षा मुद्दाहरूको संख्या बढेको देखिरहेका छौं। -- त्यही समयमा, हामीले सुरक्षा सुधार गर्न AI प्रयोग भएको देखेका छौं। उदाहरणका लागि, अधिकांश आधुनिक एन्टी-भाइरस स्क्यानरहरू आज AI ह्युरिस्टिक्सद्वारा संचालित छन्। -- हामीले सुनिश्चित गर्नुपर्छ कि हाम्रो डाटा विज्ञान प्रक्रिया नवीनतम गोपनीयता र सुरक्षा अभ्यासहरूसँग सुसंगत रूपमा मिश्रित छ। +- उद्योगको रूपमा हामीले गोप्यता र सुरक्षा क्षेत्रमा महत्वपूर्ण प्रगति गरेका छौं, जुन GDPR जस्ता नियमहरूले पनि प्रेरित गरेको छ। +- तर AI प्रणालीहरूको सन्दर्भमा, प्रणालीलाई व्यक्तिगत र प्रभावकारी बनाउनको लागि बढी व्यक्तिगत डेटा आवश्यक पर्दैछ र गोप्यताको बीच तनाव स्वीकार्नुपर्छ। +- इन्टरनेटसहित जोडिएको कम्प्युटरहरूको जन्म जस्तो, AI सँग सम्बन्धित सुरक्षाका समस्याहरूमा पनि ठूलो वृद्धि हुँदैछ। +- त्यस्तै, AI ले सुरक्षामा सुधार ल्याउनमा मद्दत गरेको छ। उदाहरणका लागि, अधिकांश आधुनिक एन्टी-भाइरस स्क्यानरहरू आज AI युक्त विधिहरूले चलाउँछन्। +- हाम्रा डेटा विज्ञान प्रक्रिया नवीनतम गोप्यता र सुरक्षा अभ्यासहरूसँग सुमधुर रूपमा मेल खाने सुनिश्चित गर्न आवश्यक छ। -### पारदर्शिता -AI प्रणालीहरू बुझ्न सकिने हुनुपर्छ। पारदर्शिताको एक महत्त्वपूर्ण भाग AI प्रणालीहरूको व्यवहार र तिनीहरूको घटकहरूको व्याख्या गर्नु हो। AI प्रणालीहरूको बुझाइ सुधार गर्नको लागि सरोकारवालाहरूले तिनीहरू कसरी र किन काम गर्छन् भन्ने कुरा बुझ्न आवश्यक छ ताकि तिनीहरूले सम्भावित प्रदर्शन समस्याहरू, सुरक्षा र गोपनीयता चिन्ताहरू, पूर्वाग्रहहरू, बहिष्करण अभ्यासहरू, वा अनपेक्षित परिणामहरू पहिचान गर्न सकून्। हामी विश्वास गर्छौं कि AI प्रणालीहरू प्रयोग गर्नेहरूले तिनीहरूलाई कहिले, किन, र कसरी प्रयोग गर्ने निर्णय लिँदा इमानदार र स्पष्ट हुनुपर्छ। साथै तिनीहरूले प्रयोग गर्ने प्रणालीहरूको सीमाहरू। उदाहरणका लागि, यदि बैंकले उपभोक्ता ऋण निर्णयहरू समर्थन गर्न AI प्रणाली प्रयोग गर्छ भने, परिणामहरूको परीक्षण गर्नु र प्रणालीको सिफारिसहरूलाई प्रभावित गर्ने डाटालाई बुझ्नु महत्त्वपूर्ण छ। सरकारहरूले उद्योगहरूमा AI नियमन गर्न सुरु गरिरहेका छन्, त्यसैले डाटा वैज्ञानिकहरू र संगठनहरूले AI प्रणालीले नियामक आवश्यकताहरू पूरा गर्छ कि गर्दैन भन्ने कुरा व्याख्या गर्नुपर्छ, विशेष गरी जब अवांछित परिणाम हुन्छ। +### पारदर्शিতা +AI प्रणालीहरू बुझ्न मिल्ने हुनुपर्छ। पारदर्शिताको महत्त्वपूर्ण अंश भनेको AI प्रणालीहरू र तिनका कम्पोनेन्टहरूको व्यवहार व्याख्या गर्नु हो। AI प्रणालीहरूको बुझाइ सुधार्नको लागि सरोकारवालाहरूले तिनले कसरी र किन काम गर्छन् भन्ने बुझ्नुपर्छ ताकि सम्भावित प्रदर्शन समस्या, सुरक्षा र गोप्यता चिन्ताहरू, पूर्वाग्रह, बहिष्कृत अभ्यासहरू वा अनपेक्षित परिणामहरू पत्ता लगाउन सकून्। हामी विश्वास गर्छौं कि AI प्रणालीहरू प्रयोग गर्नेहरूले कहिले, किन, र कसरी तिनीहरूलाई तैनाथ गर्छन् त्यसबारे इमानदार र स्पष्ट हुनुपर्छ। प्रयोग गरिएका प्रणालीहरूको सीमाहरू समेत जानकारी गराउनु आवश्यक छ। उदाहरणका लागि, एउटा बैंकले आफ्नो उपभोक्ता ऋण निर्णय समर्थन गर्न AI प्रणाली प्रयोग गर्दा, परिणामहरू परीक्षण गरी कुन डेटा प्रणालीका सिफारिशहरू प्रभावित गर्छ भन्ने बुझ्नु महत्वपूर्ण हुन्छ। सरकारले उद्योगमा AI को नियमावली सुरु गरिरहेकाले डेटा वैज्ञानिकहरू र संस्थाहरूले AI प्रणालीले नियमावली पूरा गर्छ कि गर्दैन भनेर स्पष्ट गर्नुपर्छ, विशेष गरी जब अवाञ्छित परिणाम हुन्छ। -> [🎥 यहाँ क्लिक गर्नुहोस्: AI मा पारदर्शिता](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 AI मा पारदर्शिताको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- AI प्रणालीहरू यति जटिल छन् कि तिनीहरू कसरी काम गर्छन् र परिणामहरूको व्याख्या गर्न गाह्रो छ। -- यो बुझाइको अभावले यी प्रणालीहरू कसरी व्यवस्थापन गरिन्छ, सञ्चालन गरिन्छ, र कागजात गरिन्छ भन्ने कुरालाई असर गर्छ। -- यो बुझाइको अभावले अझ महत्त्वपूर्ण रूपमा यी प्रणालीहरूले उत्पादन गर्ने परिणामहरू प्रयोग गरेर गरिएका निर्णयहरूलाई असर गर्छ। +- AI प्रणालीहरू यति जटिल हुनुका कारण, तिनीहरूको कार्य प्रणाली र नतिजा व्याख्या गर्न कठिनाइ हुन्छ। +- बुझाइको कमीले यी प्रणालीहरूलाई कसरी व्यवस्थापन, सञ्चालन र डकुमेन्ट गर्ने प्रभावित गर्दछ। +- यस बुझाइको कमीले विशेषगरी यी प्रणालीहरूले उत्पादन गर्ने नतिजाको आधारमा गरिएका निर्णयहरूलाई प्रभाव गर्छ। ### जिम्मेवारी + +AI प्रणाली डिजाइन र तैनाथ गर्ने मानिसहरू आफ्नो प्रणाली कसरी संचालन हुन्छ त्यसको लागि जिम्मेवार हुनुपर्छ। जिम्मेवारी आवश्यकतालाई विशेष गरी अनुहार पहिचान जस्ता संवेदनशील प्रविधिहरूमा महत्त्व दिइन्छ। हालै, कानुन कार्यान्वयन संस्थाहरूले अनुहार पहिचान प्रविधिको माग बढेको छ, विशेष गरी हराएका बच्चा खोज्न प्रविधिको सम्भावना रूपमा। तर, यी प्रविधिहरू सरकारहरुले आफ्ना नागरिकहरूको आधारभूत स्वतन्त्रताहरूमाथि खतरा पुर्‍याउन प्रयोग गर्न सक्छन्, जस्तै विशिष्ट व्यक्तिहरूको निरन्तर अनुगमन गर्न सक्षम बनाएर। त्यसैले, डेटा वैज्ञानिकहरू र संस्थाहरूले आफ्नो AI प्रणालीले व्यक्तिहरू वा समाजमा पार्ने प्रभावका लागि जिम्मेवार हुनुपर्छ। -AI प्रणालीहरू डिजाइन र तैनात गर्ने व्यक्तिहरूले तिनीहरूको प्रणालीहरू कसरी सञ्चालन गर्छन् भन्ने कुराको लागि जिम्मेवार हुनुपर्छ। जिम्मेवारीको आवश्यकता विशेष रूपमा संवेदनशील प्रयोग प्रविधिहरू जस्तै अनुहार पहिचानको साथमा महत्त्वपूर्ण छ। हालै, अनुहार पहिचान प्रविधिको माग बढ्दै गएको छ, विशेष गरी कानून प्रवर्तन संगठनहरूबाट जसले हराएका बच्चाहरूलाई फेला पार्न जस्ता प्रयोगहरूमा प्रविधिको सम्भावना देख्छन्। तर, यी प्रविधिहरूले सरकारलाई नागरिकहरूको मौलिक स्वतन्त्रतालाई जोखिममा राख्न सक्ने सम्भावना छ, उदाहरणका लागि, विशिष्ट व्यक्तिहरूको निरन्तर निगरानी सक्षम गरेर। त्यसैले, डाटा वैज्ञानिकहरू र संगठनहरूले तिनीहरूको AI प्रणालीले व्यक्तिहरू वा समाजलाई कसरी प्रभाव पार्छ भन्ने कुराको लागि जिम्मेवार हुनुपर्छ। +[![अनुहार पहिचानमार्फत द्रुत निगरानीमा अग्रणी AI अनुसन्धानकर्ताको चेतावनी](../../../../translated_images/ne/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftको जिम्मेवार AI दृष्टिकोण") -[![प्रमुख AI अनुसन्धानकर्ताले अनुहार पहिचान मार्फत व्यापक निगरानीको चेतावनी दिन्छन्](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft को जिम्मेवार AI को दृष्टिकोण") +> 🎥 माथि तस्बिरमा क्लिक गर्नुहोस् भिडियोको लागि: अनुहार पहिचानमार्फत द्रुत निगरानीको चेतावनीहरू -> 🎥 माथिको छवि क्लिक गर्नुहोस्: अनुहार पहिचान मार्फत व्यापक निगरानीको चेतावनी - -अन्ततः हाम्रो पुस्ताका लागि सबैभन्दा ठूलो प्रश्न, AI लाई समाजमा ल्याउने पहिलो पुस्ताका रूपमा, कम्प्युटरहरू मानिसहरूलाई जिम्मेवार रहन कसरी सुनिश्चित गर्ने र कम्प्युटर डिजाइन गर्ने व्यक्तिहरू सबैलाई जिम्मेवार रहन कसरी सुनिश्चित गर्ने भन्ने हो। +अन्ततः हाम्रो पुस्ताको सबैभन्दा ठूलो प्रश्नहरू मध्ये एक, जसले AI लाई समाजमा ल्याइरहेको पहिलो पुस्ता हो, के हो भने कम्प्युटरहरू मानिसहरूसँग जिम्मेवार रहिरहनेछन् र जसले कम्प्युटर डिजाइन गर्छन् तिनीहरू अरू सबैमै जिम्मेवार कसरी रहिरहनेछन्? ## प्रभाव मूल्याङ्कन -मेसिन लर्निङ मोडेल प्रशिक्षण गर्नु अघि, AI प्रणालीको उद्देश्य बुझ्न, यसको इच्छित प्रयोग के हो, यो कहाँ तैनात हुनेछ, र प्रणालीसँग को अन्तर्क्रिया गर्नेछ भन्ने कुरा बुझ्न प्रभाव मूल्याङ्कन गर्नु महत्त्वपूर्ण छ। यी समीक्षक(हरू) वा प्रणालीको मूल्याङ्कन गर्ने परीक्षकहरूलाई सम्भावित जोखिमहरू र अपेक्षित परिणामहरू पहिचान गर्दा विचार गर्नुपर्ने कारकहरू थाहा पाउन उपयोगी हुन्छन्। +मेशिन लर्निङ मोडेल प्रशिक्षित गर्नु अघि, AI प्रणालीको उद्देश्य के हो, यसको अपेक्षित प्रयोग के हो, कहाँ लागू गरिनेछ, र को प्रणालीसँग अन्तर्क्रिया गर्नेछ भन्ने बुझ्न प्रभाव मूल्याङ्कन गर्नु महत्त्वपूर्ण छ। यी कुरा समीक्षकहरू वा परीक्षण गर्नेहरूले प्रणालीको सम्भावित जोखिम र अपेक्षित परिणामहरूको मूल्याङ्कन गर्दा ध्यान दिनु पर्ने छन्। + +प्रभाव मूल्याङ्कन गर्दा ध्यान दिनु पर्ने क्षेत्रहरू: + +* **व्यक्तिगतमा प्रतिकूल प्रभाव**। कुनै प्रतिबन्ध वा आवश्यकता, समर्थन नगरेको प्रयोग वा प्रणालीको प्रदर्शनमा बाधा पुर्याउने ज्ञात सीमाहरूको बारेमा सचेत हुनु आवश्यक छ ताकि प्रणालीले मानिसहरूलाई हानि पुर्याउन नपाओस्। +* **डेटा आवश्यकताहरू**। प्रणालीले डेटा कसरी र कहाँ प्रयोग गर्ने बुझ्नाले समीक्षकहरूलाई डेटा आवश्यकताहरू (जस्तै GDPR वा HIPAA नियमहरू) बारे विचार गर्न मद्दत गर्छ। साथै, डेटा स्रोत वा परिमाण प्रशिक्षणको लागि पर्याप्त छ कि छैन हेर्नुहोस्। +* **प्रभावको सारांश**। प्रणाली प्रयोग गर्दा आउन सक्ने सम्भावित हानिहरूको सूची तयार गर्नुहोस्। ML जीवनचक्रभरि समस्याहरू देखिन्छन् भने तिनीहरूलाई समाधान वा सम्बोधन गरिन्छ कि छैन पुनरावलोकन गर्नुहोस्। +* **छ मुख्य सिद्धान्तका लागि लागू हुने लक्ष्यहरू**। प्रत्येक सिद्धान्तका लक्ष्यहरू पुरा भए वा कुनै खाली ठाउँ छ कि छैन मूल्याङ्कन गर्नुहोस्। + + +## जिम्मेवार AI सँग डिबगिङ + +सफ्टवेयर एप्लिकेशन डिबग गर्ने झै, AI प्रणाली डिबग गर्नु यसको समस्याहरू पहिचान र समाधान गर्ने जरूरी प्रक्रिया हो। मोडेलले अपेक्षा अनुसार वा जिम्मेवार रूपमा काम नगर्न धेरै कारकहरू हुन सक्छन्। अधिकांश परम्परागत मोडेल प्रदर्शन मेट्रिक्स मोडेलको प्रदर्शनको मात्रात्मक अभिव्यक्ति मात्र हो, तर तिनीहरूले जिम्मेवार AI सिद्धान्तहरूको उल्लंघन कसरी भयो भन्ने विश्लेषण गर्न पर्याप्त छैन। थपमा, मेशिन लर्निङ मोडेल एक कालो बाकस हो जसले आफ्नो नतिजाको कारण बुझ्न र गल्ती गर्दा व्याख्या दिन कठिन बनाउँछ। यस कोर्सको पछि भागमा, हामी जिम्मेवार AI ड्यासबोर्ड प्रयोग गर्न सिक्नेछौं जसले AI प्रणालीहरू डिबग गर्न मद्दत गर्छ। ड्यासबोर्डले डेटा वैज्ञानिकहरू र AI विकासकर्तालाई को समग्र उपकरण प्रदान गर्छ जसले: -प्रभाव मूल्याङ्कन गर्दा ध्यान दिनुपर्ने क्षेत्रहरू निम्न छन्: +* **त्रुटि विश्लेषण**। प्रणालीको निष्पक्षता वा विश्वसनीयतामा असर गर्ने मोडेलको त्रुटि वितरण पत्ता लगाउन। +* **मोडेल अवलोकन**। डेटा समूहहरूमा मोडेल प्रदर्शनमा हुने असमानता पत्ता लगाउन। +* **डेटा विश्लेषण**। डेटा वितरण बुझ्न र निष्पक्षता, समावेशिता, र विश्वसनीयता सम्बन्धी सम्भावित पूर्वाग्रह पत्ता लगाउन। +* **मोडेल व्याख्यायोग्यता**। मोडेलका पूर्वानुमानमा के के असर गर्छ बुझ्न। यसले मोडेलको व्यवहार व्याख्या गर्न मद्दत गर्छ, जुन पारदर्शिता र जिम्मेवारीका लागि महत्त्वपूर्ण छ। -* **व्यक्तिहरूमा प्रतिकूल प्रभाव**। प्रणालीको प्रदर्शनलाई बाधा पुर्‍याउने कुनै पनि प्रतिबन्ध वा आवश्यकताहरू, असमर्थित प्रयोग वा कुनै ज्ञात सीमाहरूको बारेमा सचेत हुनु प्रणालीलाई व्यक्तिहरूलाई हानि पुर्‍याउने तरिकामा प्रयोग नगरिने सुनिश्चित गर्न महत्त्वपूर्ण छ। -* **डाटा आवश्यकताहरू**। प्रणालीले डाटालाई कसरी र कहाँ प्रयोग गर्नेछ भन्ने कुरा बुझ्दा समीक्षकहरूले तपाईंले ध्यान दिनुपर्ने कुनै पनि डाटा आवश्यकताहरू (जस्तै, GDPR वा HIPPA डाटा नियमहरू) अन्वेषण गर्न सक्षम बनाउँछ। साथै, प्रशिक्षणको लागि स्रोत वा डाटाको मात्रा पर्याप्त छ कि छैन भन्ने कुरा जाँच गर्नुहोस्। -* **प्रभावको सारांश**। प्रणाली प्रयोग गर्दा उत्पन्न हुन सक्ने सम्भावित हानिहरूको सूची संकलन गर्नुहोस्। ML जीवनचक्रभरि, पहिचान गरिएका मुद्दाहरूलाई कम गरिएको छ वा सम्बोधन गरिएको छ कि छैन भन्ने कुरा समीक्षा गर्नुहोस्। -* **छ वटा मुख्य सिद्धान्तहरूको लागि लागू हुने लक्ष्यहरू**। प्रत्येक सिद्धान्तबाट लक्ष्यहरू पूरा भएका छन् कि छैनन् र कुनै पनि अन्तराल छन् कि छैनन् भन्ने कुरा मूल्याङ्कन गर्नुहोस्। -## जिम्मेवार AI को साथमा डिबगिङ +## 🚀 चुनौती + +हानीहरू आरम्भमा नै रोक्न, हामीले: -सफ्टवेयर अनुप्रयोग डिबगिङ जस्तै, AI प्रणाली डिबगिङ प्रणालीमा समस्या पहिचान र समाधान गर्ने आवश्यक प्रक्रिया हो। प्रणालीले अपेक्षित रूपमा वा जिम्मेवार रूपमा प्रदर्शन नगर्ने मोडेललाई असर गर्ने धेरै कारकहरू छन्। अधिकांश परम्परागत मोडेल प्रदर्शन मेट्रिक्स मोडेलको प्रदर्शनको मात्रात्मक समग्र हुन्, जसले जिम्मेवार AI सिद्धान्तहरू उल्लङ्घन गर्ने मोडेललाई विश्लेषण गर्न पर्याप्त छैन। थप रूपमा, मेसिन लर्निङ मोडेल एक ब्ल्याक बक्स हो जसले यसको परिणामलाई के चलाउँछ भन्ने कुरा बुझ्न वा गल्ती गर्दा व्याख्या प्रदान गर्न गाह्रो बनाउँछ। पछि यस पाठ्यक्रममा, हामी जिम्मेवार AI ड्यासबोर्ड प्रयोग गरेर AI प्रणालीहरू डिबग गर्ने तरिका सिक्नेछौं। ड्यासबोर्डले डाटा वैज्ञानिकहरू र AI विकासकर्ताहरूलाई निम्न कार्यहरू गर्न समग्र उपकरण प्रदान गर्दछ: +- प्रणालीहरूमा काम गर्ने मानिसहरूमा फरक पृष्ठभूमि र दृष्टिकोणको विविधता हुनुपर्छ। +- हाम्रो समाजको विविधता प्रतिबिम्बित गर्ने डाटासेटहरूमा लगानी गर्नुपर्छ। +- मेशिन लर्निङ जीवनचक्रभर जिम्मेवार AI पत्ता लगाउन र सुधार गर्न राम्रो विधिहरू विकास गर्नुपर्छ। -* **त्रुटि विश्लेषण**। प्रणालीको निष्पक्षता वा विश्वसनीयतालाई असर गर्न सक्ने मोडेलको त्रुटि वितरण पहिचान गर्न। -* **मोडेल अवलोकन**। मोडेलको प्रदर्शनमा डाटा समूहहरूमा असमानता कहाँ छ भनेर पत्ता लगाउन। -* **डाटा विश्लेषण**। डाटा वितरण बुझ्न र डाटामा सम्भावित पूर्वाग्रह पहिचान गर्न जसले निष्पक्षता, समावेशिता, र विश्वसनीयता समस्याहरू निम्त्याउन सक्छ। -* **मोडेल व्याख्या**। मोडेलको भविष्यवाणीलाई के असर गर्छ वा प्रभाव पार्छ भन्ने कुरा बुझ्न। यसले मोडेलको व्यवहार व्याख्या गर्न मद्दत गर्दछ, जुन पारदर्शिता र जिम्मेवारीको लागि महत्त्वपूर्ण छ। +मोडेलको अविश्वसनीयता मोडेल निर्माण र प्रयोगमा कसरी देखिन्छ भन्ने वास्तविक जीवनका परिदृश्यहरू बारे सोच्नुहोस्। के अरू कुरा विचार गर्नुपर्छ? -## 🚀 चुनौती +## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) -हानिहरूलाई सुरुमा नै परिचय गराउनबाट रोक्नका लागि, हामीले: +## समीक्षा र आत्म-अध्ययन + -- प्रणालीमा काम गर्ने व्यक्तिहरूको पृष्ठभूमि र दृष्टिकोणको विविधता हुनुपर्छ। -- हाम्रो समाजको विविधतालाई प्रतिबिम्बित गर्ने डाटासेटहरूमा लगानी गर्नुपर्छ। -- मेसिन लर्निङ जीवनचक्रभरि जिम्मेवार AI पत्ता लगाउने र -यो कार्यशाला हेरेर विषयवस्तुमा गहिरो जानकारी लिनुहोस्: +यस पाठमा, तपाईंले मेसिन लर्निंगमा निष्पक्षता र अन्याय सम्बन्धी केहि आधारभूत अवधारणाहरू सिक्नुभएको छ। + +यी विषयहरूमा गहिराइमा जान यो कार्यशालामा हेर्नुहोस्: -- जिम्मेवार AI को खोजमा: सिद्धान्तलाई व्यवहारमा ल्याउने Besmira Nushi, Mehrnoosh Sameki र Amit Sharma द्वारा +- जिम्मेवार AI को खोजीमा: व्यवहारमा सिद्धान्त ल्याउने कुरामा Besmira Nushi, Mehrnoosh Sameki र Amit Sharma द्वारा -[![Responsible AI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 माथिको चित्रमा क्लिक गर्नुहोस् भिडियोका लागि: RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क Besmira Nushi, Mehrnoosh Sameki, र Amit Sharma द्वारा +> 🎥 भिडियोका लागि माथिको तस्वीरमा क्लिक गर्नुहोस्: RAI Toolbox: An open-source framework for building responsible AI Besmira Nushi, Mehrnoosh Sameki, र Amit Sharma द्वारा -यसलाई पनि पढ्नुहोस्: +साथै, पढ्नुस्: -- Microsoft को RAI स्रोत केन्द्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- माइक्रोसफ्टको RAI स्रोत केन्द्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft को FATE अनुसन्धान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- माइक्रोसफ्टको FATE अनुसन्धान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: - [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) -Azure Machine Learning को उपकरणहरूबारे पढ्नुहोस् जसले निष्पक्षता सुनिश्चित गर्छ: +Azure Machine Learning का उपकरणहरू बारेमा जान्नुस् जसले निष्पक्षता सुनिश्चित गर्छ: -- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) -## असाइनमेन्ट +## असाइन्मेन्ट [RAI Toolbox अन्वेषण गर्नुहोस्](assignment.md) --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं। + \ No newline at end of file diff --git a/translations/ne/2-Regression/1-Tools/README.md b/translations/ne/2-Regression/1-Tools/README.md index 3634890a5..6845b07bb 100644 --- a/translations/ne/2-Regression/1-Tools/README.md +++ b/translations/ne/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Python र Scikit-learn प्रयोग गरेर Regression Models सुरु गर्नुहोस् +# रिग्रेसन मोडेलहरूका लागि पाइथन र स्कikit-लर्नसँग शुरू गर्नुहोस् -![Regression को स्केच नोटमा सारांश](../../../../sketchnotes/ml-regression.png) +![स्केचनोटमा रिग्रेसनहरूको सारांश](../../../../translated_images/ne/ml-regression.4e4f70e3b3ed446e.webp) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा +> स्केचनोट लेखक [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) +## [पूर्व-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) > ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## परिचय -यी चार पाठहरूमा, तपाईंले regression models कसरी निर्माण गर्ने सिक्नुहुनेछ। हामी चाँडै यी मोडेलहरू केका लागि प्रयोग गरिन्छ भन्ने छलफल गर्नेछौं। तर कुनै पनि काम सुरु गर्नु अघि, सुनिश्चित गर्नुहोस् कि तपाईंले प्रक्रिया सुरु गर्न आवश्यक उपकरणहरू तयार गरेका छौं! +यी चार पाठहरूमा, तपाईंले कसरी रिग्रेसन मोडेलहरू बनाउन सकिन्छ भन्ने पत्ता लगाउनुहुनेछ। हामी चाँडै यीको के लागि प्रयोग हुन्छ भन्ने कुरा छलफल गर्नेछौं। तर कुनै कुरा गर्नु अघि, प्रक्रिया सुरु गर्न सही उपकरणहरू हुनु आवश्यक छ! यस पाठमा, तपाईंले सिक्नुहुनेछ: -- आफ्नो कम्प्युटरलाई स्थानीय मशीन लर्निङ कार्यहरूको लागि कन्फिगर गर्नुहोस्। -- Jupyter notebooks प्रयोग गर्नुहोस्। -- Scikit-learn प्रयोग गर्नुहोस्, जसमा स्थापना समावेश छ। -- Linear regression को अभ्यासद्वारा अन्वेषण गर्नुहोस्। +- स्थानीय मेसिन लर्निङ कार्यहरूको लागि तपाईंको कम्प्युटर कन्फिगर गर्न। +- ज्युपिटर नोटबुकहरूसँग काम गर्न। +- स्कikit-लर्न प्रयोग गर्न, स्थापना सहित। +- हात-ऑन अभ्याससहित रेखीय रिग्रेसन अन्वेषण गर्न। ## स्थापना र कन्फिगरेसनहरू -[![मशीन लर्निङको लागि सुरुवात - मशीन लर्निङ मोडेल निर्माण गर्न उपकरण सेटअप गर्नुहोस्](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निङको लागि सुरुवात - मशीन लर्निङ मोडेल निर्माण गर्न उपकरण सेटअप गर्नुहोस्") +[![शुरुआतीहरूका लागि ML - मेसिन लर्निङ मोडेलहरू बनाउनका लागि उपकरणहरू तयार पार्नुहोस्](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "शुरुआतीहरूका लागि ML - मेसिन लर्निङ मोडेलहरू बनाउनका लागि उपकरणहरू तयार पार्नुहोस्") -> 🎥 माथिको छवि क्लिक गर्नुहोस्: ML को लागि कम्प्युटर कन्फिगर गर्ने छोटो भिडियो। +> 🎥 माथिको तस्बिरमा क्लिक गरेर मेसिन लर्निङको लागि तपाईंको कम्प्युटर कसरी कन्फिगर गर्ने भन्ने छोटो भिडियो हेर्नुहोस्। -1. **Python स्थापना गर्नुहोस्**। सुनिश्चित गर्नुहोस् कि [Python](https://www.python.org/downloads/) तपाईंको कम्प्युटरमा स्थापना गरिएको छ। तपाईंले धेरै डेटा विज्ञान र मशीन लर्निङ कार्यहरूको लागि Python प्रयोग गर्नुहुनेछ। अधिकांश कम्प्युटर प्रणालीहरूमा Python पहिले नै स्थापना गरिएको हुन्छ। [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) पनि उपलब्ध छन्, जसले केही प्रयोगकर्ताहरूको लागि सेटअप सजिलो बनाउँछ। +1. **पाइथन स्थापना गर्नुहोस्**। सुनिश्चित गर्नुहोस् कि तपाईंको कम्प्युटरमा [Python](https://www.python.org/downloads/) स्थापना गरिएको छ। तपाईंले धेरै डेटा विज्ञान र मेसिन लर्निङ कार्यहरूका लागि पाइथन प्रयोग गर्नुहुनेछ। अधिकांश कम्प्युटर सिस्टममा पहिले नै पाइथन स्थापना हुन्छ। केही प्रयोगकर्ताका लागि सेटअप सजिलो बनाउन उपयोगी [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) पनि उपलब्ध छन्। - Python को केही प्रयोगले एक संस्करण आवश्यक पर्छ भने अन्यले फरक संस्करण आवश्यक पर्छ। यस कारणले, [virtual environment](https://docs.python.org/3/library/venv.html) मा काम गर्नु उपयोगी हुन्छ। + यद्यपि केही पाइथन प्रयोगहरूले फरक संस्करणको आवश्यकता पर्न सक्छ। त्यसैले, [वर्चुअल वातावरण](https://docs.python.org/3/library/venv.html) भित्र काम गर्नु उपयोगी हुन्छ। -2. **Visual Studio Code स्थापना गर्नुहोस्**। सुनिश्चित गर्नुहोस् कि Visual Studio Code तपाईंको कम्प्युटरमा स्थापना गरिएको छ। [Visual Studio Code स्थापना](https://code.visualstudio.com/) को लागि यी निर्देशनहरू पालना गर्नुहोस्। तपाईंले यस पाठमा Python Visual Studio Code मा प्रयोग गर्नुहुनेछ, त्यसैले [Python विकासको लागि Visual Studio Code कन्फिगर](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) कसरी गर्ने भन्नेमा ध्यान दिनुहोस्। +2. **भिजुअल स्टुडियो कोड स्थापना गर्नुहोस्**। सुनिश्चित गर्नुहोस् कि तपाईंको कम्प्युटरमा भिजुअल स्टुडियो कोड स्थापना गरिएको छ। सामान्य स्थापना गर्न यी निर्देशनहरू पछ्याउनुहोस्: [install Visual Studio Code](https://code.visualstudio.com/)। तपाईं यस कोर्समा भिजुअल स्टुडियो कोडमा पाइथन प्रयोग गर्न जाँदै हुनुहुन्छ, त्यसैले [Visual Studio Code कन्फिगर गर्न](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) यो अभ्यास गर्नुहोस्। - > Python को साथ सहज हुनुहोस्: [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) को यो संग्रह मार्फत काम गरेर। + > यो [स्किक modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) को संग्रहमार्फत पाइथनसँग परिचित बन्नुहोस्। > - > [![Visual Studio Code को साथ Python सेटअप गर्नुहोस्](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code को साथ Python सेटअप गर्नुहोस्") + > [![Visual Studio Code सँग पाइथन सेटअप गर्नुहोस्](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code सँग पाइथन सेटअप गर्नुहोस्") > - > 🎥 माथिको छवि क्लिक गर्नुहोस्: VS Code मा Python प्रयोग गर्ने भिडियो। + > 🎥 माथिको तस्बिरमा क्लिक गरेर उपयुक्त भिडियो हेर्नुहोस्: VS Code भित्र पाइथन प्रयोग गर्ने तरिका। -3. **Scikit-learn स्थापना गर्नुहोस्**, [यी निर्देशनहरू](https://scikit-learn.org/stable/install.html) पालना गरेर। तपाईंले Python 3 प्रयोग गर्न सुनिश्चित गर्नुपर्ने भएकाले, virtual environment प्रयोग गर्न सिफारिस गरिन्छ। यदि तपाईं M1 Mac मा यो लाइब्रेरी स्थापना गर्दै हुनुहुन्छ भने, माथि लिंक गरिएको पृष्ठमा विशेष निर्देशनहरू छन्। +3. **स्कikit-लर्न स्थापना गर्नुहोस्**, यी निर्देशनहरू अनुसरण गरेर: [install instructions](https://scikit-learn.org/stable/install.html)। स्कikit-लर्न प्रयोग गर्न पाइथन 3 आवश्यक छ, त्यसैले वर्चुअल वातावरण प्रयोग गर्न सल्लाह दिइन्छ। यदि तपाईं M1 Mac मा यो पुस्तकालय स्थापना गर्दै हुनुहुन्छ भने, माथिको पृष्ठमा विशेष निर्देशनहरू छन्। -4. **Jupyter Notebook स्थापना गर्नुहोस्**। तपाईंले [Jupyter package](https://pypi.org/project/jupyter/) स्थापना गर्नुपर्नेछ। +1. **ज्युपिटर नोटबुक स्थापना गर्नुहोस्**। तपाईंले [जुपिटर प्याकेज](https://pypi.org/project/jupyter/) स्थापना गर्नु आवश्यक छ। -## तपाईंको ML लेखन वातावरण +## तपाईंको मेसिन लर्निङ लेखन वातावरण -तपाईंले **notebooks** प्रयोग गरेर Python कोड विकास गर्नुहुनेछ र मशीन लर्निङ मोडेलहरू निर्माण गर्नुहुनेछ। यो प्रकारको फाइल डेटा वैज्ञानिकहरूको लागि सामान्य उपकरण हो, र तिनीहरूलाई `.ipynb` विस्तारले चिनिन्छ। +तपाईंले आफ्नो पाइथन कोड विकास गर्न र मेसिन लर्निङ मोडेलहरू निर्माण गर्न **नोटबुकहरू** प्रयोग गर्नुहुनेछ। यस प्रकारको फाइल डेटा वैज्ञानिकहरूका लागि सामान्य उपकरण हो, र यसको पहिचान यसको suffix वा विस्तार `.ipynb` बाट हुन्छ। -Notebooks एक अन्तरक्रियात्मक वातावरण हो जसले विकासकर्तालाई कोड लेख्न र कोडको वरिपरि नोटहरू र दस्तावेजहरू थप्न अनुमति दिन्छ, जुन प्रयोगात्मक वा अनुसन्धान-उन्मुख परियोजनाहरूको लागि धेरै उपयोगी हुन्छ। +नोटबुकहरू अन्तरक्रियात्मक वातावरण हुन् जसले विकासकर्ता कोड लेख्न र नोटहरू, डकुमेन्टेशन थप्न मद्दत गर्छ जुन प्रयोगात्मक वा अनुसन्धान सम्बन्धी परियोजनाहरूको लागि धेरै उपयोगी हुन्छ। -[![मशीन लर्निङको लागि सुरुवात - Regression मोडेल निर्माण गर्न Jupyter Notebooks सेटअप गर्नुहोस्](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निङको लागि सुरुवात - Regression मोडेल निर्माण गर्न Jupyter Notebooks सेटअप गर्नुहोस्") +[![शुरुआतीहरूका लागि ML - रिग्रेसन मोडेलहरू बनाउन ज्युपिटर नोटबुकहरू सेटअप गर्नुहोस्](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "शुरुआतीहरूका लागि ML - रिग्रेसन मोडेलहरू बनाउन ज्युपिटर नोटबुकहरू सेटअप गर्नुहोस्") -> 🎥 माथिको छवि क्लिक गर्नुहोस्: यो अभ्यासको लागि छोटो भिडियो। +> 🎥 माथिको तस्बिरमा क्लिक गरेर यो अभ्यासको छोटो भिडियो हेर्नुहोस्। -### अभ्यास - Notebook को साथ काम गर्नुहोस् +### अभ्यास - नोटबुकसँग काम गर्नुहोस् -यस फोल्डरमा, तपाईंले _notebook.ipynb_ फाइल पाउनुहुनेछ। +यस फोल्डरमा, तपाईं _notebook.ipynb_ फाइल पाउनुहुनेछ। -1. _notebook.ipynb_ Visual Studio Code मा खोल्नुहोस्। +1. Visual Studio Code मा _notebook.ipynb_ खोल्नुहोस्। - Jupyter server Python 3+ को साथ सुरु हुनेछ। तपाईंले notebook मा `run` गर्न सकिने कोडका टुक्राहरू पाउनुहुनेछ। तपाईंले प्ले बटन जस्तो देखिने आइकन चयन गरेर कोड ब्लक चलाउन सक्नुहुन्छ। + एउटा ज्युपिटर सर्भर Python 3+ सँग सुरु हुनेछ। नोटबुकका केही भागहरू `run` गर्न मिल्छन्, अर्थात् कोडका टुक्राहरू। आपले प्ले बटन जस्तो देखिने आइकन चयन गरेर कोड ब्लक चलाउन सक्नुहुन्छ। -2. `md` आइकन चयन गर्नुहोस् र केही markdown थप्नुहोस्, र निम्न पाठ लेख्नुहोस् **# Welcome to your notebook**। +1. `md` आइकन चयन गरेर मार्कडाउन थप्नुहोस्, र तलको पाठ **# Welcome to your notebook** लेख्नुहोस्। - त्यसपछि, केही Python कोड थप्नुहोस्। + त्यसपछि केही पाइथन कोड थप्नुहोस्। -3. कोड ब्लकमा **print('hello notebook')** टाइप गर्नुहोस्। -4. कोड चलाउनको लागि तीर चयन गर्नुहोस्। +1. कोड ब्लकमा **print('hello notebook')** टाइप गर्नुहोस्। +1. कोड चलाउन तीर आइकन चयन गर्नुहोस्। - तपाईंले प्रिन्ट गरिएको कथन देख्नुहुनेछ: + तपाईंले निम्न मुद्रित वाक्यांश देख्नु पर्नेछ: ```output hello notebook ``` -![VS Code मा notebook खुला भएको](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code मा खोलिएको नोटबुक](../../../../translated_images/ne/notebook.4a3ee31f396b8832.webp) -तपाईं आफ्नो कोडलाई टिप्पणीहरूद्वारा स्व-डकुमेन्ट गर्न सक्नुहुन्छ। +तपाईं आफ्नो कोडसँग टिप्पणीहरू मिसाएर नोटबुकलाई स्वयं-डकुमेन्ट गर्न सक्नुहुन्छ। -✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको काम गर्ने वातावरण डेटा वैज्ञानिकको वातावरणसँग कति फरक छ। +✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको कार्य वातावरण र डेटा वैज्ञानिकको कार्य वातावरण कत्तिको फरक हुन्छ। -## Scikit-learn को साथ सुरु गर्नुहोस् +## स्कikit-लर्नसँग सुरु हुँदै -अब Python तपाईंको स्थानीय वातावरणमा सेटअप भएको छ, र तपाईं Jupyter notebooks को साथ सहज हुनुहुन्छ, अब Scikit-learn को साथ समान सहज हुनुहोस्। Scikit-learn ले [व्यापक API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान गर्दछ जसले तपाईंलाई ML कार्यहरू गर्न मद्दत गर्दछ। +अब पाइथन तपाईंको स्थानीय वातावरणमा सेटअप भइसकेको छ, र तपाईं ज्युपिटर नोटबुकसँग सहज हुनुहुन्छ, स्कikit-लर्नसँग पनि सहज हुन 시작 गरौं (`sci` लाई `science` जस्तै उच्चारण गर्नुहोस्)। स्कikit-लर्नले तपाईंलाई मेसिन लर्निङ कार्यहरू गर्न मद्दत पुर्‍याउने [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान गर्दछ। -तिनीहरूको [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) अनुसार, "Scikit-learn एक खुला स्रोत मशीन लर्निङ लाइब्रेरी हो जसले supervised र unsupervised learning समर्थन गर्दछ। यसले मोडेल फिटिंग, डेटा preprocessing, मोडेल चयन र मूल्यांकन, र अन्य धेरै उपयोगिताहरूका लागि विभिन्न उपकरणहरू प्रदान गर्दछ।" +तिनीहरूको [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) अनुसार, "Scikit-learn खुला स्रोत मेसिन लर्निङ पुस्तकालय हो जुन सुपरभाइज्ड र अनसुपरभाइज्ड लर्निङलाई समर्थन गर्छ। यसले मोडेल फिटिंग, डेटा प्रिप्रसेसिङ, मोडेल चयन र मूल्यांकन, तथा अन्य धेरै उपयोगिताहरूका लागि विभिन्न उपकरणहरू पनि प्रदान गर्दछ।" -यस पाठ्यक्रममा, तपाईंले Scikit-learn र अन्य उपकरणहरू प्रयोग गरेर मशीन लर्निङ मोडेलहरू निर्माण गर्नुहुनेछ जसलाई 'पारम्परिक मशीन लर्निङ' कार्यहरू भनिन्छ। हामीले neural networks र deep learning जस्ता विषयहरूलाई जानबुझेर टाढा राखेका छौं, किनकि तिनीहरू हाम्रो आगामी 'AI for Beginners' पाठ्यक्रममा राम्रोसँग समेटिएका छन्। +यस कोर्समा, तपाईंले स्कikit-लर्न र अन्य उपकरणहरू प्रयोग गरेर परम्परागत मेसिन लर्निङ कार्यहरू गर्ने मोडेलहरू निर्माण गर्नुहुनेछ। हामीले जानाजानी न्यूरल नेटवर्क र डीप लर्निङलाई समावेश गरेका छैनौं, ती हामीले आउने 'शुरुआतीहरूको लागि AI' पाठ्यक्रममा राम्रोसँग समेट्नेछौं। -Scikit-learn ले मोडेलहरू निर्माण गर्न र तिनीहरूलाई मूल्यांकन गर्न सजिलो बनाउँछ। यो मुख्य रूपमा संख्यात्मक डेटा प्रयोगमा केन्द्रित छ र सिक्ने उपकरणको रूपमा प्रयोग गर्न तयार-निर्मित datasets समावेश गर्दछ। यसमा विद्यार्थीहरूले प्रयास गर्न सक्ने पूर्व-निर्मित मोडेलहरू पनि समावेश छन्। अब, prepackaged डेटा लोड गर्ने प्रक्रिया र Scikit-learn को साथ पहिलो ML मोडेलको लागि built-in estimator अन्वेषण गरौं। +स्कikit-लर्नले मोडेलहरू बनाउन र तिनीहरूको मूल्याङ्कन गर्न सजिलो बनाउँछ। यो मुख्यतया संख्यात्मक डेटा प्रयोग गर्नेमा केन्द्रित छ र सिकाइ उपकरणका रूपमा प्रयोग गर्न तयार धेरै पूर्वप्याक गरिएको डेटा सेटहरू पनि समावेश गर्दछ। यसमा विद्यार्थीहरूका लागि पूर्वनिर्मित मोडेलहरू पनि हुन्छन्। पहिले हामी पूर्वप्याक गरिएको डेटा लोड गर्ने र स्कikit-लर्नको बिल्ट-इन इस्टिमेटर प्रयोग गरेर पहिलो ML मोडेल बनाउने प्रक्रिया अन्वेषण गरौं। -## अभ्यास - तपाईंको पहिलो Scikit-learn notebook +## अभ्यास - तपाईंको पहिलो स्कikit-लर्न नोटबुक -> यो ट्यूटोरियल Scikit-learn को वेबसाइटमा [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) बाट प्रेरित छ। +> यो ट्यूटोरियल स्कikit-लर्नको वेबसाइटमा रहेको [रेखीय रिग्रेसन उदाहरण](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)बाट प्रेरित छ। -[![मशीन लर्निङको लागि सुरुवात - Python मा तपाईंको पहिलो Linear Regression परियोजना](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निङको लागि सुरुवात - Python मा तपाईंको पहिलो Linear Regression परियोजना") -> 🎥 माथिको छवि क्लिक गर्नुहोस्: यो अभ्यासको लागि छोटो भिडियो। +[![शुरुआतीहरूका लागि ML - पाइथनमा तपाईंको पहिलो रेखीय रिग्रेसन परियोजना](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "शुरुआतीहरूका लागि ML - पाइथनमा तपाईंको पहिलो रेखीय रिग्रेसन परियोजना") -_नोटबुक.ipynb_ फाइलमा, सबै सेलहरू 'trash can' आइकन दबाएर खाली गर्नुहोस्। +> 🎥 माथिको तस्बिरमा क्लिक गरेर यो अभ्यासको छोटो भिडियो हेर्नुहोस्। -यस खण्डमा, तपाईं Scikit-learn मा सिक्ने उद्देश्यका लागि निर्माण गरिएको diabetes dataset को साथ काम गर्नुहुनेछ। कल्पना गर्नुहोस् कि तपाईंले मधुमेहका बिरामीहरूको उपचार परीक्षण गर्न चाहनुहुन्छ। मशीन लर्निङ मोडेलहरूले तपाईंलाई भिन्न चरहरूको संयोजनको आधारमा कुन बिरामीहरूले उपचारमा राम्रो प्रतिक्रिया दिनेछन् भनेर निर्धारण गर्न मद्दत गर्न सक्छ। जब visualization गरिएको एक धेरै आधारभूत regression मोडेलले चरहरूको बारेमा जानकारी देखाउन सक्छ जसले तपाईंलाई सैद्धान्तिक क्लिनिकल परीक्षणहरू व्यवस्थित गर्न मद्दत गर्दछ। +_notebook.ipynb_ फाइलमा, यस पाठसंग सम्बन्धित सबै सेलहरू खाली गर्न 'ट्र्यास क्यान' आइकन थिच्नुहोस्। -✅ धेरै प्रकारका regression विधिहरू छन्, र तपाईंले कुन विधि चयन गर्नुहुन्छ भन्ने कुरा तपाईंले खोजिरहेको उत्तरमा निर्भर गर्दछ। यदि तपाईंले कुनै व्यक्तिको उमेरको आधारमा सम्भावित उचाइको भविष्यवाणी गर्न चाहनुहुन्छ भने, तपाईंले linear regression प्रयोग गर्नुहुनेछ, किनकि तपाईं **संख्यात्मक मान** खोज्दै हुनुहुन्छ। यदि तपाईंले कुनै प्रकारको खाना vegan हो कि होइन भनेर पत्ता लगाउन चाहनुहुन्छ भने, तपाईं **श्रेणी असाइनमेन्ट** खोज्दै हुनुहुन्छ, त्यसैले तपाईंले logistic regression प्रयोग गर्नुहुनेछ। तपाईं logistic regression को बारेमा पछि थप जान्नुहुनेछ। डेटा सम्बन्धी केही प्रश्नहरू सोच्नुहोस्, र यी विधिहरू मध्ये कुन उपयुक्त हुनेछ भनेर विचार गर्नुहोस्। +यस खण्डमा, तपाईंले डाइबिटीज सम्बन्धी सानो डेटासेट प्रयोग गर्नु हुनेछ जुन स्कikit-लर्नमा सिकाइको लागि बिल्ट-इन छ। कल्पना गर्नुहोस् तपाईंले डायबिटिक बिरामीहरूको उपचार परीक्षण गर्न चाहनुहुन्छ। मेसिन लर्निङ मोडेलहरूले ठम्याउन मद्दत गर्न सक्छन् कुन बिरामीले उपचार राम्रोसँग प्रतिक्रिया दिनेछन्, भेरिएबलहरूको संयोजनको आधारमा। धेरै आधारभूत रिग्रेसन मोडेलले पनि दृश्यात्मक रूपमा यस विषयमा जानकारी दिन सक्छ जुन तपाईंको सैद्धान्तिक क्लिनिकल ट्रायलहरूलाई व्यवस्थित गर्न मद्दत गर्नेछ। + +✅ रिग्रेसन विधिहरू धेरै प्रकारका हुन्छन्, र कुन विधि छनोट गर्ने भन्ने कुरा तपाईंले खोजिरहेको उत्तरमा निर्भर गर्दछ। यदि तपाईंको लक्ष्य केहि उमेरका व्यक्तिको सम्भावित उचाइ भविष्यवाणी गर्नु हो भने, तपाईंले रेखीय रिग्रेसन प्रयोग गर्नुहुनेछ किनकि तपाईं **संख्यात्मक मान** खोज्दै हुनुहुन्छ। यदि तपाईंलाई थाहा पाउनुछ कि खाद्यप्रकार शाकाहारी हो वा होइन, तपाईं **श्रेणी निर्धारण** खोज्दै हुनुहुन्छ र त्यसका लागि लोगिस्टिक रिग्रेसन उपयुक्त हुन्छ। तपाईंले पछि लोगिस्टिक रिग्रेसन सिक्नु हुनेछ। केहि प्रश्नहरूको बारेमा सोच्नुहोस् जुन तपाईं डेटा बाट सोध्न सक्नुहुन्छ, र ती प्रश्नहरूको लागि कुन विधि उचित हुन्छ। अब यो कार्य सुरु गरौं। -### लाइब्रेरीहरू आयात गर्नुहोस् +### पुस्तकालयहरू आयात गर्नुहोस् -यस कार्यको लागि, हामी केही लाइब्रेरीहरू आयात गर्नेछौं: +यस कार्यका लागि हामी केही पुस्तकालयहरू आयात गर्नेछौं: -- **matplotlib**। यो एक उपयोगी [ग्राफिङ उपकरण](https://matplotlib.org/) हो, र हामी यसलाई line plot बनाउन प्रयोग गर्नेछौं। -- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) संख्यात्मक डेटा ह्यान्डल गर्न Python मा उपयोगी लाइब्रेरी हो। -- **sklearn**। यो [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) लाइब्रेरी हो। +- **matplotlib**। यो एक उपयोगी [ग्राफिङ टूल](https://matplotlib.org/) हो र हामी यसलाई लाइन प्लट बनाउन प्रयोग गर्नेछौं। +- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) पाइथनमा संख्यात्मक डेटा व्यवस्थापनका लागि उपयोगी लाइब्रेरी हो। +- **sklearn**। यो [स्कikit-लर्न](https://scikit-learn.org/stable/user_guide.html) लाइब्रेरी हो। -तपाईंको कार्यहरूमा मद्दत गर्न केही लाइब्रेरीहरू आयात गर्नुहोस्। +तपाईंका कार्यहरूमा सहयोग गर्न केही पुस्तकालयहरू आयात गर्नुहोस्। -1. निम्न कोड टाइप गरेर आयात थप्नुहोस्: +1. तलको कोड टाइप गरेर आयातहरू थप्नुहोस्: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ _नोटबुक.ipynb_ फाइलमा, सबै सेलहरू 'tra from sklearn import datasets, linear_model, model_selection ``` - माथि, तपाईंले `matplotlib`, `numpy` आयात गर्दै हुनुहुन्छ, र `sklearn` बाट `datasets`, `linear_model` र `model_selection` आयात गर्दै हुनुहुन्छ। `model_selection` डेटा प्रशिक्षण र परीक्षण सेटहरूमा विभाजन गर्न प्रयोग गरिन्छ। + माथि तपाईंले `matplotlib`, `numpy` आयात गर्दै हुनुहुन्छ र `sklearn` बाट `datasets`, `linear_model`, `model_selection` आयात गर्दै हुनुहुन्छ। `model_selection` डेटा प्रशिक्षण र परीक्षण सेटमा विभाजन गर्न प्रयोग हुन्छ। -### मधुमेह dataset +### डायबिटीज डेटासेट -Scikit-learn मा निर्मित [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मधुमेह सम्बन्धी 442 नमूनाहरू समावेश गर्दछ, जसमा 10 feature variables छन्। केही समावेश छन्: +बिल्ट-इन [डायबिटीज डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)मा ४४२ नमुनाहरू छन्, जसमा १० विशेषताहरू समावेश छन्, जसमध्ये केही: -- age: उमेर वर्षमा +- उमेर: वर्षमा उमेर - bmi: शरीरको मास सूचकांक - bp: औसत रक्तचाप -- s1 tc: T-Cells (सेतो रक्त कोशिकाको प्रकार) +- s1 tc: T-सेलहरू (सेतो रक्तकोषिका प्रकार) -✅ यो dataset मा मधुमेह सम्बन्धी अनुसन्धानको लागि महत्त्वपूर्ण feature variable को रूपमा 'sex' को अवधारणा समावेश छ। धेरै चिकित्सा datasets मा binary classification जस्ता प्रकारहरू समावेश हुन्छन्। सोच्नुहोस् कि यस्तो वर्गीकरणले जनसंख्याको केही भागलाई उपचारबाट कसरी बाहिर राख्न सक्छ। +✅ यस डेटासेटमा 'लिङ्ग' एक महत्वपूर्ण विशेषता भेरिएबलको रूपमा समावेश गरिएको छ जुन डायबिटीज अनुसन्धानमा महत्त्वपूर्ण छ। धेरै चिकित्सा डेटासेटहरूमा यस्ता द्विक वर्गीकरणहरू हुन्छन्। सोच्नुहोस् यस्ता वर्गीकरणहरूले जनसंख्याबाट कतिपय भागहरू उपचारबाट बाहिर पार्न सक्छन्। अब, X र y डेटा लोड गर्नुहोस्। -> 🎓 सम्झनुहोस्, यो supervised learning हो, र हामीलाई नाम गरिएको 'y' target चाहिन्छ। +> 🎓 याद गर्नुहोस्, यो सुपरभाइज्ड लर्निङ हो र हामीलाई 'y' नामक लक्ष्य चाहिन्छ। -नयाँ कोड सेलमा, `load_diabetes()` कल गरेर मधुमेह dataset लोड गर्नुहोस्। इनपुट `return_X_y=True` ले संकेत गर्दछ कि `X` डेटा म्याट्रिक्स हुनेछ, र `y` regression target हुनेछ। +नयाँ कोड सेलमा, `load_diabetes()` कल गरेर डायबिटीज डेटासेट लोड गर्नुहोस्। `return_X_y=True` इनपुटले संकेत गर्छ कि `X` डेटा म्याट्रिक्स हुनेछ र `y` रिग्रेसन लक्ष्य हुनेछ। -1. डेटा म्याट्रिक्सको आकार र यसको पहिलो तत्व देखाउन केही print कमाण्डहरू थप्नुहोस्: +1. डेटा म्याट्रिक्सको आकार र यसको पहिलो तत्त्वलाई देखाउन प्रिन्ट कमाण्डहरू थप्नुहोस्: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Scikit-learn मा निर्मित [diabetes dataset](https://scikit-lear print(X[0]) ``` - तपाईंले प्रतिक्रिया स्वरूप पाउने कुरा tuple हो। तपाईंले tuple का दुई पहिलो मानहरू क्रमशः `X` र `y` मा असाइन गर्दै हुनुहुन्छ। [tuple](https://wikipedia.org/wiki/Tuple) को बारेमा थप जान्नुहोस्। + तपाईंले प्रतिक्रिया स्वरूप ट्युपल पाउनुहुनेछ। तपाईंले सो ट्युपलका पहिलो दुई मानहरू क्रमश: `X` र `y` मा असाइन गर्दै हुनुहुन्छ। [ट्युपलहरूको बारेमा थप जान्नुहोस्](https://wikipedia.org/wiki/Tuple)। - तपाईं देख्न सक्नुहुन्छ कि यो डेटा 442 वस्तुहरू समावेश गर्दछ, जसको आकार 10 तत्वहरूको array मा छ: + यस डेटामा ४४२ वस्तुहरू छन् जुन १० तत्त्वहरू भएको एर्रेमा आकारमा छन्: ```text (442, 10) @@ -159,39 +160,39 @@ Scikit-learn मा निर्मित [diabetes dataset](https://scikit-lear -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ डेटा र regression target बीचको सम्बन्धको बारेमा सोच्नुहोस्। Linear regression feature X र target variable y बीचको सम्बन्धको भविष्यवाणी गर्दछ। तपाईंले मधुमेह dataset को [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) लाई कागजातमा पाउन सक्नुहुन्छ? यो dataset के प्रदर्शन गर्दैछ, target दिइएको अवस्थामा? + ✅ डेटाको रिग्रेसन लक्ष्य बिचको सम्बन्धबारे सोच्नुहोस्। रेखीय रिग्रेसनले विशेषता X र लक्ष्य भेरिएबल y बिचको सम्बन्धहरू भविष्यवाणी गर्छ। के तपाईं [टार्गेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) डायबिटीज डेटासेटको दस्तावेजमा फेला पार्न सक्नुहुन्छ? यो डेटासेटले उक्त लक्ष्यसँग के देखाउँदैछ? -2. अब, यो dataset को एक भाग चयन गरेर plot गर्नुहोस्। dataset को तेस्रो स्तम्भ चयन गर्न `:` अपरेटर प्रयोग गर्नुहोस् सबै पङ्क्तिहरू चयन गर्न, र त्यसपछि तेस्रो स्तम्भ चयन गर्न index (2) प्रयोग गर्नुहोस्। तपाईंले `reshape(n_rows, n_columns)` प्रयोग गरेर डेटा 2D array मा पुनःआकार दिन सक्नुहुन्छ - plot को लागि आवश्यक रूपमा। यदि कुनै parameter -1 हो भने, सम्बन्धित आयाम स्वतः गणना गरिन्छ। +2. अब डेटासेटको एउटा भाग चयन गरेर प्लट गर्न ३rd स्तम्भ चयन गर्नुहोस्। यो गर्न सबै पङ्क्तिहरू `:` प्रयोग गरी छान्न सकिन्छ, र ३rd स्तम्भ इन्डेक्स (2) द्वारा चयन गर्न सकिन्छ। प्लटिङको लागि डेटा २D एर्रेमा `reshape(n_rows, n_columns)` प्रयोग गरी परिवर्तन गर्न सकिन्छ। यदि कुनै एक पैरामीटर -1 हो भने, त्यो आयाम स्वत: गणना हुन्छ। ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ कुनै पनि समयमा, डेटा प्रिन्ट गरेर यसको आकार जाँच गर्नुहोस्। + ✅ जुनसुकै समयमा डेटा प्रिन्ट गरेर यसको आकार जाँच्नुहोस्। -3. अब तपाईंले plot गर्न तयार डेटा पाउनुभएको छ, तपाईं हेर्न सक्नुहुन्छ कि कुनै मेसिनले यस dataset मा संख्याहरूको बीचमा तार्किक विभाजन निर्धारण गर्न मद्दत गर्न सक्छ। यो गर्नको लागि, तपाईंले डेटा (X) र target (y) दुवैलाई परीक्षण र प्रशिक्षण सेटहरूमा विभाजन गर्न आवश्यक छ। Scikit-learn ले यो गर्नको लागि सरल तरिका प्रदान गर्दछ; तपाईंले आफ्नो परीक्षण डेटा निश्चित बिन्दुमा विभाजन गर्न सक्नुहुन्छ। +3. अब तपाईंसँग प्लट गर्न डेटा तयार भएपछि, मेशिनलाई यो डेटासेटका संख्या बीच तार्किक विभाजन निर्धारण गर्न मद्दत गर्ने देख्नुहोस्। यसको लागि, तपाईंलाई डेटा (X) र लक्ष्य (y) दुवैलाई परीक्षण र प्रशिक्षण सेटहरूमा विभाजन गर्न आवश्यक छ। स्कikit-लर्नले यो सजिलै गर्ने तरिका छ; तपाईंले परीक्षण डेटा कुनै निश्चित स्थानमा विभाजन गर्न सक्नुहुन्छ। ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. अब तपाईं आफ्नो मोडेल प्रशिक्षण गर्न तयार हुनुहुन्छ! Linear regression मोडेल लोड गर्नुहोस् र `model.fit()` प्रयोग गरेर आफ्नो X र y प्रशिक्षण सेटहरू प्रयोग गरेर प्रशिक्षण गर्नुहोस्: +4. अब तपाईंको मोडेल प्रशिक्षणका लागि तयार हुनुहोस्! रेखीय रिग्रेसन मोडेल लोड गर्नुहोस् र आफ्नो X र y प्रशिक्षण सेटहरू प्रयोग गरी `model.fit()` प्रयोग गरेर प्रशिक्षण गर्नुहोस्: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` एक function हो जुन तपाईं TensorFlow जस्ता धेरै ML लाइब्रेरीहरूमा देख्नुहुनेछ। + ✅ `model.fit()` एउटा यस्तो फङ्क्शन हो जुन तपाईं धेरै ML लाइब्रेरीहरूमा जस्तै TensorFlow मा पनि देख्नुहुनेछ। -5. त्यसपछि, परीक्षण डेटा प्रयोग गरेर prediction सिर्जना गर्नुहोस्, `predict()` function प्रयोग गरेर। यो डेटा समूहहरू बीचको लाइन कोर्न प्रयोग गरिनेछ। +5. त्यसपछि, परीक्षण डेटा प्रयोग गरेर भविष्यवाणी बनाउन `predict()` फङ्क्शन प्रयोग गर्नुहोस्। यसले मोडेलको डेटा समूहहरू बिच लाइन तान्न प्रयोग हुनेछ। ```python y_pred = model.predict(X_test) ``` -6. अब डेटा plot मा देखाउने समय हो। Matplotlib यो कार्यको लागि धेरै उपयोगी उपकरण हो। सबै X र y परीक्षण डेटा को scatterplot सिर्जना गर्नुहोस्, र मोडेलको डेटा समूहहरूको बीचमा सबैभन्दा उपयुक्त स्थानमा लाइन कोर्न prediction प्रयोग गर्नुहोस्। +6. अब डेटा प्लटमा देखाउन समय भयो। matplotlib यो कार्यका लागि धेरै उपयोगी उपकरण हो। सबै X र y परीक्षण डेटा स्क्याटरप्लट बनाएर, मोडेलका डेटा समूहहरू बिच सबैभन्दा उपयुक्त ठाउँमा भविष्यवाणीले अन्तरगत लाइन खिच्नुहोस्। ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Scikit-learn मा निर्मित [diabetes dataset](https://scikit-lear plt.show() ``` - ![मधुमेह सम्बन्धी datapoints देखाउने scatterplot](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ यहाँ के भइरहेको छ भनेर अलिकति सोच्नुहोस्। धेरै साना डाटाका बिन्दुहरूमा एउटा सीधा रेखा चलिरहेको छ, तर यो वास्तवमा के गरिरहेको छ? के तपाईं देख्न सक्नुहुन्छ कि नयाँ, नदेखिएको डाटा बिन्दु प्लटको y अक्षसँग सम्बन्धित कहाँ फिट हुनुपर्छ भनेर भविष्यवाणी गर्न यो रेखा कसरी प्रयोग गर्न सकिन्छ? यस मोडेलको व्यावहारिक उपयोगलाई शब्दमा व्यक्त गर्न प्रयास गर्नुहोस्। + ![डाइबिटीजलाई घेरिएको डाटापोइन्टहरू देखाउने स्क्याटरप्लट](../../../../translated_images/ne/scatterplot.ad8b356bcbb33be6.webp) + -बधाई छ, तपाईंले आफ्नो पहिलो रेखीय प्रतिगमन मोडेल निर्माण गर्नुभयो, यसबाट भविष्यवाणी गर्नुभयो, र प्लटमा प्रदर्शन गर्नुभयो! + ✅ यहाँ के हुँदैछ भनेर अलिकति सोच्नुहोस्। सिधा रेखा धेरै साना डाटा पोइन्टहरूको माथि जान्छ, तर यो ठीक के गर्दैछ? तपाईले देख्न सक्नुहुन्छ कि यो रेखा प्रयोग गरेर नयाँ, नदेखिएको डाटा पोइन्ट प्लटको y अक्षसँग कसरी सम्बन्धित हुनुपर्छ भनेर पूर्वानुमान गर्न सकिन्छ? यस मोडेलको व्यावहारिक उपयोगलाई शब्दहरूमा व्यक्त गर्न प्रयास गर्नुहोस्। + +बधाई छ, तपाइँले आफ्नो पहिलो रेखीय प्रतिस्थापन मोडेल बनाउनु भयो, यससँग पूर्वानुमान गर्नुभयो, र प्लटमा प्रदर्शन गर्नुभयो! --- ## 🚀चुनौती -यस डेटासेटबाट फरक भेरिएबल प्लट गर्नुहोस्। संकेत: यो लाइन सम्पादन गर्नुहोस्: `X = X[:,2]`। यस डेटासेटको लक्ष्यलाई ध्यानमा राख्दै, मधुमेह रोगको प्रगति बारे तपाईं के पत्ता लगाउन सक्षम हुनुहुन्छ? - -## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) +यो डेटासेटबाट फरक चल (variable) प्लट गर्नुहोस्। संकेत: यो लाइन सम्पादन गर्नुहोस्: `X = X[:,2]`। यस डेटासेटको लक्ष्यको आधारमा, तपाई मधुमेह रोगको प्रगतिको बारेमा के पत्ता लगाउन सक्नुहुन्छ? +## [पाठपश्चात क्विज](https://ff-quizzes.netlify.app/en/ml/) -## समीक्षा र आत्म अध्ययन +## समीक्षा र आत्म-अध्ययन -यस ट्युटोरियलमा, तपाईंले साधारण रेखीय प्रतिगमनसँग काम गर्नुभयो, न कि एकविविध वा बहुविविध रेखीय प्रतिगमनसँग। यी विधिहरूको बीचको भिन्नताहरूको बारेमा अलिकति पढ्नुहोस्, वा [यो भिडियो](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) हेर्नुहोस्। +यस ट्युटोरियलमा, तपाईले सरल रेखीय प्रतिस्थापनसँग काम गर्नुभयो, बहुविमीय वा बहुविध रेखीय प्रतिस्थापनमध्ये होइन। यी विधिहरूबीचको भिन्नता बारे अलिकति पढ्नुहोस्, वा यो [भिडियो](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) हेर्नुहोस्। -प्रतिगमनको अवधारणाको बारेमा थप पढ्नुहोस् र यस प्रविधिले उत्तर दिन सक्ने प्रश्नहरूको प्रकारको बारेमा सोच्नुहोस्। आफ्नो बुझाइलाई गहिरो बनाउन [यो ट्युटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) लिनुहोस्। +प्रतिस्थापनको अवधारणा बारे थप पढ्नुहोस् र सोच्नुहोस् कि यस प्रविधिले कस्ता प्रकारका प्रश्नहरूको उत्तर दिन सक्छ। आफ्नो बुझाइ गाढा बनाउन यो [ट्युटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) लिनुहोस्। -## असाइनमेन्ट +## असाइन्मेन्ट [फरक डेटासेट](assignment.md) --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं। + \ No newline at end of file diff --git a/translations/ne/2-Regression/2-Data/README.md b/translations/ne/2-Regression/2-Data/README.md index 0dedaa9cf..6aa013f15 100644 --- a/translations/ne/2-Regression/2-Data/README.md +++ b/translations/ne/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Scikit-learn प्रयोग गरेर Regression मोडेल बनाउने: डेटा तयार पार्ने र दृश्यात्मक बनाउने +# Scikit-learn प्रयोग गरेर एउटा regression मोडेल बनाउने: डाटा तयार पार्नुहोस् र दृश्य बनाउनुहोस् -![डेटा दृश्यात्मकता इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) +![डेटा दृश्याङ्कन इन्फोग्राफिक](../../../../translated_images/ne/data-visualization.54e56dded7c1a804.webp) -इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded) +इन्फोग्राफिक द्वारा [दासानी मडिपल्ली](https://twitter.com/dasani_decoded) -## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पूर्व-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) -> ### [यो पाठ R मा पनि उपलब्ध छ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## परिचय -अब तपाईं Scikit-learn प्रयोग गरेर मेसिन लर्निङ मोडेल निर्माण गर्न आवश्यक उपकरणहरूसँग तयार हुनुहुन्छ। तपाईं आफ्नो डेटासँग प्रश्न सोध्न र ML समाधानहरू लागू गर्न तयार हुनुहुन्छ। डेटा प्रयोग गर्दा र ML समाधानहरू लागू गर्दा, सही प्रश्न सोध्न जान्नु अत्यन्त महत्त्वपूर्ण छ ताकि तपाईं आफ्नो डेटासेटको सम्भावनाहरू सही रूपमा अनलक गर्न सक्नुहुन्छ। +अब जब तपाईं Scikit-learn सँग मेसिन लर्निङ मोडेल बनाउने उपकरणहरू तयार पारिसक्नुभयो, तपाईं आफ्नो डाटाबाट प्रश्न सोध्न तयार हुनुहुन्छ। डाटासँग काम गर्दा र ML समाधानहरू लागू गर्दा, आफ्नो डेटासेटको सम्भावनाहरू सही तरिकाले अनलक गर्नका लागि सही प्रश्न कसरी सोध्ने भन्ने कुरा बुझ्नु अत्यन्त महत्वपूर्ण छ। -यस पाठमा, तपाईं सिक्नुहुनेछ: +यस पाठमा, तपाईंले सिक्नु हुने छ: -- मोडेल निर्माणका लागि डेटा कसरी तयार गर्ने। -- डेटा दृश्यात्मकताका लागि Matplotlib कसरी प्रयोग गर्ने। +- मोडेल निर्माणको लागि आफ्नो डाटा कसरी तयार गर्ने। +- डाटा दृश्याङ्कनका लागि Matplotlib कसरी प्रयोग गर्ने। +- बढी ब्यक्तिगत डाटा दृश्याङ्कनका लागि Seaborn कसरी प्रयोग गर्ने। -## आफ्नो डेटासँग सही प्रश्न सोध्ने +## आफ्नो डाटा को सही प्रश्न सोध्नुहोस् -तपाईंलाई चाहिएको उत्तरले तपाईंले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्ने निर्धारण गर्दछ। र तपाईंले पाउने उत्तरको गुणस्तर तपाईंको डेटाको प्रकृतिमा धेरै निर्भर गर्दछ। +तपाईँले जवाफ पाउन चाहनुभएको प्रश्नले तपाईँले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्ने निर्धारण गर्नेछ। र तपाईँले फिर्ता पाएको जवाफको गुणस्तर तपाईँको डाटाको प्रकृतिमा धेरै निर्भर हुनेछ। -यस पाठका लागि दिइएको [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) हेर्नुहोस्। तपाईं यो .csv फाइललाई VS Code मा खोल्न सक्नुहुन्छ। छिटो हेर्दा नै देखिन्छ कि यसमा खाली ठाउँहरू छन्, स्ट्रिङ र संख्यात्मक डेटाको मिश्रण छ। त्यहाँ 'Package' नामको एउटा अचम्मको स्तम्भ पनि छ, जहाँ डेटा 'sacks', 'bins' र अन्य मानहरूको मिश्रण छ। वास्तवमा, यो डेटा अलि अस्तव्यस्त छ। +यस पाठको लागि प्रदान गरिएको [डाटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) हेर्नुहोस्। तपाईं यो .csv फाइल VS Code मा खोल्न सक्नुहुन्छ। एक छिटो अवलोकनले देखाउँछ कि त्यहाँ रिक्त स्थानहरू र स्ट्रिङ र संख्यात्मक डाटाको मिश्रण छ। त्यहाँ 'Package' नामक अजीब स्तम्भ पनि छ जहाँ डाटा 'sacks', 'bins' र अन्य मानहरू बीच मिश्रित छ। वास्तवमा, डाटा अलिकति अराजक छ। -[![ML for beginners - डेटासेट विश्लेषण र सफा गर्ने](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटासेट विश्लेषण र सफा गर्ने") +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा तयार गर्ने छोटो भिडियो हेर्नुहोस्। +> 🎥 यस पाठको लागि डाटा तयार गर्ने काम गरी रहेको छोटो भिडियो हेर्न माथिको तस्वीरमा क्लिक गर्नुहोस्। -सामान्यतया, तपाईंलाई पूर्ण रूपमा तयार डेटासेट प्राप्त हुँदैन, जसलाई सीधा ML मोडेल बनाउन प्रयोग गर्न सकिन्छ। यस पाठमा, तपाईंले कच्चा डेटासेटलाई मानक Python पुस्तकालयहरू प्रयोग गरेर कसरी तयार गर्ने सिक्नुहुनेछ। साथै, डेटा दृश्यात्मक बनाउन विभिन्न प्रविधिहरू पनि सिक्नुहुनेछ। +वास्तवमा, पूर्ण रूपमा प्रयोग गर्न तयार गरिएका डेटासेट कडाइले पाउनु सामान्य कुरा होइन। यस पाठमा, तपाईं सामान्य Python लाइब्रेरीहरू प्रयोग गरेर कच्चा डेटासेट कसरी तयार गर्ने सिक्ने हुनुहुन्छ। तपाईंले डाटा दृश्याङ्कनका विभिन्न प्रविधिहरू पनि सिक्नुहुनेछ। -## केस अध्ययन: 'कद्दू बजार' +## केस अध्ययन: 'कद्दु बजार' -यस फोल्डरमा, तपाईंलाई [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामक .csv फाइल फोल्डरको `data` रुटमा भेट्नुहुनेछ। यसमा कद्दू बजारको बारेमा 1757 पङ्क्तिहरूको डेटा समावेश छ, जुन शहरअनुसार समूहमा वर्गीकृत गरिएको छ। यो डेटा [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) बाट निकालिएको हो, जुन संयुक्त राज्यको कृषि विभागद्वारा वितरण गरिएको हो। +यस फोल्डरमा तपाईँले `data` रुट फोल्डरमा रहेको [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामको .csv फाइल फेला पार्नेछ जुन कद्दुहरूको बजारका बारेमा शहर अनुसार वर्गीकृत गरी १७५७ पङ्क्तिहरू समावेश गर्दछ। यो कच्चा डाटा संयुक्त राज्य कृषि विभागबाट वितरण गरिएको [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) बाट निकालेको हो। -### डेटा तयार पार्दै +### डाटा तयार पार्दै -यो डेटा सार्वजनिक डोमेनमा छ। यसलाई USDA वेबसाइटबाट प्रत्येक शहरका लागि छुट्टाछुट्टै फाइलहरूमा डाउनलोड गर्न सकिन्छ। धेरै छुट्टाछुट्टै फाइलहरूबाट बच्नका लागि, हामीले सबै शहरको डेटा एक स्प्रेडशीटमा जोड्यौं। यसरी, हामीले डेटा पहिले नै _थोरै तयार_ गरिसकेका छौं। अब, डेटा नजिकबाट हेरौं। +यो डाटा सार्वजनिक डोमेनमा छ। यसलाई USDA वेबसाइटबाट प्रत्येक शहरका लागि धेरै अलग फाइलहरूमा डाउनलोड गर्न सकिन्छ। धेरै अलग फाइलहरूबाट बच्न हामीले सबै शहरको डेटा एक स्प्रेडशीटमा समेटेका छौं, त्यसैले डाटा पहिले नै अलिकति _तयार_ गरिएको छ। अब डाटा नजिकबाट हेर्नेछौं। -### कद्दू डेटा - प्रारम्भिक निष्कर्ष +### कद्दु डाटा - प्रारम्भिक निष्कर्षहरू -तपाईंले यस डेटामा के देख्नुभयो? तपाईंले पहिले नै देख्नुभयो कि यसमा स्ट्रिङ, नम्बर, खाली ठाउँ र अचम्मका मानहरूको मिश्रण छ, जसलाई बुझ्न आवश्यक छ। +यस डाटामा तपाईंले के देख्नुभयो? तपाईंले पहिले नै देख्नुभएको छ कि त्यहाँ स्ट्रिङहरू, अंकहरू, रिक्त स्थानहरू र अर्थ लगाउनुपर्ने अजीब मानहरू मिश्रित छन्। -Regression प्रविधि प्रयोग गरेर तपाईं यस डेटाबाट कुन प्रश्न सोध्न सक्नुहुन्छ? "दिइएको महिनामा बिक्रीका लागि कद्दूको मूल्यको भविष्यवाणी गर्नुहोस्" भन्ने प्रश्न कस्तो होला? फेरि डेटालाई हेर्दा, तपाईंले यो कार्यका लागि आवश्यक डेटा संरचना बनाउन केही परिवर्तन गर्नुपर्नेछ। +Regression प्रविधि प्रयोग गरेर यो डाटाबाट कुन प्रश्न सोध्न सकिन्छ? "दिइएको महिनामा बिक्रीको लागि कद्दुको मूल्य भविष्यवाणी गर्नुहोस्" कस्तो हुन्छ? डाटामा फेरि हेर्दा, कार्यका लागि आवश्यक डाटा संरचना बनाउन केही परिवर्तनहरू गर्नुपर्ने छ। +## अभ्यास - कद्दु डाटा विश्लेषण गर्नुहोस् -## अभ्यास - कद्दू डेटा विश्लेषण गर्नुहोस् +हामी [Pandas](https://pandas.pydata.org/) (नाम `Python Data Analysis` को लागि हो) प्रयोग गर्नेछौं, जुन डेटा आकार दिने काममा धेरै उपयोगी उपकरण हो, यस कद्दु डाटालाई विश्लेषण र तयारी गर्नका लागि। -आउनुहोस्, [Pandas](https://pandas.pydata.org/) प्रयोग गरौं, (यसको नाम `Python Data Analysis` बाट आएको हो) जुन डेटा आकार दिनका लागि धेरै उपयोगी उपकरण हो, र यस कद्दू डेटालाई विश्लेषण र तयार गरौं। +### पहिले, हराएका मिति जाँच गर्नुहोस् -### पहिलो, हराएका मितिहरू जाँच गर्नुहोस् +तपाईंले पहिले हराएका मिति जाँच्न कदमहरू लिनु आवश्यक हुनेछ: -तपाईंले पहिले हराएका मितिहरू जाँच गर्नका लागि केही कदम चाल्नुपर्नेछ: +१. मितिहरूलाई महिना फाराम्याटमा रूपान्तरण गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले फारम्याट `MM/DD/YYYY` हो)। +२. नयाँ स्तम्भमा महिना निकाल्नुहोस्। -1. मितिहरूलाई महिना ढाँचामा रूपान्तरण गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले ढाँचा `MM/DD/YYYY` हो)। -2. नयाँ स्तम्भमा महिना निकाल्नुहोस्। +Visual Studio Code मा _notebook.ipynb_ फाइल खोल्नुहोस् र स्प्रेडशीट नयाँ Pandas डाटा फ्रेममा आयात गर्नुहोस्। -_नोटबुक.ipynb_ फाइललाई Visual Studio Code मा खोल्नुहोस् र स्प्रेडशीटलाई नयाँ Pandas dataframe मा आयात गर्नुहोस्। - -1. `head()` फङ्क्सन प्रयोग गरेर पहिलो पाँच पङ्क्तिहरू हेर्नुहोस्। +१. पहिलो पाँच पङ्क्तिहरू हेर्न `head()` फङ्सन प्रयोग गर्नुहोस्। ```python import pandas as pd @@ -64,30 +64,30 @@ _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा ख pumpkins.head() ``` - ✅ कुन फङ्क्सन प्रयोग गरेर अन्तिम पाँच पङ्क्तिहरू हेर्न सकिन्छ? + ✅ पछिल्ला पाँच पङ्क्तिहरू हेर्न कुन फङ्सन प्रयोग गर्नुहुन्छ? -1. हालको dataframe मा हराएको डेटा छ कि छैन जाँच गर्नुहोस्: +१. हालको डाटा फ्रेममा कुनै हराएको डेटा छ कि छैन जाँच गर्नुहोस्: ```python pumpkins.isnull().sum() ``` - हराएको डेटा छ, तर यो कार्यका लागि सायद महत्त्वपूर्ण नहोला। + केही डेटा हराएको छ, तर सायद यो यहाँको कार्यका लागि मतलब राख्दैन। -1. आफ्नो dataframe लाई सजिलो बनाउन, `loc` फङ्क्सन प्रयोग गरेर तपाईंलाई चाहिने स्तम्भहरू मात्र चयन गर्नुहोस्। `:` ले सबै पङ्क्तिहरूलाई जनाउँछ। +१. तपाईँको डाटा फ्रेमसँग काम गर्न सजिलो बनाउनका लागि आवश्यक स्तम्भ मात्र चयन गर्नुहोस्, `loc` फङ्सन प्रयोग गरेर जसले मूल डाटा फ्रेमबाट पङ्क्तिहरू (पहिलो प्यारामिटर) र स्तम्भहरू (दोस्रो प्यारामिटर) निकाल्छ। तलको अभिव्यक्तिमा `:` को अर्थ "सबै पङ्क्तिहरू" हो। ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### दोस्रो, कद्दूको औसत मूल्य निर्धारण गर्नुहोस् +### दोस्रो, कद्दुको औसत मूल्य निर्धारण गर्नुहोस् -दिइएको महिनामा कद्दूको औसत मूल्य निर्धारण गर्न सोच्नुहोस्। यस कार्यका लागि कुन स्तम्भहरू चयन गर्नुहुन्छ? संकेत: तपाईंलाई ३ स्तम्भहरू चाहिन्छ। +दिइएको महिनामा कद्दुको औसत मूल्य कसरी निर्धारण गर्ने बारे सोच्नुहोस्। कुन स्तम्भहरू तपाईंले कार्यका लागि छनौट गर्नुहुन्छ? संकेत: तपाईंलाई ३ स्तम्भहरू चाहिन्छ। -समाधान: `Low Price` र `High Price` स्तम्भहरूको औसत लिएर नयाँ Price स्तम्भमा राख्नुहोस्, र Date स्तम्भलाई मात्र महिना देखाउने गरी रूपान्तरण गर्नुहोस्। माथिको जाँच अनुसार, मिति वा मूल्यहरूको लागि हराएको डेटा छैन। +समाधान: `Low Price` र `High Price` स्तम्भहरूको औसत लिएर नयाँ मूल्य स्तम्भ भर्नुहोस्, र मिति स्तम्भलाई केवल महिना देखाउने गरी रूपान्तरण गर्नुहोस्। सौभाग्यवश, माथिको जाँच अनुसार, मिति वा मूल्यहरूको लागि कुनै हराएको डेटा छैन। -1. औसत गणना गर्न, निम्न कोड थप्नुहोस्: +१. औसत गणना गर्न निम्न कोड थप्नुहोस्: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा ख ``` - ✅ कुनै पनि डेटा जाँच गर्न `print(month)` प्रयोग गर्न स्वतन्त्र महसुस गर्नुहोस्। + ✅ तपाईँ आफूले जाँच गर्न चाहनुभएको कुनैपनि डाटा `print(month)` प्रयोग गरेर प्रिन्ट गर्न सक्नुहुन्छ। -2. अब, आफ्नो रूपान्तरण गरिएको डेटा नयाँ Pandas dataframe मा प्रतिलिपि गर्नुहोस्: +२. अब, आफ्नो रूपान्तरित डाटा नयाँ Pandas डाटा फ्रेममा कपी गर्नुहोस्: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - आफ्नो dataframe प्रिन्ट गर्दा, तपाईंले सफा र व्यवस्थित डेटासेट देख्नुहुनेछ, जसमा तपाईं नयाँ regression मोडेल निर्माण गर्न सक्नुहुन्छ। + आफ्नो डाटा फ्रेम प्रिन्ट गर्दा तपाईंलाई सफा, व्यवस्थित डाटासेट देखिनेछ जसमा नयाँ regression मोडेल बनाउन सकिन्छ। -### तर पर्खनुहोस्! यहाँ केही अचम्मको कुरा छ +### तर पर्खनुहोस्! यहाँ केही अजीब छ -यदि तपाईं `Package` स्तम्भलाई हेर्नुहुन्छ भने, कद्दूहरू धेरै फरक कन्फिगरेसनमा बेचिन्छन्। केही '1 1/9 bushel' मा, केही '1/2 bushel' मा, केही प्रति कद्दू, केही प्रति पाउन्ड, र केही ठूला बक्सहरूमा बेचिन्छन्। +यदि तपाईंले `Package` स्तम्भ हेर्नुभयो भने, कद्दुहरू धेरै विभिन्न तरिकाले बेचिन्छन्। केही '1 1/9 bushel' मापनमा, केही '1/2 bushel' मापनमा, केही प्रति कद्दु, केही प्रति पाउण्ड, र केही फरक फरक चौडाइ भएका ठूलो बक्समा बेचिन्छन्। -> कद्दूलाई स्थिर रूपमा तौल गर्न गाह्रो देखिन्छ +> कद्दुहरूलाई स्थिर रूपमा तौल्न निकै गाह्रो देखिन्छ -मूल डेटामा हेर्दा, `Unit of Sale` 'EACH' वा 'PER BIN' भएका वस्तुहरूमा `Package` प्रकार इन्च, बिन, वा 'each' हुन्छ। कद्दूलाई स्थिर रूपमा तौल गर्न गाह्रो देखिन्छ, त्यसैले `Package` स्तम्भमा 'bushel' स्ट्रिङ भएका कद्दूहरू मात्र चयन गरेर फिल्टर गरौं। +मूल डेटामा हेर्दा, `Unit of Sale` 'EACH' वा 'PER BIN' बराबर भएका datाहरूमा `Package` प्रकार इन्च अनुसार, बिन अनुसार, वा 'each' रहेको देखिन्छ। कद्दुहरूलाई स्थिर रूपमा तौल्न निकै गाह्रो हुन्छ, त्यसैले हामी 'bushel' स्ट्रिङ भएका कद्दुहरू मात्र चयन गरेर फिल्टर गर्नेछौं। -1. .csv आयातको सुरुमा फिल्टर थप्नुहोस्: +१. फाइलको सुरूमा, प्रारम्भिक .csv आयात अन्तर्गत फिल्टर थप्नुहोस्: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - अब डेटा प्रिन्ट गर्दा, तपाईंले 'bushel' भएका करिब 415 पङ्क्तिहरू मात्र देख्नुहुनेछ। + यदि तपाईं अहिले डाटा प्रिन्ट गर्नु हुन्छ भने, तपाईंले केवल बसल अनुसारका ४१५ भन्दा बढि पङ्क्तिहरू देख्नुहुनेछ। -### तर पर्खनुहोस्! अझै केही गर्न बाँकी छ +### तर पर्खनुहोस्! अर्को केहि गर्ने छ -के तपाईंले देख्नुभयो कि प्रत्येक पङ्क्तिमा bushel को मात्रा फरक छ? तपाईंले मूल्यलाई प्रति bushel सामान्यीकृत गर्न आवश्यक छ, त्यसैले मूल्यलाई मानकीकरण गर्न केही गणना गर्नुहोस्। +के तपाईंले नोट गर्नुभयो कि बसल मात्र पङ्क्तिअनुसार फरक हुन्छ? मूल्य निर्धारणलाई सामान्य बनाउनु आवश्यक छ ताकि तपाईं बसल प्रति मूल्य देखाउन सक्नुहोस्, त्यसैले केही गणना गरी मानकीकरण गर्नुहोस्। -1. नयाँ_pumpkins dataframe बनाउने ब्लकपछि यी लाइनहरू थप्नुहोस्: +१. नयाँ_pumpkins डाटा फ्रेम सिर्जना गर्ने ब्लक पछि यी पङ्क्तिहरू थप्नुहोस्: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा ख new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) अनुसार, bushel को तौल उत्पादनको प्रकारमा निर्भर गर्दछ, किनभने यो भोल्युम मापन हो। "टमाटरको bushel, उदाहरणका लागि, 56 पाउन्ड तौल हुनुपर्छ... पात र हरियो सागले बढी ठाउँ लिन्छन् तर कम तौल हुन्छ, त्यसैले पालुङ्गोको bushel मात्र 20 पाउन्ड हुन्छ।" यो सबै धेरै जटिल छ! bushel-to-pound रूपान्तरण नगरी, प्रति bushel मूल्य निर्धारण गरौं। कद्दूको bushel को अध्ययनले देखाउँछ कि तपाईंको डेटाको प्रकृति बुझ्न कति महत्त्वपूर्ण छ! +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) अनुसार, बसलको तौल उत्पादनको प्रकारमा निर्भर हुन्छ, किनकि यो मात्रा मापन हो। "उदाहरणका लागि टमाटरको बसल supposed to weigh 56 pounds... पातहरू र हरियो पातले कम तौलमा अधिक ठाउँ ओगट्छन्, त्यसैले स्पिन्याचको बसल मात्र 20 पाउण्ड हुन्छ।" यो सबै अलि जटिल छ! बसल देखि पाउण्ड रूपान्तरण नगरी बसल अनुसार मूल्य निर्धारण गर्न छोडौं। यस कद्दु बसलहरूको अध्ययनले तपाईंको डाटाको प्रकृति बुझ्न कत्तिको महत्त्वपूर्ण छ भन्ने देखाउँछ! -अब, तपाईं bushel मापनको आधारमा प्रति एकाइ मूल्य विश्लेषण गर्न सक्नुहुन्छ। डेटा फेरि प्रिन्ट गर्दा, तपाईंले यसलाई मानकीकृत देख्नुहुनेछ। +अब तपाईं बसल मापनको आधारमा मूल्य निर्धारण विश्लेषण गर्न सक्नुहुन्छ। यदि तपाईं डाटा फेरि प्रिन्ट गर्नुहुन्छ, तपाईंले कसरि यो मानकीकृत भएको देख्न सक्नुहुन्छ। -✅ के तपाईंले देख्नुभयो कि आधा-bushel मा बेचिएका कद्दूहरू धेरै महँगा छन्? किन यस्तो होला? संकेत: साना कद्दूहरू ठूला कद्दूहरूभन्दा धेरै महँगा हुन्छन्, सायद किनभने प्रति bushel धेरै साना कद्दूहरू हुन्छन्, जबकि ठूला कद्दूहरूले धेरै ठाउँ लिन्छन्। +✅ के तपाईंले नोट गर्नुभयो कि आधा बसलमा बेचिएका कद्दुहरू धेरै महँगो छन्? के तपाईं कारण थाहा पाउन सक्नुहुन्छ? संकेत: सानो कद्दुहरू ठूलो भन्दा धेरै महँगो हुन सक्छ, सम्भवतः किनभने ठूलो खाली पाई कद्दुले एक बसलमा धेरै कम संख्यामा कद्दुहरू समेट्छ, सानो धेरै हुन्छ। -## दृश्यात्मकता रणनीतिहरू +## दृश्यांकन रणनीतिहरू -डेटा वैज्ञानिकको भूमिकाको एक हिस्सा भनेको उनीहरूले काम गरिरहेको डेटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यात्मकता, जस्तै प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डेटाका विभिन्न पक्षहरू देखाउँछ। यसरी, उनीहरूले दृश्यात्मक रूपमा सम्बन्ध र खाडलहरू देखाउन सक्छन्, जुन अन्यथा पत्ता लगाउन गाह्रो हुन्छ। +डाटा वैज्ञानिकको भूमिकाको एक भाग भनेको उनीहरूले काम गरिरहेका डाटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यांकनहरू, वा प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डाटाका विभिन्न पक्षहरू देखाउँछन्। यस तरिकाले, उनीहरूले दृश्यरूपमा सम्बन्धहरू र खाली ठाउँहरू देखाउन सक्षम हुन्छन् जुन अन्यथा भेट्न गाह्रो हुन्छ। -[![ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता") +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा दृश्यात्मकता गर्ने छोटो भिडियो हेर्नुहोस्। +> 🎥 यस पाठको लागि डाटा दृश्याङ्कन गर्दै गरेको छोटो भिडियो हेर्न माथिको तस्वीरमा क्लिक गर्नुहोस्। -दृश्यात्मकताले मेसिन लर्निङ प्रविधि निर्धारण गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि scatterplot ले रेखा पछ्याएजस्तो देखिन्छ भने, डेटा linear regression अभ्यासका लागि उपयुक्त छ। +दृश्यांकनहरूले कुन मेसिन लर्निङ प्रविधि डाटाको लागि सबैभन्दा उपयुक्त छ निर्धारण गर्नमा मद्दत गर्न सक्छ। उदाहरणका लागि, कुनै स्क्याटरप्लटले लाइनको अनुसरण गर्दै देखियो भने, यो संकेत हो कि डाटा रेखीय regression अभ्यासको लागि राम्रो उम्मेदवार हुन सक्छ। -Jupyter notebooks मा राम्रोसँग काम गर्ने डेटा दृश्यात्मकता पुस्तकालय [Matplotlib](https://matplotlib.org/) हो (जसलाई तपाईंले अघिल्लो पाठमा पनि देख्नुभयो)। +Jupyter नोटबुकहरूमा राम्रोसँग काम गर्ने एउटा डाटा दृश्यांकन पुस्तकालय [Matplotlib](https://matplotlib.org/) हो (जुन तपाईंले अघिल्लो पाठमा पनि देख्नुभयो)। -> डेटा दृश्यात्मकतामा थप अनुभव लिन [यी ट्युटोरियलहरू](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) हेर्नुहोस्। +> डाटा दृश्याङ्कनमा अझ अनुभव पाउन [यी ट्यूटोरियलहरू](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) हेर्नुहोस्। ## अभ्यास - Matplotlib सँग प्रयोग गर्नुहोस् -तपाईंले भर्खरै सिर्जना गर्नुभएको नयाँ dataframe प्रदर्शन गर्न केही आधारभूत प्लटहरू बनाउन प्रयास गर्नुहोस्। आधारभूत लाइन प्लटले के देखाउँछ? +तपाईंले हालै सिर्जना गरेको नयाँ डाटा फ्रेम प्रदर्शन गर्न केहि आधारभूत प्लटहरू बनाउन प्रयास गर्नुहोस्। आधारभूत लाइन प्लटले के देखाउनेछ? -1. फाइलको माथि, Pandas आयात अन्तर्गत Matplotlib आयात गर्नुहोस्: +१. फाइलको माथि, Pandas आयात मुनि Matplotlib आयात गर्नुहोस्: ```python import matplotlib.pyplot as plt ``` -1. सम्पूर्ण notebook पुन: चलाउनुहोस्। -1. notebook को तल, डेटालाई बक्सको रूपमा प्लट गर्न एउटा सेल थप्नुहोस्: +१. सम्पूर्ण नोटबुक फेरि चलाउनुहोस्। +१. नोटबुकको तल, डाटालाई बक्सको रूपमा प्लट गर्ने एउटा सेल थप्नुहोस्: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Jupyter notebooks मा राम्रोसँग काम गर्ने plt.show() ``` - ![मूल्य र महिनाको सम्बन्ध देखाउने scatterplot](../../../../2-Regression/2-Data/images/scatterplot.png) + ![मूल्य देखि महिना सम्बन्ध देखाउने स्क्याटरप्लट](../../../../translated_images/ne/scatterplot.b6868f44cbd2051c.webp) - के यो उपयोगी प्लट हो? यसले तपाईंलाई के अचम्मित गराउँछ? + के यो उपयोगी प्लट हो? के यसमा केही तपाईंलाई अचम्म लाग्यो? - यो विशेष रूपमा उपयोगी छैन, किनभने यसले तपाईंको डेटालाई महिनामा बिन्दुहरूको रूपमा मात्र देखाउँछ। + यो त्यति उपयोगी छैन किनकि यसले तपाईंको डाटालाई दिइएको महिनामा पोइन्टहरूको फैलावटमा मात्र देखाउँछ। ### यसलाई उपयोगी बनाउनुहोस् -चार्टहरूले उपयोगी डेटा प्रदर्शन गर्न, तपाईंले प्रायः डेटालाई कुनै न कुनै रूपमा समूह गर्न आवश्यक पर्छ। y अक्षले महिनाहरू देखाउने र डेटा वितरण प्रदर्शन गर्ने प्लट सिर्जना गरौं। +चार्टहरूलाई उपयोगी डाटा देखाउन, तपाईं प्रायः डाटालाई कसैले सँगठित गर्नुपर्छ। हामी यस्तो प्लट बनाउन प्रयास गरौं जहाँ y अक्षहरू महिना देखाउँछन् र डाटाले डाटा वितरण प्रदर्शन गर्दछ। -1. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्: +१. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![मूल्य र महिनाको सम्बन्ध देखाउने बार चार्ट](../../../../2-Regression/2-Data/images/barchart.png) + ![मूल्य देखि महिना सम्बन्ध देखाउने बार चार्ट](../../../../translated_images/ne/barchart.a833ea9194346d76.webp) + + यो बढी उपयोगी डाटा दृश्याङ्कन हो! यसले देखाउँछ कि कद्दुहरूको सबैभन्दा उच्च मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षामा मिल्छ? किन वा किन होइन? + +## अभ्यास - Seaborn सँग प्रयोग गर्नुहोस् + +Matplotlib शक्तिशाली छ, तर परिष्कृत चार्ट बनाउन धेरै कोड चाहिन्छ। [Seaborn](https://seaborn.pydata.org/) Matplotlib माथि बनेको लाइब्रेरी हो जुन सांख्यिकीय डाटा दृश्याङ्कनको लागि डिज़ाइन गरिएको हो। यसले Pandas डाटा फ्रेमसँग सिधै काम गर्छ, आकर्षक डिफल्ट शैलीहरू लागू गर्छ, र कम कोडमा सूचनात्मक प्लटहरू सिर्जना गर्न अनुमति दिन्छ। Seaborn ले Matplotlib वस्तुहरू फर्काउने भएकाले, तपाईंले पहिले सिकेका सबै Matplotlib उपकरणहरू नतिजा परिमार्जन गर्न सक्नुहुन्छ। + +> यदि तपाईंले Seaborn इन्स्टल गर्नुभएको छैन भने, `pip install seaborn` संग इन्स्टल गर्नुहोस्। + +१. नोटबुकको माथि, अन्य आयातहरू मुनि Seaborn आयात गर्नुहोस्। यसलाई सामान्यतः `sns` को रुपमा आयात गरिन्छ: + + ```python + import seaborn as sns + ``` + +### सम्बन्धहरू देखाउन स्क्याटर प्लटहरू + +मोडेल निर्माण अघि डेटा अन्वेषणको ठूलो भाग _सम्बन्धहरू_ खोज्नु हो। [स्क्याटर प्लट](https://en.wikipedia.org/wiki/Scatter_plot) यसका लागि उत्तम उपकरणहरूमध्ये एक हो: यदि पोइन्टहरूले लाइन पछ्याउँदै देखिए भने, दुई भेरिएबलहरू सम्वन्धित हुन सक्छन्, जसले रेखीय regression मोडेल सम्भव बनाउँछ। + +१. पहिले जस्तै मूल्य-देखि-महिना स्क्याटर प्लट पुनः सिर्जना गर्नुहोस्, यसपटक Seaborn को [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (संबंधित प्लट) प्रयोग गरेर जुन तपाईंको डाटा फ्रेम स्तम्भहरूसँग सिधै काम गर्छ: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![मूल्य देखि महिना सम्बन्ध देखाउने Seaborn स्क्याटरप्लट](../../../../translated_images/ne/relplot.a03837d8f0329cec.webp) + + देख्नुहोस् कसरी तपाईंले _स्तम्भ नामहरू_ र डाटा फ्रेम पास गर्नुहुन्छ, र Seaborn ले अक्ष लेबलहरू आफैं नियन्त्रित गर्छ। + +२. `kind="line"` पास गरेर लाइन प्लटमा पनि स्विच गर्न सक्नुहुन्छ। Seaborn ले लाइन वरिपरि विश्वास अन्तराल देखाउन छायांकन पनि बनाउँछ: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![मूल्य देखि महिना सम्बन्ध देखाउने Seaborn लाइन प्लट](../../../../translated_images/ne/lineplot.f9034ba47b1e30ee.webp) + + यो विशेष डाटा धेरै आवाजयुक्त छ, त्यसैले लाइन प्लट सबभन्दा स्पष्ट विकल्प होइन — तर यसले देखाउँछ कि Seaborn मा चार्ट प्रकारहरू सजिलै परिवर्तन गर्न सकिन्छ। + +### वितरण देखाउन बार चार्टहरू + + +पहिले तपाईंले म्यानुअली डाटा समूह बनाउनु भएको थियो Matplotlib को साथ बार चार्ट बनाउन। Seaborn को [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (श्रेणीगत प्लट) तपाईंको लागि समूह बनाउने र संग्रह गर्ने काम गर्न सक्छ। पूर्वनिर्धारित रूपमा `kind="bar"` प्रत्येक श्रेणीको औसत देखाउँछ साथै विश्वास अन्तराल संकेत गर्ने कालो रेखा देखाउँछ। + +1. एक महिनाको औसत मूल्यको बार चार्ट बनाउनुहोस्: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/ne/catplot.e73fc35fdf96242b.webp) + + यसले Matplotlib सँग तपाईंले देख्नुभएको कुरा पुष्टि गर्छ — मूल्यहरू सेप्टेम्बर र अक्टोबरमा उच्च हुन्छन् — तर Seaborn ले प्रत्येक महिनाभित्र मूल्य कति _भिन्न_ हुन्छ भन्ने पनि देखाउँछ। + +### सहसम्बन्धहरू देखाउनका लागि हीटम्यापहरू + +स्क्याटर प्लटहरूले एक पटकमा दुई भेरिएबलहरूको तुलना गर्छ। जब तपाईंसँग धेरै संख्यात्मक स्तम्भहरू हुन्छन्, तब [हीटम्याप](https://en.wikipedia.org/wiki/Heat_map) ले तपाइँलाई एकैचोटी हरेक स्तम्भ जोडिएको सम्बन्धको शक्ति हेर्न अनुमति दिन्छ। यो मोडेलमा के खुवाउने चुनौति गर्नु अघि सबैभन्दा बढी सहसम्बन्ध भएका विशेषताहरू पत्ता लगाउने सामान्य तरिका हो (र यसै किसिमको चार्ट पछि वर्गीकरणमा भ्रम म्याट्रिक्स देखाउन प्रयोग गरिन्छ)। + +1. Pandas को साथ सहसम्बन्ध म्याट्रिक्स बनाउनुहोस्, त्यसपछि Seaborn को [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) प्रयोग गरी यस्तो बनाउनुहोस्। `annot=True` विकल्पले प्रत्येक सेलमा सहसम्बन्ध मानहरू प्रिन्ट गर्छ: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/ne/heatmap.bd98dce43b404c57.webp) + + `1` (वा `-1`) नजिकका मूल्यहरूले स्तम्भहरूलाई बलियो _रेखीय_ रूपमा सहसम्बन्धित जनाउँछ। ध्यान दिनुहोस् कि `Low Price` र `High Price` लगभग पूर्ण रूपमा सहसम्बन्धित छन्। अर्कोतर्फ `Month` ले मूल्यसँग केवल कमजोर रेखीय सहसम्बन्ध देखाउँछ — यद्यपि माथिको बार चार्टले सेप्टेम्बर र अक्टोबरमा स्पष्ट मौसमी शिखर देखाएको छ। यो एक महत्त्वपूर्ण पाठ हो: सहसम्बन्ध गुणांकले केवल _सिधा रेखा_ सम्बन्ध मात्र मापन गर्दछ, त्यसैले यसले मौसमी वा अन्य गैर-रेखीय ढाँचाहरू छुटाउन सक्छ। ✅ किन त्यो उपयोगी हुन्छ कि तपाईंले प्रयोग गर्न कुन स्तम्भहरू छान्नु भन्दा पहिले हीटम्याप *र* बार जस्ता चार्टहरू दुवै हेर्नु आवश्यक छ? + +### Matplotlib वा Seaborn? + +दुवै पुस्तकालयहरू जान्न योग्य छन्: + +- **Matplotlib** ले चार्टका हरेक तत्वमा सूक्ष्म नियन्त्रण दिन्छ र लगभग सबै अन्य Python प्लटिङ पुस्तकालयहरूको आधार हो। +- **Seaborn** उच्च स्तरीय कार्यहरू र आकर्षक पूर्वनिर्धारित सेटिङहरू प्रदान गर्छ, सिधै डेटा फ्रेमहरूसँग काम गर्छ, र एक्सप्लोरेटरी डेटा विश्लेषणका लागि प्रायः छिटो हुन्छ। - यो उपयोगी डेटा दृश्यात्मकता हो! यसले संकेत गर्छ कि कद्दूको सबैभन्दा उच्च मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षासँग मेल खान्छ? किन वा किन होइन? +एउटा सामान्य कार्यप्रवाह भनेको छिटो डाटा अन्वेषण गर्न Seaborn प्रयोग गर्नु र पछि विवरणहरू अनुकूलन गर्न Matplotlib मा जानु हो। --- -## 🚀 चुनौती +## 🚀चुनौती -Matplotlib ले प्रदान गर्ने विभिन्न प्रकारका दृश्यात्मकता अन्वेषण गर्नुहोस्। Regression समस्याहरूका लागि कुन प्रकारका दृश्यात्मकता सबैभन्दा उपयुक्त छन्? +Matplotlib र Seaborn ले प्रदान गर्ने विभिन्न प्रकारका भिजुअलाइजेशनहरू अन्वेषण गर्नुहोस्। कुन प्रकारहरू रिग्रेसन समस्याहरूका लागि सबैभन्दा उपयुक्त छन्? -## [पाठपछि क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) -## समीक्षा र आत्म-अध्ययन +## समीक्षा र स्व-अध्ययन -डेटा दृश्यात्मकताका विभिन्न तरिकाहरू हेर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन प्रकारका कार्यहरूको लागि कुन पुस्तकालय सबैभन्दा उपयुक्त छ भनेर नोट गर्नुहोस्, जस्तै 2D दृश्यात्मकता बनाम 3D दृश्यात्मकता। तपाईंले के पत्ता लगाउनुहुन्छ? +डाटालाई दृश्यात्मक बनाउन विभिन्न तरिकाहरूलाई अवलोकन गर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन-कुन कार्यका लागि कुन सब भन्दा राम्रो हुन्छ खुलाउनुहोस्, जस्तै 2D भिजुअलाइजेशनहरू र 3D भिजुअलाइजेशनहरू। के पत्ता लगाउनु भयो? -## असाइनमेन्ट +## गृहकार्य -[दृश्यात्मकता अन्वेषण गर्दै](assignment.md) +[भिजुअलाइजेशन अन्वेषण](assignment.md) --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं। + \ No newline at end of file diff --git a/translations/ne/2-Regression/2-Data/solution/notebook.ipynb b/translations/ne/2-Regression/2-Data/solution/notebook.ipynb index eb60740c4..95bfa5a4f 100644 --- a/translations/ne/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/ne/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## पम्पकिनको लागि रैखिक प्रतिगमन - पाठ २\n" + ] }, { "cell_type": "code", @@ -220,6 +222,7 @@ "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", "\n", "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n", @@ -383,18 +386,78 @@ "plt.ylabel(\"Pumpkin Price\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Seaborn सँग दृश्यावलोकन\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) Matplotlib माथि बनेको छ र डेटा फ्रेमहरूसँग सिधा काम गर्छ, जसले थोरै कोडमा आकर्षक सांख्यिकीय चित्रहरू छिटो तयार पार्न मद्दत गर्दछ।\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### सम्बन्धहरू देखाउनका लागि स्क्याटर प्लटहरू\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### वितरण देखाउन बार चार्टहरू \n" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**अस्वीकरण**: \nयो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।\n" + "### सम्बन्धहरू देखाउनको लागि हीटम्यापहरू\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n", + "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n\n\n**अस्वीकरण**:\nयो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-08-29T19:02:50+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "ne" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ne/8-Reinforcement/1-QLearning/README.md b/translations/ne/8-Reinforcement/1-QLearning/README.md index bec19a070..a89b8b3ac 100644 --- a/translations/ne/8-Reinforcement/1-QLearning/README.md +++ b/translations/ne/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# परिचय: रिइन्फोर्समेन्ट लर्निङ र Q-लर्निङ +# सुदृढीकरण शिक्षण र Q-शिक्षणमा परिचय -![मेसिन लर्निङमा रिइन्फोर्समेन्टको सारांश स्केच नोटमा](../../../../sketchnotes/ml-reinforcement.png) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा +![मेसिन शिक्षणमा सुदृढीकरणको संक्षेप स्केचनोट](../../../../translated_images/ne/ml-reinforcement.94024374d63348db.webp) +> स्केचनोट द्वारा [तोमоми इमुरा](https://www.twitter.com/girlie_mac) -रिइन्फोर्समेन्ट लर्निङ तीन महत्त्वपूर्ण अवधारणाहरूमा आधारित छ: एजेन्ट, केही अवस्थाहरू, र प्रत्येक अवस्थाका लागि कार्यहरूको सेट। कुनै निर्दिष्ट अवस्थामा कार्य सम्पादन गर्दा, एजेन्टलाई पुरस्कार दिइन्छ। फेरि कम्प्युटर गेम सुपर मारियोको कल्पना गर्नुहोस्। तपाईं मारियो हुनुहुन्छ, तपाईं गेमको स्तरमा हुनुहुन्छ, चट्टानको छेउमा उभिएको। तपाईंको माथि एउटा सिक्का छ। तपाईं मारियो हुनुहुन्छ, गेमको स्तरमा, एक विशिष्ट स्थानमा ... यो तपाईंको अवस्था हो। दायाँतिर एक कदम चाल्नु (एक कार्य) तपाईंलाई चट्टानबाट तल लैजान्छ, र यसले तपाईंलाई कम संख्यात्मक स्कोर दिन्छ। तर, जम्प बटन थिच्दा तपाईंले एक अंक प्राप्त गर्नुहुनेछ र जीवित रहनुहुनेछ। यो सकारात्मक परिणाम हो र यसले तपाईंलाई सकारात्मक संख्यात्मक स्कोर दिनुपर्छ। +सुदृढीकरण शिक्षणमा तीन महत्वपूर्ण अवधारणाहरू छन्: एजेन्ट, केही अवस्थाहरू, र प्रत्येक अवस्थाको लागि क्रियाहरूको सेट। निर्दिष्ट अवस्थामा कुनै क्रिया कार्यान्वयन गरेर, एजेन्टलाई इनाम दिन्छ। फेरि कल्पना गर्नुहोस् कम्प्युटर खेल सुपर मारियो। तपाईँ मारियो हुनुहुन्छ, खेलको स्तरमा, खाल्डो किनारामा उभिएको। माथि एउटा सिक्का छ। तपाईँ मारियो हुनु, खेलको स्तरमा, कुनै विशेष स्थितिमा ... त्यो तपाईंको अवस्था हो। दायाँतर्फ एक कदम चाल्नु (एक क्रिया) ले तपाईंलाई किनारामा पु-याउँछ, जसले तपाईंलाई न्यून अंक दिन्छ। यद्यपि, जम्प बटन थिच्दा तपाईंले अंक पाउनुहुन्छ र जीवित रहन सक्नुहुन्छ। त्यो सकारात्मक नतिजा हो र त्यसले तपाईंलाई सकारात्मक अंक पुरस्कार दिन्छ। -रिइन्फोर्समेन्ट लर्निङ र सिमुलेटर (गेम) प्रयोग गरेर, तपाईंले जीवित रहनु र सकेसम्म धेरै अंक प्राप्त गर्न खेल खेल्न सिक्न सक्नुहुन्छ। +सुदृढीकरण शिक्षण र एक सिमुलेटर (खेल) को प्रयोग गरेर, तपाईंले कसरी खेल खेल्ने सिक्न सक्नुहुन्छ ताकि जिवित रहन र सकेसम्म धेरै अंक प्राप्त गर्न सकियोस्। -[![रिइन्फोर्समेन्ट लर्निङको परिचय](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![सुदृढीकरण शिक्षणमा परिचय](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 माथिको तस्बिरमा क्लिक गरेर Dmitry बाट रिइन्फोर्समेन्ट लर्निङको चर्चा सुन्नुहोस् +> 🎥 माथिको तस्बिरमा क्लिक गरी दिमित्रे सुदृढीकरण शिक्षणमा छलफल सुन्नुहोस् -## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पाठअघि प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/) -## पूर्वआवश्यकता र सेटअप +## आवश्यकताहरू र सेटअप -यस पाठमा, हामी Python मा केही कोडको प्रयोग गर्नेछौं। तपाईंले यो पाठको Jupyter Notebook कोड आफ्नो कम्प्युटरमा वा क्लाउडमा चलाउन सक्षम हुनुपर्छ। +यस पाठमा, हामी पाइथनमा केही कोडसँग प्रयोग गर्नेछौं। तपाईंले यो पाठको जुपिटर नोटबुक कोड तपाईंको कम्प्युटरमा वा क्लाउडमा कुनै स्थानमा चलाउन सक्षम हुनु पर्नेछ। -तपाईं [पाठ नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) खोल्न सक्नुहुन्छ र यस पाठलाई निर्माण गर्न सक्नुहुन्छ। +तपाईं [पाठ नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) खोल्न सक्नुहुन्छ र यो पाठसँग सँगै जान सक्नुहुन्छ। -> **नोट:** यदि तपाईंले यो कोड क्लाउडबाट खोल्दै हुनुहुन्छ भने, तपाईंले [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाइल पनि ल्याउन आवश्यक छ, जुन नोटबुक कोडमा प्रयोग गरिएको छ। यसलाई नोटबुकको समान डाइरेक्टरीमा थप्नुहोस्। +> **सूचना:** यदि तपाईं यो कोड क्लाउडबाट खोलिरहनुभएको छ भने, तपाईंले पनि [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाइल ल्याउनुपर्नेछ, जुन नोटबुक कोडमा प्रयोग हुन्छ। यसलाई नोटबुकसँगैको फोल्डरमा राख्नुहोस्। ## परिचय -यस पाठमा, हामी **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** को संसार अन्वेषण गर्नेछौं, जुन रूसी संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) द्वारा प्रेरित एक संगीत परी कथा हो। हामी **रिइन्फोर्समेन्ट लर्निङ** प्रयोग गरेर पिटरलाई उसको वातावरण अन्वेषण गर्न, स्वादिष्ट स्याउहरू संकलन गर्न र भेडियासँग भेट्नबाट बच्न दिनेछौं। +यस पाठमा, हामी **[पिटर र भेड़िया](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** को संसार खोज्नेछौं, जसलाई रूसी संग्राहक [सेर्गेइ प्रोकोफीभ](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ले संगीतात्मक परी कथा बाट प्रेरणा लिएको हो। हामी **सुदृढीकरण शिक्षण** प्रयोग गर्नेछौं पिटरलाई आफ्नो वातावरण अन्वेषण गरी मिठा स्याउहरू सङ्कलन गर्ने र भेड़ियासँग टक्कर नलाग्ने बनाउन। -**रिइन्फोर्समेन्ट लर्निङ** (RL) एक सिक्ने प्रविधि हो जसले हामीलाई **एजेन्ट** को कुनै **वातावरण** मा इष्टतम व्यवहार सिक्न अनुमति दिन्छ धेरै प्रयोगहरू चलाएर। यस वातावरणमा एजेन्टको केही **लक्ष्य** हुनुपर्छ, जुन **पुरस्कार कार्य** द्वारा परिभाषित हुन्छ। +**सुदृढीकरण शिक्षण** (RL) एउटा सिकाइ प्रविधि हो जसले हामीलाई एउटा **एजेन्ट** को सर्वश्रेष्ठ व्यवहार सिक्न अनुमति दिन्छ, कुनै **पर्यावरण** मा धेरै प्रयोग गरेर। यस पर्यावरणमा एजेन्टको केही **लक्ष्य** हुनुपर्दछ, जुन **इनाम कार्य** द्वारा परिभाषित हुन्छ। ## वातावरण -सरलताको लागि, पिटरको संसारलाई `width` x `height` आकारको वर्ग बोर्ड मानौं, यस प्रकार: +सरलताका लागि, हामी पिटरको संसारलाई चौकोर बोर्डको `width` x `height` आकारमा मान्न सक्छौं, यसरी: -![पिटरको वातावरण](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![पिटरको वातावरण](../../../../translated_images/ne/environment.40ba3cb66256c93f.webp) -यस बोर्डको प्रत्येक सेल निम्नमध्ये कुनै एक हुन सक्छ: +यस बोर्डका प्रत्येक कोष्ठकले यस मध्ये कुनै पर्न सक्छ: -* **जमिन**, जहाँ पिटर र अन्य प्राणीहरू हिँड्न सक्छन्। -* **पानी**, जहाँ स्पष्ट रूपमा हिँड्न सकिँदैन। -* **रुख** वा **घाँस**, जहाँ आराम गर्न सकिन्छ। -* **स्याउ**, जुन पिटरले आफूलाई खुवाउन पाउँदा खुसी हुने कुरा हो। -* **भेडिया**, जुन खतरनाक छ र बच्नुपर्छ। +* **माटो**, जसमा पिटर र अन्य जीवहरु हिड्न सक्छन्। +* **पानी**, जसमा तपाईं पक्कै हिड्न सक्नुहुन्न। +* **रुख** वा **घाँस**, जहाँ तपाईं आराम गर्न सक्नुहुन्छ। +* **स्याउ**, जुन पिटरले आफूलाई खान दिन खोज्ने वस्तु हो। +* **भेड़िया**, जुन खतरनाक छ र जोगिनु पर्छ। -एक अलग Python मोड्युल, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), यस वातावरणसँग काम गर्न कोड समावेश गर्दछ। किनकि यो कोड हाम्रो अवधारणाहरू बुझ्न महत्त्वपूर्ण छैन, हामी मोड्युल आयात गर्नेछौं र नमूना बोर्ड सिर्जना गर्न प्रयोग गर्नेछौं (कोड ब्लक 1): +एउटा अलग पाइथन मोड्युल छ, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), जसमा यस वातावरणसँग काम गर्ने कोड छ। किनभने यस कोड बुझ्न हाम्रो अवधारणाका लागि आवश्यक छैन, हामी यस मोड्युललाई आयात गरी नमुना बोर्ड बनाउन प्रयोग गर्नेछौं (कोड ब्लक 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -यस कोडले माथिको जस्तै वातावरणको चित्र प्रिन्ट गर्नुपर्छ। +यो कोडले माथिको जस्तो वातावरणको चित्र प्रिन्ट गर्नेछ। -## कार्यहरू र नीति +## क्रियाहरू र नीति -हाम्रो उदाहरणमा, पिटरको लक्ष्य स्याउ फेला पार्नु हो, भेडिया र अन्य बाधाहरूबाट बच्दै। यसका लागि, उसले स्याउ फेला पार्दासम्म वरिपरि हिँड्न सक्छ। +हाम्रो उदाहरणमा, पिटरको लक्ष्य स्याउ भेट्नु हुनेछ, भेड़िया र अन्य बाधाहरूबाट बच्ने तरिकाले। त्यसका लागि, उनी बेसिक रूपमा घुम्दै हिँडिरहनेछन् जबसम्म स्याउ भेटिदैन। -त्यसैले, कुनै पनि स्थानमा, उसले निम्न कार्यहरू मध्ये एक चयन गर्न सक्छ: माथि, तल, बायाँ र दायाँ। +त्यसकारण, कुनै पनि स्थानमा, उनी तलका क्रियाहरू मध्ये एक छान्न सक्छन्: माथि, तल, बायाँ र दायाँ। -हामी ती कार्यहरूलाई डिक्सनरीको रूपमा परिभाषित गर्नेछौं, र तिनीहरूलाई सम्बन्धित समन्वय परिवर्तनहरूको जोडीमा म्याप गर्नेछौं। उदाहरणका लागि, दायाँतिर सर्ने (`R`) जोडी `(1,0)` सँग मेल खानेछ। (कोड ब्लक 2): +ती क्रियाहरूलाई हामी शब्दकोश स्वरूप परिभाषित गर्नेछौं र तिनीहरूलाई सम्बन्धित निर्देशाङ्क परिवर्तनका जोडीहरूसँग नक्साङ्कन गर्नेछौं। उदाहरणका लागि, दायाँ सर्नु (`R`) लाई `(1,0)` जोडीको रूपमा राख्नेछौं। (कोड ब्लक 2): ```python actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) } action_idx = { a : i for i,a in enumerate(actions.keys()) } ``` -यस परिदृश्यको रणनीति र लक्ष्यलाई संक्षेपमा भन्नुपर्दा: +संक्षेपमा, यस परिदृश्यको रणनीति र लक्ष्य यस प्रकार छ: -- **रणनीति**, हाम्रो एजेन्ट (पिटर) को **नीति** द्वारा परिभाषित गरिएको छ। नीति एक कार्य हो जसले कुनै पनि दिइएको अवस्थामा कार्य फिर्ता गर्दछ। हाम्रो मामलामा, समस्याको अवस्था बोर्डद्वारा प्रतिनिधित्व गरिएको छ, जसमा खेलाडीको वर्तमान स्थिति समावेश छ। +- **रणनीति**, हाम्रो एजेन्ट (पिटर) को एक भनिने **नीति** द्वारा परिभाषित छ। नीति एउटा कार्य हो जसले कुनै पनि दिनेको अवस्थामा क्रिया फर्काउँछ। हाम्रो मामलामा, समस्याको अवस्था बोर्ड द्वारा प्रतिनिधित्व गरिएको छ, खेलाडीको वर्तमान स्थान सहित। -- **लक्ष्य**, रिइन्फोर्समेन्ट लर्निङको अन्ततः राम्रो नीति सिक्नु हो जसले हामीलाई समस्या कुशलतापूर्वक समाधान गर्न अनुमति दिनेछ। तर, आधारभूत रूपमा, सबैभन्दा सरल नीति **र्यान्डम वाक** मानौं। +- **लक्ष्य**, सुदृढीकरण शिक्षणको लक्ष्य अन्ततः राम्रो नीति सिक्नु हो जसले समस्या कुशलतापूर्वक समाधान गर्न सकियोस। यद्यपि, एक आधारभूत रुपमा, हामी सबैभन्दा सरल नीतिलाई विचार गर्न सक्छौं जुन **र्याण्डम वाक** हो। -## र्यान्डम वाक +## र्याण्डम वाक -पहिला, हामी र्यान्डम वाक रणनीति कार्यान्वयन गरेर हाम्रो समस्या समाधान गर्नेछौं। र्यान्डम वाकमा, हामी अनुमति प्राप्त कार्यहरूबाट अर्को कार्य अनियमित रूपमा चयन गर्नेछौं, जबसम्म हामी स्याउमा पुग्दैनौं (कोड ब्लक 3)। +पहिले हामी हाम्रो समस्या र्याण्डम वाक रणनीतिलाई कार्यान्वयन गरेर समाधान गर्नेछौं। र्याण्डम वाकमा, हामी अनुमति पाएका क्रियाहरूबाट अर्को क्रिया यादृच्छिक रूपमा चयन गर्नेछौं, जबसम्म स्याउसम्म पुग्दैनौं (कोड ब्लक 3)। -1. तलको कोड प्रयोग गरेर र्यान्डम वाक कार्यान्वयन गर्नुहोस्: +1. तलको कोडले र्याण्डम वाक कार्यान्वयन गर्न: ```python def random_policy(m): return random.choice(list(actions)) def walk(m,policy,start_position=None): - n = 0 # number of steps - # set initial position + n = 0 # कदमहरूको संख्या + # प्रारम्भिक स्थान सेट गर्नुहोस् if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # सफलता! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # ब्वाँसोले खाएको वा डुब्नु भएको while True: a = actions[policy(m)] new_pos = m.move_pos(m.human,a) if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: - m.move(a) # do the actual move + m.move(a) # वास्तविक आन्दोलन गर्नुहोस् break n+=1 walk(m,random_policy) ``` - `walk` को कलले सम्बन्धित पथको लम्बाइ फिर्ता गर्नुपर्छ, जुन एक रनबाट अर्कोमा फरक हुन सक्छ। + `walk` लाई कल गर्दा सम्बन्धित मार्गको लम्बाइ फर्किनुपर्छ, जुन एक पटकदेखि अर्को पटक फरक हुन सक्छ। -1. वाक प्रयोग धेरै पटक चलाउनुहोस् (भनौं, 100 पटक), र परिणामी तथ्यांक प्रिन्ट गर्नुहोस् (कोड ब्लक 4): +1. चलाओ तपाईँले walk प्रयोग गरेर धेरै पटक (जस्तै, 100 पटक), र प्राप्त तथ्यांकहरू प्रिन्ट गर्नुहोस् (कोड ब्लक 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) } print_statistics(random_policy) ``` - ध्यान दिनुहोस् कि पथको औसत लम्बाइ लगभग 30-40 चरण हो, जुन धेरै हो, किनकि नजिकको स्याउसम्मको औसत दूरी लगभग 5-6 चरण हो। + ध्यान दिनुहोस कि एउटा पथको औसत लम्बाइ करिब 30-40 चरण हुन्छ, जुन धेरै हो, ध्यानमा राखेर कि सबैभन्दा नजिकको स्याउसम्मको औसत दूरी करिब 5-6 कदम छ। - तपाईंले पिटरको र्यान्डम वाकको क्रममा उसको चाल कस्तो देखिन्छ भनेर पनि हेर्न सक्नुहुन्छ: + तपाईं र्याण्डम वाक अवधिमा पिटरको चाल कस्तो छ देख्न सक्नुहुन्छ: - ![पिटरको र्यान्डम वाक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![पिटरको र्याण्डम वाक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## पुरस्कार कार्य -हाम्रो नीति अझ बौद्धिक बनाउन, हामीले बुझ्नुपर्छ कि कुन चालहरू अरूभन्दा "राम्रो" छन्। यसका लागि, हामीले हाम्रो लक्ष्य परिभाषित गर्नुपर्छ। +हाम्रो नीतिलाई अझ बुद्धिमानी बनाउन, हामी बुझ्नुपर्ने हुन्छ कि कुन चालहरू अरूको भन्दा "राम्रो" छन्। यसको लागि हामीले हाम्रो लक्ष्य परिभाषित गर्नुपर्ने हुन्छ। -लक्ष्यलाई **पुरस्कार कार्य** को सन्दर्भमा परिभाषित गर्न सकिन्छ, जसले प्रत्येक अवस्थाको लागि केही स्कोर मान फिर्ता गर्दछ। संख्या जति उच्च छ, पुरस्कार कार्य त्यति राम्रो हुन्छ। (कोड ब्लक 5) +लक्ष्यलाई एउटा **इनाम कार्य** मा परिभाषित गर्न सकिन्छ, जसले प्रत्येक अवस्थाको लागि केही स्कोर मान फर्काउँछ। संख्या जति ठूलो हुन्छ, त्यो इनाम कार्य उति राम्रो हो। (कोड ब्लक 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -पुरस्कार कार्यहरूको बारेमा रोचक कुरा यो हो कि अधिकांश अवस्थामा, *हामीलाई खेलको अन्त्यमा मात्र महत्वपूर्ण पुरस्कार दिइन्छ।* यसको मतलब हाम्रो एल्गोरिदमले सकारात्मक पुरस्कारमा पुग्न "राम्रो" चरणहरू सम्झनुपर्छ र तिनीहरूको महत्त्व बढाउनुपर्छ। त्यस्तै, खराब परिणामहरूमा पुग्ने सबै चालहरूलाई निरुत्साहित गर्नुपर्छ। +पुरस्कार कार्यहरूको रोचक कुरा भनेको अधिकांश अवस्थामा, *हामीलाई खेलको अन्त्यमा मात्र पर्याप्त पुरस्कार दिइन्छ*। यसको अर्थ हाम्रो एल्गोरिदमले कसरी पनि "राम्रो" कदमहरू सम्झनुपर्छ जुन अन्त्यमा सकारात्मक इनाम ल्याउँछन्, र ती महत्त्व बढाउनुपर्छ। त्यस्तै, सबै नतिजा नराम्रो पर्ने चालहरूलाई निरुत्साहित गर्नुपर्छ। -## Q-लर्निङ +## Q-शिक्षण -हामी यहाँ छलफल गर्ने एल्गोरिदमलाई **Q-लर्निङ** भनिन्छ। यस एल्गोरिदममा, नीति एक कार्य (वा डेटा संरचना) द्वारा परिभाषित गरिएको छ जसलाई **Q-टेबल** भनिन्छ। यसले दिइएको अवस्थामा प्रत्येक कार्यको "राम्रोपन" रेकर्ड गर्दछ। +यहाँ छलफल गरिने एल्गोरिथ्मलाई **Q-शिक्षण** भनिन्छ। यसमा, नीति एउटा कार्य (वा डेटा संरचना) द्वारा परिभाषित हुन्छ जसलाई **Q-टेबल** भनिन्छ। यसले प्रत्येक अवस्थाको प्रत्येक क्रियाको "राम्रोपना" रेकर्ड गर्छ। -यसलाई Q-टेबल भनिन्छ किनभने यसलाई तालिका वा बहु-आयामिक एरेको रूपमा प्रतिनिधित्व गर्नु सुविधाजनक हुन्छ। किनभने हाम्रो बोर्डको आयाम `width` x `height` छ, हामी Q-टेबललाई `width` x `height` x `len(actions)` आकारको numpy एरे प्रयोग गरेर प्रतिनिधित्व गर्न सक्छौं: (कोड ब्लक 6) +यसलाई Q-टेबल भनिन्छ किनभने प्रायः यसलाई एउटा तालिका वा बहु-आयामी एरेको रूपमा प्रतिनिधित्व गर्न सजिलो हुन्छ। हाम्रो बोर्ड `width` x `height` आकारको हुँदा हामी Q-टेबललाई numpy एरे प्रयोग गरेर `width` x `height` x `len(actions)` आकारमा प्रतिनिधित्व गर्न सक्छौं: (कोड ब्लक 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -ध्यान दिनुहोस् कि हामी Q-टेबलका सबै मानहरू समान मानले आरम्भ गर्छौं, हाम्रो मामलामा - 0.25। यसले "र्यान्डम वाक" नीतिलाई प्रतिनिधित्व गर्दछ, किनभने प्रत्येक अवस्थामा सबै चालहरू समान रूपमा राम्रो छन्। हामी बोर्डमा तालिका देखाउन `plot` कार्यमा Q-टेबल पास गर्न सक्छौं: `m.plot(Q)`। +ध्यान दिनुहोस् कि हामीले सबै Q-टेबल मानहरूलाई समान मान दिइरहेका छौं, हाम्रो अवस्थामा - 0.25। यसले "र्याण्डम वाक" नीतिलाई जनाउँछ, किनभने हरेक अवस्थाका क्रियाहरू समान राम्रो हुन्छन्। हामी `plot` कार्यमा Q-टेबल पास गरेर बोर्डमा तालिका देखाउन सक्छौं: `m.plot(Q)`. -![पिटरको वातावरण](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![पिटरको वातावरण](../../../../translated_images/ne/env_init.04e8f26d2d60089e.webp) -प्रत्येक सेलको केन्द्रमा एउटा "तीर" छ जसले चालको प्राथमिक दिशा संकेत गर्दछ। किनभने सबै दिशाहरू समान छन्, एउटा बिन्दु देखाइएको छ। +प्रत्येक कोष्ठकको केन्द्रमा एउटा "तीर" हुन्छ जुन सर्न मन लाग्ने दिशा देखाउँछ। सबै दिशा बराबर हुँदा, बिन्दु देखाइन्छ। -अब हामीले सिमुलेशन चलाउन, हाम्रो वातावरण अन्वेषण गर्न, र Q-टेबल मानहरूको राम्रो वितरण सिक्न आवश्यक छ, जसले हामीलाई स्याउसम्मको बाटो धेरै छिटो फेला पार्न अनुमति दिनेछ। +अब हामी सिमुलेशन चलाएर हाम्रो वातावरण अन्वेषण गर्नुपर्छ र Q-टेबल मानहरूको राम्रो वितरण सिक्नुपर्छ, जसले स्याउ पुग्ने बाटो छिटो फेला पार्न मद्दत गर्नेछ। -## Q-लर्निङको सार: बेलम्यान समीकरण +## Q-शिक्षणको सार: बेल्म्यान समीकरण -एकपटक हामी चाल सुरु गरेपछि, प्रत्येक कार्यसँग सम्बन्धित पुरस्कार हुनेछ, अर्थात् हामी सैद्धान्तिक रूपमा उच्च तत्काल पुरस्कारको आधारमा अर्को कार्य चयन गर्न सक्छौं। तर, अधिकांश अवस्थाहरूमा, चालले हाम्रो लक्ष्य प्राप्त गर्दैन, र त्यसैले हामी तुरुन्तै निर्णय गर्न सक्दैनौं कि कुन दिशा राम्रो हो। +सर्न थाल्दा, प्रत्येक क्रियाको सम्बन्धित पुरस्कार हुन्छ, अर्थात् हामी सैद्धान्तिक रूपमा सबैभन्दा बढी तत्काल पुरस्कारका आधारमा अर्को क्रिया चयन गर्न सक्छौं। तर धेरै अवस्थाहरूमा, चालले हाम्रो स्याउ पुग्ने लक्ष्य पूरा गर्दैन, त्यसैले हामी तुरुन्त निर्णय गर्न सक्दैनौं कुन दिशा राम्रो हो। -> याद गर्नुहोस् कि तत्काल परिणाम महत्त्वपूर्ण छैन, बरु अन्तिम परिणाम महत्त्वपूर्ण छ, जुन हामीले सिमुलेशनको अन्त्यमा प्राप्त गर्नेछौं। +> याद राख्नुहोस् कि तत्काल नतिजा महत्वपूर्ण छैन, तर अन्तिम नतिजा हो, जुन हामी सिमुलेशनको अन्त्यमा पाउनेछौं। -यो विलम्बित पुरस्कारलाई ध्यानमा राख्न, हामीले **[डायनामिक प्रोग्रामिङ](https://en.wikipedia.org/wiki/Dynamic_programming)** को सिद्धान्तहरू प्रयोग गर्न आवश्यक छ, जसले हामीलाई हाम्रो समस्यालाई पुनरावृत्त रूपमा सोच्न अनुमति दिन्छ। +ढिलाइ गरिएको पुरस्कारलाई ध्यानमा राख्न, हामीले **[डायनामिक प्रोग्रामिङ](https://en.wikipedia.org/wiki/Dynamic_programming)** सिद्धान्तहरू प्रयोग गर्नुपर्छ, जसले हाम्रो समस्यालाई पुनरावृत्तिमूलक रूपमा सोच्न अनुमति दिन्छ। -मानौं हामी अहिले अवस्था *s* मा छौं, र हामी अर्को अवस्था *s'* मा जान चाहन्छौं। यसो गर्दा, हामीले तत्काल पुरस्कार *r(s,a)* प्राप्त गर्नेछौं, जुन पुरस्कार कार्यद्वारा परिभाषित गरिएको छ, साथै केही भविष्यको पुरस्कार। यदि हामी मानौं कि हाम्रो Q-टेबलले प्रत्येक कार्यको "आकर्षण" सही रूपमा प्रतिबिम्बित गर्दछ, भने अवस्था *s'* मा हामीले कार्य *a'* चयन गर्नेछौं, जुन *Q(s',a')* को अधिकतम मानसँग मेल खान्छ। यसरी, अवस्था *s* मा हामीले प्राप्त गर्न सक्ने सबैभन्दा राम्रो सम्भावित भविष्यको पुरस्कार `max` द्वारा परिभाषित हुनेछ। +मानौं हामी अहिले अवस्था *s* मा छौं, र अर्को अवस्था *s'* मा सर्न चाहन्छौं। यसले हामीलाई तुरुन्तै पुरस्कार *r(s,a)* प्राप्त हुनेछ, जुन इनाम कार्यले परिभाषित गर्छ, साथै केही भविष्यको पुरस्कार पनि हुनेछ। यदि हाम्रो Q-टेबलले प्रत्येक क्रियाको "आकर्षकता" सही रूपमा देखाउँछ भने, अवस्था *s'* मा हामी त्यो क्रिया *a'* छान्नेछौं जसको *Q(s',a')* मान सबैभन्दा उच्च हुन्छ। त्यसैले, अवस्था *s* मा पाउन सकिने सबैभन्दा राम्रो सम्भावित भावी पुरस्कार `max`a'*Q(s',a')* हुनेछ (यहाँ अधिकतम सबै सम्भावित क्रियाहरू *a'* मा गणना हुन्छ)। -## नीति जाँच गर्दै +यसले Q-टेबलको मान गणना गर्नको लागि **बेल्म्यान सूत्र** दिन्छ, जुन अवस्था *s* र क्रिया *a* को लागि हो: -Q-Table ले प्रत्येक अवस्थामा प्रत्येक क्रियाको "आकर्षण" सूचीबद्ध गर्ने भएकाले, हाम्रो संसारमा प्रभावकारी नेभिगेसन परिभाषित गर्न यसलाई प्रयोग गर्न सजिलो छ। सबैभन्दा साधारण अवस्थामा, हामी Q-Table मा सबैभन्दा उच्च मानसँग मेल खाने क्रिया चयन गर्न सक्छौं: (कोड ब्लक 9) + + +यहाँ γ भनिने को छूट कारक हो जसले वर्तमान पुरस्कारलाई भविष्य पुरस्कारको तुलनामा कति प्राथमिकता दिने निर्धारण गर्छ। + +## सिकाइ एल्गोरिथ्म + +माथिको समीकरण अनुसार, हामी अब हाम्रो सिकाइ एल्गोरिथ्मको छद्म कोड लेख्न सक्छौं: + +* सबै अवस्थाहरू र क्रियाहरूका लागि योगात्मक संख्याहरूले Q-टेबल Q सुरु गर्नुहोस् +* सिकाइ दर α ← 1 सेट गर्नुहोस् +* धेरै पटक सिमुलेशन दोहोर्याउनुहोस् + 1. यादृच्छिक स्थानबाट सुरु गर्नुहोस् + 1. दोहोर्याउनुहोस् + 1. अवस्था *s* मा एउटा क्रिया *a* चयन गर्नुहोस् + 2. नयाँ अवस्था *s'* मा सर्ने क्रिया कार्यान्वयन गर्नुहोस् + 3. यदि खेलको अन्त्य अवस्था भेटियो वा कुल पुरस्कार धेरै थोरै छ भने - सिमुलेशनबाट बाहिर निस्कनुहोस् + 4. नयाँ अवस्थामा पुरस्कार *r* गणना गर्नुहोस् + 5. बेल्म्यान समीकरण अनुसार Q-कार्य अपडेट गर्नुहोस्: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. कुल पुरस्कार अपडेट गर्नुहोस् र α घटाउनुहोस्। + +## उपयोग गर्ने बनाम अन्वेषण गर्ने + +माथिको एल्गोरिथ्ममा, हामीले २.१ मा क्रिया चयन कसरी गर्ने भनी निर्दिष्ट गरेका छैनौं। यदि हामी क्रियालाई यादृच्छिक रूपमा छान्छौं भने, हामी वातावरणलाई यादृच्छिक रूपमा अन्वेषण गर्नेछौं, र हामी प्रायः धेरै पटक मर्न सक्छौं साथै त्यस्ता क्षेत्रहरू पनि अन्वेषण गर्नेछौं जहाँ सामान्यतः जाँदैनौं। अर्को तरिका भनेको पहिले देखि थाहा भएका Q-टेबल मानहरूलाई **उपयोग** गरेर, सबैभन्दा उत्कृष्ट क्रिया (उच्च Q-टेबल मान भएको) चयन गर्नु हो। तर योले हामीलाई अन्य अवस्थाहरू अन्वेषणबाट रोक्छ, र सम्भावित समाधान नपाउनसक्ने सम्भावना बढ्छ। + +त्यसैले, सर्वोत्तम तरिका भनेको अन्वेषण र उपयोग बीच सन्तुलन कायम गर्नु हो। यो स्टेट *s* मा क्रिया चयन गर्न Q-टेबलका मानसँग अनुपातिक सम्भावनाहरू प्रयोग गरेर गर्न सकिन्छ। सुरुमै, जब Q-टेबलका सबै मान एकसमान हुन्छन्, यसले यादृच्छिक चयनको जस्तो हुन्छ, तर जति हामी हाम्रो वातावरण सिक्छौं, हामी उत्तम मार्ग पछ्याउने सम्भावना बढी हुन्छ र एजेन्टलाई कहिलेकाहीं अन्वेषण गर्ने बाटो अपनाउन अनुमति दिन्छौं। + +## पाइथन कार्यान्वयन + +हामी अब सिकाइ एल्गोरिथ्म कार्यान्वयन गर्न तयार छौं। त्यस अघि, हामीलाई एउटा यस्तो कार्य पनि चाहिन्छ जसले Q-टेबलमा भएका कुनै पनि संख्याहरूलाई सम्बन्धित क्रियाहरूको सम्भावनाहरूमा रूपान्तरण गर्नेछ। + +1. `probs()` नामको कार्य बनाउनुहोस्: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + शुरुवाती अवस्थामा सबै भेक्टर कम्पोनेन्टहरू समान हुँदा शून्यले भाग काटिन नदिन केही `eps` थपेका छौं। + +यो सिकाइ एल्गोरिथ्म ५००० प्रयोगहरू (epochs) को माध्यमबाट चलाउनुहोस्: (कोड ब्लक 8) +```python + for epoch in range(5000): + + # प्रारम्भिक बिन्दु छान्नुहोस् + m.random_start() + + # यात्रा सुरु गर्नुहोस् + n=0 + cum_reward = 0 + while True: + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + dpos = actions[a] + m.move(dpos,check_correctness=False) # हामी खेलाडीलाई बोर्ड बाहिर जान अनुमति दिन्छौं, जसले एपिसोड समाप्त गर्दछ + r = reward(m) + cum_reward += r + if r==end_reward or cum_reward < -1000: + lpath.append(n) + break + alpha = np.exp(-n / 10e5) + gamma = 0.5 + ai = action_idx[a] + Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max()) + n+=1 +``` + +एल्गोरिथ्म चलाएपछि, Q-टेबल भ्याक्टरहरूमा भएका मानहरू अपडेट हुनेछ जसले हरेक चरणमा फरक क्रियाहरूको आकर्षकता परिभाषित गर्नेछन्। हामी Q-टेबल हेर्न कोशिस गर्न सक्छौं, प्रत्येक कोष्ठकमा एउटा भेक्टर तयार पारेर जुन आन्दोलनको उचित दिशातर्फ संकेत गर्नेछ। सरलताका लागि, हामी साना वृत्तहरू चित्रित गर्छौं तीरको सट्टा। + + + +## नीतिको जाँच + +किनभने Q-टेबल प्रत्येक अवस्थाको प्रत्येक क्रियाको "आकर्षकता" सूचीबद्ध गर्छ, हामी यसलाई हाम्रो संसारमा कुशल नेभिगेशन परिभाषित गर्न सजिलै प्रयोग गर्न सक्छौं। सजिलो अवस्थामा, हामी सबैभन्दा उच्च Q-टेबल मान भएको क्रियालाई चयन गर्न सक्छौं: (कोड ब्लक 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> माथिको कोडलाई धेरै पटक चलाउँदा, कहिलेकाहीँ यो "अड्किन्छ" भन्ने कुरा तपाईंले देख्न सक्नुहुन्छ, र यसलाई रोक्न नोटबुकमा STOP बटन थिच्नुपर्ने हुन्छ। यस्तो किन हुन्छ भने, कहिलेकाहीँ दुई अवस्थाले एकअर्कालाई "सर्वोत्तम Q-Value" को हिसाबले देखाउँछन्, जसले गर्दा एजेन्ट ती अवस्थाहरू बीच अनन्त रूपमा घुमिरहन्छ। + +> माथिको कोडलाई धेरै पटक प्रयास गर्दा, कहिलेकाहीं यसले "अटकिरहेको" देख्न सकिन्छ, र तपाईंलाई नोटबुकमा STOP बटन थिचेर यसलाई रोक्न आवश्यक पर्छ। यो त्यस्तो अवस्था हुन सक्छ जब दुईवटा अवस्था हरु आपसमा अप्टिमल Q-Value को सन्दर्भमा "सङ्केत" गर्छन्, जस अवस्थामा एजेन्टहरू ती अवस्थाहरू बीच अनन्तकाल सम्म घुमिरहन्छन्। ## 🚀चुनौती -> **कार्य 1:** `walk` फङ्सनलाई परिमार्जन गरेर मार्गको अधिकतम लम्बाइलाई निश्चित चरणहरूको संख्याले (जस्तै, 100) सीमित गर्नुहोस्, र माथिको कोडले समय-समयमा यो मान फिर्ता ल्याएको हेर्नुहोस्। +> **कार्य १:** `walk` फङ्क्शनलाई यसरी संशोधन गर्नुहोस् कि पथको अधिकतम लम्बाई निश्चित चरणहरूको सङ्ख्यामा (जस्तै, १००) सीमित होस्, र माथिको कोड कहिलेकाहीं यो मान फर्काउँदै गरेको देख्नुहोस्। -> **कार्य 2:** `walk` फङ्सनलाई परिमार्जन गरेर यसले पहिले नै पुगेको स्थानमा पुन: नजाने बनाउनुहोस्। यसले `walk` लाई लूप हुनबाट रोक्नेछ, तर एजेन्ट अझै पनि यस्तो स्थानमा "फस्न" सक्नेछ जहाँबाट बाहिर निस्कन असमर्थ हुन्छ। +> **कार्य २:** `walk` फङ्क्शनलाई यसरी संशोधन गर्नुहोस् कि यसले पहिले सम्म पुगेका स्थानमा फिर्ता नजाओस्। यसले `walk` लाई लूपिङ हुनबाट रोक्नेछ, तर एजेन्ट अझै त्यस्तो स्थानमा "फसेर" रहन सक्छ जहाँबाट बाटो छुट्न सक्दैन। -## नेभिगेसन +## मार्गनिर्देशन -प्रशिक्षणको समयमा प्रयोग गरिएको नीति अझ राम्रो नेभिगेसन नीति हुनेछ, जसले शोषण र अन्वेषणलाई संयोजन गर्दछ। यस नीतिमा, हामी प्रत्येक क्रियालाई निश्चित सम्भावनाको साथ चयन गर्नेछौं, जुन Q-Table मा रहेका मानहरूको अनुपातमा आधारित हुनेछ। यो रणनीतिले अझै पनि एजेन्टलाई पहिले नै अन्वेषण गरिएको स्थानमा फर्कन सक्ने बनाउँछ, तर तलको कोडबाट देख्न सकिन्छ, यसले चाहिएको स्थानसम्म पुग्न औसत मार्गलाई धेरै छोटो बनाउँछ (याद गर्नुहोस् कि `print_statistics` ले 100 पटक सिमुलेशन चलाउँछ): (कोड ब्लक 10) +एउटा राम्रो मार्गनिर्देशन नीति भनेको हामीले प्रशिक्षणको क्रममा प्रयोग गरेको नीति हो, जुन शोषण र अन्वेषण दुवैलाई संयोजन गर्छ। यस नीतिमा, हामी प्रत्येक क्रियालाई निश्चित सम्भावनासँग छनौट गर्नेछौं, जो Q-Table का मानहरू सँग अनुपातमा हुन्छ। यो रणनीतिले एजेन्टलाई पहिले नै अन्वेषण गरिसकेको स्थानमा फिर्ता जान लग्न सक्छ, तर, तलको कोडबाट देख्न सकिन्छ, यसले चाहिएको स्थानमा धेरै छोटो औसत पथ दिएको छ (याद गर्नुहोस् कि `print_statistics` सिमुलेशन १०० पटक चलाउँछ): (कोड ब्लक १०) ```python def qpolicy(m): @@ -220,30 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -यो कोड चलाएपछि, तपाईंले पहिलेको भन्दा धेरै सानो औसत मार्ग लम्बाइ प्राप्त गर्नुहुनेछ, जुन 3-6 को दायरामा हुनेछ। +यस कोडलाई चलाएपछि, तपाईंले पहिले भन्दा धेरै सानो औसत पथ लम्बाइ प्राप्त गर्नु पर्नेछ, ३-६ को दायरा भित्र। -## सिकाइ प्रक्रियाको अनुसन्धान गर्दै +## सिकाइ प्रक्रिया अन्वेषण -जसरी हामीले उल्लेख गर्यौं, सिकाइ प्रक्रिया अन्वेषण र समस्या क्षेत्रको संरचनाको बारेमा प्राप्त ज्ञानको अन्वेषणको बीचको सन्तुलन हो। हामीले देख्यौं कि सिकाइको परिणाम (एजेन्टलाई लक्ष्यसम्म छोटो मार्ग पत्ता लगाउन मद्दत गर्ने क्षमता) सुधार भएको छ, तर सिकाइ प्रक्रियाको क्रममा औसत मार्ग लम्बाइ कसरी व्यवहार गर्छ भन्ने कुरा पनि हेर्न रोचक छ: +जस्तो हामीले भनेका छौं, सिकाइ प्रक्रिया समस्या क्षेत्रको संरचनाबारे प्राप्त ज्ञानको अन्वेषण र शोषण बीचको सन्तुलन हो। हामीले देखेका छौं कि सिकाइका परिणामहरू (एजेन्टलाई लक्ष्यसम्म छोटो पथ फेला पार्न मद्दत गर्ने क्षमता) सुधार भएका छन्, तर सिकाइ प्रक्रियाको क्रममा औसत पथ लम्बाइ कसरी व्यवहार गर्छ भन्ने अवलोकन गर्नु पनि रोचक छ: -### सिकाइको सारांश: + -- **औसत मार्ग लम्बाइ बढ्छ**। सुरुमा औसत मार्ग लम्बाइ बढेको देखिन्छ। यसको कारण के हो भने जब हामी वातावरणको बारेमा केही पनि थाहा पाउँदैनौं, हामी खराब अवस्थाहरू, पानी वा भेडियामा फस्न सक्छौं। जब हामी थप सिक्छौं र यो ज्ञान प्रयोग गर्न थाल्छौं, हामी वातावरणलाई लामो समयसम्म अन्वेषण गर्न सक्छौं, तर अझै पनि स्याउहरू कहाँ छन् भन्ने कुरा राम्रोसँग थाहा छैन। +सिकाइहरू यस प्रकार सारांशित गर्न सकिन्छ: -- **मार्ग लम्बाइ घट्छ, जब हामी थप सिक्छौं**। पर्याप्त सिकेपछि, एजेन्टलाई लक्ष्य प्राप्त गर्न सजिलो हुन्छ, र मार्ग लम्बाइ घट्न थाल्छ। तर, हामी अझै पनि अन्वेषणका लागि खुला छौं, त्यसैले हामी प्रायः उत्तम मार्गबाट टाढा जान्छौं, र नयाँ विकल्पहरू अन्वेषण गर्छौं, जसले मार्गलाई आदर्शभन्दा लामो बनाउँछ। +- **औसत पथ लम्बाइ बढ्छ**। यहाँ जुन हामी देख्छौं त्यो हो सुरुमा औसत पथ लम्बाइ बढ्छ। यो सम्भवतः त्यसैले हो कि हामीलाई वातावरणको बारेमा केही थाहा नभएको अवस्थामा हामी खराब अवस्थाहरू, जस्तै पानी वा ब्वाँसोमा फस्न सक्छौं। जति धेरै जानकार हुन्छौं र त्यो ज्ञान प्रयोग गर्न थाल्छौं, हामी वातावरणलाई लामो समयसम्म अन्वेषण गर्न सक्छौं, तर अझै हामीलाई स्याउ कहाँ छन् भनेर राम्ररी थाहा हुँदैन। -- **लम्बाइ अचानक बढ्छ**। ग्राफमा देखिएको अर्को कुरा के हो भने कुनै बिन्दुमा लम्बाइ अचानक बढ्छ। यसले प्रक्रियाको स्टोकेस्टिक प्रकृति संकेत गर्दछ, र कुनै बिन्दुमा हामी Q-Table का मानहरू नयाँ मानहरूले ओभरराइट गरेर "बिगार्न" सक्छौं। यो आदर्श रूपमा सिकाइ दर घटाएर न्यूनतम गर्नुपर्छ (उदाहरणका लागि, प्रशिक्षणको अन्त्यतिर, हामी Q-Table का मानहरूलाई सानो मानले मात्र समायोजन गर्छौं)। +- **अझ सिकेपछि पथ लम्बाइ घट्छ**। पर्याप्त सिकेपछि, एजेन्टका लागि लक्ष्य प्राप्ति सजिलो हुन्छ, र पथ लम्बाइ घट्न थाल्छ। यद्यपि, हामी अझै अन्वेषणका लागि खुला छौं, त्यसैले हामी प्रायः सबैभन्दा राम्रो बाटोबाट विचलित भई नयाँ विकल्पहरू अन्वेषण गर्छौं, जसले पथलाई ऑप्टिमलभन्दा लामो बनाउँछ। -### महत्त्वपूर्ण कुरा: +- **लम्बाइ आकस्मिक रूपमा बढ्छ**। यस ग्राफमा हामीले अर्को कुरा पनि देख्छौं कि कुनै समय लम्बाइ अचानक बढ्छ। यसले प्रक्रियाको यादृच्छिक स्वभावलाई जनाउँछ, र हामी कहिलेकाहीं Q-Table को गुणांकहरूलाई नयाँ मानहरूसँग पुनःलेखन गरी "खराब" बनाउन सक्छौं। यो आदर्श रूपमा सिकाइ दर घटाएर कम गर्नुपर्छ (उदाहरणका लागि, प्रशिक्षणको अन्त्यतिर हामी Q-Table मानहरूलाई सानो मानले मात्र समायोजन गर्छौं)। -सिकाइ प्रक्रियाको सफलता र गुणस्तर सिकाइ दर, सिकाइ दरको कमी, र डिस्काउन्ट फ्याक्टर जस्ता प्यारामिटरहरूमा धेरै निर्भर गर्दछ। यीलाई प्रायः **हाइपरप्यारामिटरहरू** भनिन्छ, जसले **प्यारामिटरहरू** बाट फरक पार्छ, जुन हामी प्रशिक्षणको क्रममा अनुकूलित गर्छौं (जस्तै, Q-Table का मानहरू)। उत्तम हाइपरप्यारामिटर मानहरू पत्ता लगाउने प्रक्रिया **हाइपरप्यारामिटर अनुकूलन** भनिन्छ, र यसले छुट्टै विषयको योग्य छ। +कुल मिलाएर, यो स्मरण राख्न महत्वपूर्ण छ कि सिकाइ प्रक्रियाको सफलता र गुणस्तर धेरै हदसम्म प्यारेमिटरहरूमा निर्भर गर्दछ, जस्तै सिकाइ दर, सिकाइ दरको ह्रास, र छुट कारक। ती प्रायः **हाइपरप्यारामिटरहरू** भनिन्छ, जसलाई प्रशिक्षण क्रममा अनुकूलित गरिएका **प्यारामिटरहरू** (जस्तै Q-Table का गुणांकहरू) बाट फरक पार्न। उत्कृष्ट हाइपरप्यारामिटर मूल्यहरू खोज्न सक्ने प्रक्रियालाई **हाइपरप्यारामिटर अप्टिमाइजेशन** भनिन्छ, र यो एउटा अलग विषय हो। -## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पोस्ट-लेक्चर क्विज](https://ff-quizzes.netlify.app/en/ml/) ## असाइनमेन्ट -[अझ यथार्थपरक संसार](assignment.md) +[अझ यथार्थपरक विश्व](assignment.md) --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं। + \ No newline at end of file diff --git a/translations/ne/8-Reinforcement/2-Gym/README.md b/translations/ne/8-Reinforcement/2-Gym/README.md index 30949ec60..59cbe7bf5 100644 --- a/translations/ne/8-Reinforcement/2-Gym/README.md +++ b/translations/ne/8-Reinforcement/2-Gym/README.md @@ -1,12 +1,32 @@ +# कार्टपोल स्केटिङ + +हामीले अघिल्लो पाठमा समाधान गरिरहेको समस्या खेलौना समस्या जस्तो देखिन सक्छ, जुन वास्तविक जीवनका परिस्थितिहरूमा प्रयोगयोग्य नहुन सक्छ। यस्तो होइन, किनकि धेरै वास्तविक विश्वका समस्याहरूले पनि यो परिदृश्य साझा गर्छन् - जस्तै चेस वा गो खेल्ने। तिनीहरू मिल्दोजुल्दो छन् किनकि हामीसँग बोर्ड छ र निश्चित नियमहरू छन् र एक **विविक्त अवस्था** छ। + +## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) + +## परिचय + +यस पाठमा हामी Q-लर्निङका उहि सिद्धान्तहरूलाई **सतत अवस्था** भएको समस्यामा लागू गर्नेछौं, जसको मतलब एउटा वा बढी वास्तविक संख्याबाट दिइएको अवस्था हो। हामी तलको समस्यामा काम गर्नेछौं: + +> **समस्या**: यदि पिटर बँदेलबाट भाग्न चाहन्छ भने, उसको छिटो हिँड्न सक्नुपर्नेछ। हामी देख्नेछौं कि पिटर कसरी स्केट गर्न सिक्न सक्छ, विशेष गरी सन्तुलन कायम राख्न, Q-लर्निङ प्रयोग गरेर। + +![महान भाग्ने योजना!](../../../../translated_images/ne/escape.18862db9930337e3.webp) + +> पिटर र उनका साथीहरूले बँदेलबाट भाग्न रचनात्मकता देखाउँछन्! तस्बिर: [जेन लूपर](https://twitter.com/jenlooper) + +हामी एक सरल संस्करणको सन्तुलनलाई कार्टपोल समस्या भनेर चिनिने समस्या प्रयोग गर्नेछौं। कार्टपोल दुनियाँमा, हामीसँग एक तेर्सो स्लाइडर हुन्छ जुन बायाँ वा दायाँ सर्न सक्छ, र लक्ष्य स्लाइडरको माथि एउटा ठाडो पोललाई सन्तुलनमा राख्नु हो। + +a cartpole + ## आवश्यकताहरू -यस पाठमा, हामी **OpenAI Gym** नामक पुस्तकालय प्रयोग गर्नेछौं विभिन्न **पर्यावरणहरू** अनुकरण गर्न। तपाईं यो पाठको कोड स्थानीय रूपमा (जस्तै Visual Studio Code बाट) चलाउन सक्नुहुन्छ, जसमा अनुकरण नयाँ विन्डोमा खुल्छ। अनलाइन कोड चलाउँदा, तपाईंले कोडमा केही परिवर्तन गर्नुपर्ने हुन सक्छ, जस्तै [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन गरिएको छ। +यस पाठमा, हामी **OpenAI Gym** नामक पुस्तकालय प्रयोग गर्नेछौं विभिन्न **परिवेश** अनुकरण गर्न। तपाईंले यो पाठको कोड स्थानीय रूपमा चलाउन सक्नुहुन्छ (जस्तै Visual Studio Code बाट), यस अवस्थामा अनुकरण नयाँ विन्डोमा खुल्नेछ। अनलाइन कोड चलाउँदा, तपाईंले केहि संशोधनहरू गर्नुपर्ने हुन सक्छ, जस्तै तपाईले [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन गरिएको छ। ## OpenAI Gym -अघिल्लो पाठमा, खेलका नियमहरू र अवस्था `Board` वर्गद्वारा दिइएको थियो जुन हामीले आफैं परिभाषित गरेका थियौं। यहाँ हामी एक विशेष **अनुकरण वातावरण** प्रयोग गर्नेछौं, जसले सन्तुलन पोलको भौतिकी अनुकरण गर्नेछ। सुदृढीकरण सिकाइ एल्गोरिदमहरू प्रशिक्षणका लागि सबैभन्दा लोकप्रिय अनुकरण वातावरणहरू मध्ये एकलाई [Gym](https://gym.openai.com/) भनिन्छ, जुन [OpenAI](https://openai.com/) द्वारा व्यवस्थापन गरिन्छ। यस जिम प्रयोग गरेर हामी विभिन्न **पर्यावरणहरू** सिर्जना गर्न सक्छौं, जस्तै cartpole अनुकरणदेखि Atari खेलहरूसम्म। +अघिल्लो पाठमा, खेलका नियम र अवस्था `Board` क्लासले दिइन्थ्यो जुन हामीले आफैं परिभाषित गर्यौं। यहाँ हामी विशेष **अनुकरण वातावरण** प्रयोग गर्नेछौं, जसले सन्तुलन पोलको पछाडि भएको भौतिक विज्ञान अनुकरण गर्नेछ। प्रशिक्षण सुदृढीकरण सिक्ने एल्गोरिदमका लागि सबैभन्दा लोकप्रिय अनुकरण वातावरणहरूमध्ये एक [Gym](https://gym.openai.com/) हो, जुन [OpenAI](https://openai.com/) द्वारा व्यवस्थापन गरिन्छ। यस जिम प्रयोग गरेर हामी कार्टपोल अनुकरणदेखि एटारी खेलसम्म फरक **परिवेश** बनाउन सक्छौं। -> **Note**: तपाईं OpenAI Gym बाट उपलब्ध अन्य वातावरणहरू [यहाँ](https://gym.openai.com/envs/#classic_control) हेर्न सक्नुहुन्छ। +> **टिप्पणी**: तपाईं OpenAI Gym द्वारा उपलब्ध अन्य वातावरणहरू [यहाँ](https://gym.openai.com/envs/#classic_control) हेर्न सक्नुहुन्छ। पहिले, जिम स्थापना गरौं र आवश्यक पुस्तकालयहरू आयात गरौं (कोड ब्लक 1): @@ -20,15 +40,15 @@ import numpy as np import random ``` -## अभ्यास - cartpole वातावरण आरम्भ गर्नुहोस् +## अभ्यास - कार्टपोल वातावरण प्रारम्भ गर्नुहोस् -cartpole सन्तुलन समस्यामा काम गर्न, हामीले सम्बन्धित वातावरण आरम्भ गर्न आवश्यक छ। प्रत्येक वातावरणसँग निम्न कुरा सम्बन्धित हुन्छ: +कार्टपोल सन्तुलन समस्यामा काम गर्न, हामीलाई सम्बन्धित वातावरण प्रारम्भ गर्नुपर्छ। प्रत्येक वातावरणसँग सम्बन्धित हुन्छ: -- **Observation space** जसले वातावरणबाट प्राप्त हुने जानकारीको संरचना परिभाषित गर्दछ। cartpole समस्याको लागि, हामी पोलको स्थिति, वेग र केही अन्य मानहरू प्राप्त गर्छौं। +- **अवलोकन स्थान** जसले वातावरणबाट प्राप्त गर्ने सूचना संरचना परिभाषित गर्दछ। कार्टपोल समस्याका लागि, हामी पोलको स्थिति, गति र केही अन्य मानहरू पाउँछौं। -- **Action space** जसले सम्भावित कार्यहरू परिभाषित गर्दछ। हाम्रो केसमा, action space discrete छ, र दुई कार्यहरू समावेश गर्दछ - **बायाँ** र **दायाँ**। (कोड ब्लक 2) +- **कार्य स्थान** जसले सम्भावित कार्यहरू परिभाषित गर्दछ। हाम्रो अवस्थामा, कार्य क्षेत्र विविक्त छ र दुई कार्यहरू समावेश गर्दछ - **बायाँ** र **दायाँ**। (कोड ब्लक 2) -1. आरम्भ गर्न, निम्न कोड टाइप गर्नुहोस्: +1. प्रारम्भ गर्न, तलको कोड टाइप गर्नुहोस्: ```python env = gym.make("CartPole-v1") @@ -37,11 +57,11 @@ cartpole सन्तुलन समस्यामा काम गर्न, print(env.action_space.sample()) ``` -वातावरण कसरी काम गर्छ हेर्न, 100 चरणहरूको लागि छोटो अनुकरण चलाऔं। प्रत्येक चरणमा, हामीले कार्यहरू प्रदान गर्नुपर्छ - यस अनुकरणमा हामी `action_space` बाट जस्तोसुकै कार्य चयन गर्छौं। +वातावरण कसरी काम गर्छ हेर्न, १०० चरणको छोटो अनुकरण चलाऔं। प्रत्येक चरणमा, हामी लिने कार्य मध्ये एउटा दिन्छौं - यस अनुकरणमा हामी `action_space` बाट बेतरतीब रूपमा एउटा कार्य चयन गर्छौं। -1. तलको कोड चलाउनुहोस् र यसले के परिणाम दिन्छ हेर्नुहोस्। +1. तलको कोड चलाउनुहोस् र परिणाम के हुन्छ हेर्नुहोस्। - ✅ यो कोड स्थानीय Python स्थापना मा चलाउनु राम्रो हुन्छ! (कोड ब्लक 3) + ✅ याद गर्नुहोस् कि यो कोड स्थानीय Python इन्स्टलेसनमा चलाउन सिफारिस गरिन्छ! (कोड ब्लक 3) ```python env.reset() @@ -52,11 +72,11 @@ cartpole सन्तुलन समस्यामा काम गर्न, env.close() ``` - तपाईंले निम्न चित्र जस्तै केही देख्नुपर्छ: + तपाईंले यो तस्बिर जस्तो केही देख्नुपर्नेछ: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![सन्तुलन नगरिएको कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. अनुकरणको क्रममा, हामीले निर्णय गर्नको लागि अवलोकनहरू प्राप्त गर्न आवश्यक छ। वास्तवमा, `step` कार्यले वर्तमान अवलोकनहरू, पुरस्कार कार्य, र `done` फ्ल्याग फर्काउँछ जसले संकेत गर्दछ कि अनुकरण जारी राख्न उपयुक्त छ कि छैन: (कोड ब्लक 4) +1. अनुकरणको क्रममा, हामीले कस्तो कार्य गर्ने निर्णय गर्न अवलोकनहरू लिनुपर्छ। वास्तवमा, स्टेप फंक्शनले हालको अवलोकनहरू, पुरस्कार समारोह र `done` झण्डा फर्काउँछ जुन बताउँछ कि अनुकरण जारी राख्नु उपयुक्त छ कि छैन: (कोड ब्लक 4) ```python env.reset() @@ -69,7 +89,7 @@ cartpole सन्तुलन समस्यामा काम गर्न, env.close() ``` - तपाईंले नोटबुकको आउटपुटमा निम्न जस्तै केही देख्नुहुनेछ: + तपाईं नोटबुकको आउटपुटमा यस्तै केही देख्नुहुनेछ: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ cartpole सन्तुलन समस्यामा काम गर्न, [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - अनुकरणको प्रत्येक चरणमा फर्काइएको अवलोकन भेक्टरले निम्न मानहरू समावेश गर्दछ: + प्रत्येक अनुकरण चरणमा फर्काइएको अवलोकन भेक्टरले यस्ता मानहरू समावेश गर्दछ: - कार्टको स्थिति - - कार्टको वेग + - कार्टको गति - पोलको कोण - - पोलको घुमाउने दर + - पोलको घुम्ने दर -1. ती संख्याहरूको न्यूनतम र अधिकतम मान प्राप्त गर्नुहोस्: (कोड ब्लक 5) +1. ती संख्याहरूको न्यूनतम र अधिकतम मान पाउँ: (कोड ब्लक 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - तपाईंले यो पनि देख्न सक्नुहुन्छ कि प्रत्येक अनुकरण चरणमा पुरस्कार मान सधैं 1 हुन्छ। यसको कारण हाम्रो लक्ष्य यथासम्भव लामो समयसम्म जीवित रहनु हो, अर्थात पोललाई यथासम्भव ठाडो स्थितिमा राख्नु। + तपाईंले अवलोकन गर्नुहुनेछ कि प्रत्येक अनुकरण चरणमा पुरस्कार मान सधैं १ हुन्छ। यसको कारण यो हो कि हाम्रो लक्ष्य सकेसम्म लामो समय सम्म जीवित रहनु, अर्थात पोललाई उचित ठाडो अवस्थामै राख्नु हो। - ✅ वास्तवमा, CartPole अनुकरणलाई समाधान गरिएको मानिन्छ यदि हामीले 100 लगातार प्रयासहरूमा 195 को औसत पुरस्कार प्राप्त गर्न सफल भयौं। + ✅ साँच्चिकै, कार्टपोल अनुकरणलाई परिमार्जन गरिएको मानिन्छ यदि हामीले १०० लगातार प्रयासमा औसत पुरस्कार १९५ प्राप्त गर्न सक्छौं भने। -## अवस्था डिस्क्रिटाइजेसन +## अवस्थाको विविक्तीकरण -Q-Learning मा, हामीले Q-Table निर्माण गर्न आवश्यक छ जसले प्रत्येक अवस्थामा के गर्ने परिभाषित गर्दछ। यो गर्नको लागि, अवस्था **डिस्क्रिट** हुनुपर्छ, अधिक स्पष्ट रूपमा, यसले सीमित संख्याका डिस्क्रिट मानहरू समावेश गर्नुपर्छ। त्यसैले, हामीले कुनै प्रकारले हाम्रो अवलोकनहरू **डिस्क्रिटाइज** गर्न आवश्यक छ, तिनीहरूलाई सीमित सेटको अवस्थाहरूमा म्याप गर्दै। +Q-लर्निङमा, हामीले Q-टेबल निर्माण गर्नुपर्छ जुन हरेक अवस्थामा के गर्ने भन्ने जनाउँछ। यसका लागि, हामीलाई अवस्था **विविक्त** हुनुपर्छ, अर्थात यसले सीमित संख्याका विविक्त मानहरू समावेश गर्नुपर्छ। त्यसैले, हामीले हाम्रो अवलोकनहरूलाई कतै न कतै **विविक्तीकरण** गर्न आवश्यक छ, तिनीहरूलाई सीमित अवस्थाहरूमा नक्साङ्कन गर्न। -यसलाई गर्नका लागि केही तरिकाहरू छन्: +यसका लागि केही तरिकाहरू छन्: -- **बिनहरूमा विभाजन गर्नुहोस्**। यदि हामीलाई कुनै मानको अन्तराल थाहा छ भने, हामी यस अन्तराललाई केही **बिनहरू** मा विभाजन गर्न सक्छौं, र त्यसपछि मानलाई यो बिन नम्बरले प्रतिस्थापन गर्न सक्छौं। यो numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) विधि प्रयोग गरेर गर्न सकिन्छ। यस अवस्थामा, हामीलाई राज्यको आकार ठीकसँग थाहा हुनेछ, किनकि यो डिजिटलाइजेसनका लागि चयन गरिएको बिनहरूको संख्यामा निर्भर हुनेछ। +- **बिनहरूमा विभाजन**। यदि हामीलाई कुनै मानको अन्तराल थाहा छ भने, हामी त्यो अन्तराललाई केही **बिनहरू**मा विभाजन गर्न सक्छौं, र त्यसपछि मानलाई त्यो बिन नम्बरले प्रतिस्थापन गर्न सक्छौं जसमा त्यो पर्छ। यो numpy को [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) विधि प्रयोग गरेर गर्न सकिन्छ। यस अवस्थामा, हामी अवस्थाको आकारलाई ठ्याक्कै जान्नेछौं किनकि यो बिनहरूको संख्यामा निर्भर गर्दछ जुन हामीले डिजिटलाइजेसनका लागि चयन गरेका छौं। + +✅ हामी रैखिक अन्तर्वर्तीकरण (linear interpolation) प्रयोग गरेर मानहरूलाई केही सीमित अन्तराल (जस्तै -२० देखि २० सम्म) ल्याउन सक्छौं, त्यसपछि ती सङ्ख्याहरूलाई पूर्णाङ्कमा परिणत गर्न सक्छौं। यसले हाम्रो अवस्थामा अवस्थाको आकारमा अलि कम नियन्त्रण दिन्छ, विशेषगरी यदि हामीले इनपुट मानहरूको सही श्रेणी थाहा नपाएमा। उदाहरणका लागि, हाम्रो अवस्थामा ४ मध्ये २ मानहरूको माथिल्लो/तल्लो सीमा छैन, जसले अनन्त अवस्थाहरू उत्पादन गर्न सक्छ। -✅ हामीले मानहरूलाई केही सीमित अन्तरालमा (जस्तै, -20 देखि 20 सम्म) ल्याउन र त्यसपछि ती संख्याहरूलाई गोल गरेर पूर्णांकमा रूपान्तरण गर्न रेखीय इन्टरपोलेशन प्रयोग गर्न सक्छौं। यसले राज्यको आकारमा थोरै कम नियन्त्रण दिन्छ, विशेष गरी यदि हामीलाई इनपुट मानहरूको सटीक दायरा थाहा छैन। उदाहरणका लागि, हाम्रो केसमा 4 मध्ये 2 मानहरूको माथिल्लो/तल्लो सीमा छैन, जसले असीमित संख्याका अवस्थाहरू परिणाम दिन सक्छ। +हाम्रो उदाहरणमा, हामी दोस्रो तरिका अपनाउनेछौं। तपाईं पछि देख्नुहुनेछ कि अपरिभाषित माथिल्लो/तल्लो सीमा भए पनि, ती मानहरू प्रायः केही सीमित अन्तरालबाट बाहिर जान सक्दैनन्, त्यसैले ती चरम मानहरू भएका अवस्थाहरू दुर्लभ हुनेछन्। -हाम्रो उदाहरणमा, हामी दोस्रो दृष्टिकोण अपनाउनेछौं। तपाईंले पछि देख्न सक्नुहुनेछ, अपरिभाषित माथिल्लो/तल्लो सीमाहरूको बाबजुद, ती मानहरू विरलै निश्चित सीमित अन्तराल बाहिर मानहरू लिन्छन्, त्यसैले ती चरम मानहरू भएका अवस्थाहरू धेरै दुर्लभ हुनेछन्। - -1. यहाँ एउटा कार्य छ जसले हाम्रो मोडेलबाट अवलोकन लिन्छ र 4 पूर्णांक मानहरूको टपल उत्पादन गर्दछ: (कोड ब्लक 6) +1. यहाँ फङ्क्शन छ जुन हाम्रो मोडेलबाट अवलोकन लिन्छ र चार पूर्णाङ्क मानहरूको टुपल उत्पादन गर्छ: (कोड ब्लक 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. बिनहरू प्रयोग गरेर अर्को डिस्क्रिटाइजेसन विधि अन्वेषण गरौं: (कोड ब्लक 7) +1. अर्को विविक्तीकरण विधि बिनहरू प्रयोग गरेर अन्वेषण गरौं: (कोड ब्लक 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) - ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter - nbins = [20,20,10,10] # number of bins for each parameter + ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # प्रत्येक प्यारामिटरको लागि मानहरूको अन्तरालहरू + nbins = [20,20,10,10] # प्रत्येक प्यारामिटरको लागि बिनहरूको संख्या bins = [create_bins(ints[i],nbins[i]) for i in range(4)] def discretize_bins(x): return tuple(np.digitize(x[i],bins[i]) for i in range(4)) ``` -1. अब छोटो अनुकरण चलाऔं र ती डिस्क्रिट वातावरण मानहरू अवलोकन गरौं। `discretize` र `discretize_bins` दुवै प्रयास गर्न स्वतन्त्र महसुस गर्नुहोस् र कुनै भिन्नता छ कि छैन हेर्नुहोस्। +1. अब छोटो अनुकरण चलाऔं र ती विविक्त वातावरणका मानहरू अवलोकन गरौँ। `discretize` र `discretize_bins` दुवै प्रयोग गरेर देख्न सक्नुहुन्छ फरक छ कि छैन। - ✅ `discretize_bins` बिन नम्बर फर्काउँछ, जुन 0-आधारित हुन्छ। त्यसैले इनपुट चरको मानहरू 0 वरिपरि हुँदा यसले अन्तरालको बीचबाट नम्बर फर्काउँछ (10)। `discretize` मा, हामीले आउटपुट मानहरूको दायराको बारेमा ध्यान दिएनौं, तिनीहरूलाई नकारात्मक हुन अनुमति दिँदै, त्यसैले राज्य मानहरू सरेका छैनन्, र 0 0 सँग मेल खान्छ। (कोड ब्लक 8) + ✅ discretize_bins बिन नम्बर फर्काउँछ, जुन ०-आधारित हुन्छ। त्यसैले इनपुट चरको मानहरू 0 नजिकको लागि यसको मान अन्तरालको मध्य भाग (१०) हुन्छ। discretize मा हामीले आउटपुट मानको सीमा नहेर्ने गर्यौं, जसले नकारात्मक मान राख्न दिनेछ, त्यसैले अवस्थाका मानहरू न सर्ने गरी ० ले ० जनाउँछ। (कोड ब्लक 8) ```python env.reset() @@ -150,15 +170,15 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न env.close() ``` - ✅ `env.render` बाट सुरु हुने लाइन अनकमेण्ट गर्नुहोस् यदि तपाईं वातावरण कसरी कार्यान्वयन हुन्छ हेर्न चाहनुहुन्छ। अन्यथा तपाईं यसलाई पृष्ठभूमिमा कार्यान्वयन गर्न सक्नुहुन्छ, जुन छिटो हुन्छ। हामी हाम्रो Q-Learning प्रक्रियाको क्रममा यो "अदृश्य" कार्यान्वयन प्रयोग गर्नेछौं। + ✅ यदि तपाईंले वातावरण सञ्चालन कसरी हुन्छ हेर्न चाहानुहुन्छ भने env.render को लाइन अनकमेन्‍ट गर्नुहोस्। नत्र यसलाई पृष्ठभूमिमा चलाउन सक्नुहुन्छ जुन छिटो हुन्छ। हामी हाम्रो Q-लर्निङ प्रक्रियामा यो "अदृश्य" सञ्चालन प्रयोग गर्नेछौं। -## Q-Table संरचना +## Q-टेबल संरचना -अघिल्लो पाठमा, अवस्था 0 देखि 8 सम्मका संख्याहरूको साधारण जोडी थियो, र यसैले Q-Table लाई 8x8x2 आकारको numpy टेन्सरद्वारा प्रतिनिधित्व गर्न सुविधाजनक थियो। यदि हामी बिन डिस्क्रिटाइजेसन प्रयोग गर्छौं भने, हाम्रो राज्य भेक्टरको आकार पनि थाहा छ, त्यसैले हामी समान दृष्टिकोण प्रयोग गर्न सक्छौं र राज्यलाई 20x20x10x10x2 आकारको एरेद्वारा प्रतिनिधित्व गर्न सक्छौं (यहाँ 2 कार्य स्थानको आयाम हो, र पहिलो आयामहरू अवलोकन स्थानमा प्रत्येक प्यारामिटरको लागि चयन गरिएको बिनहरूको संख्यालाई प्रतिनिधित्व गर्दछ)। +हाम्रो अघिल्लो पाठमा, अवस्था सजिलो जोडी ० देखि ८ सम्मका संख्याहरू थियो, त्यसैले numpy टेन्सर जसको आकार ८x८x२ थियो Q-टेबल प्रतिनिधित्व गर्न सहज थियो। यदि हामी बिन्स विविक्तीकरण प्रयोग गर्छौं भने, अवस्थाको आकार पनि ज्ञात हुन्छ, त्यसैले हामी उहि तरिका अपनाएर २०x२०x१०x१०x२ आकारको एरेले अवस्थालाई प्रतिनिधित्व गर्न सक्छौं (यहाँ २ कार्य स्थानको आयाम हो, र पहिलेका आयाम अवलोकन स्थानका हरेक प्यारामिटरहरूको लागि चयन गरिएका बिनहरूका सङ्ख्यालाई जनाउँछन्)। -तर, कहिलेकाहीं अवलोकन स्थानको सटीक आयामहरू थाहा हुँदैन। `discretize` कार्यको मामलामा, हामी कहिल्यै निश्चित हुन सक्दैनौं कि हाम्रो अवस्था निश्चित सीमाहरू भित्र रहन्छ, किनकि केही मूल मानहरू बाधित छैनन्। त्यसैले, हामी अलि फरक दृष्टिकोण प्रयोग गर्नेछौं र Q-Table लाई शब्दकोशद्वारा प्रतिनिधित्व गर्नेछौं। +यद्यपि कहिलेकाहीं अवलोकन स्थानका थोरै सही आयामहरू थाहा हुँदैनन्। `discretize` फङ्क्शनको अवस्थामा, हामीले कहिल्यै निश्चित हुन सक्दैनौं कि हाम्रो अवस्था कुनै सीमामा रहन्छ वा छैन, किनकि केहि मूल मानहरू निर्धारण छैनन्। त्यसैले, हामी अलि फरक तरिका अपनाउनेछौं र Q-टेबललाई शब्दकोश (डिक्शनरी) द्वारा प्रतिनिधित्व गर्नेछौं। -1. जोडी *(state,action)* लाई शब्दकोश कुञ्जीको रूपमा प्रयोग गर्नुहोस्, र मान Q-Table प्रविष्टि मानसँग मेल खानेछ। (कोड ब्लक 9) +1. जोडी *(state,action)* लाई डिक्शनरी कुञ्जीको रूपमा प्रयोग गर्नुहोस्, र मान Q-टेबल प्रविष्टि मान हुनेछ। (कोड ब्लक 9) ```python Q = {} @@ -168,38 +188,38 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न return [Q.get((state,a),0) for a in actions] ``` - यहाँ हामीले `qvalues()` नामक कार्य पनि परिभाषित गरेका छौं, जसले Q-Table मानहरूको सूची फर्काउँछ जुन दिइएको अवस्थाका लागि सबै सम्भावित कार्यहरूसँग मेल खान्छ। यदि प्रविष्टि Q-Table मा उपस्थित छैन भने, हामी डिफल्टको रूपमा 0 फर्काउनेछौं। + यहाँ हामीले `qvalues()` फङ्क्शन पनि परिभाषित गरेका छौं, जसले दिइएको अवस्थाका लागि सबै सम्भावित कार्यका Q-टेबल मानहरूको सूची फर्काउँछ। यदि Q-टेबलमा प्रविष्टि छैन भने, हामीले पूर्वनिर्धारित रूपमा ० फर्काउनेछौं। -## अब Q-Learning सुरु गरौं +## Q-लर्निङ सुरु गरौँ -अब हामी पिटरलाई सन्तुलन सिकाउन तयार छौं! +अब हामी पिटरलाई सन्तुलन कायम गर्न सिकाउन तयार छौं! -1. पहिले, केही हाइपरप्यारामिटरहरू सेट गरौं: (कोड ब्लक 10) +1. पहिले, केहि हाइपरप्यारामिटरहरू सेट गरौं: (कोड ब्लक 10) ```python - # hyperparameters + # हाइपरप्यारामिटरहरू alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - यहाँ, `alpha` **सिकाइ दर** हो जसले प्रत्येक चरणमा Q-Table को वर्तमान मानहरू कति हदसम्म समायोजन गर्नुपर्छ भनेर परिभाषित गर्दछ। अघिल्लो पाठमा हामीले 1 बाट सुरु गरेका थियौं, र त्यसपछि प्रशिक्षणको क्रममा `alpha` लाई कम मानहरूमा घटाएका थियौं। यस उदाहरणमा हामी यसलाई स्थिर राख्नेछौं केवल सरलताको लागि, र तपाईं पछि `alpha` मानहरू समायोजन गरेर प्रयोग गर्न सक्नुहुन्छ। - - `gamma` **डिस्काउन्ट फ्याक्टर** हो जसले भविष्यको पुरस्कारलाई वर्तमान पुरस्कारभन्दा कति प्राथमिकता दिनुपर्छ भनेर देखाउँछ। + यहाँ, `alpha` **शिक्षण दर** हो जुन हरेक चरणमा Q-टेबलका हालको मानहरू कति समायोजन गर्ने भन्ने जनाउँछ। अघिल्लो पाठमा हामीले १ बाट सुरु गर्यौं, र त्यसपछि प्रशिक्षणमा `alpha` घटायौं। यहाँ उदाहरणका लागि हामी यसलाई स्थिर राख्छौं, तर तपाईं पछि `alpha` मानहरू समायोजन गरी प्रयोग गर्न सक्नुहुन्छ। - `epsilon` **अन्वेषण/शोषण फ्याक्टर** हो जसले हामीले अन्वेषणलाई शोषणमा प्राथमिकता दिनुपर्छ कि उल्टो भनेर निर्धारण गर्दछ। हाम्रो एल्गोरिदममा, हामी `epsilon` प्रतिशत केसहरूमा Q-Table मानहरू अनुसार अर्को कार्य चयन गर्नेछौं, र बाँकी केसहरूमा हामी जस्तोसुकै कार्य कार्यान्वयन गर्नेछौं। यसले हामीलाई खोज स्थानका क्षेत्रहरू अन्वेषण गर्न अनुमति दिनेछ जुन हामीले पहिले कहिल्यै देखेका छैनौं। + `gamma` **छुटको कारक** हो जसले भविष्यको पुरस्कारलाई हालको पुरस्कार भन्दा कति प्राथमिकता दिने जनाउँछ। - ✅ सन्तुलनको सन्दर्भमा - जस्तोसुकै कार्य चयन गर्नु (अन्वेषण) गलत दिशामा एक प्रकारको अनियमित धक्का जस्तै कार्य गर्नेछ, र पोलले ती "गल्तीहरू" बाट सन्तुलन पुन: प्राप्त गर्न सिक्नुपर्नेछ। + `epsilon` **पत्ता लगाउने/फाइदा उठाउने कारक** हो जुन पत्ता लगाउने वा फाइदा उठाउने पक्षलाई प्राथमिकता दिने जनाउँछ। हाम्रो एल्गोरिदममा, हामी `epsilon` प्रतिशत अवस्थामा Q-टेबल मान अनुसार अर्को कार्य चयन गर्नेछौं, बाँकी अवस्थामा बेतरतीब् कार्य गर्नेछौं। यसले हामीलाई पहिले कहिल्यै नदेखेका खोज क्षेत्रहरूको अन्वेषण गर्न मद्दत गर्नेछ। -### एल्गोरिदम सुधार गर्नुहोस् + ✅ सन्तुलनका सन्दर्भमा - बेतरतीब् कार्य (अन्वेषण) गलत दिशामा एक बेतरतीब् प्रहार जस्तै हुनेछ, र पोलहरूले ती "गल्तीहरू" बाट सन्तुलन पुनःप्राप्ति सिक्नुपर्नेछ। -हामी अघिल्लो पाठबाट हाम्रो एल्गोरिदममा दुई सुधारहरू गर्न सक्छौं: +### एल्गोरिदम सुधार -- **औसत संचयी पुरस्कार गणना गर्नुहोस्**, धेरै अनुकरणहरूमा। हामी प्रत्येक 5000 पुनरावृत्तिमा प्रगति प्रिन्ट गर्नेछौं, र हामी त्यस अवधिको समयको लागि हाम्रो संचयी पुरस्कारलाई औसत गर्नेछौं। यसको मतलब यदि हामीले 195 भन्दा बढी अंक प्राप्त गर्यौं भने - हामीले समस्या समाधान गरेको मान्न सक्छौं, आवश्यकताभन्दा उच्च गुणस्तरको साथ। +हामीले अघिल्लो पाठबाट हाम्रो एल्गोरिदममा दुई सुधार पनि गर्न सक्छौं: -- **अधिकतम औसत संचयी परिणाम गणना गर्नुहोस्**, `Qmax`, र हामीले प्रशिक्षणको क्रममा देखिएको सबैभन्दा राम्रो मोडेलसँग मेल खाने Q-Table भण्डारण गर्नेछौं। जब तपाईंले प्रशिक्षण चलाउनुहुन्छ, तपाईंले देख्नुहुनेछ कि कहिलेकाहीं औसत संचयी परिणाम घट्न थाल्छ, र हामीले Q-Table को मानहरू राख्न चाहन्छौं जुन खराब स्थिति बनाउने मानहरूसँग मेल खान्छ। +- **औसत संचयी पुरस्कार गणना गर्नुहोस्**, धेरै अनुकरणहरूमा। हामी प्रत्येक ५००० पुनरावृत्तिमा प्रगति मुद्रित गर्नेछौं, र त्यो अवधिमा हुने संचयी पुरस्कारको औसत निकाल्नेछौं। यसको अर्थ यदि हामीले १९५ भन्दा बढी अंक पायौं भने - हामी समस्यालाई समाधान गरिएको मान्न सक्छौं, अझ राम्रो गुणस्तरसहित। + +- **अधिकतम औसत संचयी परिणाम गणना गर्नुहोस्**, `Qmax` भन्ने, र त्यो परिणामसँग मिल्ने Q-टेबल भण्डारण गर्नेछौं। प्रशिक्षण चलाउँदा कहिलेकाहीं औसत संचयी परिणाम घट्न सक्छ, र हामी प्रशिक्षणको क्रममा देखिएका उत्कृष्ट मोडेलसँग मेल खाने Q-टेबल मानहरू राख्न चाहन्छौं। -1. प्रत्येक अनुकरणमा संचयी पुरस्कारहरू `rewards` भेक्टरमा संकलन गर्नुहोस् भविष्यमा प्लटिङको लागि। (कोड ब्लक 11) +1. प्रत्येक अनुकरणमा सबै संचयी पुरस्कारहरू `rewards` भेक्टरमा सङ्कलन गर्नुहोस् ताकि पछि प्लटिङ गर्न सकियोस। (कोड ब्लक 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == अनुकरण गर्नुहोस् == while not done: s = discretize(obs) if random.random() Qmax: @@ -240,25 +260,25 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न cum_rewards=[] ``` -तपाईंले ती परिणामहरूबाट निम्न कुरा देख्न सक्नुहुन्छ: +तपाईंलाई ती परिणामहरूबाट देख्न सकिने कुराहरू: -- **हाम्रो लक्ष्य नजिक**। हामी 100+ लगातार अनुकरणहरूको औसत पुरस्कार 195 प्राप्त गर्ने लक्ष्य प्राप्त गर्न धेरै नजिक छौं, वा हामीले वास्तवमा यसलाई प्राप्त गर्यौं! यदि हामीले साना संख्याहरू प्राप्त गर्यौं भने पनि, हामी अझै थाहा पाउँदैनौं, किनकि हामी 5000 रनहरूमा औसत गर्छौं, र औपचारिक मापदण्डमा केवल 100 रन आवश्यक छ। +- **हाम्रो लक्ष्य नजिकै**। हामी १०० भन्दा बढी लगातार अनुकरण रनहरूमा १९५ संचयी पुरस्कार प्राप्त गर्ने लक्ष्य नजिक छौं, वा सायद प्राप्त गरिसकेका छौं! यदि सानो मानहरू प्राप्त भएपनि, हामीले ५००० रनको औसत लिइरहेका छौं र आधिकारिक मापदण्डमा कागजी रूपमा १०० रन पुग्न पुग्छ। + +- **पुरस्कार घट्न शुरु हुन्छ**। कहिलेकाहीं पुरस्कार घट्न थाल्छ, जसको अर्थ हामीले पहिले सिकेका Q-टेबल मूल्यहरू नोक्सान गर्न सकिरहेका छौं जुन स्थिति खराब पार्छ। -- **पुरस्कार घट्न थाल्छ**। कहिलेकाहीं पुरस्कार घट्न थाल्छ, जसको मतलब हामीले Q-Table मा पहिले सिकेका मानहरूलाई "नष्ट" गर्न सक्छौं जसले स्थिति खराब बनाउने मानहरूसँग मेल खान्छ। - -यो अवलोकन अझ स्पष्ट रूपमा देखिन्छ यदि हामी प्रशिक्षण प्रगति प्लट गर्छौं। +प्रशिक्षण प्रगतिको प्लट गरेपछि यो अवलोकन अझ प्रष्ट देखिन्छ। ## प्रशिक्षण प्रगति प्लटिङ -प्रशिक्षणको क्रममा, हामीले प्रत्येक पुनरावृत्तिमा संचयी पुरस्कार मानलाई `rewards` भेक्टरमा संकलन गरेका छौं। यहाँ यो पुनरावृत्ति नम्बरको विरुद्धमा प्लट गर्दा कस्तो देखिन्छ: +प्रशिक्षणका दौरान, हामी प्रत्येक पुनरावृत्तिमा संचयी पुरस्कार सङ्कलन गर्यौं `rewards` भेक्टरमा। तल यसलाई पुनरावृत्ति सङ्ख्याको विरुद्ध प्लट गर्नुको तरिका छ: ```python plt.plot(rewards) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![कच्चा प्रगति](../../../../translated_images/ne/train_progress_raw.2adfdf2daea09c59.webp) -यस ग्राफबाट केही भन्न सम्भव छैन, किनकि स्टोकेस्टिक प्रशिक्षण प्रक्रियाको प्रकृतिका कारण प्रशिक्षण सत्रहरूको लम्बाइ धेरै भिन्न हुन्छ। यस ग्राफलाई अझ अर्थपूर्ण बनाउन, हामी 100 जस्तै प्रयोगहरूको श्रृंखलामा **चलिरहेको औसत** गणना गर्न सक्छौं। यो `np.convolve` प्रयोग गरेर सुविधाजनक रूपमा गर्न सकिन्छ: (कोड ब्लक 12) +यस ग्राफबाट केही भन्न सकिन्न किनकि संख्यात्मक प्रशिक्षण प्रक्रियाको स्वभावले प्रशिक्षण सत्रहरूको लम्बाइ धेरै फरक हुन्छ। यसको अर्थ बुझ्न, हामी श्रृंखलाबद्ध प्रयोगहरूको **चलिरहेको औसत** गणना गर्न सक्छौं, जस्तै १००। यो सजिलै `np.convolve` प्रयोग गरेर गर्न सकिन्छ: (कोड ब्लक 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![प्रशिक्षण प्रगति](../../../../translated_images/ne/train_progress_runav.c71694a8fa9ab359.webp) + +## हाइपरप्यारामिटरहरू परिवर्तन गर्दै + +सिकाइलाई स्थिर बनाउन, हामीले प्रशिक्षणका दौरान हाम्रा केहि हाइपरप्यारामिटरहरू समायोजन गर्न सक्छौं। विशेषतः: + +- **शिक्षण दर `alpha` को लागि**, हामी सुरुमा १ नजिकको मानबाट सुरु गर्न सक्छौं, त्यसपछि यो घटाउन सक्छौं। समयसँगै, हामीले Q-टेबलमा राम्रो सम्भाव्यता मानहरू पाइरहेका छौं, त्यसैले सानोतिनो समायोजन ठीक छ, पूर्ण नयाँ मानहरूले नबद्लिने। -## हाइपरप्यारामिटरहरू फरक पार्दै +- **`epsilon` बढाउनुहोस्**। हामी बिस्तारै `epsilon` बढाउन सक्छौं, यसरी अन्वेषण कम र फाइदा उठाउने बढी हुनेछ। सम्भावित रूपमा `epsilon` सानो मानले सुरु गर्नु र लगभग १ सम्म पुर्याउनु ठीक हुन्छ। -सिकाइलाई अझ स्थिर बनाउन, प्रशिक्षणको क्रममा केही हाइपरप्यारामिटरहरू समायोजन गर्नु उपयुक्त हुन्छ। विशेष गरी: +> **कार्य १**: हाइपरप्यारामिटर मानहरू मिलाएर हेर्नुहोस् र उच्च संचयी पुरस्कार प्राप्त गर्न सक्नुहुन्छ कि छैन। के तपाईं १९५ भन्दा माथि पुग्नुहुन्छ? -- **सिकाइ दरको लागि**, `alpha`, हामी 1 नजिकको मानबाट सुरु गर्न सक्छौं, र त्यसपछि प्यारामिटर घटाउन जारी राख्न सक्छौं। समयसँगै, हामीले Q-Table मा राम्रो सम्भावना मानहरू प्राप्त गर्नेछौं, र त्यसैले हामीले तिनीहरूलाई थोरै समायोजन गर्नुपर्छ, र नयाँ मानहरूसँग पूर्ण रूपमा ओभरराइट गर्नु हुँदैन। -- **epsilon बढाउनुहोस्**। हामीले `epsilon` लाई बिस्तारै बढाउन चाहन सक्छौं, कम अन्वेषण गर्न र बढी शोषण गर्न। सम्भवतः `epsilon` को कम मानबाट सुरु गर्नु र लगभग 1 सम्म बढाउनु उपयुक्त हुन्छ। -> **कार्य १**: हाइपरप्यारामिटरका मानहरू परिवर्तन गरेर खेल्नुहोस् र उच्च क्युमुलेटिभ पुरस्कार प्राप्त गर्न सक्नुहुन्छ कि हेर्नुहोस्। के तपाईं १९५ भन्दा माथि प्राप्त गर्दै हुनुहुन्छ? -> **कार्य २**: समस्यालाई औपचारिक रूपमा समाधान गर्न, तपाईंले १०० लगातार रनहरूमा १९५ औसत इनाम प्राप्त गर्नुपर्नेछ। प्रशिक्षणको क्रममा यो मापन गर्नुहोस् र सुनिश्चित गर्नुहोस् कि तपाईंले समस्यालाई औपचारिक रूपमा समाधान गर्नुभएको छ! +> **कार्य २**: समस्यालाई औपचारिक रूपमा समाधान गर्नको लागि, तपाईले १०० लगातार रनहरूमा १९५ औसत पुरस्कार पाउनुपर्छ। तालिमको दौरान त्यसलाई मापन गर्नुहोस् र पक्का गर्नुहोस् कि तपाईले औपचारिक रूपमा समस्यालाई समाधान गर्नुभएको छ! -## नतिजा कार्यान्वयनमा हेर्दै +## परिणामलाई प्रत्यक्षमा हेर्नुहोस् -यो हेर्न रोचक हुनेछ कि प्रशिक्षित मोडेल कसरी व्यवहार गर्छ। आउनुहोस्, सिमुलेशन चलाउँछौं र प्रशिक्षणको क्रममा जस्तै कार्य चयन रणनीति अनुसरण गरौं, Q-Table मा रहेको सम्भाव्यता वितरण अनुसार नमूना लिऔं: (कोड ब्लक १३) +तालिम प्राप्त मोडेल कस्तो व्यवहार गर्छ भनेर वास्तविक रुपमा हेर्न रोचक हुने थियो। आउनुहोस् सिमुलेशन चलाउँ र तालिमको समयमा जस्तै कार्य चयन रणनीति पालन गरौं, Q-टेबलमा रहेको सम्भावनाको वितरण अनुसार नमूनाको चयन गरौं: (कोड ब्लक १३) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -तपाईंले केही यस प्रकारको देख्नुहुनेछ: +तपाईलाई यस प्रकार केही देखिनु पर्छ: -![एक सन्तुलित कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀चुनौती -> **कार्य ३**: यहाँ हामीले Q-Table को अन्तिम प्रतिलिपि प्रयोग गरिरहेका थियौं, जुन सधैं उत्तम नहुन सक्छ। सम्झनुहोस् कि हामीले सबैभन्दा राम्रो प्रदर्शन गर्ने Q-Table लाई `Qbest` भेरिएबलमा भण्डारण गरेका छौं! `Qbest` लाई `Q` मा प्रतिलिपि गरेर, उही उदाहरण प्रयास गर्नुहोस् र के तपाईंले कुनै फरक देख्नुहुन्छ कि हेर्नुहोस्। +> **कार्य ३**: यहाँ, हामीले Q-टेबलको अन्तिम कपी प्रयोग गरिरहेका थियौं, जुन उत्तम छैन पनि सक्छ। याद गर्नुहोस् कि हामीले सबैभन्दा राम्रो प्रदर्शन गर्ने Q-टेबललाई `Qbest` परिवर्तनशीलमा भण्डारण गरेका छौं! `Qbest` लाई `Q` मा कपी गरेर उत्तम प्रदर्शन गर्ने Q-टेबलसँग उही उदाहरण प्रयास गर्नुहोस् र के फरक छ भनेर हेर्नुहोस्। -> **कार्य ४**: यहाँ हामीले प्रत्येक चरणमा सबैभन्दा राम्रो कार्य चयन गरिरहेका थिएनौं, बरु सम्बन्धित सम्भाव्यता वितरणसँग नमूना लिइरहेका थियौं। के यो सधैं सबैभन्दा राम्रो कार्य चयन गर्न अधिक उपयुक्त हुनेछ, जसको Q-Table मान सबैभन्दा उच्च छ? यो `np.argmax` फंक्शन प्रयोग गरेर, सबैभन्दा उच्च Q-Table मानसँग सम्बन्धित कार्य नम्बर पत्ता लगाएर गर्न सकिन्छ। यो रणनीति कार्यान्वयन गर्नुहोस् र के यसले सन्तुलन सुधार गर्छ कि हेर्नुहोस्। +> **कार्य ४**: यहाँ हामी प्रत्येक कदममा सबैभन्दा राम्रो कार्य चयन गरिरहेका थियैनौं, बरु सम्बद्ध सम्भावना वितरण अनुसार नमूना गर्दै थियौं। के सधैं सबैभन्दा राम्रो कार्य, जसको Q-टेबल मान सबैभन्दा बढी छ, चयन गर्दा बढी मतलब लाग्दछ? यो `np.argmax` फङ्सन प्रयोग गरेर सबैभन्दा बढी Q-टेबल मान भएको कार्य नम्बर थाहा पाउन सकिन्छ। यो रणनीति कार्यान्वयन गर्नुहोस् र हेर्नुहोस् के यसले सन्तुलन सुधार्छ कि होइन। -## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पाठ-पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) -## असाइनमेन्ट -[माउन्टेन कारलाई प्रशिक्षण दिनुहोस्](assignment.md) +## असाइन्मेन्ट +[एउटा माउन्टेन कार तालिम गर्नुहोस्](assignment.md) ## निष्कर्ष -हामीले अब एजेन्टहरूलाई राम्रो नतिजा प्राप्त गर्न कसरी प्रशिक्षण दिने भनेर सिकेका छौं, केवल तिनीहरूलाई खेलको इच्छित अवस्थालाई परिभाषित गर्ने इनाम फंक्शन प्रदान गरेर, र तिनीहरूलाई खोज स्थानलाई बुद्धिमानीपूर्वक अन्वेषण गर्ने अवसर दिएर। हामीले Q-Learning एल्गोरिदमलाई छुट्टै र निरन्तर वातावरणहरूको अवस्थामा सफलतापूर्वक लागू गरेका छौं, तर छुट्टै कार्यहरूसँग। +हामीले अब सिक्यौं कसरी एजेन्टहरुलाई राम्रो नतिजा पाउनको लागि एउटा पुरस्कार कार्य प्रदान गरेर, जुन खेलको इच्छित अवस्थालाई परिभाषित गर्छ, र उनीहरुलाई बुद्धिमत्तापूर्वक खोज क्षेत्र अनुसन्धान गर्ने अवसर दिएर प्रशिक्षित गर्ने। हामीले Q-लर्निङ एल्गोरिदमलाई द्विसंख्य र निरन्तर वातावरणहरूमा सफलतापूर्वक लागू गरेका छौं, तर द्विसंख्य क्रियाहरुसँग। -यो पनि अध्ययन गर्नु महत्त्वपूर्ण छ कि जहाँ कार्य अवस्था पनि निरन्तर हुन्छ, र अवलोकन स्थान धेरै जटिल हुन्छ, जस्तै Atari खेलको स्क्रिनबाट आएको छवि। यस्ता समस्याहरूमा हामीले प्रायः राम्रो नतिजा प्राप्त गर्न थप शक्तिशाली मेसिन लर्निङ प्रविधिहरू, जस्तै न्यूरल नेटवर्कहरू, प्रयोग गर्न आवश्यक पर्छ। ती थप उन्नत विषयवस्तुहरू हाम्रो आगामी उन्नत AI पाठ्यक्रमको विषयवस्तु हुन्। +त्यस्तै, यस्तो अवस्था अध्ययन गर्नु पनि महत्त्वपूर्ण छ जहाँ क्रिया अवस्था पनि निरन्तर हुन्छ, र अवलोकन क्षेत्र धेरै जटिल हुन्छ, जस्तै एटारी गेम स्क्रिनबाट आएका छविहरू। ती समस्याहरुमा सामान्यतः प्रभावकारी नतिजा प्राप्त गर्न अधिक सक्षम मेसिन लर्निङ प्रविधिहरु, जस्तै न्यूरल नेटवर्कहरू प्रयोग गर्नुपर्ने हुन्छ। ती उन्नत विषयहरू हाम्रो आगामी उन्नत AI कोर्सको विषय हुन्। --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं। + \ No newline at end of file diff --git a/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md b/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md index 4f1c1b74e..c71b583d7 100644 --- a/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,150 +1,171 @@ -# पोस्टस्क्रिप्ट: जिम्मेवार AI ड्यासबोर्ड कम्पोनेन्टहरू प्रयोग गरेर मेसिन लर्निङ मोडेल डिबगिङ - -## [प्री-लेक्चर क्विज](https://ff-quizzes.netlify.app/en/ml/) +# पोष्टस्क्रिप्ट: जिम्मेवार AI ड्यासबोर्ड कम्पोनेन्टहरूको उपयोग गरी मेसिन लर्निङमा मोडल डिबगिङ + +## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/) + ## परिचय -मेसिन लर्निङले हाम्रो दैनिक जीवनलाई प्रभाव पार्छ। AI स्वास्थ्य सेवा, वित्त, शिक्षा, र रोजगारी जस्ता क्षेत्रहरूमा प्रवेश गर्दैछ, जसले व्यक्तिगत रूपमा हामीलाई र हाम्रो समाजलाई असर गर्ने महत्त्वपूर्ण प्रणालीहरूमा भूमिका खेल्छ। उदाहरणका लागि, स्वास्थ्य सेवा निदान वा ठगी पत्ता लगाउने जस्ता दैनिक निर्णय प्रक्रियाहरूमा प्रणालीहरू र मोडेलहरू संलग्न छन्। यसका परिणामस्वरूप, AI को प्रगतिहरू र यसको तीव्र अपनत्वसँगै समाजका अपेक्षाहरू विकसित हुँदैछन् र सरकारहरूले AI समाधानहरूलाई नियमन गर्न थालेका छन्। त्यसैले, यी मोडेलहरूलाई सबैका लागि निष्पक्ष, भरपर्दो, समावेशी, पारदर्शी, र उत्तरदायी परिणामहरू प्रदान गर्न विश्लेषण गर्नु महत्त्वपूर्ण छ। +मेसिन लर्निङले हाम्रो दैनिक जीवनमा प्रभाव पार्दछ। AI हामीलाई व्यक्तिगत तथा समाजको रूपमा प्रभाव पार्ने सबैभन्दा महत्वपूर्ण प्रणालीहरूमा मार्ग बनाउँदैछ, स्वास्थ्य सेवा, वित्तीय सेवा, शिक्षा, र रोजगारदेखि। उदाहरणका लागि, प्रणाली र मोडेलहरू दैनिक निर्णय-निर्माण कार्यहरूमा संलग्न छन्, जस्तै स्वास्थ्य सेवा निदान वा धोखाधडी पत्ता लगाउने। नतिजाको रूपमा, AI मा प्रगति र यसको तिव्र अपनत्वले सामाजिक अपेक्षाहरू विकास भइरहेका छन् र यसको जवाफ स्वरूप नियमहरू बढिरहेका छन्। हामी निरन्तर यी क्षेत्रहरू देख्छौं जहाँ AI प्रणालीहरूले अपेक्षाहरू पूरा गर्न नसक्दछन्; तिनीहरूले नयाँ चुनौतीहरू उठाउँछन्; र सरकारले AI समाधानहरूलाई नियमन गर्न सुरु गरेको छ। त्यसैले, यी मोडेलहरूलाई सबैका लागि न्यायपूर्ण, भरपर्दो, समावेशी, पारदर्शी, र जवाफदेही परिणामहरू दिनका लागि विश्लेषण गर्नु महत्त्वपूर्ण छ। -यस पाठ्यक्रममा, हामी व्यावहारिक उपकरणहरूको अध्ययन गर्नेछौं जसले मोडेलमा जिम्मेवार AI सम्बन्धी समस्या छ कि छैन भनेर मूल्याङ्कन गर्न मद्दत गर्दछ। परम्परागत मेसिन लर्निङ डिबगिङ प्रविधिहरू प्रायः मात्रात्मक गणनाहरूमा आधारित हुन्छन्, जस्तै समग्र सटीकता वा औसत त्रुटि हानि। कल्पना गर्नुहोस् कि तपाईंले मोडेल निर्माण गर्न प्रयोग गरेको डाटामा जाति, लिङ्ग, राजनीतिक विचार, धर्म जस्ता जनसांख्यिकीय समूहहरू अनुपस्थित छन् वा असमान रूपमा प्रतिनिधित्व गरिएको छ। यदि मोडेलको नतिजा कुनै जनसांख्यिकीय समूहलाई प्राथमिकता दिन व्याख्या गरिन्छ भने के हुन्छ? यसले संवेदनशील विशेषता समूहहरूको अत्यधिक वा न्यून प्रतिनिधित्वलाई परिचय गराउन सक्छ, जसले मोडेलमा निष्पक्षता, समावेशिता, वा भरपर्दो समस्याहरू उत्पन्न गर्न सक्छ। अर्को चुनौती भनेको मेसिन लर्निङ मोडेलहरू "ब्ल्याक बक्स" मानिन्छन्, जसले मोडेलको भविष्यवाणीलाई के चलाउँछ भन्ने कुरा बुझ्न र व्याख्या गर्न कठिन बनाउँछ। जब डाटा वैज्ञानिकहरू र AI विकासकर्ताहरूले मोडेलको निष्पक्षता वा विश्वासयोग्यता मूल्याङ्कन गर्न पर्याप्त उपकरणहरू नभएको अवस्थामा यी सबै चुनौतीहरू देखा पर्छन्। +यस पाठ्यक्रममा, हामी व्यावहारिक उपकरणहरू हेर्नेछौं जसले मोडलमा जिम्मेवार AI का समस्याहरू छ कि छैन जाँच्न सक्छ। परम्परागत मेसिन लर्निङ डिबगिङ प्रविधिहरू सामान्यतया संख्यात्मक गणनाहरूमा आधारित हुन्छन् जस्तै समग्र सटीकता वा औसत त्रुटि हानि। कल्पना गर्नुहोस् जब तपाईं प्रयोग गरिरहेको डेटामा केही जातीयता, लिंग, राजनीतिक दृष्टिकोण, धर्म जस्ता जनसांख्यिकीयहरू अभाव छ वा असमान रूपमा प्रतिनिधित्व गरिएको छ भने के हुन सक्छ। के हुन्छ जब मोडलको आउटपुट केहि जनसांख्यिकीयलाई प्राथमिकता दिने गरी व्याख्या गरिन्छ? यसले संवेदनशील विशेषता समूहहरूको अत्यधिक वा कम प्रतिनिधित्वलाई जन्म दिन सक्छ जसले मोडेलबाट न्याय, समावेशीता, वा भरपर्दो समस्या निम्त्याउँछ। अर्को पक्ष, मेसिन लर्निङ मोडेलहरूलाई ब्ल्याक बक्स मानिन्छ, जसले मोडेलको भविष्यवाणी के द्वारा परिचालित छ बुझ्न र व्याख्या गर्न गाह्रो बनाउँछ। यी सबै चुनौतीहरू डाटा वैज्ञानिक र AI विकासकर्ताहरूले सामना गर्छन् जब उनीहरूसँग मोडलको न्याय वा विश्वसनीयता मूल्यांकन गर्न पर्याप्त उपकरण हुँदैन। -यस पाठमा, तपाईं आफ्नो मोडेलहरू डिबग गर्न निम्न विधिहरू सिक्नुहुनेछ: +यस पाठमा, तपाईंले तलका उपकरणहरूसँग आफ्नो मोडल डिबग गर्ने तरिका सिक्नु हुनेछ: -- **त्रुटि विश्लेषण**: डाटा वितरणको कुन भागमा मोडेलको उच्च त्रुटि दर छ भनेर पहिचान गर्नुहोस्। -- **मोडेल अवलोकन**: विभिन्न डाटा समूहहरूमा तुलनात्मक विश्लेषण गरेर मोडेलको प्रदर्शन मेट्रिक्समा असमानता पत्ता लगाउनुहोस्। -- **डाटा विश्लेषण**: डाटाको अत्यधिक वा न्यून प्रतिनिधित्व कहाँ छ भनेर अनुसन्धान गर्नुहोस्, जसले मोडेललाई एक डाटा जनसांख्यिकीयलाई अर्कोभन्दा बढी प्राथमिकता दिन प्रेरित गर्न सक्छ। -- **विशेषता महत्त्व**: मोडेलको भविष्यवाणीलाई विश्वव्यापी वा स्थानीय स्तरमा कुन विशेषताहरूले चलाइरहेका छन् भनेर बुझ्नुहोस्। +- **त्रुटि विश्लेषण**: तपाईंको डेटा वितरणमा मोडललाई उच्च त्रुटि दर कहाँ छ पहिचान गर्नुहोस्। +- **मोडेल अवलोकन**: विभिन्न डेटा समूहहरूमा तुलनात्मक विश्लेषण गरेर मोडेलको प्रदर्शन मेट्रिक्समा भिन्नता पत्ता लगाउनुहोस्। +- **डेटा विश्लेषण**: तपाईंको डेटा कहाँ अत्यधिक वा कम प्रतिनिधित्व हुन सक्छ जाँच गरेर मोडेलले कुनै एक जनसांख्यिकीयलाई प्राथमिकता दिने तरिका पत्ता लगाउनुहोस्। +- **विशेषता महत्व**: कुन विशेषताहरूले तपाईंको मोडलका भविष्यवाणिहरूलाई विश्वव्यापी वा स्थानीय स्तरमा संचालित गरिरहेका छन् बुझ्नुहोस्। -## पूर्वशर्त +## पूर्वाधार -पूर्वशर्तको रूपमा, कृपया [जिम्मेवार AI उपकरणहरूका लागि समीक्षा](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) गर्नुहोस्। +पूर्वाधारको रूपमा, कृपया समीक्षा गर्नुहोस् [जिम्मेवार AI विकासकर्ता उपकरणहरू](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)। -> ![जिम्मेवार AI उपकरणहरूमा GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![जिम्मेवार AI उपकरणहरूको गिफ](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## त्रुटि विश्लेषण -परम्परागत मोडेल प्रदर्शन मेट्रिक्स, जस्तै सटीकता मापन, प्रायः सही र गलत भविष्यवाणीहरूको गणनामा आधारित हुन्छ। उदाहरणका लागि, यदि मोडेल ८९% समय सटीक छ र त्रुटि हानि ०.००१ छ भने यो राम्रो प्रदर्शन मान्न सकिन्छ। तर त्रुटिहरू डाटाको आधारभूत सेटमा समान रूपमा वितरण भएका हुँदैनन्। तपाईंले ८९% सटीकता स्कोर प्राप्त गर्न सक्नुहुन्छ तर पत्ता लगाउन सक्नुहुन्छ कि डाटाको केही क्षेत्रहरूमा मोडेल ४२% समय असफल भइरहेको छ। यी असफलता ढाँचाहरूले निष्पक्षता वा भरपर्दो समस्याहरू उत्पन्न गर्न सक्छ। मोडेलले राम्रो प्रदर्शन गरिरहेको क्षेत्रहरू र खराब प्रदर्शन गरिरहेको क्षेत्रहरू बुझ्न महत्त्वपूर्ण छ। डाटाको ती क्षेत्रहरू जहाँ मोडेलको उच्च त्रुटि दर छ, महत्त्वपूर्ण जनसांख्यिकीय समूह हुन सक्छ। +परम्परागत मोडल प्रदर्शन मेट्रिक्सहरू प्रायः सही र गलत भविष्यवाणीहरूको आधारमा गणना गरिन्छ। उदाहरणका लागि, मोडल ८९% समय सटीक छ र त्रुटि हानि ०.००१ छ भन्ने निर्धारण राम्रो प्रदर्शन मानिन्छ। त्रुटिहरू सामान्यतः तपाईंको आधारभूत डेटासेटमा समान रूपमा वितरित हुँदैनन्। तपाईंले ८९% मोडल सटीकता पाउनसक्नुहुन्छ तर पत्ता लगाउनसक्नुहुन्छ कि मोडल केही डेटा भूभागहरूमा ४२% समय असफल हुन्छ। यी असफलताको ढाँचाहरूले केही डेटा समूहमा न्याय वा भरपर्दो समस्या निम्त्याउन सक्छ। मोडलले राम्रो वा खराब प्रदर्शन गरिरहेको क्षेत्रहरू बुझ्नु आवश्यक छ। त्यस्ता डेटा क्षेत्रहरू जहाँ मोडलमा धेरै अशुद्धि हुन्छ, त्यहाँ महत्वपूर्ण डेटा जनसांख्यिकीय हुन सक्छ। + +![मोडेल त्रुटिहरू विश्लेषण र डिबग](../../../../translated_images/ne/ea-error-distribution.117452e1177c1dd8.webp) + +RAI ड्यासबोर्डमा त्रुटि विश्लेषण कम्पोनेन्टले विभिन्न समूहहरूमा मोडेल असफलता कसरी वितरण गरिएको छ भनी वृक्ष दृश्यशैलीमा देखाउँछ। यसले तपाईंको डेटासेटमा ठूलो त्रुटि दर भएका विशेषता वा क्षेत्रहरू पहिचान गर्न मद्दत गर्छ। मोडेलका अधिकांश अशुद्धिहरू कहाँबाट आउँछन् हेरेर, तपाईँ जरा कारण अनुसन्धान गर्न सुरु गर्न सक्नुहुन्छ। तपाईं विश्लेषण गर्न डेटा समूहहरू पनि बनाउन सक्नुहुन्छ। यी डेटा समूहहरूले डिबगिङ प्रक्रियामा मद्दत गर्छन् किनभने मोडेलको प्रदर्शन एक समूहमा राम्रो छ तर अर्कोमा गलत छ भनेर बुझ्न। + +![त्रुटि विश्लेषण](../../../../translated_images/ne/ea-error-cohort.6886209ea5d438c4.webp) -![मोडेल त्रुटिहरू विश्लेषण र डिबग गर्नुहोस्](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +वृक्ष नक्सामा दृश्य संकेतहरूले समस्या क्षेत्र छिटो पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, वृक्ष नोडको गाढा रातो छायाँले त्रुटि दर उच्च छ जनाउँछ। -RAI ड्यासबोर्डको त्रुटि विश्लेषण कम्पोनेन्टले विभिन्न समूहहरूमा मोडेल असफलता कसरी वितरण भएको छ भनेर ट्री भिजुअलाइजेसनमार्फत देखाउँछ। यो डाटासेटमा उच्च त्रुटि दर भएका विशेषताहरू वा क्षेत्रहरू पहिचान गर्न उपयोगी छ। मोडेलको अधिकांश त्रुटिहरू कहाँबाट आइरहेका छन् भनेर हेरेर, तपाईंले समस्याको जड पत्ता लगाउन सुरु गर्न सक्नुहुन्छ। तपाईं डाटाको समूहहरू सिर्जना गरेर विश्लेषण गर्न सक्नुहुन्छ। यी समूहहरूले डिबगिङ प्रक्रियामा मद्दत गर्छन् कि किन मोडेलको प्रदर्शन एक समूहमा राम्रो छ तर अर्कोमा त्रुटिपूर्ण छ। +हीट म्याप अर्को दृश्यता सुविधा हो जसले प्रयोगकर्ताहरूलाई एक वा दुई विशेषता प्रयोग गरी पूरा डेटासेट वा समूहहरूमा मोडेल त्रुटिहरूको कारण खोज्न मद्दत पुर्‍याउँछ। -![त्रुटि विश्लेषण](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![त्रुटि विश्लेषण हीटम्याप](../../../../translated_images/ne/ea-heatmap.8d27185e28cee383.webp) -ट्री म्यापमा गाढा रातो रंगको छायाँले समस्या क्षेत्रहरू छिटो पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, ट्री नोडमा गाढा रातो रंगको छायाँ छ भने, त्रुटि दर उच्च छ। +त्रुटि विश्लेषण निम्न अवस्थामा प्रयोग गर्नुहोस्: -हीट म्याप अर्को भिजुअलाइजेसन कार्यक्षमता हो, जसले प्रयोगकर्ताहरूलाई एक वा दुई विशेषताहरू प्रयोग गरेर त्रुटि दर अनुसन्धान गर्न मद्दत गर्छ, जसले सम्पूर्ण डाटासेट वा समूहहरूमा मोडेल त्रुटिहरूको योगदानकर्ता पत्ता लगाउन मद्दत गर्छ। +* मोडेल असफलताहरू कसरी डेटासेट र विभिन्न इनपुट र विशेषता आयामहरूमा वितरण छन् गहिरो रूपमा बुझ्न। +* समग्र प्रदर्शन मेट्रिक्सहरू तोड्नु र स्वतः गलत समूहहरू फेला पार्नु जसले लक्षित समाधान कदमहरूलाई जानकारी दिन्छ। -![त्रुटि विश्लेषण हीटम्याप](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +## मोडल अवलोकन -त्रुटि विश्लेषण प्रयोग गर्नुहोस् जब तपाईंलाई चाहिन्छ: +मेसिन लर्निङ मोडलको प्रदर्शन मूल्यांकन गर्दा यसको व्यवहारको समग्र बुझाइ हुनु आवश्यक छ। यो त्रुटि दर, सटीकता, रिक्याल, प्रेसिजन, वा MAE (मिन एब्सोल्युट एरर) जस्ता एक भन्दा बढी मेट्रिक्स समीक्षा गरेर प्राप्त गर्न सकिन्छ जसले प्रदर्शन मेट्रिक्सहरू बीच भिन्नता पत्ता लगाउँछ। एक प्रदर्शन मेट्रिक राम्रो देखिए पनि अर्को मेट्रिकमा अशुद्धिहरू देख्न सकिन्छ। साथै, सम्पूर्ण डेटासेट वा समूहहरूमा भिन्नता तुलना गर्दा मोडेल कुन ठाउँमा राम्रो गरिरहेको छ वा छैन थाहा हुन्छ। यो विशेष गरी संवेदनशील बनाम असंवेदनशील विशेषताहरू (जस्तै, बिरामीको जात, लिंग, उमेर) बीच मोडेलको प्रदर्शन हेर्न महत्वपूर्ण छ जसले सम्भावित अन्याय पत्ता लगाउन मद्दत गर्दछ। उदाहरणका लागि, संवेदनशील विशेषता भएको समूहमा मोडेल बढी अशुद्ध छ भने सम्भावित अन्याय देखाउन सक्छ। -* मोडेल असफलता कसरी डाटासेट र विभिन्न इनपुट तथा विशेषता आयामहरूमा वितरण भएको छ भनेर गहिरो समझ प्राप्त गर्नुहोस्। -* समग्र प्रदर्शन मेट्रिक्सलाई तोडेर त्रुटिपूर्ण समूहहरू स्वतः पत्ता लगाउनुहोस् ताकि लक्षित समाधान कदमहरूलाई सूचित गर्न सकियोस्। +RAI ड्यासबोर्डको मोडल अवलोकन कम्पोनेन्टले केवल समूहमा डेटा प्रतिनिधित्वको प्रदर्शन विश्लेषण गर्ने मात्र होइन, विभिन्न समूहहरूको बीचमा मोडेलको व्यवहार तुलना गर्ने क्षमता पनि दिन्छ। -## मोडेल अवलोकन +![डेटासेट समूहहरू - RAI ड्यासबोर्डमा मोडल अवलोकन](../../../../translated_images/ne/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -मेसिन लर्निङ मोडेलको प्रदर्शन मूल्याङ्कन गर्न यसको व्यवहारको समग्र समझ प्राप्त गर्नु आवश्यक छ। यो त्रुटि दर, सटीकता, रिकल, प्रिसिजन, वा MAE (मीन एब्सोल्युट एरर) जस्ता एकभन्दा बढी मेट्रिक्सको समीक्षा गरेर प्राप्त गर्न सकिन्छ। एक प्रदर्शन मेट्रिक राम्रो देखिन सक्छ, तर अर्को मेट्रिकमा असमानता देखिन सक्छ। साथै, सम्पूर्ण डाटासेट वा समूहहरूमा मेट्रिक्सको तुलनाले मोडेल कहाँ राम्रो प्रदर्शन गरिरहेको छ वा छैन भन्ने कुरा उजागर गर्न मद्दत गर्छ। यो विशेष गरी संवेदनशील र असंवेदनशील विशेषताहरू (जस्तै, बिरामीको जाति, लिङ्ग, वा उमेर) बीच मोडेलको प्रदर्शन हेर्न महत्त्वपूर्ण छ ताकि मोडेलले सम्भावित अन्याय गरेको छ कि छैन भनेर पत्ता लगाउन सकियोस्। उदाहरणका लागि, संवेदनशील विशेषताहरू भएको समूहमा मोडेल बढी त्रुटिपूर्ण छ भने, यसले मोडेलमा सम्भावित अन्याय देखाउन सक्छ। +कम्पोनेन्टको विशेषता-आधारित विश्लेषणले प्रयोगकर्तालाई कुनै विशेष विशेषताभित्र डेटा उपसमूहहरूमा सङ्कुचित भएर ग्रानुलर स्तरमा विसंगतिहरू पहिचान गर्न सक्षम बनाउँछ। उदाहरणका लागि, ड्यासबोर्डमा प्रयोगकर्ताले छनोट गरेको विशेषता (जस्तै, *"time_in_hospital < 3"* या *"time_in_hospital >= 7"*) को लागि स्वतः समूहहरू सिर्जना गर्ने इन्टेलिजेन्स हुन्छ। यसले ठूलो डेटा समूहबाट कुनै विशेष विशेषतालाई अलग गर्ने र मोडेलका गलत परिणामहरू तर्फ के प्रभाव पारेको छ हेर्न मद्दत गर्दछ। -RAI ड्यासबोर्डको मोडेल अवलोकन कम्पोनेन्टले न केवल समूहमा डाटा प्रतिनिधित्वको प्रदर्शन मेट्रिक्स विश्लेषण गर्न मद्दत गर्छ, तर यसले प्रयोगकर्ताहरूलाई विभिन्न समूहहरूमा मोडेलको व्यवहार तुलना गर्ने क्षमता प्रदान गर्दछ। +![विशेषता समूहहरू - RAI ड्यासबोर्डमा मोडल अवलोकन](../../../../translated_images/ne/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -![डाटासेट समूहहरू - RAI ड्यासबोर्डमा मोडेल अवलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +मोडल अवलोकन कम्पोनेन्टले दुई प्रकारका भिन्नता मेट्रिक्स समर्थन गर्छ: -कम्पोनेन्टको विशेषता-आधारित विश्लेषण कार्यक्षमताले प्रयोगकर्ताहरूलाई विशेषताहरूको विशिष्ट समूहहरूमा डाटा उपसमूहहरू संकुचित गर्न अनुमति दिन्छ ताकि सूक्ष्म स्तरमा असमानता पहिचान गर्न सकियोस्। उदाहरणका लागि, ड्यासबोर्डमा प्रयोगकर्ताले चयन गरेको विशेषताका लागि समूहहरू स्वतः उत्पन्न गर्न बौद्धिकता छ (जस्तै, *"time_in_hospital < 3"* वा *"time_in_hospital >= 7"*)। यसले प्रयोगकर्तालाई ठूलो डाटा समूहबाट विशेषताहरू अलग गर्न सक्षम बनाउँछ ताकि यो मोडेलको त्रुटिपूर्ण परिणामहरूको प्रमुख प्रभावकारक हो कि होइन भनेर हेर्न सकियोस्। +**मोडेल प्रदर्शनमा भिन्नता**: यी मेट्रिक्सहरूले चयनित प्रदर्शन मेट्रिकको मानको भिन्नता (अन्तर) उपसमूहहरूमा गणना गर्छन्। केही उदाहरणहरू: -![विशेषता समूहहरू - RAI ड्यासबोर्डमा मोडेल अवलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +* सटीकता दरमा भिन्नता +* त्रुटि दरमा भिन्नता +* प्रेसिजनमा भिन्नता +* रिक्यालमा भिन्नता +* औसत पूर्ण त्रुटि (MAE) मा भिन्नता -मोडेल अवलोकन कम्पोनेन्टले दुई प्रकारका असमानता मेट्रिक्सलाई समर्थन गर्दछ: +**चयन दरमा भिन्नता**: यो मेट्रिकले उपसमूहहरूमा चयन दर (सकारात्मक भविष्यवाणी) को भिन्नता समावेश गर्छ। एक उदाहरण हो ऋण अनुमोदन दरमा भिन्नता। चयन दर भनेको प्रत्येक वर्गमा १ (द्वैध वर्गीकरणमा) को रूपमा वर्गीकृत डेटा पोइन्टहरूको अंश वा भविष्यवाणी मानहरूको वितरण (रेग्रेशनमा) को सङ्ख्या हो। -**मोडेल प्रदर्शनमा असमानता**: यी मेट्रिक्सले प्रदर्शन मेट्रिक्सको चयन गरिएको मानहरूमा डाटा उपसमूहहरूमा असमानता (अन्तर) गणना गर्छ। केही उदाहरणहरू: +## डेटा विश्लेषण -* सटीकता दरमा असमानता -* त्रुटि दरमा असमानता -* प्रिसिजनमा असमानता -* रिकलमा असमानता -* मीन एब्सोल्युट एरर (MAE) मा असमानता +> "यदि तपाईं डेटा धेरै चोटि त्रास दिनुहुन्छ भने, यो जुनसुकै कुरा स्वीकार्छ" - Ronald Coase -**चयन दरमा असमानता**: यो मेट्रिकले उपसमूहहरूमा चयन दर (अनुकूल भविष्यवाणी) को भिन्नता समावेश गर्दछ। यसको उदाहरण भनेको ऋण स्वीकृति दरमा असमानता हो। चयन दरले प्रत्येक वर्गमा डाटा बिन्दुहरूको अंशलाई १ (बाइनरी वर्गीकरणमा) वा भविष्यवाणी मानहरूको वितरण (रेग्रेशनमा) को रूपमा वर्गीकृत गरिएको अर्थ गर्दछ। +यो कथन अतिनाटक जस्तो सुनिन्छ, तर यो सत्य छ कि डेटा कुनै पनि निष्कर्ष समर्थन गर्न हेरफेर गर्न सकिन्छ। यस्तो हेरफेर कहिलेकाहीं अनजानेमा हुन्छ। हामी सबैमा पक्षपात हुन्छ, र कहिले हामी डेटा मा पक्षपात परिचय गराइरहेका छौं भन्ने सजग रुपमा थाहा पाउन गाह्रो हुन्छ। AI र मेसिन लर्निङमा न्याय सुनिश्चित गर्नु चुनौतीपूर्ण कार्य हो। -## डाटा विश्लेषण +परम्परागत मोडल प्रदर्शन मेट्रिक्सका लागि डेटा ठूलो अन्धकार क्षेत्र हो। तपाईंसँग उच्च सटीकता हुन सक्छ, तर यो जहिल्यै तपाईंको डेटासेटको आधारभूत पक्षपातलाई प्रतिबिम्बित गर्दैन। उदाहरणको लागि, यदि कुनै कम्पनीमा कार्यरत कर्मचारीहरूमध्ये २७% महिला कार्यकारी स्तरमा छन् र ७३% पुरुष, तब यस्तो डेटामा प्रशिक्षित AI मोडेल वरिष्ठ स्तरको रोजगारका लागि मुख्यतया पुरुष लक्षित विज्ञापन गर्न सक्छ। डेटामा यो असन्तुलनले मोडेलको भविष्यवाणीलाई एक लिंगलाई प्राथमिकता दिन प्रवृत्त गराएको छ। यसले AI मोडेलमा लिंग पक्षपातको न्यायको समस्या उदांगो बनाउँछ। -> "यदि तपाईंले डाटालाई पर्याप्त यातना दिनुभयो भने, यसले कुनै पनि कुरा स्वीकार गर्नेछ" - रोनाल्ड कोस +RAI ड्यासबोर्डमा डेटा विश्लेषण कम्पोनेन्टले डेटासेटमा अत्यधिक वा कम प्रतिनिधित्व भएका क्षेत्रहरू पत्ता लगाउन मद्दत गर्छ। यसले प्रयोगकर्तालाई त्रुटि र न्यायसम्बन्धी समस्याहरू उत्पन्न गर्ने डेटा असन्तुलन वा विशिष्ट डेटा समूहको अभावको कारण निदान गर्न सक्षम बनाउँछ। यसले प्रयोगकर्तालाई भविष्यवाणी र वास्तविक परिणामहरू, त्रुटि समूहहरू, र विशेष विशेषताहरूको आधारमा डेटासेटहरू दृश्यात्मक रूपमा देखाउन अनुमति दिन्छ। कहिलेकाहीं कम प्रतिनिधित्व भएका डेटा समूह पत्ता लगाउँदा मोडेल राम्रो सिक्दै नसकेको पनि देखिन्छ, त्यसैले ती उच्च अशुद्धिहरू हुन्छन्। डेटा पक्षपात भएको मोडेल केवल न्यायसम्बन्धी समस्या मात्र होइन तर मोडेल समावेशी वा भरपर्दो छैन भन्ने संकेत हो। -यो कथन अतिशयोक्तिपूर्ण लाग्न सक्छ, तर यो सत्य हो कि डाटालाई कुनै पनि निष्कर्ष समर्थन गर्न हेरफेर गर्न सकिन्छ। यस्तो हेरफेर कहिलेकाहीँ अनजानेमा पनि हुन सक्छ। हामी सबै मानिसहरूमा पूर्वाग्रह हुन्छ, र डाटामा पूर्वाग्रह परिचय गराउँदा हामीलाई सचेत रूपमा थाहा पाउन गाह्रो हुन्छ। AI र मेसिन लर्निङमा निष्पक्षता सुनिश्चित गर्नु जटिल चुनौती हो। +![RAI ड्यासबोर्डमा डेटा विश्लेषण कम्पोनेन्ट](../../../../translated_images/ne/dataanalysis-cover.8d6d0683a70a5c1e.webp) -डाटा परम्परागत मोडेल प्रदर्शन मेट्रिक्सको लागि ठूलो अन्धकार क्षेत्र हो। तपाईंले उच्च सटीकता स्कोर प्राप्त गर्न सक्नुहुन्छ, तर यसले डाटासेटमा अन्तर्निहित डाटा पूर्वाग्रहलाई प्रतिबिम्बित नगर्न सक्छ। उदाहरणका लागि, यदि कर्मचारीहरूको डाटासेटमा कम्पनीका कार्यकारी पदहरूमा महिलाहरूको २७% र पुरुषहरूको ७३% प्रतिनिधित्व छ भने, यस डाटामा प्रशिक्षित रोजगार विज्ञापन AI मोडेलले वरिष्ठ स्तरको रोजगार पदहरूको लागि प्रायः पुरुष दर्शकलाई लक्षित गर्न सक्छ। डाटामा यो असन्तुलनले मोडेलको भविष्यवाणीलाई एक लिङ्गलाई प्राथमिकता दिन प्रेरित गर्यो। यसले मोडेलमा लिङ्ग पूर्वाग्रह देखाउँछ, जसले निष्पक्षताको समस्या उजागर गर्छ। -RAI ड्यासबोर्डको डाटा विश्लेषण कम्पोनेन्टले डाटासेटमा अत्यधिक र न्यून प्रतिनिधित्व भएका क्षेत्रहरू पहिचान गर्न मद्दत गर्छ। यसले प्रयोगकर्ताहरूलाई डाटा असन्तुलन वा विशिष्ट डाटा समूहको प्रतिनिधित्वको अभावबाट उत्पन्न त्रुटि र निष्पक्षता समस्याहरूको जड कारण पत्ता लगाउन मद्दत गर्छ। यसले प्रयोगकर्ताहरूलाई भविष्यवाणी र वास्तविक परिणामहरू, त्रुटि समूहहरू, र विशिष्ट विशेषताहरूको आधारमा डाटासेटहरू भिजुअलाइज गर्न सक्षम बनाउँछ। कहिलेकाहीँ न्यून प्रतिनिधित्व भएको डाटा समूह पत्ता लगाउँदा मोडेल राम्रोसँग सिकिरहेको छैन भन्ने कुरा पनि उजागर गर्न सक्छ, जसले उच्च त्रुटिहरू उत्पन्न गर्छ। डाटामा पूर्वाग्रह भएको मोडेल हुनु भनेको केवल निष्पक्षताको समस्या होइन, तर मोडेल समावेशी वा भरपर्दो छैन भन्ने कुरा पनि देखाउँछ। +डेटा विश्लेषण तब प्रयोग गर्नुहोस् जब तपाईं: -![RAI ड्यासबोर्डमा डाटा विश्लेषण कम्पोनेन्ट](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +* विभिन्न फिल्टरहरू चयन गरेर आफ्नो डेटासेट तथ्यांकहरू अन्वेषण गर्न चाहनुहुन्छ जसले तपाईंको डेटा विभिन्न आयामहरूमा (समूहहरूमा) टुक्र्याउँछ। +* आफ्नो डेटासेटको वितरण विभिन्न समूहहरू र विशेषता समूहहरूमा कसरी छ बुझ्न चाहनुहुन्छ। +* आफ्नो समूह, त्रुटि विश्लेषण, र कारण-प्रभाव सम्बन्धी अनुसन्धान (अन्य ड्यासबोर्ड कम्पोनेन्टहरूबाट प्राप्त) तपाईँको डेटासेटको वितरणकै कारण हो कि होइन थाहा पाउन चाहनुहुन्छ। +* प्रतिनिधित्व समस्याहरू, लेबल आवाज, विशेषता आवाज, लेबल पक्षपात, र यसका समान कारणले आएका त्रुटिहरू कम गर्न थप डेटा सङ्कलन कहाँ गर्नुपर्ने निर्णय गर्न चाहनुहुन्छ। -डाटा विश्लेषण प्रयोग गर्नुहोस् जब तपाईंलाई चाहिन्छ: +## मोडेल व्याख्याशीलता -* विभिन्न फिल्टरहरू चयन गरेर आफ्नो डाटासेटको तथ्याङ्क अन्वेषण गर्नुहोस् ताकि तपाईं आफ्नो डाटालाई विभिन्न आयामहरू (समूहहरू) मा विभाजन गर्न सक्नुहुन्छ। -* विभिन्न समूहहरू र विशेषता समूहहरूमा आफ्नो डाटासेटको वितरण बुझ्नुहोस्। -* निष्पक्षता, त्रुटि विश्लेषण, र कारण सम्बन्धी निष्कर्षहरू (अन्य ड्यासबोर्ड कम्पोनेन्टहरूबाट प्राप्त) तपाईंको डाटासेटको वितरणको परिणाम हो कि होइन भनेर निर्धारण गर्नुहोस्। -* प्रतिनिधित्व समस्याहरू, लेबल शोर, विशेषता शोर, लेबल पूर्वाग्रह, र यस्तै कारकहरूबाट उत्पन्न त्रुटिहरूलाई कम गर्न थप डाटा सङ्कलन गर्न कुन क्षेत्रहरूमा ध्यान दिनुपर्ने हो भनेर निर्णय गर्नुहोस्। +मेसिन लर्निङ मोडेलहरू प्रायः ब्ल्याक बक्स जस्तै हुन्छन्। कुन मुख्य डेटा विशेषताहरूले मोडेलको भविष्यवाणी चलाउँछन् बुझ्न चुनौतीपूर्ण हुन्छ। मोडेलले किन निश्चित भविष्यवाणी गरेको छ भन्ने पारदर्शिता दिनु महत्त्वपूर्ण छ। उदाहरणका लागि, यदि AI प्रणालीले डायबिटिज भएका बिरामीलाई ३० दिनभित्र पुनः अस्पताल भर्ना हुनसक्ने जोखिम अनुमान गर्छ भने यसले आफ्नो भविष्यवाणीसम्म पुग्न प्रयोग गरिएको सहायक डाटा प्रदान गर्न सक्नुपर्छ। सहायक डेटा संकेतकहरूले चिकित्सक वा अस्पतालहरूलाई सूचित निर्णय लिन पारदर्शिता दिन्छ। साथै, मोडेलले किन भविष्यवाणी गरेको छ भनेर व्याख्या गर्न सक्नु स्वास्थ्य नियमहरूको आधिकारिक जवाफदेहितामा मद्दत गर्दछ। जब तपाईं मानिसहरूको जीवनमा प्रभाव पार्ने तरिकाले मेसिन लर्निङ मोडेलहरू प्रयोग गर्दै हुनुहुन्छ, मोडेलको व्यवहार केले प्रभावित गरिरहेको छ बुझ्न र व्याख्या गर्न आवश्यक छ। मोडेल व्याख्या र व्याख्याशीलता यस्ता प्रश्नहरूको जवाफ दिन्छ जस्तै: -## मोडेल व्याख्यात्मकता +* मोडेल डिबगिङ: मेरो मोडलले किन यो गल्ती गर्यो? मैले कसरी सुधार गर्ने? +* मानव-AI सहकार्य: म कसरी मोडेलका निर्णयहरू बुझ्ने र विश्वास गर्ने? +* नियम पालना: मेरो मोडलले कानुनी आवश्यकता पूरा गर्छ कि गर्दैन? -मेसिन लर्निङ मोडेलहरू प्रायः "ब्ल्याक बक्स" मानिन्छन्। मोडेलको भविष्यवाणीलाई चलाउने प्रमुख डाटा विशेषताहरू बुझ्न चुनौतीपूर्ण हुन सक्छ। मोडेलले किन कुनै निश्चित भविष्यवाणी गर्यो भन्ने पारदर्शिता प्रदान गर्नु महत्त्वपूर्ण छ। उदाहरणका लागि, यदि AI प्रणालीले मधुमेह रोगीलाई ३० दिनभन्दा कम समयमा अस्पतालमा पुनः भर्ना हुने जोखिममा रहेको भविष्यवाणी गर्छ भने, यसले आफ्नो भविष्यवाणीमा आधारित समर्थन डाटा प्रदान गर्न सक्षम हुनुपर्छ। समर्थन डाटा सूचकहरूले पारदर्शिता ल्याउँछ, जसले चिकित्सकहरू वा अस्पतालहरूलाई राम्रो निर्णय लिन मद्दत गर्छ। साथै, व्यक्तिगत बिरामीको लागि मोडेलले भविष्यवाणी किन गर्यो भन्ने व्याख्या गर्न सक्षम हुनु स्वास्थ्य नियमहरूको साथ उत्तरदायित्व सक्षम बनाउँछ। जब मेसिन लर्निङ मोडेलहरू मानिसहरूको जीवनलाई असर गर्ने तरिकामा प्रयोग गरिन्छ, मोडेलको व्यवहारलाई के चलाउँछ भन्ने कुरा बुझ्न र व्याख्या गर्न महत्त्वपूर्ण छ। मोडेल व्याख्यात्मकता र व्याख्या गर्न सक्ने क्षमता निम्न परिदृश्यहरूमा प्रश्नहरूको उत्तर दिन मद्दत गर्छ: +RAI ड्यासबोर्डको विशेषता महत्व कम्पोनेन्टले तपाईंलाई मोडलको डिबगिङ गर्ने र मोडलले कसरी भविष्यवाणी गर्छ comprehensive बुझ्न मद्दत गर्छ। यो मेसिन लर्निङ व्यवसायी तथा निर्णय-निर्माताहरूलाई पनि मोडल व्यवहारमा प्रभाव पार्ने विशेषताहरू स्पष्ट गर्न र प्रमाणित गर्न उपयोगी उपकरण हो जुन नियम पालना सुनिश्चित गर्न सहयोगी छ। प्रयोगकर्ताहरूले विश्वव्यापी र स्थानीय व्याख्याहरू खोज्न सक्छन् जसले कुन विशेषताले मोडलको भविष्यवाणी चलाएको हो पत्ता लगाउन मद्दत गर्छ। विश्वव्यापी व्याख्याहरूले मोडलको समग्र भविष्यवाणीलाई प्रभावित गर्ने शीर्ष विशेषताहरू सूचीबद्ध गर्छ। स्थानीय व्याख्याहरूले व्यक्तिगत केसका लागि मोडलले भविष्यवाणी किन गर्‍यो देखाउँछ। स्थानीय व्याख्याहरूको मूल्याङ्कन गरि एक विशिष्ट केस डिबग वा अडिट गर्न सकिन्छ जसले किन मोडलले सटीक वा अशुद्ध भविष्यवाणी गर्‍यो बुझ्न सजिलो बनाउँछ। -* मोडेल डिबगिङ: मेरो मोडेलले यो गल्ती किन गर्यो? म आफ्नो मोडेललाई कसरी सुधार गर्न सक्छु? -* मानव-AI सहयोग: म मोडेलको निर्णयलाई कसरी बुझ्न र विश्वास गर्न सक्छु? -* नियामक अनुपालन: के मेरो मोडेलले कानुनी आवश्यकताहरू पूरा गर्छ? +![RAI ड्यासबोर्डको विशेषता महत्व कम्पोनेन्ट](../../../../translated_images/ne/9-feature-importance.cd3193b4bba3fd4b.webp) -RAI ड्यासबोर्डको विशेषता महत्त्व कम्पोनेन्टले मोडेलले भविष्यवाणी कसरी गर्छ भन्ने व्यापक समझ प्राप्त गर्न र डिबग गर्न मद्दत गर्छ। यो मेसिन लर्निङ पेशेवरहरू र निर्णयकर्ताहरूका लागि उपयोगी उपकरण हो, जसले मोडेलको व्यवहारलाई चलाउने विशेषताहरूको प्रमाण देखाउन र व्याख्या गर्न नियामक अनुपालनका लागि मद्दत गर्छ। प्रयोगकर्ताहरूले विश्वव्यापी र स्थानीय व्याख्याहरू अन्वेषण गरेर मोडेलको भविष्यवाणीलाई चलाउने विशेषताहरूको मान्यता प्राप्त गर्न सक्छन्। विश्वव्यापी व्याख्याहरूले मोडेलको समग्र भविष्यवाणीलाई प्रभावित गर्ने शीर्ष विशेषताहरू सूचीबद्ध गर्छ। स्थानीय व्याख्याहरूले व्यक्तिगत केसको लागि मोडेलको भविष्यवाणीलाई चलाउने विशेषताहरू देखाउँछ। स्थानीय व्याख्याहरूको मूल्याङ्कन गर्ने क्षमता डिबगिङ वा अडिटिङको विशिष्ट केसमा पनि उपयोगी छ ताकि मोडेलले सटीक वा असटीक भविष्यवाणी किन गर्यो भन्ने कुरा राम्रोसँग बुझ्न र व्याख्या गर्न सकियोस्। +* विश्वव्यापी व्याख्या: उदाहरणका लागि, डायबिटिज अस्पताल पुनः भर्ना मोडलको सामान्य व्यवहारलाई कुन विशेषताले असर गरिरहेको छ? +* स्थानीय व्याख्या: उदाहरणका लागि, किन ६० वर्षभन्दा माथि डायबेटिक बिरामी जसलाई पहिले अस्पताल भर्ना गरिएको थियो ३० दिनभित्र पुनः अस्पतालमा भर्ना वा नतिको भविष्यवाणी गरिएको? -![RAI ड्यासबोर्डको विशेषता महत्त्व कम्पोनेन्ट](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +विभिन्न समूहहरूमा मोडलको प्रदर्शन परीक्षण गर्ने डिबगिङ प्रक्रियामा, विशेषता महत्वले समूहहरूमा एउटा विशेषताले कस्तो प्रभाव पारिरहेको छ देखाउँछ। यो मोडलको गलत भविष्यवाणी गर्नमा विशेषताले कत्तिको प्रभावकारी छ पत्ता लगाउँदा विसंगति प्रकट गर्न मद्दत गर्छ। यदि कुनै मोडेलले गलत भविष्यवाणी गर्‍यो भने, यस कम्पोनेन्टले तपाईंलाई विशेषता वा विशेषता मानहरू चिन्न मद्दत गर्छ जुन भविष्यवाणीको कारण भए। यसले केवल डिबगिङमै होइन, auditing अवस्थामा पारदर्शिता र जवाफदेहिता पनि प्रदान गर्छ। अन्त्यमा, कम्पोनेन्टले तपाईंलाई न्यायसम्बन्धी समस्या पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, यदि संवेदनशील विशेषता जस्तै जातीयता वा लिंगले मोडलको भविष्यवाणीमा धेरै प्रभाव पारिरहेको छ भने, यो जातीय वा लिंग पक्षपातको संकेत हुन सक्छ। -* विश्वव्यापी व्याख्याहरू: उदाहरणका लागि, मधुमेह अस्पताल पुनः भर्ना मोडेलको समग्र व्यवहारलाई कुन विशेषताहरूले प्रभावित गर्छन्? -* स्थानीय व्याख्याहरू: उदाहरणका लागि, किन ६० वर्षभन्दा माथिका मधुमेह रोगीलाई पुनः भर्ना हुने वा ३० दिनभित्र अस्पतालमा पुनः भर्ना नहुने भविष्यवाणी गरियो? +![विशेषता महत्व](../../../../translated_images/ne/9-features-influence.3ead3d3f68a84029.webp) -मोडेलको प्रदर्शनलाई विभिन्न समूहहरूमा जाँच गर्ने डिबगिङ प्रक्रियामा, विशेषता महत्त्वले समूहहरूमा विशेषताको प्रभावको स्तर देखाउँछ। यो मोडेलको त्रुटिपूर्ण भविष्यवाणीलाई चलाउने विशेषताको प्रभावको स्तर तुलना गर्दा असमानता उजागर गर्न मद्दत गर्छ। विशेषता महत्त्व कम्पोनेन्टले विशेषतामा भएका मानहरूले मोडेलको परिणामलाई सकारात्मक वा नकारात्मक रूपमा कसरी प्रभावित गर्यो भन्ने देखाउन सक्छ। उदाहरणका लागि, यदि मोडेलले असटीक भविष्यवाणी गर्यो भने, कम्पोनेन्टले भविष्यवाणीलाई चलाउने विशेषता वा विशेषता मानहरू पत्ता लगाउन र विश्लेषण गर्न सक्षम बनाउँछ। यो स्तरको विवरणले न केवल डिबगिङमा मद्दत गर्छ, तर अडिटिङ परिदृश्यहरूमा पारदर्शिता र उत्तरदायित्व प्रदान गर्छ। अन्ततः, कम्पोनेन्टले निष्पक्षता समस्याहरू पहिचान गर्न मद्दत गर्न सक्छ। उदाहरणका लागि, -- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै निश्चित समूहलाई कुनै निश्चित पेशामा देखिँदैन, र कुनै पनि सेवा वा कार्य जसले यसलाई निरन्तर प्रवर्द्धन गरिरहन्छ, त्यो हानिकारक योगदान गरिरहेको छ। +व्याख्याशीलता तब प्रयोग गर्नुहोस् जब तपाईं: + +* तपाईंको AI प्रणालीका भविष्यवाणीहरू कति भरपर्दो छन् बुझ्न चाहनुहुन्छ र कुन विशेषता भविष्यवाणीहरूका लागि सबैभन्दा महत्वपूर्ण छ जान्न चाहनुहुन्छ। +* पहिले मोडललाई बुझेर डिबगिङ गर्ने तरिका अपनाउन चाहनुहुन्छ र मोडलले स्वस्थ विशेषता प्रयोग गरिरहेको छ वा केवल गलत सम्बन्धहरूमा निर्भर छ भनी पत्ता लगाउन चाहनुहुन्छ। +* सम्भावित अन्यायका स्रोतहरू पत्ता लगाउन चाहनुहुन्छ कि मोडल संवेदनशील विशेषताहरूमा आधारित छ वा तीसँग धेरै सम्बन्धित अन्य विशेषतामा आधारित छ। +* प्रयोगकर्ताको मोडल निर्णयहरूमा विश्वास बनाउन चाहनुहुन्छ भने स्थानीय व्याख्या उत्पादन गरेर उनीहरूको परिणाम देखाउन। +* AI प्रणालीको नियम पालना अडिट पूरा गर्न चाहनुहुन्छ ताकि मोडेलहरूको मान्यता र मानवमा मोडेल निर्णयहरूको प्रभाव निगरानी गर्न सकियोस्। + +## निष्कर्ष + +सबै RAI ड्यासबोर्ड कम्पोनेन्टहरू व्यावहारिक उपकरणहरू हुन् जसले तपाईंलाई कम हानिकारक र सामाजिक रूपमा अधिक भरोसायोग्य मेसिन लर्निङ मोडेलहरू बनाउने मद्दत गर्छ। यसले मानव अधिकारमा खतरा रोकथाम सुधार्छ; जीवनका अवसरहरूमा केहि समूहहरूलाई भेदभाव वा बहिष्कार नगर्न मद्दत गर्छ; र भौतिक वा मानसिक चोटको जोखिम घटाउँछ। यसले मोडेलका निर्णयहरूमा विश्वास बनाउन पनि मद्दत गर्दछ स्थानीय व्याख्याहरू उत्पादन गरेर तिनीहरूको परिणाम देखाउने। सम्भावित हानिहरूलाई यसरी वर्गीकरण गर्न सकिन्छ: + +- **विनियोजन**, यदि कुनै लिंग वा जातीयता अर्कोसँग तुलना गर्दा प्राथमिकता दिइएको छ भने। +- **सेवाको गुणस्तर**। तपाईंले कुनै विशेष परिप्रेक्ष्यमा डेटा तालिम दिनुभयो तर वास्तविकता धेरै जटिल छ भने, यसले कमजोर सेवा प्रदर्शन गराउँछ। +- **रूपक लगाउने**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्ने। + +- **अपमान**। कुनै वस्तु वा व्यक्तिलाई अन्यायपूर्ण रूपमा आलोचना गर्ने र लेबल लगाउने। +- **अधिक वा कम प्रतिनिधित्व**। विचार भनेको कुनै निश्चित समूहलाई कुनै विशिष्ट पेशामा नदेखिने, र कुनै सेवा वा कार्य जसले यसलाई प्रवर्द्धन गरिरहन्छ त्यो हानिकारक हुन्छ। ### Azure RAI ड्यासबोर्ड -[Azure RAI ड्यासबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) खुला स्रोत उपकरणहरूमा आधारित छ, जुन प्रमुख शैक्षिक संस्थाहरू र संगठनहरूले विकास गरेका छन्। यसले डेटा वैज्ञानिकहरू र AI विकासकर्ताहरूलाई मोडेलको व्यवहार राम्रोसँग बुझ्न, AI मोडेलहरूबाट उत्पन्न हुने अवांछनीय समस्याहरू पत्ता लगाउन र समाधान गर्न सहयोग पुर्‍याउँछ। +[Azure RAI ड्यासबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) खुला स्रोत उपकरणहरूमा आधारित छ जुन अग्रणी शैक्षिक संस्था र संगठनहरूले विकास गरेका छन्, जसमा Microsoft पनि शामिल छ, जसले डाटा वैज्ञानिक र AI विकासकर्ताहरूलाई मोडेल व्यवहारलाई राम्रोसँग बुझेका छन्, अवाञ्छित समस्या पत्ता लगाउन र कम गर्न सहयोग पुर्याउँछन्। -- RAI ड्यासबोर्डका विभिन्न कम्पोनेन्टहरू कसरी प्रयोग गर्ने भनेर जान्न [डक्स](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हेर्नुहोस्। +- विभिन्न कम्पोनेन्टहरूको प्रयोग कसरी गर्ने भन्ने सिक्नको लागि RAI ड्यासबोर्डका [कागजातहरू](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हेर्नुहोस्। -- Azure Machine Learning मा जिम्मेवार AI परिदृश्यहरू डिबग गर्नका लागि केही RAI ड्यासबोर्ड [नमूना नोटबुकहरू](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) हेर्नुहोस्। +- Azure Machine Learning मा जिम्मेवार AI परिदृश्यहरू डिबग गर्नका लागि RAI ड्यासबोर्डका केही [नमूना नोटबुकहरू](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) हेर्नुहोस्। --- ## 🚀 चुनौती -पहिले नै सांख्यिकीय वा डेटा पूर्वाग्रहहरू रोक्नका लागि हामीले निम्न गर्नुपर्छ: +सांख्यिकीय वा डाटा पक्षपात पहिलो स्थानमा प्रवेश हुनबाट रोक्न हामीले: -- प्रणालीमा काम गर्ने व्यक्तिहरूको पृष्ठभूमि र दृष्टिकोणमा विविधता सुनिश्चित गर्नु -- हाम्रो समाजको विविधतालाई प्रतिबिम्बित गर्ने डेटासेटहरूमा लगानी गर्नु -- पूर्वाग्रह देखा परेमा पत्ता लगाउने र सुधार गर्ने राम्रो विधिहरू विकास गर्नु +- प्रणालीहरूमा काम गर्ने मानिसहरूबीच विविध पृष्ठभूमि र दृष्टिकोणहरू हुनुपर्छ +- हाम्रो समाजको विविधतालाई प्रतिबिम्बित गर्ने डाटासेटहरूमा लगानी गर्नुपर्छ +- पक्षपात देखापरेमा त्यसलाई पत्ता लगाउने र सुधार गर्ने बेहतर तरिकाहरू विकास गर्नुपर्छ -मोडेल निर्माण र प्रयोगमा अन्याय देखिने वास्तविक जीवनका परिदृश्यहरूबारे सोच्नुहोस्। अरू के विचार गर्नुपर्छ? +वास्तविक जीवनका अवस्थाहरू जहाँ मोडेल निर्माण र उपयोगमा अन्याय स्पष्ट हुन्छ सोच्नुहोस्। हामीले के थप ध्यान दिनुपर्छ? -## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/) +## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/) ## समीक्षा र आत्म-अध्ययन -यस पाठमा, तपाईंले मशीन लर्निङमा जिम्मेवार AI समावेश गर्ने केही व्यावहारिक उपकरणहरू सिक्नुभएको छ। - -यस कार्यशालालाई हेर्नुहोस् र विषयहरूमा अझ गहिरो जानकारी लिनुहोस्: +यस पाठमा, तपाईंले जिम्मेवार AI लाई मेशिन लर्निङमा समावेश गर्ने केहि व्यावहारिक उपकरणहरू सिक्नुभएको छ। -- जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान, Besmira Nushi र Mehrnoosh Sameki द्वारा +विषयहरूमा अझ गहिराइमा जान यस कार्यशाला हेर्नुहोस्: -[![जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान") +- जिम्मेवार AI ड्यासबोर्ड: अभ्यासमा RAI सञ्चालन गर्न एक-स्टप पसल, प्रस्तुतकर्ता Besmira Nushi र Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -> 🎥 माथिको छवि क्लिक गर्नुहोस् भिडियोका लागि: जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान, Besmira Nushi र Mehrnoosh Sameki द्वारा +> 🎥 माथिको चित्रमा क्लिक गर्नुहोस् भिडियोको लागि: जिम्मेवार AI ड्यासबोर्ड: अभ्यासमा RAI सञ्चालन गर्न एक-स्टप पसल, प्रस्तुतकर्ता Besmira Nushi र Mehrnoosh Sameki -जिम्मेवार AI र विश्वसनीय मोडेल निर्माण गर्ने तरिकाहरू सिक्न निम्न सामग्रीहरू सन्दर्भ गर्नुहोस्: +अझ बढी जिम्मेवार AI र कस्तो गरी विश्वसनीय मोडेलहरू बनाउने बारेमा जान्न निम्न सामग्रीहरू सन्दर्भ गर्नुहोस्: -- ML मोडेलहरू डिबग गर्नका लागि Microsoft को RAI ड्यासबोर्ड उपकरणहरू: [जिम्मेवार AI उपकरण स्रोतहरू](https://aka.ms/rai-dashboard) +- माइक्रोसफ्टको RAI ड्यासबोर्ड उपकरणहरू ML मोडेलहरू डिबग गर्न: [Responsible AI tools resources](https://aka.ms/rai-dashboard) - जिम्मेवार AI टूलकिट अन्वेषण गर्नुहोस्: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Microsoft को RAI स्रोत केन्द्र: [जिम्मेवार AI स्रोतहरू – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- माइक्रोसफ्टको RAI स्रोत केन्द्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft को FATE अनुसन्धान समूह: [FATE: निष्पक्षता, उत्तरदायित्व, पारदर्शिता, र AI मा नैतिकता - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- माइक्रोसफ्टको FATE अनुसन्धान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) ## असाइनमेन्ट @@ -152,5 +173,7 @@ RAI ड्यासबोर्डको विशेषता महत्त --- -**अस्वीकरण**: -यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं। + \ No newline at end of file