diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ar.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ar.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ar.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.bn.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.bn.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.bn.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.br.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.br.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.br.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.mo.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.mo.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.mo.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.mr.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.mr.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.mr.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ne.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ne.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ne.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.pa.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.pa.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.pa.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ur.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ur.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ur.jpg differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ar.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ar.png new file mode 100644 index 00000000..9e863d49 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ar.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bn.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bn.png new file mode 100644 index 00000000..59d52e0c Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bn.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.br.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.br.png new file mode 100644 index 00000000..489eb68b Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.br.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mo.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mo.png new file mode 100644 index 00000000..3a14acc1 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mo.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mr.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mr.png new file mode 100644 index 00000000..2c1fa16d Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mr.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ne.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ne.png new file mode 100644 index 00000000..4b598835 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ne.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pa.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pa.png new file mode 100644 index 00000000..a21473bd Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pa.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ur.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ur.png new file mode 100644 index 00000000..bfe3ebf8 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ur.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ar.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ar.png new file mode 100644 index 00000000..7979891d Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ar.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.bn.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.bn.png new file mode 100644 index 00000000..41148ff2 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.bn.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.br.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.br.png new file mode 100644 index 00000000..5aad7781 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.br.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.mo.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.mo.png new file mode 100644 index 00000000..c94b929d Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.mo.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.mr.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.mr.png new file mode 100644 index 00000000..db53e181 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.mr.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ne.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ne.png new file mode 100644 index 00000000..f84b882d Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ne.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.pa.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.pa.png new file mode 100644 index 00000000..5548d343 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.pa.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ur.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ur.png new file mode 100644 index 00000000..439a7772 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ur.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ar.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ar.png new file mode 100644 index 00000000..8974ed9f Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ar.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.bn.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.bn.png new file mode 100644 index 00000000..93de79bd Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.bn.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.br.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.br.png new file mode 100644 index 00000000..473b0625 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.br.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.mo.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.mo.png new file mode 100644 index 00000000..9c03605a Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.mo.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.mr.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.mr.png new file mode 100644 index 00000000..afe913de Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.mr.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ne.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ne.png new file mode 100644 index 00000000..cbed027a Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ne.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.pa.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.pa.png new file mode 100644 index 00000000..934c0f39 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.pa.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ur.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ur.png new file mode 100644 index 00000000..481551e9 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ur.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ar.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ar.png new file mode 100644 index 00000000..8d48d3b3 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ar.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bn.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bn.png new file mode 100644 index 00000000..8867f782 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bn.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.br.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.br.png new file mode 100644 index 00000000..fc8f986f Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.br.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mo.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mo.png new file mode 100644 index 00000000..30ed7dda Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mo.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mr.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mr.png new file mode 100644 index 00000000..adf5e75c Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mr.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ne.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ne.png new file mode 100644 index 00000000..8a640129 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ne.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pa.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pa.png new file mode 100644 index 00000000..24559edd Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pa.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ur.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ur.png new file mode 100644 index 00000000..db65fcc9 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ur.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ar.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ar.png new file mode 100644 index 00000000..ff5d8b83 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ar.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.bn.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.bn.png new file mode 100644 index 00000000..f1b9b6fe Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.bn.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.br.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.br.png new file mode 100644 index 00000000..a64e0443 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.br.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.mo.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.mo.png new file mode 100644 index 00000000..4dd0951c Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.mo.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.mr.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.mr.png new file mode 100644 index 00000000..f1f15291 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.mr.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ne.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ne.png new file mode 100644 index 00000000..3891ad0a Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ne.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.pa.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.pa.png new file mode 100644 index 00000000..ddc8fd1d Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.pa.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ur.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ur.png new file mode 100644 index 00000000..563ca104 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ur.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ar.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ar.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ar.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.bn.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.bn.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.bn.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.br.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.br.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.br.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.mo.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.mo.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.mo.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.mr.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.mr.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.mr.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ne.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ne.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ne.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.pa.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.pa.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.pa.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ur.png b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ur.png new file mode 100644 index 00000000..817ac42d Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ur.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ar.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ar.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ar.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.bn.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.bn.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.bn.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.br.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.br.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.br.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.mo.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.mo.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.mo.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.mr.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.mr.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.mr.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ne.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ne.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ne.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.pa.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.pa.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.pa.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ur.png b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ur.png new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ur.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ar.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ar.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ar.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.bn.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.bn.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.bn.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.br.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.br.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.br.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.mo.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.mo.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.mo.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.mr.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.mr.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.mr.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ne.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ne.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ne.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.pa.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.pa.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.pa.png differ diff --git a/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ur.png b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ur.png new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and b/translated_images/DALL·E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ur.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ar.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ar.png new file mode 100644 index 00000000..281b6576 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ar.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.bn.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.bn.png new file mode 100644 index 00000000..72194f66 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.bn.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.br.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.br.png new file mode 100644 index 00000000..1cd7db9d Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.br.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.mo.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.mo.png new file mode 100644 index 00000000..367f4ca7 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.mo.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.mr.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.mr.png new file mode 100644 index 00000000..a73f47f5 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.mr.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ne.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ne.png new file mode 100644 index 00000000..4023f7b3 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ne.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.pa.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.pa.png new file mode 100644 index 00000000..4dfeadca Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.pa.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ur.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ur.png new file mode 100644 index 00000000..a04ce3da Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ur.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ar.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ar.png new file mode 100644 index 00000000..608285e4 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ar.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bn.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bn.png new file mode 100644 index 00000000..eb36381d Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bn.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.br.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.br.png new file mode 100644 index 00000000..cad475ae Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.br.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mo.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mo.png new file mode 100644 index 00000000..d9758f10 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mo.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mr.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mr.png new file mode 100644 index 00000000..3f34ab3b Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mr.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ne.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ne.png new file mode 100644 index 00000000..d28c4b10 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ne.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pa.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pa.png new file mode 100644 index 00000000..7b6977a3 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pa.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ur.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ur.png new file mode 100644 index 00000000..a4e1c9b0 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ur.png differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ar.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ar.jpg new file mode 100644 index 00000000..facb2684 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ar.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.bn.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.bn.jpg new file mode 100644 index 00000000..affc2555 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.bn.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.br.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.br.jpg new file mode 100644 index 00000000..986c7ca7 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.br.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.mo.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.mo.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.mo.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.mr.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.mr.jpg new file mode 100644 index 00000000..60ec6e1b Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.mr.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ne.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ne.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ne.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.pa.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.pa.jpg new file mode 100644 index 00000000..ee6f9e13 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.pa.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ur.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ur.jpg new file mode 100644 index 00000000..d070195f Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ur.jpg differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ar.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ar.png new file mode 100644 index 00000000..3d949dde Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ar.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bn.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bn.png new file mode 100644 index 00000000..a31af1d4 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bn.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.br.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.br.png new file mode 100644 index 00000000..3850ff57 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.br.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mo.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mo.png new file mode 100644 index 00000000..95b43cdf Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mo.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mr.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mr.png new file mode 100644 index 00000000..eb46d06b Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mr.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ne.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ne.png new file mode 100644 index 00000000..433a6d24 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ne.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pa.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pa.png new file mode 100644 index 00000000..63e77153 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pa.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ur.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ur.png new file mode 100644 index 00000000..1a0b9251 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ur.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ar.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ar.png new file mode 100644 index 00000000..860161f0 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ar.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.bn.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.bn.png new file mode 100644 index 00000000..50a8659e Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.bn.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.br.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.br.png new file mode 100644 index 00000000..e41da909 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.br.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.mo.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.mo.png new file mode 100644 index 00000000..4d8f5ce8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.mo.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.mr.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.mr.png new file mode 100644 index 00000000..5bc36168 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.mr.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ne.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ne.png new file mode 100644 index 00000000..dcc0589c Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ne.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.pa.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.pa.png new file mode 100644 index 00000000..a1d5a023 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.pa.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ur.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ur.png new file mode 100644 index 00000000..dc9eac2c Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ur.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ar.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ar.png new file mode 100644 index 00000000..4ddc3079 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ar.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.bn.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.bn.png new file mode 100644 index 00000000..5e890125 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.bn.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.br.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.br.png new file mode 100644 index 00000000..d9f46198 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.br.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.mo.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.mo.png new file mode 100644 index 00000000..ca56d3be Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.mo.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.mr.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.mr.png new file mode 100644 index 00000000..9929a20b Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.mr.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ne.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ne.png new file mode 100644 index 00000000..c7c83c76 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ne.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.pa.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.pa.png new file mode 100644 index 00000000..e3bb1cf1 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.pa.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ur.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ur.png new file mode 100644 index 00000000..9f38d365 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ur.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ar.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ar.png new file mode 100644 index 00000000..53a29c17 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ar.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.bn.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.bn.png new file mode 100644 index 00000000..9c49383d Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.bn.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.br.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.br.png new file mode 100644 index 00000000..5339266f Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.br.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.mo.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.mo.png new file mode 100644 index 00000000..e4957213 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.mo.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.mr.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.mr.png new file mode 100644 index 00000000..881f192b Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.mr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ne.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ne.png new file mode 100644 index 00000000..3126dce3 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ne.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.pa.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.pa.png new file mode 100644 index 00000000..b127daeb Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.pa.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ur.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ur.png new file mode 100644 index 00000000..c68afe02 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ur.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ar.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ar.png new file mode 100644 index 00000000..f2f75e64 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ar.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.bn.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.bn.png new file mode 100644 index 00000000..cd4c38e2 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.bn.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.br.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.br.png new file mode 100644 index 00000000..181cc376 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.br.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.mo.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.mo.png new file mode 100644 index 00000000..03a69dd1 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.mo.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.mr.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.mr.png new file mode 100644 index 00000000..4f06ddb6 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.mr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ne.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ne.png new file mode 100644 index 00000000..fe751ab1 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ne.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.pa.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.pa.png new file mode 100644 index 00000000..5baca906 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.pa.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ur.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ur.png new file mode 100644 index 00000000..1770c4b4 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ur.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ar.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ar.png new file mode 100644 index 00000000..1312d6f8 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ar.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bn.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bn.png new file mode 100644 index 00000000..d7201153 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bn.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.br.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.br.png new file mode 100644 index 00000000..22e68792 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.br.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mo.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mo.png new file mode 100644 index 00000000..a754471f Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mo.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mr.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mr.png new file mode 100644 index 00000000..6325bc7f Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mr.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ne.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ne.png new file mode 100644 index 00000000..0bcd7b1e Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ne.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pa.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pa.png new file mode 100644 index 00000000..727b2500 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pa.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ur.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ur.png new file mode 100644 index 00000000..51278dd0 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ur.png differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ar.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ar.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ar.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.bn.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.bn.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.bn.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.br.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.br.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.br.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.mo.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.mo.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.mo.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.mr.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.mr.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.mr.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ne.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ne.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ne.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.pa.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.pa.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.pa.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ur.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ur.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ur.jpg differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ar.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ar.png new file mode 100644 index 00000000..dc2f8ad1 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ar.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bn.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bn.png new file mode 100644 index 00000000..8e033dbb Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bn.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.br.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.br.png new file mode 100644 index 00000000..c8b250bf Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.br.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mo.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mo.png new file mode 100644 index 00000000..86461466 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mo.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mr.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mr.png new file mode 100644 index 00000000..2869f768 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mr.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ne.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ne.png new file mode 100644 index 00000000..f6867a6e Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ne.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pa.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pa.png new file mode 100644 index 00000000..bc5451bb Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pa.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ur.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ur.png new file mode 100644 index 00000000..00e9504a Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ur.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ar.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ar.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ar.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bn.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bn.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bn.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.br.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.br.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.br.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mo.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mo.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mo.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mr.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mr.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ne.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ne.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ne.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pa.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pa.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pa.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ur.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ur.png new file mode 100644 index 00000000..04699092 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ur.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ar.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ar.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ar.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bn.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bn.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bn.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.br.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.br.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.br.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mo.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mo.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mo.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mr.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mr.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ne.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ne.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ne.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pa.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pa.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pa.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ur.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ur.png new file mode 100644 index 00000000..0e739ec7 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ur.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ar.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ar.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ar.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.bn.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.bn.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.bn.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.br.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.br.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.br.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mo.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mo.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mo.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mr.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mr.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mr.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ne.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ne.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ne.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pa.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pa.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pa.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ur.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ur.png new file mode 100644 index 00000000..c2daf0e1 Binary files /dev/null and b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ur.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ar.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ar.png new file mode 100644 index 00000000..321ec860 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ar.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.bn.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.bn.png new file mode 100644 index 00000000..141ebb73 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.bn.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.br.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.br.png new file mode 100644 index 00000000..c6c5c986 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.br.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.mo.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.mo.png new file mode 100644 index 00000000..1a481b15 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.mo.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.mr.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.mr.png new file mode 100644 index 00000000..625e25ba Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.mr.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ne.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ne.png new file mode 100644 index 00000000..32d0cc1d Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ne.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.pa.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.pa.png new file mode 100644 index 00000000..1c656206 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.pa.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ur.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ur.png new file mode 100644 index 00000000..69f5e03c Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ur.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ar.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ar.png new file mode 100644 index 00000000..4e9cf42e Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ar.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.bn.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.bn.png new file mode 100644 index 00000000..99bb718f Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.bn.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.br.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.br.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.br.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.mo.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.mo.png new file mode 100644 index 00000000..aa97e9e8 Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.mo.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.mr.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.mr.png new file mode 100644 index 00000000..7b551293 Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.mr.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ne.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ne.png new file mode 100644 index 00000000..e6cd394f Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ne.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.pa.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.pa.png new file mode 100644 index 00000000..0ce10bc3 Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.pa.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ur.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ur.png new file mode 100644 index 00000000..86017bde Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ur.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ar.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ar.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ar.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bn.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bn.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bn.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.br.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.br.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.br.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mo.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mo.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mo.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mr.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mr.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mr.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ne.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ne.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ne.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pa.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pa.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pa.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ur.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ur.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ur.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ar.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ar.png new file mode 100644 index 00000000..ce7d0fbf Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ar.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bn.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bn.png new file mode 100644 index 00000000..480275f7 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bn.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.br.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.br.png new file mode 100644 index 00000000..2f13d6de Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.br.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mo.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mo.png new file mode 100644 index 00000000..b9918cf1 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mo.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mr.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mr.png new file mode 100644 index 00000000..f28cb516 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mr.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ne.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ne.png new file mode 100644 index 00000000..8cc7d414 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ne.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pa.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pa.png new file mode 100644 index 00000000..1dda0910 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pa.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ur.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ur.png new file mode 100644 index 00000000..800b2065 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ur.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ar.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ar.png new file mode 100644 index 00000000..237aa2c7 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ar.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.bn.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.bn.png new file mode 100644 index 00000000..fb687329 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.bn.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.br.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.br.png new file mode 100644 index 00000000..e11b8167 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.br.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.mo.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.mo.png new file mode 100644 index 00000000..7621bcb7 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.mo.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.mr.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.mr.png new file mode 100644 index 00000000..e9d77f14 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.mr.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ne.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ne.png new file mode 100644 index 00000000..61752b0e Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ne.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.pa.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.pa.png new file mode 100644 index 00000000..91409fea Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.pa.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ur.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ur.png new file mode 100644 index 00000000..b9970433 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ur.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ar.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ar.png new file mode 100644 index 00000000..50a3bb79 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ar.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bn.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bn.png new file mode 100644 index 00000000..d5191c40 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bn.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.br.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.br.png new file mode 100644 index 00000000..868f8be9 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.br.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mo.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mo.png new file mode 100644 index 00000000..bcaa212f Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mo.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mr.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mr.png new file mode 100644 index 00000000..8116e068 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mr.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ne.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ne.png new file mode 100644 index 00000000..bcbb23d4 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ne.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.pa.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.pa.png new file mode 100644 index 00000000..e4df91ae Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.pa.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ur.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ur.png new file mode 100644 index 00000000..5aa2b03b Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ur.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ar.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ar.png new file mode 100644 index 00000000..3fa89020 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ar.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bn.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bn.png new file mode 100644 index 00000000..3e811c1d Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bn.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.br.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.br.png new file mode 100644 index 00000000..eb7aba46 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.br.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mo.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mo.png new file mode 100644 index 00000000..a9c69e87 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mo.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mr.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mr.png new file mode 100644 index 00000000..bd09ee70 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mr.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ne.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ne.png new file mode 100644 index 00000000..ee3155bc Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ne.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pa.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pa.png new file mode 100644 index 00000000..ccd89b17 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pa.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ur.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ur.png new file mode 100644 index 00000000..6191aaf8 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ur.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ar.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ar.png new file mode 100644 index 00000000..7b91361b Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ar.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bn.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bn.png new file mode 100644 index 00000000..cc086739 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bn.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.br.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.br.png new file mode 100644 index 00000000..73cdd5c2 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.br.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mo.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mo.png new file mode 100644 index 00000000..d1de87e0 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mo.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mr.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mr.png new file mode 100644 index 00000000..1f186ad0 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mr.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ne.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ne.png new file mode 100644 index 00000000..1dabb52e Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ne.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pa.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pa.png new file mode 100644 index 00000000..e23a24e8 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pa.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ur.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ur.png new file mode 100644 index 00000000..dccb6a5a Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ur.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ar.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ar.png new file mode 100644 index 00000000..8e921b9d Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ar.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bn.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bn.png new file mode 100644 index 00000000..dfc0f444 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bn.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.br.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.br.png new file mode 100644 index 00000000..e374f579 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.br.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mo.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mo.png new file mode 100644 index 00000000..c4736272 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mo.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mr.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mr.png new file mode 100644 index 00000000..bb1f8e3c Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mr.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ne.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ne.png new file mode 100644 index 00000000..d71873ed Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ne.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pa.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pa.png new file mode 100644 index 00000000..0d613a0b Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pa.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ur.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ur.png new file mode 100644 index 00000000..2f8b6fed Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ur.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ar.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ar.png new file mode 100644 index 00000000..7f523873 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ar.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bn.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bn.png new file mode 100644 index 00000000..1d968e45 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bn.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.br.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.br.png new file mode 100644 index 00000000..71078911 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.br.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mo.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mo.png new file mode 100644 index 00000000..9260b292 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mo.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mr.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mr.png new file mode 100644 index 00000000..e4262d88 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mr.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ne.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ne.png new file mode 100644 index 00000000..68500669 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ne.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pa.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pa.png new file mode 100644 index 00000000..1d3f2568 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pa.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ur.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ur.png new file mode 100644 index 00000000..4aac6352 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ur.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ar.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ar.png new file mode 100644 index 00000000..8a4d1ab1 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ar.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bn.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bn.png new file mode 100644 index 00000000..2e2bad7a Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bn.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.br.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.br.png new file mode 100644 index 00000000..ee15af60 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.br.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mo.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mo.png new file mode 100644 index 00000000..23802c01 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mo.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mr.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mr.png new file mode 100644 index 00000000..b946d19e Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mr.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ne.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ne.png new file mode 100644 index 00000000..54370ea2 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ne.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pa.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pa.png new file mode 100644 index 00000000..6bee82c1 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pa.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ur.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ur.png new file mode 100644 index 00000000..ed37e752 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ur.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ar.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ar.png new file mode 100644 index 00000000..dc063585 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ar.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bn.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bn.png new file mode 100644 index 00000000..be70845a Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bn.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.br.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.br.png new file mode 100644 index 00000000..ec54b080 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.br.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mo.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mo.png new file mode 100644 index 00000000..62a34250 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mo.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mr.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mr.png new file mode 100644 index 00000000..e5729435 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mr.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ne.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ne.png new file mode 100644 index 00000000..1a3152d2 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ne.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pa.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pa.png new file mode 100644 index 00000000..75179d86 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pa.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ur.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ur.png new file mode 100644 index 00000000..748b7edd Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ur.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ar.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ar.png new file mode 100644 index 00000000..5a4c89d5 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ar.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bn.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bn.png new file mode 100644 index 00000000..bbb4570f Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bn.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.br.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.br.png new file mode 100644 index 00000000..66c2b4f1 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.br.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mo.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mo.png new file mode 100644 index 00000000..644edaec Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mo.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mr.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mr.png new file mode 100644 index 00000000..475c643c Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mr.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ne.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ne.png new file mode 100644 index 00000000..46f3aa71 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ne.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pa.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pa.png new file mode 100644 index 00000000..91e050d0 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pa.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ur.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ur.png new file mode 100644 index 00000000..f965749d Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ur.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ar.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ar.png new file mode 100644 index 00000000..2f1fb499 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ar.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.bn.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.bn.png new file mode 100644 index 00000000..418b0e07 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.bn.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.br.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.br.png new file mode 100644 index 00000000..bbc5cfbc Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.br.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.mo.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.mo.png new file mode 100644 index 00000000..a5a59b57 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.mo.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.mr.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.mr.png new file mode 100644 index 00000000..3bc11046 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.mr.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ne.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ne.png new file mode 100644 index 00000000..9943ca75 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ne.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.pa.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.pa.png new file mode 100644 index 00000000..eb6e2fbc Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.pa.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ur.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ur.png new file mode 100644 index 00000000..a840a65e Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ur.png differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ar.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ar.jpg new file mode 100644 index 00000000..2e144d49 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ar.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bn.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bn.jpg new file mode 100644 index 00000000..1366e6c8 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bn.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.br.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.br.jpg new file mode 100644 index 00000000..fc1739f6 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.br.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mo.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mo.jpg new file mode 100644 index 00000000..c777090f Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mo.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mr.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mr.jpg new file mode 100644 index 00000000..4966bd03 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mr.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ne.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ne.jpg new file mode 100644 index 00000000..e089b2b5 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ne.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pa.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pa.jpg new file mode 100644 index 00000000..d2a756c3 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pa.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ur.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ur.jpg new file mode 100644 index 00000000..af7a7c81 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ur.jpg differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ar.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ar.png new file mode 100644 index 00000000..624f1085 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ar.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.bn.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.bn.png new file mode 100644 index 00000000..932ff03c Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.bn.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.br.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.br.png new file mode 100644 index 00000000..3b3b9cd2 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.br.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.mo.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.mo.png new file mode 100644 index 00000000..9a472e54 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.mo.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.mr.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.mr.png new file mode 100644 index 00000000..c7869729 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.mr.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ne.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ne.png new file mode 100644 index 00000000..c1489bed Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ne.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.pa.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.pa.png new file mode 100644 index 00000000..5cd26e95 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.pa.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ur.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ur.png new file mode 100644 index 00000000..3ddad506 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ur.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ar.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ar.png new file mode 100644 index 00000000..b634d7f2 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ar.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bn.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bn.png new file mode 100644 index 00000000..ded57713 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bn.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.br.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.br.png new file mode 100644 index 00000000..89b909f8 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.br.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mo.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mo.png new file mode 100644 index 00000000..f8fd77d0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mo.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mr.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mr.png new file mode 100644 index 00000000..fd634f38 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mr.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ne.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ne.png new file mode 100644 index 00000000..742e13a9 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ne.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pa.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pa.png new file mode 100644 index 00000000..12246c7b Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pa.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ur.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ur.png new file mode 100644 index 00000000..2ee421ab Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ur.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ar.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ar.png new file mode 100644 index 00000000..d2d3d9ed Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ar.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.bn.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.bn.png new file mode 100644 index 00000000..5b942a60 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.bn.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.br.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.br.png new file mode 100644 index 00000000..e019277b Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.br.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.mo.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.mo.png new file mode 100644 index 00000000..cd8f123c Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.mo.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.mr.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.mr.png new file mode 100644 index 00000000..73555714 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.mr.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ne.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ne.png new file mode 100644 index 00000000..9ab8c943 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ne.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.pa.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.pa.png new file mode 100644 index 00000000..f8e9acc6 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.pa.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ur.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ur.png new file mode 100644 index 00000000..c2069e38 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ur.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ar.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ar.png new file mode 100644 index 00000000..4f30493c Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ar.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.bn.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.bn.png new file mode 100644 index 00000000..1aee130f Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.bn.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.br.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.br.png new file mode 100644 index 00000000..53ef52fc Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.br.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.mo.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.mo.png new file mode 100644 index 00000000..45d661ff Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.mo.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.mr.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.mr.png new file mode 100644 index 00000000..5d8186b7 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.mr.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ne.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ne.png new file mode 100644 index 00000000..b78498c9 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ne.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.pa.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.pa.png new file mode 100644 index 00000000..e353eb5b Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.pa.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ur.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ur.png new file mode 100644 index 00000000..9747e724 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ur.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ar.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ar.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ar.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bn.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bn.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bn.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.br.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.br.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.br.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mo.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mo.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mo.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mr.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mr.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mr.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ne.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ne.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ne.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pa.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pa.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pa.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ur.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ur.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ur.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ar.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ar.png new file mode 100644 index 00000000..36dc7b2a Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ar.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bn.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bn.png new file mode 100644 index 00000000..9ce52d07 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bn.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.br.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.br.png new file mode 100644 index 00000000..7aaf41ff Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.br.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mo.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mo.png new file mode 100644 index 00000000..e76195c4 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mo.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mr.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mr.png new file mode 100644 index 00000000..727d53c2 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mr.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ne.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ne.png new file mode 100644 index 00000000..52b63734 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ne.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pa.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pa.png new file mode 100644 index 00000000..948c18e5 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pa.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ur.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ur.png new file mode 100644 index 00000000..eb79c59f Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ur.png differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ar.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ar.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ar.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bn.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bn.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bn.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.br.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.br.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.br.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mo.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mo.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mo.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mr.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mr.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mr.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ne.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ne.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ne.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pa.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pa.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pa.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ur.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ur.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ur.jpeg differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ar.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ar.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ar.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.bn.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.bn.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.bn.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.br.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.br.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.br.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.mo.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.mo.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.mo.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.mr.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.mr.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.mr.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ne.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ne.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ne.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.pa.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.pa.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.pa.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ur.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ur.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ur.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ar.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ar.png new file mode 100644 index 00000000..76f325ae Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ar.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.bn.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.bn.png new file mode 100644 index 00000000..9b384a9d Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.bn.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.br.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.br.png new file mode 100644 index 00000000..39c4bab1 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.br.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.mo.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.mo.png new file mode 100644 index 00000000..dadebe84 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.mo.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.mr.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.mr.png new file mode 100644 index 00000000..88432e61 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.mr.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ne.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ne.png new file mode 100644 index 00000000..334107d7 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ne.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.pa.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.pa.png new file mode 100644 index 00000000..9877d44e Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.pa.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ur.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ur.png new file mode 100644 index 00000000..f91bf740 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ur.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ar.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ar.png new file mode 100644 index 00000000..ccd726f6 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ar.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bn.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bn.png new file mode 100644 index 00000000..39c1d217 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bn.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.br.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.br.png new file mode 100644 index 00000000..37255898 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.br.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mo.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mo.png new file mode 100644 index 00000000..ac0c1e70 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mo.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mr.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mr.png new file mode 100644 index 00000000..e7a89e48 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mr.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ne.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ne.png new file mode 100644 index 00000000..46fdcd9b Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ne.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pa.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pa.png new file mode 100644 index 00000000..d1f603c3 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pa.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ur.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ur.png new file mode 100644 index 00000000..8d841f0d Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ur.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ar.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ar.png new file mode 100644 index 00000000..18e1b77f Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ar.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bn.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bn.png new file mode 100644 index 00000000..13ed36b6 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bn.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.br.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.br.png new file mode 100644 index 00000000..37255898 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.br.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mo.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mo.png new file mode 100644 index 00000000..8ea05204 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mo.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mr.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mr.png new file mode 100644 index 00000000..a4b833a3 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mr.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ne.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ne.png new file mode 100644 index 00000000..526261b8 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ne.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pa.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pa.png new file mode 100644 index 00000000..dc39afb6 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pa.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ur.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ur.png new file mode 100644 index 00000000..6a7a9a8d Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ur.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ar.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ar.png new file mode 100644 index 00000000..b08b93ce Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ar.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.bn.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.bn.png new file mode 100644 index 00000000..9ff67483 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.bn.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.br.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.br.png new file mode 100644 index 00000000..74c1196a Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.br.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.mo.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.mo.png new file mode 100644 index 00000000..13568e7b Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.mo.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.mr.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.mr.png new file mode 100644 index 00000000..b89b7c58 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.mr.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ne.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ne.png new file mode 100644 index 00000000..afd95b67 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ne.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.pa.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.pa.png new file mode 100644 index 00000000..87b88ae3 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.pa.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ur.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ur.png new file mode 100644 index 00000000..33eb2f77 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ur.png differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ar.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ar.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ar.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bn.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bn.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bn.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.br.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.br.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.br.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mo.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mo.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mo.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mr.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mr.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mr.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ne.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ne.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ne.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pa.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pa.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pa.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ur.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ur.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ur.jpg differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ar.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ar.png new file mode 100644 index 00000000..daaaecab Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ar.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.bn.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.bn.png new file mode 100644 index 00000000..6c3d9bc4 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.bn.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.br.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.br.png new file mode 100644 index 00000000..efda46cf Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.br.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.mo.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.mo.png new file mode 100644 index 00000000..62fa48a2 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.mo.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.mr.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.mr.png new file mode 100644 index 00000000..0b59dac0 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.mr.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ne.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ne.png new file mode 100644 index 00000000..e8c080f7 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ne.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.pa.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.pa.png new file mode 100644 index 00000000..66306b62 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.pa.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ur.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ur.png new file mode 100644 index 00000000..b7f08983 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ur.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ar.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ar.png new file mode 100644 index 00000000..6562e7e9 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ar.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bn.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bn.png new file mode 100644 index 00000000..51ff9010 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bn.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.br.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.br.png new file mode 100644 index 00000000..daa24fce Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.br.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mo.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mo.png new file mode 100644 index 00000000..80346439 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mo.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mr.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mr.png new file mode 100644 index 00000000..b8b26a40 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mr.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ne.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ne.png new file mode 100644 index 00000000..a2e47159 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ne.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pa.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pa.png new file mode 100644 index 00000000..a5b564c2 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pa.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ur.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ur.png new file mode 100644 index 00000000..59970649 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ur.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ar.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ar.png new file mode 100644 index 00000000..73630508 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ar.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.bn.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.bn.png new file mode 100644 index 00000000..501b74a8 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.bn.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.br.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.br.png new file mode 100644 index 00000000..0e6bb002 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.br.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.mo.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.mo.png new file mode 100644 index 00000000..d0782a30 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.mo.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.mr.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.mr.png new file mode 100644 index 00000000..0899774c Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.mr.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ne.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ne.png new file mode 100644 index 00000000..4c76be5f Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ne.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.pa.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.pa.png new file mode 100644 index 00000000..01423c56 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.pa.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ur.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ur.png new file mode 100644 index 00000000..9e5e2e4f Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ur.png differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ar.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ar.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ar.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.bn.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.bn.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.bn.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.br.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.br.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.br.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.mo.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.mo.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.mo.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.mr.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.mr.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.mr.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ne.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ne.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ne.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.pa.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.pa.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.pa.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ur.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ur.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ur.jpg differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ar.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ar.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ar.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bn.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bn.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bn.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.br.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.br.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.br.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mo.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mo.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mo.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mr.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mr.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mr.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ne.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ne.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ne.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.pa.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.pa.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.pa.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ur.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ur.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ur.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ar.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ar.png new file mode 100644 index 00000000..c5727cd7 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ar.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bn.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bn.png new file mode 100644 index 00000000..8570b2f8 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bn.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.br.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.br.png new file mode 100644 index 00000000..284c5859 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.br.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mo.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mo.png new file mode 100644 index 00000000..769fbf72 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mo.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mr.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mr.png new file mode 100644 index 00000000..cfab1a20 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mr.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ne.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ne.png new file mode 100644 index 00000000..b2817be2 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ne.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pa.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pa.png new file mode 100644 index 00000000..6a165790 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pa.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ur.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ur.png new file mode 100644 index 00000000..2bb418b2 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ur.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ar.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ar.png new file mode 100644 index 00000000..1fc32744 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ar.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bn.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bn.png new file mode 100644 index 00000000..e3f594dd Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bn.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.br.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.br.png new file mode 100644 index 00000000..bdc3f4a3 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.br.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mo.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mo.png new file mode 100644 index 00000000..5a912607 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mo.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mr.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mr.png new file mode 100644 index 00000000..8132ea86 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mr.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ne.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ne.png new file mode 100644 index 00000000..ccf344b8 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ne.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pa.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pa.png new file mode 100644 index 00000000..2ba2110a Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pa.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ur.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ur.png new file mode 100644 index 00000000..c1448740 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ur.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ar.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ar.png new file mode 100644 index 00000000..6f8bcaf6 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ar.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bn.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bn.png new file mode 100644 index 00000000..e1fab278 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bn.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.br.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.br.png new file mode 100644 index 00000000..43737315 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.br.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mo.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mo.png new file mode 100644 index 00000000..6aff3955 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mo.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mr.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mr.png new file mode 100644 index 00000000..20a06c02 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mr.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ne.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ne.png new file mode 100644 index 00000000..0c34ecff Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ne.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pa.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pa.png new file mode 100644 index 00000000..18145327 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pa.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ur.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ur.png new file mode 100644 index 00000000..fd953bb6 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ur.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ar.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ar.png new file mode 100644 index 00000000..75737026 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ar.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bn.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bn.png new file mode 100644 index 00000000..f2ec35b6 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bn.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.br.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.br.png new file mode 100644 index 00000000..d5b8e402 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.br.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mo.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mo.png new file mode 100644 index 00000000..74b44f48 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mo.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mr.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mr.png new file mode 100644 index 00000000..5f1aeac3 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mr.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ne.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ne.png new file mode 100644 index 00000000..874a1498 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ne.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pa.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pa.png new file mode 100644 index 00000000..ef9c43e0 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pa.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ur.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ur.png new file mode 100644 index 00000000..452e6d35 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ur.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ar.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ar.png new file mode 100644 index 00000000..494c2672 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ar.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bn.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bn.png new file mode 100644 index 00000000..43921211 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bn.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.br.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.br.png new file mode 100644 index 00000000..b167c1be Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.br.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mo.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mo.png new file mode 100644 index 00000000..14967164 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mo.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mr.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mr.png new file mode 100644 index 00000000..9f797e06 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mr.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ne.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ne.png new file mode 100644 index 00000000..eeb9e964 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ne.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pa.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pa.png new file mode 100644 index 00000000..898d845c Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pa.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ur.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ur.png new file mode 100644 index 00000000..e4d0591b Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ur.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ar.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ar.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ar.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.bn.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.bn.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.bn.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.br.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.br.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.br.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mo.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mo.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mo.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mr.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.mr.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ne.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ne.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ne.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pa.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pa.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pa.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ur.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ur.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ur.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ar.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ar.png new file mode 100644 index 00000000..c97e068f Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ar.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bn.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bn.png new file mode 100644 index 00000000..b056453a Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bn.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.br.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.br.png new file mode 100644 index 00000000..626e5713 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.br.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mo.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mo.png new file mode 100644 index 00000000..901c93ef Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mo.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mr.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mr.png new file mode 100644 index 00000000..11ad1fcc Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mr.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ne.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ne.png new file mode 100644 index 00000000..c761d1c1 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ne.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pa.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pa.png new file mode 100644 index 00000000..11ad1fcc Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pa.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ur.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ur.png new file mode 100644 index 00000000..3b26381f Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ur.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ar.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ar.png new file mode 100644 index 00000000..8814b91c Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ar.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bn.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bn.png new file mode 100644 index 00000000..b730ff13 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bn.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.br.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.br.png new file mode 100644 index 00000000..e95faab0 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.br.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mo.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mo.png new file mode 100644 index 00000000..b17c5868 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mo.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mr.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mr.png new file mode 100644 index 00000000..0603d423 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mr.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ne.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ne.png new file mode 100644 index 00000000..0725d4c7 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ne.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pa.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pa.png new file mode 100644 index 00000000..3fe5bec9 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pa.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ur.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ur.png new file mode 100644 index 00000000..ea64d7c9 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ur.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ar.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ar.png new file mode 100644 index 00000000..bffa0bb2 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ar.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bn.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bn.png new file mode 100644 index 00000000..ca57aa1c Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bn.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.br.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.br.png new file mode 100644 index 00000000..4abd834d Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.br.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mo.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mo.png new file mode 100644 index 00000000..83205a8b Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mo.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mr.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mr.png new file mode 100644 index 00000000..ce10daaf Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mr.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ne.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ne.png new file mode 100644 index 00000000..15c672e3 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ne.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pa.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pa.png new file mode 100644 index 00000000..bf26194c Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pa.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ur.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ur.png new file mode 100644 index 00000000..8c41cdd5 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ur.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ar.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ar.png new file mode 100644 index 00000000..33a1622e Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ar.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bn.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bn.png new file mode 100644 index 00000000..cf24dfcd Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bn.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.br.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.br.png new file mode 100644 index 00000000..e772f736 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.br.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mo.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mo.png new file mode 100644 index 00000000..8b869946 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mo.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mr.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mr.png new file mode 100644 index 00000000..d6d75d4d Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mr.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ne.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ne.png new file mode 100644 index 00000000..25acfaed Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ne.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pa.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pa.png new file mode 100644 index 00000000..0a854353 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pa.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ur.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ur.png new file mode 100644 index 00000000..3f2272ff Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ur.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ar.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ar.png new file mode 100644 index 00000000..12ab0fe4 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ar.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.bn.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.bn.png new file mode 100644 index 00000000..25f542a9 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.bn.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.br.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.br.png new file mode 100644 index 00000000..553bb5ba Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.br.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.mo.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.mo.png new file mode 100644 index 00000000..252074a9 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.mo.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.mr.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.mr.png new file mode 100644 index 00000000..703bc15d Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.mr.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ne.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ne.png new file mode 100644 index 00000000..0f2078db Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ne.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.pa.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.pa.png new file mode 100644 index 00000000..1030cf63 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.pa.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ur.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ur.png new file mode 100644 index 00000000..784562f5 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ur.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ar.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ar.png new file mode 100644 index 00000000..76f98fed Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ar.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.bn.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.bn.png new file mode 100644 index 00000000..55c1ddbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.bn.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.br.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.br.png new file mode 100644 index 00000000..a900a4bc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.br.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.mo.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.mo.png new file mode 100644 index 00000000..e6a9e87d Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.mo.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.mr.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.mr.png new file mode 100644 index 00000000..0d38dfbd Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.mr.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ne.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ne.png new file mode 100644 index 00000000..fca92aa2 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ne.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.pa.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.pa.png new file mode 100644 index 00000000..cba3ce94 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.pa.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ur.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ur.png new file mode 100644 index 00000000..22c3424c Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ur.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ar.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ar.png new file mode 100644 index 00000000..af67f7bd Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ar.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.bn.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.bn.png new file mode 100644 index 00000000..5cc2f5db Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.bn.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.br.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.br.png new file mode 100644 index 00000000..c3705a2d Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.br.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.mo.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.mo.png new file mode 100644 index 00000000..caee13a5 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.mo.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.mr.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.mr.png new file mode 100644 index 00000000..38a060b1 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.mr.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ne.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ne.png new file mode 100644 index 00000000..a6d6b59f Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ne.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.pa.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.pa.png new file mode 100644 index 00000000..3270aa07 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.pa.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ur.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ur.png new file mode 100644 index 00000000..7bc4f548 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ur.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ar.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ar.png new file mode 100644 index 00000000..6f03747f Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ar.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bn.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bn.png new file mode 100644 index 00000000..581d6901 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bn.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.br.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.br.png new file mode 100644 index 00000000..fc405e65 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.br.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mo.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mo.png new file mode 100644 index 00000000..bc65220d Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mo.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mr.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mr.png new file mode 100644 index 00000000..484fa866 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mr.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ne.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ne.png new file mode 100644 index 00000000..3ac20cec Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ne.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pa.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pa.png new file mode 100644 index 00000000..d03b5767 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pa.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ur.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ur.png new file mode 100644 index 00000000..bb2c0d62 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ur.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ar.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ar.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ar.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bn.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bn.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bn.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.br.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.br.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.br.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mo.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mo.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mo.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mr.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mr.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mr.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ne.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ne.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ne.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pa.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pa.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pa.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ur.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ur.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ur.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ar.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ar.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ar.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bn.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bn.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bn.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.br.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.br.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.br.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mo.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mo.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mo.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mr.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mr.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mr.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ne.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ne.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ne.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pa.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pa.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pa.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ur.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ur.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ur.png differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ar.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ar.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ar.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.bn.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.bn.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.bn.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.br.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.br.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.br.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.mo.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.mo.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.mo.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.mr.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.mr.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.mr.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ne.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ne.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ne.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.pa.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.pa.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.pa.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ur.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ur.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ur.jpg differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ar.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ar.png new file mode 100644 index 00000000..ea3c1be0 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ar.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.bn.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.bn.png new file mode 100644 index 00000000..c76ab88f Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.bn.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.br.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.br.png new file mode 100644 index 00000000..9b3307d9 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.br.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.mo.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.mo.png new file mode 100644 index 00000000..3580a73a Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.mo.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.mr.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.mr.png new file mode 100644 index 00000000..26c2c0d0 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.mr.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ne.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ne.png new file mode 100644 index 00000000..611a4bf1 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ne.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.pa.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.pa.png new file mode 100644 index 00000000..d0f969c2 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.pa.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ur.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ur.png new file mode 100644 index 00000000..083e341d Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ur.png differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ar.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ar.jpeg new file mode 100644 index 00000000..91d1ad5a Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ar.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.bn.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.bn.jpeg new file mode 100644 index 00000000..a15af2f7 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.bn.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.br.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.br.jpeg new file mode 100644 index 00000000..a7cd45d3 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.br.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.mo.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.mo.jpeg new file mode 100644 index 00000000..7d5fb1fb Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.mo.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.mr.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.mr.jpeg new file mode 100644 index 00000000..c284c28d Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.mr.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ne.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ne.jpeg new file mode 100644 index 00000000..5ecfbd7d Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ne.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.pa.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.pa.jpeg new file mode 100644 index 00000000..b26e6c1a Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.pa.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ur.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ur.jpeg new file mode 100644 index 00000000..9b35b821 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ur.jpeg differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ar.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ar.png new file mode 100644 index 00000000..eaaa8292 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ar.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bn.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bn.png new file mode 100644 index 00000000..e81815c9 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bn.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.br.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.br.png new file mode 100644 index 00000000..480e53a3 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.br.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mo.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mo.png new file mode 100644 index 00000000..b4c10c22 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mo.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mr.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mr.png new file mode 100644 index 00000000..17c11a9d Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mr.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ne.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ne.png new file mode 100644 index 00000000..a384398c Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ne.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pa.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pa.png new file mode 100644 index 00000000..da04cacb Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pa.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ur.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ur.png new file mode 100644 index 00000000..9c6dd9ea Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ur.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ar.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ar.png new file mode 100644 index 00000000..4d68b7f4 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ar.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bn.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bn.png new file mode 100644 index 00000000..08ca0f86 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bn.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.br.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.br.png new file mode 100644 index 00000000..b7d2b3eb Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.br.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mo.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mo.png new file mode 100644 index 00000000..d19c9e56 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mo.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mr.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mr.png new file mode 100644 index 00000000..5bfab863 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mr.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ne.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ne.png new file mode 100644 index 00000000..cd392f4d Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ne.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pa.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pa.png new file mode 100644 index 00000000..7dd02fc2 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pa.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ur.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ur.png new file mode 100644 index 00000000..91e253ee Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ur.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ar.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ar.png new file mode 100644 index 00000000..809f6623 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ar.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bn.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bn.png new file mode 100644 index 00000000..e861a81a Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bn.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.br.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.br.png new file mode 100644 index 00000000..6a3b69e3 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.br.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mo.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mo.png new file mode 100644 index 00000000..89c2b504 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mo.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mr.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mr.png new file mode 100644 index 00000000..41f004cc Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mr.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ne.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ne.png new file mode 100644 index 00000000..442caace Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ne.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pa.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pa.png new file mode 100644 index 00000000..dbfc3f09 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pa.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ur.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ur.png new file mode 100644 index 00000000..5865ad91 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ur.png differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ar.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ar.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ar.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.bn.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.bn.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.bn.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.br.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.br.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.br.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.mo.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.mo.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.mo.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.mr.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.mr.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.mr.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ne.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ne.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ne.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.pa.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.pa.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.pa.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ur.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ur.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ur.jpg differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ar.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ar.png new file mode 100644 index 00000000..e1fa6919 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ar.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bn.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bn.png new file mode 100644 index 00000000..0982db79 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bn.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.br.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.br.png new file mode 100644 index 00000000..7c2ad044 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.br.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mo.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mo.png new file mode 100644 index 00000000..53d89cd4 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mo.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mr.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mr.png new file mode 100644 index 00000000..fdb7b920 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mr.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ne.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ne.png new file mode 100644 index 00000000..f8171577 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ne.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.pa.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.pa.png new file mode 100644 index 00000000..3867a060 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.pa.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ur.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ur.png new file mode 100644 index 00000000..80b90b8e Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ur.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ar.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ar.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ar.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.bn.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.bn.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.bn.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.br.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.br.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.br.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.mo.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.mo.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.mo.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.mr.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.mr.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.mr.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ne.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ne.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ne.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.pa.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.pa.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.pa.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ur.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ur.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ur.png differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ar.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ar.jpg new file mode 100644 index 00000000..62c1cc5f Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ar.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bn.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bn.jpg new file mode 100644 index 00000000..8c2d99d1 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bn.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.br.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.br.jpg new file mode 100644 index 00000000..c81b9e8b Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.br.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mo.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mo.jpg new file mode 100644 index 00000000..45edf4a9 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mo.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mr.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mr.jpg new file mode 100644 index 00000000..605c3ae6 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mr.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ne.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ne.jpg new file mode 100644 index 00000000..c1490d7e Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ne.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pa.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pa.jpg new file mode 100644 index 00000000..b8d902b5 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pa.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ur.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ur.jpg new file mode 100644 index 00000000..618ecc7b Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ur.jpg differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ar.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ar.png new file mode 100644 index 00000000..fe75de3e Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ar.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bn.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bn.png new file mode 100644 index 00000000..57e15586 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bn.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.br.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.br.png new file mode 100644 index 00000000..a4d41ba3 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.br.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mo.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mo.png new file mode 100644 index 00000000..cbdfee1c Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mo.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mr.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mr.png new file mode 100644 index 00000000..260bcbb9 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mr.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ne.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ne.png new file mode 100644 index 00000000..260bcbb9 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ne.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pa.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pa.png new file mode 100644 index 00000000..b753ef5a Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pa.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ur.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ur.png new file mode 100644 index 00000000..6f9429f7 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ur.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ar.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ar.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ar.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.bn.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.bn.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.bn.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.br.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.br.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.br.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.mo.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.mo.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.mo.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.mr.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.mr.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.mr.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ne.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ne.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ne.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.pa.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.pa.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.pa.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ur.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ur.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ur.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ar.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ar.png new file mode 100644 index 00000000..a8a741a5 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ar.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.bn.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.bn.png new file mode 100644 index 00000000..c28fc143 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.bn.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.br.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.br.png new file mode 100644 index 00000000..ac97b5e4 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.br.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.mo.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.mo.png new file mode 100644 index 00000000..f2809027 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.mo.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.mr.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.mr.png new file mode 100644 index 00000000..572fbf3f Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.mr.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ne.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ne.png new file mode 100644 index 00000000..572fbf3f Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ne.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.pa.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.pa.png new file mode 100644 index 00000000..0d1d9750 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.pa.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ur.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ur.png new file mode 100644 index 00000000..a8a741a5 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ur.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ar.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ar.png new file mode 100644 index 00000000..0b137cb7 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ar.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.bn.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.bn.png new file mode 100644 index 00000000..42d2871a Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.bn.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.br.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.br.png new file mode 100644 index 00000000..b8a687dd Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.br.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.mo.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.mo.png new file mode 100644 index 00000000..557b6637 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.mo.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.mr.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.mr.png new file mode 100644 index 00000000..aa5a0f47 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.mr.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ne.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ne.png new file mode 100644 index 00000000..c0e67c9f Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ne.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.pa.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.pa.png new file mode 100644 index 00000000..5b92b571 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.pa.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ur.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ur.png new file mode 100644 index 00000000..d3c0f4e7 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ur.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ar.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ar.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ar.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bn.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bn.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bn.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.br.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.br.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.br.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mo.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mo.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mo.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mr.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mr.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mr.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ne.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ne.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ne.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pa.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pa.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pa.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ur.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ur.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ur.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ar.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ar.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ar.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bn.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bn.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bn.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.br.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.br.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.br.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mo.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mo.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mo.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mr.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mr.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mr.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ne.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ne.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ne.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pa.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pa.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pa.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ur.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ur.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ur.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ar.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ar.png new file mode 100644 index 00000000..0f36f0ee Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ar.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.bn.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.bn.png new file mode 100644 index 00000000..45250373 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.bn.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.br.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.br.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.br.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.mo.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.mo.png new file mode 100644 index 00000000..6a7fe0bc Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.mo.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.mr.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.mr.png new file mode 100644 index 00000000..cfa955a5 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.mr.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ne.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ne.png new file mode 100644 index 00000000..ab4d6db9 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ne.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.pa.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.pa.png new file mode 100644 index 00000000..dc39fec7 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.pa.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ur.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ur.png new file mode 100644 index 00000000..0f36f0ee Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ur.png differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ar.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ar.jpg new file mode 100644 index 00000000..773d40f2 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ar.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bn.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bn.jpg new file mode 100644 index 00000000..6563a99d Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bn.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.br.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.br.jpg new file mode 100644 index 00000000..4b62f473 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.br.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mo.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mo.jpg new file mode 100644 index 00000000..72225a50 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mo.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mr.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mr.jpg new file mode 100644 index 00000000..b2f4093a Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mr.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ne.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ne.jpg new file mode 100644 index 00000000..b2f4093a Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ne.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pa.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pa.jpg new file mode 100644 index 00000000..a4712541 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pa.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ur.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ur.jpg new file mode 100644 index 00000000..d23c0e86 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ur.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ar.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ar.jpg new file mode 100644 index 00000000..e70a2d7d Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ar.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bn.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bn.jpg new file mode 100644 index 00000000..152ca7a0 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bn.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.br.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.br.jpg new file mode 100644 index 00000000..b88c995f Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.br.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mo.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mo.jpg new file mode 100644 index 00000000..9e5f2f9b Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mo.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mr.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mr.jpg new file mode 100644 index 00000000..bed332a1 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mr.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ne.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ne.jpg new file mode 100644 index 00000000..bed332a1 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ne.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pa.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pa.jpg new file mode 100644 index 00000000..7186d06c Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pa.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ur.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ur.jpg new file mode 100644 index 00000000..55ec9dbb Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ur.jpg differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ar.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ar.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ar.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.bn.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.bn.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.bn.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.br.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.br.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.br.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.mo.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.mo.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.mo.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.mr.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.mr.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.mr.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ne.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ne.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ne.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.pa.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.pa.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.pa.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ur.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ur.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ur.png differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ar.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ar.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ar.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bn.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bn.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bn.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.br.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.br.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.br.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mo.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mo.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mo.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mr.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mr.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mr.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ne.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ne.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ne.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.pa.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.pa.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.pa.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ur.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ur.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ur.jpg differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ar.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ar.png new file mode 100644 index 00000000..f2bb2b6b Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ar.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.bn.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.bn.png new file mode 100644 index 00000000..e4b41b1c Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.bn.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.br.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.br.png new file mode 100644 index 00000000..ce578967 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.br.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.mo.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.mo.png new file mode 100644 index 00000000..8de57d1e Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.mo.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.mr.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.mr.png new file mode 100644 index 00000000..5ca56f89 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.mr.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ne.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ne.png new file mode 100644 index 00000000..8286253d Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ne.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.pa.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.pa.png new file mode 100644 index 00000000..fc7499b2 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.pa.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ur.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ur.png new file mode 100644 index 00000000..f65e6326 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ur.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ar.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ar.png new file mode 100644 index 00000000..fc4d7664 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ar.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.bn.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.bn.png new file mode 100644 index 00000000..8bef4a9e Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.bn.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.br.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.br.png new file mode 100644 index 00000000..52f5914d Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.br.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.mo.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.mo.png new file mode 100644 index 00000000..b0b7b068 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.mo.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.mr.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.mr.png new file mode 100644 index 00000000..14f47164 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.mr.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ne.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ne.png new file mode 100644 index 00000000..95508ec7 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ne.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.pa.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.pa.png new file mode 100644 index 00000000..7aaf8145 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.pa.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ur.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ur.png new file mode 100644 index 00000000..532b18f7 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ur.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ar.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ar.png new file mode 100644 index 00000000..48737624 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ar.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bn.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bn.png new file mode 100644 index 00000000..eefe502b Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bn.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.br.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.br.png new file mode 100644 index 00000000..73be2f04 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.br.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mo.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mo.png new file mode 100644 index 00000000..4de8d8a3 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mo.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mr.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mr.png new file mode 100644 index 00000000..6d5d6ff1 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mr.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ne.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ne.png new file mode 100644 index 00000000..c3bbcc40 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ne.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pa.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pa.png new file mode 100644 index 00000000..d676ebc5 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pa.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ur.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ur.png new file mode 100644 index 00000000..e6e5f01b Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ur.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ar.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ar.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ar.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bn.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bn.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bn.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.br.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.br.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.br.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mo.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mo.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mo.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mr.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mr.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mr.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ne.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ne.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ne.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pa.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pa.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pa.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ur.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ur.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ur.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ar.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ar.png new file mode 100644 index 00000000..6c86c6b9 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ar.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bn.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bn.png new file mode 100644 index 00000000..0a883b7f Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bn.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.br.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.br.png new file mode 100644 index 00000000..c9a6c1f4 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.br.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mo.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mo.png new file mode 100644 index 00000000..536efe1e Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mo.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mr.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mr.png new file mode 100644 index 00000000..4dd83c3e Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mr.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ne.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ne.png new file mode 100644 index 00000000..834b96bc Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ne.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pa.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pa.png new file mode 100644 index 00000000..b58c9553 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pa.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ur.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ur.png new file mode 100644 index 00000000..78b55854 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ur.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ar.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ar.png new file mode 100644 index 00000000..3ea639de Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ar.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.bn.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.bn.png new file mode 100644 index 00000000..6d39b071 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.bn.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.br.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.br.png new file mode 100644 index 00000000..fa216a3e Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.br.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.mo.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.mo.png new file mode 100644 index 00000000..debcc67a Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.mo.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.mr.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.mr.png new file mode 100644 index 00000000..4c3b2c91 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.mr.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ne.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ne.png new file mode 100644 index 00000000..83a8ad57 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ne.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.pa.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.pa.png new file mode 100644 index 00000000..387bad2d Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.pa.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ur.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ur.png new file mode 100644 index 00000000..e66bfda7 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ur.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ar.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ar.png new file mode 100644 index 00000000..5fa16fd5 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ar.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.bn.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.bn.png new file mode 100644 index 00000000..c6963760 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.bn.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.br.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.br.png new file mode 100644 index 00000000..e572b9c5 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.br.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.mo.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.mo.png new file mode 100644 index 00000000..ddfe91f3 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.mo.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.mr.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.mr.png new file mode 100644 index 00000000..b06bfb78 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.mr.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ne.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ne.png new file mode 100644 index 00000000..1d894ef5 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ne.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.pa.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.pa.png new file mode 100644 index 00000000..9c9c95bb Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.pa.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ur.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ur.png new file mode 100644 index 00000000..f663605c Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ur.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ar.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ar.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ar.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.bn.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.bn.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.bn.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.br.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.br.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.br.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.mo.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.mo.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.mo.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.mr.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.mr.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.mr.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ne.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ne.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ne.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.pa.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.pa.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.pa.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ur.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ur.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ur.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ar.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ar.png new file mode 100644 index 00000000..864cc4fe Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ar.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bn.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bn.png new file mode 100644 index 00000000..f5987ee8 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bn.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.br.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.br.png new file mode 100644 index 00000000..18817d67 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.br.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mo.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mo.png new file mode 100644 index 00000000..85c4ae5d Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mo.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mr.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mr.png new file mode 100644 index 00000000..9d88c5f1 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mr.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ne.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ne.png new file mode 100644 index 00000000..ccb8eef6 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ne.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pa.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pa.png new file mode 100644 index 00000000..3c4ae8a9 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pa.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ur.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ur.png new file mode 100644 index 00000000..1ce8ceab Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ur.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ar.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ar.png new file mode 100644 index 00000000..8e52793b Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ar.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bn.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bn.png new file mode 100644 index 00000000..4bfe05c2 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bn.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.br.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.br.png new file mode 100644 index 00000000..1de53eaa Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.br.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mo.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mo.png new file mode 100644 index 00000000..39bc9c2b Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mo.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mr.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mr.png new file mode 100644 index 00000000..9037cabe Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mr.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ne.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ne.png new file mode 100644 index 00000000..c07025ea Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ne.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pa.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pa.png new file mode 100644 index 00000000..d83e420e Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pa.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ur.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ur.png new file mode 100644 index 00000000..10e45a31 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ur.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ar.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ar.png new file mode 100644 index 00000000..f9f84f39 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ar.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.bn.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.bn.png new file mode 100644 index 00000000..8947c29c Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.bn.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.br.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.br.png new file mode 100644 index 00000000..e3666a89 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.br.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.mo.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.mo.png new file mode 100644 index 00000000..6594f355 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.mo.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.mr.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.mr.png new file mode 100644 index 00000000..f2616ef8 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.mr.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ne.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ne.png new file mode 100644 index 00000000..4c15949d Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ne.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.pa.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.pa.png new file mode 100644 index 00000000..ac7de09b Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.pa.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ur.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ur.png new file mode 100644 index 00000000..bd0c5db6 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ur.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ar.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ar.png new file mode 100644 index 00000000..09c44ae1 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ar.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.bn.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.bn.png new file mode 100644 index 00000000..c02ef73f Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.bn.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.br.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.br.png new file mode 100644 index 00000000..5f95b46b Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.br.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.mo.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.mo.png new file mode 100644 index 00000000..0c9b1c68 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.mo.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.mr.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.mr.png new file mode 100644 index 00000000..6bcb1019 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.mr.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ne.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ne.png new file mode 100644 index 00000000..c5048df1 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ne.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.pa.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.pa.png new file mode 100644 index 00000000..3227db34 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.pa.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ur.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ur.png new file mode 100644 index 00000000..cbc1e431 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ur.png differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ar.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ar.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ar.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.bn.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.bn.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.bn.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.br.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.br.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.br.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.mo.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.mo.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.mo.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.mr.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.mr.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.mr.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ne.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ne.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ne.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.pa.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.pa.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.pa.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ur.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ur.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ur.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ar.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ar.jpg new file mode 100644 index 00000000..1722866c Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ar.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bn.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bn.jpg new file mode 100644 index 00000000..eabdffde Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bn.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.br.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.br.jpg new file mode 100644 index 00000000..ddf09536 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.br.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mo.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mo.jpg new file mode 100644 index 00000000..8f825cc5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mo.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mr.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mr.jpg new file mode 100644 index 00000000..56437b6c Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mr.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ne.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ne.jpg new file mode 100644 index 00000000..6589fbcc Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ne.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pa.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pa.jpg new file mode 100644 index 00000000..958c1436 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pa.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ur.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ur.jpg new file mode 100644 index 00000000..03b4eca4 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ur.jpg differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ar.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ar.png new file mode 100644 index 00000000..d3e1f350 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ar.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.bn.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.bn.png new file mode 100644 index 00000000..6b1db04d Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.bn.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.br.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.br.png new file mode 100644 index 00000000..04bfd108 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.br.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.mo.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.mo.png new file mode 100644 index 00000000..114626e2 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.mo.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.mr.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.mr.png new file mode 100644 index 00000000..8ac49497 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.mr.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ne.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ne.png new file mode 100644 index 00000000..d7354a24 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ne.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.pa.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.pa.png new file mode 100644 index 00000000..1675967f Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.pa.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ur.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ur.png new file mode 100644 index 00000000..13593e18 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ur.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ar.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ar.png new file mode 100644 index 00000000..e3487e24 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ar.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.bn.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.bn.png new file mode 100644 index 00000000..3867cf29 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.bn.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.br.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.br.png new file mode 100644 index 00000000..4558606b Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.br.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.mo.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.mo.png new file mode 100644 index 00000000..bb8db958 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.mo.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.mr.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.mr.png new file mode 100644 index 00000000..f30df172 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.mr.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ne.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ne.png new file mode 100644 index 00000000..e79b19fd Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ne.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.pa.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.pa.png new file mode 100644 index 00000000..ab97b692 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.pa.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ur.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ur.png new file mode 100644 index 00000000..0f9c78ca Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ur.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ar.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ar.png new file mode 100644 index 00000000..14cffc56 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ar.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.bn.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.bn.png new file mode 100644 index 00000000..6633149e Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.bn.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.br.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.br.png new file mode 100644 index 00000000..3a82e2be Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.br.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.mo.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.mo.png new file mode 100644 index 00000000..13d29f4d Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.mo.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.mr.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.mr.png new file mode 100644 index 00000000..6117f831 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.mr.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ne.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ne.png new file mode 100644 index 00000000..b4d7a929 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ne.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.pa.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.pa.png new file mode 100644 index 00000000..68a41e76 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.pa.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ur.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ur.png new file mode 100644 index 00000000..87b130e3 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ur.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ar.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ar.png new file mode 100644 index 00000000..ed4034be Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ar.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.bn.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.bn.png new file mode 100644 index 00000000..01f7317f Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.bn.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.br.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.br.png new file mode 100644 index 00000000..d1bdf827 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.br.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.mo.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.mo.png new file mode 100644 index 00000000..e1c64e42 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.mo.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.mr.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.mr.png new file mode 100644 index 00000000..d446a75d Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.mr.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ne.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ne.png new file mode 100644 index 00000000..6510112e Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ne.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.pa.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.pa.png new file mode 100644 index 00000000..9f947195 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.pa.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ur.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ur.png new file mode 100644 index 00000000..7983523a Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ur.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ar.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ar.png new file mode 100644 index 00000000..3f7a456c Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ar.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.bn.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.bn.png new file mode 100644 index 00000000..5811bb61 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.bn.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.br.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.br.png new file mode 100644 index 00000000..b870b26b Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.br.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.mo.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.mo.png new file mode 100644 index 00000000..04377905 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.mo.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.mr.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.mr.png new file mode 100644 index 00000000..56b63e14 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.mr.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ne.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ne.png new file mode 100644 index 00000000..f203da13 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ne.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.pa.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.pa.png new file mode 100644 index 00000000..5da63090 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.pa.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ur.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ur.png new file mode 100644 index 00000000..aa7ea4e5 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ur.png differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ar.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ar.jpg new file mode 100644 index 00000000..9fcd0d02 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ar.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bn.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bn.jpg new file mode 100644 index 00000000..6f517ace Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bn.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.br.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.br.jpg new file mode 100644 index 00000000..11a79ac0 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.br.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mo.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mo.jpg new file mode 100644 index 00000000..fe024881 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mo.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mr.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mr.jpg new file mode 100644 index 00000000..1531a810 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mr.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ne.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ne.jpg new file mode 100644 index 00000000..767689e2 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ne.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pa.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pa.jpg new file mode 100644 index 00000000..731cdba0 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pa.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ur.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ur.jpg new file mode 100644 index 00000000..762647e5 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ur.jpg differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ar.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ar.png new file mode 100644 index 00000000..dc963bb9 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ar.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.bn.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.bn.png new file mode 100644 index 00000000..39341462 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.bn.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.br.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.br.png new file mode 100644 index 00000000..ef17cd17 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.br.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.mo.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.mo.png new file mode 100644 index 00000000..fd54bef0 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.mo.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.mr.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.mr.png new file mode 100644 index 00000000..0b3c1721 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.mr.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ne.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ne.png new file mode 100644 index 00000000..0b3c1721 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ne.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.pa.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.pa.png new file mode 100644 index 00000000..3681e51a Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.pa.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ur.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ur.png new file mode 100644 index 00000000..d4000c5f Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ur.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ar.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ar.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ar.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.bn.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.bn.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.bn.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.br.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.br.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.br.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.mo.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.mo.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.mo.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.mr.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.mr.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.mr.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ne.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ne.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ne.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.pa.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.pa.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.pa.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ur.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ur.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ur.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ar.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ar.png new file mode 100644 index 00000000..d10ea5ff Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ar.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.bn.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.bn.png new file mode 100644 index 00000000..8e250870 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.bn.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.br.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.br.png new file mode 100644 index 00000000..d10ea5ff Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.br.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.mo.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.mo.png new file mode 100644 index 00000000..d75973f9 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.mo.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.mr.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.mr.png new file mode 100644 index 00000000..d10ea5ff Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.mr.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ne.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ne.png new file mode 100644 index 00000000..456878e8 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ne.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.pa.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.pa.png new file mode 100644 index 00000000..d10ea5ff Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.pa.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ur.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ur.png new file mode 100644 index 00000000..1f694a4a Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ur.png differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ar.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ar.jpg new file mode 100644 index 00000000..c39bb351 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ar.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bn.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bn.jpg new file mode 100644 index 00000000..ee5d752e Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bn.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.br.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.br.jpg new file mode 100644 index 00000000..69bb1e93 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.br.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mo.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mo.jpg new file mode 100644 index 00000000..de70bc24 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mo.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mr.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mr.jpg new file mode 100644 index 00000000..c659b81b Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mr.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ne.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ne.jpg new file mode 100644 index 00000000..171b45fe Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ne.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pa.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pa.jpg new file mode 100644 index 00000000..50c6f89f Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pa.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ur.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ur.jpg new file mode 100644 index 00000000..03988cf3 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ur.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ar.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ar.jpg new file mode 100644 index 00000000..0a22beff Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ar.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bn.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bn.jpg new file mode 100644 index 00000000..7a9f2697 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bn.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.br.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.br.jpg new file mode 100644 index 00000000..bf36f671 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.br.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg new file mode 100644 index 00000000..bf36f671 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mo.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mo.jpg new file mode 100644 index 00000000..aec6bc8a Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mo.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mr.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mr.jpg new file mode 100644 index 00000000..63fa9ef3 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mr.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ne.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ne.jpg new file mode 100644 index 00000000..266a7c0f Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ne.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pa.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pa.jpg new file mode 100644 index 00000000..049ee993 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pa.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg new file mode 100644 index 00000000..dda4c334 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg new file mode 100644 index 00000000..fc206ebb Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ur.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ur.jpg new file mode 100644 index 00000000..fc180a9c Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ur.jpg differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ar.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ar.png new file mode 100644 index 00000000..1d9bf866 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ar.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bn.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bn.png new file mode 100644 index 00000000..b790d318 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bn.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.br.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.br.png new file mode 100644 index 00000000..3d70998c Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.br.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mo.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mo.png new file mode 100644 index 00000000..5732e139 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mo.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mr.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mr.png new file mode 100644 index 00000000..b5afc217 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mr.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ne.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ne.png new file mode 100644 index 00000000..d42ef439 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ne.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pa.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pa.png new file mode 100644 index 00000000..95b37f23 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pa.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ur.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ur.png new file mode 100644 index 00000000..cd2504cc Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ur.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ar.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ar.png new file mode 100644 index 00000000..eab8ff03 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ar.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bn.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bn.png new file mode 100644 index 00000000..d3f8dbc8 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bn.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.br.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.br.png new file mode 100644 index 00000000..dc3cf3c4 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.br.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mo.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mo.png new file mode 100644 index 00000000..cf99fac9 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mo.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mr.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mr.png new file mode 100644 index 00000000..3136a658 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mr.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ne.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ne.png new file mode 100644 index 00000000..a29c03bb Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ne.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pa.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pa.png new file mode 100644 index 00000000..d6fb369d Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pa.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ur.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ur.png new file mode 100644 index 00000000..f22d5066 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ur.png differ diff --git a/translations/ar/README.md b/translations/ar/README.md new file mode 100644 index 00000000..fffb690d --- /dev/null +++ b/translations/ar/README.md @@ -0,0 +1,155 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# الذكاء الاصطناعي للمبتدئين - منهج دراسي + +|![رسم توضيحي من إعداد [(@girlie_mac)](https://twitter.com/girlie_mac)](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| الذكاء الاصطناعي للمبتدئين - _رسم توضيحي من إعداد [@girlie_mac](https://twitter.com/girlie_mac)_ | + +استكشف عالم **الذكاء الاصطناعي** (AI) من خلال منهج دراسي يمتد لـ 12 أسبوعًا ويشمل 24 درسًا! يتضمن المنهج دروسًا عملية، اختبارات، وتجارب مختبرية. المنهج مناسب للمبتدئين ويغطي أدوات مثل TensorFlow وPyTorch، بالإضافة إلى أخلاقيات الذكاء الاصطناعي. + +## ما الذي ستتعلمه + +**[خريطة ذهنية للدورة](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +في هذا المنهج، ستتعلم: + +* طرق مختلفة للذكاء الاصطناعي، بما في ذلك النهج الرمزي التقليدي باستخدام **تمثيل المعرفة** والاستدلال ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **الشبكات العصبية** و**التعلم العميق**، وهما جوهر الذكاء الاصطناعي الحديث. سنوضح المفاهيم الأساسية لهذه المواضيع المهمة باستخدام الكود في اثنين من أكثر الأطر شيوعًا - [TensorFlow](http://Tensorflow.org) و[PyTorch](http://pytorch.org). +* **الهياكل العصبية** للعمل مع الصور والنصوص. سنغطي النماذج الحديثة ولكن قد نفتقر قليلاً إلى أحدث ما توصلت إليه التكنولوجيا. +* طرق أقل شيوعًا في الذكاء الاصطناعي، مثل **الخوارزميات الجينية** و**أنظمة الوكلاء المتعددة**. + +ما لن نغطيه في هذا المنهج: + +> [اعثر على جميع الموارد الإضافية لهذه الدورة في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* حالات استخدام **الذكاء الاصطناعي في الأعمال**. يمكنك أخذ [مقدمة إلى الذكاء الاصطناعي لمستخدمي الأعمال](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) على Microsoft Learn، أو [مدرسة الأعمال للذكاء الاصطناعي](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)، التي تم تطويرها بالتعاون مع [INSEAD](https://www.insead.edu/). +* **التعلم الآلي الكلاسيكي**، الذي تم وصفه بشكل جيد في [منهج التعلم الآلي للمبتدئين](http://github.com/Microsoft/ML-for-Beginners). +* تطبيقات الذكاء الاصطناعي العملية التي تم إنشاؤها باستخدام **[الخدمات المعرفية](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. نوصي بالبدء مع وحدات Microsoft Learn لـ [الرؤية](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum)، [معالجة اللغة الطبيعية](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum)، **[الذكاء الاصطناعي التوليدي مع خدمة Azure OpenAI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** وغيرها. +* أطر عمل السحابة الخاصة بالتعلم الآلي مثل [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum)، [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum)، أو [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). يمكنك استخدام [بناء وتشغيل حلول التعلم الآلي باستخدام Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) و[بناء وتشغيل حلول التعلم الآلي باستخدام Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **الذكاء الاصطناعي الحواري** و**روبوتات الدردشة**. هناك مسار تعليمي منفصل [إنشاء حلول الذكاء الاصطناعي الحواري](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum)، ويمكنك أيضًا الرجوع إلى [هذه المقالة](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) لمزيد من التفاصيل. +* **الرياضيات العميقة** وراء التعلم العميق. لهذا، نوصي بكتاب [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) من تأليف Ian Goodfellow وYoshua Bengio وAaron Courville، والمتوفر أيضًا عبر الإنترنت على [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +للحصول على مقدمة بسيطة لمواضيع _الذكاء الاصطناعي في السحابة_، يمكنك أخذ مسار التعلم [البدء مع الذكاء الاصطناعي على Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# المحتوى + +| | رابط الدرس | PyTorch/Keras/TensorFlow | المختبر | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [إعداد الدورة](./lessons/0-course-setup/setup.md) | [إعداد بيئة التطوير الخاصة بك](./lessons/0-course-setup/how-to-run.md) | | +| I | [**مقدمة إلى الذكاء الاصطناعي**](./lessons/1-Intro/README.md) | | | +| 01 | [مقدمة وتاريخ الذكاء الاصطناعي](./lessons/1-Intro/README.md) | - | - | +| II | **الذكاء الاصطناعي الرمزي** | +| 02 | [تمثيل المعرفة وأنظمة الخبراء](./lessons/2-Symbolic/README.md) | [أنظمة الخبراء](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [الأونتولوجيا](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[مخطط المفاهيم](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**مقدمة إلى الشبكات العصبية**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [بيرسيبترون](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [دفتر الملاحظات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [مختبر](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [بيرسيبترون متعدد الطبقات وإنشاء إطار العمل الخاص بنا](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [دفتر الملاحظات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [مختبر](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [مقدمة إلى الأطر (PyTorch/TensorFlow) والتجاوز](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [مختبر](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**الرؤية الحاسوبية**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [استكشاف الرؤية الحاسوبية على Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [مقدمة إلى الرؤية الحاسوبية. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [دفتر الملاحظات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [مختبر](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [الشبكات العصبية الالتفافية](./lessons/4-ComputerVision/07-ConvNets/README.md) & [هياكل الشبكات العصبية الالتفافية](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [مختبر](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [الشبكات المدربة مسبقًا والتعلم بالنقل](./lessons/4-ComputerVision/08-TransferLearning/README.md) و[حيل التدريب](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [مختبر](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [التشفير التلقائي وVAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [الشبكات التوليدية التنافسية ونقل الأسلوب الفني](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [اكتشاف الكائنات](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [مختبر](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [التجزئة الدلالية. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**معالجة اللغة الطبيعية**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [استكشاف معالجة اللغة الطبيعية على Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [تمثيل النصوص. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [التضمينات الدلالية للكلمات. Word2Vec وGloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [نمذجة اللغة. تدريب التضمينات الخاصة بك](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [مختبر](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [الشبكات العصبية المتكررة](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [الشبكات التوليدية المتكررة](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [مختبر](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [المحولات. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [التعرف على الكيانات المسماة](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [مختبر](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [نماذج اللغة الكبيرة، برمجة التوجيه والمهام قليلة الأمثلة](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **تقنيات أخرى للذكاء الاصطناعي** || | +| 21 | [الخوارزميات الجينية](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [دفتر ملاحظات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [التعلم العميق المعزز](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [مختبر](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [الأنظمة متعددة الوكلاء](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **أخلاقيات الذكاء الاصطناعي** | | | +| 24 | [أخلاقيات الذكاء الاصطناعي والذكاء الاصطناعي المسؤول](./lessons/7-Ethics/README.md) | [Microsoft Learn: Responsible AI Principles](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **إضافات** | | | +| 25 | [الشبكات متعددة الوسائط، CLIP وVQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [دفتر ملاحظات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## تحتوي كل درس على + +* مواد للقراءة المسبقة +* دفاتر Jupyter القابلة للتنفيذ، والتي غالبًا ما تكون مخصصة للإطار (**PyTorch** أو **TensorFlow**). تحتوي دفاتر الملاحظات القابلة للتنفيذ أيضًا على الكثير من المواد النظرية، لذا لفهم الموضوع، تحتاج إلى مراجعة نسخة واحدة على الأقل من دفتر الملاحظات (إما PyTorch أو TensorFlow). +* **مختبرات** متوفرة لبعض المواضيع، والتي تمنحك فرصة لتطبيق المواد التي تعلمتها على مشكلة محددة. +* تحتوي بعض الأقسام على روابط إلى [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) التي تغطي مواضيع ذات صلة. + +## البدء + +- لقد أنشأنا [درس إعداد](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) لمساعدتك في إعداد بيئة التطوير الخاصة بك. - بالنسبة للمعلمين، قمنا بإنشاء [درس إعداد المناهج](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) لكم أيضًا! +- كيفية [تشغيل الكود في VSCode أو Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +اتبع هذه الخطوات: + +قم بعمل Fork للمستودع: انقر على زر "Fork" في الزاوية العلوية اليمنى من هذه الصفحة. + +قم باستنساخ المستودع: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +لا تنسَ وضع نجمة (🌟) لهذا المستودع لتجده بسهولة لاحقًا. + +## تعرف على متعلمين آخرين + +انضم إلى [خادم Discord الرسمي للذكاء الاصطناعي](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) للتواصل مع متعلمين آخرين يأخذون هذه الدورة والحصول على الدعم. + +إذا كان لديك ملاحظات على المنتج أو أسئلة أثناء البناء، قم بزيارة [منتدى مطوري Azure AI Foundry](https://aka.ms/foundry/forum) + +## الاختبارات +> **ملاحظة حول الاختبارات**: جميع الاختبارات موجودة في مجلد Quiz-app داخل etc\quiz-app، وهي مرتبطة بالدروس. يمكن تشغيل تطبيق الاختبارات محليًا أو نشره على Azure؛ اتبع التعليمات الموجودة في مجلد `quiz-app`. يتم ترجمتها تدريجيًا. +## مطلوب مساعدة + +هل لديك اقتراحات أو وجدت أخطاء إملائية أو في الكود؟ قم بفتح قضية أو إنشاء طلب سحب. + +## شكر خاص + +* **✍️ المؤلف الرئيسي:** [دميتري سوشنيكوف](http://soshnikov.com)، دكتوراه +* **🔥 المحررة:** [جين لوبر](https://twitter.com/jenlooper)، دكتوراه +* **🎨 رسامة الرسوم التوضيحية:** [تومومي إيمورا](https://twitter.com/girlie_mac) +* **✅ منشئة الاختبارات:** [لطيفة بيلو](https://github.com/CinnamonXI)، [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 المساهمون الأساسيون:** [إفجيني بيششيك](https://github.com/Pe4enIks) + +## مناهج أخرى + +فريقنا ينتج مناهج أخرى! تحقق من: + +- [الذكاء الاصطناعي التوليدي للمبتدئين](https://aka.ms/genai-beginners) +- [الذكاء الاصطناعي التوليدي للمبتدئين باستخدام .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [الذكاء الاصطناعي التوليدي باستخدام JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [الذكاء الاصطناعي التوليدي باستخدام Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [الذكاء الاصطناعي للمبتدئين](https://aka.ms/ai-beginners) +- [علم البيانات للمبتدئين](https://aka.ms/datascience-beginners) +- [تعلم الآلة للمبتدئين](https://aka.ms/ml-beginners) +- [الأمن السيبراني للمبتدئين](https://github.com/microsoft/Security-101) +- [تطوير الويب للمبتدئين](https://aka.ms/webdev-beginners) +- [إنترنت الأشياء للمبتدئين](https://aka.ms/iot-beginners) +- [تطوير الواقع الممتد للمبتدئين](https://github.com/microsoft/xr-development-for-beginners) +- [إتقان GitHub Copilot للاستخدام الذكي](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [إتقان GitHub Copilot لمطوري C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [اختر مغامرتك الخاصة مع Copilot](https://github.com/microsoft/CopilotAdventures) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/SECURITY.md b/translations/ar/SECURITY.md new file mode 100644 index 00000000..25d14639 --- /dev/null +++ b/translations/ar/SECURITY.md @@ -0,0 +1,49 @@ + +## الأمان + +تأخذ Microsoft أمان منتجاتنا وخدماتنا البرمجية على محمل الجد، بما في ذلك جميع مستودعات الشيفرة المصدرية التي تُدار من خلال منظماتنا على GitHub، والتي تشمل [Microsoft](https://github.com/Microsoft)، [Azure](https://github.com/Azure)، [DotNet](https://github.com/dotnet)، [AspNet](https://github.com/aspnet)، [Xamarin](https://github.com/xamarin)، و[منظماتنا على GitHub](https://opensource.microsoft.com/). + +إذا كنت تعتقد أنك قد وجدت ثغرة أمنية في أي مستودع مملوك لـ Microsoft وتوافق [تعريف Microsoft للثغرة الأمنية](https://aka.ms/opensource/security/definition)، يرجى الإبلاغ عنها كما هو موضح أدناه. + +## الإبلاغ عن المشكلات الأمنية + +**يرجى عدم الإبلاغ عن الثغرات الأمنية من خلال قضايا GitHub العامة.** + +بدلاً من ذلك، يرجى الإبلاغ عنها إلى مركز استجابة أمان Microsoft (MSRC) عبر [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +إذا كنت تفضل الإرسال دون تسجيل الدخول، أرسل بريدًا إلكترونيًا إلى [secure@microsoft.com](mailto:secure@microsoft.com). إذا أمكن، قم بتشفير رسالتك باستخدام مفتاح PGP الخاص بنا؛ يمكنك تنزيله من [صفحة مفتاح PGP لمركز استجابة أمان Microsoft](https://aka.ms/opensource/security/pgpkey). + +يُفترض أن تتلقى ردًا خلال 24 ساعة. إذا لم يحدث ذلك لأي سبب، يرجى المتابعة عبر البريد الإلكتروني للتأكد من أننا تلقينا رسالتك الأصلية. يمكن العثور على معلومات إضافية على [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +يرجى تضمين المعلومات المطلوبة أدناه (قدر الإمكان) لمساعدتنا على فهم طبيعة ونطاق المشكلة المحتملة بشكل أفضل: + + * نوع المشكلة (مثل: تجاوز سعة المخزن المؤقت، حقن SQL، البرمجة النصية عبر المواقع، إلخ.) + * المسارات الكاملة لملف(ات) المصدر المرتبطة بظهور المشكلة + * موقع الشيفرة المصدرية المتأثرة (علامة/فرع/التزام أو رابط مباشر) + * أي تكوين خاص مطلوب لإعادة إنتاج المشكلة + * تعليمات خطوة بخطوة لإعادة إنتاج المشكلة + * كود إثبات المفهوم أو كود الاستغلال (إن أمكن) + * تأثير المشكلة، بما في ذلك كيفية استغلال المهاجم للمشكلة + +ستساعدنا هذه المعلومات في تصنيف تقريرك بشكل أسرع. + +إذا كنت تبلغ عن ثغرة ضمن برنامج مكافآت الأخطاء، فإن التقارير الأكثر اكتمالاً يمكن أن تساهم في الحصول على مكافأة أعلى. يرجى زيارة صفحة [برنامج مكافآت الأخطاء من Microsoft](https://aka.ms/opensource/security/bounty) للحصول على مزيد من التفاصيل حول برامجنا النشطة. + +## اللغات المفضلة + +نفضل أن تكون جميع الاتصالات باللغة الإنجليزية. + +## السياسة + +تتبع Microsoft مبدأ [الإفصاح المنسق عن الثغرات الأمنية](https://aka.ms/opensource/security/cvd). + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/etc/CODE_OF_CONDUCT.md b/translations/ar/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..7fabb0cf --- /dev/null +++ b/translations/ar/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# مدونة قواعد السلوك لمصادر مايكروسوفت المفتوحة + +لقد تبنى هذا المشروع [مدونة قواعد السلوك لمصادر مايكروسوفت المفتوحة](https://opensource.microsoft.com/codeofconduct/). + +الموارد: + +- [مدونة قواعد السلوك لمصادر مايكروسوفت المفتوحة](https://opensource.microsoft.com/codeofconduct/) +- [الأسئلة الشائعة حول مدونة قواعد السلوك](https://opensource.microsoft.com/codeofconduct/faq/) +- تواصل مع [opencode@microsoft.com](mailto:opencode@microsoft.com) للاستفسارات أو المخاوف + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/etc/CONTRIBUTING.md b/translations/ar/etc/CONTRIBUTING.md new file mode 100644 index 00000000..d2c1a897 --- /dev/null +++ b/translations/ar/etc/CONTRIBUTING.md @@ -0,0 +1,32 @@ + +# المساهمة + +هذا المشروع يرحب بالمساهمات والاقتراحات. معظم المساهمات تتطلب منك الموافقة على اتفاقية ترخيص المساهم (CLA) التي تؤكد أنك تمتلك الحق في، وتقوم فعليًا، بمنحنا الحقوق لاستخدام مساهمتك. لمزيد من التفاصيل، قم بزيارة +https://cla.microsoft.com. + +عندما تقوم بإرسال طلب سحب (pull request)، سيقوم روبوت CLA تلقائيًا بتحديد ما إذا كنت بحاجة إلى تقديم CLA وتزيين الطلب بشكل مناسب (مثل إضافة علامة أو تعليق). فقط اتبع التعليمات التي يقدمها الروبوت. ستحتاج إلى القيام بذلك مرة واحدة فقط عبر جميع المستودعات التي تستخدم CLA الخاص بنا. + +هذا المشروع قد تبنى [مدونة قواعد السلوك لمصادر مايكروسوفت المفتوحة](https://opensource.microsoft.com/codeofconduct/). +لمزيد من المعلومات، راجع [الأسئلة الشائعة حول مدونة قواعد السلوك](https://opensource.microsoft.com/codeofconduct/faq/) +أو تواصل مع [opencode@microsoft.com](mailto:opencode@microsoft.com) لأي أسئلة أو تعليقات إضافية. + +# البحث عن مساهمات + +نحن حاليًا نبحث بنشاط عن مساهمات في المواضيع التالية: + +- [ ] كتابة قسم حول التعلم المعزز العميق +- [ ] تحسين القسم + الدفتر حول كشف الكائنات +- [ ] PyTorch Lightning (لـ [هذا القسم](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] كتابة قسم + أمثلة حول التعرف على الكيانات المسماة +- [ ] إنشاء أمثلة لتدريب التضمينات الخاصة بنا لـ [هذا القسم](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/etc/Mindmap.md b/translations/ar/etc/Mindmap.md new file mode 100644 index 00000000..72716720 --- /dev/null +++ b/translations/ar/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# الذكاء الاصطناعي + +## [مقدمة في الذكاء الاصطناعي](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - تعريف الذكاء الاصطناعي + - تاريخ الذكاء الاصطناعي + - مناهج الذكاء الاصطناعي + - من الأعلى إلى الأسفل/رمزي + - من الأسفل إلى الأعلى/شبكي + - تطوري + - الذكاء الاصطناعي التآزري / الناشئ + - [مدرسة الأعمال للذكاء الاصطناعي من مايكروسوفت](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [الذكاء الاصطناعي الرمزي](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - تمثيل المعرفة + - [أنظمة الخبراء](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [الأنطولوجيا](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - الويب الدلالي + +## [الشبكات العصبية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [بيرسيبترون](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [الشبكات متعددة الطبقات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [مقدمة في الأطر](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [الإفراط في التكيف](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [الرؤية الحاسوبية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - على منصة MS Learn + - [أساسيات الذكاء الاصطناعي: استكشاف الرؤية الحاسوبية](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [الرؤية الحاسوبية باستخدام PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [الرؤية الحاسوبية باستخدام TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [مقدمة في الرؤية الحاسوبية. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [الشبكات الالتفافية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [هياكل الشبكات الالتفافية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [التعلم بالنقل](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [حيل التدريب](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [المشفّرات التلقائية و VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [الشبكات التوليدية الخصامية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [نقل الأسلوب](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [كشف الكائنات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [التجزئة](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [معالجة اللغة الطبيعية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - على منصة MS Learn + - [أساسيات الذكاء الاصطناعي: استكشاف معالجة اللغة الطبيعية](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [معالجة اللغة الطبيعية باستخدام PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [معالجة اللغة الطبيعية باستخدام TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [تمثيل النصوص](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - حقيبة الكلمات + - TF/IDF + - [التضمينات الدلالية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [نمذجة اللغة](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [الشبكات العصبية المتكررة](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [الشبكات التوليدية المتكررة](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [المحوّلات و BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [التعرف على الكيانات المسماة](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [توليد النصوص و GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## تقنيات أخرى + - [الخوارزميات الجينية](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [التعلم العميق المعزز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [أنظمة متعددة الوكلاء](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [أخلاقيات الذكاء الاصطناعي](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [تعلم مايكروسوفت حول الذكاء الاصطناعي المسؤول](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## إضافات + - [الشبكات متعددة الوسائط](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/etc/SUPPORT.md b/translations/ar/etc/SUPPORT.md new file mode 100644 index 00000000..cd2bb11a --- /dev/null +++ b/translations/ar/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# الدعم + +## كيفية الإبلاغ عن المشكلات والحصول على المساعدة + +يستخدم هذا المشروع GitHub Issues لتتبع الأخطاء وطلبات الميزات. يُرجى البحث في المشكلات الموجودة مسبقًا قبل الإبلاغ عن مشكلات جديدة لتجنب التكرار. للإبلاغ عن مشكلات جديدة، قم بتقديم الخطأ أو طلب الميزة كـ Issue جديد. + +للحصول على المساعدة والأسئلة حول استخدام هذا المشروع، يُرجى استخدام لوحات النقاش. + +## سياسة دعم Microsoft + +الدعم لهذا المشروع يقتصر على الموارد المذكورة أعلاه. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/etc/TRANSLATIONS.md b/translations/ar/etc/TRANSLATIONS.md new file mode 100644 index 00000000..9aff6422 --- /dev/null +++ b/translations/ar/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# ساهم بترجمة الدروس + +نرحب بترجمات الدروس في هذا المنهج! + +## الإرشادات + +هناك مجلدات داخل كل مجلد درس ومجلد مقدمة الدرس تحتوي على ملفات Markdown المترجمة. + +> ملاحظة، يرجى عدم ترجمة أي كود في ملفات عينات الكود؛ الأشياء الوحيدة التي يجب ترجمتها هي README، المهام، والاختبارات. شكرًا! + +يجب أن تتبع الملفات المترجمة هذا التنسيق في التسمية: + +**README._[language]_.md** + +حيث _[language]_ هو اختصار مكون من حرفين للغة وفقًا لمعيار ISO 639-1 (مثل `README.es.md` للإسبانية و`README.nl.md` للهولندية). + +**assignment._[language]_.md** + +على غرار ملفات README، يرجى ترجمة المهام أيضًا. + +**الاختبارات** + +1. أضف ترجمتك إلى تطبيق الاختبار عن طريق إضافة ملف هنا: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations، مع الالتزام بتنسيق التسمية الصحيح (en.json، fr.json). **يرجى عدم ترجمة الكلمات 'true' أو 'false'. شكرًا!** + +2. أضف رمز لغتك إلى القائمة المنسدلة في ملف App.vue الخاص بتطبيق الاختبار. + +3. قم بتحرير [ملف index.js الخاص بالترجمات](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) لتضمين لغتك. + +4. وأخيرًا، قم بتحرير جميع روابط الاختبارات في ملفات README.md المترجمة لتشير مباشرة إلى اختبارك المترجم: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 يصبح https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**شكرًا لكم** + +نقدر جهودكم حقًا! + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/etc/quiz-app/README.md b/translations/ar/etc/quiz-app/README.md new file mode 100644 index 00000000..42facec1 --- /dev/null +++ b/translations/ar/etc/quiz-app/README.md @@ -0,0 +1,136 @@ + +# الاختبارات + +هذه الاختبارات هي اختبارات ما قبل وبعد المحاضرات لمنهج الذكاء الاصطناعي على الرابط https://aka.ms/ai-beginners + +## إضافة مجموعة اختبارات مترجمة + +قم بإضافة ترجمة للاختبارات عن طريق إنشاء هيكل مطابق للاختبارات في مجلد `assets/translations`. الاختبارات الأصلية موجودة في `assets/translations/en`. يتم تقسيم الاختبارات إلى عدة مجموعات حسب الدروس. تأكد من مطابقة الترقيم مع القسم الصحيح للاختبار. هناك 40 اختبارًا في هذا المنهج، ويبدأ العد من 0. + +بعد تحرير الترجمات، قم بتحرير ملف index.js في مجلد الترجمة لاستيراد جميع الملفات وفقًا للمعايير الموجودة في `en`. + +قم بتحرير ملف `index.js` في `assets/translations` لاستيراد الملفات المترجمة الجديدة. + +ثم قم بتحرير القائمة المنسدلة في `App.vue` في هذا التطبيق لإضافة لغتك. طابق الاختصار المحلي مع اسم المجلد الخاص بلغتك. + +أخيرًا، قم بتحرير جميع روابط الاختبارات في الدروس المترجمة، إذا كانت موجودة، لتضمين هذا التوطين كمعامل استعلام: `?loc=fr` على سبيل المثال. + +## إعداد المشروع + +``` +npm install +``` + +### التجميع وإعادة التحميل الفوري للتطوير + +``` +npm run serve +``` + +### التجميع والتصغير للإنتاج + +``` +npm run build +``` + +### التحقق من الملفات وإصلاحها + +``` +npm run lint +``` + +### تخصيص الإعدادات + +راجع [مرجع الإعدادات](https://cli.vuejs.org/config/). + +الشكر: شكرًا للإصدار الأصلي لهذا التطبيق الخاص بالاختبارات: https://github.com/arpan45/simple-quiz-vue + +## النشر على Azure + +إليك دليل خطوة بخطوة لمساعدتك على البدء: + +1. قم بعمل Fork لمستودع GitHub +تأكد من أن كود تطبيق الويب الثابت الخاص بك موجود في مستودع GitHub الخاص بك. قم بعمل Fork لهذا المستودع. + +2. قم بإنشاء تطبيق ويب ثابت على Azure +- قم بإنشاء [حساب Azure](http://azure.microsoft.com) +- انتقل إلى [بوابة Azure](https://portal.azure.com) +- انقر على "إنشاء مورد" وابحث عن "تطبيق ويب ثابت". +- انقر على "إنشاء". + +3. قم بتكوين تطبيق الويب الثابت +- الأساسيات: الاشتراك: اختر اشتراك Azure الخاص بك. +- مجموعة الموارد: قم بإنشاء مجموعة موارد جديدة أو استخدم مجموعة موجودة. +- الاسم: قدم اسمًا لتطبيق الويب الثابت الخاص بك. +- المنطقة: اختر المنطقة الأقرب لمستخدميك. + +- #### تفاصيل النشر: +- المصدر: اختر "GitHub". +- حساب GitHub: قم بتفويض Azure للوصول إلى حساب GitHub الخاص بك. +- المؤسسة: اختر مؤسسة GitHub الخاصة بك. +- المستودع: اختر المستودع الذي يحتوي على تطبيق الويب الثابت الخاص بك. +- الفرع: اختر الفرع الذي تريد النشر منه. + +- #### تفاصيل البناء: +- إعدادات البناء: اختر الإطار الذي تم بناء تطبيقك به (مثل React، Angular، Vue، إلخ). +- موقع التطبيق: حدد المجلد الذي يحتوي على كود التطبيق الخاص بك (مثل / إذا كان في الجذر). +- موقع API: إذا كان لديك API، حدد موقعه (اختياري). +- موقع الإخراج: حدد المجلد الذي يتم فيه إنشاء إخراج البناء (مثل build أو dist). + +4. المراجعة والإنشاء +راجع إعداداتك وانقر على "إنشاء". سيقوم Azure بإعداد الموارد اللازمة وإنشاء سير عمل GitHub Actions في مستودعك. + +5. سير عمل GitHub Actions +سيقوم Azure تلقائيًا بإنشاء ملف سير عمل GitHub Actions في مستودعك (.github/workflows/azure-static-web-apps-.yml). هذا السير سيقوم بمعالجة عملية البناء والنشر. + +6. مراقبة النشر +انتقل إلى علامة التبويب "Actions" في مستودع GitHub الخاص بك. +يجب أن ترى سير عمل قيد التشغيل. هذا السير سيقوم ببناء ونشر تطبيق الويب الثابت الخاص بك على Azure. +بمجرد اكتمال سير العمل، سيكون تطبيقك متاحًا على عنوان URL الذي يوفره Azure. + +### مثال على ملف سير العمل + +إليك مثال على ما قد يبدو عليه ملف سير عمل GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### موارد إضافية +- [وثائق تطبيقات الويب الثابتة على Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [وثائق GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/0-course-setup/for-teachers.md b/translations/ar/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..ba8c6039 --- /dev/null +++ b/translations/ar/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# للمعلمين + +هل ترغب في استخدام هذا المنهج الدراسي في صفك؟ لا تتردد! + +في الواقع، يمكنك استخدامه مباشرةً عبر GitHub باستخدام GitHub Classroom. + +للقيام بذلك، قم بعمل fork لهذا المستودع. ستحتاج إلى إنشاء مستودع لكل درس، لذا ستحتاج إلى استخراج كل مجلد إلى مستودع منفصل. بهذه الطريقة، يمكن لـ [GitHub Classroom](https://classroom.github.com/classrooms) التعامل مع كل درس بشكل منفصل. + +هذه [التعليمات الكاملة](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ستعطيك فكرة عن كيفية إعداد صفك الدراسي. + +## استخدام المستودع كما هو + +إذا كنت ترغب في استخدام هذا المستودع كما هو حاليًا، دون استخدام GitHub Classroom، يمكن القيام بذلك أيضًا. ستحتاج إلى التواصل مع طلابك لتحديد الدرس الذي ستعملون عليه معًا. + +في صيغة التعليم عبر الإنترنت (Zoom، Teams، أو غيرها)، يمكنك إنشاء غرف جانبية للطلاب لإجراء الاختبارات، وتوجيههم للاستعداد للتعلم. ثم قم بدعوة الطلاب لإجراء الاختبارات وتقديم إجاباتهم كـ 'issues' في وقت محدد. يمكنك القيام بنفس الشيء مع المهام، إذا كنت ترغب في أن يعمل الطلاب بشكل تعاوني في العلن. + +إذا كنت تفضل صيغة أكثر خصوصية، اطلب من طلابك عمل fork للمنهج، درسًا بدرس، إلى مستودعاتهم الخاصة على GitHub كمستودعات خاصة، ومنحك الوصول إليها. بعد ذلك يمكنهم إكمال الاختبارات والمهام بشكل خاص وتقديمها لك عبر issues على مستودع صفك الدراسي. + +هناك العديد من الطرق لجعل هذا يعمل في صيغة التعليم عبر الإنترنت. يرجى إخبارنا بما يناسبك أكثر! + +## يرجى إعطاؤنا رأيك + +نريد أن نجعل هذا المنهج مناسبًا لك ولطلابك. يرجى تقديم ملاحظاتك في لوحات النقاش! + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/0-course-setup/how-to-run.md b/translations/ar/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..f18811cc --- /dev/null +++ b/translations/ar/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# كيفية تشغيل الكود + +تحتوي هذه المناهج على العديد من الأمثلة القابلة للتنفيذ والمعامل التي قد ترغب في تشغيلها. لتنفيذ ذلك، تحتاج إلى القدرة على تشغيل كود Python في دفاتر Jupyter المقدمة كجزء من هذه المناهج. لديك عدة خيارات لتشغيل الكود: + +## التشغيل محليًا على جهاز الكمبيوتر الخاص بك + +لتشغيل الكود محليًا على جهاز الكمبيوتر الخاص بك، ستحتاج إلى تثبيت نسخة من Python. أوصي شخصيًا بتثبيت **[miniconda](https://conda.io/en/latest/miniconda.html)** - وهو تثبيت خفيف الوزن يدعم مدير الحزم `conda` لإنشاء **بيئات افتراضية** مختلفة لـ Python. + +بعد تثبيت miniconda، تحتاج إلى استنساخ المستودع وإنشاء بيئة افتراضية لاستخدامها في هذه الدورة: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### استخدام Visual Studio Code مع إضافة Python + +ربما تكون أفضل طريقة لاستخدام المناهج هي فتحها في [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) مع [إضافة Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **ملاحظة**: بمجرد استنساخ وفتح الدليل في VS Code، سيقترح عليك تلقائيًا تثبيت إضافات Python. ستحتاج أيضًا إلى تثبيت miniconda كما هو موضح أعلاه. + +> **ملاحظة**: إذا اقترح عليك VS Code إعادة فتح المستودع في الحاوية، يجب رفض ذلك لاستخدام تثبيت Python المحلي. + +### استخدام Jupyter في المتصفح + +يمكنك أيضًا استخدام بيئة Jupyter مباشرة من المتصفح على جهاز الكمبيوتر الخاص بك. في الواقع، يوفر كل من Jupyter الكلاسيكي وJupyter Hub بيئة تطوير مريحة مع الإكمال التلقائي، تمييز الكود، وما إلى ذلك. + +لتشغيل Jupyter محليًا، انتقل إلى دليل الدورة، وقم بتنفيذ: + +```bash +jupyter notebook +``` +أو +```bash +jupyterhub +``` +يمكنك بعد ذلك التنقل إلى أي من ملفات `.ipynb`، فتحها والبدء في العمل. + +### التشغيل في الحاوية + +بديل لتثبيت Python هو تشغيل الكود في الحاوية. نظرًا لأن مستودعنا يحتوي على مجلد `.devcontainer` خاص يوضح كيفية بناء حاوية لهذا المستودع، سيعرض عليك VS Code إعادة فتح الكود في الحاوية. سيتطلب ذلك تثبيت Docker، وسيكون أكثر تعقيدًا، لذا نوصي بهذا للمستخدمين الأكثر خبرة. + +## التشغيل في السحابة + +إذا كنت لا ترغب في تثبيت Python محليًا، ولديك إمكانية الوصول إلى بعض الموارد السحابية - فإن خيارًا جيدًا هو تشغيل الكود في السحابة. هناك عدة طرق يمكنك القيام بذلك: + +* استخدام **[GitHub Codespaces](https://github.com/features/codespaces)**، وهو بيئة افتراضية يتم إنشاؤها لك على GitHub، ويمكن الوصول إليها من خلال واجهة المتصفح لـ VS Code. إذا كان لديك إمكانية الوصول إلى Codespaces، يمكنك فقط النقر على زر **Code** في المستودع، بدء تشغيل Codespace، والبدء في العمل فورًا. +* استخدام **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) هو مورد حوسبة مجاني مقدم في السحابة للأشخاص مثلك لتجربة بعض الأكواد على GitHub. هناك زر في الصفحة الرئيسية لفتح المستودع في Binder - يجب أن يأخذك هذا بسرعة إلى موقع Binder، الذي سيبني الحاوية الأساسية ويبدأ واجهة الويب لـ Jupyter لك بسلاسة. + +> **ملاحظة**: لمنع سوء الاستخدام، يتم حظر الوصول إلى بعض الموارد عبر الإنترنت في Binder. قد يمنع هذا بعض الأكواد التي تعتمد على تنزيل النماذج و/أو مجموعات البيانات من الإنترنت العام. قد تحتاج إلى إيجاد حلول بديلة. أيضًا، موارد الحوسبة المقدمة من Binder محدودة جدًا، لذا سيكون التدريب بطيئًا، خاصة في الدروس الأكثر تعقيدًا لاحقًا. + +## التشغيل في السحابة مع دعم GPU + +بعض الدروس المتقدمة في هذه المناهج ستستفيد بشكل كبير من دعم GPU، لأنه بدون ذلك سيكون التدريب بطيئًا للغاية. هناك بعض الخيارات التي يمكنك اتباعها، خاصة إذا كان لديك إمكانية الوصول إلى السحابة إما من خلال [Azure للطلاب](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste)، أو من خلال مؤسستك: + +* إنشاء [آلة افتراضية للعلوم البيانات](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) والاتصال بها عبر Jupyter. يمكنك بعد ذلك استنساخ المستودع مباشرة على الآلة، والبدء في التعلم. تحتوي الآلات الافتراضية من سلسلة NC على دعم GPU. + +> **ملاحظة**: بعض الاشتراكات، بما في ذلك Azure للطلاب، لا توفر دعم GPU بشكل افتراضي. قد تحتاج إلى طلب نوى GPU إضافية من خلال طلب دعم تقني. + +* إنشاء [مساحة عمل Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) ثم استخدام ميزة الدفاتر هناك. [هذا الفيديو](https://azure-for-academics.github.io/quickstart/azureml-papers/) يوضح كيفية استنساخ مستودع إلى دفتر Azure ML والبدء في استخدامه. + +يمكنك أيضًا استخدام Google Colab، الذي يأتي مع بعض دعم GPU المجاني، وتحميل دفاتر Jupyter هناك لتنفيذها واحدة تلو الأخرى. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/0-course-setup/setup.md b/translations/ar/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..7f77798c --- /dev/null +++ b/translations/ar/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# البدء مع هذا المنهج + +## هل أنت طالب؟ + +ابدأ باستخدام الموارد التالية: + +* [صفحة مركز الطلاب](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) في هذه الصفحة، ستجد موارد للمبتدئين، وحزم للطلاب، وحتى طرق للحصول على قسيمة شهادة مجانية. هذه صفحة يجب أن تضيفها إلى مفضلتك وتعود إليها من وقت لآخر حيث نقوم بتحديث المحتوى على الأقل شهريًا. +* [سفراء تعلم الطلاب من مايكروسوفت](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) انضم إلى مجتمع عالمي من سفراء الطلاب، قد تكون هذه فرصتك للدخول إلى مايكروسوفت. + +**الطلاب**، هناك عدة طرق لاستخدام هذا المنهج. أولاً، يمكنك قراءة النصوص واستعراض الأكواد مباشرة على GitHub. إذا كنت ترغب في تشغيل الأكواد في أي من الدفاتر - [اقرأ تعليماتنا](./etc/how-to-run.md)، وابحث عن المزيد من النصائح حول كيفية القيام بذلك [في هذه التدوينة](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **ملاحظة**: [تعليمات حول كيفية تشغيل الأكواد في هذا المنهج](./how-to-run.md) + +## الدراسة الذاتية + +إذا كنت ترغب في أخذ الدورة كمشروع دراسة ذاتية، نقترح أن تقوم بعمل fork للمستودع بأكمله إلى حساب GitHub الخاص بك وإكمال التمارين بنفسك أو مع مجموعة: + +* ابدأ باختبار قصير قبل المحاضرة. +* اقرأ النص التمهيدي للمحاضرة. +* إذا كانت المحاضرة تحتوي على دفاتر إضافية، قم بمراجعتها، واقرأ ونفذ الأكواد. إذا تم توفير دفاتر لكل من TensorFlow وPyTorch، يمكنك التركيز على أحدهما - اختر الإطار الذي تفضله. +* غالبًا ما تحتوي الدفاتر على تحديات تتطلب منك تعديل الأكواد قليلاً للتجربة. +* قم بإجراء الاختبار القصير بعد المحاضرة. +* إذا كان هناك مختبر مرفق بالوحدة - أكمل التمرين. +* قم بزيارة [لوحة النقاش](https://github.com/microsoft/AI-For-Beginners/discussions) لـ "التعلم بصوت عالٍ". + +> لمزيد من الدراسة، نوصي بمتابعة هذه [الوحدات والمسارات التعليمية من مايكروسوفت](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**المعلمون**، لقد قمنا [بتضمين بعض الاقتراحات](/for-teachers.md) حول كيفية استخدام هذا المنهج. + +--- + +## أسلوب التدريس + +لقد اخترنا مبدأين تربويين أثناء بناء هذا المنهج: التأكد من أنه عملي **قائم على المشاريع** وأنه يتضمن **اختبارات متكررة**. + +من خلال ضمان توافق المحتوى مع المشاريع، تصبح العملية أكثر جاذبية للطلاب ويتم تعزيز استيعاب المفاهيم. بالإضافة إلى ذلك، فإن الاختبار منخفض المخاطر قبل الحصة يوجه نية الطالب نحو تعلم الموضوع، بينما يضمن اختبار ثانٍ بعد الحصة تعزيز الفهم. تم تصميم هذا المنهج ليكون مرنًا وممتعًا ويمكن أخذه بالكامل أو جزئيًا. تبدأ المشاريع صغيرة وتصبح أكثر تعقيدًا مع نهاية دورة الـ 12 أسبوعًا. + +> **ملاحظة حول الاختبارات**: جميع الاختبارات موجودة [في هذا التطبيق](https://red-field-0a6ddfd03.1.azurestaticapps.net/)، حيث يحتوي على 50 اختبارًا بإجمالي ثلاثة أسئلة لكل اختبار. يتم ربطها داخل الدروس، ولكن يمكن تشغيل تطبيق الاختبار محليًا؛ اتبع التعليمات في مجلد `etc/quiz-app`. + +## الوصول دون اتصال + +يمكنك تشغيل هذا التوثيق دون اتصال باستخدام [Docsify](https://docsify.js.org/#/). قم بعمل fork لهذا المستودع، [قم بتثبيت Docsify](https://docsify.js.org/#/quickstart) على جهازك المحلي، ثم في المجلد الجذر لهذا المستودع، اكتب `docsify serve`. سيتم تشغيل الموقع على المنفذ 3000 على جهازك المحلي: `localhost:3000`. يتوفر ملف PDF للمنهج [عبر هذا الرابط](../../../../../../../../../etc/pdf/readme.pdf). + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/1-Intro/README.md b/translations/ar/lessons/1-Intro/README.md new file mode 100644 index 00000000..c13458c7 --- /dev/null +++ b/translations/ar/lessons/1-Intro/README.md @@ -0,0 +1,163 @@ + +# مقدمة في الذكاء الاصطناعي + +![ملخص محتوى مقدمة في الذكاء الاصطناعي في رسم توضيحي](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ar.png) + +> رسم توضيحي بواسطة [Tomomi Imura](https://twitter.com/girlie_mac) + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**الذكاء الاصطناعي** هو مجال علمي مثير يدرس كيفية جعل أجهزة الكمبيوتر تظهر سلوكًا ذكيًا، أي القيام بالأشياء التي يجيد البشر القيام بها. + +في الأصل، تم اختراع أجهزة الكمبيوتر بواسطة [تشارلز باباج](https://en.wikipedia.org/wiki/Charles_Babbage) للعمل على الأرقام باتباع إجراء محدد جيدًا - وهو الخوارزمية. أجهزة الكمبيوتر الحديثة، على الرغم من أنها أكثر تقدمًا بشكل كبير من النموذج الأصلي المقترح في القرن التاسع عشر، لا تزال تتبع نفس فكرة العمليات المحكومة. وبالتالي، من الممكن برمجة الكمبيوتر للقيام بشيء ما إذا كنا نعرف التسلسل الدقيق للخطوات التي نحتاج إلى القيام بها لتحقيق الهدف. + +![صورة لشخص](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ar.png) + +> صورة بواسطة [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ تحديد عمر الشخص من صورته هو مهمة لا يمكن برمجتها بشكل صريح، لأننا لا نعرف كيف نصل إلى الرقم داخل أذهاننا عندما نقوم بذلك. + +--- + +هناك بعض المهام، مع ذلك، التي لا نعرف كيفية حلها بشكل صريح. فكر في تحديد عمر الشخص من صورته. نحن نتعلم القيام بذلك بطريقة ما لأننا رأينا العديد من الأمثلة لأشخاص بأعمار مختلفة، ولكن لا يمكننا شرح كيفية القيام بذلك بشكل صريح، ولا يمكننا برمجة الكمبيوتر للقيام بذلك. هذه هي بالضبط نوع المهام التي تهم **الذكاء الاصطناعي** (AI). + +✅ فكر في بعض المهام التي يمكنك تفويضها لجهاز كمبيوتر والتي ستستفيد من الذكاء الاصطناعي. فكر في مجالات مثل التمويل، الطب، والفنون - كيف تستفيد هذه المجالات اليوم من الذكاء الاصطناعي؟ + +## الذكاء الاصطناعي الضعيف مقابل الذكاء الاصطناعي القوي + +الذكاء الاصطناعي الضعيف | الذكاء الاصطناعي القوي +---------------------------------------|------------------------------------- +يشير الذكاء الاصطناعي الضعيف إلى الأنظمة المصممة والمدربة لمهمة محددة أو مجموعة ضيقة من المهام.| يشير الذكاء الاصطناعي القوي، أو الذكاء الاصطناعي العام (AGI)، إلى الأنظمة التي تتمتع بذكاء وفهم على مستوى الإنسان. +هذه الأنظمة ليست ذكية بشكل عام؛ فهي تتفوق في أداء مهمة محددة مسبقًا ولكنها تفتقر إلى الفهم الحقيقي أو الوعي.| هذه الأنظمة لديها القدرة على أداء أي مهمة فكرية يمكن للإنسان القيام بها، والتكيف مع مجالات مختلفة، وتمتلك شكلاً من أشكال الوعي أو الإدراك الذاتي. +أمثلة على الذكاء الاصطناعي الضعيف تشمل المساعدين الافتراضيين مثل Siri أو Alexa، وخوارزميات التوصية المستخدمة في خدمات البث، والروبوتات المصممة لمهام خدمة العملاء المحددة.| تحقيق الذكاء الاصطناعي القوي هو هدف طويل الأمد لأبحاث الذكاء الاصطناعي وسيتطلب تطوير أنظمة قادرة على التفكير، التعلم، الفهم، والتكيف عبر مجموعة واسعة من المهام والسياقات. +الذكاء الاصطناعي الضعيف متخصص للغاية ولا يمتلك قدرات معرفية شبيهة بالبشر أو قدرات حل المشكلات العامة خارج نطاقه الضيق.| الذكاء الاصطناعي القوي هو حاليًا مفهوم نظري، ولم يصل أي نظام ذكاء اصطناعي إلى هذا المستوى من الذكاء العام. + +للمزيد من المعلومات، راجع **[الذكاء الاصطناعي العام](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI). + +## تعريف الذكاء واختبار تورينغ + +إحدى المشكلات عند التعامل مع مصطلح **[الذكاء](https://en.wikipedia.org/wiki/Intelligence)** هي أنه لا يوجد تعريف واضح لهذا المصطلح. يمكن للمرء أن يجادل بأن الذكاء مرتبط بـ **التفكير المجرد**، أو بـ **الوعي الذاتي**، ولكن لا يمكننا تعريفه بشكل صحيح. + +![صورة لقطة](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ar.jpg) + +> [صورة](https://unsplash.com/photos/75715CVEJhI) بواسطة [Amber Kipp](https://unsplash.com/@sadmax) من Unsplash + +لرؤية غموض مصطلح *الذكاء*، حاول الإجابة على السؤال: "هل القطة ذكية؟". يميل الناس إلى إعطاء إجابات مختلفة لهذا السؤال، حيث لا يوجد اختبار مقبول عالميًا لإثبات صحة الادعاء أو عدمه. وإذا كنت تعتقد أن هناك - حاول إجراء اختبار ذكاء لقطتك... + +✅ فكر لدقيقة في كيفية تعريفك للذكاء. هل الغراب الذي يمكنه حل متاهة للحصول على طعام ذكي؟ هل الطفل ذكي؟ + +--- + +عند الحديث عن الذكاء الاصطناعي العام (AGI)، نحتاج إلى طريقة لمعرفة ما إذا كنا قد أنشأنا نظامًا ذكيًا حقًا. اقترح [آلان تورينغ](https://en.wikipedia.org/wiki/Alan_Turing) طريقة تُعرف بـ **[اختبار تورينغ](https://en.wikipedia.org/wiki/Turing_test)**، والتي تعمل أيضًا كتعريف للذكاء. يقارن الاختبار النظام المعطى بشيء ذكي بطبيعته - إنسان حقيقي، ولأن أي مقارنة تلقائية يمكن أن يتم تجاوزها بواسطة برنامج كمبيوتر، نستخدم محققًا بشريًا. إذا لم يتمكن الإنسان من التمييز بين شخص حقيقي ونظام كمبيوتر في حوار نصي - يُعتبر النظام ذكيًا. + +> روبوت محادثة يُدعى [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman)، تم تطويره في سانت بطرسبرغ، اقترب من اجتياز اختبار تورينغ في عام 2014 باستخدام خدعة شخصية ذكية. أعلن في البداية أنه صبي أوكراني يبلغ من العمر 13 عامًا، مما يفسر نقص المعرفة وبعض التناقضات في النص. أقنع الروبوت 30% من الحكام بأنه إنسان بعد حوار استمر 5 دقائق، وهو معيار اعتقد تورينغ أن الآلة ستتمكن من اجتيازه بحلول عام 2000. ومع ذلك، يجب أن نفهم أن هذا لا يشير إلى أننا أنشأنا نظامًا ذكيًا، أو أن نظام الكمبيوتر قد خدع المحقق البشري - لم يخدع النظام البشر، بل خدعهم مبتكرو الروبوت! + +✅ هل سبق لك أن خدعك روبوت محادثة لتعتقد أنك تتحدث إلى إنسان؟ كيف أقنعك؟ + +## مناهج مختلفة للذكاء الاصطناعي + +إذا أردنا أن يتصرف الكمبيوتر مثل الإنسان، نحتاج بطريقة ما إلى نمذجة طريقة تفكيرنا داخل الكمبيوتر. وبالتالي، نحتاج إلى محاولة فهم ما يجعل الإنسان ذكيًا. + +> لكي نتمكن من برمجة الذكاء في آلة، نحتاج إلى فهم كيفية عمل عمليات اتخاذ القرار لدينا. إذا قمت ببعض التأمل الذاتي، ستدرك أن هناك بعض العمليات التي تحدث بشكل لا واعٍ - مثل قدرتنا على التمييز بين قطة وكلب دون التفكير في ذلك - بينما تتطلب عمليات أخرى التفكير. + +هناك نهجان محتملان لهذه المشكلة: + +النهج من الأعلى إلى الأسفل (الاستدلال الرمزي) | النهج من الأسفل إلى الأعلى (الشبكات العصبية) +---------------------------------------|------------------------------------- +النهج من الأعلى إلى الأسفل يقوم بنمذجة طريقة تفكير الشخص لحل مشكلة. يتضمن استخراج **المعرفة** من الإنسان، وتمثيلها في شكل يمكن قراءته بواسطة الكمبيوتر. كما نحتاج إلى تطوير طريقة لنمذجة **الاستدلال** داخل الكمبيوتر. | النهج من الأسفل إلى الأعلى يقوم بنمذجة بنية الدماغ البشري، المكونة من عدد كبير من الوحدات البسيطة المسماة **الخلايا العصبية**. كل خلية عصبية تعمل كمتوسط مرجح لمدخلاتها، ويمكننا تدريب شبكة من الخلايا العصبية لحل مشاكل مفيدة من خلال تقديم **بيانات تدريبية**. + +هناك أيضًا بعض المناهج الأخرى الممكنة للذكاء: + +* **النهج الناشئ**، أو **التآزري**، أو **نهج الوكلاء المتعددين** يعتمد على حقيقة أن السلوك الذكي المعقد يمكن الحصول عليه من خلال تفاعل عدد كبير من الوكلاء البسيطة. وفقًا لـ [السيبرنتيك التطوري](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics)، يمكن أن *ينشأ* الذكاء من سلوك أكثر بساطة وتفاعلية في عملية *الانتقال إلى نظام أعلى*. + +* **النهج التطوري**، أو **الخوارزمية الجينية** هو عملية تحسين تعتمد على مبادئ التطور. + +سنناقش هذه المناهج لاحقًا في الدورة، ولكن الآن سنركز على الاتجاهين الرئيسيين: من الأعلى إلى الأسفل ومن الأسفل إلى الأعلى. + +### النهج من الأعلى إلى الأسفل + +في **النهج من الأعلى إلى الأسفل**، نحاول نمذجة استدلالنا. نظرًا لأننا نستطيع متابعة أفكارنا عندما نستدل، يمكننا محاولة صياغة هذه العملية وبرمجتها داخل الكمبيوتر. يُعرف هذا بـ **الاستدلال الرمزي**. + +يميل الناس إلى وجود بعض القواعد في أذهانهم التي توجه عمليات اتخاذ القرار. على سبيل المثال، عندما يقوم الطبيب بتشخيص مريض، قد يدرك أن الشخص يعاني من حمى، وبالتالي قد يكون هناك التهاب داخل الجسم. من خلال تطبيق مجموعة كبيرة من القواعد على مشكلة معينة، قد يتمكن الطبيب من الوصول إلى التشخيص النهائي. + +يعتمد هذا النهج بشكل كبير على **تمثيل المعرفة** و**الاستدلال**. استخراج المعرفة من خبير بشري قد يكون الجزء الأكثر صعوبة، لأن الطبيب في كثير من الحالات قد لا يعرف بالضبط لماذا يتوصل إلى تشخيص معين. أحيانًا تأتي الحلول في ذهنه دون تفكير صريح. بعض المهام، مثل تحديد عمر الشخص من صورة، لا يمكن تقليلها على الإطلاق إلى معالجة المعرفة. + +### النهج من الأسفل إلى الأعلى + +بدلاً من ذلك، يمكننا محاولة نمذجة أبسط العناصر داخل دماغنا – الخلية العصبية. يمكننا بناء ما يُعرف بـ **الشبكة العصبية الاصطناعية** داخل الكمبيوتر، ثم نحاول تعليمها حل المشاكل من خلال تقديم أمثلة لها. هذه العملية تشبه كيف يتعلم الطفل حديث الولادة عن محيطه من خلال الملاحظات. + +✅ قم ببعض البحث حول كيفية تعلم الأطفال. ما هي العناصر الأساسية لدماغ الطفل؟ + +> | ماذا عن التعلم الآلي؟ | | +> |--------------|-----------| +> | جزء من الذكاء الاصطناعي يعتمد على تعلم الكمبيوتر لحل مشكلة بناءً على بعض البيانات يُعرف بـ **التعلم الآلي**. لن نناقش التعلم الآلي التقليدي في هذه الدورة - نحيلك إلى منهج منفصل [التعلم الآلي للمبتدئين](http://aka.ms/ml-beginners). | ![التعلم الآلي للمبتدئين](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ar.png) | + +## لمحة تاريخية عن الذكاء الاصطناعي + +بدأ الذكاء الاصطناعي كمجال في منتصف القرن العشرين. في البداية، كان الاستدلال الرمزي هو النهج السائد، وقاد إلى عدد من النجاحات المهمة، مثل الأنظمة الخبيرة – برامج الكمبيوتر التي كانت قادرة على العمل كخبير في بعض المجالات المحدودة. ومع ذلك، سرعان ما أصبح واضحًا أن هذا النهج لا يتوسع بشكل جيد. استخراج المعرفة من خبير، وتمثيلها في الكمبيوتر، والحفاظ على قاعدة المعرفة دقيقة تبين أنه مهمة معقدة للغاية ومكلفة للغاية لتكون عملية في العديد من الحالات. أدى ذلك إلى ما يُعرف بـ [شتاء الذكاء الاصطناعي](https://en.wikipedia.org/wiki/AI_winter) في السبعينيات. + +> صورة بواسطة [Dmitry Soshnikov](http://soshnikov.com) + +مع مرور الوقت، أصبحت موارد الحوسبة أرخص، وأصبحت البيانات أكثر توفرًا، وبدأت مناهج الشبكات العصبية تظهر أداءً رائعًا في منافسة البشر في العديد من المجالات، مثل رؤية الكمبيوتر أو فهم الكلام. في العقد الأخير، أصبح مصطلح الذكاء الاصطناعي يُستخدم في الغالب كمرادف للشبكات العصبية، لأن معظم النجاحات التي نسمع عنها في الذكاء الاصطناعي تعتمد عليها. + +يمكننا ملاحظة كيف تغيرت المناهج، على سبيل المثال، في إنشاء برنامج كمبيوتر يلعب الشطرنج: + +* البرامج الشطرنجية المبكرة كانت تعتمد على البحث – حيث يحاول البرنامج تقدير الحركات الممكنة للخصم لعدد معين من الحركات القادمة، ويختار الحركة المثلى بناءً على الوضع الأمثل الذي يمكن تحقيقه في بضع حركات. أدى ذلك إلى تطوير ما يُعرف بـ [خوارزمية تقليم ألفا-بيتا](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* استراتيجيات البحث تعمل بشكل جيد نحو نهاية اللعبة، حيث تكون مساحة البحث محدودة بعدد صغير من الحركات الممكنة. ومع ذلك، في بداية اللعبة، تكون مساحة البحث ضخمة، ويمكن تحسين الخوارزمية من خلال التعلم من المباريات الموجودة بين اللاعبين البشر. التجارب اللاحقة استخدمت ما يُعرف بـ [الاستدلال القائم على الحالات](https://en.wikipedia.org/wiki/Case-based_reasoning)، حيث يبحث البرنامج عن حالات في قاعدة المعرفة تشبه جدًا الوضع الحالي في اللعبة. +* البرامج الحديثة التي تفوز على اللاعبين البشر تعتمد على الشبكات العصبية و[التعلم المعزز](https://en.wikipedia.org/wiki/Reinforcement_learning)، حيث تتعلم البرامج اللعب فقط من خلال اللعب لفترة طويلة ضد نفسها والتعلم من أخطائها – تمامًا كما يفعل البشر عند تعلم لعب الشطرنج. ومع ذلك، يمكن لبرنامج الكمبيوتر أن يلعب العديد من الألعاب في وقت أقل بكثير، وبالتالي يمكنه التعلم بشكل أسرع. + +✅ قم ببعض البحث حول ألعاب أخرى تم لعبها بواسطة الذكاء الاصطناعي. + +وبالمثل، يمكننا رؤية كيف تغير النهج نحو إنشاء "برامج تتحدث" (قد تجتاز اختبار تورينغ): + +* البرامج المبكرة من هذا النوع مثل [Eliza](https://en.wikipedia.org/wiki/ELIZA)، كانت تعتمد على قواعد نحوية بسيطة وإعادة صياغة الجملة المدخلة إلى سؤال. +* المساعدات الحديثة، مثل Cortana، Siri أو Google Assistant هي جميعها أنظمة هجينة تستخدم الشبكات العصبية لتحويل الكلام إلى نص والتعرف على نوايانا، ثم تستخدم بعض الاستدلال أو الخوارزميات الصريحة لتنفيذ الإجراءات المطلوبة. +* في المستقبل، قد نتوقع نموذجًا كاملاً يعتمد على الشبكات العصبية للتعامل مع الحوار بنفسه. تُظهر العائلات الحديثة من الشبكات العصبية مثل GPT و[Turing-NLG](https://turing.microsoft.com/) نجاحًا كبيرًا في هذا المجال. + +> الصورة بواسطة دميتري سوشنيكوف، [الصورة](https://unsplash.com/photos/r8LmVbUKgns) بواسطة [مارينا أبروسيموفا](https://unsplash.com/@abrosimova_marina_foto)، Unsplash + +## أبحاث الذكاء الاصطناعي الحديثة + +بدأ النمو الكبير في أبحاث الشبكات العصبية حوالي عام 2010، عندما بدأت مجموعات البيانات العامة الكبيرة تصبح متاحة. مجموعة ضخمة من الصور تُسمى [ImageNet](https://en.wikipedia.org/wiki/ImageNet)، تحتوي على حوالي 14 مليون صورة مشروحة، أدت إلى ظهور [تحدي التعرف البصري واسع النطاق لـ ImageNet](https://image-net.org/challenges/LSVRC/). + +![دقة ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> الصورة بواسطة [دميتري سوشنيكوف](http://soshnikov.com) + +في عام 2012، تم استخدام [الشبكات العصبية الالتفافية](../4-ComputerVision/07-ConvNets/README.md) لأول مرة في تصنيف الصور، مما أدى إلى انخفاض كبير في أخطاء التصنيف (من حوالي 30% إلى 16.4%). وفي عام 2015، حققت بنية ResNet من Microsoft Research [دقة بمستوى الإنسان](https://doi.org/10.1109/ICCV.2015.123). + +منذ ذلك الحين، أظهرت الشبكات العصبية أداءً ناجحًا جدًا في العديد من المهام: + +--- + +السنة | تحقيق التكافؤ مع الإنسان +-----|-------- +2015 | [تصنيف الصور](https://doi.org/10.1109/ICCV.2015.123) +2016 | [التعرف على الكلام المحادثي](https://arxiv.org/abs/1610.05256) +2018 | [الترجمة الآلية التلقائية](https://arxiv.org/abs/1803.05567) (من الصينية إلى الإنجليزية) +2020 | [وصف الصور](https://arxiv.org/abs/2009.13682) + +على مدار السنوات القليلة الماضية، شهدنا نجاحات كبيرة مع نماذج اللغة الضخمة، مثل BERT وGPT-3. حدث هذا بشكل رئيسي بسبب توفر كمية كبيرة من بيانات النصوص العامة التي تسمح لنا بتدريب النماذج لالتقاط بنية ومعنى النصوص، وتدريبها مسبقًا على مجموعات نصوص عامة، ثم تخصيص تلك النماذج لمهام أكثر تحديدًا. سنتعلم المزيد عن [معالجة اللغة الطبيعية](../5-NLP/README.md) لاحقًا في هذه الدورة. + +## 🚀 التحدي + +قم بجولة على الإنترنت لتحديد المكان الذي تعتقد أن الذكاء الاصطناعي يُستخدم فيه بشكل أكثر فعالية. هل هو في تطبيق الخرائط، أو خدمة تحويل الكلام إلى نص، أو لعبة فيديو؟ ابحث عن كيفية بناء النظام. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## المراجعة والدراسة الذاتية + +راجع تاريخ الذكاء الاصطناعي وتعلم الآلة من خلال قراءة [هذا الدرس](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). اختر عنصرًا من الرسم التوضيحي في بداية ذلك الدرس أو هذا الدرس وقم بالبحث عنه بعمق لفهم السياق الثقافي الذي أثر في تطوره. + +**التكليف**: [Game Jam](assignment.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/1-Intro/assignment.md b/translations/ar/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..b37595e0 --- /dev/null +++ b/translations/ar/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# مسابقة الألعاب + +الألعاب هي مجال تأثر بشكل كبير بتطورات الذكاء الاصطناعي وتعلم الآلة. في هذه المهمة، قم بكتابة ورقة قصيرة عن لعبة تحبها وقد تأثرت بتطور الذكاء الاصطناعي. يجب أن تكون اللعبة قديمة بما يكفي لتكون قد تأثرت بعدة أنواع من أنظمة معالجة الكمبيوتر. مثال جيد هو الشطرنج أو لعبة Go، ولكن يمكنك أيضًا النظر في ألعاب الفيديو مثل Pong أو Pac-Man. اكتب مقالًا يناقش ماضي اللعبة، حاضرها، ومستقبلها مع الذكاء الاصطناعي. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/2-Symbolic/README.md b/translations/ar/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..b24e29dc --- /dev/null +++ b/translations/ar/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# تمثيل المعرفة وأنظمة الخبراء + +![ملخص محتوى الذكاء الاصطناعي الرمزي](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ar.png) + +> رسم توضيحي بواسطة [Tomomi Imura](https://twitter.com/girlie_mac) + +السعي وراء الذكاء الاصطناعي يعتمد على البحث عن المعرفة، لفهم العالم بطريقة مشابهة للبشر. ولكن كيف يمكن تحقيق ذلك؟ + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +في الأيام الأولى للذكاء الاصطناعي، كان النهج العلوي لإنشاء أنظمة ذكية (الذي تمت مناقشته في الدرس السابق) شائعًا. كانت الفكرة هي استخراج المعرفة من البشر إلى شكل يمكن قراءته بواسطة الآلة، ثم استخدامها لحل المشكلات تلقائيًا. هذا النهج كان يعتمد على فكرتين رئيسيتين: + +* تمثيل المعرفة +* الاستدلال + +## تمثيل المعرفة + +أحد المفاهيم المهمة في الذكاء الاصطناعي الرمزي هو **المعرفة**. من المهم التمييز بين المعرفة و*المعلومات* أو *البيانات*. على سبيل المثال، يمكن القول إن الكتب تحتوي على المعرفة، لأننا يمكننا دراسة الكتب لنصبح خبراء. ومع ذلك، ما تحتويه الكتب يُطلق عليه فعليًا *بيانات*، ومن خلال قراءة الكتب ودمج هذه البيانات في نموذجنا للعالم، نحول البيانات إلى معرفة. + +> ✅ **المعرفة** هي شيء موجود في أذهاننا ويمثل فهمنا للعالم. يتم الحصول عليها من خلال عملية **تعلم** نشطة، تدمج أجزاء المعلومات التي نتلقاها في نموذجنا النشط للعالم. + +غالبًا، لا نحدد المعرفة بشكل صارم، ولكننا نربطها بمفاهيم ذات صلة باستخدام [هرم DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). يحتوي هذا الهرم على المفاهيم التالية: + +* **البيانات** هي شيء يتم تمثيله في وسائل مادية، مثل النصوص المكتوبة أو الكلمات المنطوقة. البيانات موجودة بشكل مستقل عن البشر ويمكن نقلها بينهم. +* **المعلومات** هي كيفية تفسيرنا للبيانات في أذهاننا. على سبيل المثال، عندما نسمع كلمة *كمبيوتر*، لدينا فهم معين لما تعنيه. +* **المعرفة** هي المعلومات التي يتم دمجها في نموذجنا للعالم. على سبيل المثال، بمجرد أن نتعلم ما هو الكمبيوتر، نبدأ في تكوين أفكار حول كيفية عمله، كم يكلف، وما يمكن استخدامه من أجله. هذه الشبكة من المفاهيم المترابطة تشكل معرفتنا. +* **الحكمة** هي مستوى آخر من فهمنا للعالم، وتمثل *المعرفة الفوقية*، مثل فكرة حول كيفية ومتى يجب استخدام المعرفة. + +*الصورة [من ويكيبيديا](https://commons.wikimedia.org/w/index.php?curid=37705247)، بواسطة Longlivetheux - عمل خاص، CC BY-SA 4.0* + +لذلك، مشكلة **تمثيل المعرفة** هي إيجاد طريقة فعالة لتمثيل المعرفة داخل الكمبيوتر في شكل بيانات، لجعلها قابلة للاستخدام تلقائيًا. يمكن النظر إلى هذا على أنه طيف: + +![طيف تمثيل المعرفة](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ar.png) + +> صورة بواسطة [Dmitry Soshnikov](http://soshnikov.com) + +* على الجانب الأيسر، هناك أنواع بسيطة جدًا من تمثيلات المعرفة التي يمكن استخدامها بفعالية بواسطة الكمبيوتر. أبسطها هو التمثيل الخوارزمي، حيث يتم تمثيل المعرفة بواسطة برنامج كمبيوتر. ومع ذلك، هذا ليس أفضل طريقة لتمثيل المعرفة، لأنه غير مرن. المعرفة داخل أذهاننا غالبًا ما تكون غير خوارزمية. +* على الجانب الأيمن، هناك تمثيلات مثل النصوص الطبيعية. هذا هو الأكثر قوة، ولكنه لا يمكن استخدامه للاستدلال التلقائي. + +> ✅ فكر لدقيقة حول كيفية تمثيلك للمعرفة في ذهنك وتحويلها إلى ملاحظات. هل هناك صيغة معينة تساعدك على الاحتفاظ بها؟ + +## تصنيف تمثيلات المعرفة في الكمبيوتر + +يمكننا تصنيف طرق تمثيل المعرفة في الكمبيوتر إلى الفئات التالية: + +* **تمثيلات الشبكة** تعتمد على حقيقة أن لدينا شبكة من المفاهيم المترابطة داخل أذهاننا. يمكننا محاولة إعادة إنتاج نفس الشبكات كرسوم بيانية داخل الكمبيوتر - ما يسمى بـ **الشبكة الدلالية**. + +1. **ثلاثيات الكائن-السمة-القيمة** أو **أزواج السمة-القيمة**. بما أن الرسم البياني يمكن تمثيله داخل الكمبيوتر كقائمة من العقد والحواف، يمكننا تمثيل الشبكة الدلالية بقائمة من الثلاثيات التي تحتوي على الكائنات، السمات، والقيم. على سبيل المثال، نبني الثلاثيات التالية حول لغات البرمجة: + +الكائن | السمة | القيمة +-------|-------|------ +Python | هي | لغة غير محددة النوع +Python | اخترعها | Guido van Rossum +Python | بناء الكتل | التراجع +لغة غير محددة النوع | لا تحتوي على | تعريفات النوع + +> ✅ فكر كيف يمكن استخدام الثلاثيات لتمثيل أنواع أخرى من المعرفة. + +2. **التمثيلات الهرمية** تركز على حقيقة أننا غالبًا ما ننشئ تسلسلًا هرميًا للكائنات داخل أذهاننا. على سبيل المثال، نعلم أن الكناري هو طائر، وكل الطيور لديها أجنحة. لدينا أيضًا فكرة عن لون الكناري المعتاد وسرعة طيرانه. + + - **تمثيل الإطار** يعتمد على تمثيل كل كائن أو فئة من الكائنات كـ **إطار** يحتوي على **فتحات**. الفتحات تحتوي على قيم افتراضية ممكنة، قيود على القيم، أو إجراءات مخزنة يمكن استدعاؤها للحصول على قيمة الفتحة. جميع الإطارات تشكل تسلسلًا هرميًا مشابهًا لتسلسل الكائنات في لغات البرمجة الشيئية. + - **السيناريوهات** هي نوع خاص من الإطارات التي تمثل مواقف معقدة يمكن أن تتطور مع الزمن. + +**Python** + +الفتحة | القيمة | القيمة الافتراضية | النطاق | +-------|-------|------------------|-------| +الاسم | Python | | | +هي | لغة غير محددة النوع | | | +حالة المتغير | | CamelCase | | +طول البرنامج | | | 5-5000 سطر | +بناء الكتل | التراجع | | | + +3. **التمثيلات الإجرائية** تعتمد على تمثيل المعرفة بقائمة من الإجراءات التي يمكن تنفيذها عند حدوث شرط معين. + - قواعد الإنتاج هي عبارات إذا-فإن التي تسمح لنا باستخلاص الاستنتاجات. على سبيل المثال، يمكن للطبيب أن يكون لديه قاعدة تقول **إذا** كان المريض يعاني من حمى عالية **أو** مستوى مرتفع من بروتين C التفاعلي في اختبار الدم **فإن** لديه التهاب. بمجرد أن نواجه أحد الشروط، يمكننا استخلاص استنتاج حول الالتهاب، ثم استخدامه في الاستدلال اللاحق. + - يمكن اعتبار الخوارزميات شكلًا آخر من التمثيلات الإجرائية، على الرغم من أنها نادرًا ما تستخدم مباشرة في الأنظمة القائمة على المعرفة. + +4. **المنطق** اقترحه أرسطو في الأصل كطريقة لتمثيل المعرفة البشرية العالمية. + - المنطق التنبؤي كنظرية رياضية غني جدًا ليكون قابلًا للحساب، لذلك يتم استخدام بعض الأجزاء منه عادةً، مثل العبارات Horn المستخدمة في Prolog. + - المنطق الوصفي هو عائلة من الأنظمة المنطقية المستخدمة لتمثيل والاستدلال حول التسلسلات الهرمية للكائنات وتمثيلات المعرفة الموزعة مثل *الويب الدلالي*. + +## أنظمة الخبراء + +أحد النجاحات المبكرة للذكاء الاصطناعي الرمزي كانت ما يسمى بـ **أنظمة الخبراء** - أنظمة الكمبيوتر التي تم تصميمها لتعمل كخبير في مجال مشكلة محدودة. كانت تعتمد على **قاعدة معرفة** مستخرجة من واحد أو أكثر من الخبراء البشريين، وتحتوي على **محرك استدلال** يقوم ببعض الاستدلال بناءً عليها. + +![هيكل الإنسان](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ar.png) | ![نظام قائم على المعرفة](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ar.png) +---------------------------------------------|------------------------------------------------ +هيكل مبسط للنظام العصبي البشري | هيكل نظام قائم على المعرفة + +أنظمة الخبراء تُبنى مثل نظام الاستدلال البشري، الذي يحتوي على **ذاكرة قصيرة المدى** و**ذاكرة طويلة المدى**. وبالمثل، في الأنظمة القائمة على المعرفة نميز بين المكونات التالية: + +* **ذاكرة المشكلة**: تحتوي على المعرفة حول المشكلة التي يتم حلها حاليًا، مثل درجة الحرارة أو ضغط الدم للمريض، وما إذا كان لديه التهاب أم لا، إلخ. هذه المعرفة تُسمى أيضًا **المعرفة الثابتة**، لأنها تحتوي على لقطة لما نعرفه حاليًا عن المشكلة - ما يسمى *حالة المشكلة*. +* **قاعدة المعرفة**: تمثل المعرفة طويلة المدى حول مجال المشكلة. يتم استخراجها يدويًا من الخبراء البشريين، ولا تتغير من استشارة إلى أخرى. لأنها تسمح لنا بالتنقل من حالة مشكلة إلى أخرى، تُسمى أيضًا **المعرفة الديناميكية**. +* **محرك الاستدلال**: ينظم العملية بأكملها للبحث في فضاء حالة المشكلة، وطرح الأسئلة على المستخدم عند الضرورة. كما أنه مسؤول عن العثور على القواعد الصحيحة التي يجب تطبيقها على كل حالة. + +كمثال، دعونا نأخذ نظام خبير لتحديد الحيوان بناءً على خصائصه الفيزيائية: + +![شجرة AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ar.png) + +> صورة بواسطة [Dmitry Soshnikov](http://soshnikov.com) + +هذا الرسم البياني يُسمى **شجرة AND-OR**، وهو تمثيل رسومي لمجموعة من قواعد الإنتاج. رسم شجرة يكون مفيدًا في بداية استخراج المعرفة من الخبير. لتمثيل المعرفة داخل الكمبيوتر يكون من الأكثر ملاءمة استخدام القواعد: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +يمكنك ملاحظة أن كل شرط على الجانب الأيسر من القاعدة والإجراء هما في الأساس ثلاثيات الكائن-السمة-القيمة (OAV). **الذاكرة العاملة** تحتوي على مجموعة من ثلاثيات OAV التي تتوافق مع المشكلة التي يتم حلها حاليًا. **محرك القواعد** يبحث عن القواعد التي يتم استيفاء شرطها ويطبقها، مضيفًا ثلاثية جديدة إلى الذاكرة العاملة. + +> ✅ اكتب شجرة AND-OR خاصة بك حول موضوع تحبه! + +### الاستدلال الأمامي مقابل الاستدلال الخلفي + +العملية الموضحة أعلاه تُسمى **الاستدلال الأمامي**. تبدأ ببعض البيانات الأولية حول المشكلة المتوفرة في الذاكرة العاملة، ثم تنفذ الحلقة الاستدلالية التالية: + +1. إذا كانت السمة المستهدفة موجودة في الذاكرة العاملة - توقف وأعطِ النتيجة +2. ابحث عن جميع القواعد التي يتم استيفاء شرطها حاليًا - احصل على **مجموعة الصراع** من القواعد. +3. قم بـ **حل الصراع** - اختر قاعدة واحدة سيتم تنفيذها في هذه الخطوة. يمكن أن تكون هناك استراتيجيات مختلفة لحل الصراع: + - اختر أول قاعدة قابلة للتطبيق في قاعدة المعرفة + - اختر قاعدة عشوائية + - اختر قاعدة *أكثر تحديدًا*، أي التي تستوفي معظم الشروط في الجانب الأيسر (LHS) +4. طبق القاعدة المختارة وأضف قطعة جديدة من المعرفة إلى حالة المشكلة +5. كرر من الخطوة 1. + +ومع ذلك، في بعض الحالات قد نرغب في البدء بمعرفة فارغة حول المشكلة، وطرح أسئلة تساعدنا على الوصول إلى النتيجة. على سبيل المثال، عند إجراء التشخيص الطبي، عادةً لا نقوم بإجراء جميع التحاليل الطبية مسبقًا قبل بدء تشخيص المريض. بل نرغب في إجراء التحاليل عندما يكون القرار بحاجة إلى اتخاذه. + +يمكن نمذجة هذه العملية باستخدام **الاستدلال الخلفي**. يتم تحفيزه بواسطة **الهدف** - قيمة السمة التي نبحث عنها: + +1. اختر جميع القواعد التي يمكن أن تعطينا قيمة الهدف (أي مع الهدف على الجانب الأيمن (RHS)) - مجموعة الصراع +1. إذا لم تكن هناك قواعد لهذه السمة، أو كانت هناك قاعدة تقول إنه يجب أن نسأل المستخدم عن القيمة - اسأل عنها، وإلا: +1. استخدم استراتيجية حل الصراع لاختيار قاعدة واحدة سنستخدمها كـ *فرضية* - سنحاول إثباتها +1. كرر العملية بشكل متكرر لجميع السمات في الجانب الأيسر من القاعدة، محاولًا إثباتها كأهداف +1. إذا فشلت العملية في أي نقطة - استخدم قاعدة أخرى في الخطوة 3. + +> ✅ في أي الحالات يكون الاستدلال الأمامي أكثر ملاءمة؟ ماذا عن الاستدلال الخلفي؟ + +### تنفيذ أنظمة الخبراء + +يمكن تنفيذ أنظمة الخبراء باستخدام أدوات مختلفة: + +* برمجتها مباشرة في لغة برمجة عالية المستوى. هذه ليست فكرة جيدة، لأن الميزة الرئيسية للنظام القائم على المعرفة هي أن المعرفة منفصلة عن الاستدلال، ومن المحتمل أن يكون خبير مجال المشكلة قادرًا على كتابة القواعد دون فهم تفاصيل عملية الاستدلال. +* استخدام **قشرة أنظمة الخبراء**، أي نظام مصمم خصيصًا ليتم ملؤه بالمعرفة باستخدام لغة تمثيل المعرفة. + +## ✍️ تمرين: استدلال الحيوانات + +راجع [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) للحصول على مثال حول تنفيذ نظام خبير للاستدلال الأمامي والخلفي. +> **ملاحظة**: هذا المثال بسيط للغاية، ويعطي فقط فكرة عن كيفية ظهور نظام خبير. بمجرد أن تبدأ في إنشاء مثل هذا النظام، ستلاحظ بعض السلوك *الذكي* منه فقط عندما تصل إلى عدد معين من القواعد، حوالي 200 قاعدة أو أكثر. في مرحلة ما، تصبح القواعد معقدة للغاية بحيث يصعب تذكرها جميعًا، وعند هذه النقطة قد تبدأ في التساؤل عن سبب اتخاذ النظام لقرارات معينة. ومع ذلك، فإن السمة المهمة لأنظمة المعرفة هي أنه يمكنك دائمًا *تفسير* كيفية اتخاذ أي من القرارات بالضبط. +## الأنطولوجيات والويب الدلالي + +في نهاية القرن العشرين، كانت هناك مبادرة لاستخدام تمثيل المعرفة لتوصيف موارد الإنترنت، بحيث يصبح من الممكن العثور على الموارد التي تتوافق مع استفسارات محددة للغاية. أُطلق على هذه المبادرة اسم **الويب الدلالي**، واعتمدت على عدة مفاهيم: + +- تمثيل خاص للمعرفة يعتمد على **[منطق الوصف](https://en.wikipedia.org/wiki/Description_logic)** (DL). يشبه هذا التمثيل تمثيل المعرفة بالإطارات، لأنه يبني تسلسلاً هرميًا للأشياء مع خصائصها، ولكنه يتمتع بدلالات منطقية رسمية وقدرة على الاستنتاج. هناك عائلة كاملة من منطق الوصف التي توازن بين التعبيرية وتعقيد الخوارزميات للاستنتاج. +- تمثيل المعرفة الموزع، حيث يتم تمثيل جميع المفاهيم بمعرف URI عالمي، مما يجعل من الممكن إنشاء تسلسلات هرمية للمعرفة تمتد عبر الإنترنت. +- عائلة من اللغات القائمة على XML لوصف المعرفة: RDF (إطار توصيف الموارد)، RDFS (مخطط RDF)، OWL (لغة الويب للأنطولوجيا). + +المفهوم الأساسي في الويب الدلالي هو مفهوم **الأنطولوجيا**. يشير إلى توصيف صريح لمجال المشكلة باستخدام تمثيل رسمي للمعرفة. يمكن أن تكون الأنطولوجيا الأبسط مجرد تسلسل هرمي للأشياء في مجال المشكلة، ولكن الأنطولوجيات الأكثر تعقيدًا ستتضمن قواعد يمكن استخدامها للاستنتاج. + +في الويب الدلالي، تعتمد جميع التمثيلات على ثلاثيات. يتم تحديد كل كائن وكل علاقة بشكل فريد بواسطة URI. على سبيل المثال، إذا أردنا توضيح حقيقة أن منهج الذكاء الاصطناعي هذا قد تم تطويره بواسطة دميتري سوشنيكوف في الأول من يناير 2022 - إليك الثلاثيات التي يمكننا استخدامها: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ هنا `http://www.example.com/terms/creation-date` و `http://purl.org/dc/elements/1.1/creator` هما معرفان URI معروفان ومقبولان عالميًا للتعبير عن مفاهيم *المُنشئ* و *تاريخ الإنشاء*. + +في حالة أكثر تعقيدًا، إذا أردنا تعريف قائمة من المُنشئين، يمكننا استخدام بعض الهياكل البيانية المحددة في RDF. + + + +> الرسوم البيانية أعلاه بواسطة [دميتري سوشنيكوف](http://soshnikov.com) + +تقدم بناء الويب الدلالي تباطأ إلى حد ما بسبب نجاح محركات البحث وتقنيات معالجة اللغة الطبيعية، التي تسمح باستخراج البيانات المنظمة من النصوص. ومع ذلك، في بعض المجالات لا تزال هناك جهود كبيرة للحفاظ على الأنطولوجيات وقواعد المعرفة. بعض المشاريع الجديرة بالذكر: + +* [WikiData](https://wikidata.org/) هي مجموعة من قواعد المعرفة القابلة للقراءة آليًا المرتبطة بويكيبيديا. يتم استخراج معظم البيانات من *صناديق المعلومات* داخل صفحات ويكيبيديا. يمكنك [استعلام](https://query.wikidata.org/) WikiData باستخدام SPARQL، وهي لغة استعلام خاصة بالويب الدلالي. إليك مثال على استعلام يعرض أكثر ألوان العيون شيوعًا بين البشر: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) هو مشروع آخر مشابه لـ WikiData. + +> ✅ إذا كنت ترغب في تجربة بناء أنطولوجيات خاصة بك، أو فتح أنطولوجيات موجودة، هناك محرر أنطولوجيا بصري رائع يسمى [Protégé](https://protege.stanford.edu/). قم بتنزيله، أو استخدمه عبر الإنترنت. + + + +*محرر Web Protégé مفتوح مع أنطولوجيا عائلة رومانوف. لقطة شاشة بواسطة دميتري سوشنيكوف* + +## ✍️ تمرين: أنطولوجيا العائلة + +راجع [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) للحصول على مثال حول استخدام تقنيات الويب الدلالي للاستنتاج حول العلاقات الأسرية. سنأخذ شجرة عائلة ممثلة بتنسيق GEDCOM الشائع وأنطولوجيا للعلاقات الأسرية ونبني رسمًا بيانيًا لجميع العلاقات الأسرية لمجموعة معينة من الأفراد. + +## مخطط المفاهيم من مايكروسوفت + +في معظم الحالات، يتم إنشاء الأنطولوجيات بعناية يدويًا. ومع ذلك، من الممكن أيضًا **استخراج** الأنطولوجيات من البيانات غير المنظمة، على سبيل المثال، من النصوص الطبيعية. + +تم تنفيذ محاولة كهذه بواسطة Microsoft Research، وأدت إلى [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +إنه مجموعة كبيرة من الكيانات مجمعة معًا باستخدام علاقة الوراثة `is-a`. يسمح بالإجابة على أسئلة مثل "ما هي مايكروسوفت؟" - الإجابة تكون شيئًا مثل "شركة باحتمالية 0.87، وعلامة تجارية باحتمالية 0.75". + +المخطط متاح إما كواجهة REST API، أو كملف نصي كبير قابل للتنزيل يسرد جميع أزواج الكيانات. + +## ✍️ تمرين: مخطط المفاهيم + +جرب [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) لرؤية كيفية استخدام مخطط مفاهيم مايكروسوفت لتصنيف المقالات الإخبارية إلى عدة فئات. + +## الخاتمة + +في الوقت الحاضر، غالبًا ما يُعتبر الذكاء الاصطناعي مرادفًا لـ *التعلم الآلي* أو *الشبكات العصبية*. ومع ذلك، فإن الإنسان يظهر أيضًا قدرة على التفكير الصريح، وهو شيء لا يتم التعامل معه حاليًا بواسطة الشبكات العصبية. في المشاريع الواقعية، لا يزال التفكير الصريح يُستخدم لأداء المهام التي تتطلب تفسيرات، أو القدرة على تعديل سلوك النظام بطريقة محكومة. + +## 🚀 تحدي + +في دفتر أنطولوجيا العائلة المرتبط بهذه الدرس، هناك فرصة لتجربة علاقات أسرية أخرى. حاول اكتشاف روابط جديدة بين الأشخاص في شجرة العائلة. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## المراجعة والدراسة الذاتية + +قم ببعض البحث على الإنترنت لاكتشاف المجالات التي حاول فيها البشر قياس المعرفة وتشفيرها. ألقِ نظرة على تصنيف بلوم، وارجع إلى التاريخ لتتعرف على كيفية محاولة البشر فهم العالم من حولهم. استكشف عمل لينيوس لإنشاء تصنيف للكائنات الحية، وراقب الطريقة التي أنشأ بها ديمتري مندليف طريقة لوصف العناصر الكيميائية وتصنيفها. ما هي الأمثلة الأخرى المثيرة للاهتمام التي يمكنك العثور عليها؟ + +**التكليف**: [بناء أنطولوجيا](assignment.md) + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/2-Symbolic/assignment.md b/translations/ar/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..9fa5cf1a --- /dev/null +++ b/translations/ar/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# بناء الأنطولوجيا + +بناء قاعدة معرفة يتعلق بتصنيف نموذج يمثل الحقائق حول موضوع معين. اختر موضوعًا - مثل شخص، مكان، أو شيء - ثم قم ببناء نموذج لهذا الموضوع. استخدم بعض التقنيات واستراتيجيات بناء النماذج التي تم وصفها في هذا الدرس. على سبيل المثال، يمكنك إنشاء أنطولوجيا لغرفة معيشة تحتوي على أثاث، أضواء، وما إلى ذلك. كيف تختلف غرفة المعيشة عن المطبخ؟ الحمام؟ كيف تعرف أنها غرفة معيشة وليست غرفة طعام؟ استخدم [Protégé](https://protege.stanford.edu/) لبناء الأنطولوجيا الخاصة بك. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ar/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..baff4427 --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,105 @@ + +# مقدمة إلى الشبكات العصبية: بيرسيبترون + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +أحد أولى المحاولات لتطبيق شيء مشابه للشبكات العصبية الحديثة قام بها فرانك روزنبلات من مختبر كورنيل للطيران في عام 1957. كان ذلك عبارة عن تطبيق مادي يُسمى "Mark-1"، صُمم للتعرف على الأشكال الهندسية البدائية، مثل المثلثات والمربعات والدوائر. + +| | | +|--------------|-----------| +|فرانك روزنبلات | بيرسيبترون Mark 1| + +> الصور [من ويكيبيديا](https://en.wikipedia.org/wiki/Perceptron) + +تم تمثيل الصورة المدخلة بمصفوفة من 20x20 خلية ضوئية، وبالتالي كان للشبكة العصبية 400 مدخل ومخرج ثنائي واحد. احتوت الشبكة البسيطة على خلية عصبية واحدة، تُعرف أيضًا باسم **وحدة منطق العتبة**. عملت أوزان الشبكة العصبية مثل المقاومات المتغيرة التي كانت تتطلب تعديلًا يدويًا أثناء مرحلة التدريب. + +> ✅ المقاومة المتغيرة هي جهاز يسمح للمستخدم بضبط مقاومة الدائرة. + +> كتبت صحيفة نيويورك تايمز عن البيرسيبترون في ذلك الوقت: *جنين حاسوب إلكتروني تتوقع [البحرية] أنه سيكون قادرًا على المشي، والتحدث، والرؤية، والكتابة، والتكاثر، وأن يكون واعيًا بوجوده.* + +## نموذج البيرسيبترون + +لنفترض أن لدينا N من الميزات في نموذجنا، وفي هذه الحالة سيكون متجه المدخلات عبارة عن متجه بحجم N. البيرسيبترون هو نموذج **تصنيف ثنائي**، أي يمكنه التمييز بين فئتين من بيانات المدخلات. سنفترض أنه لكل متجه مدخلات x سيكون مخرج البيرسيبترون إما +1 أو -1، اعتمادًا على الفئة. سيتم حساب المخرج باستخدام الصيغة: + +y(x) = f(wTx) + +حيث f هي دالة تفعيل من نوع الخطوة. + + + + +## تدريب البيرسيبترون + +لتدريب البيرسيبترون، نحتاج إلى إيجاد متجه أوزان w يصنف معظم القيم بشكل صحيح، أي يؤدي إلى أقل **خطأ**. يتم تعريف هذا الخطأ E بواسطة **معيار البيرسيبترون** بالطريقة التالية: + +E(w) = -∑wTxiti + +حيث: + +* يتم أخذ المجموع على نقاط بيانات التدريب i التي تؤدي إلى تصنيف خاطئ. +* xi هي بيانات المدخلات، وti تكون إما -1 أو +1 للأمثلة السلبية والإيجابية على التوالي. + +يُعتبر هذا المعيار دالة لأوزان w، ونحتاج إلى تقليلها. غالبًا ما يتم استخدام طريقة تُسمى **الانحدار التدريجي**، حيث نبدأ ببعض الأوزان الأولية w(0)، ثم نقوم في كل خطوة بتحديث الأوزان وفقًا للصيغة: + +w(t+1) = w(t) - η∇E(w) + +هنا η هو ما يُسمى **معدل التعلم**، و∇E(w) يُشير إلى **تدرج** E. بعد حساب التدرج، نحصل على: + +w(t+1) = w(t) + ∑ηxiti + +يبدو الخوارزم في Python كما يلي: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## الخاتمة + +في هذه الدرس، تعلمت عن البيرسيبترون، وهو نموذج تصنيف ثنائي، وكيفية تدريبه باستخدام متجه الأوزان. + +## 🚀 تحدي + +إذا كنت ترغب في محاولة بناء بيرسيبترون خاص بك، جرب [هذا المختبر على Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) الذي يستخدم [مصمم Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## المراجعة والدراسة الذاتية + +لرؤية كيفية استخدام البيرسيبترون لحل مشكلة بسيطة وكذلك مشاكل الحياة الواقعية، وللاستمرار في التعلم - انتقل إلى [دفتر البيرسيبترون](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +إليك مقالًا مثيرًا للاهتمام عن [البيرسيبترونات](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 +). + +## [التكليف](lab/README.md) + +في هذا الدرس، قمنا بتطبيق بيرسيبترون لمهمة تصنيف ثنائي، واستخدمناه لتصنيف بين رقمين مكتوبين بخط اليد. في هذا المختبر، يُطلب منك حل مشكلة تصنيف الأرقام بالكامل، أي تحديد الرقم الأكثر احتمالًا الذي يتوافق مع صورة معينة. + +* [التعليمات](lab/README.md) +* [دفتر الملاحظات](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ar/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..c64a5104 --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# التصنيف متعدد الفئات باستخدام Perceptron + +واجب مختبر من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +باستخدام الكود الذي قمنا بتطويره في هذا الدرس لتصنيف MNIST الثنائي للأرقام المكتوبة بخط اليد، قم بإنشاء مصنف متعدد الفئات يمكنه التعرف على أي رقم. احسب دقة التصنيف على مجموعة بيانات التدريب والاختبار، واطبع مصفوفة الالتباس. + +## تلميحات + +1. لكل رقم، قم بإنشاء مجموعة بيانات لمصنف ثنائي "هذا الرقم مقابل جميع الأرقام الأخرى". +1. قم بتدريب 10 perceptrons مختلفة للتصنيف الثنائي (واحد لكل رقم). +1. قم بتعريف دالة تقوم بتصنيف الرقم المدخل. + +> **تلميح**: إذا قمنا بدمج أوزان جميع الـ perceptrons العشرة في مصفوفة واحدة، يمكننا تطبيق جميع الـ perceptrons العشرة على الأرقام المدخلة من خلال عملية ضرب مصفوفة واحدة. يمكن العثور على الرقم الأكثر احتمالاً فقط من خلال تطبيق عملية `argmax` على الناتج. + +## بدء الدفتر + +ابدأ المختبر بفتح [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ar/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..7cfa0518 --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# مقدمة إلى الشبكات العصبية. الإدراك متعدد الطبقات + +في القسم السابق، تعلمت عن أبسط نموذج للشبكات العصبية - الإدراك ذو الطبقة الواحدة، وهو نموذج تصنيف خطي ثنائي الفئات. + +في هذا القسم، سنقوم بتوسيع هذا النموذج إلى إطار عمل أكثر مرونة، مما يتيح لنا: + +* تنفيذ **تصنيف متعدد الفئات** بالإضافة إلى التصنيف الثنائي +* حل **مشاكل الانحدار** بالإضافة إلى التصنيف +* فصل الفئات التي لا يمكن فصلها خطيًا + +سنقوم أيضًا بتطوير إطار عمل معياري خاص بنا باستخدام Python، مما يتيح لنا بناء هياكل مختلفة للشبكات العصبية. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## صياغة تعلم الآلة + +لنبدأ بصياغة مشكلة تعلم الآلة. لنفترض أن لدينا مجموعة بيانات تدريبية **X** مع تسميات **Y**، ونحتاج إلى بناء نموذج *f* الذي يقدم تنبؤات دقيقة قدر الإمكان. يتم قياس جودة التنبؤات باستخدام **دالة الخسارة** ℒ. غالبًا ما تُستخدم دوال الخسارة التالية: + +* بالنسبة لمشكلة الانحدار، عندما نحتاج إلى توقع رقم، يمكننا استخدام **الخطأ المطلق** ∑i|f(x(i))-y(i)|، أو **الخطأ التربيعي** ∑i(f(x(i))-y(i))2 +* بالنسبة للتصنيف، نستخدم **خسارة 0-1** (وهي في الأساس نفس **دقة** النموذج)، أو **خسارة لوجستية**. + +بالنسبة للإدراك ذو المستوى الواحد، تم تعريف الدالة *f* كدالة خطية *f(x)=wx+b* (هنا *w* هي مصفوفة الأوزان، *x* هو متجه الميزات المدخلة، و*b* هو متجه التحيز). بالنسبة لهياكل الشبكات العصبية المختلفة، يمكن أن تأخذ هذه الدالة شكلًا أكثر تعقيدًا. + +> في حالة التصنيف، غالبًا ما يكون من المرغوب الحصول على احتمالات الفئات المقابلة كمخرجات للشبكة. لتحويل الأرقام العشوائية إلى احتمالات (على سبيل المثال لتطبيع المخرجات)، غالبًا ما نستخدم دالة **softmax** σ، وتصبح الدالة *f* *f(x)=σ(wx+b)* + +في تعريف *f* أعلاه، يُطلق على *w* و*b* اسم **المعلمات** θ=⟨*w,b*⟩. بالنظر إلى مجموعة البيانات ⟨**X**,**Y**⟩، يمكننا حساب الخطأ الإجمالي على مجموعة البيانات بأكملها كدالة للمعلمات θ. + +> ✅ **هدف تدريب الشبكة العصبية هو تقليل الخطأ عن طريق تغيير المعلمات θ** + +## تحسين باستخدام النزول التدرجي + +هناك طريقة معروفة لتحسين الدوال تُسمى **النزول التدرجي**. الفكرة هي أنه يمكننا حساب المشتقة (في الحالة متعددة الأبعاد تُسمى **التدرج**) لدالة الخسارة بالنسبة للمعلمات، وتغيير المعلمات بطريقة تقلل الخطأ. يمكن صياغة ذلك كما يلي: + +* تهيئة المعلمات بقيم عشوائية w(0), b(0) +* تكرار الخطوة التالية عدة مرات: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +أثناء التدريب، من المفترض أن يتم حساب خطوات التحسين بناءً على مجموعة البيانات بأكملها (تذكر أن الخسارة تُحسب كمجموع عبر جميع عينات التدريب). ومع ذلك، في الواقع، نأخذ أجزاء صغيرة من مجموعة البيانات تُسمى **الدفعات الصغيرة**، ونحسب التدرجات بناءً على مجموعة فرعية من البيانات. نظرًا لأن المجموعة الفرعية تُؤخذ عشوائيًا في كل مرة، تُسمى هذه الطريقة **النزول التدرجي العشوائي** (SGD). + +## الإدراك متعدد الطبقات والانتشار العكسي + +الشبكة ذات الطبقة الواحدة، كما رأينا أعلاه، قادرة على تصنيف الفئات القابلة للفصل خطيًا. لبناء نموذج أكثر ثراءً، يمكننا دمج عدة طبقات في الشبكة. رياضيًا، يعني ذلك أن الدالة *f* ستأخذ شكلًا أكثر تعقيدًا، وستُحسب على عدة خطوات: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +هنا، α هي **دالة تنشيط غير خطية**، σ هي دالة softmax، والمعلمات θ=<*w1,b1,w2,b2*>. + +ستظل خوارزمية النزول التدرجي كما هي، ولكن سيكون من الصعب حساب التدرجات. باستخدام قاعدة التفاضل السلسلي، يمكننا حساب المشتقات كما يلي: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ تُستخدم قاعدة التفاضل السلسلي لحساب المشتقات لدالة الخسارة بالنسبة للمعلمات. + +لاحظ أن الجزء الأيسر من جميع هذه التعبيرات هو نفسه، وبالتالي يمكننا حساب المشتقات بشكل فعال بدءًا من دالة الخسارة والانتقال "عكسيًا" عبر الرسم البياني الحسابي. لذلك تُسمى طريقة تدريب الإدراك متعدد الطبقات **الانتشار العكسي** أو "backprop". + +compute graph + +> TODO: مصدر الصورة + +> ✅ سنغطي الانتشار العكسي بمزيد من التفصيل في مثالنا داخل الدفتر. + +## الخاتمة + +في هذه الدرس، قمنا ببناء مكتبة الشبكات العصبية الخاصة بنا، واستخدمناها في مهمة تصنيف بسيطة ثنائية الأبعاد. + +## 🚀 التحدي + +في الدفتر المرافق، ستقوم بتنفيذ إطار عمل خاص بك لبناء وتدريب الإدراك متعدد الطبقات. ستتمكن من رؤية كيفية عمل الشبكات العصبية الحديثة بالتفصيل. + +انتقل إلى دفتر [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) واعمل عليه. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## المراجعة والدراسة الذاتية + +الانتشار العكسي هو خوارزمية شائعة تُستخدم في الذكاء الاصطناعي وتعلم الآلة، ويستحق الدراسة [بمزيد من التفصيل](https://wikipedia.org/wiki/Backpropagation) + +## [التكليف](lab/README.md) + +في هذا المختبر، يُطلب منك استخدام الإطار الذي أنشأته في هذا الدرس لحل مشكلة تصنيف الأرقام المكتوبة بخط اليد MNIST. + +* [التعليمات](lab/README.md) +* [دفتر الملاحظات](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ar/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..c5517bf1 --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# تصنيف MNIST باستخدام إطار العمل الخاص بنا + +مهمة مختبر من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +حل مشكلة تصنيف الأرقام المكتوبة بخط اليد من مجموعة بيانات MNIST باستخدام شبكة إدراكية متعددة الطبقات (1 طبقة، 2 طبقة، و3 طبقات). استخدم إطار الشبكة العصبية الذي قمنا بتطويره في الدرس. + +## دفتر الملاحظات المبدئي + +ابدأ المختبر بفتح [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## الأسئلة + +كمحصلة لهذا المختبر، حاول الإجابة على الأسئلة التالية: + +- هل تؤثر وظيفة التفعيل بين الطبقات على أداء الشبكة؟ +- هل نحتاج إلى شبكة مكونة من طبقتين أو ثلاث طبقات لهذه المهمة؟ +- هل واجهت أي مشاكل أثناء تدريب الشبكة؟ خاصة مع زيادة عدد الطبقات. +- كيف تتصرف أوزان الشبكة أثناء التدريب؟ يمكنك رسم العلاقة بين القيمة المطلقة القصوى للأوزان مقابل عدد العصور لفهم العلاقة. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ar/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..4b01250b --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# أطر الشبكات العصبية + +كما تعلمنا بالفعل، لكي نتمكن من تدريب الشبكات العصبية بكفاءة، نحتاج إلى القيام بأمرين: + +* العمل على المصفوفات (tensors)، مثل الضرب، الجمع، وحساب بعض الدوال مثل sigmoid أو softmax +* حساب التدرجات لجميع التعبيرات، من أجل تنفيذ تحسين الانحدار التدرجي + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +بينما يمكن لمكتبة `numpy` القيام بالجزء الأول، نحتاج إلى آلية لحساب التدرجات. في [الإطار الخاص بنا](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) الذي قمنا بتطويره في القسم السابق، كان علينا برمجة جميع دوال المشتقات يدويًا داخل طريقة `backward`، التي تقوم بتنفيذ الانتشار العكسي. من الناحية المثالية، يجب أن يوفر لنا الإطار فرصة لحساب التدرجات لأي تعبير يمكننا تعريفه. + +أمر آخر مهم هو القدرة على إجراء العمليات الحسابية على وحدة معالجة الرسومات (GPU) أو أي وحدات حسابية متخصصة أخرى، مثل [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). يتطلب تدريب الشبكات العصبية العميقة *الكثير* من العمليات الحسابية، والقدرة على توزيع هذه العمليات على وحدات GPU أمر بالغ الأهمية. + +> ✅ مصطلح "parallelize" يعني توزيع العمليات الحسابية على أجهزة متعددة. + +حاليًا، الإطاران الأكثر شيوعًا للشبكات العصبية هما: [TensorFlow](http://TensorFlow.org) و [PyTorch](https://pytorch.org/). كلاهما يوفر واجهة برمجية منخفضة المستوى للعمل مع المصفوفات على كل من وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU). بالإضافة إلى ذلك، هناك واجهات برمجية عالية المستوى، تُعرف بـ [Keras](https://keras.io/) و [PyTorch Lightning](https://pytorchlightning.ai/) على التوالي. + +واجهة منخفضة المستوى | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +----------------------|-------------------------------------|-------------------------------- +واجهة عالية المستوى | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**الواجهات منخفضة المستوى** في كلا الإطارين تتيح لك بناء ما يُعرف بـ **الرسوم البيانية الحسابية**. يحدد هذا الرسم البياني كيفية حساب المخرجات (عادةً دالة الخسارة) باستخدام معطيات الإدخال، ويمكن دفعه للحساب على وحدة GPU إذا كانت متوفرة. هناك دوال لتفاضل هذا الرسم البياني الحسابي وحساب التدرجات، والتي يمكن استخدامها بعد ذلك لتحسين معلمات النموذج. + +**الواجهات عالية المستوى** تعتبر الشبكات العصبية بشكل كبير **تسلسلاً من الطبقات**، مما يجعل بناء معظم الشبكات العصبية أسهل بكثير. عادةً ما يتطلب تدريب النموذج إعداد البيانات ثم استدعاء دالة `fit` للقيام بالمهمة. + +تتيح لك الواجهة عالية المستوى بناء الشبكات العصبية النموذجية بسرعة كبيرة دون القلق بشأن الكثير من التفاصيل. في الوقت نفسه، توفر الواجهة منخفضة المستوى تحكمًا أكبر في عملية التدريب، وبالتالي تُستخدم كثيرًا في الأبحاث عند التعامل مع هياكل جديدة للشبكات العصبية. + +من المهم أيضًا أن تفهم أنه يمكنك استخدام كلا الواجهتين معًا. على سبيل المثال، يمكنك تطوير بنية طبقة شبكية خاصة بك باستخدام الواجهة منخفضة المستوى، ثم استخدامها داخل شبكة أكبر تم بناؤها وتدريبها باستخدام الواجهة عالية المستوى. أو يمكنك تعريف شبكة باستخدام الواجهة عالية المستوى كتسلسل من الطبقات، ثم استخدام حلقة تدريب منخفضة المستوى خاصة بك لتنفيذ التحسين. كلا الواجهتين تستخدمان نفس المفاهيم الأساسية، وتم تصميمهما للعمل معًا بشكل جيد. + +## التعلم + +في هذه الدورة، نقدم معظم المحتوى لكل من PyTorch و TensorFlow. يمكنك اختيار الإطار المفضل لديك ومتابعة الدفاتر (notebooks) المقابلة فقط. إذا لم تكن متأكدًا من الإطار الذي تختاره، اقرأ بعض النقاشات على الإنترنت حول **PyTorch مقابل TensorFlow**. يمكنك أيضًا إلقاء نظرة على كلا الإطارين للحصول على فهم أفضل. + +حيثما أمكن، سنستخدم الواجهات عالية المستوى من أجل البساطة. ومع ذلك، نعتقد أنه من المهم فهم كيفية عمل الشبكات العصبية من الأساس، لذلك نبدأ في البداية بالعمل مع الواجهة منخفضة المستوى والمصفوفات. ومع ذلك، إذا كنت ترغب في البدء بسرعة ولا تريد قضاء الكثير من الوقت في تعلم هذه التفاصيل، يمكنك تخطيها والانتقال مباشرة إلى دفاتر الواجهة عالية المستوى. + +## ✍️ تمارين: الأطر + +واصل التعلم في الدفاتر التالية: + +واجهة منخفضة المستوى | [دفتر TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +----------------------|-------------------------------------|-------------------------------- +واجهة عالية المستوى | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +بعد إتقان الأطر، دعونا نراجع مفهوم الإفراط في التخصيص (Overfitting). + +# الإفراط في التخصيص + +الإفراط في التخصيص هو مفهوم مهم للغاية في تعلم الآلة، ومن المهم جدًا فهمه بشكل صحيح! + +فكر في المشكلة التالية لتقريب 5 نقاط (ممثلة بـ `x` في الرسوم البيانية أدناه): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ar.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ar.jpg) +-------------------------|-------------------------- +**نموذج خطي، 2 من المعاملات** | **نموذج غير خطي، 7 من المعاملات** +خطأ التدريب = 5.3 | خطأ التدريب = 0 +خطأ التحقق = 5.1 | خطأ التحقق = 20 + +* على اليسار، نرى تقريبًا جيدًا بخط مستقيم. لأن عدد المعاملات مناسب، النموذج يفهم توزيع النقاط بشكل صحيح. +* على اليمين، النموذج قوي جدًا. لأن لدينا فقط 5 نقاط والنموذج يحتوي على 7 معاملات، يمكنه التكيف بطريقة تمر عبر جميع النقاط، مما يجعل خطأ التدريب يساوي 0. ومع ذلك، يمنع هذا النموذج من فهم النمط الصحيح وراء البيانات، وبالتالي يكون خطأ التحقق عاليًا جدًا. + +من المهم جدًا تحقيق توازن صحيح بين قوة النموذج (عدد المعاملات) وعدد عينات التدريب. + +## لماذا يحدث الإفراط في التخصيص + + * قلة بيانات التدريب + * نموذج قوي جدًا + * الكثير من الضوضاء في بيانات الإدخال + +## كيفية اكتشاف الإفراط في التخصيص + +كما ترى من الرسم البياني أعلاه، يمكن اكتشاف الإفراط في التخصيص من خلال خطأ تدريب منخفض جدًا وخطأ تحقق مرتفع. عادةً أثناء التدريب، نرى كلًا من أخطاء التدريب والتحقق تبدأ في الانخفاض، ثم في مرحلة ما قد يتوقف خطأ التحقق عن الانخفاض ويبدأ في الارتفاع. سيكون هذا علامة على الإفراط في التخصيص، ومؤشرًا على أنه يجب علينا على الأرجح إيقاف التدريب في هذه المرحلة (أو على الأقل أخذ لقطة للنموذج). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ar.png) + +## كيفية منع الإفراط في التخصيص + +إذا لاحظت حدوث الإفراط في التخصيص، يمكنك القيام بأحد الأمور التالية: + + * زيادة كمية بيانات التدريب + * تقليل تعقيد النموذج + * استخدام بعض [تقنيات التنظيم](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md)، مثل [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout)، التي سنناقشها لاحقًا. + +## الإفراط في التخصيص ومقايضة التحيز-التباين + +الإفراط في التخصيص هو في الواقع حالة من مشكلة أكثر عمومية في الإحصاء تُعرف بـ [مقايضة التحيز-التباين](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). إذا نظرنا إلى المصادر المحتملة للخطأ في نموذجنا، يمكننا رؤية نوعين من الأخطاء: + +* **أخطاء التحيز** ناتجة عن عدم قدرة خوارزمية النموذج على التقاط العلاقة بين بيانات التدريب بشكل صحيح. يمكن أن ينتج ذلك عن كون النموذج غير قوي بما يكفي (**نقص التخصيص**). +* **أخطاء التباين**، التي تنتج عن النموذج الذي يقوم بتقريب الضوضاء في بيانات الإدخال بدلاً من العلاقة ذات المعنى (**الإفراط في التخصيص**). + +أثناء التدريب، ينخفض خطأ التحيز (مع تعلم النموذج لتقريب البيانات)، ويزداد خطأ التباين. من المهم إيقاف التدريب - إما يدويًا (عند اكتشاف الإفراط في التخصيص) أو تلقائيًا (عن طريق إدخال التنظيم) - لمنع الإفراط في التخصيص. + +## الخلاصة + +في هذا الدرس، تعلمت عن الفروقات بين الواجهات المختلفة للإطارين الأكثر شيوعًا في الذكاء الاصطناعي، TensorFlow و PyTorch. بالإضافة إلى ذلك، تعلمت عن موضوع مهم جدًا، وهو الإفراط في التخصيص. + +## 🚀 التحدي + +في الدفاتر المرفقة، ستجد "مهام" في الأسفل؛ اعمل من خلال الدفاتر وأكمل المهام. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## المراجعة والدراسة الذاتية + +قم ببعض البحث حول المواضيع التالية: + +- TensorFlow +- PyTorch +- الإفراط في التخصيص + +اسأل نفسك الأسئلة التالية: + +- ما الفرق بين TensorFlow و PyTorch؟ +- ما الفرق بين الإفراط في التخصيص ونقص التخصيص؟ + +## [التكليف](lab/README.md) + +في هذا المختبر، يُطلب منك حل مشكلتين تصنيفيتين باستخدام شبكات متصلة بالكامل ذات طبقة واحدة ومتعددة الطبقات باستخدام PyTorch أو TensorFlow. + +* [التعليمات](lab/README.md) +* [دفتر الملاحظات](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ar/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..ba0f0bc5 --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# التصنيف باستخدام PyTorch/TensorFlow + +مهمة عملية من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +حل مشكلتين تصنيفيتين باستخدام شبكات متصلة بالكامل ذات طبقة واحدة ومتعددة الطبقات باستخدام PyTorch أو TensorFlow: + +1. **[تصنيف زهرة السوسن](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - مثال على مشكلة ببيانات إدخال جدولي يمكن التعامل معها باستخدام التعلم الآلي التقليدي. هدفك هو تصنيف زهور السوسن إلى 3 فئات بناءً على 4 معايير رقمية. +1. مشكلة تصنيف الأرقام المكتوبة يدويًا **MNIST** التي رأيناها سابقًا. + +جرب هياكل شبكات مختلفة لتحقيق أفضل دقة ممكنة. + +## دفتر الملاحظات المبدئي + +ابدأ المختبر بفتح [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/3-NeuralNetworks/README.md b/translations/ar/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..78991caa --- /dev/null +++ b/translations/ar/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# مقدمة في الشبكات العصبية + +![ملخص محتوى مقدمة الشبكات العصبية في رسم توضيحي](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ar.png) + +كما ناقشنا في المقدمة، إحدى الطرق لتحقيق الذكاء هي تدريب **نموذج حاسوبي** أو **دماغ اصطناعي**. منذ منتصف القرن العشرين، حاول الباحثون استخدام نماذج رياضية مختلفة، حتى أثبت هذا الاتجاه في السنوات الأخيرة نجاحًا كبيرًا. تُعرف هذه النماذج الرياضية للدماغ باسم **الشبكات العصبية**. + +> أحيانًا تُسمى الشبكات العصبية *الشبكات العصبية الاصطناعية* (Artificial Neural Networks)، أو ANNs، للإشارة إلى أننا نتحدث عن نماذج، وليس شبكات عصبية حقيقية. + +## التعلم الآلي + +الشبكات العصبية هي جزء من مجال أوسع يُعرف بـ **التعلم الآلي**، والذي يهدف إلى استخدام البيانات لتدريب نماذج حاسوبية قادرة على حل المشكلات. يشكل التعلم الآلي جزءًا كبيرًا من الذكاء الاصطناعي، ومع ذلك، لن نغطي التعلم الآلي التقليدي في هذا المنهج. + +> قم بزيارة منهجنا المنفصل **[التعلم الآلي للمبتدئين](http://github.com/microsoft/ml-for-beginners)** لتتعرف أكثر على التعلم الآلي التقليدي. + +في التعلم الآلي، نفترض أن لدينا مجموعة بيانات من الأمثلة **X**، وقيم مخرجات مقابلة **Y**. غالبًا ما تكون الأمثلة عبارة عن متجهات ذات أبعاد N تتكون من **خصائص**، وتُعرف المخرجات بـ **التصنيفات**. + +سنناقش أكثر مشكلتين شيوعًا في التعلم الآلي: + +* **التصنيف**، حيث نحتاج إلى تصنيف كائن مدخل إلى فئتين أو أكثر. +* **الانحدار**، حيث نحتاج إلى التنبؤ بقيمة رقمية لكل عينة من المدخلات. + +> عند تمثيل المدخلات والمخرجات كموترات (tensors)، تكون مجموعة بيانات المدخلات عبارة عن مصفوفة بحجم M×N، حيث M هو عدد العينات وN هو عدد الخصائص. أما تصنيفات المخرجات Y فهي متجه بحجم M. + +في هذا المنهج، سنركز فقط على نماذج الشبكات العصبية. + +## نموذج الخلية العصبية + +من علم الأحياء، نعلم أن دماغنا يتكون من خلايا عصبية، لكل منها عدة "مدخلات" (محاور عصبية)، ومخرج واحد (شعيرات شجرية). يمكن للمحاور والشعيرات الشجرية نقل إشارات كهربائية، ويمكن أن تُظهر الروابط بين المحاور والشعيرات الشجرية درجات مختلفة من التوصيلية (تُتحكم بها النواقل العصبية). + +![نموذج الخلية العصبية](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ar.jpg) | ![نموذج الخلية العصبية](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ar.png) +----|---- +خلية عصبية حقيقية *([الصورة](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) من ويكيبيديا)* | خلية عصبية اصطناعية *(الصورة من المؤلف)* + +لذلك، فإن أبسط نموذج رياضي للخلية العصبية يحتوي على عدة مدخلات X1, ..., XN ومخرج Y، وسلسلة من الأوزان W1, ..., WN. يتم حساب المخرج كالتالي: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +حيث f هي **دالة التنشيط** غير الخطية. + +> تم وصف النماذج الأولى للخلية العصبية في الورقة الكلاسيكية [حساب منطقي للأفكار الكامنة في النشاط العصبي](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) بواسطة وارين مكولك ووالتر بيتس عام 1943. واقترح دونالد هيب في كتابه "[تنظيم السلوك: نظرية نفسية عصبية](https://books.google.com/books?id=VNetYrB8EBoC)" طريقة لتدريب هذه الشبكات. + +## في هذا القسم + +في هذا القسم سنتعلم عن: +* [Perceptron](03-Perceptron/README.md)، أحد أقدم نماذج الشبكات العصبية لتصنيف الفئتين. +* [الشبكات متعددة الطبقات](04-OwnFramework/README.md) مع دفتر ملاحظات مرفق [كيفية بناء إطار عمل خاص بنا](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb). +* [أطر عمل الشبكات العصبية](05-Frameworks/README.md)، مع دفاتر الملاحظات التالية: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) و [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb). +* [الإفراط في التخصيص](../../../../lessons/3-NeuralNetworks/05-Frameworks). + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). على الرغم من أننا نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ar/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..64a22abc --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# مقدمة إلى رؤية الحاسوب + +[رؤية الحاسوب](https://wikipedia.org/wiki/Computer_vision) هي مجال يهدف إلى تمكين الحواسيب من فهم الصور الرقمية على مستوى عالٍ. هذا تعريف واسع جدًا، لأن *الفهم* يمكن أن يعني أشياء مختلفة، مثل العثور على كائن في صورة (**اكتشاف الكائنات**)، فهم ما يحدث (**اكتشاف الأحداث**)، وصف الصورة بالنص، أو إعادة بناء مشهد ثلاثي الأبعاد. هناك أيضًا مهام خاصة تتعلق بصور البشر: تقدير العمر والمشاعر، اكتشاف وتحديد الوجوه، وتقدير الوضعية ثلاثية الأبعاد، على سبيل المثال. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +واحدة من أبسط مهام رؤية الحاسوب هي **تصنيف الصور**. + +غالبًا ما تُعتبر رؤية الحاسوب فرعًا من الذكاء الاصطناعي. في الوقت الحاضر، يتم حل معظم مهام رؤية الحاسوب باستخدام الشبكات العصبية. سنتعلم المزيد عن النوع الخاص من الشبكات العصبية المستخدمة في رؤية الحاسوب، [الشبكات العصبية التلافيفية](../07-ConvNets/README.md)، خلال هذا القسم. + +ومع ذلك، قبل تمرير الصورة إلى شبكة عصبية، في كثير من الحالات يكون من المنطقي استخدام بعض التقنيات الخوارزمية لتحسين الصورة. + +هناك العديد من مكتبات بايثون المتاحة لمعالجة الصور: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** يمكن استخدامها لقراءة/كتابة تنسيقات الصور المختلفة. كما تدعم ffmpeg، وهي أداة مفيدة لتحويل إطارات الفيديو إلى صور. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (المعروفة أيضًا باسم PIL) أكثر قوة، وتدعم أيضًا بعض التلاعبات بالصور مثل التشويه، وضبط الألوان، والمزيد. +* **[OpenCV](https://opencv.org/)** مكتبة قوية لمعالجة الصور مكتوبة بلغة C++، وأصبحت المعيار الفعلي لمعالجة الصور. لديها واجهة بايثون مريحة. +* **[dlib](http://dlib.net/)** مكتبة C++ تنفذ العديد من خوارزميات التعلم الآلي، بما في ذلك بعض خوارزميات رؤية الحاسوب. لديها أيضًا واجهة بايثون، ويمكن استخدامها لمهام صعبة مثل اكتشاف الوجوه ومعالم الوجه. + +## OpenCV + +تُعتبر [OpenCV](https://opencv.org/) المعيار الفعلي لمعالجة الصور. تحتوي على العديد من الخوارزميات المفيدة، المطبقة بلغة C++. يمكنك أيضًا استدعاء OpenCV من بايثون. + +مكان جيد لتعلم OpenCV هو [دورة تعلم OpenCV](https://learnopencv.com/getting-started-with-opencv/). في منهجنا، هدفنا ليس تعلم OpenCV، بل عرض بعض الأمثلة على كيفية استخدامها ومتى. + +### تحميل الصور + +يمكن تمثيل الصور في بايثون بسهولة باستخدام مصفوفات NumPy. على سبيل المثال، الصور ذات التدرج الرمادي بحجم 320x200 بكسل يتم تخزينها في مصفوفة بحجم 200x320، بينما الصور الملونة بنفس الأبعاد سيكون لها شكل 200x320x3 (لثلاث قنوات لونية). لتحميل صورة، يمكنك استخدام الكود التالي: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +تقليديًا، تستخدم OpenCV ترميز BGR (أزرق-أخضر-أحمر) للصور الملونة، بينما تستخدم بقية أدوات بايثون الترميز الأكثر شيوعًا RGB (أحمر-أخضر-أزرق). لجعل الصورة تظهر بشكل صحيح، تحتاج إلى تحويلها إلى مساحة ألوان RGB، إما عن طريق تبديل الأبعاد في مصفوفة NumPy، أو عن طريق استدعاء وظيفة OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +يمكن استخدام نفس وظيفة `cvtColor` لإجراء تحويلات أخرى لمساحات الألوان مثل تحويل الصورة إلى التدرج الرمادي أو إلى مساحة ألوان HSV (تدرج-تشبع-قيمة). + +يمكنك أيضًا استخدام OpenCV لتحميل الفيديو إطارًا بإطار - مثال على ذلك موجود في التمرين [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### معالجة الصور + +قبل تمرير الصورة إلى شبكة عصبية، قد ترغب في تطبيق عدة خطوات معالجة مسبقة. يمكن لـ OpenCV القيام بالعديد من الأشياء، بما في ذلك: + +* **تغيير حجم الصورة** باستخدام `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **تمويه الصورة** باستخدام `im = cv2.medianBlur(im,3)` أو `im = cv2.GaussianBlur(im, (3,3), 0)` +* تغيير **سطوع وتباين الصورة** يمكن القيام به من خلال التلاعب بمصفوفات NumPy، كما هو موضح [في هذه الملاحظة على Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* استخدام [التقسيم العتبي](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) عن طريق استدعاء وظائف `cv2.threshold`/`cv2.adaptiveThreshold`، وهو غالبًا ما يكون مفضلًا على ضبط السطوع أو التباين. +* تطبيق [تحويلات مختلفة](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) على الصورة: + - **[التحويلات الخطية](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** يمكن أن تكون مفيدة إذا كنت بحاجة إلى دمج الدوران، تغيير الحجم، وتشويه الصورة وتعرف مواقع المصدر والوجهة لثلاث نقاط في الصورة. التحويلات الخطية تحافظ على الخطوط المتوازية. + - **[التحويلات المنظورية](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** يمكن أن تكون مفيدة عندما تعرف مواقع المصدر والوجهة لأربع نقاط في الصورة. على سبيل المثال، إذا التقطت صورة لوثيقة مستطيلة باستخدام كاميرا هاتف ذكي من زاوية معينة، وترغب في جعل الصورة مستطيلة للوثيقة نفسها. +* فهم الحركة داخل الصورة باستخدام **[التدفق البصري](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## أمثلة على استخدام رؤية الحاسوب + +في [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)، نقدم بعض الأمثلة على كيفية استخدام رؤية الحاسوب لأداء مهام محددة: + +* **معالجة صورة لكتاب بطريقة برايل**. نركز على كيفية استخدام التقسيم العتبي، اكتشاف الميزات، التحويل المنظوري، وتلاعبات NumPy لفصل رموز برايل الفردية لتصنيفها لاحقًا بواسطة شبكة عصبية. + +![صورة برايل](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ar.jpeg) | ![صورة برايل معالجة](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ar.png) | ![رموز برايل](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ar.png) +----|-----|----- + +> صورة من [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **اكتشاف الحركة في الفيديو باستخدام الفرق بين الإطارات**. إذا كانت الكاميرا ثابتة، فإن الإطارات من تغذية الكاميرا يجب أن تكون متشابهة جدًا. بما أن الإطارات تمثل كمصفوفات، فقط عن طريق طرح تلك المصفوفات لإطارين متتاليين سنحصل على الفرق بين البكسلات، والذي يجب أن يكون منخفضًا للإطارات الثابتة، ويزداد عندما تكون هناك حركة كبيرة في الصورة. + +![صورة لإطارات الفيديو وفروق الإطارات](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ar.png) + +> صورة من [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **اكتشاف الحركة باستخدام التدفق البصري**. [التدفق البصري](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) يسمح لنا بفهم كيفية تحرك البكسلات الفردية في إطارات الفيديو. هناك نوعان من التدفق البصري: + + - **التدفق البصري الكثيف** يحسب الحقل المتجهي الذي يظهر لكل بكسل إلى أين يتحرك. + - **التدفق البصري المتناثر** يعتمد على أخذ بعض الميزات المميزة في الصورة (مثل الحواف)، وبناء مسارها من إطار إلى آخر. + +![صورة للتدفق البصري](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ar.png) + +> صورة من [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ دفاتر أمثلة: OpenCV [جرب OpenCV عمليًا](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +لنقم ببعض التجارب مع OpenCV من خلال استكشاف [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## الخاتمة + +في بعض الأحيان، يمكن حل مهام معقدة نسبيًا مثل اكتشاف الحركة أو اكتشاف أطراف الأصابع باستخدام رؤية الحاسوب فقط. لذلك، من المفيد جدًا معرفة التقنيات الأساسية لرؤية الحاسوب، وما يمكن أن تفعله مكتبات مثل OpenCV. + +## 🚀 التحدي + +شاهد [هذا الفيديو](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) من برنامج AI Show لتتعرف على مشروع Cortic Tigers وكيف قاموا ببناء حل قائم على الكتل لتبسيط مهام رؤية الحاسوب عبر روبوت. قم ببعض البحث عن مشاريع أخرى مشابهة تساعد في إدخال المتعلمين الجدد إلى هذا المجال. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## المراجعة والدراسة الذاتية + +اقرأ المزيد عن التدفق البصري [في هذا الدليل الرائع](https://learnopencv.com/optical-flow-in-opencv/). + +## [التكليف](lab/README.md) + +في هذا المختبر، ستقوم بتصوير فيديو يحتوي على إيماءات بسيطة، وهدفك هو استخراج حركات أعلى/أسفل/يسار/يمين باستخدام التدفق البصري. + +إطار حركة الكف + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ar/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..8753f856 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# اكتشاف الحركات باستخدام التدفق البصري + +مهمة مختبر من [منهج الذكاء الاصطناعي للمبتدئين](https://aka.ms/ai-beginners). + +## المهمة + +تأمل [هذا الفيديو](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4)، حيث تتحرك كف يد شخص ما إلى اليسار/اليمين/الأعلى/الأسفل على خلفية ثابتة. + +**هدفك** هو استخدام التدفق البصري لتحديد الأجزاء من الفيديو التي تحتوي على حركات للأعلى/للأسفل/لليسار/لليمين. + +**الهدف الإضافي** هو تتبع حركة الكف/الإصبع باستخدام لون البشرة، كما هو موضح [في هذه التدوينة](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) أو [هنا](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## الدفتر المبدئي + +ابدأ المختبر بفتح [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## الخلاصة + +في بعض الأحيان، يمكن حل مهام معقدة نسبيًا مثل اكتشاف الحركة أو اكتشاف أطراف الأصابع باستخدام الرؤية الحاسوبية فقط. لذلك، من المفيد جدًا معرفة ما يمكن أن تفعله المكتبات مثل OpenCV. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ar/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..aa7960c6 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# أشهر معماريات الشبكات العصبية التلافيفية (CNN) + +### VGG-16 + +VGG-16 هي شبكة حققت دقة بنسبة 92.7% في تصنيف ImageNet ضمن أفضل 5 في عام 2014. تحتوي على الهيكل الطبقي التالي: + +![طبقات ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ar.jpg) + +كما ترى، تتبع VGG هيكل الهرم التقليدي، وهو تسلسل من طبقات الالتفاف والتجميع. + +![هرم ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ar.jpg) + +> الصورة من [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet هي عائلة من النماذج التي اقترحتها Microsoft Research في عام 2015. الفكرة الرئيسية لـ ResNet هي استخدام **الكتل المتبقية**: + + + +> الصورة من [هذه الورقة](https://arxiv.org/pdf/1512.03385.pdf) + +السبب وراء استخدام المسار الهوية هو جعل الطبقة تتنبأ **بالفرق** بين نتيجة الطبقة السابقة ومخرجات الكتلة المتبقية - ومن هنا جاء اسم *المتبقية*. هذه الكتل أسهل بكثير في التدريب، ويمكن بناء شبكات تحتوي على مئات من هذه الكتل (أكثر الأنواع شيوعًا هي ResNet-52، ResNet-101 و ResNet-152). + +يمكنك أيضًا التفكير في هذه الشبكة على أنها قادرة على ضبط تعقيدها وفقًا للبيانات. في البداية، عندما تبدأ تدريب الشبكة، تكون قيم الأوزان صغيرة، ومعظم الإشارة تمر عبر طبقات الهوية. مع تقدم التدريب وزيادة الأوزان، تزداد أهمية معلمات الشبكة، وتتكيف الشبكة لتلبية القوة التعبيرية المطلوبة لتصنيف الصور التدريبية بشكل صحيح. + +### Google Inception + +معمارية Google Inception تأخذ هذه الفكرة خطوة أبعد، وتبني كل طبقة في الشبكة كمزيج من عدة مسارات مختلفة: + + + +> الصورة من [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +هنا، يجب أن نؤكد على دور الالتفاف 1x1، لأنه في البداية قد لا يبدو منطقيًا. لماذا نحتاج إلى تمرير الصورة عبر مرشح 1x1؟ ومع ذلك، يجب أن تتذكر أن مرشحات الالتفاف تعمل أيضًا مع عدة قنوات عمق (في الأصل - ألوان RGB، وفي الطبقات اللاحقة - قنوات لمرشحات مختلفة)، ويتم استخدام الالتفاف 1x1 لدمج تلك القنوات المدخلة معًا باستخدام أوزان قابلة للتدريب. يمكن أيضًا اعتباره كعملية تقليل (تجميع) عبر بُعد القناة. + +إليك [مقالة جيدة](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) حول هذا الموضوع، و[الورقة الأصلية](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet هي عائلة من النماذج ذات الحجم الصغير، المناسبة للأجهزة المحمولة. استخدمها إذا كنت تعاني من نقص في الموارد، ويمكنك التضحية بقليل من الدقة. الفكرة الرئيسية وراءها هي ما يسمى **الالتفاف القابل للفصل حسب العمق**، والذي يسمح بتمثيل مرشحات الالتفاف من خلال تركيب الالتفاف المكاني والالتفاف 1x1 عبر قنوات العمق. هذا يقلل بشكل كبير من عدد المعلمات، مما يجعل الشبكة أصغر حجمًا، وأسهل في التدريب مع بيانات أقل. + +إليك [مقالة جيدة عن MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## الخاتمة + +في هذه الوحدة، تعلمت المفهوم الرئيسي وراء الشبكات العصبية للرؤية الحاسوبية - الشبكات التلافيفية. المعماريات الواقعية التي تدعم تصنيف الصور، واكتشاف الكائنات، وحتى شبكات توليد الصور كلها تعتمد على CNNs، فقط مع المزيد من الطبقات وبعض الحيل الإضافية في التدريب. + +## 🚀 التحدي + +في الدفاتر المرفقة، توجد ملاحظات في الأسفل حول كيفية تحقيق دقة أعلى. قم ببعض التجارب لترى ما إذا كان بإمكانك تحقيق دقة أعلى. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## المراجعة والدراسة الذاتية + +بينما تُستخدم CNNs غالبًا لمهام الرؤية الحاسوبية، فهي عمومًا جيدة لاستخراج الأنماط ذات الحجم الثابت. على سبيل المثال، إذا كنا نتعامل مع الأصوات، فقد نرغب أيضًا في استخدام CNNs للبحث عن بعض الأنماط المحددة في الإشارة الصوتية - وفي هذه الحالة ستكون المرشحات أحادية البعد (وتسمى هذه الشبكة 1D-CNN). أيضًا، يتم أحيانًا استخدام 3D-CNN لاستخراج الميزات في الفضاء متعدد الأبعاد، مثل أحداث معينة تحدث في الفيديو - يمكن لـ CNN التقاط أنماط معينة لتغير الميزات بمرور الوقت. قم ببعض المراجعة والدراسة الذاتية حول المهام الأخرى التي يمكن القيام بها باستخدام CNNs. + +## [التكليف](lab/README.md) + +في هذا المختبر، تم تكليفك بتصنيف سلالات مختلفة من القطط والكلاب. هذه الصور أكثر تعقيدًا من مجموعة بيانات MNIST وأعلى في الأبعاد، وهناك أكثر من 10 فئات. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ar/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..aa88023b --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# الشبكات العصبية الالتفافية + +لقد رأينا سابقًا أن الشبكات العصبية جيدة جدًا في التعامل مع الصور، وحتى الشبكة العصبية ذات الطبقة الواحدة قادرة على التعرف على الأرقام المكتوبة بخط اليد من مجموعة بيانات MNIST بدقة معقولة. ومع ذلك، فإن مجموعة بيانات MNIST مميزة جدًا، حيث يتمركز جميع الأرقام داخل الصورة، مما يجعل المهمة أسهل. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +في الحياة الواقعية، نريد أن نكون قادرين على التعرف على الأشياء في الصورة بغض النظر عن موقعها الدقيق داخل الصورة. رؤية الكمبيوتر تختلف عن التصنيف العام، لأنه عندما نحاول العثور على كائن معين في الصورة، فإننا نقوم بمسح الصورة بحثًا عن **أنماط** محددة وتراكيبها. على سبيل المثال، عند البحث عن قطة، قد نبدأ بالبحث عن خطوط أفقية، والتي يمكن أن تشكل الشوارب، ثم يمكن لتكوين معين من الشوارب أن يخبرنا بأنها صورة لقطة بالفعل. الموقع النسبي ووجود أنماط معينة مهم، وليس موقعها الدقيق في الصورة. + +لاستخراج الأنماط، سنستخدم مفهوم **مرشحات الالتفاف**. كما تعلم، يتم تمثيل الصورة بمصفوفة ثنائية الأبعاد، أو موتر ثلاثي الأبعاد مع عمق اللون. تطبيق المرشح يعني أننا نأخذ مصفوفة **نواة المرشح** صغيرة نسبيًا، ولكل بكسل في الصورة الأصلية نحسب المتوسط المرجح مع النقاط المجاورة. يمكننا تصور ذلك كنافذة صغيرة تنزلق عبر الصورة بأكملها، وتقوم بتوسيط جميع البكسلات وفقًا للأوزان في مصفوفة نواة المرشح. + +![مرشح الحواف العمودية](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ar.png) | ![مرشح الحواف الأفقية](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ar.png) +----|---- + +> الصورة بواسطة دميتري سوشنيكوف + +على سبيل المثال، إذا قمنا بتطبيق مرشحات الحواف العمودية والأفقية بحجم 3x3 على أرقام MNIST، يمكننا الحصول على إبرازات (مثل القيم العالية) حيث توجد حواف عمودية وأفقية في صورتنا الأصلية. وبالتالي يمكن استخدام هذين المرشحين "للبحث عن" الحواف. وبالمثل، يمكننا تصميم مرشحات مختلفة للبحث عن أنماط منخفضة المستوى أخرى: + +> صورة [مجموعة مرشحات ليونغ-مالك](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +ومع ذلك، بينما يمكننا تصميم المرشحات لاستخراج بعض الأنماط يدويًا، يمكننا أيضًا تصميم الشبكة بطريقة تجعلها تتعلم الأنماط تلقائيًا. هذه واحدة من الأفكار الرئيسية وراء الشبكات العصبية الالتفافية. + +## الأفكار الرئيسية وراء الشبكات العصبية الالتفافية + +طريقة عمل الشبكات العصبية الالتفافية تعتمد على الأفكار المهمة التالية: + +* مرشحات الالتفاف يمكنها استخراج الأنماط +* يمكننا تصميم الشبكة بطريقة تجعل المرشحات تُدرب تلقائيًا +* يمكننا استخدام نفس النهج للعثور على أنماط في الميزات عالية المستوى، وليس فقط في الصورة الأصلية. وبالتالي، تعمل عملية استخراج الميزات في الشبكات العصبية الالتفافية على تسلسل هرمي للميزات، بدءًا من تركيبات البكسلات منخفضة المستوى وصولًا إلى تركيبات أعلى مستوى لأجزاء الصورة. + +![استخراج الميزات الهرمي](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ar.png) + +> الصورة من [ورقة بحثية بواسطة هيسلوب-لينش](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d)، بناءً على [بحثهم](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ تمارين: الشبكات العصبية الالتفافية + +لنواصل استكشاف كيفية عمل الشبكات العصبية الالتفافية، وكيف يمكننا تحقيق مرشحات قابلة للتدريب، من خلال العمل على دفاتر الملاحظات التالية: + +* [الشبكات العصبية الالتفافية - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [الشبكات العصبية الالتفافية - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## بنية الهرم + +معظم الشبكات العصبية الالتفافية المستخدمة في معالجة الصور تتبع ما يسمى بنية الهرم. الطبقة الالتفافية الأولى المطبقة على الصور الأصلية تحتوي عادةً على عدد قليل نسبيًا من المرشحات (8-16)، والتي تتوافق مع تركيبات البكسلات المختلفة، مثل الخطوط الأفقية/العمودية. في المستوى التالي، نقوم بتقليل الأبعاد المكانية للشبكة، وزيادة عدد المرشحات، مما يتوافق مع المزيد من تركيبات الميزات البسيطة. مع كل طبقة، بينما نتحرك نحو المصنف النهائي، تقل الأبعاد المكانية للصورة، ويزداد عدد المرشحات. + +كمثال، دعونا نلقي نظرة على بنية VGG-16، وهي شبكة حققت دقة 92.7% في تصنيف ImageNet ضمن أفضل 5 في عام 2014: + +![طبقات ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ar.jpg) + +![هرم ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ar.jpg) + +> الصورة من [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## أشهر بنى الشبكات العصبية الالتفافية + +[تابع دراستك حول أشهر بنى الشبكات العصبية الالتفافية](CNN_Architectures.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ar/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..9c7a797a --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# تصنيف وجوه الحيوانات الأليفة + +مهمة مختبر من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +تخيل أنك بحاجة إلى تطوير تطبيق لحضانة الحيوانات الأليفة لتصنيف جميع الحيوانات. واحدة من الميزات الرائعة لهذا التطبيق ستكون اكتشاف السلالة تلقائيًا من صورة. يمكن تحقيق ذلك بنجاح باستخدام الشبكات العصبية. + +عليك تدريب شبكة عصبية التفافية لتصنيف سلالات مختلفة من القطط والكلاب باستخدام مجموعة بيانات **وجوه الحيوانات الأليفة**. + +## مجموعة البيانات + +سنستخدم مجموعة بيانات **وجوه الحيوانات الأليفة**، المشتقة من مجموعة بيانات الحيوانات الأليفة [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). تحتوي على 35 سلالة مختلفة من الكلاب والقطط. + +![مجموعة البيانات التي سنتعامل معها](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ar.png) + +لتحميل مجموعة البيانات، استخدم هذا المقتطف البرمجي: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## بدء العمل على الدفتر + +ابدأ المختبر بفتح [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## النتيجة + +لقد قمت بحل مشكلة معقدة نسبيًا لتصنيف الصور من البداية! كانت هناك العديد من الفئات، ومع ذلك تمكنت من تحقيق دقة معقولة! من المنطقي أيضًا قياس دقة top-k، لأنه من السهل الخلط بين بعض الفئات التي لا تختلف بوضوح حتى بالنسبة للبشر. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ar/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..72242b10 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# الشبكات المدربة مسبقًا والتعلم بالنقل + +تدريب الشبكات العصبية الالتفافية (CNNs) قد يستغرق وقتًا طويلًا، ويتطلب الكثير من البيانات. ومع ذلك، يتم قضاء معظم الوقت في تعلم أفضل المرشحات منخفضة المستوى التي يمكن للشبكة استخدامها لاستخراج الأنماط من الصور. وهنا يبرز سؤال طبيعي - هل يمكننا استخدام شبكة عصبية تم تدريبها على مجموعة بيانات واحدة وتكييفها لتصنيف صور مختلفة دون الحاجة إلى عملية تدريب كاملة؟ + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +تُعرف هذه الطريقة بـ **التعلم بالنقل**، لأننا ننقل بعض المعرفة من نموذج شبكة عصبية إلى آخر. في التعلم بالنقل، نبدأ عادةً بنموذج مدرب مسبقًا، تم تدريبه على مجموعة بيانات صور كبيرة، مثل **ImageNet**. هذه النماذج قادرة بالفعل على استخراج ميزات مختلفة من الصور العامة، وفي كثير من الحالات، يمكن أن يؤدي بناء مصنف فوق هذه الميزات المستخرجة إلى نتائج جيدة. + +> ✅ التعلم بالنقل هو مصطلح موجود في مجالات أكاديمية أخرى، مثل التعليم. يشير إلى عملية أخذ المعرفة من مجال معين وتطبيقها في مجال آخر. + +## النماذج المدربة مسبقًا كمستخلصات للميزات + +الشبكات الالتفافية التي تحدثنا عنها في القسم السابق تحتوي على عدد من الطبقات، كل منها مصمم لاستخراج ميزات معينة من الصورة، بدءًا من تركيبات البكسل منخفضة المستوى (مثل الخطوط الأفقية/العمودية أو الضربات)، وصولًا إلى تركيبات أعلى مستوى من الميزات، مثل عين اللهب. إذا قمنا بتدريب شبكة عصبية التلافيفية على مجموعة بيانات كبيرة ومتنوعة من الصور العامة، يجب أن تتعلم الشبكة استخراج هذه الميزات الشائعة. + +كل من Keras وPyTorch يحتويان على وظائف لتحميل أوزان الشبكات العصبية المدربة مسبقًا بسهولة لبعض البنى الشائعة، معظمها تم تدريبه على صور ImageNet. النماذج الأكثر استخدامًا موصوفة في صفحة [بنى الشبكات العصبية الالتفافية](../07-ConvNets/CNN_Architectures.md) من الدرس السابق. على وجه الخصوص، قد ترغب في استخدام أحد النماذج التالية: + +* **VGG-16/VGG-19**: نماذج بسيطة نسبيًا لكنها تقدم دقة جيدة. غالبًا ما يكون استخدام VGG كخطوة أولى خيارًا جيدًا لمعرفة كيفية عمل التعلم بالنقل. +* **ResNet**: عائلة من النماذج اقترحتها Microsoft Research في عام 2015. تحتوي على طبقات أكثر، وبالتالي تتطلب موارد أكبر. +* **MobileNet**: عائلة من النماذج ذات الحجم المخفض، مناسبة للأجهزة المحمولة. استخدمها إذا كنت تعاني من نقص في الموارد ويمكنك التضحية بقليل من الدقة. + +فيما يلي ميزات مستخرجة من صورة قطة بواسطة شبكة VGG-16: + +![ميزات مستخرجة بواسطة VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ar.png) + +## مجموعة بيانات القطط والكلاب + +في هذا المثال، سنستخدم مجموعة بيانات [القطط والكلاب](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste)، وهي قريبة جدًا من سيناريو تصنيف الصور في الحياة الواقعية. + +## ✍️ تمرين: التعلم بالنقل + +دعونا نرى التعلم بالنقل عمليًا في الدفاتر المرفقة: + +* [التعلم بالنقل - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [التعلم بالنقل - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## تصور القطة المثالية + +تحتوي الشبكة العصبية المدربة مسبقًا على أنماط مختلفة داخل "دماغها"، بما في ذلك مفاهيم **القطة المثالية** (وكذلك الكلب المثالي، الحمار الوحشي المثالي، إلخ). سيكون من المثير للاهتمام محاولة **تصور هذه الصورة**. ومع ذلك، هذا ليس بسيطًا، لأن الأنماط منتشرة في جميع أنحاء أوزان الشبكة، وأيضًا منظمة في بنية هرمية. + +إحدى الطرق التي يمكننا اتباعها هي البدء بصورة عشوائية، ثم محاولة استخدام تقنية **تحسين الانحدار التدريجي** لتعديل تلك الصورة بطريقة تجعل الشبكة تعتقد أنها قطة. + +![حلقة تحسين الصورة](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ar.png) + +ولكن إذا قمنا بذلك، سنحصل على شيء يشبه الضوضاء العشوائية. هذا لأن *هناك العديد من الطرق لجعل الشبكة تعتقد أن الصورة المدخلة هي قطة*، بما في ذلك بعض الطرق التي لا معنى لها بصريًا. بينما تحتوي هذه الصور على الكثير من الأنماط النموذجية للقطة، لا يوجد شيء يقيدها لتكون مميزة بصريًا. + +لتحسين النتيجة، يمكننا إضافة مصطلح آخر إلى دالة الخسارة، يُسمى **خسارة التباين**. وهو مقياس يظهر مدى تشابه البكسلات المجاورة للصورة. تقليل خسارة التباين يجعل الصورة أكثر سلاسة، ويزيل الضوضاء - مما يكشف عن أنماط أكثر جاذبية بصريًا. فيما يلي مثال على هذه الصور "المثالية"، التي يتم تصنيفها كقطة وحمار وحشي باحتمالية عالية: + +![القطة المثالية](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ar.png) | ![الحمار الوحشي المثالي](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ar.png) +-----|----- + *القطة المثالية* | *الحمار الوحشي المثالي* + +يمكن استخدام نهج مشابه لتنفيذ ما يُعرف بـ **الهجمات العدائية** على الشبكة العصبية. لنفترض أننا نريد خداع شبكة عصبية وجعل صورة كلب تبدو كقطة. إذا أخذنا صورة كلب، والتي يتم التعرف عليها من قبل الشبكة ككلب، يمكننا تعديلها قليلاً باستخدام تحسين الانحدار التدريجي، حتى تبدأ الشبكة في تصنيفها كقطة: + +![صورة كلب](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ar.png) | ![صورة كلب مصنفة كقطة](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ar.png) +-----|----- +*الصورة الأصلية للكلب* | *صورة كلب مصنفة كقطة* + +راجع الكود لإعادة إنتاج النتائج أعلاه في الدفتر التالي: + +* [القطة المثالية والعدائية - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## الخلاصة + +باستخدام التعلم بالنقل، يمكنك بسرعة إنشاء مصنف لمهمة تصنيف كائنات مخصصة وتحقيق دقة عالية. يمكنك أن ترى أن المهام الأكثر تعقيدًا التي نقوم بحلها الآن تتطلب قوة حسابية أعلى، ولا يمكن حلها بسهولة على وحدة المعالجة المركزية. في الوحدة التالية، سنحاول استخدام تنفيذ أخف وزنًا لتدريب نفس النموذج باستخدام موارد حسابية أقل، مما يؤدي إلى دقة أقل قليلاً فقط. + +## 🚀 تحدي + +في الدفاتر المرفقة، توجد ملاحظات في الأسفل حول كيفية عمل نقل المعرفة بشكل أفضل مع بيانات تدريب متشابهة إلى حد ما (نوع جديد من الحيوانات، ربما). قم ببعض التجارب مع أنواع جديدة تمامًا من الصور لترى مدى جودة أو سوء أداء نماذج نقل المعرفة الخاصة بك. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## المراجعة والدراسة الذاتية + +اقرأ [TrainingTricks.md](TrainingTricks.md) لتعميق معرفتك ببعض الطرق الأخرى لتدريب النماذج. + +## [التكليف](lab/README.md) + +في هذا المختبر، سنستخدم مجموعة بيانات حقيقية [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) للحيوانات الأليفة التي تحتوي على 35 سلالة من القطط والكلاب، وسنبني مصنفًا باستخدام التعلم بالنقل. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ar/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..6a103cd2 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# حيل تدريب التعلم العميق + +مع ازدياد عمق الشبكات العصبية، يصبح تدريبها أكثر تحديًا. إحدى المشكلات الرئيسية هي ما يُعرف بـ [تلاشي التدرجات](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) أو [انفجار التدرجات](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [هذا المقال](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) يقدم مقدمة جيدة حول هذه المشكلات. + +لجعل تدريب الشبكات العميقة أكثر كفاءة، هناك بعض التقنيات التي يمكن استخدامها. + +## الحفاظ على القيم ضمن نطاق معقول + +لجعل العمليات الحسابية العددية أكثر استقرارًا، نريد التأكد من أن جميع القيم داخل شبكتنا العصبية تقع ضمن نطاق معقول، عادةً [-1..1] أو [0..1]. هذا ليس شرطًا صارمًا، ولكن طبيعة العمليات الحسابية بالنقاط العائمة تجعل القيم ذات الأحجام المختلفة غير دقيقة عند معالجتها معًا. على سبيل المثال، إذا أضفنا 10-10 و1010، فمن المحتمل أن نحصل على 1010، لأن القيمة الأصغر سيتم "تحويلها" إلى نفس مرتبة القيمة الأكبر، وبالتالي ستُفقد المانتيستا. + +معظم دوال التفعيل تحتوي على لاخطيات حول [-1..1]، وبالتالي من المنطقي أن نقوم بتوسيع نطاق جميع بيانات الإدخال إلى [-1..1] أو [0..1]. + +## تهيئة الأوزان الأولية + +من الناحية المثالية، نريد أن تكون القيم ضمن نفس النطاق بعد المرور عبر طبقات الشبكة. لذلك من المهم تهيئة الأوزان بطريقة تحافظ على توزيع القيم. + +التوزيع الطبيعي **N(0,1)** ليس فكرة جيدة، لأنه إذا كان لدينا *n* مدخلات، فإن الانحراف المعياري للإخراج سيكون *n*، ومن المحتمل أن تخرج القيم عن نطاق [0..1]. + +التهيئات التالية تُستخدم غالبًا: + +- التوزيع المنتظم -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** يضمن أنه بالنسبة للمدخلات ذات المتوسط الصفري والانحراف المعياري 1، سيبقى نفس المتوسط والانحراف المعياري +- **N(0,√2/(n_in+n_out))** -- ما يُعرف بـ **تهيئة Xavier** (`glorot`)، يساعد في الحفاظ على الإشارات ضمن النطاق أثناء الانتشار الأمامي والخلفي + +## التطبيع بالدفعات + +حتى مع التهيئة الصحيحة للأوزان، يمكن أن تصبح الأوزان كبيرة جدًا أو صغيرة جدًا أثناء التدريب، مما يؤدي إلى إخراج الإشارات عن النطاق المناسب. يمكننا إعادة الإشارات إلى النطاق باستخدام إحدى تقنيات **التطبيع**. بينما توجد عدة تقنيات (تطبيع الأوزان، تطبيع الطبقات)، فإن الأكثر استخدامًا هو التطبيع بالدفعات. + +فكرة **التطبيع بالدفعات** هي أخذ جميع القيم عبر الدفعة المصغرة في الاعتبار، وإجراء التطبيع (أي طرح المتوسط والقسمة على الانحراف المعياري) بناءً على تلك القيم. يتم تنفيذ ذلك كطبقة في الشبكة تقوم بهذا التطبيع بعد تطبيق الأوزان، ولكن قبل دالة التفعيل. ونتيجة لذلك، من المحتمل أن نرى دقة نهائية أعلى وتدريبًا أسرع. + +إليك [البحث الأصلي](https://arxiv.org/pdf/1502.03167.pdf) حول التطبيع بالدفعات، و[الشرح على ويكيبيديا](https://en.wikipedia.org/wiki/Batch_normalization)، و[مقال تمهيدي جيد](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (وآخر [بالروسية](https://habrahabr.ru/post/309302/)). + +## الإسقاط + +**الإسقاط** هو تقنية مثيرة للاهتمام تقوم بإزالة نسبة معينة من الخلايا العصبية العشوائية أثناء التدريب. يتم تنفيذها أيضًا كطبقة تحتوي على معلمة واحدة (نسبة الخلايا العصبية التي سيتم إزالتها، عادةً 10%-50%)، وأثناء التدريب يتم تصفير عناصر عشوائية من متجه الإدخال قبل تمريره إلى الطبقة التالية. + +على الرغم من أن هذا قد يبدو فكرة غريبة، يمكنك رؤية تأثير الإسقاط على تدريب مصنف أرقام MNIST في دفتر الملاحظات [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). فهو يسرّع التدريب ويسمح لنا بتحقيق دقة أعلى في عدد أقل من الحلقات التدريبية. + +يمكن تفسير هذا التأثير بعدة طرق: + +- يمكن اعتباره عامل صدمة عشوائي للنموذج، مما يخرجه من الحد الأدنى المحلي +- يمكن اعتباره *متوسطًا ضمنيًا للنموذج*، لأنه يمكننا القول إنه أثناء الإسقاط نقوم بتدريب نموذج مختلف قليلاً + +> *يقول بعض الناس إنه عندما يحاول شخص مخمور تعلم شيء ما، فإنه سيتذكره بشكل أفضل في صباح اليوم التالي مقارنة بشخص غير مخمور، لأن الدماغ مع بعض الخلايا العصبية المعطلة يحاول التكيف بشكل أفضل لفهم المعنى. لم نختبر بأنفسنا ما إذا كان هذا صحيحًا أم لا.* + +## منع الإفراط في التكيّف + +أحد الجوانب المهمة جدًا في التعلم العميق هو القدرة على منع [الإفراط في التكيّف](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). على الرغم من أنه قد يكون مغريًا استخدام نموذج شبكة عصبية قوي جدًا، يجب علينا دائمًا موازنة عدد معلمات النموذج مع عدد عينات التدريب. + +> تأكد من فهمك لمفهوم [الإفراط في التكيّف](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) الذي قدمناه سابقًا! + +هناك عدة طرق لمنع الإفراط في التكيّف: + +- التوقف المبكر -- مراقبة الخطأ باستمرار على مجموعة التحقق وإيقاف التدريب عندما يبدأ خطأ التحقق في الزيادة. +- الانحلال الصريح للأوزان / التنظيم -- إضافة عقوبة إضافية إلى دالة الخسارة للقيم المطلقة العالية للأوزان، مما يمنع النموذج من الحصول على نتائج غير مستقرة للغاية +- متوسط النموذج -- تدريب عدة نماذج ثم أخذ متوسط النتائج. يساعد ذلك في تقليل التباين. +- الإسقاط (متوسط النموذج الضمني) + +## المحسنات / خوارزميات التدريب + +جانب آخر مهم في التدريب هو اختيار خوارزمية تدريب جيدة. على الرغم من أن **الانحدار التدرجي** الكلاسيكي هو خيار معقول، إلا أنه قد يكون بطيئًا جدًا في بعض الأحيان، أو يؤدي إلى مشكلات أخرى. + +في التعلم العميق، نستخدم **الانحدار التدرجي العشوائي** (SGD)، وهو انحدار تدرجي يُطبق على دفعات مصغرة يتم اختيارها عشوائيًا من مجموعة التدريب. يتم تعديل الأوزان باستخدام هذه الصيغة: + +wt+1 = wt - η∇ℒ + +### الزخم + +في **SGD مع الزخم**، نحتفظ بجزء من التدرج من الخطوات السابقة. يشبه ذلك عندما نتحرك بشيء من القصور الذاتي، ونتلقى دفعة في اتجاه مختلف، فإن مسارنا لا يتغير فورًا، بل يحتفظ بجزء من الحركة الأصلية. هنا نقدم متجهًا آخر v لتمثيل *السرعة*: + +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt+vt+1 + +هنا تشير المعلمة γ إلى مدى أخذ القصور الذاتي في الاعتبار: γ=0 يعادل SGD الكلاسيكي؛ γ=1 هو معادلة حركة بحتة. + +### آدم، أداغراد، إلخ. + +نظرًا لأننا في كل طبقة نضرب الإشارات بمصفوفة Wi، اعتمادًا على ||Wi||، يمكن أن يتضاءل التدرج ليقترب من 0، أو يرتفع بلا حدود. هذه هي جوهر مشكلة انفجار/تلاشي التدرجات. + +إحدى الحلول لهذه المشكلة هي استخدام اتجاه التدرج فقط في المعادلة، وتجاهل القيمة المطلقة، أي: + +wt+1 = wt - η(∇ℒ/||∇ℒ||)، حيث ||∇ℒ|| = √∑(∇ℒ)2 + +تُعرف هذه الخوارزمية بـ **أداغراد**. خوارزميات أخرى تستخدم نفس الفكرة: **RMSProp**، **آدم** + +> **آدم** يُعتبر خوارزمية فعالة جدًا للعديد من التطبيقات، لذا إذا لم تكن متأكدًا أي واحدة تستخدم - استخدم آدم. + +### قص التدرج + +قص التدرج هو امتداد للفكرة أعلاه. عندما يكون ||∇ℒ|| ≤ θ، نأخذ التدرج الأصلي في تحسين الأوزان، وعندما يكون ||∇ℒ|| > θ - نقسم التدرج على معياره. هنا θ هو معلمة، وفي معظم الحالات يمكننا أخذ θ=1 أو θ=10. + +### تقليل معدل التعلم + +غالبًا ما يعتمد نجاح التدريب على معلمة معدل التعلم η. من المنطقي افتراض أن القيم الأكبر لـ η تؤدي إلى تدريب أسرع، وهو ما نريده عادةً في بداية التدريب، ثم القيم الأصغر لـ η تسمح لنا بضبط الشبكة بدقة. لذلك، في معظم الحالات نريد تقليل η أثناء عملية التدريب. + +يمكن القيام بذلك بضرب η في رقم معين (مثل 0.98) بعد كل حقبة تدريبية، أو باستخدام **جدول زمني لمعدل التعلم** أكثر تعقيدًا. + +## هياكل الشبكات المختلفة + +اختيار الهيكل الصحيح للشبكة لمشكلتك يمكن أن يكون صعبًا. عادةً، نختار هيكلًا أثبت فعاليته لمهمتنا المحددة (أو لمهمة مشابهة). إليك [نظرة عامة جيدة](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) على هياكل الشبكات العصبية للرؤية الحاسوبية. + +> من المهم اختيار هيكل يكون قويًا بما يكفي لعدد عينات التدريب التي لدينا. اختيار نموذج قوي جدًا يمكن أن يؤدي إلى [الإفراط في التكيّف](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +طريقة جيدة أخرى هي استخدام هيكل يمكنه التكيف تلقائيًا مع التعقيد المطلوب. إلى حد ما، هيكل **ResNet** و**Inception** ذاتي التكيف. [المزيد عن هياكل الرؤية الحاسوبية](../07-ConvNets/CNN_Architectures.md) + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ar/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..ed182c49 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# تصنيف حيوانات أكسفورد باستخدام التعلم بالنقل + +مهمة عملية من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +تخيل أنك بحاجة إلى تطوير تطبيق لحضانة الحيوانات لتصنيف جميع الحيوانات. واحدة من الميزات الرائعة لهذا التطبيق ستكون اكتشاف السلالة تلقائيًا من صورة فوتوغرافية. في هذه المهمة، سنستخدم التعلم بالنقل لتصنيف صور حقيقية للحيوانات من مجموعة بيانات [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) للحيوانات. + +## مجموعة البيانات + +سنستخدم مجموعة بيانات [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) الأصلية، والتي تحتوي على 35 سلالة مختلفة من الكلاب والقطط. + +لتحميل مجموعة البيانات، استخدم هذا المقتطف البرمجي: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## بدء العمل على الدفتر + +ابدأ المهمة بفتح [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## النقاط الرئيسية + +التعلم بالنقل والشبكات المدربة مسبقًا يسمحان لنا بحل مشاكل تصنيف الصور الواقعية بسهولة نسبية. ومع ذلك، تعمل الشبكات المدربة مسبقًا بشكل جيد على الصور من نفس النوع، وإذا بدأنا بتصنيف صور مختلفة جدًا (مثل الصور الطبية)، فمن المحتمل أن نحصل على نتائج أسوأ بكثير. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ar/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..21261ada --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# المشفرات التلقائية + +عند تدريب الشبكات العصبية الالتفافية (CNNs)، واحدة من المشاكل هي أننا نحتاج إلى الكثير من البيانات الموصوفة. في حالة تصنيف الصور، نحتاج إلى فصل الصور إلى فئات مختلفة، وهو جهد يدوي. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +ومع ذلك، قد نرغب في استخدام البيانات الخام (غير الموصوفة) لتدريب مستخلصات ميزات الشبكات العصبية الالتفافية، وهو ما يسمى **التعلم الذاتي الإشراف**. بدلاً من استخدام التصنيفات، سنستخدم صور التدريب كمدخلات ومخرجات للشبكة. الفكرة الرئيسية لـ **المشفر التلقائي** هي أننا سنمتلك **شبكة مشفرة** تقوم بتحويل الصورة المدخلة إلى **فضاء كامن** (عادةً ما يكون مجرد متجه بحجم أصغر)، ثم **شبكة فك التشفير**، التي يكون هدفها إعادة بناء الصورة الأصلية. + +> ✅ [المشفر التلقائي](https://wikipedia.org/wiki/Autoencoder) هو "نوع من الشبكات العصبية الاصطناعية يُستخدم لتعلم ترميز فعال للبيانات غير الموصوفة." + +بما أننا نقوم بتدريب المشفر التلقائي لالتقاط أكبر قدر ممكن من المعلومات من الصورة الأصلية لإعادة البناء بدقة، تحاول الشبكة العثور على أفضل **تمثيل** للصور المدخلة لالتقاط المعنى. + +![رسم توضيحي للمشفر التلقائي](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ar.jpg) + +> الصورة من [مدونة Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## سيناريوهات استخدام المشفرات التلقائية + +بينما قد لا يبدو إعادة بناء الصور الأصلية مفيدًا بحد ذاته، هناك بعض السيناريوهات التي تكون فيها المشفرات التلقائية مفيدة بشكل خاص: + +* **تقليل أبعاد الصور للتصور** أو **تدريب تمثيلات الصور**. عادةً ما تقدم المشفرات التلقائية نتائج أفضل من تحليل المكونات الرئيسية (PCA)، لأنها تأخذ في الاعتبار الطبيعة المكانية للصور والميزات الهرمية. +* **إزالة الضوضاء**، أي إزالة الضوضاء من الصورة. نظرًا لأن الضوضاء تحمل الكثير من المعلومات غير المفيدة، لا يمكن للمشفر التلقائي تضمينها كلها في الفضاء الكامن الصغير نسبيًا، وبالتالي يلتقط فقط الجزء المهم من الصورة. عند تدريب أدوات إزالة الضوضاء، نبدأ بالصور الأصلية، ونستخدم الصور التي أُضيفت إليها ضوضاء بشكل اصطناعي كمدخلات للمشفر التلقائي. +* **زيادة الدقة**، أي تحسين دقة الصورة. نبدأ بالصور عالية الدقة، ونستخدم الصورة ذات الدقة المنخفضة كمدخلات للمشفر التلقائي. +* **النماذج التوليدية**. بمجرد تدريب المشفر التلقائي، يمكن استخدام جزء فك التشفير لإنشاء كائنات جديدة بدءًا من متجهات كامنة عشوائية. + +## المشفرات التلقائية التباينية (VAE) + +المشفرات التلقائية التقليدية تقلل أبعاد بيانات الإدخال بطريقة ما، وتكتشف الميزات المهمة للصور المدخلة. ومع ذلك، غالبًا ما تكون المتجهات الكامنة غير مفهومة. بمعنى آخر، إذا أخذنا مجموعة بيانات MNIST كمثال، فإن اكتشاف الأرقام التي تتوافق مع المتجهات الكامنة المختلفة ليس مهمة سهلة، لأن المتجهات الكامنة القريبة قد لا تتوافق بالضرورة مع نفس الأرقام. + +من ناحية أخرى، لتدريب النماذج التوليدية، من الأفضل أن يكون لدينا فهم للفضاء الكامن. هذه الفكرة تقودنا إلى **المشفر التلقائي التبايني** (VAE). + +VAE هو مشفر تلقائي يتعلم التنبؤ بـ *التوزيع الإحصائي* للمعلمات الكامنة، ما يسمى بـ **التوزيع الكامن**. على سبيل المثال، قد نرغب في أن تكون المتجهات الكامنة موزعة بشكل طبيعي مع متوسط zmean وانحراف معياري zsigma (كلاهما متوسط وانحراف معياري هما متجهان بأبعاد معينة d). يتعلم المشفر في VAE التنبؤ بهذه المعلمات، ثم يأخذ فك التشفير متجهًا عشوائيًا من هذا التوزيع لإعادة بناء الكائن. + +لتلخيص: + +* من المتجه المدخل، نتنبأ بـ `z_mean` و `z_log_sigma` (بدلاً من التنبؤ بالانحراف المعياري نفسه، نتنبأ باللوغاريتم الخاص به) +* نأخذ عينة `sample` من التوزيع N(zmean,exp(zlog\_sigma)) +* يحاول فك التشفير إعادة بناء الصورة الأصلية باستخدام `sample` كمتجه مدخل + + + +> الصورة من [هذه المدونة](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) بواسطة Isaak Dykeman + +تستخدم المشفرات التلقائية التباينية وظيفة خسارة معقدة تتكون من جزئين: + +* **خسارة إعادة البناء** هي وظيفة الخسارة التي تظهر مدى قرب الصورة المعاد بناؤها من الهدف (يمكن أن تكون متوسط الخطأ التربيعي، أو MSE). وهي نفس وظيفة الخسارة كما في المشفرات التلقائية العادية. +* **خسارة KL**، التي تضمن أن توزيعات المتغيرات الكامنة تبقى قريبة من التوزيع الطبيعي. وهي تعتمد على مفهوم [تباعد كولباك-ليبلر](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - وهو مقياس لتقدير مدى تشابه توزيعين إحصائيين. + +ميزة مهمة للمشفرات التلقائية التباينية هي أنها تسمح لنا بتوليد صور جديدة بسهولة نسبية، لأننا نعرف التوزيع الذي نأخذ منه عينات المتجهات الكامنة. على سبيل المثال، إذا قمنا بتدريب VAE مع متجه كامن ثنائي الأبعاد على MNIST، يمكننا بعد ذلك تغيير مكونات المتجه الكامن للحصول على أرقام مختلفة: + +vaemnist + +> الصورة بواسطة [Dmitry Soshnikov](http://soshnikov.com) + +لاحظ كيف تمتزج الصور مع بعضها البعض، حيث نبدأ في الحصول على متجهات كامنة من أجزاء مختلفة من فضاء المعلمات الكامنة. يمكننا أيضًا تصور هذا الفضاء في بعدين: + +vaemnist cluster + +> الصورة بواسطة [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ تمارين: المشفرات التلقائية + +تعرف على المزيد حول المشفرات التلقائية في دفاتر الملاحظات التالية: + +* [المشفرات التلقائية باستخدام TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [المشفرات التلقائية باستخدام PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## خصائص المشفرات التلقائية + +* **محددة البيانات** - تعمل بشكل جيد فقط مع نوع الصور التي تم تدريبها عليها. على سبيل المثال، إذا قمنا بتدريب شبكة زيادة الدقة على صور الزهور، فلن تعمل بشكل جيد على الصور الشخصية. وذلك لأن الشبكة يمكنها إنتاج صورة عالية الدقة من خلال أخذ التفاصيل الدقيقة من الميزات التي تعلمتها من مجموعة بيانات التدريب. +* **فقدان البيانات** - الصورة المعاد بناؤها ليست مطابقة للصورة الأصلية. طبيعة الفقد تُحدد بواسطة *وظيفة الخسارة* المستخدمة أثناء التدريب. +* تعمل على **البيانات غير الموصوفة** + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## الخاتمة + +في هذه الدرس، تعلمت عن الأنواع المختلفة من المشفرات التلقائية المتاحة لعالم الذكاء الاصطناعي. تعلمت كيفية بنائها، وكيفية استخدامها لإعادة بناء الصور. كما تعلمت عن VAE وكيفية استخدامه لتوليد صور جديدة. + +## 🚀 تحدي + +في هذا الدرس، تعلمت عن استخدام المشفرات التلقائية للصور. ولكن يمكن استخدامها أيضًا للموسيقى! تحقق من مشروع Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae)، الذي يستخدم المشفرات التلقائية لتعلم إعادة بناء الموسيقى. قم ببعض [التجارب](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) باستخدام هذه المكتبة لترى ما يمكنك إنشاؤه. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## المراجعة والدراسة الذاتية + +للمراجعة، اقرأ المزيد عن المشفرات التلقائية في هذه الموارد: + +* [بناء المشفرات التلقائية باستخدام Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [مقالة في مدونة NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [شرح المشفرات التلقائية التباينية](https://kvfrans.com/variational-autoencoders-explained/) +* [المشفرات التلقائية التباينية الشرطية](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## الواجب + +في نهاية [دفتر الملاحظات باستخدام TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb)، ستجد "مهمة" - استخدمها كواجبك. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/10-GANs/README.md b/translations/ar/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..e6d52507 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# الشبكات التوليدية التنافسية + +في القسم السابق، تعلمنا عن **النماذج التوليدية**: النماذج التي يمكنها توليد صور جديدة مشابهة لتلك الموجودة في مجموعة بيانات التدريب. كان VAE مثالًا جيدًا على نموذج توليدي. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +ومع ذلك، إذا حاولنا توليد شيء ذو معنى حقيقي، مثل لوحة بدقة معقولة باستخدام VAE، سنلاحظ أن التدريب لا يتقارب بشكل جيد. لهذا الغرض، يجب أن نتعلم عن بنية أخرى مخصصة للنماذج التوليدية - **الشبكات التوليدية التنافسية** أو GANs. + +الفكرة الرئيسية لـ GAN هي وجود شبكتين عصبيتين يتم تدريبهما ضد بعضهما البعض: + + + +> الصورة من [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ بعض المصطلحات: +> * **المولد (Generator)** هو شبكة تأخذ متجهًا عشوائيًا وتنتج صورة كنتيجة. +> * **المميز (Discriminator)** هو شبكة تأخذ صورة، ويجب أن تحدد ما إذا كانت صورة حقيقية (من مجموعة بيانات التدريب) أو تم توليدها بواسطة المولد. وهو في الأساس مصنف صور. + +### المميز (Discriminator) + +بنية المميز لا تختلف عن شبكة تصنيف الصور العادية. في أبسط الحالات، يمكن أن تكون مصنفًا متصلًا بالكامل، ولكن على الأرجح ستكون شبكة [التلافيف العصبية](../07-ConvNets/README.md). + +> ✅ يُطلق على GAN المستندة إلى الشبكات التلافيفية اسم [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +يتكون المميز في شبكة CNN من الطبقات التالية: عدة طبقات تلافيفية + تجميع (مع تقليل الحجم المكاني)، وطبقة أو أكثر متصلة بالكامل للحصول على "متجه الميزات"، وأخيرًا مصنف ثنائي. + +> ✅ "التجميع" في هذا السياق هو تقنية تقلل من حجم الصورة. "طبقات التجميع تقلل أبعاد البيانات من خلال دمج مخرجات مجموعات من الخلايا العصبية في طبقة واحدة إلى خلية عصبية واحدة في الطبقة التالية." - [المصدر](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### المولد (Generator) + +المولد أكثر تعقيدًا بعض الشيء. يمكن اعتباره مميزًا معكوسًا. بدءًا من متجه كامن (بدلاً من متجه الميزات)، يحتوي على طبقة متصلة بالكامل لتحويله إلى الحجم/الشكل المطلوب، متبوعة بتلافيف عكسية + تكبير. هذا مشابه للجزء *المفكك* في [المشفر التلقائي](../09-Autoencoders/README.md). + +> ✅ نظرًا لأن طبقة التلافيف تُنفذ كمرشح خطي يعبر الصورة، فإن التلافيف العكسية تشبه التلافيف ويمكن تنفيذها باستخدام نفس منطق الطبقة. + + + +> الصورة من [Dmitry Soshnikov](http://soshnikov.com) + +### تدريب GAN + +تُسمى GANs **تنافسية** لأن هناك منافسة مستمرة بين المولد والمميز. خلال هذه المنافسة، يتحسن كل من المولد والمميز، وبالتالي تتعلم الشبكة إنتاج صور أفضل وأفضل. + +يحدث التدريب على مرحلتين: + +* **تدريب المميز**. هذه المهمة مباشرة: نقوم بتوليد دفعة من الصور بواسطة المولد، مع وضع علامة عليها بـ 0، والتي تشير إلى صورة مزيفة، وأخذ دفعة من الصور من مجموعة البيانات المدخلة (مع علامة 1، صورة حقيقية). نحصل على *خسارة المميز*، ونقوم بتنفيذ الانتشار العكسي. +* **تدريب المولد**. هذا أكثر تعقيدًا بعض الشيء، لأننا لا نعرف الناتج المتوقع للمولد مباشرة. نأخذ شبكة GAN الكاملة التي تتكون من مولد متبوع بمميز، ونغذيها ببعض المتجهات العشوائية، ونتوقع أن تكون النتيجة 1 (تشير إلى صور حقيقية). ثم نقوم بتجميد معلمات المميز (لا نريد تدريبه في هذه الخطوة)، وننفذ الانتشار العكسي. + +خلال هذه العملية، لا تنخفض خسائر كل من المولد والمميز بشكل كبير. في الوضع المثالي، يجب أن تتذبذب، مما يشير إلى تحسن أداء كلا الشبكتين. + +## ✍️ تمارين: GANs + +* [دفتر GAN باستخدام TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [دفتر GAN باستخدام PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### مشاكل تدريب GAN + +تُعرف GANs بأنها صعبة التدريب بشكل خاص. إليك بعض المشاكل: + +* **انهيار الأنماط (Mode Collapse)**. يشير هذا المصطلح إلى أن المولد يتعلم إنتاج صورة واحدة ناجحة تخدع المميز، بدلاً من مجموعة متنوعة من الصور المختلفة. +* **الحساسية للمعاملات الفائقة**. غالبًا ما تلاحظ أن GAN لا تتقارب على الإطلاق، ثم فجأة يحدث انخفاض في معدل التعلم يؤدي إلى التقارب. +* الحفاظ على **التوازن** بين المولد والمميز. في كثير من الحالات، يمكن أن تنخفض خسارة المميز إلى الصفر بسرعة نسبية، مما يؤدي إلى عدم قدرة المولد على التدريب بشكل أكبر. للتغلب على ذلك، يمكننا محاولة ضبط معدلات تعلم مختلفة للمولد والمميز، أو تخطي تدريب المميز إذا كانت الخسارة منخفضة جدًا بالفعل. +* التدريب على **الدقة العالية**. يعكس نفس المشكلة مع المشفرات التلقائية، حيث يؤدي إعادة بناء العديد من طبقات الشبكة التلافيفية إلى ظهور تشوهات. يتم حل هذه المشكلة عادةً باستخدام ما يسمى **النمو التدريجي**، حيث يتم تدريب الطبقات الأولى على صور منخفضة الدقة، ثم يتم "فتح" الطبقات أو إضافتها. حل آخر هو إضافة وصلات إضافية بين الطبقات وتدريب عدة دقات في وقت واحد - انظر هذا [البحث عن Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) للحصول على التفاصيل. + +## نقل الأنماط + +تُعد GANs طريقة رائعة لتوليد الصور الفنية. تقنية أخرى مثيرة للاهتمام هي ما يسمى **نقل الأنماط**، والتي تأخذ صورة **محتوى** واحدة، وتعيد رسمها بأسلوب مختلف، باستخدام مرشحات من صورة **النمط**. + +تعمل هذه الطريقة كالتالي: +* نبدأ بصورة ضوضاء عشوائية (أو بصورة محتوى، ولكن لفهم الطريقة من الأسهل البدء بضوضاء عشوائية) +* هدفنا هو إنشاء صورة تكون قريبة من كل من صورة المحتوى وصورة النمط. يتم تحديد ذلك من خلال دالتي خسارة: + - **خسارة المحتوى** تُحسب بناءً على الميزات المستخرجة بواسطة شبكة CNN عند بعض الطبقات من الصورة الحالية وصورة المحتوى + - **خسارة النمط** تُحسب بين الصورة الحالية وصورة النمط بطريقة ذكية باستخدام مصفوفات Gram (المزيد من التفاصيل في [دفتر المثال](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) +* لجعل الصورة أكثر سلاسة وإزالة الضوضاء، نقدم أيضًا **خسارة التباين**، التي تحسب متوسط المسافة بين البكسلات المجاورة +* تقوم الحلقة الرئيسية للتحسين بضبط الصورة الحالية باستخدام الانحدار التدرجي (أو أي خوارزمية تحسين أخرى) لتقليل الخسارة الإجمالية، وهي مجموع مرجح لجميع الخسائر الثلاث. + +## ✍️ مثال: [نقل الأنماط](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## الخلاصة + +في هذه الدرس، تعلمت عن GANs وكيفية تدريبها. كما تعلمت عن التحديات الخاصة التي قد تواجهها هذه النوعية من الشبكات العصبية، وبعض الاستراتيجيات لتجاوزها. + +## 🚀 تحدي + +قم بتشغيل [دفتر نقل الأنماط](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) باستخدام صورك الخاصة. + +## المراجعة والدراسة الذاتية + +للمزيد من المعلومات، اقرأ عن GANs في هذه الموارد: + +* Marco Pasini، [10 دروس تعلمتها أثناء تدريب GANs لمدة عام](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN)، بنية GAN تعتبر معيارًا +* [إنشاء فن توليدي باستخدام GANs على Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## الواجب + +راجع أحد الدفاتر المرتبطة بهذا الدرس وأعد تدريب GAN باستخدام صورك الخاصة. ماذا يمكنك أن تنشئ؟ + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الرسمي. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ar/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..c5d82bc5 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# الكشف عن الكائنات + +النماذج التي تعاملنا معها لتصنيف الصور حتى الآن كانت تأخذ صورة وتنتج نتيجة تصنيفية، مثل الفئة "رقم" في مشكلة MNIST. ومع ذلك، في العديد من الحالات، لا نريد فقط معرفة أن الصورة تحتوي على كائنات - بل نريد تحديد موقعها بدقة. وهذا هو بالضبط الهدف من **الكشف عن الكائنات**. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![الكشف عن الكائنات](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ar.png) + +> الصورة من [موقع YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## نهج بسيط للكشف عن الكائنات + +لنفترض أننا نريد العثور على قطة في صورة، فإن نهجًا بسيطًا جدًا للكشف عن الكائنات سيكون كالتالي: + +1. تقسيم الصورة إلى عدد من المربعات. +2. تشغيل تصنيف الصور على كل مربع. +3. يمكن اعتبار المربعات التي تؤدي إلى تنشيط عالي بما يكفي أنها تحتوي على الكائن المطلوب. + +![الكشف البسيط عن الكائنات](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ar.png) + +> *الصورة من [دفتر التمارين](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +ومع ذلك، هذا النهج بعيد عن المثالية، لأنه يسمح فقط للخوارزمية بتحديد صندوق الإحاطة للكائن بشكل غير دقيق. للحصول على موقع أكثر دقة، نحتاج إلى تشغيل نوع من **الانحدار** للتنبؤ بإحداثيات صناديق الإحاطة - وللقيام بذلك، نحتاج إلى مجموعات بيانات محددة. + +## الانحدار للكشف عن الكائنات + +[هذه المقالة](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) تقدم مقدمة رائعة للكشف عن الأشكال. + +## مجموعات البيانات للكشف عن الكائنات + +قد تصادف مجموعات البيانات التالية لهذه المهمة: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 فئة +* [COCO](http://cocodataset.org/#home) - الكائنات الشائعة في السياق. 80 فئة، صناديق الإحاطة وأقنعة التجزئة + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ar.jpg) + +## مقاييس الكشف عن الكائنات + +### التقاطع على الاتحاد + +بينما من السهل قياس أداء الخوارزمية في تصنيف الصور، فإن الكشف عن الكائنات يتطلب قياس دقة الفئة بالإضافة إلى دقة موقع صندوق الإحاطة المستنتج. بالنسبة للأخير، نستخدم ما يسمى **التقاطع على الاتحاد** (IoU)، الذي يقيس مدى تطابق صندوقين (أو منطقتين عشوائيتين). + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ar.png) + +> *الشكل 2 من [هذه المقالة الممتازة عن IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +الفكرة بسيطة - نقسم مساحة التقاطع بين شكلين على مساحة اتحادهما. بالنسبة لمنطقتين متطابقتين، سيكون IoU 1، بينما بالنسبة للمناطق غير المتداخلة تمامًا سيكون 0. بخلاف ذلك، سيتراوح بين 0 و1. عادةً ما نعتبر فقط صناديق الإحاطة التي يكون فيها IoU أعلى من قيمة معينة. + +### الدقة المتوسطة + +لنفترض أننا نريد قياس مدى جودة التعرف على فئة معينة من الكائنات $C$. لقياس ذلك، نستخدم مقاييس **الدقة المتوسطة**، التي تُحسب كالتالي: + +1. نأخذ منحنى الدقة-الاستدعاء الذي يظهر الدقة بناءً على قيمة عتبة الكشف (من 0 إلى 1). +2. بناءً على العتبة، سنحصل على المزيد أو القليل من الكائنات المكتشفة في الصورة، وقيم مختلفة للدقة والاستدعاء. +3. سيبدو المنحنى كالتالي: + + + +> *الصورة من [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +الدقة المتوسطة لفئة معينة $C$ هي المساحة تحت هذا المنحنى. بشكل أكثر دقة، يتم تقسيم محور الاستدعاء عادةً إلى 10 أجزاء، ويتم حساب متوسط الدقة على جميع هذه النقاط: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP و IoU + +نعتبر فقط تلك الاكتشافات التي يكون فيها IoU أعلى من قيمة معينة. على سبيل المثال، في مجموعة بيانات PASCAL VOC عادةً ما يُفترض $\mbox{IoU Threshold} = 0.5$، بينما في COCO يتم قياس AP لقيم مختلفة من $\mbox{IoU Threshold}$. + + + +> *الصورة من [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### الدقة المتوسطة الإجمالية - mAP + +المقياس الرئيسي للكشف عن الكائنات يُسمى **الدقة المتوسطة الإجمالية** أو **mAP**. وهو قيمة الدقة المتوسطة، محسوبة عبر جميع فئات الكائنات، وأحيانًا أيضًا عبر $\mbox{IoU Threshold}$. يتم وصف عملية حساب **mAP** بمزيد من التفصيل +[في هذه المقالة](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)، وأيضًا [هنا مع أمثلة للرمز](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## طرق مختلفة للكشف عن الكائنات + +هناك فئتان رئيسيتان من خوارزميات الكشف عن الكائنات: + +* **شبكات اقتراح المناطق** (R-CNN، Fast R-CNN، Faster R-CNN). الفكرة الرئيسية هي إنشاء **مناطق اهتمام** (ROI) وتشغيل CNN عليها، بحثًا عن التنشيط الأقصى. يشبه هذا النهج إلى حد ما النهج البسيط، باستثناء أن مناطق الاهتمام يتم إنشاؤها بطريقة أكثر ذكاءً. أحد العيوب الرئيسية لهذه الطرق هو أنها بطيئة، لأننا نحتاج إلى العديد من تمريرات مصنف CNN عبر الصورة. +* **المرور الواحد** (YOLO، SSD، RetinaNet). في هذه البُنى، يتم تصميم الشبكة للتنبؤ بالفئات ومناطق الاهتمام في مرور واحد. + +### R-CNN: الشبكة العصبية القائمة على المناطق + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) تستخدم [البحث الانتقائي](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) لإنشاء هيكل هرمي لمناطق الاهتمام، التي يتم تمريرها بعد ذلك عبر مستخلصات ميزات CNN ومصنفات SVM لتحديد فئة الكائن، والانحدار الخطي لتحديد إحداثيات *صندوق الإحاطة*. [المقالة الرسمية](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ar.png) + +> *الصورة من van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ar.png) + +> *الصور من [هذه المقالة](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +هذا النهج مشابه لـ R-CNN، لكن المناطق يتم تحديدها بعد تطبيق طبقات الالتفاف. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ar.png) + +> الصورة من [المقالة الرسمية](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf)، [arXiv](https://arxiv.org/pdf/1504.08083.pdf)، 2015 + +### Faster R-CNN + +الفكرة الرئيسية لهذا النهج هي استخدام الشبكة العصبية للتنبؤ بمناطق الاهتمام - ما يسمى *شبكة اقتراح المناطق*. [المقالة](https://arxiv.org/pdf/1506.01497.pdf)، 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ar.png) + +> الصورة من [المقالة الرسمية](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: الشبكة العصبية القائمة على المناطق بالكامل + +هذا الخوارزم أسرع حتى من Faster R-CNN. الفكرة الرئيسية هي كالتالي: + +1. نستخرج الميزات باستخدام ResNet-101. +2. يتم معالجة الميزات بواسطة **خريطة النقاط الحساسة للموقع**. يتم تقسيم كل كائن من $C$ الفئات إلى مناطق $k\times k$، وندرب الشبكة للتنبؤ بأجزاء الكائنات. +3. لكل جزء من مناطق $k\times k$، تصوت جميع الشبكات لفئات الكائنات، ويتم اختيار فئة الكائن ذات التصويت الأقصى. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ar.png) + +> الصورة من [المقالة الرسمية](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO هو خوارزمية مرور واحد في الوقت الحقيقي. الفكرة الرئيسية هي كالتالي: + + * يتم تقسيم الصورة إلى مناطق $S\times S$. + * لكل منطقة، **CNN** تتنبأ بـ $n$ كائنات محتملة، إحداثيات *صندوق الإحاطة* و *الثقة*=*الاحتمالية* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ar.png) + +> الصورة من [المقالة الرسمية](https://arxiv.org/abs/1506.02640) + +### خوارزميات أخرى + +* RetinaNet: [المقالة الرسمية](https://arxiv.org/abs/1708.02002) + - [تنفيذ PyTorch في Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [تنفيذ Keras](https://github.com/fizyr/keras-retinanet) + - [الكشف عن الكائنات باستخدام RetinaNet](https://keras.io/examples/vision/retinanet/) في أمثلة Keras +* SSD (الكاشف ذو اللقطة الواحدة): [المقالة الرسمية](https://arxiv.org/abs/1512.02325) + +## ✍️ تمارين: الكشف عن الكائنات + +واصل التعلم في دفتر الملاحظات التالي: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## الخاتمة + +في هذه الدرس، أخذت جولة سريعة حول الطرق المختلفة التي يمكن من خلالها تحقيق الكشف عن الكائنات! + +## 🚀 تحدي + +اقرأ هذه المقالات والدفاتر حول YOLO وجربها بنفسك: + +* [مقالة جيدة](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) تصف YOLO + * [الموقع الرسمي](https://pjreddie.com/darknet/yolo/) + * YOLO: [تنفيذ Keras](https://github.com/experiencor/keras-yolo2)، [دفتر خطوة بخطوة](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [تنفيذ Keras](https://github.com/experiencor/keras-yolo2)، [دفتر خطوة بخطوة](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## المراجعة والدراسة الذاتية + +* [الكشف عن الكائنات](https://tjmachinelearning.com/lectures/1718/obj/) بواسطة Nikhil Sardana +* [مقارنة جيدة لخوارزميات الكشف عن الكائنات](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [مراجعة لخوارزميات التعلم العميق للكشف عن الكائنات](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [مقدمة خطوة بخطوة لخوارزميات الكشف عن الكائنات الأساسية](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [تنفيذ Faster R-CNN في Python للكشف عن الكائنات](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [التكليف: الكشف عن الكائنات](lab/README.md) + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). على الرغم من أننا نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ar/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..82f5c67a --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# الكشف عن الرؤوس باستخدام مجموعة بيانات Hollywood Heads + +مهمة مختبر من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +عدّ عدد الأشخاص في بث كاميرا المراقبة هو مهمة مهمة تتيح لنا تقدير عدد الزوار في المتاجر، وساعات الذروة في المطاعم، وما إلى ذلك. لحل هذه المهمة، نحتاج إلى القدرة على الكشف عن رؤوس البشر من زوايا مختلفة. لتدريب نموذج الكشف عن الكائنات للكشف عن رؤوس البشر، يمكننا استخدام [مجموعة بيانات Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). + +## مجموعة البيانات + +[مجموعة بيانات Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) تحتوي على 369,846 رأسًا بشريًا تم وضع علامات عليها في 224,740 إطارًا من أفلام هوليوود. يتم تقديمها بتنسيق [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC)، حيث لكل صورة يوجد أيضًا ملف وصف XML يبدو كالتالي: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +في هذه المجموعة، هناك فئة واحدة فقط من الكائنات وهي `head`، ولكل رأس تحصل على إحداثيات صندوق الإحاطة. يمكنك تحليل ملفات XML باستخدام مكتبات Python، أو استخدام [هذه المكتبة](https://pypi.org/project/pascal-voc/) للتعامل مباشرة مع تنسيق PASCAL VOC. + +## تدريب نموذج الكشف عن الكائنات + +يمكنك تدريب نموذج الكشف عن الكائنات باستخدام إحدى الطرق التالية: + +* استخدام [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) وواجهة برمجة التطبيقات الخاصة به في Python لتدريب النموذج برمجيًا في السحابة. لن يتمكن Custom Vision من استخدام أكثر من بضع مئات من الصور لتدريب النموذج، لذا قد تحتاج إلى تقليل حجم مجموعة البيانات. +* استخدام المثال من [دليل Keras](https://keras.io/examples/vision/retinanet/) لتدريب نموذج RetunaNet. +* استخدام [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) الوحدة المدمجة في مكتبة torchvision. + +## الخلاصة + +الكشف عن الكائنات هو مهمة مطلوبة بشكل متكرر في الصناعة. بينما توجد بعض الخدمات التي يمكن استخدامها لتنفيذ الكشف عن الكائنات (مثل [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste))، من المهم فهم كيفية عمل الكشف عن الكائنات والقدرة على تدريب نماذجك الخاصة. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ar/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..dbf488c7 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# التقسيم + +لقد تعلمنا سابقًا عن اكتشاف الكائنات، الذي يسمح لنا بتحديد مواقع الكائنات في الصورة من خلال التنبؤ بـ *الصناديق المحيطة*. ومع ذلك، في بعض المهام، لا نحتاج فقط إلى الصناديق المحيطة، بل نحتاج أيضًا إلى تحديد مواقع الكائنات بدقة أكبر. تُعرف هذه المهمة بـ **التقسيم**. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +يمكن اعتبار التقسيم على أنه **تصنيف البكسلات**، حيث يجب علينا التنبؤ بفئة **كل** بكسل في الصورة (*الخلفية* تكون واحدة من الفئات). هناك نوعان رئيسيان من خوارزميات التقسيم: + +* **التقسيم الدلالي** يحدد فقط فئة البكسل، ولا يميز بين الكائنات المختلفة من نفس الفئة. +* **التقسيم الفردي** يقسم الفئات إلى كائنات منفصلة. + +على سبيل المثال، في التقسيم الفردي، تُعتبر هذه الأغنام كائنات مختلفة، ولكن في التقسيم الدلالي، تُعتبر جميع الأغنام فئة واحدة. + + + +> الصورة من [هذه المقالة](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +هناك هياكل عصبية مختلفة للتقسيم، لكنها جميعًا تتبع نفس البنية. بطريقة ما، هي مشابهة للمشفّر التلقائي الذي تعلمت عنه سابقًا، ولكن بدلاً من إعادة بناء الصورة الأصلية، يكون هدفنا هو إعادة بناء **القناع**. وبالتالي، يتكون شبكة التقسيم من الأجزاء التالية: + +* **المشفّر** يستخرج الميزات من الصورة المدخلة. +* **المفكّك** يحوّل هذه الميزات إلى **صورة القناع**، بنفس الحجم وعدد القنوات المطابق لعدد الفئات. + + + +> الصورة من [هذا المنشور](https://arxiv.org/pdf/2001.05566.pdf) + +يجب أن نذكر بشكل خاص دالة الخسارة المستخدمة في التقسيم. عند استخدام المشفّرات التلقائية التقليدية، نحتاج إلى قياس التشابه بين صورتين، ويمكننا استخدام متوسط الخطأ التربيعي (MSE) لتحقيق ذلك. في التقسيم، يمثل كل بكسل في صورة القناع الهدف رقم الفئة (مرمز بطريقة one-hot على البعد الثالث)، لذلك نحتاج إلى استخدام دوال خسارة مخصصة للتصنيف - خسارة الانتروبيا المتقاطعة، مع أخذ المتوسط على جميع البكسلات. إذا كان القناع ثنائيًا - يتم استخدام **خسارة الانتروبيا المتقاطعة الثنائية** (BCE). + +> ✅ التشفير بطريقة one-hot هو طريقة لترميز تصنيف الفئة في متجه بطول يساوي عدد الفئات. اطلع على [هذه المقالة](https://datagy.io/sklearn-one-hot-encode/) حول هذه التقنية. + +## التقسيم في التصوير الطبي + +في هذا الدرس، سنرى التقسيم عمليًا من خلال تدريب شبكة للتعرف على الشامات البشرية (المعروفة أيضًا بالوحمة) في الصور الطبية. سنستخدم قاعدة بيانات PH2 لصور الجلد كمصدر للصور. يحتوي هذا البيانات على 200 صورة من ثلاث فئات: وحمة نموذجية، وحمة غير نموذجية، وسرطان الجلد. تحتوي جميع الصور أيضًا على **قناع** يحدد حدود الوحمة. + +> ✅ هذه التقنية مناسبة بشكل خاص لهذا النوع من التصوير الطبي، ولكن ما هي التطبيقات الواقعية الأخرى التي يمكنك تخيلها؟ + +navi + +> الصورة من قاعدة بيانات PH2 + +سنقوم بتدريب نموذج لتقسيم أي وحمة عن الخلفية. + +## ✍️ تمارين: التقسيم الدلالي + +افتح دفاتر الملاحظات أدناه لتتعرف على المزيد حول هياكل التقسيم الدلالي المختلفة، وتدرب على العمل معها، وشاهدها عمليًا. + +* [التقسيم الدلالي باستخدام Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [التقسيم الدلالي باستخدام TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## الخلاصة + +التقسيم هو تقنية قوية جدًا لتصنيف الصور، حيث يتجاوز الصناديق المحيطة ليصل إلى تصنيف على مستوى البكسل. تُستخدم هذه التقنية في التصوير الطبي، بالإضافة إلى تطبيقات أخرى. + +## 🚀 التحدي + +تقسيم الجسم هو مجرد واحدة من المهام الشائعة التي يمكننا القيام بها باستخدام صور الأشخاص. تشمل المهام المهمة الأخرى **اكتشاف الهيكل العظمي** و**اكتشاف الوضعيات**. جرّب مكتبة [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) لترى كيف يمكن استخدام اكتشاف الوضعيات. + +## المراجعة والدراسة الذاتية + +تقدم [مقالة ويكيبيديا](https://wikipedia.org/wiki/Image_segmentation) نظرة عامة جيدة على التطبيقات المختلفة لهذه التقنية. تعرّف بنفسك على المجالات الفرعية للتقسيم الفردي والتقسيم البانورامي في هذا المجال. + +## [التكليف](lab/README.md) + +في هذا المختبر، جرّب **تقسيم جسم الإنسان** باستخدام [مجموعة بيانات Segmentation Full Body MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) من Kaggle. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ar/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..d6a24bee --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# تقسيم جسم الإنسان + +مهمة مختبر من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +في إنتاج الفيديو، على سبيل المثال في نشرات الطقس، نحتاج غالبًا إلى قص صورة الإنسان من الكاميرا ووضعها فوق لقطات أخرى. يتم ذلك عادةً باستخدام تقنيات **chroma key**، حيث يتم تصوير الشخص أمام خلفية ذات لون موحد، يتم إزالتها بعد ذلك. في هذا المختبر، سنقوم بتدريب نموذج شبكة عصبية لقص صورة ظلية للإنسان. + +## مجموعة البيانات + +سنستخدم [مجموعة بيانات تقسيم الجسم الكامل MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) من موقع Kaggle. قم بتنزيل مجموعة البيانات يدويًا من Kaggle. + +## دفتر الملاحظات المبدئي + +ابدأ المختبر بفتح [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## النقاط المستفادة + +تقسيم الجسم هو مجرد واحدة من المهام الشائعة التي يمكننا القيام بها باستخدام صور الأشخاص. تشمل المهام المهمة الأخرى **اكتشاف الهيكل العظمي** و**اكتشاف الوضعيات**. اطلع على مكتبة [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) لمعرفة كيفية تنفيذ هذه المهام. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/4-ComputerVision/README.md b/translations/ar/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..9125e003 --- /dev/null +++ b/translations/ar/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# رؤية الحاسوب + +![ملخص محتوى رؤية الحاسوب في رسم توضيحي](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ar.png) + +في هذا القسم سنتعلم عن: + +* [مقدمة في رؤية الحاسوب و OpenCV](06-IntroCV/README.md) +* [الشبكات العصبية الالتفافية](07-ConvNets/README.md) +* [الشبكات المدربة مسبقًا والتعلم بالنقل](08-TransferLearning/README.md) +* [المشفّرات التلقائية](09-Autoencoders/README.md) +* [الشبكات التوليدية الخصامية](10-GANs/README.md) +* [كشف الكائنات](11-ObjectDetection/README.md) +* [التقسيم الدلالي](12-Segmentation/README.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/13-TextRep/README.md b/translations/ar/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..8f8cc228 --- /dev/null +++ b/translations/ar/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# تمثيل النصوص كموترات + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## تصنيف النصوص + +خلال الجزء الأول من هذا القسم، سنركز على مهمة **تصنيف النصوص**. سنستخدم مجموعة بيانات [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset)، التي تحتوي على مقالات إخبارية مثل المثال التالي: + +* الفئة: العلوم/التكنولوجيا +* العنوان: شركة في كنتاكي تفوز بمنحة لدراسة الببتيدات (AP) +* النص: AP - شركة أسسها باحث في الكيمياء من جامعة لويفيل فازت بمنحة لتطوير... + +هدفنا سيكون تصنيف الخبر إلى واحدة من الفئات بناءً على النص. + +## تمثيل النصوص + +إذا أردنا حل مهام معالجة اللغة الطبيعية (NLP) باستخدام الشبكات العصبية، فنحن بحاجة إلى طريقة لتمثيل النصوص كموترات. الحواسيب تمثل بالفعل الأحرف النصية كأرقام ترتبط بالخطوط على شاشتك باستخدام ترميزات مثل ASCII أو UTF-8. + +صورة توضح خريطة تربط الحرف بتمثيل ASCII وثنائي + +> [مصدر الصورة](https://www.seobility.net/en/wiki/ASCII) + +كمستخدمين، نحن نفهم ما يمثله كل حرف، وكيف تتجمع الأحرف لتكوين كلمات الجملة. ومع ذلك، الحواسيب بحد ذاتها لا تمتلك هذا الفهم، والشبكة العصبية يجب أن تتعلم المعنى أثناء التدريب. + +لذلك، يمكننا استخدام طرق مختلفة لتمثيل النصوص: + +* **تمثيل على مستوى الحروف**، حيث نمثل النصوص بمعاملة كل حرف كرقم. إذا كان لدينا *C* عدد مختلف من الأحرف في النصوص، فإن كلمة *Hello* سيتم تمثيلها بموتر بحجم 5x*C*. كل حرف سيقابل عمودًا في الموتر باستخدام الترميز الواحد (one-hot encoding). +* **تمثيل على مستوى الكلمات**، حيث ننشئ **قاموسًا** لجميع الكلمات في النصوص، ثم نمثل الكلمات باستخدام الترميز الواحد. هذه الطريقة أفضل إلى حد ما، لأن كل حرف بمفرده لا يحمل الكثير من المعنى، وبالتالي باستخدام مفاهيم دلالية أعلى - الكلمات - نبسط المهمة للشبكة العصبية. ومع ذلك، نظرًا لحجم القاموس الكبير، نحتاج إلى التعامل مع موترات متفرقة ذات أبعاد عالية. + +بغض النظر عن الطريقة، يجب أولاً تحويل النص إلى تسلسل من **الرموز**، حيث يمكن أن تكون الرموز أحرفًا، كلمات، أو حتى أجزاء من كلمات. بعد ذلك، نحول الرمز إلى رقم، عادة باستخدام **القاموس**، ويمكن إدخال هذا الرقم إلى الشبكة العصبية باستخدام الترميز الواحد. + +## N-Grams + +في اللغة الطبيعية، المعنى الدقيق للكلمات يمكن تحديده فقط في السياق. على سبيل المثال، معاني *neural network* و*fishing network* مختلفة تمامًا. إحدى الطرق لأخذ ذلك في الاعتبار هي بناء النموذج على أزواج الكلمات، واعتبار أزواج الكلمات كرموز منفصلة في القاموس. بهذه الطريقة، الجملة *I like to go fishing* سيتم تمثيلها بتسلسل الرموز التالي: *I like*، *like to*، *to go*، *go fishing*. المشكلة في هذه الطريقة هي أن حجم القاموس ينمو بشكل كبير، وأن التركيبات مثل *go fishing* و*go shopping* يتم تمثيلها كرموز مختلفة، على الرغم من أن الفعل هو نفسه. + +في بعض الحالات، يمكننا التفكير في استخدام ثلاثيات الكلمات (tri-grams) - تركيبات من ثلاث كلمات - أيضًا. وبالتالي، تُعرف هذه الطريقة عمومًا باسم **n-grams**. كما أنه من المنطقي استخدام n-grams مع التمثيل على مستوى الحروف، حيث ستقابل n-grams تقريبًا المقاطع الصوتية المختلفة. + +## حقيبة الكلمات (Bag-of-Words) وTF/IDF + +عند حل مهام مثل تصنيف النصوص، نحتاج إلى تمثيل النصوص كمتجه ثابت الحجم، والذي سنستخدمه كمدخل للمصنف النهائي الكثيف. إحدى أبسط الطرق للقيام بذلك هي دمج تمثيلات الكلمات الفردية، على سبيل المثال عن طريق جمعها. إذا جمعنا الترميزات الواحدية لكل كلمة، سنحصل على متجه تكرارات، يوضح عدد مرات ظهور كل كلمة داخل النص. يُعرف هذا التمثيل للنص باسم **حقيبة الكلمات** (BoW). + + + +> صورة من المؤلف + +تمثل حقيبة الكلمات الكلمات التي تظهر في النص وكمياتها، مما يمكن أن يكون مؤشرًا جيدًا على محتوى النص. على سبيل المثال، المقالة الإخبارية عن السياسة من المحتمل أن تحتوي على كلمات مثل *president* و*country*، بينما المنشور العلمي قد يحتوي على كلمات مثل *collider*، *discovered*، وما إلى ذلك. وبالتالي، يمكن أن تكون تكرارات الكلمات في كثير من الحالات مؤشرًا جيدًا على محتوى النص. + +المشكلة مع حقيبة الكلمات هي أن بعض الكلمات الشائعة، مثل *and*، *is*، وما إلى ذلك، تظهر في معظم النصوص، ولديها أعلى التكرارات، مما يخفي الكلمات التي تكون فعلاً مهمة. يمكننا تقليل أهمية هذه الكلمات من خلال أخذ تكرار ظهور الكلمات في مجموعة النصوص الكاملة بعين الاعتبار. هذه هي الفكرة الرئيسية وراء طريقة TF/IDF، التي يتم تناولها بمزيد من التفصيل في الدفاتر المرفقة مع هذا الدرس. + +ومع ذلك، لا يمكن لأي من هذه الطرق أن تأخذ في الاعتبار **دلالات** النصوص بشكل كامل. نحن بحاجة إلى نماذج شبكات عصبية أكثر قوة للقيام بذلك، والتي سنناقشها لاحقًا في هذا القسم. + +## ✍️ تمارين: تمثيل النصوص + +واصل التعلم من خلال الدفاتر التالية: + +* [تمثيل النصوص باستخدام PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [تمثيل النصوص باستخدام TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## الخلاصة + +حتى الآن، قمنا بدراسة تقنيات يمكنها إضافة وزن تكراري للكلمات المختلفة. ومع ذلك، فهي غير قادرة على تمثيل المعنى أو الترتيب. كما قال اللغوي الشهير ج. ر. فيرث في عام 1935: "المعنى الكامل للكلمة دائمًا ما يكون سياقيًا، ولا يمكن أخذ أي دراسة للمعنى بعيدًا عن السياق على محمل الجد." سنتعلم لاحقًا في الدورة كيفية التقاط المعلومات السياقية من النصوص باستخدام نمذجة اللغة. + +## 🚀 التحدي + +جرّب بعض التمارين الأخرى باستخدام حقيبة الكلمات ونماذج بيانات مختلفة. قد تستوحي من هذه [المسابقة على Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## المراجعة والدراسة الذاتية + +قم بممارسة مهاراتك في تضمين النصوص وتقنيات حقيبة الكلمات على [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [التكليف: دفاتر الملاحظات](assignment.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/13-TextRep/assignment.md b/translations/ar/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..c6b93c0e --- /dev/null +++ b/translations/ar/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# المهمة: دفاتر الملاحظات + +باستخدام دفاتر الملاحظات المرتبطة بهذه الدرس (سواء نسخة PyTorch أو TensorFlow)، قم بتشغيلها مرة أخرى باستخدام مجموعة بيانات خاصة بك، ربما واحدة من Kaggle، مع الإشارة إلى المصدر. أعد كتابة دفتر الملاحظات لتسليط الضوء على استنتاجاتك الخاصة. جرب بعض مجموعات البيانات المبتكرة التي قد تكون مفاجئة، مثل [هذه المجموعة عن مشاهدات الأجسام الطائرة المجهولة](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) من NUFORC. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/14-Embeddings/README.md b/translations/ar/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..1871aec8 --- /dev/null +++ b/translations/ar/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# التضمينات + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +عند تدريب المصنفات بناءً على BoW أو TF/IDF، كنا نعمل على متجهات حقيبة الكلمات عالية الأبعاد بطول `vocab_size`، وكنا نقوم بتحويل المتجهات التمثيلية ذات الأبعاد المنخفضة إلى تمثيل نادر باستخدام الترميز الواحد. ومع ذلك، فإن هذا التمثيل الواحد ليس فعالًا من حيث الذاكرة. بالإضافة إلى ذلك، يتم التعامل مع كل كلمة بشكل مستقل عن الأخرى، أي أن المتجهات المشفرة بالترميز الواحد لا تعبر عن أي تشابه دلالي بين الكلمات. + +فكرة **التضمين** هي تمثيل الكلمات بواسطة متجهات كثيفة ذات أبعاد أقل، والتي تعكس بطريقة ما المعنى الدلالي للكلمة. سنناقش لاحقًا كيفية بناء تضمينات كلمات ذات معنى، ولكن في الوقت الحالي دعونا نفكر في التضمينات كطريقة لتقليل أبعاد متجه الكلمة. + +لذلك، ستأخذ طبقة التضمين كلمة كمدخل، وتنتج متجهًا مخرجيًا بحجم `embedding_size` المحدد. بمعنى ما، هي مشابهة جدًا لطبقة `Linear`، ولكن بدلًا من أخذ متجه مشفر بالترميز الواحد، ستكون قادرة على أخذ رقم الكلمة كمدخل، مما يسمح لنا بتجنب إنشاء متجهات مشفرة كبيرة. + +باستخدام طبقة التضمين كطبقة أولى في شبكة المصنف الخاصة بنا، يمكننا الانتقال من نموذج حقيبة الكلمات إلى نموذج **حقيبة التضمينات**، حيث نقوم أولاً بتحويل كل كلمة في النص إلى التضمين المقابل لها، ثم نحسب دالة تجميعية مثل `sum` أو `average` أو `max` لجميع هذه التضمينات. + +![صورة توضح مصنف التضمين لخمس كلمات متسلسلة.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ar.png) + +> الصورة بواسطة المؤلف + +## ✍️ تمارين: التضمينات + +واصل التعلم من خلال دفاتر الملاحظات التالية: +* [التضمينات باستخدام PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [التضمينات باستخدام TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## التضمينات الدلالية: Word2Vec + +بينما تعلمت طبقة التضمين كيفية تحويل الكلمات إلى تمثيل متجه، إلا أن هذا التمثيل لم يكن بالضرورة ذا معنى دلالي كبير. سيكون من الجيد تعلم تمثيل متجه بحيث تكون الكلمات المتشابهة أو المرادفات قريبة من بعضها البعض من حيث مسافة المتجه (مثل المسافة الإقليدية). + +للقيام بذلك، نحتاج إلى تدريب نموذج التضمين مسبقًا على مجموعة كبيرة من النصوص بطريقة محددة. إحدى الطرق لتدريب التضمينات الدلالية تُسمى [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). وهي تعتمد على بنيتين رئيسيتين تُستخدمان لإنتاج تمثيل موزع للكلمات: + +- **حقيبة الكلمات المستمرة** (CBoW) — في هذه البنية، نقوم بتدريب النموذج للتنبؤ بالكلمة من السياق المحيط. بالنظر إلى النغرام $(W_{-2},W_{-1},W_0,W_1,W_2)$، هدف النموذج هو التنبؤ بـ $W_0$ من $(W_{-2},W_{-1},W_1,W_2)$. +- **التخطي المستمر** (Skip-Gram) — وهو عكس CBoW. يستخدم النموذج نافذة السياق المحيطة للتنبؤ بالكلمة الحالية. + +CBoW أسرع، بينما Skip-Gram أبطأ ولكنه يقوم بتمثيل الكلمات النادرة بشكل أفضل. + +![صورة توضح كلا من خوارزميات CBoW و Skip-Gram لتحويل الكلمات إلى متجهات.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ar.png) + +> الصورة مأخوذة من [هذه الورقة البحثية](https://arxiv.org/pdf/1301.3781.pdf) + +يمكن استخدام تضمينات Word2Vec المدربة مسبقًا (وكذلك نماذج مشابهة مثل GloVe) بدلاً من طبقة التضمين في الشبكات العصبية. ومع ذلك، نحتاج إلى التعامل مع المفردات، لأن المفردات المستخدمة لتدريب Word2Vec/GloVe مسبقًا قد تختلف عن المفردات في نصوصنا. ألقِ نظرة على دفاتر الملاحظات أعلاه لمعرفة كيفية حل هذه المشكلة. + +## التضمينات السياقية + +أحد القيود الرئيسية لتمثيلات التضمين المدربة مسبقًا مثل Word2Vec هو مشكلة تمييز معاني الكلمات. بينما يمكن للتضمينات المدربة مسبقًا أن تلتقط بعض معاني الكلمات في السياق، يتم ترميز كل المعاني الممكنة للكلمة في نفس التضمين. يمكن أن يسبب هذا مشاكل في النماذج اللاحقة، حيث أن العديد من الكلمات مثل كلمة "play" لها معانٍ مختلفة اعتمادًا على السياق الذي تُستخدم فيه. + +على سبيل المثال، كلمة "play" في الجملتين التاليتين لها معانٍ مختلفة تمامًا: + +- ذهبت إلى **عرض مسرحي** في المسرح. +- جون يريد أن **يلعب** مع أصدقائه. + +التضمينات المدربة مسبقًا تمثل كلا المعنيين لكلمة "play" في نفس التضمين. للتغلب على هذا القيد، نحتاج إلى بناء تضمينات تعتمد على **نموذج اللغة**، الذي يتم تدريبه على مجموعة كبيرة من النصوص، ويعرف كيف يمكن للكلمات أن تتجمع في سياقات مختلفة. مناقشة التضمينات السياقية خارج نطاق هذا الدرس، ولكننا سنعود إليها عند الحديث عن نماذج اللغة لاحقًا في الدورة. + +## الخاتمة + +في هذا الدرس، اكتشفت كيفية بناء واستخدام طبقات التضمين في TensorFlow و PyTorch لتعكس بشكل أفضل المعاني الدلالية للكلمات. + +## 🚀 تحدي + +تم استخدام Word2Vec في بعض التطبيقات المثيرة للاهتمام، بما في ذلك إنشاء كلمات الأغاني والشعر. ألقِ نظرة على [هذه المقالة](https://www.politetype.com/blog/word2vec-color-poems) التي تشرح كيف استخدم المؤلف Word2Vec لإنشاء الشعر. شاهد [هذا الفيديو بواسطة Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) أيضًا لاكتشاف تفسير مختلف لهذه التقنية. ثم حاول تطبيق هذه التقنيات على نصوصك الخاصة، ربما من مصادر مثل Kaggle. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## المراجعة والدراسة الذاتية + +اقرأ هذه الورقة البحثية عن Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [التكليف: دفاتر الملاحظات](assignment.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ar/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..c43b5a69 --- /dev/null +++ b/translations/ar/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# المهمة: دفاتر الملاحظات + +باستخدام دفاتر الملاحظات المرتبطة بهذه الدرس (سواء نسخة PyTorch أو TensorFlow)، قم بإعادة تشغيلها باستخدام مجموعة بيانات خاصة بك، ربما واحدة من Kaggle، مع ذكر المصدر. قم بإعادة كتابة دفتر الملاحظات لتسليط الضوء على استنتاجاتك الخاصة. جرب نوعًا مختلفًا من مجموعات البيانات ووثق استنتاجاتك، باستخدام نصوص مثل [كلمات أغاني البيتلز هذه](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ar/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..87306ffc --- /dev/null +++ b/translations/ar/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# نمذجة اللغة + +التضمينات الدلالية، مثل Word2Vec وGloVe، هي في الواقع خطوة أولى نحو **نمذجة اللغة** - إنشاء نماذج *تفهم* (أو *تمثل*) طبيعة اللغة بطريقة ما. + +## [اختبار قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +الفكرة الرئيسية وراء نمذجة اللغة هي تدريب النماذج على مجموعات بيانات غير معنونة بطريقة غير خاضعة للإشراف. هذا مهم لأن لدينا كميات هائلة من النصوص غير المعنونة المتاحة، بينما كمية النصوص المعنونة ستكون دائمًا محدودة بكمية الجهد الذي يمكننا إنفاقه على التوسيم. غالبًا ما يمكننا بناء نماذج لغة يمكنها **توقع الكلمات المفقودة** في النص، لأن إخفاء كلمة عشوائية في النص واستخدامها كعينة تدريب هو أمر سهل. + +## تدريب التضمينات + +في أمثلتنا السابقة، استخدمنا تضمينات دلالية مدربة مسبقًا، ولكن من المثير للاهتمام أن نرى كيف يمكن تدريب هذه التضمينات. هناك عدة أفكار يمكن استخدامها: + +* **نمذجة اللغة باستخدام N-Gram**، حيث نتوقع رمزًا معينًا من خلال النظر إلى N من الرموز السابقة (N-gram). +* **كيس الكلمات المستمر** (CBoW)، حيث نتوقع الرمز الأوسط $W_0$ في تسلسل الرموز $W_{-N}$, ..., $W_N$. +* **Skip-gram**، حيث نتوقع مجموعة من الرموز المجاورة {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} من الرمز الأوسط $W_0$. + +![صورة من ورقة بحثية حول تحويل الكلمات إلى متجهات](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ar.png) + +> صورة من [هذه الورقة البحثية](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ دفاتر أمثلة: تدريب نموذج CBoW + +واصل التعلم من خلال الدفاتر التالية: + +* [تدريب Word2Vec باستخدام CBoW مع TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [تدريب Word2Vec باستخدام CBoW مع PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## الخاتمة + +في الدرس السابق رأينا أن تضمينات الكلمات تعمل كالسحر! الآن نعلم أن تدريب تضمينات الكلمات ليس مهمة معقدة جدًا، ويجب أن نكون قادرين على تدريب تضميناتنا الخاصة لنصوص متخصصة إذا لزم الأمر. + +## [اختبار بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## المراجعة والدراسة الذاتية + +* [البرنامج التعليمي الرسمي لـ PyTorch حول نمذجة اللغة](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [البرنامج التعليمي الرسمي لـ TensorFlow حول تدريب نموذج Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* استخدام إطار العمل **gensim** لتدريب التضمينات الأكثر استخدامًا في بضع أسطر من الكود موضح [في هذا التوثيق](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [مهمة: تدريب نموذج Skip-Gram](lab/README.md) + +في المختبر، نتحداك لتعديل الكود من هذا الدرس لتدريب نموذج Skip-Gram بدلاً من CBoW. [اقرأ التفاصيل](lab/README.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ar/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..3f01b213 --- /dev/null +++ b/translations/ar/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# تدريب نموذج Skip-Gram + +مهمة عملية من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +في هذه المهمة، نتحداك لتدريب نموذج Word2Vec باستخدام تقنية Skip-Gram. قم بتدريب شبكة تحتوي على تضمين للتنبؤ بالكلمات المجاورة في نافذة Skip-Gram بعرض $N$-رموز. يمكنك استخدام [الكود من هذا الدرس](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb)، مع إجراء تعديلات بسيطة عليه. + +## مجموعة البيانات + +يمكنك استخدام أي كتاب ترغب فيه. يمكنك العثور على العديد من النصوص المجانية في [مشروع غوتنبرغ](https://www.gutenberg.org/)، على سبيل المثال، هنا رابط مباشر إلى [مغامرات أليس في بلاد العجائب](https://www.gutenberg.org/files/11/11-0.txt) للكاتب لويس كارول. أو يمكنك استخدام مسرحيات شكسبير، والتي يمكنك الحصول عليها باستخدام الكود التالي: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## استكشاف! + +إذا كان لديك وقت وترغب في التعمق أكثر في الموضوع، حاول استكشاف عدة أمور: + +* كيف يؤثر حجم التضمين على النتائج؟ +* كيف تؤثر أنماط النصوص المختلفة على النتائج؟ +* اختر عدة أنواع مختلفة جدًا من الكلمات ومرادفاتها، واحصل على تمثيلها في شكل متجهات، ثم قم بتطبيق PCA لتقليل الأبعاد إلى 2، وقم برسمها في مساحة ثنائية الأبعاد. هل ترى أي أنماط؟ + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/16-RNN/README.md b/translations/ar/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..068eec57 --- /dev/null +++ b/translations/ar/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# الشبكات العصبية المتكررة + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +في الأقسام السابقة، كنا نستخدم تمثيلات دلالية غنية للنصوص ومصنف خطي بسيط فوق التضمينات. ما تفعله هذه البنية هو التقاط المعنى المجمع للكلمات في الجملة، لكنها لا تأخذ في الاعتبار **ترتيب** الكلمات، لأن عملية التجميع فوق التضمينات أزالت هذه المعلومات من النص الأصلي. وبسبب عدم قدرة هذه النماذج على نمذجة ترتيب الكلمات، فإنها لا تستطيع حل المهام الأكثر تعقيدًا أو الغموض مثل توليد النصوص أو الإجابة على الأسئلة. + +للتقاط معنى تسلسل النصوص، نحتاج إلى استخدام بنية شبكة عصبية أخرى تُسمى **الشبكة العصبية المتكررة** أو RNN. في RNN، نقوم بتمرير الجملة عبر الشبكة رمزًا واحدًا في كل مرة، وتنتج الشبكة بعض **الحالة**، والتي نمررها مرة أخرى إلى الشبكة مع الرمز التالي. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ar.png) + +> الصورة بواسطة المؤلف + +بالنظر إلى تسلسل المدخلات من الرموز X0,...,Xn، تقوم RNN بإنشاء تسلسل من كتل الشبكة العصبية، وتدرب هذا التسلسل من البداية إلى النهاية باستخدام الانتشار العكسي. كل كتلة شبكة تأخذ زوجًا (Xi,Si) كمدخل، وتنتج Si+1 كنتيجة. الحالة النهائية Sn أو (المخرجات Yn) تدخل إلى مصنف خطي لإنتاج النتيجة. جميع كتل الشبكة تشترك في نفس الأوزان، ويتم تدريبها من البداية إلى النهاية باستخدام تمرير واحد للانتشار العكسي. + +نظرًا لأن متجهات الحالة S0,...,Sn تمر عبر الشبكة، فإنها قادرة على تعلم التبعيات التسلسلية بين الكلمات. على سبيل المثال، عندما تظهر كلمة *ليس* في مكان ما في التسلسل، يمكنها تعلم نفي عناصر معينة داخل متجه الحالة، مما يؤدي إلى النفي. + +> ✅ نظرًا لأن أوزان جميع كتل RNN في الصورة أعلاه مشتركة، يمكن تمثيل نفس الصورة ككتلة واحدة (على اليمين) مع حلقة تغذية راجعة متكررة، والتي تمرر حالة المخرجات للشبكة مرة أخرى إلى المدخلات. + +## تشريح خلية RNN + +دعونا نرى كيف يتم تنظيم خلية RNN بسيطة. تقبل الحالة السابقة Si-1 والرمز الحالي Xi كمدخلات، ويجب أن تنتج حالة المخرجات Si (وفي بعض الأحيان، نهتم أيضًا ببعض المخرجات الأخرى Yi، كما هو الحال مع الشبكات التوليدية). + +تحتوي خلية RNN بسيطة على مصفوفتين وزنيتين داخليًا: واحدة تحول رمز المدخلات (دعونا نسميها W)، والأخرى تحول حالة المدخلات (H). في هذه الحالة يتم حساب مخرجات الشبكة كـ σ(W×Xi+H×Si-1+b)، حيث σ هي دالة التنشيط وb هو انحياز إضافي. + +تشريح خلية RNN + +> الصورة بواسطة المؤلف + +في كثير من الحالات، يتم تمرير رموز المدخلات عبر طبقة تضمين قبل دخولها إلى RNN لتقليل الأبعاد. في هذه الحالة، إذا كان بُعد متجهات المدخلات هو *emb_size*، ومتجه الحالة هو *hid_size* - فإن حجم W هو *emb_size*×*hid_size*، وحجم H هو *hid_size*×*hid_size*. + +## الذاكرة طويلة وقصيرة المدى (LSTM) + +واحدة من المشاكل الرئيسية في RNN التقليدية هي مشكلة **تلاشي التدرجات**. نظرًا لأن RNN يتم تدريبها من البداية إلى النهاية في تمرير واحد للانتشار العكسي، فإنها تواجه صعوبة في نشر الخطأ إلى الطبقات الأولى من الشبكة، وبالتالي لا يمكن للشبكة تعلم العلاقات بين الرموز البعيدة. واحدة من الطرق لتجنب هذه المشكلة هي إدخال **إدارة حالة صريحة** باستخدام ما يسمى **البوابات**. هناك بنيتان معروفتان جيدًا من هذا النوع: **الذاكرة طويلة وقصيرة المدى** (LSTM) و**وحدة الترحيل ذات البوابات** (GRU). + +![صورة تظهر مثالًا على خلية ذاكرة طويلة وقصيرة المدى](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> مصدر الصورة TBD + +يتم تنظيم شبكة LSTM بطريقة مشابهة لـ RNN، ولكن هناك حالتان يتم تمريرهما من طبقة إلى أخرى: الحالة الفعلية C، والمتجه المخفي H. في كل وحدة، يتم دمج المتجه المخفي Hi مع المدخل Xi، ويتحكمان فيما يحدث للحالة C عبر **البوابات**. كل بوابة هي شبكة عصبية مع تنشيط سيجمويد (المخرجات في النطاق [0,1])، والتي يمكن اعتبارها قناعًا ثنائيًا عند ضربها في متجه الحالة. هناك البوابات التالية (من اليسار إلى اليمين في الصورة أعلاه): + +* **بوابة النسيان** تأخذ المتجه المخفي وتحدد أي مكونات من المتجه C نحتاج إلى نسيانها وأيها نمررها. +* **بوابة الإدخال** تأخذ بعض المعلومات من المدخلات والمتجهات المخفية وتدخلها في الحالة. +* **بوابة الإخراج** تحول الحالة عبر طبقة خطية مع تنشيط *tanh*، ثم تختار بعض مكوناتها باستخدام المتجه المخفي Hi لإنتاج حالة جديدة Ci+1. + +يمكن اعتبار مكونات الحالة C كعلامات يمكن تشغيلها وإيقافها. على سبيل المثال، عندما نواجه اسم *أليس* في التسلسل، قد نرغب في افتراض أنه يشير إلى شخصية أنثوية، ونرفع العلامة في الحالة التي لدينا اسم أنثوي في الجملة. عندما نواجه لاحقًا عبارة *وتوم*، سنرفع العلامة التي لدينا اسم جمع. وبالتالي من خلال التلاعب بالحالة يمكننا افتراضًا تتبع الخصائص النحوية لأجزاء الجملة. + +> ✅ مورد ممتاز لفهم التفاصيل الداخلية لـ LSTM هو هذه المقالة الرائعة [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) بواسطة كريستوفر أولاه. + +## الشبكات العصبية المتكررة ثنائية الاتجاه ومتعددة الطبقات + +لقد ناقشنا الشبكات المتكررة التي تعمل في اتجاه واحد، من بداية التسلسل إلى نهايته. يبدو ذلك طبيعيًا، لأنه يشبه الطريقة التي نقرأ بها ونستمع إلى الكلام. ومع ذلك، نظرًا لأننا في العديد من الحالات العملية لدينا وصول عشوائي إلى تسلسل المدخلات، فقد يكون من المنطقي تشغيل الحساب المتكرر في كلا الاتجاهين. تُسمى هذه الشبكات **الشبكات العصبية المتكررة ثنائية الاتجاه**. عند التعامل مع الشبكة ثنائية الاتجاه، سنحتاج إلى متجهين للحالة المخفية، واحد لكل اتجاه. + +الشبكة المتكررة، سواء كانت أحادية الاتجاه أو ثنائية الاتجاه، تلتقط أنماطًا معينة داخل التسلسل، ويمكنها تخزينها في متجه الحالة أو تمريرها إلى المخرجات. كما هو الحال مع الشبكات الالتفافية، يمكننا بناء طبقة متكررة أخرى فوق الأولى لالتقاط أنماط ذات مستوى أعلى وبناء من الأنماط ذات المستوى المنخفض المستخرجة بواسطة الطبقة الأولى. يؤدي هذا إلى مفهوم **الشبكة العصبية المتكررة متعددة الطبقات** التي تتكون من شبكتين متكررتين أو أكثر، حيث يتم تمرير مخرجات الطبقة السابقة إلى الطبقة التالية كمدخلات. + +![صورة تظهر شبكة LSTM متعددة الطبقات](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ar.jpg) + +*الصورة من [هذا المنشور الرائع](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) بواسطة فرناندو لوبيز* + +## ✍️ تمارين: التضمينات + +واصل تعلمك في دفاتر الملاحظات التالية: + +* [RNNs باستخدام PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs باستخدام TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## الخاتمة + +في هذه الوحدة، رأينا أن RNNs يمكن استخدامها لتصنيف التسلسلات، ولكن في الواقع، يمكنها التعامل مع العديد من المهام الأخرى، مثل توليد النصوص، الترجمة الآلية، والمزيد. سنناقش تلك المهام في الوحدة التالية. + +## 🚀 التحدي + +اقرأ بعض الأدبيات حول LSTMs وفكر في تطبيقاتها: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## المراجعة والدراسة الذاتية + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) بواسطة كريستوفر أولاه. + +## [التكليف: دفاتر الملاحظات](assignment.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/16-RNN/assignment.md b/translations/ar/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..96119729 --- /dev/null +++ b/translations/ar/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# المهمة: دفاتر الملاحظات + +باستخدام دفاتر الملاحظات المرتبطة بهذه الدرس (سواء نسخة PyTorch أو TensorFlow)، قم بإعادة تشغيلها باستخدام مجموعة بيانات خاصة بك، ربما واحدة من Kaggle، مع الإشارة إلى المصدر. أعد كتابة دفتر الملاحظات لتسليط الضوء على استنتاجاتك الخاصة. جرب نوعًا مختلفًا من مجموعات البيانات ووثق استنتاجاتك، باستخدام نصوص مثل [مجموعة بيانات هذه المسابقة على Kaggle حول تغريدات الطقس](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ar/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..06e86453 --- /dev/null +++ b/translations/ar/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# الشبكات التوليدية + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +توفر الشبكات العصبية المتكررة (RNNs) وأنواعها المختلفة مثل خلايا الذاكرة طويلة المدى (LSTMs) ووحدات التكرار المغلقة (GRUs) آلية لنمذجة اللغة، حيث يمكنها تعلم ترتيب الكلمات وتقديم توقعات للكلمة التالية في تسلسل معين. يتيح لنا ذلك استخدام RNNs في **المهام التوليدية**، مثل توليد النصوص العادية، والترجمة الآلية، وحتى وصف الصور. + +> ✅ فكر في كل الأوقات التي استفدت فيها من المهام التوليدية مثل إكمال النصوص أثناء الكتابة. قم ببعض البحث عن تطبيقاتك المفضلة لترى ما إذا كانت قد استخدمت RNNs. + +في بنية RNN التي ناقشناها في الوحدة السابقة، كانت كل وحدة RNN تنتج الحالة المخفية التالية كمخرج. ومع ذلك، يمكننا أيضًا إضافة مخرج آخر لكل وحدة متكررة، مما يسمح لنا بإنتاج **تسلسل** (يساوي في الطول التسلسل الأصلي). علاوة على ذلك، يمكننا استخدام وحدات RNN لا تقبل إدخالًا في كل خطوة، بل تأخذ فقط متجه حالة ابتدائية، ثم تنتج تسلسلًا من المخرجات. + +يتيح ذلك تصميمات عصبية مختلفة كما هو موضح في الصورة أدناه: + +![صورة توضح أنماط الشبكات العصبية المتكررة الشائعة.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ar.jpg) + +> الصورة من منشور المدونة [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) بواسطة [Andrej Karpaty](http://karpathy.github.io/) + +* **واحد إلى واحد** هو شبكة عصبية تقليدية مع إدخال واحد ومخرج واحد. +* **واحد إلى متعدد** هو تصميم توليدي يقبل قيمة إدخال واحدة، وينتج تسلسلًا من القيم المخرجة. على سبيل المثال، إذا أردنا تدريب شبكة **وصف الصور** التي تنتج وصفًا نصيًا لصورة، يمكننا إدخال صورة، وتمريرها عبر شبكة CNN للحصول على حالتها المخفية، ثم استخدام سلسلة متكررة لتوليد الوصف كلمة بكلمة. +* **متعدد إلى واحد** يتوافق مع تصميمات RNN التي وصفناها في الوحدة السابقة، مثل تصنيف النصوص. +* **متعدد إلى متعدد**، أو **تسلسل إلى تسلسل** يتوافق مع مهام مثل **الترجمة الآلية**، حيث تقوم أول سلسلة RNN بجمع كل المعلومات من تسلسل الإدخال إلى الحالة المخفية، وتقوم سلسلة RNN أخرى بفك هذه الحالة إلى تسلسل المخرجات. + +في هذه الوحدة، سنركز على نماذج توليدية بسيطة تساعدنا على توليد النصوص. وللتبسيط، سنستخدم تقسيم النصوص على مستوى الحروف. + +سندرب هذه الشبكة RNN لتوليد النصوص خطوة بخطوة. في كل خطوة، سنأخذ تسلسلًا من الحروف بطول `nchars`، ونطلب من الشبكة توليد الحرف التالي لكل حرف إدخال: + +![صورة توضح مثالًا لتوليد كلمة "HELLO" باستخدام RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ar.png) + +عند توليد النصوص (أثناء الاستدلال)، نبدأ ببعض **المحفزات**، التي يتم تمريرها عبر خلايا RNN لتوليد حالتها الوسيطة، ومن ثم يبدأ التوليد من هذه الحالة. نقوم بتوليد حرف واحد في كل مرة، ونمرر الحالة والحرف المولد إلى خلية RNN أخرى لتوليد الحرف التالي، حتى نولد عددًا كافيًا من الحروف. + + + +> الصورة بواسطة المؤلف + +## ✍️ تمارين: الشبكات التوليدية + +واصل التعلم من خلال دفاتر الملاحظات التالية: + +* [الشبكات التوليدية باستخدام PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [الشبكات التوليدية باستخدام TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## التوليد النصي الناعم ودرجة الحرارة + +مخرج كل خلية RNN هو توزيع احتمالي للحروف. إذا اخترنا دائمًا الحرف ذو الاحتمالية الأعلى كالحرف التالي في النص المولد، فقد يصبح النص "متكررًا" بين نفس تسلسلات الحروف مرارًا وتكرارًا، كما في هذا المثال: + +``` +today of the second the company and a second the company ... +``` + +ومع ذلك، إذا نظرنا إلى التوزيع الاحتمالي للحرف التالي، فقد يكون الفرق بين أعلى الاحتمالات ليس كبيرًا، على سبيل المثال، قد يكون لحرف احتمال 0.2، وحرف آخر 0.19، وهكذا. على سبيل المثال، عند البحث عن الحرف التالي في التسلسل '*play*'، يمكن أن يكون الحرف التالي بنفس الاحتمالية إما مسافة أو **e** (كما في كلمة *player*). + +هذا يقودنا إلى استنتاج أنه ليس من "المنصف" دائمًا اختيار الحرف ذو الاحتمالية الأعلى، لأن اختيار الحرف الثاني الأعلى قد يؤدي أيضًا إلى نصوص ذات معنى. من الأفضل **أخذ عينات** من الحروف بناءً على التوزيع الاحتمالي الذي تنتجه الشبكة. يمكننا أيضًا استخدام معلمة، **درجة الحرارة**، لتسطيح التوزيع الاحتمالي إذا أردنا إضافة المزيد من العشوائية، أو جعله أكثر انحدارًا إذا أردنا الالتزام أكثر بالحروف ذات الاحتمالية الأعلى. + +استكشف كيف يتم تنفيذ هذا التوليد النصي الناعم في دفاتر الملاحظات المرتبطة أعلاه. + +## الخلاصة + +بينما قد يكون توليد النصوص مفيدًا بحد ذاته، فإن الفوائد الرئيسية تأتي من القدرة على توليد النصوص باستخدام RNNs من بعض المتجهات المميزة الأولية. على سبيل المثال، يتم استخدام توليد النصوص كجزء من الترجمة الآلية (تسلسل إلى تسلسل، في هذه الحالة يتم استخدام متجه الحالة من *المشفّر* لتوليد أو *فك تشفير* الرسالة المترجمة)، أو توليد وصف نصي لصورة (في هذه الحالة يأتي المتجه المميز من مستخرج CNN). + +## 🚀 تحدي + +خذ بعض الدروس على Microsoft Learn حول هذا الموضوع: + +* توليد النصوص باستخدام [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## المراجعة والدراسة الذاتية + +إليك بعض المقالات لتوسيع معرفتك: + +* طرق مختلفة لتوليد النصوص باستخدام سلسلة ماركوف، LSTM وGPT-2: [منشور مدونة](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* مثال على توليد النصوص في [توثيق Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [التكليف](lab/README.md) + +لقد رأينا كيفية توليد النصوص حرفًا بحرف. في المختبر، ستستكشف توليد النصوص على مستوى الكلمات. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ar/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..eda433cd --- /dev/null +++ b/translations/ar/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# إنشاء نص على مستوى الكلمات باستخدام الشبكات العصبية المتكررة + +مهمة عملية من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +في هذه المهمة العملية، تحتاج إلى اختيار أي كتاب واستخدامه كبيانات لتدريب مولد نصوص على مستوى الكلمات. + +## مجموعة البيانات + +يمكنك استخدام أي كتاب ترغب فيه. يمكنك العثور على العديد من النصوص المجانية في [مشروع غوتنبرغ](https://www.gutenberg.org/)، على سبيل المثال، هنا رابط مباشر إلى [مغامرات أليس في بلاد العجائب](https://www.gutenberg.org/files/11/11-0.txt) للكاتب لويس كارول. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/18-Transformers/README.md b/translations/ar/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..2fe2625f --- /dev/null +++ b/translations/ar/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# آليات الانتباه ونماذج المحولات + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +إحدى أهم المشكلات في مجال معالجة اللغة الطبيعية (NLP) هي **الترجمة الآلية**، وهي مهمة أساسية تعتمد عليها أدوات مثل Google Translate. في هذا القسم، سنركز على الترجمة الآلية، أو بشكل أعم، على أي مهمة *تحويل تسلسل إلى تسلسل* (والتي تُعرف أيضًا بـ **تحويل الجمل**). + +مع الشبكات العصبية المتكررة (RNNs)، يتم تنفيذ تحويل التسلسل إلى تسلسل باستخدام شبكتين متكررتين، حيث تقوم إحدى الشبكات، وهي **المشفّر**، بضغط تسلسل الإدخال إلى حالة مخفية، بينما تقوم الشبكة الأخرى، وهي **المفسّر**، بفك هذه الحالة المخفية إلى نتيجة مترجمة. هناك بعض المشكلات في هذا النهج: + +* الحالة النهائية لشبكة المشفّر تواجه صعوبة في تذكر بداية الجملة، مما يؤدي إلى ضعف جودة النموذج مع الجمل الطويلة. +* جميع الكلمات في التسلسل لها نفس التأثير على النتيجة. ولكن في الواقع، بعض الكلمات في تسلسل الإدخال غالبًا ما يكون لها تأثير أكبر على المخرجات المتتابعة من غيرها. + +**آليات الانتباه** توفر وسيلة لوزن التأثير السياقي لكل متجه إدخال على كل توقع مخرجات للشبكة العصبية المتكررة. يتم تنفيذ ذلك من خلال إنشاء اختصارات بين الحالات الوسيطة لشبكة الإدخال وشبكة الإخراج. بهذه الطريقة، عند توليد رمز الإخراج yt، سنأخذ في الاعتبار جميع الحالات المخفية للإدخال hi، مع معاملات وزن مختلفة αt,i. + +![صورة توضح نموذج مشفّر/مفسّر مع طبقة انتباه إضافية](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ar.png) + +> نموذج المشفّر-المفسّر مع آلية الانتباه الإضافية في [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)، مقتبس من [هذا المقال](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +مصفوفة الانتباه {αi,j} تمثل الدرجة التي تلعبها كلمات الإدخال المحددة في توليد كلمة معينة في تسلسل الإخراج. أدناه مثال على مثل هذه المصفوفة: + +![صورة توضح محاذاة عينة تم العثور عليها بواسطة RNNsearch-50، مأخوذة من Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ar.png) + +> الشكل من [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (الشكل 3) + +آليات الانتباه مسؤولة عن الكثير من التقدم الحالي أو القريب من الحالي في معالجة اللغة الطبيعية. ومع ذلك، فإن إضافة الانتباه تزيد بشكل كبير من عدد معلمات النموذج، مما أدى إلى مشكلات في التوسيع مع الشبكات العصبية المتكررة. أحد القيود الرئيسية لتوسيع الشبكات العصبية المتكررة هو أن الطبيعة المتكررة للنماذج تجعل من الصعب تجميع وتوازي التدريب. في الشبكات العصبية المتكررة، يجب معالجة كل عنصر من عناصر التسلسل بترتيب متسلسل، مما يعني أنه لا يمكن توازيته بسهولة. + +![مشفّر مفسّر مع الانتباه](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> الشكل من [مدونة Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +اعتماد آليات الانتباه مع هذا القيد أدى إلى إنشاء نماذج المحولات الحديثة التي نعرفها ونستخدمها اليوم مثل BERT وOpen-GPT3. + +## نماذج المحولات + +إحدى الأفكار الرئيسية وراء المحولات هي تجنب الطبيعة التسلسلية للشبكات العصبية المتكررة وإنشاء نموذج يمكن توازيته أثناء التدريب. يتم تحقيق ذلك من خلال تنفيذ فكرتين: + +* الترميز الموضعي +* استخدام آلية الانتباه الذاتي لالتقاط الأنماط بدلاً من الشبكات العصبية المتكررة (أو الشبكات العصبية الالتفافية)، ولهذا السبب تم تسمية الورقة التي قدمت المحولات بـ *[Attention is all you need](https://arxiv.org/abs/1706.03762)*. + +### الترميز/التضمين الموضعي + +فكرة الترميز الموضعي هي كالتالي: +1. عند استخدام الشبكات العصبية المتكررة، يتم تمثيل الموضع النسبي للرموز بعدد الخطوات، وبالتالي لا يحتاج إلى تمثيل صريح. +2. ومع ذلك، بمجرد التحول إلى الانتباه، نحتاج إلى معرفة المواضع النسبية للرموز داخل التسلسل. +3. للحصول على الترميز الموضعي، نقوم بإضافة تسلسل من مواضع الرموز إلى تسلسل الرموز (أي تسلسل الأرقام 0، 1، ...). +4. ثم نمزج موضع الرمز مع متجه تضمين الرمز. لتحويل الموضع (عدد صحيح) إلى متجه، يمكننا استخدام طرق مختلفة: + +* تضمين قابل للتدريب، مشابه لتضمين الرموز. هذا هو النهج الذي نعتبره هنا. نطبق طبقات التضمين على كل من الرموز ومواضعها، مما ينتج متجهات تضمين بنفس الأبعاد، ثم نجمعها معًا. +* دالة ترميز موضعي ثابتة، كما هو مقترح في الورقة الأصلية. + + + +> الصورة من المؤلف + +النتيجة التي نحصل عليها مع التضمين الموضعي تضمّن كل من الرمز الأصلي وموضعه داخل التسلسل. + +### الانتباه الذاتي متعدد الرؤوس + +بعد ذلك، نحتاج إلى التقاط بعض الأنماط داخل تسلسلنا. لتحقيق ذلك، تستخدم المحولات آلية **الانتباه الذاتي**، وهي في الأساس انتباه يتم تطبيقه على نفس التسلسل كمدخلات ومخرجات. تطبيق الانتباه الذاتي يسمح لنا بأخذ **السياق** داخل الجملة بعين الاعتبار، ورؤية الكلمات المترابطة. على سبيل المثال، يسمح لنا برؤية الكلمات التي تشير إليها الضمائر مثل *it*، وأيضًا أخذ السياق في الاعتبار: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ar.png) + +> الصورة من [مدونة Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +في المحولات، نستخدم **الانتباه متعدد الرؤوس** لمنح الشبكة القدرة على التقاط عدة أنواع مختلفة من العلاقات، مثل العلاقات طويلة المدى مقابل قصيرة المدى بين الكلمات، أو الإشارات المشتركة مقابل شيء آخر، إلخ. + +[دفتر TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) يحتوي على مزيد من التفاصيل حول تنفيذ طبقات المحولات. + +### الانتباه بين المشفّر والمفسّر + +في المحولات، يتم استخدام الانتباه في مكانين: + +* لالتقاط الأنماط داخل النص المدخل باستخدام الانتباه الذاتي. +* لتنفيذ ترجمة التسلسل - وهو طبقة الانتباه بين المشفّر والمفسّر. + +الانتباه بين المشفّر والمفسّر مشابه جدًا لآلية الانتباه المستخدمة في الشبكات العصبية المتكررة، كما هو موضح في بداية هذا القسم. يوضح هذا الرسم المتحرك دور الانتباه بين المشفّر والمفسّر. + +![رسم متحرك يوضح كيفية إجراء التقييمات في نماذج المحولات.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +نظرًا لأن كل موضع إدخال يتم تعيينه بشكل مستقل إلى كل موضع إخراج، يمكن للمحولات التوازي بشكل أفضل من الشبكات العصبية المتكررة، مما يتيح نماذج لغوية أكبر وأكثر تعبيرًا. يمكن استخدام كل رأس انتباه لتعلم علاقات مختلفة بين الكلمات، مما يحسن مهام معالجة اللغة الطبيعية. + +## BERT + +**BERT** (تمثيلات المشفّر ثنائية الاتجاه من المحولات) هو شبكة محولات متعددة الطبقات كبيرة جدًا تحتوي على 12 طبقة لـ *BERT-base*، و24 طبقة لـ *BERT-large*. يتم تدريب النموذج أولاً على مجموعة كبيرة من بيانات النصوص (ويكيبيديا + الكتب) باستخدام تدريب غير خاضع للإشراف (توقع الكلمات المحجوبة في الجملة). أثناء التدريب الأولي، يكتسب النموذج مستويات كبيرة من فهم اللغة، والتي يمكن استخدامها لاحقًا مع مجموعات بيانات أخرى باستخدام التخصيص. تُعرف هذه العملية بـ **التعلم بالنقل**. + +![صورة من http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ar.png) + +> الصورة [المصدر](http://jalammar.github.io/illustrated-bert/) + +## ✍️ تمارين: المحولات + +واصل التعلم في الدفاتر التالية: + +* [المحولات في PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [المحولات في TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## الخاتمة + +في هذه الدرس، تعلمت عن المحولات وآليات الانتباه، وهي أدوات أساسية في صندوق أدوات معالجة اللغة الطبيعية. هناك العديد من التعديلات على بنية المحولات، بما في ذلك BERT، وDistilBERT، وBigBird، وOpenGPT3، والمزيد التي يمكن تخصيصها. حزمة [HuggingFace](https://github.com/huggingface/) توفر مستودعًا لتدريب العديد من هذه البنى باستخدام كل من PyTorch وTensorFlow. + +## 🚀 التحدي + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## المراجعة والدراسة الذاتية + +* [مقالة](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/) تشرح الورقة الكلاسيكية [Attention is all you need](https://arxiv.org/abs/1706.03762) حول المحولات. +* [سلسلة مقالات](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) حول المحولات، تشرح البنية بالتفصيل. + +## [التكليف](assignment.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/18-Transformers/assignment.md b/translations/ar/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..df22a019 --- /dev/null +++ b/translations/ar/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# المهمة: المحولات + +جرّب العمل مع المحولات باستخدام HuggingFace! قم بتجربة بعض السكربتات التي يقدمونها للعمل مع النماذج المختلفة المتوفرة على موقعهم: https://huggingface.co/docs/transformers/run_scripts. جرّب أحد مجموعات البيانات الخاصة بهم، ثم قم باستيراد مجموعة بيانات خاصة بك من هذا المنهاج أو من Kaggle، وانظر إذا كان بإمكانك توليد نصوص مثيرة للاهتمام. قم بإعداد دفتر ملاحظات يحتوي على نتائجك. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/19-NER/README.md b/translations/ar/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..b5d9f258 --- /dev/null +++ b/translations/ar/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# التعرف على الكيانات المسماة + +حتى الآن، ركزنا بشكل أساسي على مهمة واحدة في معالجة اللغة الطبيعية (NLP) وهي التصنيف. ومع ذلك، هناك مهام أخرى يمكن تحقيقها باستخدام الشبكات العصبية. واحدة من هذه المهام هي **[التعرف على الكيانات المسماة](https://wikipedia.org/wiki/Named-entity_recognition)** (NER)، والتي تتعامل مع التعرف على كيانات محددة داخل النص، مثل الأماكن، أسماء الأشخاص، فترات الزمن، الصيغ الكيميائية، وما إلى ذلك. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## مثال على استخدام NER + +افترض أنك تريد تطوير روبوت محادثة ذكي، مشابه لـ Amazon Alexa أو Google Assistant. الطريقة التي تعمل بها روبوتات المحادثة الذكية هي *فهم* ما يريده المستخدم من خلال تصنيف النص في الجملة المدخلة. نتيجة هذا التصنيف تُعرف بـ **النية**، والتي تحدد ما يجب أن يفعله الروبوت. + +Bot NER + +> الصورة من إعداد المؤلف + +ومع ذلك، قد يقدم المستخدم بعض المعطيات كجزء من العبارة. على سبيل المثال، عند طلب حالة الطقس، قد يحدد الموقع أو التاريخ. يجب أن يكون الروبوت قادرًا على فهم هذه الكيانات وملء الحقول المناسبة قبل تنفيذ الإجراء. وهنا يأتي دور NER. + +> ✅ مثال آخر هو [تحليل الأوراق العلمية الطبية](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). واحدة من الأشياء الرئيسية التي نحتاج إلى البحث عنها هي المصطلحات الطبية المحددة، مثل الأمراض والمواد الطبية. بينما يمكن استخراج عدد قليل من الأمراض باستخدام البحث عن النصوص الفرعية، فإن الكيانات الأكثر تعقيدًا، مثل المركبات الكيميائية وأسماء الأدوية، تحتاج إلى نهج أكثر تعقيدًا. + +## NER كتصنيف للرموز + +نماذج NER هي في الأساس **نماذج تصنيف الرموز**، لأنه لكل رمز مدخل نحتاج إلى تحديد ما إذا كان ينتمي إلى كيان أم لا، وإذا كان كذلك - إلى أي فئة من الكيانات ينتمي. + +لنأخذ عنوان الورقة البحثية التالي كمثال: + +**ارتجاع الصمام ثلاثي الشرفات** و **كربونات الليثيوم** **سمية** في رضيع حديث الولادة. + +الكيانات هنا هي: + +* ارتجاع الصمام ثلاثي الشرفات هو مرض (`DIS`) +* كربونات الليثيوم هي مادة كيميائية (`CHEM`) +* سمية هي أيضًا مرض (`DIS`) + +لاحظ أن كيانًا واحدًا يمكن أن يمتد عبر عدة رموز. وكما في هذه الحالة، نحتاج إلى التمييز بين كيانين متتاليين. لذلك، من الشائع استخدام فئتين لكل كيان - واحدة تحدد الرمز الأول للكيان (غالبًا ما يُستخدم البادئة `B-`، للدلالة على **البداية**)، وأخرى لاستمرار الكيان (`I-`، للدلالة على **الرمز الداخلي**). كما نستخدم `O` كفئة لتمثيل جميع الرموز **الأخرى**. يُطلق على هذا النوع من تصنيف الرموز [تصنيف BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (أو IOB). عند التصنيف، سيبدو العنوان الخاص بنا كما يلي: + +الرمز | التصنيف +------|----- +ثلاثي | B-DIS +الشرفات | I-DIS +ارتجاع | I-DIS +و | O +كربونات | B-CHEM +الليثيوم | I-CHEM +سمية | B-DIS +في | O +رضيع | O +حديث | O +الولادة | O +. | O + +نظرًا لأننا نحتاج إلى بناء تطابق واحد لواحد بين الرموز والفئات، يمكننا تدريب نموذج شبكة عصبية **كثيرة إلى كثيرة** كما هو موضح في الصورة التالية: + +![صورة توضح أنماط الشبكات العصبية المتكررة الشائعة.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ar.jpg) + +> *الصورة من [هذه المقالة](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) بواسطة [أندريه كارباتي](http://karpathy.github.io/). نماذج تصنيف الرموز لـ NER تتوافق مع بنية الشبكة الموجودة في أقصى اليمين في هذه الصورة.* + +## تدريب نماذج NER + +نظرًا لأن نموذج NER هو في الأساس نموذج تصنيف الرموز، يمكننا استخدام الشبكات العصبية المتكررة (RNNs) التي تعرفنا عليها بالفعل لهذه المهمة. في هذه الحالة، سيعيد كل كتلة من الشبكة المتكررة معرف الرمز. يوضح دفتر الملاحظات التالي كيفية تدريب LSTM لتصنيف الرموز. + +## ✍️ دفاتر ملاحظات أمثلة: NER + +تابع التعلم من خلال دفتر الملاحظات التالي: + +* [NER باستخدام TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## الخلاصة + +نموذج NER هو **نموذج تصنيف الرموز**، مما يعني أنه يمكن استخدامه لتنفيذ تصنيف الرموز. هذه مهمة شائعة جدًا في معالجة اللغة الطبيعية، حيث تساعد في التعرف على كيانات محددة داخل النص بما في ذلك الأماكن، الأسماء، التواريخ، والمزيد. + +## 🚀 التحدي + +أكمل المهمة المرتبطة أدناه لتدريب نموذج التعرف على الكيانات المسماة للمصطلحات الطبية، ثم جربه على مجموعة بيانات مختلفة. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## المراجعة والدراسة الذاتية + +اقرأ المقالة [الفعالية غير المعقولة للشبكات العصبية المتكررة](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) واتبع قسم القراءة الإضافية في تلك المقالة لتعميق معرفتك. + +## [المهمة](lab/README.md) + +في المهمة الخاصة بهذه الدرس، ستحتاج إلى تدريب نموذج للتعرف على الكيانات الطبية. يمكنك البدء بتدريب نموذج LSTM كما هو موضح في هذا الدرس، ثم الانتقال إلى استخدام نموذج BERT. اقرأ [التعليمات](lab/README.md) للحصول على جميع التفاصيل. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/19-NER/lab/README.md b/translations/ar/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..38cde9b1 --- /dev/null +++ b/translations/ar/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# التعرف على الكيانات المسماة (NER) + +مهمة معملية من [منهج الذكاء الاصطناعي للمبتدئين](https://github.com/microsoft/ai-for-beginners). + +## المهمة + +في هذا المعمل، تحتاج إلى تدريب نموذج للتعرف على الكيانات المسماة للمصطلحات الطبية. + +## مجموعة البيانات + +لتدريب نموذج NER، نحتاج إلى مجموعة بيانات مُعلمة بشكل صحيح تحتوي على الكيانات الطبية. [مجموعة بيانات BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) تحتوي على كيانات الأمراض والمواد الكيميائية المعلمة من أكثر من 1500 ورقة بحثية. يمكنك تنزيل مجموعة البيانات بعد التسجيل في موقعهم. + +تبدو مجموعة بيانات BC5CDR كما يلي: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +في هذه المجموعة، توجد عناوين الأوراق البحثية والملخصات في السطرين الأولين، ثم تظهر الكيانات الفردية مع مواضع البداية والنهاية داخل كتلة العنوان + الملخص. بالإضافة إلى نوع الكيان، تحصل على معرف الأنطولوجيا لهذا الكيان ضمن أنطولوجيا طبية معينة. + +ستحتاج إلى كتابة بعض الأكواد بلغة Python لتحويل هذه البيانات إلى ترميز BIO. + +## الشبكة + +يمكن إجراء المحاولة الأولى للتعرف على الكيانات المسماة باستخدام شبكة LSTM، كما رأيت في المثال أثناء الدرس. ومع ذلك، في مهام معالجة اللغة الطبيعية، تظهر [بنية المحولات](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model))، وخاصة [نماذج BERT اللغوية](https://en.wikipedia.org/wiki/BERT_(language_model))، نتائج أفضل بكثير. النماذج المدربة مسبقًا من BERT تفهم البنية العامة للغة، ويمكن تحسينها لمهام محددة باستخدام مجموعات بيانات صغيرة نسبيًا وتكاليف حسابية منخفضة. + +نظرًا لأننا نخطط لتطبيق NER في سيناريو طبي، فمن المنطقي استخدام نموذج BERT مدرب على نصوص طبية. أصدرت Microsoft Research نموذجًا مدربًا مسبقًا يسمى [PubMedBERT][PubMedBERT] ([النشر][PubMedBERT-Pub])، والذي تم تحسينه باستخدام نصوص من مستودع [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +المعيار الفعلي لتدريب نماذج المحولات هو مكتبة [Hugging Face Transformers](https://huggingface.co/). تحتوي هذه المكتبة أيضًا على مستودع للنماذج المدربة مسبقًا التي يتم صيانتها من قبل المجتمع، بما في ذلك PubMedBERT. لتحميل واستخدام هذا النموذج، نحتاج فقط إلى بضعة أسطر من الكود: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +هذا يوفر لنا `model` نفسه، المصمم لمهمة تصنيف الرموز باستخدام عدد `classes` من الفئات، بالإضافة إلى كائن `tokenizer` الذي يمكنه تقسيم النص المدخل إلى رموز. ستحتاج إلى تحويل مجموعة البيانات إلى تنسيق BIO، مع أخذ تقسيم الرموز الخاص بـ PubMedBERT في الاعتبار. يمكنك استخدام [هذا الجزء من كود Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) كمصدر إلهام. + +## الخلاصة + +هذه المهمة قريبة جدًا من المهمة الفعلية التي من المحتمل أن تواجهها إذا كنت ترغب في الحصول على رؤى أعمق من كميات كبيرة من النصوص الطبيعية. في حالتنا، يمكننا تطبيق النموذج المدرب على [مجموعة بيانات الأوراق البحثية المتعلقة بـ COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) ورؤية الأفكار التي يمكننا استخراجها. [هذا المنشور](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) و[هذه الورقة البحثية](https://www.mdpi.com/2504-2289/6/1/4) يصفان الأبحاث التي يمكن إجراؤها على هذا المجموع من الأوراق باستخدام NER. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/20-LangModels/README.md b/translations/ar/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..9a6e23c4 --- /dev/null +++ b/translations/ar/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# نماذج اللغة الكبيرة المدربة مسبقًا + +في جميع المهام السابقة، كنا نقوم بتدريب شبكة عصبية لأداء مهمة معينة باستخدام مجموعة بيانات مرفقة بعلامات. مع النماذج الكبيرة القائمة على المحولات، مثل BERT، نستخدم نمذجة اللغة بطريقة ذاتية الإشراف لبناء نموذج لغة، يتم تخصيصه لاحقًا لمهام محددة باستخدام تدريب إضافي خاص بالمجال. ومع ذلك، فقد تم إثبات أن النماذج الكبيرة للغة يمكنها أيضًا حل العديد من المهام دون أي تدريب خاص بالمجال. عائلة النماذج القادرة على القيام بذلك تُسمى **GPT**: المحول المدرب مسبقًا التوليدي. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## توليد النصوص ومقياس الحيرة + +فكرة أن الشبكة العصبية يمكنها أداء مهام عامة دون تدريب إضافي تم تقديمها في ورقة بحثية بعنوان [نماذج اللغة هي متعلمون متعددون غير مشرف عليهم](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). الفكرة الرئيسية هي أن العديد من المهام الأخرى يمكن نمذجتها باستخدام **توليد النصوص**، لأن فهم النص يعني بشكل أساسي القدرة على إنتاجه. وبما أن النموذج يتم تدريبه على كمية هائلة من النصوص التي تشمل المعرفة البشرية، فإنه يصبح أيضًا على دراية بمجموعة واسعة من المواضيع. + +> فهم النصوص والقدرة على إنتاجها يتطلب أيضًا معرفة شيء عن العالم من حولنا. الناس يتعلمون أيضًا إلى حد كبير من خلال القراءة، وشبكة GPT مشابهة في هذا الجانب. + +شبكات توليد النصوص تعمل عن طريق توقع احتمال الكلمة التالية $$P(w_N)$$ ومع ذلك، فإن الاحتمال غير المشروط للكلمة التالية يساوي تكرار هذه الكلمة في مجموعة النصوص. GPT يمكنه إعطاؤنا **الاحتمال الشرطي** للكلمة التالية، بناءً على الكلمات السابقة: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> يمكنك قراءة المزيد عن الاحتمالات في [منهج علم البيانات للمبتدئين](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +جودة نموذج توليد النصوص يمكن تعريفها باستخدام **مقياس الحيرة**. وهو مقياس داخلي يسمح لنا بقياس جودة النموذج دون الحاجة إلى مجموعة بيانات خاصة بالمهمة. يعتمد على مفهوم *احتمال الجملة* - النموذج يعطي احتمالًا عاليًا للجمل التي من المحتمل أن تكون حقيقية (أي أن النموذج ليس **مرتبكًا** بسببها)، واحتمالًا منخفضًا للجمل التي تكون أقل منطقية (مثل *هل يمكنه يفعل ماذا؟*). عندما نعطي النموذج جملًا من مجموعة نصوص حقيقية، نتوقع أن تكون احتمالاتها عالية، ومقياس الحيرة منخفض. رياضيًا، يتم تعريفه كمعكوس الاحتمال الطبيعي لمجموعة الاختبار: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**يمكنك تجربة توليد النصوص باستخدام [محرر النصوص المدعوم بـ GPT من Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. في هذا المحرر، تبدأ بكتابة نصك، وعند الضغط على **[TAB]** ستظهر لك عدة خيارات للإكمال. إذا كانت الخيارات قصيرة جدًا، أو لم تكن راضيًا عنها - اضغط [TAB] مرة أخرى، وستحصل على المزيد من الخيارات، بما في ذلك نصوص أطول. + +## GPT عائلة من النماذج + +GPT ليس نموذجًا واحدًا، بل هو مجموعة من النماذج التي تم تطويرها وتدريبها بواسطة [OpenAI](https://openai.com). + +ضمن نماذج GPT، لدينا: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|نموذج لغة يحتوي على ما يصل إلى 1.5 مليار معلمة. | نموذج لغة يحتوي على ما يصل إلى 175 مليار معلمة | 100 تريليون معلمة ويقبل مدخلات نصوص وصور ويخرج نصوصًا. | + +نماذج GPT-3 و GPT-4 متوفرة [كخدمة معرفية من Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste)، وأيضًا كـ [واجهة برمجية من OpenAI](https://openai.com/api/). + +## هندسة التوجيهات + +نظرًا لأن GPT تم تدريبه على كميات هائلة من البيانات لفهم اللغة والرموز، فإنه يقدم مخرجات استجابة للمدخلات (التوجيهات). التوجيهات هي مدخلات أو استفسارات لـ GPT حيث يقدم المستخدم تعليمات للنماذج حول المهام التي يجب إكمالها. للحصول على النتيجة المطلوبة، تحتاج إلى التوجيه الأكثر فعالية والذي يتضمن اختيار الكلمات الصحيحة، التنسيقات، العبارات أو حتى الرموز. هذا النهج يُعرف بـ [هندسة التوجيهات](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) + +[هذا التوثيق](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) يقدم لك المزيد من المعلومات حول هندسة التوجيهات. + +## ✍️ دفتر ملاحظات مثال: [اللعب مع OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +واصل تعلمك في دفاتر الملاحظات التالية: + +* [توليد النصوص باستخدام OpenAI-GPT و Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## الخاتمة + +النماذج العامة المدربة مسبقًا للغة لا تقوم فقط بنمذجة هيكل اللغة، بل تحتوي أيضًا على كمية هائلة من اللغة الطبيعية. وبالتالي، يمكن استخدامها بشكل فعال لحل بعض مهام معالجة اللغة الطبيعية في إعدادات بدون تدريب إضافي أو تدريب محدود. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/5-NLP/README.md b/translations/ar/lessons/5-NLP/README.md new file mode 100644 index 00000000..54679aa0 --- /dev/null +++ b/translations/ar/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# معالجة اللغة الطبيعية + +![ملخص مهام معالجة اللغة الطبيعية في رسم توضيحي](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ar.png) + +في هذا القسم، سنركز على استخدام الشبكات العصبية لمعالجة المهام المتعلقة بـ **معالجة اللغة الطبيعية (NLP)**. هناك العديد من مشاكل معالجة اللغة الطبيعية التي نرغب في أن تتمكن الحواسيب من حلها: + +* **تصنيف النصوص** هو مشكلة تصنيف نموذجية تتعلق بتسلسلات النصوص. تشمل الأمثلة تصنيف رسائل البريد الإلكتروني كرسائل مزعجة أو غير مزعجة، أو تصنيف المقالات كرياضة، أعمال، سياسة، إلخ. أيضًا، عند تطوير روبوتات المحادثة، غالبًا ما نحتاج إلى فهم ما يريد المستخدم قوله - في هذه الحالة نتعامل مع **تصنيف النوايا**. غالبًا ما يتطلب تصنيف النوايا التعامل مع العديد من الفئات. +* **تحليل المشاعر** هو مشكلة انحدار نموذجية، حيث نحتاج إلى إسناد رقم (مشاعر) يعبر عن مدى إيجابية/سلبية معنى الجملة. نسخة أكثر تقدمًا من تحليل المشاعر هي **تحليل المشاعر القائم على الجوانب** (ABSA)، حيث نُسند المشاعر ليس إلى الجملة بأكملها، بل إلى أجزاء مختلفة منها (الجوانب)، مثل: *في هذا المطعم، أعجبتني المأكولات، لكن الجو كان سيئًا للغاية*. +* **التعرف على الكيانات المسماة** (NER) يشير إلى مشكلة استخراج كيانات معينة من النصوص. على سبيل المثال، قد نحتاج إلى فهم أن الكلمة *غدًا* في العبارة *أحتاج إلى السفر إلى باريس غدًا* تشير إلى تاريخ، و*باريس* هي موقع. +* **استخراج الكلمات المفتاحية** يشبه NER، لكننا نحتاج إلى استخراج الكلمات المهمة لمعنى الجملة تلقائيًا، دون تدريب مسبق على أنواع الكيانات المحددة. +* **تجميع النصوص** يمكن أن يكون مفيدًا عندما نريد تجميع الجمل المتشابهة معًا، على سبيل المثال، الطلبات المتشابهة في محادثات الدعم الفني. +* **الإجابة على الأسئلة** تشير إلى قدرة النموذج على الإجابة على سؤال محدد. يتلقى النموذج مقطع نصي وسؤال كمدخلات، ويحتاج إلى تحديد مكان في النص يحتوي على الإجابة (أو، في بعض الأحيان، توليد نص الإجابة). +* **توليد النصوص** هي قدرة النموذج على توليد نص جديد. يمكن اعتبارها مهمة تصنيف تتنبأ بالحرف/الكلمة التالية بناءً على *موجه نصي*. نماذج توليد النصوص المتقدمة، مثل GPT-3، قادرة على حل مهام معالجة اللغة الطبيعية الأخرى مثل التصنيف باستخدام تقنية تسمى [برمجة الموجهات](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) أو [هندسة الموجهات](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **تلخيص النصوص** هي تقنية نريد فيها أن يقوم الحاسوب بـ "قراءة" نص طويل وتلخيصه في بضع جمل. +* **الترجمة الآلية** يمكن اعتبارها مزيجًا من فهم النص بلغة واحدة، وتوليد النص بلغة أخرى. + +في البداية، تم حل معظم مهام معالجة اللغة الطبيعية باستخدام طرق تقليدية مثل القواعد. على سبيل المثال، في الترجمة الآلية، تم استخدام المحللات لتحويل الجملة الأولية إلى شجرة تركيبية، ثم تم استخراج هياكل دلالية أعلى لتمثيل معنى الجملة، وبناءً على هذا المعنى وقواعد اللغة المستهدفة تم توليد النتيجة. في الوقت الحاضر، يتم حل العديد من مهام معالجة اللغة الطبيعية بشكل أكثر فعالية باستخدام الشبكات العصبية. + +> يتم تنفيذ العديد من طرق معالجة اللغة الطبيعية الكلاسيكية في مكتبة Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). هناك [كتاب NLTK](https://www.nltk.org/book/) رائع متاح عبر الإنترنت يغطي كيفية حل مهام معالجة اللغة الطبيعية المختلفة باستخدام NLTK. + +في دورتنا، سنركز بشكل أساسي على استخدام الشبكات العصبية لمعالجة اللغة الطبيعية، وسنستخدم NLTK عند الحاجة. + +لقد تعلمنا بالفعل كيفية استخدام الشبكات العصبية للتعامل مع البيانات الجدولية والصور. الفرق الرئيسي بين تلك الأنواع من البيانات والنصوص هو أن النصوص عبارة عن تسلسل بطول متغير، بينما يكون حجم المدخلات في حالة الصور معروفًا مسبقًا. بينما يمكن للشبكات الالتفافية استخراج الأنماط من البيانات المدخلة، فإن الأنماط في النصوص أكثر تعقيدًا. على سبيل المثال، يمكن أن تكون النفي مفصولة عن الموضوع بعدد كبير من الكلمات (مثل: *أنا لا أحب البرتقال*، مقابل *أنا لا أحب تلك البرتقالة الكبيرة الملونة اللذيذة*)، ويجب أن يتم تفسير ذلك كأنه نمط واحد. لذلك، لمعالجة اللغة، نحتاج إلى تقديم أنواع جديدة من الشبكات العصبية، مثل *الشبكات المتكررة* و*المحولات*. + +## تثبيت المكتبات + +إذا كنت تستخدم تثبيت Python محلي لتشغيل هذه الدورة، قد تحتاج إلى تثبيت جميع المكتبات المطلوبة لمعالجة اللغة الطبيعية باستخدام الأوامر التالية: + +**لـ PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**لـ TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> يمكنك تجربة معالجة اللغة الطبيعية باستخدام TensorFlow على [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## تحذير حول GPU + +في هذا القسم، في بعض الأمثلة سنقوم بتدريب نماذج كبيرة جدًا. +* **استخدام حاسوب مزود بـ GPU**: يُنصح بتشغيل دفاتر الملاحظات على حاسوب مزود بـ GPU لتقليل أوقات الانتظار عند العمل مع نماذج كبيرة. +* **قيود ذاكرة GPU**: قد يؤدي التشغيل على GPU إلى حالات نفاد ذاكرة GPU، خاصة عند تدريب نماذج كبيرة. +* **استهلاك ذاكرة GPU**: يعتمد مقدار ذاكرة GPU المستهلكة أثناء التدريب على عوامل مختلفة، بما في ذلك حجم الدفعة الصغيرة. +* **تقليل حجم الدفعة الصغيرة**: إذا واجهت مشاكل في ذاكرة GPU، فكر في تقليل حجم الدفعة الصغيرة في الكود الخاص بك كحل محتمل. +* **إصدار ذاكرة GPU في TensorFlow**: قد لا تقوم الإصدارات القديمة من TensorFlow بإصدار ذاكرة GPU بشكل صحيح عند تدريب نماذج متعددة داخل نواة Python واحدة. لإدارة استخدام ذاكرة GPU بشكل فعال، يمكنك تكوين TensorFlow لتخصيص ذاكرة GPU فقط عند الحاجة. +* **إدراج الكود**: لتعيين TensorFlow لتوسيع تخصيص ذاكرة GPU فقط عند الحاجة، قم بإدراج الكود التالي في دفاتر الملاحظات الخاصة بك: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +إذا كنت مهتمًا بتعلم معالجة اللغة الطبيعية من منظور تعلم الآلة الكلاسيكي، قم بزيارة [هذه المجموعة من الدروس](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## في هذا القسم +في هذا القسم سنتعلم عن: + +* [تمثيل النصوص كـ Tensors](13-TextRep/README.md) +* [تمثيلات الكلمات](14-Emdeddings/README.md) +* [نمذجة اللغة](15-LanguageModeling/README.md) +* [الشبكات العصبية المتكررة](16-RNN/README.md) +* [الشبكات التوليدية](17-GenerativeNetworks/README.md) +* [المحولات](18-Transformers/README.md) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ar/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..52ca6661 --- /dev/null +++ b/translations/ar/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# الخوارزميات الجينية + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**الخوارزميات الجينية** (GA) تعتمد على **نهج تطوري** في الذكاء الاصطناعي، حيث يتم استخدام أساليب تطور السكان للحصول على حل أمثل لمشكلة معينة. تم اقتراحها لأول مرة في عام 1975 من قبل [جون هنري هولاند](https://wikipedia.org/wiki/John_Henry_Holland). + +تعتمد الخوارزميات الجينية على الأفكار التالية: + +* يمكن تمثيل الحلول الصالحة للمشكلة على شكل **جينات**. +* يسمح لنا **التزاوج** بدمج حلين معًا للحصول على حل جديد صالح. +* يتم استخدام **الاختيار** لانتقاء الحلول الأكثر كفاءة باستخدام **دالة ملاءمة**. +* يتم إدخال **الطفرات** لزعزعة الاستقرار في عملية التحسين والخروج من الحد الأدنى المحلي. + +إذا كنت ترغب في تنفيذ خوارزمية جينية، ستحتاج إلى ما يلي: + +* إيجاد طريقة لترميز حلول المشكلة باستخدام **جينات** g∈Γ. +* على مجموعة الجينات Γ، يجب تعريف **دالة ملاءمة** fit: Γ→**R**. القيم الأصغر للدالة تشير إلى حلول أفضل. +* تعريف آلية **التزاوج** لدمج جينين معًا للحصول على حل جديد صالح crossover: Γ2→Γ. +* تعريف آلية **الطفرات** mutate: Γ→Γ. + +في العديد من الحالات، تكون آليات التزاوج والطفرات عبارة عن خوارزميات بسيطة لمعالجة الجينات كسلاسل رقمية أو متجهات بت. + +يمكن أن يختلف التنفيذ المحدد للخوارزمية الجينية من حالة إلى أخرى، ولكن الهيكل العام كالتالي: + +1. اختيار مجموعة أولية G⊂Γ. +2. اختيار عشوائي لإحدى العمليات التي سيتم تنفيذها في هذه الخطوة: التزاوج أو الطفرات. +3. **التزاوج**: + * اختيار عشوائي لجينين g1, g2 ∈ G. + * حساب التزاوج g=crossover(g1,g2). + * إذا كان fit(g)1) أو fit(g)2) - يتم استبدال الجين المقابل في المجموعة بـ g. +4. **الطفرات** - اختيار جين عشوائي g∈G واستبداله بـ mutate(g). +5. التكرار من الخطوة 2، حتى نحصل على قيمة صغيرة كافية لـ fit، أو حتى يتم الوصول إلى الحد الأقصى لعدد الخطوات. + +## المهام النموذجية + +تشمل المهام التي يتم حلها عادةً باستخدام الخوارزميات الجينية: + +1. تحسين الجداول الزمنية +2. التعبئة المثلى +3. القطع الأمثل +4. تسريع البحث الشامل + +## ✍️ تمارين: الخوارزميات الجينية + +واصل التعلم من خلال الدفاتر التالية: + +انتقل إلى [هذا الدفتر](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) لرؤية مثالين على استخدام الخوارزميات الجينية: + +1. تقسيم عادل للكنز +2. مشكلة 8 ملكات + +## الخلاصة + +تُستخدم الخوارزميات الجينية لحل العديد من المشكلات، بما في ذلك مشكلات اللوجستيات والبحث. هذا المجال مستوحى من أبحاث دمجت بين علم النفس وعلوم الحاسوب. + +## 🚀 التحدي + +"الخوارزميات الجينية سهلة التنفيذ، لكن سلوكها صعب الفهم." [المصدر](https://wikipedia.org/wiki/Genetic_algorithm) قم ببعض البحث للعثور على تنفيذ لخوارزمية جينية مثل حل لغز سودوكو، واشرح كيف تعمل باستخدام مخطط أو رسم تخطيطي. + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## المراجعة والدراسة الذاتية + +شاهد [هذا الفيديو الرائع](https://www.youtube.com/watch?v=qv6UVOQ0F44) الذي يتحدث عن كيفية تعلم الحاسوب لعب لعبة سوبر ماريو باستخدام الشبكات العصبية المدربة بواسطة الخوارزميات الجينية. سنتعلم المزيد عن تعلم الحاسوب لعب الألعاب مثل هذه [في القسم التالي](../22-DeepRL/README.md). + +## [واجب: معادلة ديوفانتين](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +هدفك هو حل ما يسمى بـ **معادلة ديوفانتين** - وهي معادلة ذات جذور صحيحة. على سبيل المثال، فكر في المعادلة a+2b+3c+4d=30. تحتاج إلى إيجاد الجذور الصحيحة التي تحقق هذه المعادلة. + +*هذا الواجب مستوحى من [هذا المقال](https://habr.com/post/128704/).* + +تلميحات: + +1. يمكنك اعتبار الجذور في النطاق [0;30]. +2. كجين، يمكنك استخدام قائمة قيم الجذور. + +استخدم [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) كنقطة انطلاق. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/6-Other/22-DeepRL/README.md b/translations/ar/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..fafbf34d --- /dev/null +++ b/translations/ar/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# التعلم العميق بالتعزيز + +يُعتبر التعلم بالتعزيز (RL) أحد الأسس الرئيسية في تعلم الآلة، إلى جانب التعلم الموجّه والتعلم غير الموجّه. بينما نعتمد في التعلم الموجّه على مجموعة بيانات ذات نتائج معروفة، فإن التعلم بالتعزيز يعتمد على **التعلم من خلال التجربة**. على سبيل المثال، عندما نرى لعبة فيديو لأول مرة، نبدأ باللعب دون معرفة القواعد، وسرعان ما نتمكن من تحسين مهاراتنا فقط من خلال عملية اللعب وتعديل سلوكنا. + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +لتنفيذ التعلم بالتعزيز، نحتاج إلى: + +* **بيئة** أو **محاكي** يحدد قواعد اللعبة. يجب أن نتمكن من إجراء التجارب في المحاكي ومراقبة النتائج. +* **دالة مكافأة**، تشير إلى مدى نجاح تجربتنا. في حالة تعلم لعب لعبة فيديو، ستكون المكافأة هي النتيجة النهائية التي نحققها. + +بناءً على دالة المكافأة، يجب أن نتمكن من تعديل سلوكنا وتحسين مهاراتنا، بحيث نلعب بشكل أفضل في المرة القادمة. الفرق الرئيسي بين أنواع التعلم الأخرى والتعلم بالتعزيز هو أنه في التعلم بالتعزيز لا نعرف عادةً ما إذا كنا سنفوز أو نخسر حتى ننهي اللعبة. وبالتالي، لا يمكننا تحديد ما إذا كانت حركة معينة جيدة أم لا - نحصل على المكافأة فقط في نهاية اللعبة. + +خلال التعلم بالتعزيز، نقوم عادةً بإجراء العديد من التجارب. في كل تجربة، نحتاج إلى تحقيق توازن بين اتباع الاستراتيجية المثلى التي تعلمناها حتى الآن (**الاستغلال**) واستكشاف حالات جديدة محتملة (**الاستكشاف**). + +## OpenAI Gym + +أداة رائعة للتعلم بالتعزيز هي [OpenAI Gym](https://gym.openai.com/) - وهي **بيئة محاكاة** يمكنها محاكاة العديد من البيئات المختلفة بدءًا من ألعاب Atari إلى الفيزياء وراء توازن الأعمدة. تُعد واحدة من أكثر بيئات المحاكاة شيوعًا لتدريب خوارزميات التعلم بالتعزيز، ويتم صيانتها بواسطة [OpenAI](https://openai.com/). + +> **Note**: يمكنك رؤية جميع البيئات المتاحة من OpenAI Gym [هنا](https://gym.openai.com/envs/#classic_control). + +## توازن العربة والعمود (CartPole) + +ربما رأيتم جميعًا أجهزة التوازن الحديثة مثل *Segway* أو *Gyroscooters*. يمكنها التوازن تلقائيًا عن طريق تعديل عجلاتها استجابةً لإشارة من مقياس التسارع أو الجيروسكوب. في هذا القسم، سنتعلم كيفية حل مشكلة مشابهة - توازن عمود. يشبه ذلك الوضع عندما يحتاج لاعب سيرك إلى موازنة عمود على يده - لكن هذا التوازن يحدث فقط في بُعد واحد. + +نسخة مبسطة من التوازن تُعرف بمشكلة **CartPole**. في عالم CartPole، لدينا شريط أفقي يمكنه التحرك إلى اليسار أو اليمين، والهدف هو موازنة عمود عمودي فوق الشريط أثناء حركته. + +a cartpole + +لإنشاء واستخدام هذه البيئة، نحتاج إلى بضعة أسطر من كود Python: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +يمكن الوصول إلى كل بيئة بنفس الطريقة: +* `env.reset` يبدأ تجربة جديدة. +* `env.step` ينفذ خطوة محاكاة. يتلقى **إجراء** من **مساحة الإجراءات**، ويعيد **ملاحظة** (من مساحة الملاحظات)، بالإضافة إلى مكافأة وعلم انتهاء. + +في المثال أعلاه، نقوم بتنفيذ إجراء عشوائي في كل خطوة، ولهذا السبب تكون حياة التجربة قصيرة جدًا: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +هدف خوارزمية التعلم بالتعزيز هو تدريب نموذج - يُسمى **السياسة** π - والذي سيعيد الإجراء استجابةً لحالة معينة. يمكننا أيضًا اعتبار السياسة احتمالية، أي أنه لكل حالة *s* وإجراء *a* ستعيد السياسة الاحتمال π(*a*|*s*) الذي يجب أن نتخذ فيه الإجراء *a* في الحالة *s*. + +## خوارزمية تدرجات السياسة (Policy Gradients) + +الطريقة الأكثر وضوحًا لنمذجة السياسة هي إنشاء شبكة عصبية تأخذ الحالات كمدخلات وتعيد الإجراءات المقابلة (أو بالأحرى احتمالات جميع الإجراءات). بمعنى ما، ستكون مشابهة لمهمة تصنيف عادية، مع اختلاف رئيسي - لا نعرف مسبقًا أي الإجراءات يجب أن نتخذها في كل خطوة. + +الفكرة هنا هي تقدير تلك الاحتمالات. نبني متجهًا من **المكافآت التراكمية** التي تُظهر إجمالي المكافأة في كل خطوة من التجربة. كما نطبق **خصم المكافآت** بضرب المكافآت السابقة بمعامل γ=0.99، لتقليل دور المكافآت السابقة. ثم نعزز تلك الخطوات على طول مسار التجربة التي تحقق مكافآت أكبر. + +> تعرف على المزيد حول خوارزمية تدرجات السياسة وشاهدها قيد التنفيذ في [دفتر الملاحظات المثال](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## خوارزمية الممثل-الناقد (Actor-Critic) + +نسخة محسنة من نهج تدرجات السياسة تُسمى **الممثل-الناقد**. الفكرة الرئيسية وراءها هي أن الشبكة العصبية ستُدرب لإعادة شيئين: + +* السياسة، التي تحدد الإجراء الذي يجب اتخاذه. يُطلق على هذا الجزء **الممثل**. +* تقدير إجمالي المكافأة التي يمكننا توقع الحصول عليها في هذه الحالة - يُطلق على هذا الجزء **الناقد**. + +بمعنى ما، تشبه هذه البنية [GAN](../../4-ComputerVision/10-GANs/README.md)، حيث لدينا شبكتان يتم تدريبهما ضد بعضهما البعض. في نموذج الممثل-الناقد، يقترح الممثل الإجراء الذي نحتاج إلى اتخاذه، ويحاول الناقد أن يكون ناقدًا ويقدر النتيجة. ومع ذلك، هدفنا هو تدريب تلك الشبكات معًا. + +نظرًا لأننا نعرف كلًا من المكافآت التراكمية الحقيقية والنتائج التي يعيدها الناقد أثناء التجربة، فمن السهل نسبيًا بناء دالة خسارة تقلل الفرق بينهما. سيعطينا ذلك **خسارة الناقد**. يمكننا حساب **خسارة الممثل** باستخدام نفس النهج كما في خوارزمية تدرجات السياسة. + +بعد تشغيل إحدى هذه الخوارزميات، يمكننا توقع أن يتصرف CartPole لدينا كما يلي: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ تمارين: تدرجات السياسة وخوارزمية الممثل-الناقد + +واصل التعلم في دفاتر الملاحظات التالية: + +* [التعلم بالتعزيز باستخدام TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [التعلم بالتعزيز باستخدام PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## مهام أخرى للتعلم بالتعزيز + +يُعد التعلم بالتعزيز اليوم مجالًا سريع النمو في البحث. بعض الأمثلة المثيرة للاهتمام للتعلم بالتعزيز هي: + +* تعليم الكمبيوتر لعب **ألعاب Atari**. الجزء الصعب في هذه المشكلة هو أنه ليس لدينا حالة بسيطة ممثلة كمتجه، بل لقطة شاشة - ونحتاج إلى استخدام CNN لتحويل صورة الشاشة إلى متجه ميزات، أو لاستخراج معلومات المكافأة. ألعاب Atari متوفرة في Gym. +* تعليم الكمبيوتر لعب ألعاب الطاولة، مثل الشطرنج وGo. مؤخرًا، تم تدريب برامج متقدمة مثل **Alpha Zero** من الصفر بواسطة وكيلين يلعبان ضد بعضهما البعض ويتحسنان في كل خطوة. +* في الصناعة، يُستخدم التعلم بالتعزيز لإنشاء أنظمة تحكم من المحاكاة. خدمة مثل [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) مصممة خصيصًا لذلك. + +## الخلاصة + +لقد تعلمنا الآن كيفية تدريب الوكلاء لتحقيق نتائج جيدة فقط من خلال تزويدهم بدالة مكافأة تحدد الحالة المرغوبة للعبة، ومنحهم فرصة لاستكشاف مساحة البحث بذكاء. لقد جربنا بنجاح خوارزميتين، وحققنا نتيجة جيدة في فترة زمنية قصيرة نسبيًا. ومع ذلك، هذه مجرد بداية رحلتك في التعلم بالتعزيز، ويجب أن تفكر بالتأكيد في أخذ دورة منفصلة إذا كنت ترغب في التعمق أكثر. + +## 🚀 تحدي + +استكشف التطبيقات المدرجة في قسم "مهام أخرى للتعلم بالتعزيز" وحاول تنفيذ أحدها! + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## المراجعة والدراسة الذاتية + +تعرف على المزيد حول التعلم بالتعزيز الكلاسيكي في [منهج تعلم الآلة للمبتدئين](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +شاهد [هذا الفيديو الرائع](https://www.youtube.com/watch?v=qv6UVOQ0F44) الذي يتحدث عن كيفية تعلم الكمبيوتر لعب Super Mario. + +## المهمة: [تدريب سيارة جبلية](lab/README.md) + +هدفك خلال هذه المهمة هو تدريب بيئة Gym مختلفة - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ar/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..ba7edb94 --- /dev/null +++ b/translations/ar/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## البيئة + +يتكون بيئة Mountain Car من سيارة محاصرة داخل وادٍ. هدفك هو القفز خارج الوادي والوصول إلى العلم. الإجراءات التي يمكنك القيام بها هي التسارع إلى اليسار، أو إلى اليمين، أو عدم القيام بأي شيء. يمكنك مراقبة موقع السيارة على المحور x، وسرعتها. + +## بدء الدفتر + +ابدأ المختبر بفتح [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## الفائدة المستخلصة + +يجب أن تتعلم خلال هذا المختبر أن تبني خوارزميات التعلم المعزز (RL) لبيئة جديدة غالبًا ما يكون بسيطًا جدًا، لأن OpenAI Gym لديه نفس الواجهة لجميع البيئات، والخوارزميات بشكل عام لا تعتمد بشكل كبير على طبيعة البيئة. يمكنك حتى إعادة هيكلة كود Python بطريقة تسمح بتمرير أي بيئة إلى خوارزمية التعلم المعزز كمعامل. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ar/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..3e06e987 --- /dev/null +++ b/translations/ar/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# الأنظمة متعددة الوكلاء + +إحدى الطرق الممكنة لتحقيق الذكاء هي ما يُعرف بـ **النهج الناشئ** (أو **التآزري**)، والذي يعتمد على حقيقة أن السلوك المشترك للعديد من الوكلاء البسيطين نسبيًا يمكن أن يؤدي إلى سلوك أكثر تعقيدًا (أو ذكاءً) للنظام ككل. نظريًا، يعتمد هذا على مبادئ [الذكاء الجماعي](https://en.wikipedia.org/wiki/Collective_intelligence)، [النشوء](https://en.wikipedia.org/wiki/Global_brain)، و[السيبرنتيكا التطورية](https://en.wikipedia.org/wiki/Global_brain)، التي تنص على أن الأنظمة ذات المستوى الأعلى تكتسب نوعًا من القيمة المضافة عند دمجها بشكل صحيح من أنظمة ذات مستوى أدنى (ما يُعرف بـ *مبدأ الانتقال بين الأنظمة*). + +## [اختبار ما قبل المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +ظهر اتجاه **الأنظمة متعددة الوكلاء** في الذكاء الاصطناعي في التسعينيات كرد فعل على نمو الإنترنت والأنظمة الموزعة. يركز أحد الكتب الدراسية الكلاسيكية في الذكاء الاصطناعي، [الذكاء الاصطناعي: نهج حديث](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach)، على رؤية الذكاء الاصطناعي الكلاسيكي من منظور الأنظمة متعددة الوكلاء. + +المفهوم المركزي في نهج الأنظمة متعددة الوكلاء هو مفهوم **الوكيل** - وهو كيان يعيش في بيئة معينة، يمكنه إدراكها والتفاعل معها. هذا تعريف واسع جدًا، ويمكن أن يكون هناك أنواع وتصنيفات مختلفة من الوكلاء: + +* بناءً على قدرتهم على التفكير: + - الوكلاء **التفاعليون** عادةً ما يكون لديهم سلوك بسيط من نوع الطلب-الاستجابة. + - الوكلاء **التأمليون** يستخدمون نوعًا من التفكير المنطقي و/أو قدرات التخطيط. +* بناءً على مكان تنفيذ الكود الخاص بالوكيل: + - الوكلاء **الثابتون** يعملون على عقدة شبكة مخصصة. + - الوكلاء **المتنقلون** يمكنهم نقل كودهم بين عقد الشبكة. +* بناءً على سلوكهم: + - الوكلاء **السلبيون** ليس لديهم أهداف محددة. يمكنهم الاستجابة للمحفزات الخارجية، لكنهم لن يبادروا بأي أفعال. + - الوكلاء **النشطون** لديهم أهداف يسعون لتحقيقها. + - الوكلاء **الإدراكيون** يشملون التخطيط المعقد والتفكير. + +تُستخدم الأنظمة متعددة الوكلاء حاليًا في عدد من التطبيقات: + +* في الألعاب، العديد من الشخصيات غير القابلة للعب تستخدم نوعًا من الذكاء الاصطناعي، ويمكن اعتبارها وكلاء أذكياء. +* في إنتاج الفيديو، يتم عادةً استخدام المحاكاة متعددة الوكلاء لتصيير مشاهد ثلاثية الأبعاد معقدة تتضمن حشودًا. +* في نمذجة الأنظمة، يُستخدم النهج متعدد الوكلاء لمحاكاة سلوك نموذج معقد. على سبيل المثال، تم استخدام النهج متعدد الوكلاء بنجاح للتنبؤ بانتشار مرض كوفيد-19 على مستوى العالم. ويمكن استخدام نهج مشابه لنمذجة حركة المرور في المدينة ومعرفة كيفية استجابتها لتغييرات قواعد المرور. +* في أنظمة الأتمتة المعقدة، يمكن لكل جهاز أن يعمل كوكيل مستقل، مما يجعل النظام ككل أقل تكتلًا وأكثر قوة. + +لن نقضي الكثير من الوقت في التعمق في الأنظمة متعددة الوكلاء، ولكن سننظر في مثال واحد على **النمذجة متعددة الوكلاء**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) هو بيئة نمذجة متعددة الوكلاء تعتمد على نسخة معدلة من لغة البرمجة [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). تم تطوير هذه اللغة لتعليم مفاهيم البرمجة للأطفال، وتتيح لك التحكم في وكيل يسمى **السلحفاة**، الذي يمكنه التحرك وترك أثر خلفه. يتيح ذلك إنشاء أشكال هندسية معقدة، وهو وسيلة بصرية لفهم سلوك الوكيل. + +في NetLogo، يمكننا إنشاء العديد من السلاحف باستخدام الأمر `create-turtles`. يمكننا بعد ذلك أن نأمر جميع السلاحف بتنفيذ بعض الأفعال (في المثال أدناه - التحرك للأمام بمقدار 10 نقاط): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +بالطبع، ليس من الممتع أن تقوم جميع السلاحف بنفس الشيء، لذا يمكننا `ask` مجموعات من السلاحف، مثل تلك الموجودة بالقرب من نقطة معينة. يمكننا أيضًا إنشاء سلاحف من أنواع مختلفة باستخدام الأمر `breed [cats cat]`. هنا `cat` هو اسم النوع، ويجب علينا تحديد الكلمة بصيغة المفرد والجمع، لأن الأوامر المختلفة تستخدم أشكالًا مختلفة للتوضيح. + +> ✅ لن نتعمق في تعلم لغة NetLogo نفسها - يمكنك زيارة المورد الرائع [قاموس NetLogo التفاعلي للمبتدئين](https://ccl.northwestern.edu/netlogo/bind/) إذا كنت مهتمًا بالتعلم أكثر. + +يمكنك [تحميل](https://ccl.northwestern.edu/netlogo/download.shtml) وتثبيت NetLogo لتجربته. + +### مكتبة النماذج + +من الميزات الرائعة في NetLogo أنها تحتوي على مكتبة من النماذج الجاهزة التي يمكنك تجربتها. انتقل إلى **File → Models Library**، وستجد العديد من فئات النماذج للاختيار من بينها. + +NetLogo Models Library + +> لقطة شاشة لمكتبة النماذج بواسطة ديمتري سوشنيكوف + +يمكنك فتح أحد النماذج، على سبيل المثال **Biology → Flocking**. + +### المبادئ الرئيسية + +بعد فتح النموذج، ستنتقل إلى الشاشة الرئيسية لـ NetLogo. هنا نموذج يصف تعداد الذئاب والأغنام، مع وجود موارد محدودة (العشب). + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ar.png) + +> لقطة شاشة بواسطة ديمتري سوشنيكوف + +في هذه الشاشة، يمكنك رؤية: + +* قسم **الواجهة** الذي يحتوي على: + - الحقل الرئيسي، حيث تعيش جميع الوكلاء + - عناصر التحكم المختلفة: أزرار، منزلقات، إلخ. + - الرسوم البيانية التي يمكنك استخدامها لعرض معلمات المحاكاة +* علامة تبويب **الكود** التي تحتوي على المحرر، حيث يمكنك كتابة برنامج NetLogo + +في معظم الحالات، تحتوي الواجهة على زر **Setup**، الذي يقوم بتهيئة حالة المحاكاة، وزر **Go** الذي يبدأ التنفيذ. يتم التعامل مع هذه الأزرار بواسطة معالجات مقابلة في الكود تبدو كالتالي: + +``` +to go [ +... +] +``` + +يتكون عالم NetLogo من الكائنات التالية: + +* **الوكلاء** (السلاحف) التي يمكنها التحرك عبر الحقل والقيام بشيء ما. يمكنك إصدار الأوامر للوكلاء باستخدام صيغة `ask turtles [...]`، ويتم تنفيذ الكود الموجود بين الأقواس بواسطة جميع الوكلاء في *وضع السلحفاة*. +* **البقع** هي مناطق مربعة من الحقل، يعيش عليها الوكلاء. يمكنك الإشارة إلى جميع الوكلاء على نفس البقعة، أو يمكنك تغيير ألوان البقع وبعض الخصائص الأخرى. يمكنك أيضًا `ask patches` للقيام بشيء ما. +* **المراقب** هو وكيل فريد يتحكم في العالم. يتم تنفيذ جميع معالجات الأزرار في *وضع المراقب*. + +> ✅ جمال بيئة متعددة الوكلاء هو أن الكود الذي يتم تشغيله في وضع السلحفاة أو وضع البقعة يتم تنفيذه في نفس الوقت بواسطة جميع الوكلاء بالتوازي. وبالتالي، من خلال كتابة كود بسيط وبرمجة سلوك الوكيل الفردي، يمكنك إنشاء سلوك معقد للنظام المحاكى ككل. + +### السلوك الجماعي + +كمثال على السلوك متعدد الوكلاء، دعونا نعتبر **[السلوك الجماعي](https://en.wikipedia.org/wiki/Flocking_(behavior))**. السلوك الجماعي هو نمط معقد يشبه إلى حد كبير الطريقة التي تطير بها أسراب الطيور. عند مشاهدتها، قد تعتقد أنها تتبع نوعًا من الخوارزمية الجماعية، أو أنها تمتلك نوعًا من *الذكاء الجماعي*. ومع ذلك، ينشأ هذا السلوك المعقد عندما يلاحظ كل وكيل فردي (في هذه الحالة، *طائر*) بعض الوكلاء الآخرين على مسافة قصيرة منه، ويتبع ثلاث قواعد بسيطة: + +* **المحاذاة** - يتجه نحو الاتجاه المتوسط للوكلاء المجاورين. +* **التماسك** - يحاول التوجه نحو الموقع المتوسط للجيران (*جذب بعيد المدى*). +* **الانفصال** - عند الاقتراب الشديد من الطيور الأخرى، يحاول الابتعاد (*تنافر قصير المدى*). + +يمكنك تشغيل مثال السلوك الجماعي ومراقبة السلوك. يمكنك أيضًا ضبط المعلمات، مثل *درجة الانفصال* أو *نطاق الرؤية*، الذي يحدد مدى رؤية كل طائر. لاحظ أنه إذا قمت بتقليل نطاق الرؤية إلى 0، تصبح جميع الطيور عمياء ويتوقف السلوك الجماعي. وإذا قمت بتقليل الانفصال إلى 0، تتجمع جميع الطيور في خط مستقيم. + +> ✅ انتقل إلى علامة تبويب **الكود** وشاهد أين يتم تنفيذ القواعد الثلاثة للسلوك الجماعي (المحاذاة، التماسك، والانفصال) في الكود. لاحظ كيف نشير فقط إلى الوكلاء الذين هم في نطاق الرؤية. + +### نماذج أخرى يمكن مشاهدتها + +هناك بعض النماذج المثيرة للاهتمام التي يمكنك تجربتها: + +* **Art → Fireworks** يظهر كيف يمكن اعتبار الألعاب النارية سلوكًا جماعيًا لتدفقات النار الفردية. +* **Social Science → Traffic Basic** و **Social Science → Traffic Grid** تعرض نموذج حركة المرور في المدينة في شبكة 1D و2D مع أو بدون إشارات مرور. كل سيارة في المحاكاة تتبع القواعد التالية: + - إذا كانت المساحة أمامها فارغة - تسرع (حتى سرعة قصوى معينة). + - إذا رأت عقبة أمامها - تبطئ (ويمكنك ضبط مدى رؤية السائق). +* **Social Science → Party** يظهر كيف يتجمع الناس معًا خلال حفلة كوكتيل. يمكنك العثور على مجموعة من المعلمات التي تؤدي إلى أسرع زيادة في سعادة المجموعة. + +كما ترى من هذه الأمثلة، يمكن أن تكون المحاكاة متعددة الوكلاء وسيلة مفيدة لفهم سلوك نظام معقد يتكون من أفراد يتبعون نفس المنطق أو منطق مشابه. يمكن أيضًا استخدامها للتحكم في الوكلاء الافتراضيين، مثل [الشخصيات غير القابلة للعب](https://en.wikipedia.org/wiki/NPC) في ألعاب الكمبيوتر، أو الوكلاء في العوالم ثلاثية الأبعاد المتحركة. + +## الوكلاء التأمليون + +الوكلاء الذين تم وصفهم أعلاه بسيطون جدًا، حيث يتفاعلون مع التغيرات في البيئة باستخدام نوع من الخوارزميات. وبالتالي، يُطلق عليهم **الوكلاء التفاعليون**. ومع ذلك، في بعض الأحيان يمكن للوكلاء التفكير والتخطيط لأفعالهم، وفي هذه الحالة يُطلق عليهم **الوكلاء التأمليون**. + +مثال نموذجي سيكون وكيلًا شخصيًا يتلقى تعليمات من إنسان لحجز رحلة سياحية. لنفترض أن هناك العديد من الوكلاء الذين يعيشون على الإنترنت، ويمكنهم مساعدته. يجب عليه بعد ذلك الاتصال بوكلاء آخرين لمعرفة الرحلات المتاحة، وأسعار الفنادق في تواريخ مختلفة، ومحاولة التفاوض للحصول على أفضل سعر. عندما تكتمل خطة الرحلة ويتم تأكيدها من قبل المالك، يمكنه المضي قدمًا في الحجز. + +للقيام بذلك، يحتاج الوكلاء إلى **التواصل**. وللتواصل الناجح، يحتاجون إلى: + +* بعض **اللغات القياسية لتبادل المعرفة**، مثل [تنسيق تبادل المعرفة](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) و[لغة استعلام ومعالجة المعرفة](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). تم تصميم هذه اللغات بناءً على [نظرية أفعال الكلام](https://en.wikipedia.org/wiki/Speech_act). +* يجب أن تتضمن هذه اللغات أيضًا بعض **البروتوكولات للتفاوض**، بناءً على أنواع مختلفة من **المزادات**. +* **أنطولوجيا مشتركة** للاستخدام، بحيث يشيرون إلى نفس المفاهيم مع معرفة دلالاتها. +* طريقة **لاكتشاف** ما يمكن أن يفعله الوكلاء المختلفون، أيضًا بناءً على نوع من الأنطولوجيا. + +الوكلاء التأمليون أكثر تعقيدًا بكثير من التفاعليين، لأنهم لا يتفاعلون فقط مع التغيرات في البيئة، بل يجب عليهم أيضًا أن يكونوا قادرين على *بدء* الأفعال. إحدى البنى المقترحة للوكلاء التأمليين هي ما يُعرف بوكيل الإيمان-الرغبة-النية (BDI): + +* **الإيمان** يشكل مجموعة من المعرفة حول بيئة الوكيل. يمكن تنظيمه كقاعدة معرفية أو مجموعة من القواعد التي يمكن للوكيل تطبيقها على موقف معين في البيئة. +* **الرغبات** تحدد ما يريد الوكيل تحقيقه، أي أهدافه. على سبيل المثال، هدف الوكيل الشخصي أعلاه هو حجز رحلة، وهدف وكيل الفندق هو زيادة الربح. +* **النوايا** هي الأفعال المحددة التي يخطط الوكيل لتنفيذها لتحقيق أهدافه. عادةً ما تغير الأفعال البيئة وتسبب التواصل مع وكلاء آخرين. + +هناك بعض المنصات المتاحة لبناء الأنظمة متعددة الوكلاء، مثل [JADE](https://jade.tilab.com/). [هذه الورقة](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) تحتوي على مراجعة لمنصات الأنظمة متعددة الوكلاء، مع لمحة تاريخية عن الأنظمة متعددة الوكلاء وسيناريوهات استخدامها المختلفة. + +## الخلاصة + +يمكن أن تأخذ الأنظمة متعددة الوكلاء أشكالًا مختلفة جدًا وتُستخدم في العديد من التطبيقات المختلفة. +تركز جميعها على السلوك الأبسط للوكيل الفردي، وتحقق سلوكًا أكثر تعقيدًا للنظام ككل بفضل **التأثير التآزري**. + +## 🚀 التحدي + +خذ هذه الدرس إلى العالم الواقعي وحاول تصور نظام متعدد الوكلاء يمكنه حل مشكلة. ماذا، على سبيل المثال، يحتاج نظام متعدد الوكلاء للقيام به لتحسين مسار حافلة مدرسية؟ كيف يمكن أن يعمل في مخبز؟ + +## [اختبار ما بعد المحاضرة](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## المراجعة والدراسة الذاتية + +راجع استخدام هذا النوع من الأنظمة في الصناعة. اختر مجالًا مثل التصنيع أو صناعة ألعاب الفيديو واكتشف كيف يمكن استخدام الأنظمة متعددة الوكلاء لحل مشاكل فريدة. + +## [واجب NetLogo](assignment.md) + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ar/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..2bb09b9d --- /dev/null +++ b/translations/ar/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# واجب NetLogo + +اختر أحد النماذج من مكتبة NetLogo واستخدمه لمحاكاة موقف من الحياة الواقعية بأكبر قدر ممكن من الدقة. مثال جيد سيكون تعديل نموذج الفيروس الموجود في مجلد Alternative Visualizations لإظهار كيف يمكن استخدامه لنمذجة انتشار فيروس COVID-19. هل يمكنك بناء نموذج يحاكي انتشار فيروس في الحياة الواقعية؟ + +اعرض عملك عن طريق حفظ نسخة وإنشاء فيديو توضيحي يشرح كيف يرتبط النموذج بموقف من العالم الحقيقي. + +**إخلاء المسؤولية**: +تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/7-Ethics/README.md b/translations/ar/lessons/7-Ethics/README.md new file mode 100644 index 00000000..b52ff2ee --- /dev/null +++ b/translations/ar/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# الذكاء الاصطناعي الأخلاقي والمسؤول + +لقد أوشكت على إنهاء هذه الدورة، وآمل أنه بحلول هذه المرحلة أصبحت ترى بوضوح أن الذكاء الاصطناعي يعتمد على عدد من الأساليب الرياضية الرسمية التي تسمح لنا باكتشاف العلاقات في البيانات وتدريب النماذج لتكرار بعض جوانب السلوك البشري. في هذه المرحلة من التاريخ، نعتبر الذكاء الاصطناعي أداة قوية جدًا لاستخراج الأنماط من البيانات وتطبيق تلك الأنماط لحل مشاكل جديدة. + +## [اختبار ما قبل المحاضرة](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +ومع ذلك، في قصص الخيال العلمي غالبًا ما نرى قصصًا حيث يمثل الذكاء الاصطناعي خطرًا على البشرية. عادةً ما تكون هذه القصص متمحورة حول نوع من تمرد الذكاء الاصطناعي، عندما يقرر الذكاء الاصطناعي مواجهة البشر. هذا يشير إلى أن الذكاء الاصطناعي لديه نوع من المشاعر أو يمكنه اتخاذ قرارات غير متوقعة من قبل مطوريه. + +النوع من الذكاء الاصطناعي الذي تعلمنا عنه في هذه الدورة ليس أكثر من عمليات حسابية على مصفوفات كبيرة. إنها أداة قوية جدًا تساعدنا في حل مشاكلنا، وكأي أداة قوية أخرى - يمكن استخدامها لأغراض جيدة أو سيئة. والأهم من ذلك، يمكن أن يتم *إساءة استخدامها*. + +## مبادئ الذكاء الاصطناعي المسؤول + +لتجنب هذا الاستخدام الخاطئ أو المتعمد للذكاء الاصطناعي، تحدد مايكروسوفت [مبادئ الذكاء الاصطناعي المسؤول](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). تستند هذه المبادئ إلى المفاهيم التالية: + +* **الإنصاف** يتعلق بالمشكلة المهمة المتعلقة بـ *تحيز النماذج*، والذي يمكن أن يحدث بسبب استخدام بيانات متحيزة للتدريب. على سبيل المثال، عندما نحاول التنبؤ باحتمالية حصول شخص على وظيفة كمطور برامج، من المحتمل أن يعطي النموذج تفضيلًا أعلى للذكور - فقط لأن مجموعة البيانات التدريبية كانت على الأرجح متحيزة نحو جمهور ذكوري. يجب علينا موازنة بيانات التدريب بعناية والتحقيق في النموذج لتجنب التحيزات، والتأكد من أن النموذج يأخذ في الاعتبار ميزات أكثر صلة. +* **الموثوقية والسلامة**. بطبيعتها، يمكن للنماذج الذكاء الاصطناعي أن ترتكب أخطاء. تعيد الشبكة العصبية احتمالات، ويجب أن نأخذ ذلك في الاعتبار عند اتخاذ القرارات. كل نموذج لديه دقة واسترجاع معين، ويجب أن نفهم ذلك لمنع الأضرار التي قد تسببها النصائح الخاطئة. +* **الخصوصية والأمان** لهما بعض الآثار الخاصة بالذكاء الاصطناعي. على سبيل المثال، عندما نستخدم بعض البيانات لتدريب نموذج، تصبح هذه البيانات بطريقة ما "مدمجة" في النموذج. من جهة، هذا يزيد من الأمان والخصوصية، ومن جهة أخرى - يجب أن نتذكر البيانات التي تم تدريب النموذج عليها. +* **الشمولية** تعني أننا لا نبني الذكاء الاصطناعي ليحل محل البشر، بل لتعزيز البشر وجعل عملنا أكثر إبداعًا. كما أنها مرتبطة بالإنصاف، لأنه عند التعامل مع المجتمعات غير الممثلة بشكل كافٍ، فإن معظم مجموعات البيانات التي نجمعها من المحتمل أن تكون متحيزة، ويجب أن نتأكد من أن تلك المجتمعات مشمولة ويتم التعامل معها بشكل صحيح بواسطة الذكاء الاصطناعي. +* **الشفافية**. يشمل ذلك التأكد من أننا دائمًا واضحون بشأن استخدام الذكاء الاصطناعي. أيضًا، حيثما أمكن، نريد استخدام أنظمة ذكاء اصطناعي تكون *قابلة للتفسير*. +* **المساءلة**. عندما تأتي نماذج الذكاء الاصطناعي ببعض القرارات، ليس من الواضح دائمًا من المسؤول عن تلك القرارات. يجب أن نتأكد من أننا نفهم أين تقع مسؤولية قرارات الذكاء الاصطناعي. في معظم الحالات، نرغب في تضمين البشر في عملية اتخاذ القرارات المهمة، بحيث يتم تحميل الأشخاص الفعليين المسؤولية. + +## أدوات الذكاء الاصطناعي المسؤول + +طورت مايكروسوفت [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) الذي يحتوي على مجموعة من الأدوات: + +* لوحة التحكم لتفسير النماذج (InterpretML) +* لوحة التحكم للإنصاف (FairLearn) +* لوحة تحليل الأخطاء +* لوحة التحكم للذكاء الاصطناعي المسؤول التي تشمل: + + - EconML - أداة لتحليل السببية، تركز على أسئلة "ماذا لو" + - DiCE - أداة لتحليل السيناريوهات البديلة تسمح لك برؤية الميزات التي تحتاج إلى تغييرها للتأثير على قرار النموذج + +لمزيد من المعلومات حول أخلاقيات الذكاء الاصطناعي، يرجى زيارة [هذا الدرس](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) في منهج تعلم الآلة الذي يتضمن مهامًا. + +## المراجعة والدراسة الذاتية + +خذ هذا [مسار التعلم](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) لتتعلم المزيد عن الذكاء الاصطناعي المسؤول. + +## [اختبار ما بعد المحاضرة](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/README.md b/translations/ar/lessons/README.md new file mode 100644 index 00000000..fc77f90b --- /dev/null +++ b/translations/ar/lessons/README.md @@ -0,0 +1,17 @@ + +# نظرة عامة + +![نظرة عامة في رسم توضيحي](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ar.png) + +> رسم توضيحي بواسطة [Tomomi Imura](https://twitter.com/girlie_mac) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/X-Extras/X1-MultiModal/README.md b/translations/ar/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..4b9bfc52 --- /dev/null +++ b/translations/ar/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# الشبكات متعددة الوسائط + +بعد نجاح نماذج المحولات (Transformers) في حل مهام معالجة اللغة الطبيعية (NLP)، تم تطبيق نفس البنى أو مشابهة لها على مهام رؤية الحاسوب. هناك اهتمام متزايد ببناء نماذج تجمع بين قدرات الرؤية واللغة الطبيعية. إحدى هذه المحاولات قامت بها OpenAI، وتُعرف بـ CLIP وDALL.E. + +## التدريب التبايني للصور (CLIP) + +الفكرة الرئيسية لـ CLIP هي القدرة على مقارنة النصوص التوضيحية مع الصور وتحديد مدى تطابق الصورة مع النص. + +![بنية CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ar.png) + +> *الصورة مأخوذة من [هذه المقالة](https://openai.com/blog/clip/)* + +يتم تدريب النموذج على صور مأخوذة من الإنترنت مع تسميات توضيحية لها. لكل دفعة، نأخذ N زوجًا من (صورة، نص)، ونحولها إلى تمثيلات متجهية I وT. + +تتم مطابقة هذه التمثيلات معًا. يتم تعريف دالة الخسارة بحيث تزيد من التشابه الكوني (cosine similarity) بين المتجهات التي تمثل زوجًا واحدًا (مثل I وT)، وتقلل التشابه الكوني بين جميع الأزواج الأخرى. ولهذا السبب يُطلق على هذا النهج اسم **التبايني**. + +نموذج/مكتبة CLIP متاحة من [GitHub الخاص بـ OpenAI](https://github.com/openai/CLIP). تم وصف النهج في [هذه المقالة](https://openai.com/blog/clip/)، وبالتفصيل في [هذه الورقة البحثية](https://arxiv.org/pdf/2103.00020.pdf). + +بمجرد تدريب هذا النموذج، يمكننا إعطاؤه دفعة من الصور ودفعة من النصوص التوضيحية، وسيعيد لنا مصفوفة احتمالات. يمكن استخدام CLIP في عدة مهام: + +**تصنيف الصور** + +لنفترض أننا بحاجة إلى تصنيف الصور بين، على سبيل المثال، القطط، الكلاب والبشر. في هذه الحالة، يمكننا إعطاء النموذج صورة وسلسلة من النصوص التوضيحية: "*صورة لقط*", "*صورة لكلب*", "*صورة لإنسان*". في المتجه الناتج الذي يحتوي على 3 احتمالات، نحتاج فقط إلى اختيار المؤشر الذي يحتوي على أعلى قيمة. + +![CLIP لتصنيف الصور](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ar.png) + +> *الصورة مأخوذة من [هذه المقالة](https://openai.com/blog/clip/)* + +**البحث عن الصور بناءً على النصوص** + +يمكننا أيضًا القيام بالعكس. إذا كان لدينا مجموعة من الصور، يمكننا تمرير هذه المجموعة إلى النموذج مع نص توضيحي - وسيعيد لنا الصورة الأكثر تطابقًا مع النص المعطى. + +## ✍️ مثال: [استخدام CLIP لتصنيف الصور والبحث عن الصور](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +افتح دفتر الملاحظات [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) لرؤية CLIP قيد التنفيذ. + +## توليد الصور باستخدام VQGAN+CLIP + +يمكن أيضًا استخدام CLIP لتوليد الصور من نصوص توضيحية. للقيام بذلك، نحتاج إلى **نموذج توليد** يمكنه إنشاء صور بناءً على مدخلات متجهية. أحد هذه النماذج يُعرف بـ [VQGAN](https://compvis.github.io/taming-transformers/) (شبكة GAN المكممة بالمتجهات). + +الأفكار الرئيسية التي تميز VQGAN عن [GAN التقليدية](../../4-ComputerVision/10-GANs/README.md) هي كالتالي: +* استخدام بنية محول تلقائي لتوليد تسلسل من الأجزاء البصرية الغنية بالسياق التي تشكل الصورة. يتم تعلم هذه الأجزاء البصرية باستخدام [الشبكات العصبية الالتفافية (CNN)](../../4-ComputerVision/07-ConvNets/README.md). +* استخدام مميز فرعي للصورة يكتشف ما إذا كانت أجزاء الصورة "حقيقية" أو "مزيفة" (على عكس النهج "الكل أو لا شيء" في GAN التقليدية). + +تعرف على المزيد حول VQGAN من خلال موقع [Taming Transformers](https://compvis.github.io/taming-transformers/). + +أحد الفروقات المهمة بين VQGAN وGAN التقليدية هو أن الأخيرة يمكنها إنتاج صورة جيدة من أي متجه مدخلات، بينما من المحتمل أن ينتج VQGAN صورة غير متماسكة. لذلك، نحتاج إلى توجيه عملية إنشاء الصورة بشكل أكبر، ويمكن القيام بذلك باستخدام CLIP. + +![بنية VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ar.png) + +لإنشاء صورة تتوافق مع نص توضيحي، نبدأ بمتجه ترميز عشوائي يتم تمريره عبر VQGAN لإنتاج صورة. ثم يتم استخدام CLIP لإنتاج دالة خسارة تُظهر مدى تطابق الصورة مع النص التوضيحي. الهدف بعد ذلك هو تقليل هذه الخسارة باستخدام الانتشار العكسي لتعديل معلمات متجه المدخلات. + +مكتبة رائعة تنفذ VQGAN+CLIP هي [Pixray](http://github.com/pixray/pixray). + +![صورة تم إنتاجها بواسطة Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ar.png) | ![صورة تم إنتاجها بواسطة Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ar.png) | ![صورة تم إنتاجها بواسطة Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ar.png) +----|----|---- +صورة تم إنشاؤها من النص *صورة قريبة بالألوان المائية لمعلم شاب للأدب يحمل كتابًا* | صورة تم إنشاؤها من النص *صورة قريبة بالزيت لمُدرسة شابة لعلوم الحاسوب مع جهاز كمبيوتر* | صورة تم إنشاؤها من النص *صورة قريبة بالزيت لمعلم مسن للرياضيات أمام السبورة* + +> الصور من مجموعة **المعلمون الاصطناعيون** بواسطة [ديمتري سوشنيكوف](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E هو نسخة من GPT-3 تم تدريبها لتوليد الصور من النصوص التوضيحية. تم تدريبه باستخدام 12 مليار معلمة. + +على عكس CLIP، يتلقى DALL-E النص والصورة كتيار واحد من الرموز لكل من الصور والنصوص. وبالتالي، يمكن من خلال النصوص المختلفة توليد صور بناءً على النص. + +### [DALL-E 2](https://openai.com/dall-e-2) +الفرق الرئيسي بين DALL-E 1 وDALL-E 2 هو أن الأخير يولد صورًا وفنونًا أكثر واقعية. + +أمثلة على الصور التي تم إنشاؤها باستخدام DALL-E: +![صورة تم إنتاجها بواسطة Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.ar.png) | ![صورة تم إنتاجها بواسطة Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.ar.png) | ![صورة تم إنتاجها بواسطة Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.ar.png) +----|----|---- +صورة تم إنشاؤها من النص *صورة قريبة بالألوان المائية لمعلم شاب للأدب يحمل كتابًا* | صورة تم إنشاؤها من النص *صورة قريبة بالزيت لمُدرسة شابة لعلوم الحاسوب مع جهاز كمبيوتر* | صورة تم إنشاؤها من النص *صورة قريبة بالزيت لمعلم مسن للرياضيات أمام السبورة* + +## المراجع + +* ورقة VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* ورقة CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/sketchnotes/LICENSE.md b/translations/ar/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..ff0bc896 --- /dev/null +++ b/translations/ar/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,146 @@ + +الإسناد-المشاركة بالمثل 4.0 الدولية + +======================================================================= + +شركة المشاع الإبداعي ("Creative Commons") ليست مكتب محاماة ولا تقدم خدمات قانونية أو استشارات قانونية. توزيع تراخيص المشاع الإبداعي العامة لا ينشئ علاقة محامي-عميل أو أي علاقة أخرى. توفر المشاع الإبداعي تراخيصها والمعلومات ذات الصلة على أساس "كما هي". لا تقدم المشاع الإبداعي أي ضمانات بشأن تراخيصها أو أي مواد مرخصة بموجب شروطها وأحكامها أو أي معلومات ذات صلة. تتنصل المشاع الإبداعي من أي مسؤولية عن الأضرار الناتجة عن استخدامها إلى أقصى حد ممكن. + +استخدام تراخيص المشاع الإبداعي العامة + +تقدم تراخيص المشاع الإبداعي العامة مجموعة قياسية من الشروط والأحكام التي يمكن للمبدعين وأصحاب الحقوق الآخرين استخدامها لمشاركة الأعمال الأصلية والمواد الأخرى الخاضعة لحقوق الطبع والنشر وبعض الحقوق الأخرى المحددة في الترخيص العام أدناه. الاعتبارات التالية هي لأغراض إعلامية فقط، وليست شاملة، ولا تشكل جزءًا من تراخيصنا. + + اعتبارات للمُرخصين: تهدف تراخيصنا العامة إلى الاستخدام من قبل أولئك الذين لديهم صلاحية منح الجمهور الإذن باستخدام المواد بطرق تكون مقيدة بخلاف ذلك بموجب حقوق الطبع والنشر وبعض الحقوق الأخرى. تراخيصنا غير قابلة للإلغاء. يجب على المُرخصين قراءة وفهم شروط وأحكام الترخيص الذي يختارونه قبل تطبيقه. يجب على المُرخصين أيضًا تأمين جميع الحقوق اللازمة قبل تطبيق تراخيصنا حتى يتمكن الجمهور من إعادة استخدام المواد كما هو متوقع. يجب على المُرخصين وضع علامة واضحة على أي مواد غير خاضعة للترخيص. يشمل ذلك المواد الأخرى المرخصة بموجب CC، أو المواد المستخدمة بموجب استثناء أو قيد على حقوق الطبع والنشر. المزيد من الاعتبارات للمُرخصين: + wiki.creativecommons.org/Considerations_for_licensors + + اعتبارات للجمهور: باستخدام أحد تراخيصنا العامة، يمنح المُرخص الجمهور الإذن باستخدام المواد المرخصة بموجب الشروط والأحكام المحددة. إذا لم يكن إذن المُرخص ضروريًا لأي سبب - على سبيل المثال، بسبب أي استثناء أو قيد قابل للتطبيق على حقوق الطبع والنشر - فإن هذا الاستخدام لا يخضع للتنظيم بموجب الترخيص. تمنح تراخيصنا الإذن فقط بموجب حقوق الطبع والنشر وبعض الحقوق الأخرى التي يملك المُرخص صلاحية منحها. قد يظل استخدام المواد المرخصة مقيدًا لأسباب أخرى، بما في ذلك لأن الآخرين لديهم حقوق الطبع والنشر أو حقوق أخرى في المواد. قد يقدم المُرخص طلبات خاصة، مثل طلب أن يتم وضع علامة على جميع التغييرات أو وصفها. على الرغم من أن ذلك ليس مطلوبًا بموجب تراخيصنا، يُشجع على احترام تلك الطلبات حيثما كان ذلك معقولًا. المزيد من الاعتبارات للجمهور: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +ترخيص المشاع الإبداعي الإسناد-المشاركة بالمثل 4.0 الدولية + +من خلال ممارسة الحقوق المرخصة (المحددة أدناه)، فإنك تقبل وتوافق على الالتزام بشروط وأحكام ترخيص المشاع الإبداعي الإسناد-المشاركة بالمثل 4.0 الدولية ("الترخيص العام"). إلى الحد الذي يمكن تفسير هذا الترخيص العام كعقد، يتم منحك الحقوق المرخصة مقابل قبولك لهذه الشروط والأحكام، ويمنحك المُرخص هذه الحقوق مقابل الفوائد التي يتلقاها المُرخص من إتاحة المواد المرخصة بموجب هذه الشروط والأحكام. + +القسم 1 -- التعريفات. + + أ. المواد المعدلة تعني المواد الخاضعة لحقوق الطبع والنشر والحقوق المشابهة التي يتم اشتقاقها من أو تعتمد على المواد المرخصة والتي يتم فيها ترجمة المواد المرخصة أو تعديلها أو ترتيبها أو تحويلها أو تعديلها بطريقة تتطلب إذنًا بموجب حقوق الطبع والنشر والحقوق المشابهة التي يحتفظ بها المُرخص. لأغراض هذا الترخيص العام، حيث تكون المواد المرخصة عملًا موسيقيًا أو أداءً أو تسجيلًا صوتيًا، يتم دائمًا إنتاج المواد المعدلة عندما يتم مزامنة المواد المرخصة مع صورة متحركة. + + ب. ترخيص المُعدل يعني الترخيص الذي تطبقه على حقوق الطبع والنشر والحقوق المشابهة في مساهماتك في المواد المعدلة وفقًا لشروط وأحكام هذا الترخيص العام. + + ج. ترخيص متوافق مع BY-SA يعني الترخيص المدرج في creativecommons.org/compatiblelicenses، والذي تمت الموافقة عليه من قبل المشاع الإبداعي باعتباره مكافئًا جوهريًا لهذا الترخيص العام. + + د. حقوق الطبع والنشر والحقوق المشابهة تعني حقوق الطبع والنشر و/أو الحقوق المشابهة المرتبطة ارتباطًا وثيقًا بحقوق الطبع والنشر بما في ذلك، على سبيل المثال لا الحصر، الأداء، البث، التسجيل الصوتي، وحقوق قواعد البيانات الفريدة، بغض النظر عن كيفية تصنيف الحقوق أو تسميتها. لأغراض هذا الترخيص العام، الحقوق المحددة في القسم 2(ب)(1)-(2) ليست حقوق الطبع والنشر والحقوق المشابهة. + + هـ. التدابير التكنولوجية الفعالة تعني تلك التدابير التي، في غياب السلطة المناسبة، لا يمكن تجاوزها بموجب القوانين التي تفي بالالتزامات بموجب المادة 11 من معاهدة حقوق الطبع والنشر التابعة للويبو المعتمدة في 20 ديسمبر 1996، و/أو الاتفاقيات الدولية المشابهة. + + و. الاستثناءات والقيود تعني الاستخدام العادل، التعامل العادل، و/أو أي استثناء أو قيد آخر على حقوق الطبع والنشر والحقوق المشابهة الذي ينطبق على استخدامك للمواد المرخصة. + + ز. عناصر الترخيص تعني سمات الترخيص المدرجة في اسم ترخيص المشاع الإبداعي العام. عناصر الترخيص لهذا الترخيص العام هي الإسناد والمشاركة بالمثل. + + ح. المواد المرخصة تعني العمل الفني أو الأدبي، قاعدة البيانات، أو المواد الأخرى التي طبق عليها المُرخص هذا الترخيص العام. + + ط. الحقوق المرخصة تعني الحقوق الممنوحة لك بموجب شروط وأحكام هذا الترخيص العام، والتي تقتصر على جميع حقوق الطبع والنشر والحقوق المشابهة التي تنطبق على استخدامك للمواد المرخصة والتي يملك المُرخص صلاحية ترخيصها. + + ي. المُرخص يعني الفرد أو الكيان الذي يمنح الحقوق بموجب هذا الترخيص العام. + + ك. المشاركة تعني توفير المواد للجمهور بأي وسيلة أو عملية تتطلب إذنًا بموجب الحقوق المرخصة، مثل النسخ، العرض العام، الأداء العام، التوزيع، النشر، التواصل، أو الاستيراد، وجعل المواد متاحة للجمهور بما في ذلك بطرق يمكن لأعضاء الجمهور الوصول إليها من مكان وفي وقت يختارونه بشكل فردي. + + ل. حقوق قواعد البيانات الفريدة تعني الحقوق الأخرى غير حقوق الطبع والنشر الناتجة عن التوجيه 96/9/EC للبرلمان الأوروبي ومجلس 11 مارس 1996 بشأن الحماية القانونية لقواعد البيانات، كما تم تعديله و/أو استبداله، وكذلك الحقوق الأخرى المكافئة جوهريًا في أي مكان في العالم. + + م. أنت تعني الفرد أو الكيان الذي يمارس الحقوق المرخصة بموجب هذا الترخيص العام. "لك" لها معنى مطابق. + +القسم 2 -- النطاق. + + أ. منح الترخيص. + + 1. بموجب شروط وأحكام هذا الترخيص العام، يمنحك المُرخص ترخيصًا عالميًا، مجانيًا، غير قابل للترخيص الفرعي، غير حصري، وغير قابل للإلغاء لممارسة الحقوق المرخصة في المواد المرخصة لـ: + + أ. نسخ ومشاركة المواد المرخصة، كليًا أو جزئيًا؛ و + + ب. إنتاج، نسخ، ومشاركة المواد المعدلة. + + 2. الاستثناءات والقيود. لتجنب الشك، حيثما تنطبق الاستثناءات والقيود على استخدامك، لا ينطبق هذا الترخيص العام، ولا تحتاج إلى الامتثال لشروطه وأحكامه. + + 3. المدة. مدة هذا الترخيص العام محددة في القسم 6(أ). + + 4. الوسائط والصيغ؛ التعديلات التقنية المسموح بها. يصرح لك المُرخص بممارسة الحقوق المرخصة في جميع الوسائط والصيغ سواء المعروفة الآن أو التي سيتم إنشاؤها لاحقًا، وإجراء التعديلات التقنية اللازمة للقيام بذلك. يتنازل المُرخص و/أو يوافق على عدم المطالبة بأي حق أو سلطة لمنعك من إجراء التعديلات التقنية اللازمة لممارسة الحقوق المرخصة، بما في ذلك التعديلات التقنية اللازمة لتجاوز التدابير التكنولوجية الفعالة. لأغراض هذا الترخيص العام، فإن مجرد إجراء التعديلات المصرح بها بموجب هذا القسم 2(أ)(4) لا ينتج أبدًا مواد معدلة. + + 5. المستلمون اللاحقون. + + أ. عرض من المُرخص -- المواد المرخصة. يتلقى كل مستلم للمواد المرخصة تلقائيًا عرضًا من المُرخص لممارسة الحقوق المرخصة بموجب شروط وأحكام هذا الترخيص العام. + + ب. عرض إضافي من المُرخص -- المواد المعدلة. يتلقى كل مستلم للمواد المعدلة منك تلقائيًا عرضًا من المُرخص لممارسة الحقوق المرخصة في المواد المعدلة بموجب شروط ترخيص المُعدل الذي تطبقه. + + ج. عدم فرض قيود لاحقة. لا يجوز لك تقديم أو فرض أي شروط أو أحكام إضافية أو مختلفة على، أو تطبيق أي تدابير تكنولوجية فعالة على، المواد المرخصة إذا كان ذلك يقيد ممارسة الحقوق المرخصة من قبل أي مستلم للمواد المرخصة. + + 6. عدم التأييد. لا يشكل أي شيء في هذا الترخيص العام أو يمكن تفسيره على أنه إذن للتأكيد أو الإيحاء بأنك مرتبط بـ، أو أن استخدامك للمواد المرخصة مرتبط بـ، أو مدعوم، أو مُنح حالة رسمية من قبل المُرخص أو الآخرين المعينين لتلقي الإسناد كما هو منصوص عليه في القسم 3(أ)(1)(أ)(i). + + ب. حقوق أخرى. + + 1. الحقوق المعنوية، مثل حق النزاهة، ليست مرخصة بموجب هذا الترخيص العام، ولا حقوق الدعاية، الخصوصية، و/أو حقوق الشخصية المشابهة الأخرى؛ ومع ذلك، إلى أقصى حد ممكن، يتنازل المُرخص و/أو يوافق على عدم المطالبة بأي من هذه الحقوق التي يحتفظ بها المُرخص إلى الحد المحدود الضروري للسماح لك بممارسة الحقوق المرخصة، ولكن ليس أكثر من ذلك. + + 2. حقوق البراءات والعلامات التجارية ليست مرخصة بموجب هذا الترخيص العام. + + 3. إلى أقصى حد ممكن، يتنازل المُرخص عن أي حق في جمع الإتاوات منك لممارسة الحقوق المرخصة، سواء بشكل مباشر أو من خلال جمعية جمع بموجب أي خطة ترخيص طوعية أو قانونية قابلة للتنازل أو إلزامية. في جميع الحالات الأخرى، يحتفظ المُرخص صراحةً بأي حق في جمع تلك الإتاوات. +حقوقك، ثم قاعدة البيانات التي لديك فيها حقوق قاعدة البيانات الفريدة (ولكن ليس محتوياتها الفردية) تعتبر مادة معدلة، + +بما في ذلك لأغراض القسم 3(ب)؛ و +ج. يجب عليك الامتثال للشروط الواردة في القسم 3(أ) إذا قمت بمشاركة جميع أو جزء كبير من محتويات قاعدة البيانات. + +لتجنب الشك، هذا القسم 4 يكمل ولا يحل محل التزاماتك بموجب هذه الرخصة العامة حيث تشمل الحقوق المرخصة حقوق الطبع والنشر والحقوق المشابهة الأخرى. + +القسم 5 - إخلاء المسؤولية عن الضمانات وتحديد المسؤولية. + +أ. ما لم يتم الاتفاق عليه بشكل منفصل من قبل المرخص، وبقدر الإمكان، يقدم المرخص المادة المرخصة كما هي وكما هي متوفرة، ولا يقدم أي تصريحات أو ضمانات من أي نوع بشأن المادة المرخصة، سواء كانت صريحة أو ضمنية أو قانونية أو غير ذلك. يشمل ذلك، على سبيل المثال لا الحصر، ضمانات الملكية، القابلية للتسويق، الملاءمة لغرض معين، عدم الانتهاك، غياب العيوب الكامنة أو الأخرى، الدقة، أو وجود أو غياب الأخطاء، سواء كانت معروفة أو قابلة للاكتشاف. حيث لا يُسمح بإخلاء المسؤولية عن الضمانات بالكامل أو جزئيًا، قد لا ينطبق هذا الإخلاء عليك. + +ب. بقدر الإمكان، لن يكون المرخص مسؤولًا تجاهك تحت أي نظرية قانونية (بما في ذلك، على سبيل المثال لا الحصر، الإهمال) أو غير ذلك عن أي خسائر مباشرة أو خاصة أو غير مباشرة أو عرضية أو تبعية أو عقابية أو نموذجية أو أخرى، أو تكاليف أو نفقات أو أضرار تنشأ عن هذه الرخصة العامة أو استخدام المادة المرخصة، حتى لو تم إبلاغ المرخص بإمكانية حدوث مثل هذه الخسائر أو التكاليف أو النفقات أو الأضرار. حيث لا يُسمح بتحديد المسؤولية بالكامل أو جزئيًا، قد لا ينطبق هذا التحديد عليك. + +ج. يجب تفسير إخلاء المسؤولية عن الضمانات وتحديد المسؤولية المذكور أعلاه بطريقة تقرب، بقدر الإمكان، من إخلاء المسؤولية المطلق والتنازل عن جميع المسؤوليات. + +القسم 6 - المدة والإنهاء. + +أ. تنطبق هذه الرخصة العامة طوال مدة حقوق الطبع والنشر والحقوق المشابهة المرخصة هنا. ومع ذلك، إذا فشلت في الامتثال لهذه الرخصة العامة، فإن حقوقك بموجب هذه الرخصة العامة تنتهي تلقائيًا. + +ب. حيث انتهى حقك في استخدام المادة المرخصة بموجب القسم 6(أ)، فإنه يعاد تفعيله: + +1. تلقائيًا اعتبارًا من تاريخ تصحيح الانتهاك، بشرط أن يتم تصحيحه خلال 30 يومًا من اكتشافك للانتهاك؛ أو +2. بناءً على إعادة التفعيل الصريحة من قبل المرخص. + +لتجنب الشك، لا يؤثر هذا القسم 6(ب) على أي حق قد يكون للمرخص في السعي للحصول على تعويضات عن انتهاكاتك لهذه الرخصة العامة. + +ج. لتجنب الشك، يجوز للمرخص أيضًا تقديم المادة المرخصة بموجب شروط أو شروط منفصلة أو التوقف عن توزيع المادة المرخصة في أي وقت؛ ومع ذلك، فإن القيام بذلك لن ينهي هذه الرخصة العامة. + +د. تبقى الأقسام 1، 5، 6، 7، و8 سارية بعد إنهاء هذه الرخصة العامة. + +القسم 7 - شروط وأحكام أخرى. + +أ. لن يكون المرخص ملزمًا بأي شروط أو أحكام إضافية أو مختلفة يتم التواصل بها من قبلك ما لم يتم الاتفاق عليها صراحة. + +ب. أي ترتيبات أو تفاهمات أو اتفاقيات بشأن المادة المرخصة غير مذكورة هنا تعتبر منفصلة ومستقلة عن شروط وأحكام هذه الرخصة العامة. + +القسم 8 - التفسير. + +أ. لتجنب الشك، لا تقلل هذه الرخصة العامة، ولا يجب تفسيرها على أنها تقلل أو تقيد أو تفرض شروطًا على أي استخدام للمادة المرخصة يمكن القيام به قانونيًا دون إذن بموجب هذه الرخصة العامة. + +ب. بقدر الإمكان، إذا تم اعتبار أي بند من هذه الرخصة العامة غير قابل للتنفيذ، فإنه يتم تعديله تلقائيًا إلى الحد الأدنى اللازم لجعله قابلًا للتنفيذ. إذا لم يكن بالإمكان تعديل البند، فإنه يتم فصله عن هذه الرخصة العامة دون التأثير على قابلية تنفيذ البنود والشروط المتبقية. + +ج. لن يتم التنازل عن أي بند أو شرط من هذه الرخصة العامة ولن يتم الموافقة على أي فشل في الامتثال إلا إذا تم الاتفاق عليه صراحة من قبل المرخص. + +د. لا يشكل أي شيء في هذه الرخصة العامة أو يمكن تفسيره على أنه تحديد أو تنازل عن أي امتيازات وحصانات تنطبق على المرخص أو عليك، بما في ذلك من العمليات القانونية لأي سلطة قضائية أو سلطة. + +======================================================================= + +ليست Creative Commons طرفًا في تراخيصها العامة. ومع ذلك، قد تختار Creative Commons تطبيق أحد تراخيصها العامة على المواد التي تنشرها وفي تلك الحالات ستعتبر "المرخص". يتم تخصيص نصوص تراخيص Creative Commons العامة للمجال العام بموجب CC0 Public Domain Dedication. باستثناء الغرض المحدود للإشارة إلى أن المادة مشتركة بموجب ترخيص عام من Creative Commons أو كما هو مسموح به بموجب سياسات Creative Commons المنشورة على creativecommons.org/policies، لا تسمح Creative Commons باستخدام العلامة التجارية "Creative Commons" أو أي علامة تجارية أو شعار آخر لـ Creative Commons دون موافقتها الخطية المسبقة، بما في ذلك، على سبيل المثال لا الحصر، فيما يتعلق بأي تعديلات غير مصرح بها على أي من تراخيصها العامة أو أي ترتيبات أو تفاهمات أو اتفاقيات أخرى بشأن استخدام المواد المرخصة. لتجنب الشك، لا يشكل هذا الفقرة جزءًا من التراخيص العامة. + +يمكن التواصل مع Creative Commons عبر creativecommons.org. + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/lessons/sketchnotes/README.md b/translations/ar/lessons/sketchnotes/README.md new file mode 100644 index 00000000..71101f2c --- /dev/null +++ b/translations/ar/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +يمكن تنزيل جميع ملاحظات الرسم الخاصة بالمناهج الدراسية من هنا. + +🎨 تم الإنشاء بواسطة: تومومي إيمورا (تويتر: [@girlie_mac](https://twitter.com/girlie_mac)، جيت هب: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**إخلاء المسؤولية**: +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/bn/README.md b/translations/bn/README.md new file mode 100644 index 00000000..24b63b68 --- /dev/null +++ b/translations/bn/README.md @@ -0,0 +1,155 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# শিক্ষার্থীদের জন্য কৃত্রিম বুদ্ধিমত্তা - একটি পাঠ্যক্রম + +|![ স্কেচনোট [(@girlie_mac)](https://twitter.com/girlie_mac) দ্বারা ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| শিক্ষার্থীদের জন্য কৃত্রিম বুদ্ধিমত্তা - _[@girlie_mac](https://twitter.com/girlie_mac) দ্বারা স্কেচনোট_ | + +**কৃত্রিম বুদ্ধিমত্তা** (AI)-এর জগৎ আবিষ্কার করুন আমাদের ১২-সপ্তাহের, ২৪-টি পাঠের পাঠ্যক্রমের মাধ্যমে! এতে রয়েছে ব্যবহারিক পাঠ, কুইজ এবং ল্যাব। এই পাঠ্যক্রমটি শিক্ষানবিসদের জন্য উপযোগী এবং এতে TensorFlow এবং PyTorch-এর মতো টুলস এবং AI-এর নৈতিকতা অন্তর্ভুক্ত। + +## আপনি কী শিখবেন + +**[কোর্সের মানচিত্র](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +এই পাঠ্যক্রমে আপনি শিখবেন: + +* কৃত্রিম বুদ্ধিমত্তার বিভিন্ন পদ্ধতি, যার মধ্যে রয়েছে "পুরনো ভালো" প্রতীকী পদ্ধতি **জ্ঞান উপস্থাপনা** এবং যুক্তি ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))। +* **নিউরাল নেটওয়ার্ক** এবং **ডিপ লার্নিং**, যা আধুনিক AI-এর মূল ভিত্তি। আমরা এই গুরুত্বপূর্ণ বিষয়গুলির ধারণাগুলি ব্যাখ্যা করব দুটি জনপ্রিয় ফ্রেমওয়ার্ক - [TensorFlow](http://Tensorflow.org) এবং [PyTorch](http://pytorch.org)-এ কোড ব্যবহার করে। +* **ইমেজ এবং টেক্সট নিয়ে কাজ করার জন্য নিউরাল আর্কিটেকচার**। আমরা সাম্প্রতিক মডেলগুলি কভার করব, তবে সর্বাধুনিক প্রযুক্তিতে কিছুটা ঘাটতি থাকতে পারে। +* কম জনপ্রিয় AI পদ্ধতি, যেমন **জেনেটিক অ্যালগরিদম** এবং **মাল্টি-এজেন্ট সিস্টেম**। + +আমরা এই পাঠ্যক্রমে যা কভার করব না: + +> [এই কোর্সের জন্য সমস্ত অতিরিক্ত সম্পদ Microsoft Learn সংগ্রহে খুঁজুন](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **ব্যবসায়িক ক্ষেত্রে AI-এর ব্যবহার**। Microsoft Learn-এ [ব্যবসায়িক ব্যবহারকারীদের জন্য AI পরিচিতি](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) শেখার পথ বা [AI বিজনেস স্কুল](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), যা [INSEAD](https://www.insead.edu/)-এর সহযোগিতায় তৈরি করা হয়েছে, গ্রহণ করার কথা বিবেচনা করুন। +* **ক্লাসিক মেশিন লার্নিং**, যা আমাদের [শিক্ষার্থীদের জন্য মেশিন লার্নিং পাঠ্যক্রমে](http://github.com/Microsoft/ML-for-Beginners) ভালোভাবে বর্ণিত। +* **[কগনিটিভ সার্ভিসেস](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** ব্যবহার করে তৈরি করা ব্যবহারিক AI অ্যাপ্লিকেশন। এর জন্য, আমরা Microsoft Learn-এ [ভিশন](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI সার্ভিসের সাথে জেনারেটিভ AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** এবং অন্যান্য মডিউল দিয়ে শুরু করার পরামর্শ দিই। +* নির্দিষ্ট ML **ক্লাউড ফ্রেমওয়ার্ক**, যেমন [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), বা [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)। [Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) এবং [Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) শেখার পথ ব্যবহার করার কথা বিবেচনা করুন। +* **কথোপকথনমূলক AI** এবং **চ্যাট বট**। এর জন্য একটি আলাদা [কথোপকথনমূলক AI সমাধান তৈরি করুন](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) শেখার পথ রয়েছে, এবং আরও বিশদে জানতে [এই ব্লগ পোস্টটি](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) দেখুন। +* **ডিপ লার্নিং-এর গভীর গণিত**। এর জন্য, আমরা Ian Goodfellow, Yoshua Bengio এবং Aaron Courville-এর [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) বইটি সুপারিশ করি, যা অনলাইনে [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) এও পাওয়া যায়। + +_ক্লাউডে AI_ বিষয়গুলির একটি সহজ পরিচিতির জন্য, আপনি [Azure-এ কৃত্রিম বুদ্ধিমত্তার সাথে শুরু করুন](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) শেখার পথ গ্রহণ করতে পারেন। + +# বিষয়বস্তু + +| | পাঠের লিঙ্ক | PyTorch/Keras/TensorFlow | ল্যাব | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [কোর্স সেটআপ](./lessons/0-course-setup/setup.md) | [আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেটআপ করুন](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI-এর পরিচিতি**](./lessons/1-Intro/README.md) | | | +| 01 | [AI-এর পরিচিতি এবং ইতিহাস](./lessons/1-Intro/README.md) | - | - | +| II | **প্রতীকী AI** | +| 02 | [জ্ঞান উপস্থাপনা এবং বিশেষজ্ঞ সিস্টেম](./lessons/2-Symbolic/README.md) | [বিশেষজ্ঞ সিস্টেম](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [অন্তর্নির্মিত জ্ঞান](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[ধারণাগত গ্রাফ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**নিউরাল নেটওয়ার্কের পরিচিতি**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [পারসেপট্রন](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [নোটবুক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [ল্যাব](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [মাল্টি-লেয়ার পারসেপট্রন এবং আমাদের নিজস্ব ফ্রেমওয়ার্ক তৈরি করা](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [নোটবুক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [ল্যাব](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [ফ্রেমওয়ার্কের পরিচিতি (PyTorch/TensorFlow) এবং ওভারফিটিং](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ল্যাব](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**কম্পিউটার ভিশন**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure-এ কম্পিউটার ভিশন অন্বেষণ করুন](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [কম্পিউটার ভিশনের পরিচিতি। OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [নোটবুক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [ল্যাব](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [কনভলিউশনাল নিউরাল নেটওয়ার্ক](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN আর্কিটেকচার](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [ল্যাব](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [প্রি-ট্রেইনড নেটওয়ার্ক এবং ট্রান্সফার লার্নিং](./lessons/4-ComputerVision/08-TransferLearning/README.md) এবং [ট্রেনিং ট্রিকস](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ল্যাব](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [অটোএনকোডার এবং VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [জেনারেটিভ অ্যাডভার্সারিয়াল নেটওয়ার্ক এবং আর্টিস্টিক স্টাইল ট্রান্সফার](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [অবজেক্ট ডিটেকশন](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [ল্যাব](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [সেমান্টিক সেগমেন্টেশন। ইউ-নেট](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [মাইক্রোসফট অ্যাজুরে ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং এক্সপ্লোর করুন](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [টেক্সট রিপ্রেজেন্টেশন। Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [সেমান্টিক ওয়ার্ড এমবেডিং। Word2Vec এবং GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [ল্যাঙ্গুয়েজ মডেলিং। নিজের এমবেডিং ট্রেনিং করুন](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [ল্যাব](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [রিকারেন্ট নিউরাল নেটওয়ার্ক](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [জেনারেটিভ রিকারেন্ট নেটওয়ার্ক](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [ল্যাব](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ট্রান্সফর্মার। BERT।](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [নেমড এন্টিটি রিকগনিশন](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [ল্যাব](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [বড় ল্যাঙ্গুয়েজ মডেল, প্রম্পট প্রোগ্রামিং এবং ফিউ-শট টাস্ক](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **অন্যান্য AI কৌশল** || | +| 21 | [জেনেটিক অ্যালগরিদম](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [নোটবুক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [ডিপ রিইনফোর্সমেন্ট লার্নিং](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [ল্যাব](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [মাল্টি-এজেন্ট সিস্টেম](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI নৈতিকতা** | | | +| 24 | [AI নৈতিকতা এবং দায়িত্বশীল AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Responsible AI Principles](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **অতিরিক্ত বিষয়** | | | +| 25 | [মাল্টি-মডাল নেটওয়ার্ক, CLIP এবং VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [নোটবুক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## প্রতিটি পাঠে অন্তর্ভুক্ত রয়েছে + +* প্রি-রিডিং উপকরণ +* এক্সিকিউটেবল জুপিটার নোটবুক, যা প্রায়ই নির্দিষ্ট ফ্রেমওয়ার্ক (**PyTorch** বা **TensorFlow**) এর জন্য তৈরি। এক্সিকিউটেবল নোটবুকে প্রচুর তাত্ত্বিক উপকরণও রয়েছে, তাই বিষয়টি বুঝতে হলে আপনাকে অন্তত একটি সংস্করণ (PyTorch বা TensorFlow) পড়তে হবে। +* **ল্যাব** কিছু বিষয়ে উপলব্ধ, যা আপনাকে শিখা উপকরণ একটি নির্দিষ্ট সমস্যায় প্রয়োগ করার সুযোগ দেয়। +* কিছু বিভাগে [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) মডিউলের লিঙ্ক রয়েছে যা সম্পর্কিত বিষয়গুলি কভার করে। + +## শুরু করার জন্য + +- আমরা একটি [সেটআপ পাঠ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) তৈরি করেছি যা আপনার ডেভেলপমেন্ট পরিবেশ সেটআপে সাহায্য করবে। - শিক্ষকদের জন্য, আমরা একটি [কারিকুলা সেটআপ পাঠ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) তৈরি করেছি! +- কীভাবে [VSCode বা Codepace-এ কোড চালাবেন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +এই ধাপগুলি অনুসরণ করুন: + +রিপোজিটরি ফর্ক করুন: এই পৃষ্ঠার উপরের ডানদিকে "Fork" বোতামে ক্লিক করুন। + +রিপোজিটরি ক্লোন করুন: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +এই রিপোটি সহজে খুঁজে পেতে পরে স্টার (🌟) দিতে ভুলবেন না। + +## অন্যান্য শিক্ষার্থীদের সাথে পরিচিত হন + +আমাদের [অফিশিয়াল AI Discord সার্ভার](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) এ যোগ দিন, যেখানে আপনি এই কোর্সে অংশগ্রহণকারী অন্যান্য শিক্ষার্থীদের সাথে পরিচিত হতে এবং নেটওয়ার্ক তৈরি করতে পারেন এবং সহায়তা পেতে পারেন। + +যদি আপনার পণ্য সম্পর্কিত মতামত বা প্রশ্ন থাকে, আমাদের [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) এ যান। + +## কুইজ +> **কুইজ সম্পর্কে একটি নোট**: সমস্ত কুইজ `Quiz-app` ফোল্ডারে সংরক্ষিত, যা `etc\quiz-app`-এ অবস্থিত। এগুলো পাঠের মধ্যে থেকে লিঙ্ক করা হয়েছে। কুইজ অ্যাপটি স্থানীয়ভাবে চালানো যেতে পারে বা Azure-এ ডিপ্লয় করা যেতে পারে; `quiz-app` ফোল্ডারের নির্দেশাবলী অনুসরণ করুন। এগুলো ধীরে ধীরে স্থানীয় ভাষায় রূপান্তরিত করা হচ্ছে। +## সাহায্যের প্রয়োজন + +আপনার কি কোনো পরামর্শ আছে বা বানান বা কোডের ভুল খুঁজে পেয়েছেন? একটি ইস্যু উত্থাপন করুন বা একটি পুল রিকোয়েস্ট তৈরি করুন। + +## বিশেষ ধন্যবাদ + +* **✍️ প্রধান লেখক:** [Dmitry Soshnikov](http://soshnikov.com), পিএইচডি +* **🔥 সম্পাদক:** [Jen Looper](https://twitter.com/jenlooper), পিএইচডি +* **🎨 স্কেচনোট ইলাস্ট্রেটর:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ কুইজ নির্মাতা:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 মূল অবদানকারী:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## অন্যান্য কারিকুলাম + +আমাদের টিম অন্যান্য কারিকুলামও তৈরি করে! দেখে নিন: + +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Agentic use](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/SECURITY.md b/translations/bn/SECURITY.md new file mode 100644 index 00000000..4f0d6f86 --- /dev/null +++ b/translations/bn/SECURITY.md @@ -0,0 +1,49 @@ + +## নিরাপত্তা + +মাইক্রোসফট আমাদের সফটওয়্যার পণ্য এবং পরিষেবার নিরাপত্তাকে অত্যন্ত গুরুত্ব দেয়, যার মধ্যে রয়েছে আমাদের GitHub সংগঠনগুলোর মাধ্যমে পরিচালিত সমস্ত সোর্স কোড রিপোজিটরি। এই সংগঠনগুলোর মধ্যে রয়েছে [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), এবং [আমাদের GitHub সংগঠনগুলো](https://opensource.microsoft.com/)। + +আপনি যদি মনে করেন যে আপনি মাইক্রোসফটের মালিকানাধীন কোনো রিপোজিটরিতে একটি নিরাপত্তা দুর্বলতা খুঁজে পেয়েছেন যা [মাইক্রোসফটের নিরাপত্তা দুর্বলতার সংজ্ঞা](https://aka.ms/opensource/security/definition) পূরণ করে, তাহলে নিচে বর্ণিত পদ্ধতি অনুসরণ করে আমাদের কাছে রিপোর্ট করুন। + +## নিরাপত্তা সমস্যা রিপোর্ট করা + +**অনুগ্রহ করে পাবলিক GitHub ইস্যুর মাধ্যমে নিরাপত্তা দুর্বলতা রিপোর্ট করবেন না।** + +পরিবর্তে, মাইক্রোসফট সিকিউরিটি রেসপন্স সেন্টার (MSRC)-এ রিপোর্ট করুন: [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report)। + +যদি আপনি লগ ইন না করে রিপোর্ট জমা দিতে চান, তাহলে [secure@microsoft.com](mailto:secure@microsoft.com) ইমেইল করুন। সম্ভব হলে, আমাদের PGP কী দিয়ে আপনার বার্তা এনক্রিপ্ট করুন; এটি [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey) থেকে ডাউনলোড করুন। + +আপনি ২৪ ঘণ্টার মধ্যে একটি উত্তর পাবেন। যদি কোনো কারণে আপনি উত্তর না পান, তাহলে নিশ্চিত করতে ইমেইলের মাধ্যমে অনুসরণ করুন যে আমরা আপনার মূল বার্তা পেয়েছি। অতিরিক্ত তথ্য [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) এ পাওয়া যাবে। + +অনুগ্রহ করে নিচে তালিকাভুক্ত তথ্য (যতটা সম্ভব প্রদান করতে পারেন) অন্তর্ভুক্ত করুন যাতে আমরা সম্ভাব্য সমস্যার প্রকৃতি এবং পরিসর আরও ভালোভাবে বুঝতে পারি: + + * সমস্যার ধরন (যেমন বাফার ওভারফ্লো, SQL ইনজেকশন, ক্রস-সাইট স্ক্রিপ্টিং ইত্যাদি) + * সমস্যার প্রকাশের সাথে সম্পর্কিত সোর্স ফাইলের পূর্ণ পথ + * প্রভাবিত সোর্স কোডের অবস্থান (ট্যাগ/ব্রাঞ্চ/কমিট বা সরাসরি URL) + * সমস্যাটি পুনরুত্পাদন করতে প্রয়োজনীয় বিশেষ কনফিগারেশন + * সমস্যাটি পুনরুত্পাদন করার ধাপে ধাপে নির্দেশনা + * প্রুফ-অফ-কনসেপ্ট বা এক্সপ্লয়েট কোড (যদি সম্ভব হয়) + * সমস্যার প্রভাব, যার মধ্যে একটি আক্রমণকারী কীভাবে সমস্যাটি কাজে লাগাতে পারে তা অন্তর্ভুক্ত + +এই তথ্য আমাদের রিপোর্টটি দ্রুত যাচাই করতে সাহায্য করবে। + +যদি আপনি বাগ বাউন্টির জন্য রিপোর্ট করছেন, তাহলে আরও সম্পূর্ণ রিপোর্ট একটি উচ্চতর বাউন্টি পুরস্কারে অবদান রাখতে পারে। আমাদের সক্রিয় প্রোগ্রামগুলোর বিষয়ে আরও বিস্তারিত জানতে [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) পৃষ্ঠাটি দেখুন। + +## পছন্দের ভাষা + +আমরা সমস্ত যোগাযোগ ইংরেজিতে করতে পছন্দ করি। + +## নীতি + +মাইক্রোসফট [সমন্বিত দুর্বলতা প্রকাশের নীতি](https://aka.ms/opensource/security/cvd) অনুসরণ করে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/etc/CODE_OF_CONDUCT.md b/translations/bn/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..08ff0874 --- /dev/null +++ b/translations/bn/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# মাইক্রোসফট ওপেন সোর্স আচরণবিধি + +এই প্রকল্পটি [মাইক্রোসফট ওপেন সোর্স আচরণবিধি](https://opensource.microsoft.com/codeofconduct/) গ্রহণ করেছে। + +সম্পদসমূহ: + +- [মাইক্রোসফট ওপেন সোর্স আচরণবিধি](https://opensource.microsoft.com/codeofconduct/) +- [মাইক্রোসফট আচরণবিধি FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- প্রশ্ন বা উদ্বেগের জন্য [opencode@microsoft.com](mailto:opencode@microsoft.com) এ যোগাযোগ করুন + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/etc/CONTRIBUTING.md b/translations/bn/etc/CONTRIBUTING.md new file mode 100644 index 00000000..cdee5dfa --- /dev/null +++ b/translations/bn/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# অবদান রাখুন + +এই প্রকল্পটি অবদান এবং পরামর্শকে স্বাগত জানায়। বেশিরভাগ অবদানের জন্য আপনাকে একটি Contributor License Agreement (CLA)-তে সম্মতি জানাতে হবে, যা নিশ্চিত করে যে আপনার অবদানের অধিকার আপনার আছে এবং আপনি আমাদের তা ব্যবহারের অনুমতি দিচ্ছেন। বিস্তারিত জানতে ভিজিট করুন https://cla.microsoft.com। + +যখন আপনি একটি pull request জমা দেবেন, একটি CLA-bot স্বয়ংক্রিয়ভাবে নির্ধারণ করবে যে আপনাকে CLA প্রদান করতে হবে কি না এবং PR-এ সঠিকভাবে লেবেল বা মন্তব্য যোগ করবে। বট প্রদত্ত নির্দেশাবলী অনুসরণ করুন। আপনাকে এটি কেবল একবারই করতে হবে, আমাদের CLA ব্যবহারকারী সমস্ত রিপোজিটরির জন্য। + +এই প্রকল্পটি [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) গ্রহণ করেছে। আরও তথ্যের জন্য [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) দেখুন অথবা [opencode@microsoft.com](mailto:opencode@microsoft.com)-এ অতিরিক্ত প্রশ্ন বা মন্তব্য পাঠান। + +# অবদানের জন্য খুঁজছি + +আমরা বর্তমানে নিম্নলিখিত বিষয়গুলোতে সক্রিয়ভাবে অবদানের জন্য খুঁজছি: + +- [ ] ডীপ রিইনফোর্সমেন্ট লার্নিং-এর উপর একটি সেকশন লিখুন +- [ ] অবজেক্ট ডিটেকশন সেকশন + নোটবুক উন্নত করুন +- [ ] PyTorch Lightning ([এই সেকশনের](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md) জন্য) +- [ ] Named Entity Recognition-এর উপর একটি সেকশন + নমুনা লিখুন +- [ ] [এই সেকশনের](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) জন্য আমাদের নিজস্ব embeddings প্রশিক্ষণের নমুনা তৈরি করুন + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/etc/Mindmap.md b/translations/bn/etc/Mindmap.md new file mode 100644 index 00000000..e3808df5 --- /dev/null +++ b/translations/bn/etc/Mindmap.md @@ -0,0 +1,85 @@ + +# এআই + +## [এআই পরিচিতি](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - এআই এর সংজ্ঞা + - এআই এর ইতিহাস + - এআই এর পদ্ধতিগুলো + - টপ-ডাউন/প্রতীকী + - বটম-আপ/নিউরাল + - বিবর্তনমূলক + - সাইনার্জেটিক / উদ্ভূত এআই + - [মাইক্রোসফট এআই বিজনেস স্কুল](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [প্রতীকী এআই](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - জ্ঞান উপস্থাপন + - [বিশেষজ্ঞ সিস্টেম](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [অন্তর্নির্মিতি](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - সেমান্টিক ওয়েব + +## [নিউরাল নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [পারসেপট্রন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [মাল্টি-লেয়ারড নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [ফ্রেমওয়ার্কের পরিচিতি](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [ওভারফিটিং](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [কম্পিউটার ভিশন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - এমএস লার্ন-এ + - [এআই ফান্ডামেন্টালস: কম্পিউটার ভিশন অন্বেষণ করুন](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [PyTorch দিয়ে কম্পিউটার ভিশন](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow দিয়ে কম্পিউটার ভিশন](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [কম্পিউটার ভিশনের পরিচিতি। OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [কনভলিউশনাল নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [সিএনএন আর্কিটেকচার](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [ট্রান্সফার লার্নিং](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [ট্রেনিং ট্রিকস](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [অটোএনকোডার এবং ভিএইএস](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [জেনারেটিভ অ্যাডভারসারিয়াল নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [স্টাইল ট্রান্সফার](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [অবজেক্ট ডিটেকশন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [সেগমেন্টেশন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - এমএস লার্ন-এ + - [এআই ফান্ডামেন্টালস: এনএলপি অন্বেষণ করুন](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorch দিয়ে এনএলপি](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow দিয়ে এনএলপি](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [টেক্সট উপস্থাপন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - ব্যাগ অফ ওয়ার্ডস + - টিএফ/আইডিএফ + - [সেমান্টিক এমবেডিংস](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [ল্যাঙ্গুয়েজ মডেলিং](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [রিকারেন্ট নিউরাল নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - এলএসটিএম + - জিআরইউ + - [জেনারেটিভ রিকারেন্ট নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ট্রান্সফরমার এবং BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [নেমড এন্টিটি রিকগনিশন](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [টেক্সট জেনারেশন এবং GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## অন্যান্য কৌশল + - [জেনেটিক অ্যালগরিদম](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [ডিপ রিইনফোর্সমেন্ট লার্নিং](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [মাল্টি-এজেন্ট সিস্টেম](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [এআই নৈতিকতা](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [দায়িত্বশীল এআই সম্পর্কে এমএস লার্ন](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## অতিরিক্ত + - [মাল্টিমোডাল নেটওয়ার্ক](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/etc/SUPPORT.md b/translations/bn/etc/SUPPORT.md new file mode 100644 index 00000000..4f61ca5c --- /dev/null +++ b/translations/bn/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# সহায়তা + +## সমস্যা রিপোর্ট করা এবং সাহায্য পাওয়া কীভাবে + +এই প্রকল্পটি বাগ এবং ফিচার অনুরোধ ট্র্যাক করার জন্য GitHub Issues ব্যবহার করে। নতুন সমস্যা রিপোর্ট করার আগে বিদ্যমান সমস্যাগুলি অনুসন্ধান করুন যাতে ডুপ্লিকেট এড়ানো যায়। নতুন সমস্যার জন্য, আপনার বাগ বা ফিচার অনুরোধটি একটি নতুন Issue হিসেবে জমা দিন। + +এই প্রকল্পটি ব্যবহার করার সময় সাহায্য এবং প্রশ্নের জন্য, Discussion Boards ব্যবহার করুন। + +## মাইক্রোসফট সাপোর্ট নীতি + +এই প্রকল্পের জন্য সহায়তা শুধুমাত্র উপরে তালিকাভুক্ত সম্পদগুলির মধ্যে সীমাবদ্ধ। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/etc/TRANSLATIONS.md b/translations/bn/etc/TRANSLATIONS.md new file mode 100644 index 00000000..42773422 --- /dev/null +++ b/translations/bn/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# পাঠগুলি অনুবাদ করে অবদান রাখুন + +আমরা এই পাঠ্যক্রমের পাঠগুলির জন্য অনুবাদকে স্বাগত জানাই! + +## নির্দেশিকা + +প্রতিটি পাঠ ফোল্ডার এবং পাঠ পরিচিতি ফোল্ডারে অনুবাদিত মার্কডাউন ফাইলগুলি রয়েছে। + +> নোট করুন, দয়া করে কোড নমুনা ফাইলগুলির কোনো কোড অনুবাদ করবেন না; শুধুমাত্র README, অ্যাসাইনমেন্ট এবং কুইজগুলি অনুবাদ করুন। ধন্যবাদ! + +অনুবাদিত ফাইলগুলিকে এই নামকরণ নিয়ম অনুসরণ করতে হবে: + +**README._[language]_.md** + +যেখানে _[language]_ হল ISO 639-1 স্ট্যান্ডার্ড অনুসারে দুটি অক্ষরের ভাষার সংক্ষিপ্ত রূপ (যেমন, স্প্যানিশের জন্য `README.es.md` এবং ডাচের জন্য `README.nl.md`)। + +**assignment._[language]_.md** + +README-এর মতো, দয়া করে অ্যাসাইনমেন্টগুলিও অনুবাদ করুন। + +**কুইজগুলি** + +1. কুইজ-অ্যাপে আপনার অনুবাদ যোগ করুন এই ফোল্ডারে একটি ফাইল যোগ করে: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, সঠিক নামকরণ নিয়ম অনুসরণ করে (en.json, fr.json)। **তবে দয়া করে 'true' বা 'false' শব্দগুলিকে স্থানীয়করণ করবেন না। ধন্যবাদ!** + +2. কুইজ-অ্যাপের App.vue ফাইলে ড্রপডাউনে আপনার ভাষার কোড যোগ করুন। + +3. কুইজ-অ্যাপের [translations index.js ফাইল](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) সম্পাদনা করে আপনার ভাষা যোগ করুন। + +4. অবশেষে, আপনার অনুবাদিত README.md ফাইলগুলির সমস্ত কুইজ লিঙ্ক সম্পাদনা করুন যাতে সেগুলি সরাসরি আপনার অনুবাদিত কুইজের দিকে নির্দেশ করে: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 হবে https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**ধন্যবাদ** + +আমরা আপনার প্রচেষ্টাকে সত্যিই প্রশংসা করি! + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়বদ্ধ নই। \ No newline at end of file diff --git a/translations/bn/etc/quiz-app/README.md b/translations/bn/etc/quiz-app/README.md new file mode 100644 index 00000000..e949f679 --- /dev/null +++ b/translations/bn/etc/quiz-app/README.md @@ -0,0 +1,135 @@ + +# কুইজ + +এই কুইজগুলো AI কারিকুলামের প্রাক-লেকচার এবং পোস্ট-লেকচার কুইজ, যা পাওয়া যাবে https://aka.ms/ai-beginners এ। + +## অনুবাদিত কুইজ সেট যোগ করা + +কুইজ অনুবাদ যোগ করতে `assets/translations` ফোল্ডারে মিলিত কুইজ স্ট্রাকচার তৈরি করুন। মূল কুইজগুলো `assets/translations/en` ফোল্ডারে রয়েছে। কুইজগুলো বিভিন্ন লেসন অনুযায়ী ভাগ করা হয়েছে। সঠিক কুইজ সেকশনের সাথে নম্বর মিলিয়ে নিশ্চিত করুন। এই কারিকুলামে মোট ৪০টি কুইজ রয়েছে, যা ০ থেকে শুরু হয়। + +অনুবাদ সম্পাদনার পর, `assets/translations` ফোল্ডারের `index.js` ফাইলটি সম্পাদনা করুন এবং `en` এর কনভেনশন অনুসারে সমস্ত ফাইল ইমপোর্ট করুন। + +এরপর, এই অ্যাপের `App.vue` ফাইলের ড্রপডাউন সম্পাদনা করুন এবং আপনার ভাষা যোগ করুন। আপনার ভাষার ফোল্ডার নামের সাথে লোকালাইজড সংক্ষিপ্ত রূপটি মিলিয়ে নিশ্চিত করুন। + +শেষে, অনুবাদিত লেসনগুলোর সমস্ত কুইজ লিঙ্ক সম্পাদনা করুন, যদি থাকে, যাতে লোকালাইজেশন একটি কোয়েরি প্যারামিটার হিসেবে অন্তর্ভুক্ত হয়: উদাহরণস্বরূপ `?loc=fr`। + +## প্রজেক্ট সেটআপ + +``` +npm install +``` + +### ডেভেলপমেন্টের জন্য কম্পাইল এবং হট-রিলোড + +``` +npm run serve +``` + +### প্রোডাকশনের জন্য কম্পাইল এবং মিনিফাই + +``` +npm run build +``` + +### ফাইল লিন্ট এবং ফিক্স + +``` +npm run lint +``` + +### কনফিগারেশন কাস্টমাইজ করুন + +[Configuration Reference](https://cli.vuejs.org/config/) দেখুন। + +ক্রেডিট: এই কুইজ অ্যাপের মূল সংস্করণের জন্য ধন্যবাদ: https://github.com/arpan45/simple-quiz-vue + +## Azure-এ ডিপ্লয় করা + +এখানে একটি ধাপে ধাপে গাইড দেওয়া হলো যা আপনাকে শুরু করতে সাহায্য করবে: + +1. একটি GitHub রিপোজিটরি ফর্ক করুন +আপনার স্ট্যাটিক ওয়েব অ্যাপ কোডটি আপনার GitHub রিপোজিটরিতে রাখুন। এই রিপোজিটরিটি ফর্ক করুন। + +2. একটি Azure স্ট্যাটিক ওয়েব অ্যাপ তৈরি করুন +- একটি [Azure অ্যাকাউন্ট](http://azure.microsoft.com) তৈরি করুন +- [Azure পোর্টাল](https://portal.azure.com) এ যান +- “Create a resource” এ ক্লিক করুন এবং “Static Web App” অনুসন্ধান করুন। +- “Create” এ ক্লিক করুন। + +3. স্ট্যাটিক ওয়েব অ্যাপ কনফিগার করুন +- #### বেসিক: + - Subscription: আপনার Azure সাবস্ক্রিপশন নির্বাচন করুন। + - Resource Group: একটি নতুন রিসোর্স গ্রুপ তৈরি করুন অথবা বিদ্যমানটি ব্যবহার করুন। + - Name: আপনার স্ট্যাটিক ওয়েব অ্যাপের জন্য একটি নাম দিন। + - Region: আপনার ব্যবহারকারীদের কাছাকাছি অঞ্চল নির্বাচন করুন। + +- #### ডিপ্লয়মেন্ট ডিটেইলস: + - Source: “GitHub” নির্বাচন করুন। + - GitHub Account: Azure-কে আপনার GitHub অ্যাকাউন্টে অ্যাক্সেস করার অনুমতি দিন। + - Organization: আপনার GitHub অর্গানাইজেশন নির্বাচন করুন। + - Repository: আপনার স্ট্যাটিক ওয়েব অ্যাপের রিপোজিটরি নির্বাচন করুন। + - Branch: যে ব্রাঞ্চ থেকে ডিপ্লয় করতে চান তা নির্বাচন করুন। + +- #### বিল্ড ডিটেইলস: + - Build Presets: আপনার অ্যাপটি যে ফ্রেমওয়ার্ক দিয়ে তৈরি (যেমন React, Angular, Vue ইত্যাদি) তা নির্বাচন করুন। + - App Location: আপনার অ্যাপ কোডের ফোল্ডারটি নির্দিষ্ট করুন (যেমন, / যদি এটি রুটে থাকে)। + - API Location: যদি আপনার API থাকে, তার অবস্থান নির্দিষ্ট করুন (ঐচ্ছিক)। + - Output Location: যেখানে বিল্ড আউটপুট তৈরি হয় সেই ফোল্ডারটি নির্দিষ্ট করুন (যেমন, build বা dist)। + +4. রিভিউ এবং তৈরি করুন +আপনার সেটিংস রিভিউ করুন এবং “Create” এ ক্লিক করুন। Azure প্রয়োজনীয় রিসোর্স সেটআপ করবে এবং আপনার রিপোজিটরিতে একটি GitHub Actions ওয়ার্কফ্লো তৈরি করবে। + +5. GitHub Actions ওয়ার্কফ্লো +Azure স্বয়ংক্রিয়ভাবে আপনার রিপোজিটরিতে একটি GitHub Actions ওয়ার্কফ্লো ফাইল তৈরি করবে (.github/workflows/azure-static-web-apps-.yml)। এই ওয়ার্কফ্লো বিল্ড এবং ডিপ্লয়মেন্ট প্রক্রিয়া পরিচালনা করবে। + +6. ডিপ্লয়মেন্ট মনিটর করুন +আপনার GitHub রিপোজিটরির “Actions” ট্যাবে যান। +আপনার একটি ওয়ার্কফ্লো চলমান দেখতে পাবেন। এই ওয়ার্কফ্লো আপনার স্ট্যাটিক ওয়েব অ্যাপ Azure-এ বিল্ড এবং ডিপ্লয় করবে। +ওয়ার্কফ্লো সম্পন্ন হলে, আপনার অ্যাপটি প্রদত্ত Azure URL-এ লাইভ হবে। + +### উদাহরণ ওয়ার্কফ্লো ফাইল + +GitHub Actions ওয়ার্কফ্লো ফাইলটি দেখতে এরকম হতে পারে: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### অতিরিক্ত রিসোর্স +- [Azure Static Web Apps Documentation](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Documentation](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/0-course-setup/for-teachers.md b/translations/bn/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..85e008bb --- /dev/null +++ b/translations/bn/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# শিক্ষকদের জন্য + +আপনি কি আপনার শ্রেণিকক্ষে এই পাঠক্রমটি ব্যবহার করতে চান? নির্দ্বিধায় ব্যবহার করুন! + +আসলে, আপনি এটি GitHub-এর মাধ্যমেই ব্যবহার করতে পারেন GitHub Classroom ব্যবহার করে। + +এটি করতে, এই রিপোজিটরিটি ফর্ক করুন। আপনাকে প্রতিটি পাঠের জন্য একটি রিপোজিটরি তৈরি করতে হবে, তাই আপনাকে প্রতিটি ফোল্ডার আলাদা রিপোজিটরিতে বের করতে হবে। এভাবে, [GitHub Classroom](https://classroom.github.com/classrooms) প্রতিটি পাঠ আলাদাভাবে গ্রহণ করতে পারবে। + +এই [সম্পূর্ণ নির্দেশাবলী](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) আপনাকে আপনার শ্রেণিকক্ষ সেট আপ করার ধারণা দেবে। + +## রিপোজিটরি বর্তমান অবস্থায় ব্যবহার করা + +আপনি যদি GitHub Classroom ব্যবহার না করে এই রিপোজিটরিটি বর্তমান অবস্থায় ব্যবহার করতে চান, সেটিও সম্ভব। আপনাকে আপনার শিক্ষার্থীদের জানাতে হবে কোন পাঠটি একসাথে কাজ করতে হবে। + +অনলাইনে (Zoom, Teams, বা অন্য মাধ্যমে) আপনি কুইজের জন্য ব্রেকআউট রুম তৈরি করতে পারেন এবং শিক্ষার্থীদের শেখার জন্য প্রস্তুত করতে মেন্টর করতে পারেন। তারপর শিক্ষার্থীদের কুইজে অংশ নিতে আমন্ত্রণ জানান এবং নির্দিষ্ট সময়ে তাদের উত্তর 'ইস্যু' হিসেবে জমা দিতে বলুন। আপনি একই কাজ অ্যাসাইনমেন্টের জন্যও করতে পারেন, যদি আপনি চান শিক্ষার্থীরা প্রকাশ্যে সহযোগিতামূলকভাবে কাজ করুক। + +আপনি যদি আরও ব্যক্তিগত ফরম্যাট পছন্দ করেন, তাহলে আপনার শিক্ষার্থীদের পাঠক্রমটি ফর্ক করতে বলুন, পাঠ অনুযায়ী, তাদের নিজস্ব GitHub রিপোজিটরিতে যা প্রাইভেট থাকবে এবং আপনাকে অ্যাক্সেস দিন। এরপর তারা কুইজ এবং অ্যাসাইনমেন্টগুলো ব্যক্তিগতভাবে সম্পন্ন করতে পারবে এবং আপনার শ্রেণিকক্ষের রিপোজিটরিতে ইস্যুর মাধ্যমে সেগুলো জমা দিতে পারবে। + +অনলাইনে শ্রেণিকক্ষ ফরম্যাটে এটি কাজ করার অনেক উপায় রয়েছে। আমাদের জানান কোনটি আপনার জন্য সবচেয়ে ভালো কাজ করে! + +## আমাদের আপনার মতামত দিন + +আমরা চাই এই পাঠক্রমটি আপনার এবং আপনার শিক্ষার্থীদের জন্য কার্যকর হোক। দয়া করে আলোচনা বোর্ডে আমাদের ফিডব্যাক দিন! + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/0-course-setup/how-to-run.md b/translations/bn/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..86a027ad --- /dev/null +++ b/translations/bn/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# কোড কীভাবে চালাবেন + +এই পাঠ্যক্রমে অনেক কার্যকর উদাহরণ এবং ল্যাব রয়েছে যা আপনি চালাতে চাইবেন। এটি করার জন্য, আপনাকে এই পাঠ্যক্রমের অংশ হিসেবে সরবরাহ করা জুপিটার নোটবুকে পাইথন কোড চালানোর ক্ষমতা থাকতে হবে। কোড চালানোর জন্য আপনার কাছে কয়েকটি বিকল্প রয়েছে: + +## আপনার কম্পিউটারে লোকালভাবে চালান + +আপনার কম্পিউটারে কোড চালানোর জন্য, আপনার কম্পিউটারে পাইথনের একটি সংস্করণ ইনস্টল থাকতে হবে। আমি ব্যক্তিগতভাবে **[miniconda](https://conda.io/en/latest/miniconda.html)** ইনস্টল করার পরামর্শ দিই - এটি একটি হালকা ইনস্টলেশন যা বিভিন্ন পাইথন **ভার্চুয়াল এনভায়রনমেন্ট** এর জন্য `conda` প্যাকেজ ম্যানেজার সমর্থন করে। + +Miniconda ইনস্টল করার পরে, আপনাকে রিপোজিটরি ক্লোন করতে হবে এবং এই কোর্সের জন্য ব্যবহৃত একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করতে হবে: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### পাইথন এক্সটেনশন সহ ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করা + +সম্ভবত এই পাঠ্যক্রমটি ব্যবহার করার সেরা উপায় হল এটি [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) এ [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) সহ খুলে নেওয়া। + +> **Note**: একবার আপনি রিপোজিটরি ক্লোন করে VS Code-এ ডিরেক্টরি খুললে, এটি আপনাকে স্বয়ংক্রিয়ভাবে পাইথন এক্সটেনশন ইনস্টল করার পরামর্শ দেবে। আপনাকে উপরে বর্ণিত Miniconda ইনস্টল করতেও হবে। + +> **Note**: যদি VS Code আপনাকে রিপোজিটরিটি কন্টেইনারে পুনরায় খুলতে বলে, তবে আপনাকে এটি স্থানীয় পাইথন ইনস্টলেশন ব্যবহার করতে অস্বীকার করতে হবে। + +### ব্রাউজারে জুপিটার ব্যবহার করা + +আপনার নিজের কম্পিউটারে ব্রাউজার থেকে জুপিটার পরিবেশও ব্যবহার করতে পারেন। প্রকৃতপক্ষে, ক্লাসিক্যাল জুপিটার এবং জুপিটার হাব স্বয়ংক্রিয় সম্পূর্ণকরণ, কোড হাইলাইটিং ইত্যাদির সাথে বেশ সুবিধাজনক ডেভেলপমেন্ট পরিবেশ প্রদান করে। + +লোকালভাবে জুপিটার শুরু করতে, কোর্সের ডিরেক্টরিতে যান এবং নিম্নলিখিতটি চালান: + +```bash +jupyter notebook +``` +অথবা +```bash +jupyterhub +``` +এরপর আপনি যেকোনো `.ipynb` ফাইলের দিকে যেতে পারেন, সেগুলি খুলতে পারেন এবং কাজ শুরু করতে পারেন। + +### কন্টেইনারে চালানো + +পাইথন ইনস্টলেশনের একটি বিকল্প হতে পারে কোডটি কন্টেইনারে চালানো। যেহেতু আমাদের রিপোজিটরিতে একটি বিশেষ `.devcontainer` ফোল্ডার রয়েছে যা এই রিপোর জন্য কন্টেইনার কীভাবে তৈরি করতে হবে তা নির্দেশ করে, VS Code আপনাকে কোডটি কন্টেইনারে পুনরায় খুলতে অফার করবে। এটি ডকার ইনস্টলেশন প্রয়োজন এবং আরও জটিল হতে পারে, তাই আমরা এটি আরও অভিজ্ঞ ব্যবহারকারীদের জন্য সুপারিশ করি। + +## ক্লাউডে চালানো + +যদি আপনি লোকালভাবে পাইথন ইনস্টল করতে না চান এবং কিছু ক্লাউড রিসোর্সে অ্যাক্সেস থাকে - একটি ভালো বিকল্প হতে পারে কোডটি ক্লাউডে চালানো। এটি করার কয়েকটি উপায় রয়েছে: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** ব্যবহার করে, যা GitHub-এ আপনার জন্য তৈরি একটি ভার্চুয়াল পরিবেশ, যা VS Code ব্রাউজার ইন্টারফেসের মাধ্যমে অ্যাক্সেসযোগ্য। যদি আপনার Codespaces-এ অ্যাক্সেস থাকে, আপনি শুধু রিপোর **Code** বোতামে ক্লিক করুন, একটি কোডস্পেস শুরু করুন এবং দ্রুত চালানো শুরু করুন। +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** ব্যবহার করে। [Binder](https://mybinder.org) হল ক্লাউডে বিনামূল্যে কম্পিউটিং রিসোর্স যা আপনাদের মতো লোকদের জন্য GitHub-এ কিছু কোড পরীক্ষা করার জন্য সরবরাহ করা হয়। ফ্রন্ট পেজে একটি বোতাম রয়েছে যা রিপোজিটরিটি Binder-এ খুলতে দেয় - এটি আপনাকে দ্রুত Binder সাইটে নিয়ে যাবে, যা অন্তর্নিহিত কন্টেইনার তৈরি করবে এবং জুপিটার ওয়েব ইন্টারফেসটি নির্বিঘ্নে শুরু করবে। + +> **Note**: অপব্যবহার রোধ করতে, Binder কিছু ওয়েব রিসোর্সে অ্যাক্সেস ব্লক করেছে। এটি কিছু কোড কাজ করতে বাধা দিতে পারে, যা পাবলিক ইন্টারনেট থেকে মডেল এবং/অথবা ডেটাসেট নিয়ে আসে। আপনাকে কিছু বিকল্প খুঁজে বের করতে হতে পারে। এছাড়াও, Binder দ্বারা সরবরাহিত কম্পিউট রিসোর্সগুলি বেশ মৌলিক, তাই প্রশিক্ষণ ধীর হবে, বিশেষ করে পরবর্তী আরও জটিল পাঠে। + +## GPU সহ ক্লাউডে চালানো + +এই পাঠ্যক্রমের কিছু পরবর্তী পাঠ GPU সমর্থন থেকে অনেক উপকৃত হবে, কারণ অন্যথায় প্রশিক্ষণ অত্যন্ত ধীর হবে। আপনি কয়েকটি বিকল্প অনুসরণ করতে পারেন, বিশেষ করে যদি আপনার কাছে [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) বা আপনার প্রতিষ্ঠানের মাধ্যমে ক্লাউডে অ্যাক্সেস থাকে: + +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) তৈরি করুন এবং জুপিটার এর মাধ্যমে এতে সংযোগ করুন। এরপর আপনি সরাসরি মেশিনে রিপো ক্লোন করতে পারেন এবং শেখা শুরু করতে পারেন। NC-সিরিজ VM-এ GPU সমর্থন রয়েছে। + +> **Note**: কিছু সাবস্ক্রিপশন, যার মধ্যে Azure for Students অন্তর্ভুক্ত, ডিফল্টভাবে GPU সমর্থন প্রদান করে না। আপনাকে টেকনিক্যাল সাপোর্ট রিকোয়েস্টের মাধ্যমে অতিরিক্ত GPU কোরের জন্য অনুরোধ করতে হতে পারে। + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) তৈরি করুন এবং সেখানে নোটবুক ফিচার ব্যবহার করুন। [এই ভিডিও](https://azure-for-academics.github.io/quickstart/azureml-papers/) দেখায় কীভাবে একটি রিপোজিটরি Azure ML নোটবুকে ক্লোন করতে হয় এবং এটি ব্যবহার শুরু করতে হয়। + +আপনি Google Colab-ও ব্যবহার করতে পারেন, যা কিছু বিনামূল্যে GPU সমর্থন সহ আসে, এবং সেখানে জুপিটার নোটবুক আপলোড করে একে একে সেগুলি চালাতে পারেন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/0-course-setup/setup.md b/translations/bn/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..f97af55a --- /dev/null +++ b/translations/bn/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# এই পাঠক্রমের সাথে শুরু করা + +## আপনি কি একজন শিক্ষার্থী? + +নিম্নলিখিত রিসোর্সগুলো দিয়ে শুরু করুন: + +* [স্টুডেন্ট হাব পেজ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) এই পেজে আপনি শুরু করার জন্য রিসোর্স, স্টুডেন্ট প্যাক এবং এমনকি বিনামূল্যে সার্টিফিকেট ভাউচার পাওয়ার উপায় খুঁজে পাবেন। এটি এমন একটি পেজ যা আপনি বুকমার্ক করতে চাইবেন এবং সময় সময় চেক করবেন কারণ আমরা অন্তত মাসে একবার কন্টেন্ট পরিবর্তন করি। +* [মাইক্রোসফট স্টুডেন্ট লার্ন অ্যাম্বাসেডর](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) একটি বৈশ্বিক শিক্ষার্থী অ্যাম্বাসেডর কমিউনিটিতে যোগ দিন, এটি মাইক্রোসফটে প্রবেশের একটি উপায় হতে পারে। + +**শিক্ষার্থীরা**, এই পাঠক্রম ব্যবহারের কয়েকটি উপায় রয়েছে। প্রথমত, আপনি সরাসরি GitHub-এ টেক্সট পড়তে এবং কোড দেখতে পারেন। যদি আপনি কোনো নোটবুকে কোড চালাতে চান - [আমাদের নির্দেশনা পড়ুন](./etc/how-to-run.md), এবং এটি কীভাবে করবেন সে সম্পর্কে আরও পরামর্শ [এই ব্লগ পোস্টে](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) খুঁজে পান। + +> **Note**: [এই পাঠক্রমে কোড চালানোর নির্দেশনা](./how-to-run.md) + +## স্ব-অধ্যয়ন + +তবে, যদি আপনি এই কোর্সটি স্ব-অধ্যয়ন প্রকল্প হিসেবে নিতে চান, আমরা আপনাকে পুরো রিপোজিটরি আপনার নিজস্ব GitHub অ্যাকাউন্টে ফর্ক করার এবং নিজে বা একটি গ্রুপের সাথে এক্সারসাইজ সম্পন্ন করার পরামর্শ দিই: + +* প্রি-লেকচার কুইজ দিয়ে শুরু করুন। +* লেকচারের জন্য ইন্ট্রো টেক্সট পড়ুন। +* যদি লেকচারে অতিরিক্ত নোটবুক থাকে, সেগুলো পড়ুন এবং কোড চালান। যদি TensorFlow এবং PyTorch উভয় নোটবুক সরবরাহ করা হয়, আপনি যেকোনো একটি ফ্রেমওয়ার্ক বেছে নিতে পারেন - আপনার পছন্দমতো। +* নোটবুকগুলোতে প্রায়ই কিছু চ্যালেঞ্জ থাকে যা আপনাকে কোডে সামান্য পরিবর্তন করতে এবং পরীক্ষা করতে উৎসাহিত করে। +* পোস্ট-লেকচার কুইজ নিন। +* যদি মডিউলের সাথে একটি ল্যাব সংযুক্ত থাকে - অ্যাসাইনমেন্ট সম্পন্ন করুন। +* [আলোচনা বোর্ড](https://github.com/microsoft/AI-For-Beginners/discussions) পরিদর্শন করুন এবং "শিখুন উচ্চস্বরে।" + +> আরও অধ্যয়নের জন্য, আমরা এই [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) মডিউল এবং লার্নিং পাথগুলো অনুসরণ করার পরামর্শ দিই। + +**শিক্ষকগণ**, আমরা [কিছু পরামর্শ অন্তর্ভুক্ত করেছি](/for-teachers.md) এই পাঠক্রম কীভাবে ব্যবহার করবেন। + +--- + +## শিক্ষাদান পদ্ধতি + +আমরা এই পাঠক্রম তৈরি করার সময় দুটি শিক্ষাদান পদ্ধতি বেছে নিয়েছি: এটি হাতে-কলমে **প্রজেক্ট-ভিত্তিক** এবং এতে **বারবার কুইজ** অন্তর্ভুক্ত রয়েছে। + +প্রজেক্টের সাথে কন্টেন্টকে সামঞ্জস্যপূর্ণ করে নিশ্চিত করার মাধ্যমে, শিক্ষার্থীদের জন্য প্রক্রিয়াটি আরও আকর্ষণীয় করা হয়েছে এবং ধারণার সংরক্ষণ বৃদ্ধি পাবে। এছাড়া, ক্লাসের আগে একটি কম ঝুঁকির কুইজ শিক্ষার্থীর মনোযোগ একটি বিষয়ের দিকে নিয়ে যায়, এবং ক্লাসের পরে একটি দ্বিতীয় কুইজ আরও ধারণা সংরক্ষণ নিশ্চিত করে। এই পাঠক্রমটি নমনীয় এবং মজাদারভাবে ডিজাইন করা হয়েছে এবং এটি সম্পূর্ণ বা আংশিকভাবে নেওয়া যেতে পারে। প্রজেক্টগুলো ছোট থেকে শুরু করে এবং ১২-সপ্তাহের চক্রের শেষে ক্রমশ জটিল হয়ে ওঠে। + +> **কুইজ সম্পর্কে একটি নোট**: সমস্ত কুইজ [এই অ্যাপে](https://red-field-0a6ddfd03.1.azurestaticapps.net/) অন্তর্ভুক্ত রয়েছে, মোট ৫০টি কুইজ, প্রতিটিতে তিনটি প্রশ্ন। এগুলো পাঠের মধ্যে থেকে লিঙ্ক করা হয়েছে, তবে কুইজ অ্যাপটি লোকালভাবে চালানো যেতে পারে; `etc/quiz-app` ফোল্ডারে নির্দেশনা অনুসরণ করুন। + +## অফলাইন অ্যাক্সেস + +আপনি [Docsify](https://docsify.js.org/#/) ব্যবহার করে এই ডকুমেন্টেশন অফলাইনে চালাতে পারেন। এই রিপোজিটরি ফর্ক করুন, [Docsify ইনস্টল করুন](https://docsify.js.org/#/quickstart) আপনার লোকাল মেশিনে, এবং তারপর এই রিপোজিটরির রুট ফোল্ডারে `docsify serve` টাইপ করুন। ওয়েবসাইটটি আপনার লোকালহোস্টে পোর্ট ৩০০০-এ পরিবেশন করা হবে: `localhost:3000`। পাঠক্রমের একটি পিডিএফ [এই লিঙ্কে](../../../../../../../../../etc/pdf/readme.pdf) উপলব্ধ। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদের ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/1-Intro/README.md b/translations/bn/lessons/1-Intro/README.md new file mode 100644 index 00000000..07fc49b6 --- /dev/null +++ b/translations/bn/lessons/1-Intro/README.md @@ -0,0 +1,145 @@ + +# কৃত্রিম বুদ্ধিমত্তার পরিচিতি + +![কৃত্রিম বুদ্ধিমত্তার পরিচিতির সামগ্রীর একটি ডুডলের সারাংশ](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bn.png) + +> স্কেচনোট করেছেন [Tomomi Imura](https://twitter.com/girlie_mac) + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**কৃত্রিম বুদ্ধিমত্তা** একটি উত্তেজনাপূর্ণ বৈজ্ঞানিক শাখা যা গবেষণা করে কীভাবে আমরা কম্পিউটারকে বুদ্ধিমান আচরণ প্রদর্শন করাতে পারি, যেমন: সেই কাজগুলো করা যা মানুষ ভালোভাবে করতে পারে। + +মূলত, কম্পিউটার আবিষ্কার করেছিলেন [চার্লস ব্যাবেজ](https://en.wikipedia.org/wiki/Charles_Babbage) সংখ্যা নিয়ে একটি সুনির্দিষ্ট পদ্ধতি অনুসরণ করে কাজ করার জন্য - একটি অ্যালগরিদম। আধুনিক কম্পিউটার, যদিও উনবিংশ শতাব্দীতে প্রস্তাবিত মডেলের তুলনায় অনেক বেশি উন্নত, তবুও এটি এখনও নিয়ন্ত্রিত গণনার একই ধারণা অনুসরণ করে। তাই, যদি আমরা জানি কীভাবে একটি নির্দিষ্ট লক্ষ্য অর্জনের জন্য সুনির্দিষ্ট ধাপগুলো অনুসরণ করতে হবে, তবে আমরা কম্পিউটারকে সেই কাজটি করতে প্রোগ্রাম করতে পারি। + +![একজন ব্যক্তির ছবি](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bn.png) + +> ছবি তুলেছেন [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ একটি ব্যক্তির বয়স তার ছবির মাধ্যমে নির্ধারণ করা এমন একটি কাজ যা স্পষ্টভাবে প্রোগ্রাম করা সম্ভব নয়, কারণ আমরা জানি না কীভাবে আমরা এটি করার সময় আমাদের মাথায় একটি সংখ্যা নিয়ে আসি। + +--- + +তবে, এমন কিছু কাজ রয়েছে যা আমরা কীভাবে সমাধান করব তা স্পষ্টভাবে জানি না। উদাহরণস্বরূপ, একটি ব্যক্তির বয়স তার ছবির মাধ্যমে নির্ধারণ করা। আমরা এটি করতে শিখি কারণ আমরা বিভিন্ন বয়সের মানুষের অনেক উদাহরণ দেখেছি, কিন্তু আমরা স্পষ্টভাবে ব্যাখ্যা করতে পারি না কীভাবে আমরা এটি করি, বা কম্পিউটারকে এটি করতে প্রোগ্রাম করতে পারি না। এই ধরনের কাজগুলোই **কৃত্রিম বুদ্ধিমত্তা** (সংক্ষেপে AI) এর জন্য আগ্রহের বিষয়। + +✅ এমন কিছু কাজের কথা ভাবুন যা আপনি কম্পিউটারের উপর ছেড়ে দিতে পারেন এবং যা AI থেকে উপকৃত হতে পারে। অর্থনীতি, চিকিৎসা এবং শিল্পক্ষেত্রের কথা বিবেচনা করুন - এই ক্ষেত্রগুলো আজ কীভাবে AI থেকে উপকৃত হচ্ছে? + +## দুর্বল AI বনাম শক্তিশালী AI + +দুর্বল AI | শক্তিশালী AI +---------------------------------------|------------------------------------- +দুর্বল AI এমন AI সিস্টেমকে বোঝায় যা একটি নির্দিষ্ট কাজ বা সংকীর্ণ কাজের সেটের জন্য ডিজাইন এবং প্রশিক্ষিত।|শক্তিশালী AI, বা কৃত্রিম সাধারণ বুদ্ধিমত্তা (AGI), এমন AI সিস্টেমকে বোঝায় যা মানুষের মতো বুদ্ধিমত্তা এবং বোঝাপড়ার ক্ষমতা রাখে। +এই AI সিস্টেমগুলো সাধারণত বুদ্ধিমান নয়; তারা একটি পূর্বনির্ধারিত কাজ সম্পাদনে দক্ষ, কিন্তু প্রকৃত বোঝাপড়া বা চেতনা নেই।|এই AI সিস্টেমগুলো যে কোনো বুদ্ধিবৃত্তিক কাজ করতে সক্ষম যা একজন মানুষ করতে পারে, বিভিন্ন ক্ষেত্রে মানিয়ে নিতে পারে এবং চেতনা বা আত্মসচেতনতার একটি রূপ ধারণ করতে পারে। +দুর্বল AI এর উদাহরণ হলো ভার্চুয়াল সহকারী যেমন Siri বা Alexa, স্ট্রিমিং পরিষেবাগুলোর সুপারিশ অ্যালগরিদম এবং নির্দিষ্ট গ্রাহক পরিষেবা কাজের জন্য ডিজাইন করা চ্যাটবট।|শক্তিশালী AI অর্জন AI গবেষণার একটি দীর্ঘমেয়াদি লক্ষ্য এবং এর জন্য এমন AI সিস্টেমের উন্নয়ন প্রয়োজন যা যুক্তি করতে পারে, শিখতে পারে, বুঝতে পারে এবং বিভিন্ন কাজ ও প্রেক্ষাপটে মানিয়ে নিতে পারে। +দুর্বল AI অত্যন্ত বিশেষায়িত এবং এর সংকীর্ণ ক্ষেত্রের বাইরে মানুষের মতো জ্ঞানীয় ক্ষমতা বা সাধারণ সমস্যা সমাধানের ক্ষমতা নেই।|শক্তিশালী AI বর্তমানে একটি তাত্ত্বিক ধারণা, এবং কোনো AI সিস্টেম এখনও এই স্তরের সাধারণ বুদ্ধিমত্তায় পৌঁছায়নি। + +আরও তথ্যের জন্য দেখুন **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI)। + +## বুদ্ধিমত্তার সংজ্ঞা এবং টুরিং টেস্ট + +**[বুদ্ধিমত্তা](https://en.wikipedia.org/wiki/Intelligence)** শব্দটি নিয়ে কাজ করার সময় একটি সমস্যা হলো এই শব্দটির কোনো স্পষ্ট সংজ্ঞা নেই। কেউ যুক্তি দিতে পারে যে বুদ্ধিমত্তা **অমূর্ত চিন্তা** বা **আত্মসচেতনতার** সাথে যুক্ত, কিন্তু আমরা এটি সঠিকভাবে সংজ্ঞায়িত করতে পারি না। + +![একটি বিড়ালের ছবি](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bn.jpg) + +> [ছবি](https://unsplash.com/photos/75715CVEJhI) তুলেছেন [Amber Kipp](https://unsplash.com/@sadmax) Unsplash থেকে + +*বুদ্ধিমত্তা* শব্দটির অস্পষ্টতা বোঝার জন্য একটি প্রশ্নের উত্তর দেওয়ার চেষ্টা করুন: "একটি বিড়াল কি বুদ্ধিমান?" বিভিন্ন মানুষ এই প্রশ্নের ভিন্ন ভিন্ন উত্তর দিতে পারে, কারণ এই দাবিটি সত্য বা মিথ্যা প্রমাণ করার জন্য কোনো সর্বজনগ্রাহ্য পরীক্ষা নেই। আর যদি আপনি মনে করেন যে আছে - তবে আপনার বিড়ালকে একটি IQ টেস্টে নিয়ে যান... + +✅ এক মিনিট সময় নিয়ে ভাবুন আপনি কীভাবে বুদ্ধিমত্তাকে সংজ্ঞায়িত করবেন। একটি কাক যে একটি গোলকধাঁধা সমাধান করে খাবার পায়, সেটি কি বুদ্ধিমান? একটি শিশু কি বুদ্ধিমান? + +--- + +AGI নিয়ে কথা বলার সময় আমাদের কোনো উপায় থাকতে হবে যাতে আমরা বলতে পারি যে আমরা একটি সত্যিকারের বুদ্ধিমান সিস্টেম তৈরি করেছি। [অ্যালান টুরিং](https://en.wikipedia.org/wiki/Alan_Turing) একটি পদ্ধতি প্রস্তাব করেছিলেন যাকে **[টুরিং টেস্ট](https://en.wikipedia.org/wiki/Turing_test)** বলা হয়, যা বুদ্ধিমত্তার একটি সংজ্ঞার মতো কাজ করে। এই পরীক্ষাটি একটি প্রদত্ত সিস্টেমকে প্রকৃত বুদ্ধিমান কিছু - একজন প্রকৃত মানুষের সাথে তুলনা করে, এবং যেহেতু যেকোনো স্বয়ংক্রিয় তুলনা একটি কম্পিউটার প্রোগ্রামের মাধ্যমে বাইপাস করা যেতে পারে, আমরা একজন মানব জিজ্ঞাসক ব্যবহার করি। সুতরাং, যদি একজন মানুষ একটি প্রকৃত ব্যক্তি এবং একটি কম্পিউটার সিস্টেমের মধ্যে পাঠ-ভিত্তিক সংলাপে পার্থক্য করতে অক্ষম হয় - তবে সিস্টেমটিকে বুদ্ধিমান বলে বিবেচনা করা হয়। + +> সেন্ট পিটার্সবার্গে তৈরি একটি চ্যাটবট [ইউজিন গুসম্যান](https://en.wikipedia.org/wiki/Eugene_Goostman) ২০১৪ সালে টুরিং টেস্ট পাস করার কাছাকাছি পৌঁছেছিল একটি চতুর ব্যক্তিত্ব কৌশল ব্যবহার করে। এটি শুরুতেই ঘোষণা করেছিল যে এটি ১৩ বছর বয়সী একজন ইউক্রেনীয় ছেলে, যা জ্ঞানের অভাব এবং কিছু পাঠের অসঙ্গতিগুলো ব্যাখ্যা করেছিল। বটটি ৫ মিনিটের সংলাপের পরে বিচারকদের ৩০% কে বিশ্বাস করাতে সক্ষম হয়েছিল যে এটি একজন মানুষ, একটি মেট্রিক যা টুরিং বিশ্বাস করেছিলেন ২০০০ সালের মধ্যে একটি মেশিন পাস করতে সক্ষম হবে। তবে, এটি বোঝা উচিত যে এটি নির্দেশ করে না যে আমরা একটি বুদ্ধিমান সিস্টেম তৈরি করেছি, বা একটি কম্পিউটার সিস্টেম মানব জিজ্ঞাসককে বোকা বানিয়েছে - বরং বট নির্মাতারা বোকা বানিয়েছেন! + +✅ কখনো কি কোনো চ্যাটবট আপনাকে বোকা বানিয়ে বিশ্বাস করিয়েছে যে আপনি একজন মানুষের সাথে কথা বলছেন? এটি কীভাবে আপনাকে বিশ্বাস করিয়েছে? + +## কৃত্রিম বুদ্ধিমত্তার বিভিন্ন পদ্ধতি + +যদি আমরা চাই যে একটি কম্পিউটার মানুষের মতো আচরণ করুক, তবে আমাদের কোনোভাবে কম্পিউটারের মধ্যে আমাদের চিন্তার প্রক্রিয়াকে মডেল করতে হবে। সুতরাং, আমাদের বুঝতে হবে কী আমাদের বুদ্ধিমান করে তোলে। + +> একটি মেশিনে বুদ্ধিমত্তা প্রোগ্রাম করতে সক্ষম হতে, আমাদের বুঝতে হবে কীভাবে আমাদের নিজস্ব সিদ্ধান্ত গ্রহণের প্রক্রিয়া কাজ করে। যদি আপনি একটু আত্মবিশ্লেষণ করেন, তবে বুঝতে পারবেন যে কিছু প্রক্রিয়া অবচেতনভাবে ঘটে – যেমন: আমরা বিড়াল এবং কুকুরের মধ্যে পার্থক্য করতে পারি চিন্তা না করেই - আবার কিছু প্রক্রিয়া যুক্তি প্রয়োগ করে ঘটে। + +এই সমস্যার দুটি সম্ভাব্য পদ্ধতি রয়েছে: + +শীর্ষ-নিচ পদ্ধতি (প্রতীকী যুক্তি) | নিচ-উপর পদ্ধতি (নিউরাল নেটওয়ার্ক) +---------------------------------------|------------------------------------- +শীর্ষ-নিচ পদ্ধতি একটি ব্যক্তির যুক্তি করার পদ্ধতিকে মডেল করে। এটি একজন মানুষের কাছ থেকে **জ্ঞান** বের করে আনা এবং এটি কম্পিউটার-পঠনযোগ্য আকারে উপস্থাপন করার প্রক্রিয়া। আমাদের কম্পিউটারের মধ্যে **যুক্তি** মডেল করার একটি উপায়ও তৈরি করতে হবে। | নিচ-উপর পদ্ধতি মানুষের মস্তিষ্কের গঠনকে মডেল করে, যা **নিউরন** নামে অসংখ্য সরল এককের সমন্বয়ে গঠিত। প্রতিটি নিউরন তার ইনপুটগুলোর একটি ওজনযুক্ত গড়ের মতো কাজ করে, এবং আমরা নিউরনের একটি নেটওয়ার্ককে **প্রশিক্ষণ ডেটা** দিয়ে সমস্যাগুলো সমাধান করতে প্রশিক্ষণ দিতে পারি। + +এছাড়াও বুদ্ধিমত্তার জন্য কিছু অন্যান্য সম্ভাব্য পদ্ধতি রয়েছে: + +* একটি **উদ্ভূত**, **সমন্বিত** বা **বহু-এজেন্ট পদ্ধতি** এই ধারণার উপর ভিত্তি করে যে একটি বৃহৎ সংখ্যক সরল এজেন্টের মিথস্ক্রিয়ার মাধ্যমে জটিল বুদ্ধিমান আচরণ অর্জন করা যেতে পারে। [বিবর্তনমূলক সাইবারনেটিক্স](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) অনুযায়ী, বুদ্ধিমত্তা *মেটাসিস্টেম ট্রানজিশন* প্রক্রিয়ায় আরও সরল, প্রতিক্রিয়াশীল আচরণ থেকে *উদ্ভূত* হতে পারে। + +* একটি **বিবর্তনমূলক পদ্ধতি**, বা **জেনেটিক অ্যালগরিদম** হলো বিবর্তনের নীতির উপর ভিত্তি করে একটি অপ্টিমাইজেশন প্রক্রিয়া। + +আমরা এই পদ্ধতিগুলো কোর্সের পরে বিবেচনা করব, কিন্তু এখন আমরা দুটি প্রধান দিকের উপর মনোযোগ দেব: শীর্ষ-নিচ এবং নিচ-উপর। + +### শীর্ষ-নিচ পদ্ধতি + +**শীর্ষ-নিচ পদ্ধতি**তে, আমরা আমাদের যুক্তি করার প্রক্রিয়াকে মডেল করার চেষ্টা করি। যেহেতু আমরা যুক্তি করার সময় আমাদের চিন্তাগুলো অনুসরণ করতে পারি, তাই আমরা এই প্রক্রিয়াকে আনুষ্ঠানিকভাবে উপস্থাপন করে কম্পিউটারে প্রোগ্রাম করার চেষ্টা করতে পারি। এটি **প্রতীকী যুক্তি** নামে পরিচিত। + +মানুষের মাথায় কিছু নিয়ম থাকে যা তাদের সিদ্ধান্ত গ্রহণ প্রক্রিয়াকে পরিচালিত করে। উদাহরণস্বরূপ, যখন একজন ডাক্তার রোগীর রোগ নির্ণয় করেন, তখন তিনি বুঝতে পারেন যে একজন ব্যক্তির জ্বর রয়েছে, এবং তাই শরীরের ভিতরে কোনো প্রদাহ হতে পারে। একটি নির্দিষ্ট সমস্যার উপর একটি বৃহৎ নিয়মের সেট প্রয়োগ করে একজন ডাক্তার চূড়ান্ত রোগ নির্ণয়ে পৌঁছাতে পারেন। + +এই পদ্ধতিটি **জ্ঞান উপস্থাপনা** এবং **যুক্তি**র উপর ব্যাপকভাবে নির্ভর করে। একজন মানব বিশেষজ্ঞ থেকে জ্ঞান বের করে আনা সবচেয়ে কঠিন অংশ হতে পারে, কারণ অনেক ক্ষেত্রে একজন ডাক্তার জানেন না কেন তিনি একটি নির্দিষ্ট রোগ নির্ণয়ে পৌঁছাচ্ছেন। কখনো কখনো সমাধানটি তার মাথায় স্পষ্ট চিন্তা ছাড়াই চলে আসে। কিছু কাজ, যেমন একটি ছবির মাধ্যমে একজন ব্যক্তির বয়স নির্ধারণ করা, একেবারেই জ্ঞান পরিচালনায় হ্রাস করা যায় না। + +### নিচ-উপর পদ্ধতি + +অন্যদিকে, আমরা আমাদের মস্তিষ্কের সবচেয়ে সরল উপাদান – একটি নিউরনকে মডেল করার চেষ্টা করতে পারি। আমরা একটি তথাকথিত **কৃত্রিম নিউরাল নেটওয়ার্ক** কম্পিউটারের ভিতরে তৈরি করতে পারি, এবং তারপর এটি উদাহরণ দিয়ে সমস্যাগুলো সমাধান করতে শেখাতে পারি। এই প্রক্রিয়াটি অনেকটা একটি নবজাতক শিশুর তার চারপাশ সম্পর্কে পর্যবেক্ষণ করে শেখার মতো। + +✅ নবজাতক শিশুরা কীভাবে শেখে তা নিয়ে একটু গবেষণা করুন। একটি শিশুর মস্তিষ্কের মৌলিক উপাদানগুলো কী? + +> | মেশিন লার্নিং সম্পর্কে কী? | | +> |--------------|-----------| +> | কৃত্রিম বুদ্ধিমত্তার একটি অংশ যা কম্পিউটারকে কিছু ডেটার ভিত্তিতে একটি সমস্যা সমাধান করতে শেখায় তাকে **মেশিন লার্নিং** বলা হয়। আমরা এই কোর্সে ক্লাসিক্যাল মেশিন লার্নিং বিবেচনা করব না - আমরা আপনাকে একটি পৃথক [মেশিন লার্নিং ফর বিগিনার্স](http://aka.ms/ml-beginners) কারিকুলামে রেফার করছি। | ![বিগিনার্সের জন্য মেশিন লার্নিং](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bn.png) | + +## কৃত্রিম বুদ্ধিমত্তার সংক্ষিপ্ত ইতিহাস + +কৃত্রিম বুদ্ধিমত্তা বিশ শতকের মাঝামাঝি সময়ে একটি ক্ষেত্র হিসেবে শুরু হয়েছিল। প্রথমদিকে, প্রতীকী যুক্তি একটি প্রভাবশালী পদ্ধতি ছিল, এবং এটি কিছু গুরুত্বপূর্ণ সাফল্য অর্জন করেছিল, যেমন বিশেষজ্ঞ সিস্টেম – কম্পিউটার প্রোগ্রাম যা কিছু সীমিত সমস্যার ক্ষেত্রে একজন বিশেষজ্ঞের মতো কাজ করতে সক্ষম। তবে, শীঘ্রই এটি স্পষ্ট হয়ে উঠেছিল যে এই পদ্ধতি ভালোভাবে স্কেল করে না। একজন বিশেষজ্ঞ থেকে জ্ঞান বের করে আনা, এটি কম্পিউটারে উপস্থাপন করা, এবং সেই জ্ঞানভাণ্ডারকে সঠিক রাখা একটি অত্যন্ত জটিল কাজ এবং অনেক ক্ষেত্রে এটি বাস্তবসম্মত নয়। এটি ১৯৭০-এর দশকে তথাকথিত [AI শীতকাল](https://en.wikipedia.org/wiki/AI_winter) এর দিকে নিয়ে যায়। + +> ছবি: দিমিত্রি সশনিকভ, [ছবি](https://unsplash.com/photos/r8LmVbUKgns) মারিনা আব্রোসিমোভা ([Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto)), আনস্প্ল্যাশ + +## সাম্প্রতিক এআই গবেষণা + +সাম্প্রতিক বছরগুলোতে নিউরাল নেটওয়ার্ক গবেষণার বিশাল বৃদ্ধি শুরু হয়েছিল ২০১০ সালের দিকে, যখন বড় বড় পাবলিক ডেটাসেট সহজলভ্য হতে শুরু করে। একটি বিশাল চিত্র সংগ্রহ, যার নাম [ImageNet](https://en.wikipedia.org/wiki/ImageNet), যেখানে প্রায় ১.৪ কোটি ট্যাগ করা ছবি রয়েছে, এটি [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) এর সূচনা করেছিল। + +![ILSVRC সঠিকতা](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> ছবি: [দিমিত্রি সশনিকভ](http://soshnikov.com) + +২০১২ সালে, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) প্রথমবারের মতো চিত্র শ্রেণীবিন্যাসে ব্যবহৃত হয়, যা শ্রেণীবিন্যাস ত্রুটির হার উল্লেখযোগ্যভাবে কমিয়ে দেয় (প্রায় ৩০% থেকে ১৬.৪% এ)। ২০১৫ সালে, মাইক্রোসফট রিসার্চের ResNet আর্কিটেকচার [মানব-স্তরের সঠিকতা অর্জন করে](https://doi.org/10.1109/ICCV.2015.123)। + +এরপর থেকে, নিউরাল নেটওয়ার্ক বিভিন্ন কাজে অত্যন্ত সফল আচরণ প্রদর্শন করেছে: + +--- + +বছর | মানব-সমতুল্যতা অর্জিত +-----|-------- +২০১৫ | [চিত্র শ্রেণীবিন্যাস](https://doi.org/10.1109/ICCV.2015.123) +২০১৬ | [কথোপকথনমূলক বক্তৃতা স্বীকৃতি](https://arxiv.org/abs/1610.05256) +২০১৮ | [স্বয়ংক্রিয় মেশিন অনুবাদ](https://arxiv.org/abs/1803.05567) (চীনা থেকে ইংরেজি) +২০২০ | [চিত্র ক্যাপশনিং](https://arxiv.org/abs/2009.13682) + +গত কয়েক বছরে আমরা বড় ভাষার মডেলগুলোর (যেমন BERT এবং GPT-3) বিশাল সাফল্য প্রত্যক্ষ করেছি। এটি মূলত সম্ভব হয়েছে কারণ প্রচুর সাধারণ টেক্সট ডেটা সহজলভ্য, যা মডেলগুলোকে টেক্সটের গঠন এবং অর্থ বোঝার জন্য প্রশিক্ষণ দিতে সাহায্য করে। এই মডেলগুলোকে সাধারণ টেক্সট সংগ্রহে প্রি-ট্রেন করা হয় এবং তারপর নির্দিষ্ট কাজের জন্য বিশেষায়িত করা হয়। আমরা এই কোর্সে [প্রাকৃতিক ভাষা প্রক্রিয়াকরণ](../5-NLP/README.md) সম্পর্কে আরও শিখব। + +## 🚀 চ্যালেঞ্জ + +ইন্টারনেটে ঘুরে দেখুন এবং আপনার মতে এআই সবচেয়ে কার্যকরভাবে কোথায় ব্যবহৃত হচ্ছে তা নির্ধারণ করুন। এটি কি কোনো ম্যাপিং অ্যাপে, নাকি কোনো বক্তৃতা-থেকে-লিখিত টেক্সট পরিষেবায়, অথবা কোনো ভিডিও গেমে? গবেষণা করুন, এই সিস্টেমটি কীভাবে তৈরি করা হয়েছিল। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## পুনরালোচনা ও স্ব-অধ্যয়ন + +[এই পাঠটি](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) পড়ে এআই এবং এমএল-এর ইতিহাস পর্যালোচনা করুন। এই পাঠের শীর্ষে থাকা স্কেচনোট বা এই পাঠের কোনো একটি উপাদান নিন এবং এটি আরও গভীরভাবে গবেষণা করুন, যাতে এর বিবর্তনের সাংস্কৃতিক প্রেক্ষাপট বোঝা যায়। + +**অ্যাসাইনমেন্ট**: [গেম জ্যাম](assignment.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/1-Intro/assignment.md b/translations/bn/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..121c24b0 --- /dev/null +++ b/translations/bn/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# গেম জ্যাম + +গেম এমন একটি ক্ষেত্র যা কৃত্রিম বুদ্ধিমত্তা (AI) এবং মেশিন লার্নিং (ML)-এর উন্নয়নের দ্বারা ব্যাপকভাবে প্রভাবিত হয়েছে। এই অ্যাসাইনমেন্টে, এমন একটি গেম নিয়ে একটি সংক্ষিপ্ত প্রবন্ধ লিখুন যা আপনি পছন্দ করেন এবং যা AI-এর বিবর্তনের দ্বারা প্রভাবিত হয়েছে। গেমটি যথেষ্ট পুরনো হওয়া উচিত যাতে এটি বিভিন্ন ধরনের কম্পিউটার প্রসেসিং সিস্টেম দ্বারা প্রভাবিত হতে পারে। একটি ভালো উদাহরণ হতে পারে দাবা বা গো, তবে পং বা প্যাক-ম্যানের মতো ভিডিও গেমগুলোর দিকেও নজর দিন। একটি প্রবন্ধ লিখুন যেখানে গেমটির অতীত, বর্তমান এবং AI-এর ভবিষ্যৎ নিয়ে আলোচনা করা হয়েছে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/2-Symbolic/README.md b/translations/bn/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..3e62fae7 --- /dev/null +++ b/translations/bn/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# জ্ঞান উপস্থাপন এবং বিশেষজ্ঞ সিস্টেম + +![সিম্বলিক AI বিষয়বস্তুর সারাংশ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bn.png) + +> স্কেচনোট: [Tomomi Imura](https://twitter.com/girlie_mac) + +কৃত্রিম বুদ্ধিমত্তার অনুসন্ধান মূলত জ্ঞান অর্জনের উপর ভিত্তি করে, যা মানুষের মতো পৃথিবীকে বোঝার চেষ্টা করে। কিন্তু এটি কীভাবে করা সম্ভব? + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI-এর প্রাথমিক দিনগুলোতে, বুদ্ধিমান সিস্টেম তৈরির জন্য টপ-ডাউন পদ্ধতি (পূর্ববর্তী পাঠে আলোচনা করা হয়েছে) জনপ্রিয় ছিল। ধারণাটি ছিল মানুষের কাছ থেকে জ্ঞান সংগ্রহ করে তা মেশিন-পঠনযোগ্য আকারে রূপান্তর করা এবং তারপর এটি ব্যবহার করে স্বয়ংক্রিয়ভাবে সমস্যার সমাধান করা। এই পদ্ধতি দুটি বড় ধারণার উপর ভিত্তি করে ছিল: + +* জ্ঞান উপস্থাপন +* যুক্তি + +## জ্ঞান উপস্থাপন + +সিম্বলিক AI-এর একটি গুরুত্বপূর্ণ ধারণা হল **জ্ঞান**। এটি *তথ্য* বা *ডেটা* থেকে জ্ঞানকে আলাদা করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, কেউ বলতে পারে যে বইগুলো জ্ঞান ধারণ করে, কারণ বই পড়ে একজন বিশেষজ্ঞ হতে পারে। তবে, বইগুলো আসলে *ডেটা* ধারণ করে, এবং বই পড়ে এবং এই ডেটাকে আমাদের বিশ্ব মডেলে সংযুক্ত করে আমরা এই ডেটাকে জ্ঞানে রূপান্তর করি। + +> ✅ **জ্ঞান** হল এমন কিছু যা আমাদের মাথায় থাকে এবং আমাদের পৃথিবী সম্পর্কে বোঝার প্রতিনিধিত্ব করে। এটি একটি সক্রিয় **শেখার** প্রক্রিয়ার মাধ্যমে অর্জিত হয়, যা আমরা যে তথ্য পাই তা আমাদের সক্রিয় বিশ্ব মডেলে সংযুক্ত করে। + +প্রায়শই, আমরা জ্ঞানকে কঠোরভাবে সংজ্ঞায়িত করি না, তবে আমরা এটি অন্যান্য সম্পর্কিত ধারণার সাথে [DIKW Pyramid](https://en.wikipedia.org/wiki/DIKW_pyramid) ব্যবহার করে সামঞ্জস্য করি। এতে নিম্নলিখিত ধারণাগুলো অন্তর্ভুক্ত: + +* **ডেটা** হল এমন কিছু যা শারীরিক মাধ্যমে উপস্থাপিত হয়, যেমন লেখা টেক্সট বা কথিত শব্দ। ডেটা মানুষের থেকে স্বাধীনভাবে বিদ্যমান এবং এটি মানুষের মধ্যে স্থানান্তরিত হতে পারে। +* **তথ্য** হল আমাদের মাথায় ডেটার ব্যাখ্যা। উদাহরণস্বরূপ, যখন আমরা *কম্পিউটার* শব্দটি শুনি, তখন আমাদের কিছু ধারণা থাকে এটি কী। +* **জ্ঞান** হল তথ্যকে আমাদের বিশ্ব মডেলে সংযুক্ত করার প্রক্রিয়া। উদাহরণস্বরূপ, একবার আমরা শিখি যে কম্পিউটার কী, তখন আমরা এটি কীভাবে কাজ করে, এর দাম কত এবং এটি কী কাজে ব্যবহার করা যায় তা সম্পর্কে ধারণা পেতে শুরু করি। এই আন্তঃসম্পর্কিত ধারণাগুলোর নেটওয়ার্ক আমাদের জ্ঞান গঠন করে। +* **বুদ্ধিমত্তা** হল আমাদের পৃথিবী সম্পর্কে বোঝার আরও একটি স্তর, এবং এটি *মেটা-জ্ঞান* প্রতিনিধিত্ব করে, যেমন জ্ঞান কীভাবে এবং কখন ব্যবহার করা উচিত তা সম্পর্কে ধারণা। + +*Image [from Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* + +তাই, **জ্ঞান উপস্থাপনের** সমস্যাটি হল কম্পিউটারের ভিতরে ডেটার আকারে জ্ঞান উপস্থাপন করার একটি কার্যকর উপায় খুঁজে বের করা, যাতে এটি স্বয়ংক্রিয়ভাবে ব্যবহারযোগ্য হয়। এটি একটি স্পেকট্রামের মতো দেখা যেতে পারে: + +![জ্ঞান উপস্থাপনের স্পেকট্রাম](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bn.png) + +> চিত্র: [Dmitry Soshnikov](http://soshnikov.com) + +* বাম দিকে, খুব সহজ ধরনের জ্ঞান উপস্থাপন রয়েছে যা কম্পিউটার দ্বারা কার্যকরভাবে ব্যবহার করা যেতে পারে। সবচেয়ে সহজটি হল অ্যালগরিদমিক, যেখানে জ্ঞান একটি কম্পিউটার প্রোগ্রামের মাধ্যমে উপস্থাপিত হয়। তবে, এটি জ্ঞান উপস্থাপনের সেরা উপায় নয়, কারণ এটি নমনীয় নয়। আমাদের মাথার ভিতরে থাকা জ্ঞান প্রায়ই অ্যালগরিদমিক নয়। +* ডান দিকে, প্রাকৃতিক টেক্সটের মতো উপস্থাপন রয়েছে। এটি সবচেয়ে শক্তিশালী, তবে স্বয়ংক্রিয় যুক্তির জন্য ব্যবহার করা যায় না। + +> ✅ এক মিনিটের জন্য ভাবুন আপনি কীভাবে আপনার মাথার ভিতরে জ্ঞান উপস্থাপন করেন এবং এটি নোটে রূপান্তর করেন। আপনার জন্য কোন নির্দিষ্ট ফরম্যাটটি ভালো কাজ করে যা স্মৃতিশক্তি বাড়াতে সাহায্য করে? + +## কম্পিউটার জ্ঞান উপস্থাপনের শ্রেণীবিন্যাস + +আমরা কম্পিউটার জ্ঞান উপস্থাপনের বিভিন্ন পদ্ধতিকে নিম্নলিখিত বিভাগে শ্রেণীবদ্ধ করতে পারি: + +* **নেটওয়ার্ক উপস্থাপন** আমাদের মাথার ভিতরে আন্তঃসম্পর্কিত ধারণার একটি নেটওয়ার্ক থাকার উপর ভিত্তি করে। আমরা একই নেটওয়ার্ককে কম্পিউটারের ভিতরে একটি গ্রাফ হিসাবে পুনরুত্পাদন করতে পারি - একটি **সেমান্টিক নেটওয়ার্ক**। + +1. **অবজেক্ট-অ্যাট্রিবিউট-ভ্যালু ট্রিপলেট** বা **অ্যাট্রিবিউট-ভ্যালু পেয়ার**। যেহেতু একটি গ্রাফ কম্পিউটারের ভিতরে নোড এবং এজের তালিকা হিসাবে উপস্থাপিত হতে পারে, আমরা একটি সেমান্টিক নেটওয়ার্ককে একটি ট্রিপলেটের তালিকা হিসাবে উপস্থাপন করতে পারি, যাতে অবজেক্ট, অ্যাট্রিবিউট এবং মান থাকে। উদাহরণস্বরূপ, আমরা প্রোগ্রামিং ভাষা সম্পর্কে নিম্নলিখিত ট্রিপলেট তৈরি করি: + +Object | Attribute | Value +-------|-----------|------ +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ ভাবুন কীভাবে ট্রিপলেটগুলো অন্যান্য ধরনের জ্ঞান উপস্থাপন করতে ব্যবহার করা যেতে পারে। + +2. **হায়ারারকিক্যাল উপস্থাপন** জোর দেয় যে আমরা প্রায়ই আমাদের মাথার ভিতরে অবজেক্টের একটি শ্রেণীবিন্যাস তৈরি করি। উদাহরণস্বরূপ, আমরা জানি যে ক্যানারি একটি পাখি, এবং সব পাখির ডানা থাকে। আমরা ক্যানারির সাধারণত কী রঙ হয় এবং তাদের উড়ার গতি সম্পর্কে কিছু ধারণা রাখি। + + - **ফ্রেম উপস্থাপন** প্রতিটি অবজেক্ট বা অবজেক্টের শ্রেণীকে একটি **ফ্রেম** হিসাবে উপস্থাপন করার উপর ভিত্তি করে, যা **স্লট** ধারণ করে। স্লটগুলোর সম্ভাব্য ডিফল্ট মান, মানের সীমাবদ্ধতা, বা সংরক্ষিত পদ্ধতি থাকতে পারে যা স্লটের মান পেতে ডাকা যেতে পারে। সমস্ত ফ্রেম একটি শ্রেণীবিন্যাস গঠন করে যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষার অবজেক্ট শ্রেণীবিন্যাসের অনুরূপ। + - **সিনারিও** হল বিশেষ ধরনের ফ্রেম যা সময়ের সাথে সাথে unfold হতে পারে এমন জটিল পরিস্থিতি উপস্থাপন করে। + +**Python** + +Slot | Value | Default value | Interval | +-----|-------|---------------|----------| +Name | Python | | | +Is-A | Untyped-Language | | | +Variable Case | | CamelCase | | +Program Length | | | 5-5000 lines | +Block Syntax | Indent | | | + +3. **প্রসিডিউরাল উপস্থাপন** জ্ঞানকে এমন একটি ক্রিয়াকলাপের তালিকা হিসাবে উপস্থাপন করার উপর ভিত্তি করে যা একটি নির্দিষ্ট শর্ত ঘটলে কার্যকর করা যেতে পারে। + - প্রোডাকশন রুল হলো if-then বিবৃতি যা আমাদের সিদ্ধান্ত নিতে সাহায্য করে। উদাহরণস্বরূপ, একজন ডাক্তারের একটি নিয়ম থাকতে পারে যা বলে যে **যদি** একজন রোগীর উচ্চ জ্বর থাকে **অথবা** রক্ত পরীক্ষায় উচ্চ মাত্রার C-reactive প্রোটিন থাকে **তাহলে** তার প্রদাহ আছে। একবার আমরা শর্তগুলোর মধ্যে একটি পূরণ করলে, আমরা প্রদাহ সম্পর্কে একটি সিদ্ধান্ত নিতে পারি এবং তারপর এটি আরও যুক্তিতে ব্যবহার করতে পারি। + - অ্যালগরিদমকে প্রসিডিউরাল উপস্থাপনের আরেকটি রূপ হিসাবে বিবেচনা করা যেতে পারে, যদিও সেগুলো প্রায় কখনোই সরাসরি জ্ঞান-ভিত্তিক সিস্টেমে ব্যবহার করা হয় না। + +4. **লজিক** মূলত অ্যারিস্টটল দ্বারা প্রস্তাবিত হয়েছিল মানব জ্ঞানকে সর্বজনীনভাবে উপস্থাপন করার একটি উপায় হিসাবে। + - প্রেডিকেট লজিক একটি গাণিতিক তত্ত্ব হিসাবে খুব সমৃদ্ধ, তাই এটি গণনাযোগ্য নয়। সাধারণত এর কিছু উপসেট ব্যবহার করা হয়, যেমন প্রোলগে ব্যবহৃত হর্ন ক্লজ। + - ডেসক্রিপটিভ লজিক হল লজিক্যাল সিস্টেমের একটি পরিবার যা অবজেক্টের শ্রেণীবিন্যাস এবং বিতরণকৃত জ্ঞান উপস্থাপন যেমন *সেমান্টিক ওয়েব* সম্পর্কে যুক্তি করতে ব্যবহৃত হয়। + +## বিশেষজ্ঞ সিস্টেম + +সিম্বলিক AI-এর প্রাথমিক সাফল্যগুলোর মধ্যে একটি ছিল তথাকথিত **বিশেষজ্ঞ সিস্টেম** - কম্পিউটার সিস্টেম যা একটি সীমিত সমস্যার ক্ষেত্রে একজন বিশেষজ্ঞের মতো কাজ করার জন্য ডিজাইন করা হয়েছিল। এগুলো একটি **জ্ঞানভিত্তি** নিয়ে গঠিত ছিল যা একজন বা একাধিক মানব বিশেষজ্ঞ থেকে সংগ্রহ করা হয়েছিল এবং এতে একটি **ইনফারেন্স ইঞ্জিন** ছিল যা এর উপর কিছু যুক্তি সম্পাদন করত। + +![মানব স্থাপত্য](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bn.png) | ![জ্ঞান-ভিত্তিক সিস্টেম](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bn.png) +---------------------------------------------|------------------------------------------------ +মানব স্নায়ুতন্ত্রের সরলীকৃত কাঠামো | জ্ঞান-ভিত্তিক সিস্টেমের স্থাপত্য + +বিশেষজ্ঞ সিস্টেমগুলো মানব যুক্তি ব্যবস্থার মতো তৈরি করা হয়, যা **স্বল্পমেয়াদী স্মৃতি** এবং **দীর্ঘমেয়াদী স্মৃতি** ধারণ করে। অনুরূপভাবে, জ্ঞান-ভিত্তিক সিস্টেমে আমরা নিম্নলিখিত উপাদানগুলো আলাদা করি: + +* **সমস্যার স্মৃতি**: বর্তমানে সমাধান করা সমস্যার সম্পর্কে জ্ঞান ধারণ করে, যেমন রোগীর তাপমাত্রা বা রক্তচাপ, তার প্রদাহ আছে কিনা ইত্যাদি। এই জ্ঞানকে **স্থির জ্ঞান**ও বলা হয়, কারণ এটি আমরা বর্তমানে সমস্যার সম্পর্কে যা জানি তার একটি স্ন্যাপশট ধারণ করে - তথাকথিত *সমস্যার অবস্থা*। +* **জ্ঞানভিত্তি**: একটি সমস্যার ক্ষেত্র সম্পর্কে দীর্ঘমেয়াদী জ্ঞান উপস্থাপন করে। এটি মানব বিশেষজ্ঞদের থেকে ম্যানুয়ালি সংগ্রহ করা হয় এবং পরামর্শ থেকে পরামর্শে পরিবর্তিত হয় না। কারণ এটি আমাদের একটি সমস্যা অবস্থান থেকে অন্য অবস্থানে নেভিগেট করতে দেয়, এটিকে **গতিশীল জ্ঞান**ও বলা হয়। +* **ইনফারেন্স ইঞ্জিন**: পুরো প্রক্রিয়াটি পরিচালনা করে, প্রয়োজন হলে ব্যবহারকারীর কাছে প্রশ্ন জিজ্ঞাসা করে। এটি প্রতিটি অবস্থায় প্রয়োগ করার জন্য সঠিক নিয়ম খুঁজে বের করার জন্যও দায়ী। + +উদাহরণস্বরূপ, চলুন একটি বিশেষজ্ঞ সিস্টেমের কথা বিবেচনা করি যা একটি প্রাণীকে তার শারীরিক বৈশিষ্ট্যের উপর ভিত্তি করে নির্ধারণ করে: + +![AND-OR গাছ](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bn.png) + +> চিত্র: [Dmitry Soshnikov](http://soshnikov.com) + +এই ডায়াগ্রামটি **AND-OR গাছ** নামে পরিচিত, এবং এটি প্রোডাকশন রুলের একটি সেটের গ্রাফিকাল উপস্থাপনা। বিশেষজ্ঞ থেকে জ্ঞান সংগ্রহের শুরুতে একটি গাছ আঁকা উপকারী। কম্পিউটারের ভিতরে জ্ঞান উপস্থাপন করতে নিয়ম ব্যবহার করা আরও সুবিধাজনক: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +আপনি লক্ষ্য করবেন যে নিয়মের বাম দিকের শর্ত এবং ক্রিয়াটি মূলত অবজেক্ট-অ্যাট্রিবিউট-ভ্যালু (OAV) ট্রিপলেট। **ওয়ার্কিং মেমরি** OAV ট্রিপলেটের সেট ধারণ করে যা বর্তমানে সমাধান করা সমস্যার সাথে সম্পর্কিত। একটি **রুলস ইঞ্জিন** এমন নিয়ম খুঁজে বের করে যার শর্ত পূরণ হয়েছে এবং সেগুলো প্রয়োগ করে, ওয়ার্কিং মেমরিতে একটি নতুন ট্রিপলেট যোগ করে। + +> ✅ আপনার পছন্দের একটি বিষয় নিয়ে নিজের AND-OR গাছ আঁকুন! + +### ফরওয়ার্ড বনাম ব্যাকওয়ার্ড ইনফারেন্স + +উপরে বর্ণিত প্রক্রিয়াটি **ফরওয়ার্ড ইনফারেন্স** নামে পরিচিত। এটি ওয়ার্কিং মেমরিতে সমস্যার প্রাথমিক ডেটা দিয়ে শুরু হয় এবং তারপর নিম্নলিখিত যুক্তি লুপটি কার্যকর করে: + +1. যদি লক্ষ্য অ্যাট্রিবিউটটি ওয়ার্কিং মেমরিতে উপস্থিত থাকে - থামুন এবং ফলাফল দিন +2. সমস্ত নিয়ম খুঁজুন যার শর্ত বর্তমানে পূরণ হয়েছে - **কনফ্লিক্ট সেট** পেতে। +3. **কনফ্লিক্ট রেজোলিউশন** সম্পাদন করুন - এই ধাপে কার্যকর করার জন্য একটি নিয়ম নির্বাচন করুন। বিভিন্ন কনফ্লিক্ট রেজোলিউশন কৌশল থাকতে পারে: + - জ্ঞানভিত্তিতে প্রথম প্রযোজ্য নিয়ম নির্বাচন করুন + - একটি র্যান্ডম নিয়ম নির্বাচন করুন + - একটি *আরও নির্দিষ্ট* নিয়ম নির্বাচন করুন, অর্থাৎ বাম দিকের (LHS) সবচেয়ে বেশি শর্ত পূরণ করে এমন নিয়ম +4. নির্বাচিত নিয়ম প্রয়োগ করুন এবং সমস্যার অবস্থায় নতুন জ্ঞানের অংশ যোগ করুন +5. ধাপ 1 থেকে পুনরাবৃত্তি করুন। + +তবে, কিছু ক্ষেত্রে আমরা সমস্যার সম্পর্কে শূন্য জ্ঞান দিয়ে শুরু করতে চাই এবং এমন প্রশ্ন জিজ্ঞাসা করতে চাই যা আমাদের সিদ্ধান্তে পৌঁছাতে সাহায্য করবে। উদাহরণস্বরূপ, যখন চিকিৎসা নির্ণয় করা হয়, আমরা সাধারণত রোগীর সমস্ত চিকিৎসা বিশ্লেষণ আগেই সম্পাদন করি না। বরং আমরা সিদ্ধান্ত নেওয়ার সময় বিশ্লেষণ করতে চাই। + +এই প্রক্রিয়াটি **ব্যাকওয়ার্ড ইনফারেন্স** ব্যবহার করে মডেল করা যেতে পারে। এটি **লক্ষ্য** দ্বারা চালিত হয় - আমরা যে অ্যাট্রিবিউট মানটি খুঁজে বের করতে চাই: + +1. সমস্ত নিয়ম নির্বাচন করুন যা আমাদের লক্ষ্য মান দিতে পারে (অর্থাৎ লক্ষ্যটি ডান দিকের (RHS) অংশে) - একটি কনফ্লিক্ট সেট +1. যদি এই অ্যাট্রিবিউটের জন্য কোনো নিয়ম না থাকে, বা একটি নিয়ম থাকে যা বলে যে আমরা ব্যবহারকারীর কাছ থেকে মান জিজ্ঞাসা করা উচিত - জিজ্ঞাসা করুন, অন্যথায়: +1. কনফ্লিক্ট রেজোলিউশন কৌশল ব্যবহার করে একটি নিয়ম নির্বাচন করুন যা আমরা *হাইপোথিসিস* হিসাবে ব্যবহার করব - আমরা এটি প্রমাণ করার চেষ্টা করব +1. নিয়মের বাম দিকের (LHS) সমস্ত অ্যাট্রিবিউটের জন্য প্রক্রিয়াটি পুনরাবৃত্তি করুন, লক্ষ্য হিসাবে সেগুলো প্রমাণ করার চেষ্টা করুন +1. যদি কোনো সময় প্রক্রিয়াটি ব্যর্থ হয় - ধাপ 3-এ অন্য নিয়ম ব্যবহার করুন। + +> ✅ কোন পরিস্থিতিতে ফরওয়ার্ড ইনফারেন্স আরও উপযুক্ত? ব্যাকওয়ার্ড ইনফারেন্স কীভাবে? + +### বিশেষজ্ঞ সিস্টেম বাস্তবায়ন + +বিশেষজ্ঞ সিস্টেম বিভিন্ন সরঞ্জাম ব্যবহার করে বাস্তবায়ন করা যেতে পারে: + +* কিছু উচ্চ-স্তরের প্রোগ্রামিং ভাষায় সরাসরি প্রোগ্রামিং করা। এটি সেরা ধারণা নয়, কারণ একটি জ্ঞান-ভিত্তিক সিস্টেমের প্রধান সুবিধা হল যে জ্ঞান যুক্তি থেকে পৃথক করা হয়, এবং সম্ভাব্যভাবে একটি সমস্যার ক্ষেত্রের বিশেষজ্ঞ নিয়ম লিখতে সক্ষম হওয়া উচিত যুক্তি প্রক্রিয়ার বিশদ না বুঝেই। +* **বিশেষজ্ঞ সিস্টেম শেল** ব্যবহার করা, অর্থাৎ একটি সিস্টেম যা বিশেষভাবে কিছু জ্ঞান উপস্থাপন ভাষা ব্যবহার করে জ্ঞান দ্বারা পূরণ করার জন্য ডিজাইন করা হয়েছে। + +## ✍️ অনুশীলন: প্রাণী নির্ণয় + +[Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) দেখুন ফরওয়ার্ড এবং ব্যাকওয়ার্ড ইনফারেন্স বিশেষজ্ঞ সিস্টেম বাস্তবায়নের একটি উদাহরণের জন্য। +> **নোট**: এই উদাহরণটি বেশ সহজ এবং কেবল একটি বিশেষজ্ঞ সিস্টেম কেমন দেখায় তার ধারণা দেয়। যখন আপনি এমন একটি সিস্টেম তৈরি করা শুরু করবেন, তখন আপনি কেবলমাত্র কিছু *বুদ্ধিমান* আচরণ লক্ষ্য করবেন যখন নিয়মের সংখ্যা একটি নির্দিষ্ট সীমা, প্রায় ২০০+ এ পৌঁছাবে। এক পর্যায়ে, নিয়মগুলো এত জটিল হয়ে যায় যে সবগুলো মনে রাখা কঠিন হয়ে পড়ে, এবং তখন আপনি ভাবতে পারেন কেন সিস্টেমটি নির্দিষ্ট কিছু সিদ্ধান্ত নিচ্ছে। তবে, জ্ঞান-ভিত্তিক সিস্টেমের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো আপনি সবসময় *ব্যাখ্যা* করতে পারবেন ঠিক কীভাবে কোনো সিদ্ধান্ত নেওয়া হয়েছে। +## অন্টোলজি এবং সেমান্টিক ওয়েব + +২০শ শতকের শেষের দিকে ইন্টারনেট রিসোর্সগুলোকে জ্ঞান উপস্থাপনার মাধ্যমে এনোটেট করার একটি উদ্যোগ নেওয়া হয়েছিল, যাতে খুব নির্দিষ্ট প্রশ্নের সাথে মিলে যায় এমন রিসোর্স খুঁজে পাওয়া সম্ভব হয়। এই উদ্যোগটিকে **সেমান্টিক ওয়েব** বলা হয়, এবং এটি কয়েকটি ধারণার উপর ভিত্তি করে গড়ে উঠেছিল: + +- **[ডিসক্রিপশন লজিকস](https://en.wikipedia.org/wiki/Description_logic)** (DL)-এর উপর ভিত্তি করে একটি বিশেষ জ্ঞান উপস্থাপনা। এটি ফ্রেম জ্ঞান উপস্থাপনার মতো, কারণ এটি বৈশিষ্ট্যসহ বস্তুর একটি শ্রেণিবিন্যাস তৈরি করে, তবে এতে আনুষ্ঠানিক যৌক্তিক অর্থ এবং উপসংহার রয়েছে। DL-এর একটি পুরো পরিবার রয়েছে যা প্রকাশক্ষমতা এবং উপসংহারের অ্যালগরিদমিক জটিলতার মধ্যে ভারসাম্য বজায় রাখে। +- বিতরণকৃত জ্ঞান উপস্থাপনা, যেখানে সমস্ত ধারণা একটি গ্লোবাল URI আইডেন্টিফায়ার দ্বারা উপস্থাপিত হয়, যা ইন্টারনেট জুড়ে জ্ঞান শ্রেণিবিন্যাস তৈরি করা সম্ভব করে। +- জ্ঞান বর্ণনার জন্য XML-ভিত্তিক ভাষার একটি পরিবার: RDF (রিসোর্স ডেসক্রিপশন ফ্রেমওয়ার্ক), RDFS (RDF স্কিমা), OWL (অন্টোলজি ওয়েব ল্যাঙ্গুয়েজ)। + +সেমান্টিক ওয়েবের একটি মূল ধারণা হল **অন্টোলজি**। এটি একটি নির্দিষ্ট সমস্যা ক্ষেত্রের আনুষ্ঠানিক জ্ঞান উপস্থাপনার মাধ্যমে স্পষ্ট নির্দিষ্টকরণকে বোঝায়। সবচেয়ে সহজ অন্টোলজি কেবল একটি সমস্যা ক্ষেত্রের বস্তুর শ্রেণিবিন্যাস হতে পারে, তবে আরও জটিল অন্টোলজিগুলিতে এমন নিয়ম অন্তর্ভুক্ত থাকবে যা উপসংহারের জন্য ব্যবহার করা যেতে পারে। + +সেমান্টিক ওয়েবে, সমস্ত উপস্থাপনা ট্রিপলেটের উপর ভিত্তি করে। প্রতিটি বস্তু এবং প্রতিটি সম্পর্ক URI দ্বারা অনন্যভাবে চিহ্নিত করা হয়। উদাহরণস্বরূপ, যদি আমরা বলতে চাই যে এই AI কারিকুলামটি দিমিত্রি সশনিকভ দ্বারা ১ জানুয়ারি, ২০২২-এ তৈরি করা হয়েছে - এখানে আমরা যে ট্রিপলেটগুলি ব্যবহার করতে পারি: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ এখানে `http://www.example.com/terms/creation-date` এবং `http://purl.org/dc/elements/1.1/creator` হল *স্রষ্টা* এবং *তৈরির তারিখ* ধারণাগুলি প্রকাশ করার জন্য কিছু সুপরিচিত এবং সর্বজনীনভাবে গৃহীত URI। + +আরও জটিল ক্ষেত্রে, যদি আমরা স্রষ্টাদের একটি তালিকা সংজ্ঞায়িত করতে চাই, তবে আমরা RDF-এ সংজ্ঞায়িত কিছু ডেটা স্ট্রাকচার ব্যবহার করতে পারি। + + + +> উপরের ডায়াগ্রাম [দিমিত্রি সশনিকভ](http://soshnikov.com) দ্বারা + +সার্চ ইঞ্জিন এবং প্রাকৃতিক ভাষা প্রক্রিয়াকরণ কৌশলগুলির সাফল্যের কারণে, যা পাঠ্য থেকে কাঠামোগত ডেটা বের করতে সক্ষম, সেমান্টিক ওয়েব তৈরির অগ্রগতি কিছুটা ধীর হয়ে যায়। তবে, কিছু ক্ষেত্রে অন্টোলজি এবং জ্ঞানভিত্তি বজায় রাখার জন্য এখনও উল্লেখযোগ্য প্রচেষ্টা রয়েছে। কয়েকটি উল্লেখযোগ্য প্রকল্প: + +* [WikiData](https://wikidata.org/) হল উইকিপিডিয়ার সাথে সম্পর্কিত মেশিন-পঠনযোগ্য জ্ঞানভিত্তির একটি সংগ্রহ। বেশিরভাগ ডেটা উইকিপিডিয়ার *ইনফোবক্স* থেকে আহরিত হয়, যা উইকিপিডিয়া পৃষ্ঠাগুলির ভিতরে কাঠামোগত বিষয়বস্তু। আপনি [SPARQL](https://query.wikidata.org/) ব্যবহার করে উইকিডেটা অনুসন্ধান করতে পারেন, যা সেমান্টিক ওয়েবের জন্য একটি বিশেষ অনুসন্ধান ভাষা। এখানে একটি নমুনা অনুসন্ধান রয়েছে যা মানুষের মধ্যে সবচেয়ে জনপ্রিয় চোখের রঙ প্রদর্শন করে: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) হল WikiData-এর মতো আরেকটি উদ্যোগ। + +> ✅ আপনি যদি নিজের অন্টোলজি তৈরি করতে বা বিদ্যমান অন্টোলজি খুলতে পরীক্ষা করতে চান, তবে [Protégé](https://protege.stanford.edu/) নামে একটি চমৎকার ভিজ্যুয়াল অন্টোলজি এডিটর রয়েছে। এটি ডাউনলোড করুন, অথবা অনলাইনে ব্যবহার করুন। + + + +*ওয়েব প্রোটেজ এডিটর রোমানভ পরিবারের অন্টোলজি সহ খোলা। স্ক্রিনশট দিমিত্রি সশনিকভ দ্বারা* + +## ✍️ অনুশীলন: একটি পরিবারের অন্টোলজি + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) দেখুন, যেখানে সেমান্টিক ওয়েব কৌশল ব্যবহার করে পারিবারিক সম্পর্ক নিয়ে যুক্তি করার একটি উদাহরণ রয়েছে। আমরা GEDCOM ফরম্যাটে উপস্থাপিত একটি পারিবারিক গাছ এবং পারিবারিক সম্পর্কের একটি অন্টোলজি নেব এবং নির্দিষ্ট ব্যক্তিদের জন্য সমস্ত পারিবারিক সম্পর্কের একটি গ্রাফ তৈরি করব। + +## মাইক্রোসফট কনসেপ্ট গ্রাফ + +অধিকাংশ ক্ষেত্রে, অন্টোলজি সাবধানে হাতে তৈরি করা হয়। তবে, এটি **অসংগঠিত ডেটা** থেকে অন্টোলজি আহরণ করাও সম্ভব, উদাহরণস্বরূপ, প্রাকৃতিক ভাষার পাঠ্য থেকে। + +মাইক্রোসফট রিসার্চ একটি এমন প্রচেষ্টা চালিয়েছিল, যার ফলাফল ছিল [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste)। + +এটি একটি বৃহৎ সংগ্রহ, যেখানে `is-a` উত্তরাধিকার সম্পর্ক ব্যবহার করে সত্তাগুলিকে একত্রিত করা হয়েছে। এটি "মাইক্রোসফট কী?" এর মতো প্রশ্নের উত্তর দিতে সক্ষম - যার উত্তর হতে পারে "একটি কোম্পানি (সম্ভাবনা ০.৮৭) এবং একটি ব্র্যান্ড (সম্ভাবনা ০.৭৫)"। + +গ্রাফটি REST API বা একটি বড় ডাউনলোডযোগ্য টেক্সট ফাইল হিসাবে উপলব্ধ, যেখানে সমস্ত সত্তা জোড়া তালিকাভুক্ত করা হয়েছে। + +## ✍️ অনুশীলন: একটি কনসেপ্ট গ্রাফ + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) নোটবুকটি চেষ্টা করুন, যেখানে আমরা কীভাবে মাইক্রোসফট কনসেপ্ট গ্রাফ ব্যবহার করে সংবাদ নিবন্ধগুলোকে বিভিন্ন শ্রেণিতে গোষ্ঠীবদ্ধ করতে পারি তা দেখা যাবে। + +## উপসংহার + +বর্তমানে, AI প্রায়শই *মেশিন লার্নিং* বা *নিউরাল নেটওয়ার্কস*-এর সমার্থক হিসাবে বিবেচিত হয়। তবে, একজন মানুষ স্পষ্ট যুক্তি প্রদর্শন করে, যা নিউরাল নেটওয়ার্ক দ্বারা বর্তমানে পরিচালিত হয় না। বাস্তব জীবনের প্রকল্পে, স্পষ্ট যুক্তি এখনও এমন কাজ সম্পাদন করতে ব্যবহৃত হয় যা ব্যাখ্যার প্রয়োজন হয়, অথবা সিস্টেমের আচরণকে নিয়ন্ত্রিত উপায়ে পরিবর্তন করার ক্ষমতা প্রয়োজন। + +## 🚀 চ্যালেঞ্জ + +এই পাঠের সাথে সম্পর্কিত ফ্যামিলি অন্টোলজি নোটবুকে, অন্যান্য পারিবারিক সম্পর্ক নিয়ে পরীক্ষা করার সুযোগ রয়েছে। পারিবারিক গাছে নতুন সংযোগ আবিষ্কার করার চেষ্টা করুন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## পর্যালোচনা এবং স্ব-অধ্যয়ন + +ইন্টারনেটে গবেষণা করুন এবং এমন ক্ষেত্রগুলি আবিষ্কার করুন যেখানে মানুষ জ্ঞান পরিমাপ এবং কোডিফাই করার চেষ্টা করেছে। ব্লুমের ট্যাক্সোনমি দেখুন এবং ইতিহাসে ফিরে যান, যেখানে মানুষ তাদের পৃথিবীকে বোঝার চেষ্টা করেছিল। লিনিয়াসের কাজ দেখুন, যিনি জীবের একটি ট্যাক্সোনমি তৈরি করেছিলেন, এবং লক্ষ্য করুন কীভাবে দিমিত্রি মেন্ডেলিভ রাসায়নিক উপাদানগুলিকে বর্ণনা এবং গোষ্ঠীবদ্ধ করার একটি উপায় তৈরি করেছিলেন। আপনি আর কী আকর্ষণীয় উদাহরণ খুঁজে পেতে পারেন? + +**অ্যাসাইনমেন্ট**: [একটি অন্টোলজি তৈরি করুন](assignment.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/2-Symbolic/assignment.md b/translations/bn/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..951b9826 --- /dev/null +++ b/translations/bn/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# একটি অনটোলজি তৈরি করুন + +একটি জ্ঞানভিত্তিক ডাটাবেস তৈরি করা মানে হলো একটি মডেলকে শ্রেণীবদ্ধ করা, যা কোনো বিষয়ের সাথে সম্পর্কিত তথ্য উপস্থাপন করে। একটি বিষয় নির্বাচন করুন - যেমন একজন ব্যক্তি, একটি স্থান, বা একটি বস্তু - এবং তারপর সেই বিষয়ের একটি মডেল তৈরি করুন। এই পাঠে বর্ণিত কিছু কৌশল এবং মডেল তৈরির পদ্ধতি ব্যবহার করুন। উদাহরণস্বরূপ, একটি বসার ঘরের অনটোলজি তৈরি করা যেতে পারে, যেখানে আসবাবপত্র, আলো ইত্যাদি অন্তর্ভুক্ত থাকবে। বসার ঘরটি রান্নাঘর থেকে কীভাবে আলাদা? বাথরুম থেকে? আপনি কীভাবে বুঝবেন এটি একটি বসার ঘর এবং ডাইনিং রুম নয়? আপনার অনটোলজি তৈরি করতে [Protégé](https://protege.stanford.edu/) ব্যবহার করুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/bn/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..dfddb655 --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,103 @@ + +# নিউরাল নেটওয়ার্কের পরিচিতি: পারসেপট্রন + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +আধুনিক নিউরাল নেটওয়ার্কের মতো কিছু তৈরি করার প্রথম প্রচেষ্টা করেছিলেন ফ্র্যাঙ্ক রোজেনব্লাট, কর্নেল এরোনটিক্যাল ল্যাবরেটরির একজন বিজ্ঞানী, ১৯৫৭ সালে। এটি একটি হার্ডওয়্যার ইমপ্লিমেন্টেশন ছিল, যার নাম ছিল "মার্ক-১", যা প্রাথমিক জ্যামিতিক আকার যেমন ত্রিভুজ, বর্গক্ষেত্র এবং বৃত্ত চিনতে ডিজাইন করা হয়েছিল। + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> ছবি [উইকিপিডিয়া থেকে](https://en.wikipedia.org/wiki/Perceptron) + +একটি ইনপুট ইমেজ ২০x২০ ফটোসেল অ্যারে দ্বারা উপস্থাপিত হতো, তাই নিউরাল নেটওয়ার্কের ৪০০টি ইনপুট এবং একটি বাইনারি আউটপুট ছিল। একটি সাধারণ নেটওয়ার্কে একটি নিউরন থাকত, যাকে **থ্রেশহোল্ড লজিক ইউনিট** বলা হতো। নিউরাল নেটওয়ার্কের ওজন পটেনশিওমিটারের মতো কাজ করত, যা প্রশিক্ষণের সময় ম্যানুয়ালি সামঞ্জস্য করতে হতো। + +> ✅ একটি পটেনশিওমিটার এমন একটি ডিভাইস যা ব্যবহারকারীকে একটি সার্কিটের রেজিস্ট্যান্স সামঞ্জস্য করতে দেয়। + +> নিউ ইয়র্ক টাইমস সেই সময় পারসেপট্রন সম্পর্কে লিখেছিল: *একটি ইলেকট্রনিক কম্পিউটারের ভ্রূণ যা [নেভি] আশা করে হাঁটতে, কথা বলতে, দেখতে, লিখতে, নিজেকে পুনরুৎপাদন করতে এবং তার অস্তিত্ব সম্পর্কে সচেতন হতে সক্ষম হবে।* + +## পারসেপট্রন মডেল + +ধরা যাক আমাদের মডেলে N সংখ্যক ফিচার রয়েছে, সেক্ষেত্রে ইনপুট ভেক্টরটি হবে N আকারের একটি ভেক্টর। একটি পারসেপট্রন একটি **বাইনারি ক্লাসিফিকেশন** মডেল, অর্থাৎ এটি ইনপুট ডেটার দুটি শ্রেণির মধ্যে পার্থক্য করতে পারে। আমরা ধরে নেব যে প্রতিটি ইনপুট ভেক্টর x-এর জন্য আমাদের পারসেপট্রনের আউটপুট হবে +1 বা -1, শ্রেণির উপর নির্ভর করে। আউটপুটটি নিম্নলিখিত সূত্র ব্যবহার করে গণনা করা হবে: + +y(x) = f(wTx) + +যেখানে f একটি স্টেপ অ্যাক্টিভেশন ফাংশন + + + +## পারসেপট্রন প্রশিক্ষণ + +পারসেপট্রন প্রশিক্ষণ দেওয়ার জন্য আমাদের এমন একটি ওজন ভেক্টর w খুঁজে বের করতে হবে যা বেশিরভাগ মান সঠিকভাবে শ্রেণিবদ্ধ করে, অর্থাৎ সবচেয়ে কম **ত্রুটি** দেয়। এই ত্রুটি E **পারসেপট্রন ক্রাইটেরিয়ন** দ্বারা নিম্নলিখিতভাবে সংজ্ঞায়িত করা হয়: + +E(w) = -∑wTxiti + +যেখানে: + +* যোগফলটি সেই প্রশিক্ষণ ডেটা পয়েন্ট i-এর উপর নেওয়া হয় যা ভুল শ্রেণিবিন্যাসের ফল দেয় +* xi ইনপুট ডেটা, এবং ti নেতিবাচক এবং ইতিবাচক উদাহরণের জন্য যথাক্রমে -1 বা +1। + +এই ক্রাইটেরিয়াকে ওজন w-এর একটি ফাংশন হিসাবে বিবেচনা করা হয়, এবং আমাদের এটি সর্বনিম্ন করতে হবে। প্রায়শই, **গ্রেডিয়েন্ট ডিসেন্ট** নামে একটি পদ্ধতি ব্যবহার করা হয়, যেখানে আমরা কিছু প্রাথমিক ওজন w(0) দিয়ে শুরু করি এবং তারপর প্রতিটি ধাপে নিম্নলিখিত সূত্র অনুযায়ী ওজন আপডেট করি: + +w(t+1) = w(t) - η∇E(w) + +এখানে η হলো **লার্নিং রেট**, এবং ∇E(w) হলো E-এর **গ্রেডিয়েন্ট**। গ্রেডিয়েন্ট গণনা করার পরে আমরা পাই: + +w(t+1) = w(t) + ∑ηxiti + +পাইথনে অ্যালগরিদমটি দেখতে এমন হবে: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## উপসংহার + +এই পাঠে, আপনি একটি পারসেপট্রন সম্পর্কে শিখেছেন, যা একটি বাইনারি ক্লাসিফিকেশন মডেল, এবং কীভাবে এটি একটি ওজন ভেক্টর ব্যবহার করে প্রশিক্ষণ দিতে হয়। + +## 🚀 চ্যালেঞ্জ + +আপনি যদি নিজের পারসেপট্রন তৈরি করতে চান, তবে [Microsoft Learn-এর এই ল্যাবটি](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) চেষ্টা করুন, যা [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) ব্যবহার করে। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +কীভাবে আমরা একটি টয় সমস্যা এবং বাস্তব জীবনের সমস্যাগুলি সমাধান করতে পারসেপট্রন ব্যবহার করতে পারি তা দেখতে এবং শেখা চালিয়ে যেতে [পারসেপট্রন](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) নোটবুকে যান। + +এখানে পারসেপট্রন সম্পর্কে একটি আকর্ষণীয় [প্রবন্ধ](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) রয়েছে। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই পাঠে, আমরা একটি বাইনারি ক্লাসিফিকেশন টাস্কের জন্য একটি পারসেপট্রন বাস্তবায়ন করেছি এবং এটি ব্যবহার করে দুটি হাতে লেখা সংখ্যার মধ্যে শ্রেণিবিন্যাস করেছি। এই ল্যাবে, আপনাকে সম্পূর্ণ সংখ্যার শ্রেণিবিন্যাস সমস্যাটি সমাধান করতে বলা হয়েছে, অর্থাৎ একটি প্রদত্ত চিত্রের সাথে কোন সংখ্যা সবচেয়ে বেশি মিলে যায় তা নির্ধারণ করতে হবে। + +* [নির্দেশাবলী](lab/README.md) +* [নোটবুক](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/bn/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..a50680cb --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# পারসেপট্রনের মাধ্যমে মাল্টি-ক্লাস শ্রেণীবিন্যাস + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +এই পাঠে আমরা MNIST হাতে লেখা সংখ্যার বাইনারি শ্রেণীবিন্যাসের জন্য যে কোড তৈরি করেছি, তা ব্যবহার করে একটি মাল্টি-ক্লাস শ্রেণীবিন্যাসকারী তৈরি করুন, যা যেকোনো সংখ্যা সনাক্ত করতে সক্ষম হবে। ট্রেন এবং টেস্ট ডেটাসেটে শ্রেণীবিন্যাসের সঠিকতা গণনা করুন এবং কনফিউশন ম্যাট্রিক্স প্রিন্ট করুন। + +## পরামর্শ + +1. প্রতিটি সংখ্যার জন্য একটি ডেটাসেট তৈরি করুন, যা "এই সংখ্যা বনাম অন্যান্য সব সংখ্যা" এর জন্য একটি বাইনারি শ্রেণীবিন্যাসকারী হবে। +1. বাইনারি শ্রেণীবিন্যাসের জন্য ১০টি ভিন্ন পারসেপট্রন প্রশিক্ষণ দিন (প্রতিটি সংখ্যার জন্য একটি করে)। +1. একটি ফাংশন সংজ্ঞায়িত করুন, যা ইনপুট সংখ্যাকে শ্রেণীবিন্যাস করবে। + +> **পরামর্শ**: যদি আমরা ১০টি পারসেপট্রনের ওজন একত্রিত করে একটি ম্যাট্রিক্স তৈরি করি, তবে আমরা একটি ম্যাট্রিক্স গুণফল ব্যবহার করে ইনপুট সংখ্যার উপর ১০টি পারসেপট্রন প্রয়োগ করতে পারব। তারপর আউটপুটে `argmax` অপারেশন প্রয়োগ করে সবচেয়ে সম্ভাব্য সংখ্যাটি খুঁজে বের করা যাবে। + +## শুরু করার নোটবুক + +ল্যাব শুরু করতে [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) খুলুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/bn/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..343b861c --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# নিউরাল নেটওয়ার্কের পরিচিতি। মাল্টি-লেয়ার পারসেপট্রন + +পূর্ববর্তী অংশে, আপনি সবচেয়ে সহজ নিউরাল নেটওয়ার্ক মডেল - এক-স্তর বিশিষ্ট পারসেপট্রন, একটি লিনিয়ার দুই-শ্রেণীর শ্রেণীবিন্যাস মডেল সম্পর্কে শিখেছেন। + +এই অংশে আমরা এই মডেলটিকে আরও নমনীয় কাঠামোতে প্রসারিত করব, যা আমাদেরকে সক্ষম করবে: + +* **মাল্টি-ক্লাস শ্রেণীবিন্যাস** সম্পাদন করতে দুই-শ্রেণীর শ্রেণীবিন্যাসের পাশাপাশি +* **রিগ্রেশন সমস্যাগুলি** সমাধান করতে শ্রেণীবিন্যাসের পাশাপাশি +* এমন শ্রেণীগুলি আলাদা করতে যা লিনিয়ারভাবে পৃথকযোগ্য নয় + +আমরা আমাদের নিজস্ব মডুলার ফ্রেমওয়ার্কও তৈরি করব যা আমাদের বিভিন্ন নিউরাল নেটওয়ার্ক আর্কিটেকচার তৈরি করতে সাহায্য করবে। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## মেশিন লার্নিংয়ের আনুষ্ঠানিকীকরণ + +চলুন মেশিন লার্নিং সমস্যার আনুষ্ঠানিকীকরণ দিয়ে শুরু করি। ধরুন আমাদের কাছে একটি প্রশিক্ষণ ডেটাসেট **X** এবং লেবেল **Y** রয়েছে, এবং আমাদের একটি মডেল *f* তৈরি করতে হবে যা সবচেয়ে সঠিক পূর্বাভাস দেবে। পূর্বাভাসের গুণমান **লস ফাংশন** ℒ দ্বারা পরিমাপ করা হয়। নিম্নলিখিত লস ফাংশনগুলি প্রায়শই ব্যবহৃত হয়: + +* রিগ্রেশন সমস্যার জন্য, যেখানে আমাদের একটি সংখ্যা পূর্বাভাস দিতে হবে, আমরা **অ্যাবসোলিউট এরর** ∑i|f(x(i))-y(i)|, অথবা **স্কোয়ারড এরর** ∑i(f(x(i))-y(i))2 ব্যবহার করতে পারি। +* শ্রেণীবিন্যাসের জন্য, আমরা **0-1 লস** (যা মূলত মডেলের **সঠিকতা**), অথবা **লজিস্টিক লস** ব্যবহার করি। + +এক-স্তর পারসেপট্রনের ক্ষেত্রে, ফাংশন *f* একটি লিনিয়ার ফাংশন হিসাবে সংজ্ঞায়িত করা হয়েছিল *f(x)=wx+b* (এখানে *w* হলো ওজন ম্যাট্রিক্স, *x* হলো ইনপুট বৈশিষ্ট্যের ভেক্টর, এবং *b* হলো বায়াস ভেক্টর)। বিভিন্ন নিউরাল নেটওয়ার্ক আর্কিটেকচারের জন্য, এই ফাংশনটি আরও জটিল রূপ নিতে পারে। + +> শ্রেণীবিন্যাসের ক্ষেত্রে, প্রায়ই সংশ্লিষ্ট শ্রেণীগুলির সম্ভাবনা নেটওয়ার্ক আউটপুট হিসাবে পাওয়া পছন্দনীয়। যেকোনো সংখ্যাকে সম্ভাবনায় রূপান্তর করতে (যেমন আউটপুটকে স্বাভাবিক করতে), আমরা প্রায়ই **সফটম্যাক্স** ফাংশন σ ব্যবহার করি, এবং ফাংশন *f* হয়ে যায় *f(x)=σ(wx+b)*। + +উপরের *f* এর সংজ্ঞায়, *w* এবং *b* কে **প্যারামিটার** বলা হয় θ=⟨*w,b*⟩। ডেটাসেট ⟨**X**,**Y**⟩ দেওয়া হলে, আমরা পুরো ডেটাসেটের উপর সামগ্রিক ত্রুটি প্যারামিটার θ এর একটি ফাংশন হিসাবে গণনা করতে পারি। + +> ✅ **নিউরাল নেটওয়ার্ক প্রশিক্ষণের লক্ষ্য হলো প্যারামিটার θ পরিবর্তন করে ত্রুটি কমানো।** + +## গ্রেডিয়েন্ট ডিসেন্ট অপ্টিমাইজেশন + +ফাংশন অপ্টিমাইজেশনের একটি সুপরিচিত পদ্ধতি হলো **গ্রেডিয়েন্ট ডিসেন্ট**। ধারণাটি হলো আমরা লস ফাংশনের প্যারামিটারগুলির সাথে সম্পর্কিত ডেরিভেটিভ (মাল্টি-ডাইমেনশনাল ক্ষেত্রে **গ্রেডিয়েন্ট** বলা হয়) গণনা করতে পারি এবং প্যারামিটারগুলিকে এমনভাবে পরিবর্তন করতে পারি যাতে ত্রুটি কমে যায়। এটি নিম্নরূপ আনুষ্ঠানিকভাবে প্রকাশ করা যেতে পারে: + +* প্যারামিটারগুলি কিছু র্যান্ডম মান দ্বারা প্রাথমিকভাবে সেট করুন w(0), b(0) +* নিম্নলিখিত ধাপটি অনেকবার পুনরাবৃত্তি করুন: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +প্রশিক্ষণের সময়, অপ্টিমাইজেশনের ধাপগুলি পুরো ডেটাসেট বিবেচনা করে গণনা করা উচিত (মনে রাখবেন যে লস সমস্ত প্রশিক্ষণ নমুনার মাধ্যমে যোগফল হিসাবে গণনা করা হয়)। তবে, বাস্তবে আমরা ডেটাসেটের ছোট অংশগুলি, যাকে **মিনিব্যাচ** বলা হয়, গ্রহণ করি এবং ডেটার একটি উপসেটের উপর ভিত্তি করে গ্রেডিয়েন্ট গণনা করি। যেহেতু প্রতিবার র্যান্ডমভাবে উপসেট নেওয়া হয়, এই পদ্ধতিকে **স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট** (SGD) বলা হয়। + +## মাল্টি-লেয়ার পারসেপট্রন এবং ব্যাকপ্রোপাগেশন + +এক-স্তর নেটওয়ার্ক, যেমন আমরা উপরে দেখেছি, লিনিয়ারভাবে পৃথকযোগ্য শ্রেণীগুলি শ্রেণীবিন্যাস করতে সক্ষম। একটি সমৃদ্ধ মডেল তৈরি করতে, আমরা নেটওয়ার্কের একাধিক স্তর একত্রিত করতে পারি। গাণিতিকভাবে এটি বোঝায় যে ফাংশন *f* আরও জটিল রূপ নেবে এবং এটি কয়েকটি ধাপে গণনা করা হবে: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +এখানে, α হলো একটি **নন-লিনিয়ার অ্যাক্টিভেশন ফাংশন**, σ হলো সফটম্যাক্স ফাংশন, এবং প্যারামিটার θ=<*w1,b1,w2,b2*>। + +গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম একই থাকবে, তবে গ্রেডিয়েন্ট গণনা করা আরও কঠিন হবে। চেইন ডিফারেনশিয়েশন নিয়ম অনুসারে, আমরা ডেরিভেটিভগুলি নিম্নরূপ গণনা করতে পারি: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ চেইন ডিফারেনশিয়েশন নিয়মটি লস ফাংশনের প্যারামিটারগুলির সাথে সম্পর্কিত ডেরিভেটিভ গণনা করতে ব্যবহৃত হয়। + +লক্ষ্য করুন যে এই সমস্ত অভিব্যক্তির বাম দিকের অংশটি একই, এবং তাই আমরা কার্যকরভাবে লস ফাংশন থেকে শুরু করে "পিছনের দিকে" কম্পিউটেশনাল গ্রাফের মাধ্যমে ডেরিভেটিভগুলি গণনা করতে পারি। তাই মাল্টি-লেয়ার পারসেপট্রন প্রশিক্ষণের পদ্ধতিকে **ব্যাকপ্রোপাগেশন**, বা 'ব্যাকপ্রপ' বলা হয়। + +কম্পিউট গ্রাফ + +> TODO: চিত্রের সূত্র + +> ✅ আমরা আমাদের নোটবুক উদাহরণে ব্যাকপ্রপ আরও বিস্তারিতভাবে আলোচনা করব। + +## উপসংহার + +এই পাঠে, আমরা আমাদের নিজস্ব নিউরাল নেটওয়ার্ক লাইব্রেরি তৈরি করেছি, এবং আমরা এটি একটি সহজ দুই-মাত্রিক শ্রেণীবিন্যাস কাজের জন্য ব্যবহার করেছি। + +## 🚀 চ্যালেঞ্জ + +সংলগ্ন নোটবুকে, আপনি মাল্টি-লেয়ার পারসেপট্রন তৈরি এবং প্রশিক্ষণের জন্য আপনার নিজস্ব ফ্রেমওয়ার্ক বাস্তবায়ন করবেন। আপনি বিস্তারিতভাবে দেখতে পারবেন কীভাবে আধুনিক নিউরাল নেটওয়ার্ক কাজ করে। + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) নোটবুকে যান এবং এটি সম্পূর্ণ করুন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +ব্যাকপ্রোপাগেশন হলো AI এবং ML-এ ব্যবহৃত একটি সাধারণ অ্যালগরিদম, যা [বিস্তারিতভাবে অধ্যয়ন](https://wikipedia.org/wiki/Backpropagation) করার মতো। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই ল্যাবে, আপনাকে এই পাঠে তৈরি করা ফ্রেমওয়ার্ক ব্যবহার করে MNIST হাতে লেখা সংখ্যার শ্রেণীবিন্যাস সমাধান করতে বলা হয়েছে। + +* [নির্দেশনা](lab/README.md) +* [নোটবুক](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/bn/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..1f92a2a0 --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# আমাদের নিজস্ব ফ্রেমওয়ার্ক দিয়ে MNIST শ্রেণীবিভাজন + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +১-, ২- এবং ৩-স্তর বিশিষ্ট পার্সেপট্রন ব্যবহার করে MNIST হাতে লেখা সংখ্যার শ্রেণীবিভাজন সমস্যার সমাধান করুন। এই পাঠে আমরা যে নিউরাল নেটওয়ার্ক ফ্রেমওয়ার্ক তৈরি করেছি তা ব্যবহার করুন। + +## শুরু করার নোটবুক + +ল্যাব শুরু করতে [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) খুলুন। + +## প্রশ্নসমূহ + +এই ল্যাবের ফলাফল হিসেবে, নিচের প্রশ্নগুলোর উত্তর দেওয়ার চেষ্টা করুন: + +- কি আন্তঃস্তর অ্যাক্টিভেশন ফাংশন নেটওয়ার্কের কার্যকারিতাকে প্রভাবিত করে? +- এই কাজের জন্য কি আমাদের ২- বা ৩-স্তর বিশিষ্ট নেটওয়ার্কের প্রয়োজন? +- নেটওয়ার্ক প্রশিক্ষণ দিতে গিয়ে কি কোনো সমস্যা হয়েছে? বিশেষ করে স্তরের সংখ্যা বাড়ার সাথে সাথে। +- প্রশিক্ষণের সময় নেটওয়ার্কের ওজন কীভাবে আচরণ করে? আপনি ওজনের সর্বাধিক মানের পরিবর্তন বনাম epoch এর সম্পর্ক বুঝতে গ্রাফ আঁকতে পারেন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/bn/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..25026d6e --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# নিউরাল নেটওয়ার্ক ফ্রেমওয়ার্ক + +আমরা ইতিমধ্যেই শিখেছি যে, নিউরাল নেটওয়ার্কগুলোকে দক্ষতার সাথে প্রশিক্ষণ দিতে হলে আমাদের দুটি কাজ করতে হয়: + +* টেনসরের উপর কাজ করা, যেমন গুণ, যোগ এবং কিছু ফাংশন (যেমন সিগময়েড বা সফটম্যাক্স) গণনা করা +* সমস্ত এক্সপ্রেশনের গ্রেডিয়েন্ট গণনা করা, যাতে গ্রেডিয়েন্ট ডিজসেন্ট অপ্টিমাইজেশন করা যায় + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +যদিও `numpy` লাইব্রেরি প্রথম কাজটি করতে পারে, আমাদের গ্রেডিয়েন্ট গণনার জন্য একটি প্রক্রিয়া প্রয়োজন। [আমাদের ফ্রেমওয়ার্কে](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), যা আমরা আগের সেকশনে তৈরি করেছি, সেখানে `backward` মেথডের মধ্যে সমস্ত ডেরিভেটিভ ফাংশন ম্যানুয়ালি প্রোগ্রাম করতে হয়েছিল, যা ব্যাকপ্রোপাগেশন করে। আদর্শভাবে, একটি ফ্রেমওয়ার্ক আমাদের *যেকোনো এক্সপ্রেশন* এর গ্রেডিয়েন্ট গণনার সুযোগ দেবে যা আমরা সংজ্ঞায়িত করতে পারি। + +আরেকটি গুরুত্বপূর্ণ বিষয় হলো GPU বা অন্য কোনো বিশেষায়িত কম্পিউট ইউনিট (যেমন [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit))-এ গণনা সম্পাদন করার ক্ষমতা থাকা। ডিপ নিউরাল নেটওয়ার্ক প্রশিক্ষণে *অনেক* গণনা প্রয়োজন হয়, এবং GPU-তে এই গণনাগুলো প্যারালালাইজ করা অত্যন্ত গুরুত্বপূর্ণ। + +> ✅ 'প্যারালালাইজ' শব্দটি বোঝায় যে গণনাগুলোকে একাধিক ডিভাইসে বিতরণ করা। + +বর্তমানে, সবচেয়ে জনপ্রিয় দুটি নিউরাল ফ্রেমওয়ার্ক হলো: [TensorFlow](http://TensorFlow.org) এবং [PyTorch](https://pytorch.org/)। উভয়ই CPU এবং GPU-তে টেনসরের সাথে কাজ করার জন্য একটি লো-লেভেল API প্রদান করে। লো-লেভেল API-এর উপরে, একটি হাই-লেভেল API রয়েছে, যথাক্রমে [Keras](https://keras.io/) এবং [PyTorch Lightning](https://pytorchlightning.ai/) নামে পরিচিত। + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**লো-লেভেল API** উভয় ফ্রেমওয়ার্কেই তথাকথিত **কম্পিউটেশনাল গ্রাফ** তৈরি করার সুযোগ দেয়। এই গ্রাফটি সংজ্ঞায়িত করে যে কিভাবে প্রদত্ত ইনপুট প্যারামিটার দিয়ে আউটপুট (সাধারণত লস ফাংশন) গণনা করতে হবে, এবং এটি GPU-তে গণনার জন্য পাঠানো যেতে পারে, যদি এটি উপলব্ধ থাকে। এই কম্পিউটেশনাল গ্রাফটি ডিফারেনশিয়েট করার এবং গ্রেডিয়েন্ট গণনার ফাংশন রয়েছে, যা মডেলের প্যারামিটার অপ্টিমাইজেশনের জন্য ব্যবহার করা যেতে পারে। + +**হাই-লেভেল API** মূলত নিউরাল নেটওয়ার্কগুলোকে **লেয়ারের একটি সিকোয়েন্স** হিসেবে বিবেচনা করে এবং বেশিরভাগ নিউরাল নেটওয়ার্ক তৈরি করা অনেক সহজ করে তোলে। মডেল প্রশিক্ষণ সাধারণত ডেটা প্রস্তুত করা এবং তারপর একটি `fit` ফাংশন কল করার মাধ্যমে সম্পন্ন হয়। + +হাই-লেভেল API আপনাকে খুব দ্রুত সাধারণ নিউরাল নেটওয়ার্ক তৈরি করতে দেয়, অনেক বিস্তারিত বিষয়ে চিন্তা না করেই। একই সময়ে, লো-লেভেল API প্রশিক্ষণ প্রক্রিয়ার উপর অনেক বেশি নিয়ন্ত্রণ প্রদান করে, এবং তাই এটি গবেষণায় ব্যাপকভাবে ব্যবহৃত হয়, যখন আপনি নতুন নিউরাল নেটওয়ার্ক আর্কিটেকচারের সাথে কাজ করছেন। + +এটি বোঝা গুরুত্বপূর্ণ যে আপনি উভয় API একসাথে ব্যবহার করতে পারেন, যেমন: আপনি লো-লেভেল API ব্যবহার করে আপনার নিজস্ব নেটওয়ার্ক লেয়ার আর্কিটেকচার তৈরি করতে পারেন এবং তারপর এটি একটি বড় নেটওয়ার্কের মধ্যে ব্যবহার করতে পারেন যা হাই-লেভেল API দিয়ে তৈরি এবং প্রশিক্ষিত। অথবা আপনি হাই-লেভেল API ব্যবহার করে লেয়ারের একটি সিকোয়েন্স হিসেবে একটি নেটওয়ার্ক সংজ্ঞায়িত করতে পারেন এবং তারপর আপনার নিজস্ব লো-লেভেল প্রশিক্ষণ লুপ ব্যবহার করে অপ্টিমাইজেশন সম্পাদন করতে পারেন। উভয় API একই মৌলিক ধারণাগুলো ব্যবহার করে এবং একসাথে ভালোভাবে কাজ করার জন্য ডিজাইন করা হয়েছে। + +## শেখা + +এই কোর্সে, আমরা PyTorch এবং TensorFlow উভয়ের জন্যই বেশিরভাগ বিষয়বস্তু প্রদান করি। আপনি আপনার পছন্দের ফ্রেমওয়ার্ক বেছে নিতে পারেন এবং শুধুমাত্র সংশ্লিষ্ট নোটবুকগুলো অনুসরণ করতে পারেন। যদি আপনি নিশ্চিত না হন কোন ফ্রেমওয়ার্কটি বেছে নেবেন, তাহলে **PyTorch বনাম TensorFlow** নিয়ে ইন্টারনেটে কিছু আলোচনা পড়ুন। আপনি উভয় ফ্রেমওয়ার্ক দেখেও একটি ভালো ধারণা পেতে পারেন। + +যেখানে সম্ভব, আমরা সরলতার জন্য হাই-লেভেল API ব্যবহার করব। তবে, আমরা বিশ্বাস করি যে নিউরাল নেটওয়ার্কগুলো কীভাবে কাজ করে তা মাটি থেকে বুঝতে পারা গুরুত্বপূর্ণ, তাই শুরুতে আমরা লো-লেভেল API এবং টেনসরের সাথে কাজ করে শুরু করব। তবে, যদি আপনি দ্রুত শুরু করতে চান এবং এই বিস্তারিত বিষয়গুলো শেখার জন্য বেশি সময় ব্যয় করতে না চান, তাহলে আপনি সেগুলো এড়িয়ে সরাসরি হাই-লেভেল API নোটবুকে যেতে পারেন। + +## ✍️ অনুশীলন: ফ্রেমওয়ার্ক + +নিম্নলিখিত নোটবুকগুলোতে আপনার শেখা চালিয়ে যান: + +Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +ফ্রেমওয়ার্কগুলো আয়ত্ত করার পরে, ওভারফিটিং ধারণাটি পুনরায় দেখুন। + +# ওভারফিটিং + +ওভারফিটিং মেশিন লার্নিংয়ের একটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, এবং এটি সঠিকভাবে বোঝা অত্যন্ত গুরুত্বপূর্ণ! + +নিচের ৫টি বিন্দু (গ্রাফে `x` দ্বারা চিহ্নিত) আনুমানিক করার সমস্যাটি বিবেচনা করুন: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bn.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bn.jpg) +-------------------------|-------------------------- +**লিনিয়ার মডেল, ২টি প্যারামিটার** | **নন-লিনিয়ার মডেল, ৭টি প্যারামিটার** +প্রশিক্ষণ ত্রুটি = ৫.৩ | প্রশিক্ষণ ত্রুটি = ০ +ভ্যালিডেশন ত্রুটি = ৫.১ | ভ্যালিডেশন ত্রুটি = ২০ + +* বামদিকে, আমরা একটি ভালো সরল রেখা আনুমানিক দেখতে পাই। কারণ প্যারামিটারের সংখ্যা যথাযথ, মডেলটি বিন্দু বিতরণের প্যাটার্নটি সঠিকভাবে বুঝতে পারে। +* ডানদিকে, মডেলটি অত্যন্ত শক্তিশালী। কারণ আমাদের কাছে মাত্র ৫টি বিন্দু রয়েছে এবং মডেলের ৭টি প্যারামিটার রয়েছে, এটি এমনভাবে সামঞ্জস্য করতে পারে যাতে সমস্ত বিন্দুর মধ্য দিয়ে যায়, প্রশিক্ষণ ত্রুটিকে ০ করে তোলে। তবে, এটি ডেটার পেছনের সঠিক প্যাটার্নটি বুঝতে বাধা দেয়, ফলে ভ্যালিডেশন ত্রুটি খুব বেশি হয়। + +মডেলের সমৃদ্ধি (প্যারামিটারের সংখ্যা) এবং প্রশিক্ষণ নমুনার সংখ্যার মধ্যে সঠিক ভারসাম্য বজায় রাখা অত্যন্ত গুরুত্বপূর্ণ। + +## কেন ওভারফিটিং ঘটে + + * প্রশিক্ষণ ডেটার অভাব + * অত্যন্ত শক্তিশালী মডেল + * ইনপুট ডেটায় অত্যধিক শব্দ + +## কিভাবে ওভারফিটিং সনাক্ত করবেন + +উপরের গ্রাফ থেকে আপনি দেখতে পাচ্ছেন, ওভারফিটিং খুব কম প্রশিক্ষণ ত্রুটি এবং খুব বেশি ভ্যালিডেশন ত্রুটির মাধ্যমে সনাক্ত করা যায়। সাধারণত প্রশিক্ষণের সময় আমরা দেখতে পাবো প্রশিক্ষণ এবং ভ্যালিডেশন ত্রুটি উভয়ই কমতে শুরু করে, এবং তারপর কোনো এক সময় ভ্যালিডেশন ত্রুটি কমা বন্ধ করে এবং বাড়তে শুরু করে। এটি ওভারফিটিংয়ের একটি চিহ্ন হবে এবং ইঙ্গিত দেবে যে আমাদের সম্ভবত এই সময়ে প্রশিক্ষণ বন্ধ করা উচিত (অথবা অন্তত মডেলের একটি স্ন্যাপশট নেওয়া উচিত)। + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bn.png) + +## কিভাবে ওভারফিটিং প্রতিরোধ করবেন + +যদি আপনি দেখতে পান যে ওভারফিটিং ঘটছে, তাহলে আপনি নিম্নলিখিত কাজগুলো করতে পারেন: + + * প্রশিক্ষণ ডেটার পরিমাণ বৃদ্ধি করুন + * মডেলের জটিলতা হ্রাস করুন + * কিছু [নিয়মিতকরণ কৌশল](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) ব্যবহার করুন, যেমন [ড্রপআউট](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), যা আমরা পরে বিবেচনা করব। + +## ওভারফিটিং এবং বায়াস-ভ্যারিয়েন্স ট্রেডঅফ + +ওভারফিটিং আসলে পরিসংখ্যানের একটি আরও সাধারণ সমস্যার একটি উদাহরণ, যাকে [বায়াস-ভ্যারিয়েন্স ট্রেডঅফ](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) বলা হয়। যদি আমরা আমাদের মডেলের ত্রুটির সম্ভাব্য উৎসগুলো বিবেচনা করি, তাহলে আমরা দুটি ধরণের ত্রুটি দেখতে পাই: + +* **বায়াস ত্রুটি** আমাদের অ্যালগরিদম প্রশিক্ষণ ডেটার সম্পর্কটি সঠিকভাবে ধরতে না পারার কারণে ঘটে। এটি হতে পারে যদি আমাদের মডেল যথেষ্ট শক্তিশালী না হয় (**আন্ডারফিটিং**)। +* **ভ্যারিয়েন্স ত্রুটি**, যা ইনপুট ডেটার শব্দকে অর্থপূর্ণ সম্পর্কের পরিবর্তে আনুমানিক করার কারণে ঘটে (**ওভারফিটিং**)। + +প্রশিক্ষণের সময়, বায়াস ত্রুটি হ্রাস পায় (কারণ আমাদের মডেল ডেটা আনুমানিক করতে শেখে), এবং ভ্যারিয়েন্স ত্রুটি বৃদ্ধি পায়। ওভারফিটিং প্রতিরোধ করতে প্রশিক্ষণ বন্ধ করা গুরুত্বপূর্ণ - হয় ম্যানুয়ালি (যখন আমরা ওভারফিটিং সনাক্ত করি) বা স্বয়ংক্রিয়ভাবে (নিয়মিতকরণ প্রবর্তনের মাধ্যমে)। + +## উপসংহার + +এই পাঠে, আপনি দুটি সবচেয়ে জনপ্রিয় AI ফ্রেমওয়ার্ক, TensorFlow এবং PyTorch-এর বিভিন্ন API-এর মধ্যে পার্থক্য সম্পর্কে শিখেছেন। এছাড়াও, আপনি একটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, ওভারফিটিং সম্পর্কে শিখেছেন। + +## 🚀 চ্যালেঞ্জ + +সংলগ্ন নোটবুকগুলোতে, আপনি 'টাস্ক' পাবেন; নোটবুকগুলো অনুসরণ করুন এবং টাস্কগুলো সম্পূর্ণ করুন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +নিম্নলিখিত বিষয়গুলো নিয়ে কিছু গবেষণা করুন: + +- TensorFlow +- PyTorch +- ওভারফিটিং + +নিজেকে নিম্নলিখিত প্রশ্নগুলো জিজ্ঞাসা করুন: + +- TensorFlow এবং PyTorch-এর মধ্যে পার্থক্য কী? +- ওভারফিটিং এবং আন্ডারফিটিং-এর মধ্যে পার্থক্য কী? + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই ল্যাবে, আপনাকে PyTorch বা TensorFlow ব্যবহার করে একক এবং বহু-স্তরযুক্ত সম্পূর্ণ সংযুক্ত নেটওয়ার্ক ব্যবহার করে দুটি শ্রেণীবিভাজন সমস্যা সমাধান করতে বলা হয়েছে। + +* [নির্দেশাবলী](lab/README.md) +* [নোটবুক](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/bn/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..15351a47 --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# PyTorch/TensorFlow দিয়ে শ্রেণীবিন্যাস + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +PyTorch বা TensorFlow ব্যবহার করে একক এবং বহু-স্তরযুক্ত সম্পূর্ণ সংযুক্ত নেটওয়ার্ক দিয়ে দুটি শ্রেণীবিন্যাস সমস্যা সমাধান করুন: + +1. **[আইরিস শ্রেণীবিন্যাস](https://en.wikipedia.org/wiki/Iris_flower_data_set)** সমস্যা - এটি একটি ট্যাবুলার ইনপুট ডেটার সমস্যা, যা ক্লাসিক্যাল মেশিন লার্নিং দিয়ে সমাধান করা যায়। আপনার লক্ষ্য হবে ৪টি সংখ্যাসূচক প্যারামিটারের উপর ভিত্তি করে আইরিস ফুলকে ৩টি শ্রেণীতে শ্রেণীবদ্ধ করা। +1. **MNIST** হাতে লেখা সংখ্যা শ্রেণীবিন্যাস সমস্যা, যা আমরা আগেও দেখেছি। + +সর্বোচ্চ সঠিকতা অর্জনের জন্য বিভিন্ন নেটওয়ার্ক আর্কিটেকচার চেষ্টা করুন। + +## শুরুর নোটবুক + +ল্যাব শুরু করতে [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) খুলুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/3-NeuralNetworks/README.md b/translations/bn/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..612ab79d --- /dev/null +++ b/translations/bn/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# নিউরাল নেটওয়ার্কের পরিচিতি + +![নিউরাল নেটওয়ার্কের বিষয়বস্তুর সারাংশ একটি ডুডলে](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bn.png) + +যেমনটি আমরা পরিচিতিতে আলোচনা করেছি, বুদ্ধিমত্তা অর্জনের একটি উপায় হল একটি **কম্পিউটার মডেল** বা একটি **কৃত্রিম মস্তিষ্ক** প্রশিক্ষণ দেওয়া। ২০শ শতকের মাঝামাঝি থেকে গবেষকরা বিভিন্ন গাণিতিক মডেল চেষ্টা করেছেন, এবং সাম্প্রতিক বছরগুলোতে এই দিকটি অত্যন্ত সফল প্রমাণিত হয়েছে। মস্তিষ্কের এই ধরনের গাণিতিক মডেলকে **নিউরাল নেটওয়ার্ক** বলা হয়। + +> কখনও কখনও নিউরাল নেটওয়ার্ককে *কৃত্রিম নিউরাল নেটওয়ার্ক*, ANNs বলা হয়, যাতে বোঝানো যায় যে আমরা মডেল নিয়ে কথা বলছি, বাস্তব নিউরনের নেটওয়ার্ক নয়। + +## মেশিন লার্নিং + +নিউরাল নেটওয়ার্ক একটি বৃহত্তর শাখার অংশ, যার নাম **মেশিন লার্নিং**। এর লক্ষ্য হল ডেটা ব্যবহার করে কম্পিউটার মডেল প্রশিক্ষণ দেওয়া যা সমস্যার সমাধান করতে সক্ষম। মেশিন লার্নিং কৃত্রিম বুদ্ধিমত্তার একটি বড় অংশ গঠন করে, তবে আমরা এই পাঠ্যক্রমে ক্লাসিক্যাল মেশিন লার্নিং কভার করব না। + +> ক্লাসিক্যাল মেশিন লার্নিং সম্পর্কে আরও জানতে আমাদের আলাদা **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** পাঠ্যক্রমটি দেখুন। + +মেশিন লার্নিং-এ আমরা ধরে নিই যে আমাদের কাছে কিছু উদাহরণ **X** এবং সংশ্লিষ্ট আউটপুট মান **Y** সহ একটি ডেটাসেট রয়েছে। উদাহরণগুলো প্রায়শই N-ডাইমেনশনাল ভেক্টর হয় যা **ফিচার** নিয়ে গঠিত, এবং আউটপুটগুলোকে **লেবেল** বলা হয়। + +আমরা দুটি সবচেয়ে সাধারণ মেশিন লার্নিং সমস্যার কথা বিবেচনা করব: + +* **ক্লাসিফিকেশন**, যেখানে আমাদের একটি ইনপুট অবজেক্টকে দুই বা ততোধিক শ্রেণিতে শ্রেণিবদ্ধ করতে হবে। +* **রিগ্রেশন**, যেখানে আমাদের প্রতিটি ইনপুট নমুনার জন্য একটি সংখ্যাসূচক মান পূর্বাভাস দিতে হবে। + +> ইনপুট এবং আউটপুটকে টেনসর হিসেবে উপস্থাপন করার সময়, ইনপুট ডেটাসেটটি M×N আকারের একটি ম্যাট্রিক্স, যেখানে M হল নমুনার সংখ্যা এবং N হল ফিচারের সংখ্যা। আউটপুট লেবেল **Y** হল M আকারের একটি ভেক্টর। + +এই পাঠ্যক্রমে, আমরা শুধুমাত্র নিউরাল নেটওয়ার্ক মডেলগুলোর উপর ফোকাস করব। + +## একটি নিউরনের মডেল + +জীববিদ্যা থেকে আমরা জানি যে আমাদের মস্তিষ্ক নিউরাল কোষ নিয়ে গঠিত, প্রতিটি কোষের একাধিক "ইনপুট" (অ্যাক্সন) এবং একটি আউটপুট (ডেনড্রাইট) থাকে। অ্যাক্সন এবং ডেনড্রাইট বৈদ্যুতিক সংকেত পরিবহন করতে পারে, এবং অ্যাক্সন এবং ডেনড্রাইটের মধ্যে সংযোগ বিভিন্ন মাত্রার পরিবাহিতা প্রদর্শন করতে পারে (যা নিউরোমিডিয়েটর দ্বারা নিয়ন্ত্রিত হয়)। + +![একটি নিউরনের মডেল](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bn.jpg) | ![একটি নিউরনের মডেল](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bn.png) +----|---- +বাস্তব নিউরন *([Wikipedia](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) থেকে ইমেজ)* | কৃত্রিম নিউরন *(লেখকের তৈরি ইমেজ)* + +তাই, একটি নিউরনের সবচেয়ে সহজ গাণিতিক মডেলটি কয়েকটি ইনপুট X1, ..., XN এবং একটি আউটপুট Y, এবং একটি সিরিজ ওজন W1, ..., WN নিয়ে গঠিত। আউটপুটটি নিম্নরূপ গণনা করা হয়: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +যেখানে f হল কিছু অ-রৈখিক **অ্যাক্টিভেশন ফাংশন**। + +> নিউরনের প্রাথমিক মডেলগুলো ১৯৪৩ সালে ওয়ারেন ম্যাককালক এবং ওয়াল্টার পিটসের ক্লাসিক্যাল পেপার [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf)-এ বর্ণনা করা হয়েছিল। ডোনাল্ড হেব তার বই "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)"-এ এই নেটওয়ার্কগুলো কীভাবে প্রশিক্ষণ দেওয়া যায় তা প্রস্তাব করেছিলেন। + +## এই অধ্যায়ে + +এই অধ্যায়ে আমরা শিখব: +* [পারসেপট্রন](03-Perceptron/README.md), দুই-শ্রেণির ক্লাসিফিকেশনের জন্য প্রাথমিক নিউরাল নেটওয়ার্ক মডেলগুলোর একটি +* [মাল্টি-লেয়ার নেটওয়ার্ক](04-OwnFramework/README.md) এবং একটি সংযুক্ত নোটবুক [আমাদের নিজস্ব ফ্রেমওয়ার্ক তৈরি করা](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [নিউরাল নেটওয়ার্ক ফ্রেমওয়ার্ক](05-Frameworks/README.md), এই নোটবুকগুলো সহ: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) এবং [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [ওভারফিটিং](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/bn/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..18ea7991 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# কম্পিউটার ভিশনের পরিচিতি + +[কম্পিউটার ভিশন](https://wikipedia.org/wiki/Computer_vision) এমন একটি শাখা যা কম্পিউটারকে ডিজিটাল ইমেজ থেকে উচ্চ-স্তরের বোঝাপড়া অর্জন করতে সক্ষম করে। এটি একটি বিস্তৃত সংজ্ঞা, কারণ *বোঝাপড়া* বিভিন্ন অর্থ বহন করতে পারে, যেমন একটি ছবিতে কোনো বস্তু খুঁজে বের করা (**অবজেক্ট ডিটেকশন**), কী ঘটছে তা বোঝা (**ইভেন্ট ডিটেকশন**), ছবিকে টেক্সটে বর্ণনা করা, অথবা ৩ডি-তে একটি দৃশ্য পুনর্গঠন করা। মানুষের ছবি সম্পর্কিত বিশেষ কিছু কাজও রয়েছে: বয়স এবং আবেগ নির্ধারণ, মুখ সনাক্তকরণ এবং শনাক্তকরণ, এবং ৩ডি পোজ নির্ধারণ, ইত্যাদি। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +কম্পিউটার ভিশনের অন্যতম সহজ কাজ হলো **ইমেজ ক্লাসিফিকেশন**। + +কম্পিউটার ভিশন প্রায়ই কৃত্রিম বুদ্ধিমত্তার (AI) একটি শাখা হিসেবে বিবেচিত হয়। বর্তমানে, বেশিরভাগ কম্পিউটার ভিশনের কাজ নিউরাল নেটওয়ার্ক ব্যবহার করে সমাধান করা হয়। আমরা এই অধ্যায়ে কম্পিউটার ভিশনের জন্য ব্যবহৃত বিশেষ ধরনের নিউরাল নেটওয়ার্ক, [কনভলিউশনাল নিউরাল নেটওয়ার্ক](../07-ConvNets/README.md) সম্পর্কে আরও জানব। + +তবে, একটি ইমেজ নিউরাল নেটওয়ার্কে পাঠানোর আগে, অনেক ক্ষেত্রে ইমেজ উন্নত করতে কিছু অ্যালগরিদমিক কৌশল ব্যবহার করা যৌক্তিক। + +ইমেজ প্রসেসিংয়ের জন্য বেশ কয়েকটি পাইথন লাইব্রেরি উপলব্ধ: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** বিভিন্ন ইমেজ ফরম্যাট পড়া/লেখার জন্য ব্যবহার করা যেতে পারে। এটি ffmpeg সমর্থন করে, যা ভিডিও ফ্রেমকে ইমেজে রূপান্তর করার একটি কার্যকরী টুল। +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL নামেও পরিচিত) আরও শক্তিশালী এবং এটি ইমেজ ম্যানিপুলেশন যেমন মর্ফিং, প্যালেট অ্যাডজাস্টমেন্ট ইত্যাদি সমর্থন করে। +* **[OpenCV](https://opencv.org/)** একটি শক্তিশালী ইমেজ প্রসেসিং লাইব্রেরি যা C++-এ লেখা হয়েছে এবং এটি ইমেজ প্রসেসিংয়ের জন্য *ডি ফ্যাক্টো* স্ট্যান্ডার্ড হয়ে উঠেছে। এর একটি সুবিধাজনক পাইথন ইন্টারফেস রয়েছে। +* **[dlib](http://dlib.net/)** একটি C++ লাইব্রেরি যা অনেক মেশিন লার্নিং অ্যালগরিদম বাস্তবায়ন করে, যার মধ্যে কিছু কম্পিউটার ভিশন অ্যালগরিদমও রয়েছে। এর একটি পাইথন ইন্টারফেস রয়েছে এবং এটি মুখ এবং ফেসিয়াল ল্যান্ডমার্ক ডিটেকশনের মতো চ্যালেঞ্জিং কাজের জন্য ব্যবহার করা যেতে পারে। + +## OpenCV + +[OpenCV](https://opencv.org/) ইমেজ প্রসেসিংয়ের জন্য *ডি ফ্যাক্টো* স্ট্যান্ডার্ড হিসেবে বিবেচিত হয়। এতে অনেক দরকারী অ্যালগরিদম রয়েছে, যা C++-এ বাস্তবায়িত। আপনি পাইথন থেকেও OpenCV কল করতে পারেন। + +OpenCV শেখার একটি ভালো জায়গা হলো [এই Learn OpenCV কোর্স](https://learnopencv.com/getting-started-with-opencv/)। আমাদের পাঠ্যক্রমে, আমাদের লক্ষ্য OpenCV শেখা নয়, বরং এটি কখন এবং কীভাবে ব্যবহার করা যায় তার কিছু উদাহরণ দেখানো। + +### ইমেজ লোড করা + +পাইথনে ইমেজ সহজেই NumPy অ্যারে দ্বারা উপস্থাপন করা যায়। উদাহরণস্বরূপ, ৩২০x২০০ পিক্সেলের গ্রেস্কেল ইমেজ একটি ২০০x৩২০ অ্যারেতে সংরক্ষিত হবে, এবং একই মাত্রার রঙিন ইমেজের আকার হবে ২০০x৩২০x৩ (৩টি রঙ চ্যানেলের জন্য)। একটি ইমেজ লোড করতে, আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +ঐতিহ্যগতভাবে, OpenCV রঙিন ইমেজের জন্য BGR (নীল-সবুজ-লাল) এনকোডিং ব্যবহার করে, যেখানে পাইথনের অন্যান্য টুলগুলি আরও প্রচলিত RGB (লাল-সবুজ-নীল) ব্যবহার করে। ইমেজটি সঠিকভাবে দেখানোর জন্য, আপনাকে এটি RGB রঙ স্পেসে রূপান্তর করতে হবে, হয় NumPy অ্যারেতে ডাইমেনশন অদলবদল করে, অথবা একটি OpenCV ফাংশন কল করে: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +একই `cvtColor` ফাংশনটি অন্যান্য রঙ স্পেস রূপান্তর যেমন ইমেজকে গ্রেস্কেলে বা HSV (Hue-Saturation-Value) রঙ স্পেসে রূপান্তর করতেও ব্যবহার করা যেতে পারে। + +আপনি OpenCV ব্যবহার করে ভিডিও ফ্রেম-বাই-ফ্রেম লোড করতে পারেন - একটি উদাহরণ [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)-এ দেওয়া হয়েছে। + +### ইমেজ প্রসেসিং + +একটি ইমেজ নিউরাল নেটওয়ার্কে পাঠানোর আগে, আপনি কয়েকটি প্রি-প্রসেসিং ধাপ প্রয়োগ করতে চাইতে পারেন। OpenCV অনেক কিছু করতে পারে, যার মধ্যে রয়েছে: + +* **ইমেজ রিসাইজ করা** `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` ব্যবহার করে +* **ইমেজ ব্লার করা** `im = cv2.medianBlur(im,3)` বা `im = cv2.GaussianBlur(im, (3,3), 0)` ব্যবহার করে +* ইমেজের **উজ্জ্বলতা এবং কনট্রাস্ট পরিবর্তন** করা NumPy অ্যারে ম্যানিপুলেশন দ্বারা করা যেতে পারে, যেমনটি [এই Stackoverflow নোটে](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) বর্ণনা করা হয়েছে। +* [থ্রেশোল্ডিং](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) ব্যবহার করা `cv2.threshold`/`cv2.adaptiveThreshold` ফাংশন কল করে, যা প্রায়ই উজ্জ্বলতা বা কনট্রাস্ট সামঞ্জস্য করার চেয়ে বেশি কার্যকর। +* ইমেজে বিভিন্ন [রূপান্তর](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) প্রয়োগ করা: + - **[অ্যাফাইন রূপান্তর](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** যদি আপনাকে ইমেজে ঘূর্ণন, রিসাইজিং এবং স্কিউয়িং একত্রিত করতে হয় এবং আপনি ইমেজের তিনটি পয়েন্টের উৎস এবং গন্তব্য অবস্থান জানেন। অ্যাফাইন রূপান্তর সমান্তরাল রেখাগুলিকে সমান্তরাল রাখে। + - **[পার্সপেক্টিভ রূপান্তর](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** যদি আপনি ইমেজের ৪টি পয়েন্টের উৎস এবং গন্তব্য অবস্থান জানেন। উদাহরণস্বরূপ, যদি আপনি একটি স্মার্টফোন ক্যামেরা দিয়ে একটি আয়তাকার ডকুমেন্টের ছবি তোলেন এবং আপনি ডকুমেন্টটির একটি আয়তাকার ইমেজ তৈরি করতে চান। +* ইমেজের ভেতরে গতিবিধি বোঝা **[অপটিক্যাল ফ্লো](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** ব্যবহার করে। + +## কম্পিউটার ভিশনের ব্যবহার উদাহরণ + +আমাদের [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)-এ, আমরা দেখিয়েছি কম্পিউটার ভিশন কীভাবে নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহার করা যেতে পারে: + +* **ব্রেইল বইয়ের একটি ছবির প্রি-প্রসেসিং**। আমরা দেখিয়েছি কীভাবে থ্রেশোল্ডিং, ফিচার ডিটেকশন, পার্সপেক্টিভ ট্রান্সফরমেশন এবং NumPy ম্যানিপুলেশন ব্যবহার করে পৃথক ব্রেইল প্রতীকগুলোকে আলাদা করা যায়, যা পরে একটি নিউরাল নেটওয়ার্ক দ্বারা শ্রেণীবদ্ধ করা হবে। + +![ব্রেইল ইমেজ](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bn.jpeg) | ![প্রি-প্রসেসড ব্রেইল ইমেজ](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bn.png) | ![ব্রেইল প্রতীক](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bn.png) +----|-----|----- + +> ছবি [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) থেকে + +* **ফ্রেম ডিফারেন্স ব্যবহার করে ভিডিওতে গতিবিধি সনাক্তকরণ**। যদি ক্যামেরা স্থির থাকে, তাহলে ক্যামেরা ফিডের ফ্রেমগুলো একে অপরের সাথে বেশ মিল থাকবে। যেহেতু ফ্রেমগুলো অ্যারে হিসেবে উপস্থাপিত হয়, দুটি পরপর ফ্রেমের জন্য সেই অ্যারেগুলো বিয়োগ করলেই পিক্সেলের পার্থক্য পাওয়া যাবে, যা স্থির ফ্রেমের জন্য কম হবে এবং ইমেজে উল্লেখযোগ্য গতিবিধি থাকলে বেশি হবে। + +![ভিডিও ফ্রেম এবং ফ্রেম ডিফারেন্সের ছবি](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bn.png) + +> ছবি [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) থেকে + +* **অপটিক্যাল ফ্লো ব্যবহার করে গতিবিধি সনাক্তকরণ**। [অপটিক্যাল ফ্লো](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) আমাদের বুঝতে সাহায্য করে ভিডিও ফ্রেমের পৃথক পিক্সেলগুলো কীভাবে সরছে। অপটিক্যাল ফ্লোর দুটি ধরন রয়েছে: + + - **ডেন্স অপটিক্যাল ফ্লো** প্রতিটি পিক্সেলের জন্য একটি ভেক্টর ফিল্ড গণনা করে যা দেখায় এটি কোথায় সরছে। + - **স্পার্স অপটিক্যাল ফ্লো** ইমেজের কিছু বৈশিষ্ট্যপূর্ণ অংশ (যেমন প্রান্ত) নিয়ে কাজ করে এবং ফ্রেম থেকে ফ্রেমে তাদের গতিপথ তৈরি করে। + +![অপটিক্যাল ফ্লোর ছবি](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bn.png) + +> ছবি [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) থেকে + +## ✍️ উদাহরণ নোটবুক: OpenCV [OpenCV ইন অ্যাকশন চেষ্টা করুন](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +চলুন OpenCV নিয়ে কিছু পরীক্ষা-নিরীক্ষা করি [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) অন্বেষণ করে। + +## উপসংহার + +কখনও কখনও, গতিবিধি সনাক্তকরণ বা আঙুলের ডগা সনাক্তকরণের মতো তুলনামূলকভাবে জটিল কাজ শুধুমাত্র কম্পিউটার ভিশন ব্যবহার করেই সমাধান করা যায়। তাই, কম্পিউটার ভিশনের মৌলিক কৌশল এবং OpenCV-এর মতো লাইব্রেরিগুলো কী করতে পারে তা জানা খুবই সহায়ক। + +## 🚀 চ্যালেঞ্জ + +AI শো থেকে [এই ভিডিওটি](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) দেখুন Cortic Tigers প্রকল্প সম্পর্কে জানার জন্য এবং কীভাবে তারা একটি রোবটের মাধ্যমে কম্পিউটার ভিশন কাজগুলো গণতান্ত্রিক করতে ব্লক-ভিত্তিক সমাধান তৈরি করেছে। এরকম অন্যান্য প্রকল্প নিয়ে গবেষণা করুন যা নতুন শিক্ষার্থীদের এই ক্ষেত্রে অন্তর্ভুক্ত করতে সাহায্য করে। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +অপটিক্যাল ফ্লো সম্পর্কে আরও পড়ুন [এই চমৎকার টিউটোরিয়ালে](https://learnopencv.com/optical-flow-in-opencv/)। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই ল্যাবে, আপনি সহজ অঙ্গভঙ্গি সহ একটি ভিডিও নেবেন এবং আপনার লক্ষ্য হবে অপটিক্যাল ফ্লো ব্যবহার করে উপরে/নিচে/বামে/ডানে গতিবিধি বের করা। + +পাম মুভমেন্ট ফ্রেম + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/bn/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..ea1494af --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# অপটিক্যাল ফ্লো ব্যবহার করে গতিবিধি সনাক্তকরণ + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +[এই ভিডিওটি](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) বিবেচনা করুন, যেখানে একটি ব্যক্তির হাতের তালু স্থির পটভূমিতে বাম/ডান/উপর/নিচে সরছে। + +**আপনার লক্ষ্য** হবে অপটিক্যাল ফ্লো ব্যবহার করে নির্ধারণ করা, ভিডিওর কোন অংশে উপর/নিচ/বাম/ডান গতিবিধি রয়েছে। + +**অতিরিক্ত লক্ষ্য** হবে হাতের তালু বা আঙুলের গতিবিধি ত্বকের রঙ ব্যবহার করে ট্র্যাক করা, যেমন [এই ব্লগ পোস্টে](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) বা [এখানে](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) বর্ণনা করা হয়েছে। + +## শুরুর নোটবুক + +ল্যাব শুরু করুন [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) খুলে। + +## মূল শিক্ষা + +কখনও কখনও, গতিবিধি সনাক্তকরণ বা আঙুলের ডগা সনাক্তকরণের মতো তুলনামূলকভাবে জটিল কাজ শুধুমাত্র কম্পিউটার ভিশন ব্যবহার করেই সমাধান করা যায়। তাই, OpenCV-এর মতো লাইব্রেরিগুলি কী করতে পারে তা জানা খুবই উপকারী। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/bn/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..d509e03b --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# পরিচিত CNN আর্কিটেকচার + +### VGG-16 + +VGG-16 একটি নেটওয়ার্ক যা ২০১৪ সালে ImageNet টপ-৫ শ্রেণীবিন্যাসে ৯২.৭% সঠিকতা অর্জন করেছিল। এর স্তর কাঠামো নিম্নরূপ: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bn.jpg) + +যেমনটি দেখা যাচ্ছে, VGG একটি ঐতিহ্যবাহী পিরামিড আর্কিটেকচার অনুসরণ করে, যা কনভোলিউশন-পুলিং স্তরের একটি ক্রম। + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bn.jpg) + +> ছবি [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) থেকে + +### ResNet + +ResNet একটি মডেলের পরিবার যা ২০১৫ সালে Microsoft Research দ্বারা প্রস্তাবিত হয়েছিল। ResNet-এর মূল ধারণা হল **রেসিডুয়াল ব্লক** ব্যবহার করা: + + + +> ছবি [এই পেপার](https://arxiv.org/pdf/1512.03385.pdf) থেকে + +আইডেন্টিটি পাস-থ্রু ব্যবহারের কারণ হল আমাদের স্তরকে পূর্ববর্তী স্তরের ফলাফল এবং রেসিডুয়াল ব্লকের আউটপুটের মধ্যে **পার্থক্য** পূর্বাভাস করতে সক্ষম করা - তাই নাম *রেসিডুয়াল*। এই ব্লকগুলি প্রশিক্ষণ করা অনেক সহজ, এবং কয়েক শতাধিক ব্লক নিয়ে নেটওয়ার্ক তৈরি করা সম্ভব (সবচেয়ে সাধারণ ভ্যারিয়েন্টগুলি হল ResNet-52, ResNet-101 এবং ResNet-152)। + +আপনি এই নেটওয়ার্কটিকে ডেটাসেটের সাথে তার জটিলতা সামঞ্জস্য করতে সক্ষম হিসাবে ভাবতে পারেন। প্রথমে, যখন আপনি নেটওয়ার্ক প্রশিক্ষণ শুরু করেন, তখন ওজনের মান ছোট থাকে এবং বেশিরভাগ সংকেত আইডেন্টিটি স্তরগুলির মাধ্যমে যায়। প্রশিক্ষণ চলাকালীন ওজন বড় হয়ে যায়, নেটওয়ার্ক প্যারামিটারগুলির গুরুত্ব বৃদ্ধি পায়, এবং নেটওয়ার্কটি সঠিকভাবে প্রশিক্ষণ চিত্র শ্রেণীবিন্যাস করার জন্য প্রয়োজনীয় এক্সপ্রেসিভ পাওয়ার সামঞ্জস্য করে। + +### Google Inception + +Google Inception আর্কিটেকচার এই ধারণাটিকে আরও এক ধাপ এগিয়ে নিয়ে যায় এবং প্রতিটি নেটওয়ার্ক স্তরকে বিভিন্ন পথের সমন্বয়ে তৈরি করে: + + + +> ছবি [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) থেকে + +এখানে, আমাদের ১x১ কনভোলিউশনগুলির ভূমিকা জোর দিতে হবে, কারণ প্রথমে এগুলি অর্থবোধ করে না। কেন আমরা ১x১ ফিল্টার দিয়ে ছবির উপর চালাব? তবে, মনে রাখতে হবে যে কনভোলিউশন ফিল্টারগুলি বিভিন্ন গভীরতার চ্যানেলগুলির সাথে কাজ করে (মূলত - RGB রঙ, পরবর্তী স্তরে - বিভিন্ন ফিল্টারের জন্য চ্যানেল), এবং ১x১ কনভোলিউশন বিভিন্ন প্রশিক্ষণযোগ্য ওজন ব্যবহার করে ইনপুট চ্যানেলগুলিকে একত্রিত করতে ব্যবহৃত হয়। এটি চ্যানেল মাত্রার উপর ডাউনস্যাম্পলিং (পুলিং) হিসাবেও দেখা যেতে পারে। + +এখানে [১x১ কনভোলিউশন সম্পর্কে একটি ভালো ব্লগ পোস্ট](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) এবং [মূল পেপার](https://arxiv.org/pdf/1312.4400.pdf)। + +### MobileNet + +MobileNet হল ছোট আকারের মডেলের একটি পরিবার, যা মোবাইল ডিভাইসের জন্য উপযুক্ত। যদি আপনার সম্পদ সীমিত থাকে এবং সামান্য সঠিকতা ত্যাগ করতে পারেন, তবে এগুলি ব্যবহার করুন। এর মূল ধারণা হল **ডেপথওয়াইজ সেপারেবল কনভোলিউশন**, যা স্থানীয় কনভোলিউশন এবং গভীরতার চ্যানেলের উপর ১x১ কনভোলিউশন দ্বারা কনভোলিউশন ফিল্টার উপস্থাপন করতে দেয়। এটি প্যারামিটারের সংখ্যা উল্লেখযোগ্যভাবে কমিয়ে দেয়, নেটওয়ার্কটিকে ছোট আকারে তৈরি করে এবং কম ডেটা দিয়ে প্রশিক্ষণ দেওয়া সহজ করে। + +এখানে [MobileNet সম্পর্কে একটি ভালো ব্লগ পোস্ট](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470)। + +## উপসংহার + +এই ইউনিটে, আপনি কম্পিউটার ভিশন নিউরাল নেটওয়ার্কের মূল ধারণা শিখেছেন - কনভোলিউশনাল নেটওয়ার্ক। বাস্তব জীবনের আর্কিটেকচারগুলি যা ইমেজ ক্লাসিফিকেশন, অবজেক্ট ডিটেকশন, এবং এমনকি ইমেজ জেনারেশন নেটওয়ার্ককে শক্তি প্রদান করে, সবই CNN-এর উপর ভিত্তি করে তৈরি, শুধু আরও স্তর এবং কিছু অতিরিক্ত প্রশিক্ষণ কৌশল সহ। + +## 🚀 চ্যালেঞ্জ + +সংযুক্ত নোটবুকে, নীচে উল্লেখ রয়েছে কীভাবে আরও বেশি সঠিকতা অর্জন করা যায়। কিছু পরীক্ষা-নিরীক্ষা করুন এবং দেখুন আপনি কি আরও বেশি সঠিকতা অর্জন করতে পারেন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +যদিও CNN সাধারণত কম্পিউটার ভিশন কাজের জন্য ব্যবহৃত হয়, এটি সাধারণত নির্দিষ্ট আকারের প্যাটার্ন বের করার জন্য ভালো। উদাহরণস্বরূপ, যদি আমরা শব্দ নিয়ে কাজ করি, আমরা অডিও সিগনালে কিছু নির্দিষ্ট প্যাটার্ন খুঁজতে CNN ব্যবহার করতে চাই - এই ক্ষেত্রে ফিল্টারগুলি ১-ডাইমেনশনাল হবে (এবং এই CNN-কে 1D-CNN বলা হবে)। এছাড়াও, কখনও কখনও 3D-CNN ব্যবহার করা হয় বহু-মাত্রিক স্থানে বৈশিষ্ট্য বের করার জন্য, যেমন ভিডিওতে কিছু নির্দিষ্ট ঘটনা ঘটছে - CNN সময়ের সাথে বৈশিষ্ট্যের পরিবর্তনের নির্দিষ্ট প্যাটার্নগুলি ধরতে পারে। CNN দিয়ে করা যেতে পারে এমন অন্যান্য কাজ সম্পর্কে কিছু পর্যালোচনা এবং স্ব-অধ্যয়ন করুন। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই ল্যাবে, আপনাকে বিভিন্ন বিড়াল এবং কুকুরের জাত শ্রেণীবিন্যাস করতে হবে। এই ছবিগুলি MNIST ডেটাসেটের তুলনায় আরও জটিল এবং উচ্চতর মাত্রার, এবং ১০টির বেশি শ্রেণী রয়েছে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় রচিত সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/bn/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..418a23e5 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# কনভোলিউশনাল নিউরাল নেটওয়ার্ক + +আমরা আগেই দেখেছি যে নিউরাল নেটওয়ার্ক চিত্র বিশ্লেষণে বেশ দক্ষ, এমনকি এক-স্তরের পারসেপট্রনও MNIST ডেটাসেট থেকে হাতের লেখা সংখ্যা সনাক্ত করতে সক্ষম। তবে, MNIST ডেটাসেটটি বিশেষভাবে তৈরি, যেখানে সমস্ত সংখ্যা চিত্রের কেন্দ্রে অবস্থান করে, যা কাজটিকে সহজ করে তোলে। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +বাস্তব জীবনে, আমরা চাই যে চিত্রে বস্তু সনাক্ত করতে পারি, তা যেখানেই থাকুক না কেন। কম্পিউটার ভিশন সাধারণ শ্রেণীবিন্যাস থেকে আলাদা, কারণ যখন আমরা চিত্রে একটি নির্দিষ্ট বস্তু খুঁজতে চাই, তখন আমরা চিত্রটি স্ক্যান করি এবং কিছু নির্দিষ্ট **প্যাটার্ন** এবং তাদের সংমিশ্রণ খুঁজে বের করি। উদাহরণস্বরূপ, একটি বিড়াল খুঁজতে গেলে, আমরা প্রথমে অনুভূমিক রেখা খুঁজতে পারি, যা গোঁফ তৈরি করতে পারে, এবং তারপর গোঁফের একটি নির্দিষ্ট সংমিশ্রণ আমাদের জানাতে পারে যে এটি আসলে একটি বিড়ালের ছবি। নির্দিষ্ট প্যাটার্নের আপেক্ষিক অবস্থান এবং উপস্থিতি গুরুত্বপূর্ণ, তবে চিত্রে তাদের সঠিক অবস্থান নয়। + +প্যাটার্ন বের করতে, আমরা **কনভোলিউশনাল ফিল্টার** ধারণাটি ব্যবহার করব। আপনি জানেন, একটি চিত্র ২D-ম্যাট্রিক্স বা রঙের গভীরতা সহ ৩D-টেনসর দ্বারা উপস্থাপিত হয়। একটি ফিল্টার প্রয়োগ করার অর্থ হল আমরা একটি ছোট **ফিল্টার কার্নেল** ম্যাট্রিক্স নিই এবং মূল চিত্রের প্রতিটি পিক্সেলের জন্য প্রতিবেশী পয়েন্টগুলির সাথে ওজনযুক্ত গড় গণনা করি। আমরা এটি একটি ছোট জানালার মতো দেখতে পারি যা পুরো চিত্রের উপর স্লাইড করে এবং ফিল্টার কার্নেল ম্যাট্রিক্সের ওজন অনুযায়ী সমস্ত পিক্সেল গড় করে। + +![ভার্টিকাল এজ ফিল্টার](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bn.png) | ![হরিজন্টাল এজ ফিল্টার](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bn.png) +----|---- + +> ছবি: দিমিত্রি সশনিকভ + +উদাহরণস্বরূপ, যদি আমরা MNIST সংখ্যাগুলিতে ৩x৩ ভার্টিকাল এজ এবং হরিজন্টাল এজ ফিল্টার প্রয়োগ করি, তাহলে আমরা হাইলাইট (যেমন উচ্চ মান) পেতে পারি যেখানে আমাদের মূল চিত্রে ভার্টিকাল এবং হরিজন্টাল এজ রয়েছে। সুতরাং এই দুটি ফিল্টার "এজ" খুঁজে বের করার জন্য ব্যবহার করা যেতে পারে। অনুরূপভাবে, আমরা অন্যান্য নিম্ন-স্তরের প্যাটার্ন খুঁজে বের করার জন্য বিভিন্ন ফিল্টার ডিজাইন করতে পারি: + +> [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) এর ছবি + +তবে, আমরা যদি কিছু প্যাটার্ন বের করার জন্য ফিল্টারগুলি ম্যানুয়ালি ডিজাইন করতে পারি, আমরা নেটওয়ার্কটিকে এমনভাবে ডিজাইন করতে পারি যাতে এটি স্বয়ংক্রিয়ভাবে প্যাটার্ন শিখতে পারে। এটি CNN-এর পিছনে প্রধান ধারণাগুলির একটি। + +## CNN-এর প্রধান ধারণা + +CNN কাজ করার পদ্ধতি নিম্নলিখিত গুরুত্বপূর্ণ ধারণাগুলির উপর ভিত্তি করে: + +* কনভোলিউশনাল ফিল্টার প্যাটার্ন বের করতে পারে +* আমরা নেটওয়ার্কটিকে এমনভাবে ডিজাইন করতে পারি যাতে ফিল্টারগুলি স্বয়ংক্রিয়ভাবে প্রশিক্ষিত হয় +* আমরা একই পদ্ধতি ব্যবহার করে উচ্চ-স্তরের বৈশিষ্ট্যগুলিতে প্যাটার্ন খুঁজে বের করতে পারি, শুধুমাত্র মূল চিত্রে নয়। সুতরাং CNN বৈশিষ্ট্য নির্যাস একটি বৈশিষ্ট্যের শ্রেণিবিন্যাসে কাজ করে, নিম্ন-স্তরের পিক্সেল সংমিশ্রণ থেকে শুরু করে চিত্রের অংশগুলির উচ্চ-স্তরের সংমিশ্রণ পর্যন্ত। + +![হায়ারারকিকাল ফিচার এক্সট্রাকশন](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bn.png) + +> ছবি: [Hislop-Lynch এর গবেষণাপত্র](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), তাদের [গবেষণার উপর ভিত্তি করে](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ অনুশীলন: কনভোলিউশনাল নিউরাল নেটওয়ার্ক + +চলুন কনভোলিউশনাল নিউরাল নেটওয়ার্ক কীভাবে কাজ করে এবং কীভাবে প্রশিক্ষণযোগ্য ফিল্টার অর্জন করা যায় তা অন্বেষণ চালিয়ে যাই, সংশ্লিষ্ট নোটবুকগুলির মাধ্যমে কাজ করে: + +* [কনভোলিউশনাল নিউরাল নেটওয়ার্ক - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [কনভোলিউশনাল নিউরাল নেটওয়ার্ক - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## পিরামিড আর্কিটেকচার + +চিত্র প্রক্রিয়াকরণের জন্য ব্যবহৃত বেশিরভাগ CNN তথাকথিত পিরামিড আর্কিটেকচার অনুসরণ করে। মূল চিত্রগুলিতে প্রয়োগ করা প্রথম কনভোলিউশনাল স্তরে সাধারণত তুলনামূলকভাবে কম সংখ্যক ফিল্টার থাকে (৮-১৬), যা বিভিন্ন পিক্সেল সংমিশ্রণের সাথে সম্পর্কিত, যেমন অনুভূমিক/ভার্টিকাল রেখা বা স্ট্রোক। পরবর্তী স্তরে, আমরা নেটওয়ার্কের স্থানিক মাত্রা কমিয়ে দিই এবং ফিল্টারের সংখ্যা বাড়াই, যা সাধারণ বৈশিষ্ট্যের আরও সম্ভাব্য সংমিশ্রণের সাথে সম্পর্কিত। প্রতিটি স্তরে, চূড়ান্ত শ্রেণীবিন্যাসকারীর দিকে এগিয়ে যাওয়ার সাথে সাথে চিত্রের স্থানিক মাত্রা হ্রাস পায় এবং ফিল্টারের সংখ্যা বৃদ্ধি পায়। + +উদাহরণস্বরূপ, আসুন VGG-16 এর আর্কিটেকচার দেখি, একটি নেটওয়ার্ক যা ২০১৪ সালে ImageNet-এর টপ-৫ শ্রেণীবিন্যাসে ৯২.৭% সঠিকতা অর্জন করেছিল: + +![ImageNet স্তর](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bn.jpg) + +![ImageNet পিরামিড](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bn.jpg) + +> ছবি: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## সর্বাধিক পরিচিত CNN আর্কিটেকচার + +[সর্বাধিক পরিচিত CNN আর্কিটেকচার সম্পর্কে আপনার অধ্যয়ন চালিয়ে যান](CNN_Architectures.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/bn/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..c5f3ca92 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# পোষা প্রাণীর মুখমণ্ডল শ্রেণীবিভাগ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +ভাবুন, আপনাকে একটি পোষা প্রাণীর নার্সারির জন্য একটি অ্যাপ্লিকেশন তৈরি করতে হবে, যেখানে সব পোষা প্রাণীকে ক্যাটালগ করা হবে। এমন একটি অ্যাপ্লিকেশনের একটি চমৎকার বৈশিষ্ট্য হতে পারে ফটোগ্রাফ থেকে স্বয়ংক্রিয়ভাবে প্রজাতি শনাক্ত করা। এটি নিউরাল নেটওয়ার্ক ব্যবহার করে সফলভাবে করা সম্ভব। + +আপনাকে একটি কনভলিউশনাল নিউরাল নেটওয়ার্ক প্রশিক্ষণ দিতে হবে, যা **Pet Faces** ডেটাসেট ব্যবহার করে বিভিন্ন প্রজাতির বিড়াল এবং কুকুর শ্রেণীবদ্ধ করতে সক্ষম হবে। + +## ডেটাসেট + +আমরা **Pet Faces** ডেটাসেট ব্যবহার করব, যা [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) পোষা প্রাণীর ডেটাসেট থেকে প্রাপ্ত। এতে ৩৫টি ভিন্ন প্রজাতির কুকুর এবং বিড়াল রয়েছে। + +![আমরা যে ডেটাসেট নিয়ে কাজ করব](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bn.png) + +ডেটাসেট ডাউনলোড করতে নিচের কোড স্নিপেটটি ব্যবহার করুন: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## নোটবুক শুরু করা + +ল্যাব শুরু করতে [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) খুলুন। + +## মূল শিক্ষা + +আপনি স্ক্র্যাচ থেকে একটি তুলনামূলকভাবে জটিল ইমেজ শ্রেণীবিভাগ সমস্যার সমাধান করেছেন! এখানে অনেকগুলো শ্রেণী ছিল, তবুও আপনি যুক্তিসঙ্গত নির্ভুলতা অর্জন করতে পেরেছেন! উপরন্তু, টপ-k নির্ভুলতা পরিমাপ করাও যৌক্তিক, কারণ কিছু শ্রেণী এমন রয়েছে যেগুলো মানুষের জন্যও স্পষ্টভাবে আলাদা করা কঠিন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/bn/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..05222e26 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# প্রি-ট্রেইনড নেটওয়ার্ক এবং ট্রান্সফার লার্নিং + +সিএনএন (CNN) প্রশিক্ষণ করতে অনেক সময় লাগে এবং এর জন্য প্রচুর ডেটা প্রয়োজন। তবে, বেশিরভাগ সময় নেটওয়ার্কের জন্য সেরা লো-লেভেল ফিল্টার শেখার কাজে ব্যয় হয়, যা ইমেজ থেকে প্যাটার্ন বের করতে ব্যবহার করা যায়। একটি স্বাভাবিক প্রশ্ন উঠে - আমরা কি একটি ডেটাসেটে প্রশিক্ষিত নিউরাল নেটওয়ার্ক ব্যবহার করে সম্পূর্ণ প্রশিক্ষণ প্রক্রিয়া ছাড়াই বিভিন্ন ইমেজ শ্রেণীবদ্ধ করতে এটি মানিয়ে নিতে পারি? + +## [প্রি-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +এই পদ্ধতিকে **ট্রান্সফার লার্নিং** বলা হয়, কারণ আমরা একটি নিউরাল নেটওয়ার্ক মডেল থেকে অন্যটিতে কিছু জ্ঞান স্থানান্তর করি। ট্রান্সফার লার্নিং-এ, আমরা সাধারণত একটি প্রি-ট্রেইনড মডেল দিয়ে শুরু করি, যা **ইমেজনেট** এর মতো বড় ইমেজ ডেটাসেটে প্রশিক্ষিত হয়েছে। এই মডেলগুলো ইতিমধ্যেই সাধারণ ইমেজ থেকে বিভিন্ন বৈশিষ্ট্য বের করতে ভালো কাজ করতে পারে, এবং অনেক ক্ষেত্রে এই বৈশিষ্ট্যগুলোর উপর ভিত্তি করে একটি ক্লাসিফায়ার তৈরি করলেই ভালো ফলাফল পাওয়া যায়। + +> ✅ ট্রান্সফার লার্নিং শব্দটি অন্যান্য একাডেমিক ক্ষেত্রে যেমন শিক্ষা ক্ষেত্রেও পাওয়া যায়। এটি একটি ক্ষেত্র থেকে জ্ঞান নিয়ে অন্য ক্ষেত্রে প্রয়োগ করার প্রক্রিয়াকে বোঝায়। + +## প্রি-ট্রেইনড মডেলগুলোকে ফিচার এক্সট্রাক্টর হিসেবে ব্যবহার করা + +পূর্ববর্তী অংশে আমরা যে কনভোলিউশনাল নেটওয়ার্ক নিয়ে আলোচনা করেছি, তাতে বেশ কয়েকটি স্তর ছিল, প্রতিটি স্তর ইমেজ থেকে কিছু বৈশিষ্ট্য বের করার জন্য তৈরি। এটি লো-লেভেল পিক্সেল কম্বিনেশন (যেমন অনুভূমিক/উল্লম্ব লাইন বা স্ট্রোক) থেকে শুরু করে উচ্চ-লেভেল বৈশিষ্ট্যের কম্বিনেশন পর্যন্ত যেতে পারে, যা একটি শিখার চোখের মতো জিনিসের সাথে সম্পর্কিত। যদি আমরা সিএনএন-কে যথেষ্ট বড় এবং বৈচিত্র্যময় ইমেজ ডেটাসেটে প্রশিক্ষণ দিই, তাহলে নেটওয়ার্ক সাধারণ বৈশিষ্ট্যগুলো বের করতে শিখবে। + +Keras এবং PyTorch-এ কিছু সাধারণ আর্কিটেকচারের জন্য প্রি-ট্রেইনড নিউরাল নেটওয়ার্ক ওজন সহজেই লোড করার ফাংশন রয়েছে, যেগুলো বেশিরভাগই ইমেজনেট ইমেজে প্রশিক্ষিত। সবচেয়ে বেশি ব্যবহৃত মডেলগুলো পূর্ববর্তী পাঠের [CNN Architectures](../07-ConvNets/CNN_Architectures.md) পৃষ্ঠায় বর্ণনা করা হয়েছে। বিশেষ করে, আপনি নিম্নলিখিতগুলোর মধ্যে একটি ব্যবহার করতে পারেন: + +* **VGG-16/VGG-19**: তুলনামূলকভাবে সহজ মডেল, যা এখনও ভালো সঠিকতা দেয়। ট্রান্সফার লার্নিং কেমন কাজ করছে তা দেখতে প্রথম প্রচেষ্টা হিসেবে VGG ব্যবহার করা একটি ভালো পছন্দ। +* **ResNet**: Microsoft Research দ্বারা ২০১৫ সালে প্রস্তাবিত মডেলের একটি পরিবার। এতে আরও বেশি স্তর রয়েছে, এবং তাই এটি আরও বেশি রিসোর্স নেয়। +* **MobileNet**: ছোট আকারের মডেলের একটি পরিবার, যা মোবাইল ডিভাইসের জন্য উপযুক্ত। যদি আপনার রিসোর্স কম থাকে এবং সামান্য সঠিকতা ত্যাগ করতে পারেন, তাহলে এটি ব্যবহার করুন। + +এখানে VGG-16 নেটওয়ার্ক দ্বারা একটি বিড়ালের ছবি থেকে বের করা নমুনা বৈশিষ্ট্যগুলো দেখানো হয়েছে: + +![VGG-16 দ্বারা বের করা বৈশিষ্ট্য](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bn.png) + +## বিড়াল বনাম কুকুর ডেটাসেট + +এই উদাহরণে, আমরা [Cats and Dogs](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) ডেটাসেট ব্যবহার করব, যা বাস্তব জীবনের ইমেজ শ্রেণীবদ্ধকরণ পরিস্থিতির খুব কাছাকাছি। + +## ✍️ অনুশীলন: ট্রান্সফার লার্নিং + +চলুন সংশ্লিষ্ট নোটবুকে ট্রান্সফার লার্নিং-এর কার্যক্রম দেখি: + +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## অ্যাডভার্সারিয়াল বিড়াল ভিজুয়ালাইজ করা + +প্রি-ট্রেইনড নিউরাল নেটওয়ার্কের *মস্তিষ্কে* বিভিন্ন প্যাটার্ন থাকে, যার মধ্যে **আদর্শ বিড়াল** (এবং আদর্শ কুকুর, আদর্শ জেব্রা, ইত্যাদি) ধারণা অন্তর্ভুক্ত থাকে। এই ইমেজটি **ভিজুয়ালাইজ** করা আকর্ষণীয় হবে। তবে এটি সহজ নয়, কারণ প্যাটার্নগুলো নেটওয়ার্কের ওজনের মধ্যে ছড়িয়ে থাকে এবং একটি হায়ারারকিকাল স্ট্রাকচারে সংগঠিত হয়। + +একটি পদ্ধতি আমরা নিতে পারি তা হলো একটি র্যান্ডম ইমেজ দিয়ে শুরু করা এবং তারপর **গ্রেডিয়েন্ট ডিসেন্ট অপ্টিমাইজেশন** কৌশল ব্যবহার করে সেই ইমেজটি এমনভাবে সামঞ্জস্য করা যাতে নেটওয়ার্কটি মনে করে এটি একটি বিড়াল। + +![ইমেজ অপ্টিমাইজেশন লুপ](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bn.png) + +তবে, যদি আমরা এটি করি, আমরা এমন কিছু পাব যা র্যান্ডম নয়েজের মতো। কারণ *নেটওয়ার্ককে মনে করানোর অনেক উপায় আছে যে ইনপুট ইমেজটি একটি বিড়াল*, যার মধ্যে কিছু ভিজুয়ালি অর্থপূর্ণ নয়। যদিও এই ইমেজগুলোতে বিড়ালের জন্য সাধারণ প্যাটার্ন রয়েছে, এগুলোকে ভিজুয়ালি স্বতন্ত্র করার জন্য কিছুই বাধ্য করে না। + +ফলাফল উন্নত করতে, আমরা লস ফাংশনে আরেকটি টার্ম যোগ করতে পারি, যাকে **ভ্যারিয়েশন লস** বলা হয়। এটি একটি মেট্রিক যা দেখায় ইমেজের প্রতিবেশী পিক্সেলগুলো কতটা মিল। ভ্যারিয়েশন লস কমানো ইমেজকে মসৃণ করে এবং নয়েজ দূর করে - ফলে আরও ভিজুয়ালি আকর্ষণীয় প্যাটার্ন প্রকাশ করে। এখানে এমন "আদর্শ" ইমেজের উদাহরণ রয়েছে, যা উচ্চ সম্ভাবনায় বিড়াল এবং জেব্রা হিসেবে শ্রেণীবদ্ধ: + +![আদর্শ বিড়াল](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bn.png) | ![আদর্শ জেব্রা](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bn.png) +-----|----- + *আদর্শ বিড়াল* | *আদর্শ জেব্রা* + +একই পদ্ধতি ব্যবহার করে তথাকথিত **অ্যাডভার্সারিয়াল আক্রমণ** করা যেতে পারে একটি নিউরাল নেটওয়ার্কে। ধরুন আমরা একটি কুকুরকে বিড়ালের মতো দেখাতে চাই। যদি আমরা কুকুরের একটি ছবি নিই, যা নেটওয়ার্ক দ্বারা কুকুর হিসেবে স্বীকৃত, আমরা তারপর এটি সামান্য পরিবর্তন করতে পারি গ্রেডিয়েন্ট ডিসেন্ট অপ্টিমাইজেশন ব্যবহার করে, যতক্ষণ না নেটওয়ার্ক এটি বিড়াল হিসেবে শ্রেণীবদ্ধ করতে শুরু করে: + +![কুকুরের ছবি](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bn.png) | ![কুকুরের ছবি বিড়াল হিসেবে শ্রেণীবদ্ধ](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bn.png) +-----|----- +*কুকুরের আসল ছবি* | *কুকুরের ছবি বিড়াল হিসেবে শ্রেণীবদ্ধ* + +উপরের ফলাফল পুনরুত্পাদন করার কোডটি নিম্নলিখিত নোটবুকে দেখুন: + +* [Ideal and Adversarial Cat - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## উপসংহার + +ট্রান্সফার লার্নিং ব্যবহার করে, আপনি দ্রুত একটি কাস্টম অবজেক্ট শ্রেণীবদ্ধকরণ কাজের জন্য একটি ক্লাসিফায়ার তৈরি করতে পারেন এবং উচ্চ সঠিকতা অর্জন করতে পারেন। আপনি দেখতে পাবেন যে আমরা এখন যে আরও জটিল কাজগুলো সমাধান করছি তার জন্য উচ্চতর কম্পিউটেশনাল ক্ষমতা প্রয়োজন এবং সহজে CPU-তে সমাধান করা যায় না। পরবর্তী ইউনিটে, আমরা একই মডেলটি কম কম্পিউট রিসোর্স ব্যবহার করে প্রশিক্ষণ করার জন্য একটি আরও হালকা ওজনের বাস্তবায়ন ব্যবহার করার চেষ্টা করব, যার ফলে সঠিকতা সামান্য কম হয়। + +## 🚀 চ্যালেঞ্জ + +সংলগ্ন নোটবুকে, নোট রয়েছে নিচে যেখানে বলা হয়েছে ট্রান্সফার জ্ঞান সবচেয়ে ভালো কাজ করে কিছুটা মিল থাকা প্রশিক্ষণ ডেটার সাথে (সম্ভবত একটি নতুন ধরনের প্রাণী)। সম্পূর্ণ নতুন ধরনের ইমেজ নিয়ে কিছু পরীক্ষা-নিরীক্ষা করুন এবং দেখুন আপনার ট্রান্সফার জ্ঞান মডেলগুলো কতটা ভালো বা খারাপ কাজ করে। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## পর্যালোচনা এবং স্ব-অধ্যয়ন + +[TrainingTricks.md](TrainingTricks.md) পড়ুন এবং আপনার মডেল প্রশিক্ষণের অন্যান্য উপায় সম্পর্কে জ্ঞান গভীর করুন। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই ল্যাবে, আমরা বাস্তব জীবনের [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) পেটস ডেটাসেট ব্যবহার করব, যেখানে বিড়াল এবং কুকুরের ৩৫টি প্রজাতি রয়েছে, এবং আমরা একটি ট্রান্সফার লার্নিং ক্লাসিফায়ার তৈরি করব। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় রচিত সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/bn/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..0b3ee484 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# ডিপ লার্নিং ট্রেনিং কৌশল + +যেহেতু নিউরাল নেটওয়ার্কগুলো আরও গভীর হচ্ছে, সেগুলোর প্রশিক্ষণ প্রক্রিয়া ক্রমশ চ্যালেঞ্জিং হয়ে উঠছে। একটি বড় সমস্যা হলো তথাকথিত [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) বা [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.)। [এই পোস্টটি](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) এই সমস্যাগুলোর একটি ভালো পরিচিতি প্রদান করে। + +গভীর নেটওয়ার্কের প্রশিক্ষণ আরও কার্যকর করতে, কিছু কৌশল ব্যবহার করা যেতে পারে। + +## মানগুলোকে যুক্তিসঙ্গত সীমার মধ্যে রাখা + +সংখ্যাগত গণনাগুলো আরও স্থিতিশীল করতে, আমরা নিশ্চিত করতে চাই যে আমাদের নিউরাল নেটওয়ার্কের সব মান যুক্তিসঙ্গত স্কেলে রয়েছে, সাধারণত [-1..1] বা [0..1]। এটি খুব কঠোর প্রয়োজনীয়তা নয়, তবে ফ্লোটিং পয়েন্ট গণনার প্রকৃতি এমন যে বিভিন্ন মাত্রার মানগুলোকে একসাথে সঠিকভাবে পরিচালনা করা যায় না। উদাহরণস্বরূপ, যদি আমরা 10-10 এবং 1010 যোগ করি, আমরা সম্ভবত 1010 পাব, কারণ ছোট মানটি বড় মানের মতো একই ক্রমে "রূপান্তরিত" হবে এবং ফলস্বরূপ মানটিসা হারিয়ে যাবে। + +বেশিরভাগ অ্যাক্টিভেশন ফাংশনের [-1..1] এর চারপাশে নন-লিনিয়ারিটি থাকে, এবং তাই সমস্ত ইনপুট ডেটাকে [-1..1] বা [0..1] সীমার মধ্যে স্কেল করা যৌক্তিক। + +## প্রাথমিক ওজন আরম্ভ + +আদর্শভাবে, আমরা চাই যে নেটওয়ার্ক স্তরগুলো পার হওয়ার পর মানগুলো একই সীমার মধ্যে থাকুক। তাই ওজনগুলো এমনভাবে আরম্ভ করা গুরুত্বপূর্ণ যাতে মানগুলোর বণ্টন সংরক্ষিত থাকে। + +**N(0,1)** এর মতো নরমাল বণ্টন ভালো ধারণা নয়, কারণ যদি আমাদের *n* ইনপুট থাকে, আউটপুটের স্ট্যান্ডার্ড ডেভিয়েশন হবে *n*, এবং মানগুলো [0..1] সীমার বাইরে চলে যেতে পারে। + +নিম্নলিখিত আরম্ভগুলো প্রায়শই ব্যবহৃত হয়: + + * ইউনিফর্ম বণ্টন -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** নিশ্চিত করে যে শূন্য গড় এবং ১ স্ট্যান্ডার্ড ডেভিয়েশন সহ ইনপুটগুলোর জন্য একই গড়/স্ট্যান্ডার্ড ডেভিয়েশন থাকবে + * **N(0,√2/(n_in+n_out))** -- তথাকথিত **Xavier initialization** (`glorot`), এটি সিগন্যালগুলোকে ফরোয়ার্ড এবং ব্যাকওয়ার্ড প্রোপাগেশনের সময় সীমার মধ্যে রাখতে সাহায্য করে + +## ব্যাচ নরমালাইজেশন + +যথাযথ ওজন আরম্ভের পরেও, প্রশিক্ষণের সময় ওজনগুলো বড় বা ছোট হতে পারে, এবং তারা সিগন্যালগুলোকে সঠিক সীমার বাইরে নিয়ে যেতে পারে। আমরা **নরমালাইজেশন** কৌশল ব্যবহার করে সিগন্যালগুলোকে সঠিক সীমায় ফিরিয়ে আনতে পারি। যদিও এর বিভিন্ন পদ্ধতি রয়েছে (Weight Normalization, Layer Normalization), সবচেয়ে বেশি ব্যবহৃত হয় ব্যাচ নরমালাইজেশন। + +**ব্যাচ নরমালাইজেশন** এর ধারণা হলো মিনিব্যাচ জুড়ে সমস্ত মান বিবেচনা করা এবং সেই মানগুলোর উপর ভিত্তি করে নরমালাইজেশন করা (যেমন গড় বিয়োগ করা এবং স্ট্যান্ডার্ড ডেভিয়েশন দ্বারা ভাগ করা)। এটি একটি নেটওয়ার্ক স্তর হিসেবে প্রয়োগ করা হয় যা ওজন প্রয়োগের পরে, কিন্তু অ্যাক্টিভেশন ফাংশনের আগে এই নরমালাইজেশন করে। এর ফলে, আমরা সাধারণত উচ্চতর চূড়ান্ত নির্ভুলতা এবং দ্রুত প্রশিক্ষণ দেখতে পাই। + +এখানে ব্যাচ নরমালাইজেশনের [মূল পেপার](https://arxiv.org/pdf/1502.03167.pdf), [উইকিপিডিয়ার ব্যাখ্যা](https://en.wikipedia.org/wiki/Batch_normalization), এবং [একটি ভালো পরিচিতিমূলক ব্লগ পোস্ট](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (এবং একটি [রাশিয়ান ভাষায়](https://habrahabr.ru/post/309302/))। + +## ড্রপআউট + +**ড্রপআউট** একটি আকর্ষণীয় কৌশল যা প্রশিক্ষণের সময় এলোমেলোভাবে নির্দিষ্ট শতাংশ নিউরন সরিয়ে দেয়। এটি একটি স্তর হিসেবে প্রয়োগ করা হয় যার একটি প্যারামিটার থাকে (সরানোর জন্য নিউরনের শতাংশ, সাধারণত ১০%-৫০%), এবং প্রশিক্ষণের সময় এটি ইনপুট ভেক্টরের এলোমেলো উপাদানগুলো শূন্য করে দেয়, পরবর্তী স্তরে পাঠানোর আগে। + +যদিও এটি একটি অদ্ভুত ধারণা মনে হতে পারে, আপনি [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) নোটবুকে MNIST ডিজিট ক্লাসিফায়ার প্রশিক্ষণের উপর ড্রপআউটের প্রভাব দেখতে পারেন। এটি প্রশিক্ষণকে দ্রুত করে এবং কম প্রশিক্ষণ ইপোকের মধ্যে উচ্চতর নির্ভুলতা অর্জন করতে সাহায্য করে। + +এই প্রভাবটি বিভিন্নভাবে ব্যাখ্যা করা যেতে পারে: + + * এটি মডেলের জন্য একটি এলোমেলো শকিং ফ্যাক্টর হিসেবে বিবেচিত হতে পারে, যা অপ্টিমাইজেশনকে স্থানীয় ন্যূনতম থেকে বের করে আনে + * এটি *অন্তর্নিহিত মডেল গড়* হিসেবে বিবেচিত হতে পারে, কারণ ড্রপআউটের সময় আমরা সামান্য ভিন্ন মডেল প্রশিক্ষণ দিচ্ছি + +> *কিছু লোক বলে যে যখন একজন মাতাল ব্যক্তি কিছু শেখার চেষ্টা করে, সে এটি পরের সকালে আরও ভালোভাবে মনে রাখে, একজন সচেতন ব্যক্তির তুলনায়, কারণ কিছু ত্রুটিপূর্ণ নিউরন সহ একটি মস্তিষ্ক অর্থটি আরও ভালোভাবে ধরার জন্য মানিয়ে নিতে চেষ্টা করে। আমরা নিজেরা এটি সত্য কিনা তা পরীক্ষা করিনি।* + +## ওভারফিটিং প্রতিরোধ + +ডিপ লার্নিংয়ের একটি খুব গুরুত্বপূর্ণ দিক হলো [ওভারফিটিং](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) প্রতিরোধ করতে সক্ষম হওয়া। যদিও খুব শক্তিশালী নিউরাল নেটওয়ার্ক মডেল ব্যবহার করা লোভনীয় হতে পারে, আমাদের সর্বদা মডেল প্যারামিটারের সংখ্যা এবং প্রশিক্ষণ নমুনার সংখ্যার মধ্যে ভারসাম্য বজায় রাখা উচিত। + +> নিশ্চিত করুন যে আপনি [ওভারফিটিং](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ধারণাটি বুঝেছেন যা আমরা আগে পরিচয় করিয়েছি! + +ওভারফিটিং প্রতিরোধের কয়েকটি উপায় রয়েছে: + + * প্রাথমিক থামানো -- যাচাইকরণ সেটে ত্রুটি ক্রমাগত পর্যবেক্ষণ করা এবং যাচাইকরণ ত্রুটি বাড়তে শুরু করলে প্রশিক্ষণ বন্ধ করা। + * স্পষ্ট ওজন ক্ষয় / নিয়মিতকরণ -- ক্ষতির ফাংশনে উচ্চ ওজনের জন্য একটি অতিরিক্ত শাস্তি যোগ করা, যা মডেলকে খুব অস্থিতিশীল ফলাফল থেকে রক্ষা করে + * মডেল গড় -- একাধিক মডেল প্রশিক্ষণ এবং তারপরে ফলাফল গড় করা। এটি ভ্যারিয়েন্স কমাতে সাহায্য করে। + * ড্রপআউট (অন্তর্নিহিত মডেল গড়) + +## অপ্টিমাইজার / প্রশিক্ষণ অ্যালগরিদম + +প্রশিক্ষণের আরেকটি গুরুত্বপূর্ণ দিক হলো একটি ভালো প্রশিক্ষণ অ্যালগরিদম নির্বাচন করা। যদিও ক্লাসিক্যাল **gradient descent** একটি যুক্তিসঙ্গত পছন্দ, এটি কখনও কখনও খুব ধীর হতে পারে, বা অন্যান্য সমস্যার কারণ হতে পারে। + +ডিপ লার্নিংয়ে, আমরা **Stochastic Gradient Descent** (SGD) ব্যবহার করি, যা প্রশিক্ষণ সেট থেকে এলোমেলোভাবে নির্বাচিত মিনিব্যাচে প্রয়োগ করা একটি গ্রেডিয়েন্ট ডিসেন্ট। ওজনগুলো এই সূত্র ব্যবহার করে সামঞ্জস্য করা হয়: + +wt+1 = wt - η∇ℒ + +### মোমেন্টাম + +**মোমেন্টাম SGD**-তে, আমরা পূর্ববর্তী ধাপগুলোর গ্রেডিয়েন্টের একটি অংশ ধরে রাখি। এটি এমন যে আমরা কোথাও জড়তার সাথে চলছি, এবং আমরা একটি ভিন্ন দিকে ধাক্কা পাই, আমাদের গতিপথ তাৎক্ষণিকভাবে পরিবর্তিত হয় না, বরং মূল গতির কিছু অংশ ধরে রাখে। এখানে আমরা *গতি* উপস্থাপন করতে একটি ভেক্টর v প্রবর্তন করি: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +এখানে প্যারামিটার γ নির্দেশ করে যে আমরা জড়তাকে কতটা বিবেচনায় নিচ্ছি: γ=0 ক্লাসিক্যাল SGD-এর সাথে মিলে যায়; γ=1 একটি বিশুদ্ধ গতির সমীকরণ। + +### অ্যাডাম, অ্যাডাগ্রাড, ইত্যাদি + +যেহেতু প্রতিটি স্তরে আমরা কিছু ম্যাট্রিক্স Wi দ্বারা সিগন্যালগুলো গুণ করি, ||Wi|| এর উপর নির্ভর করে, গ্রেডিয়েন্ট হয় ক্ষুদ্র হয়ে 0 এর কাছাকাছি চলে যেতে পারে, অথবা অনির্দিষ্টভাবে বৃদ্ধি পেতে পারে। এটি Exploding/Vanishing Gradients সমস্যার মূল বিষয়। + +এই সমস্যার একটি সমাধান হলো সমীকরণে গ্রেডিয়েন্টের কেবল দিকটি ব্যবহার করা, এবং পরম মানটি উপেক্ষা করা, যেমন: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), যেখানে ||∇ℒ|| = √∑(∇ℒ)2 + +এই অ্যালগরিদমটি **Adagrad** নামে পরিচিত। একই ধারণা ব্যবহার করে অন্যান্য অ্যালগরিদম: **RMSProp**, **Adam** + +> **Adam** অনেক অ্যাপ্লিকেশনের জন্য একটি খুব কার্যকর অ্যালগরিদম হিসেবে বিবেচিত হয়, তাই আপনি যদি নিশ্চিত না হন কোনটি ব্যবহার করবেন - Adam ব্যবহার করুন। + +### গ্রেডিয়েন্ট ক্লিপিং + +গ্রেডিয়েন্ট ক্লিপিং উপরের ধারণার একটি সম্প্রসারণ। যখন ||∇ℒ|| ≤ θ, আমরা ওজন অপ্টিমাইজেশনে মূল গ্রেডিয়েন্ট বিবেচনা করি, এবং যখন ||∇ℒ|| > θ - আমরা গ্রেডিয়েন্টকে তার নর্ম দ্বারা ভাগ করি। এখানে θ একটি প্যারামিটার, বেশিরভাগ ক্ষেত্রে আমরা θ=1 বা θ=10 নিতে পারি। + +### লার্নিং রেট ক্ষয় + +প্রশিক্ষণের সাফল্য প্রায়শই লার্নিং রেট প্যারামিটার η এর উপর নির্ভর করে। এটি অনুমান করা যৌক্তিক যে η এর বড় মান দ্রুত প্রশিক্ষণের ফলাফল দেয়, যা আমরা সাধারণত প্রশিক্ষণের শুরুতে চাই, এবং তারপরে η এর ছোট মান নেটওয়ার্ককে সূক্ষ্মভাবে টিউন করতে দেয়। তাই, বেশিরভাগ ক্ষেত্রে আমরা প্রশিক্ষণের প্রক্রিয়ায় η হ্রাস করতে চাই। + +এটি প্রতিটি প্রশিক্ষণ ইপোকের পরে η কে একটি সংখ্যা (যেমন 0.98) দ্বারা গুণ করে করা যেতে পারে, অথবা আরও জটিল **লার্নিং রেট শিডিউল** ব্যবহার করে। + +## বিভিন্ন নেটওয়ার্ক আর্কিটেকচার + +আপনার সমস্যার জন্য সঠিক নেটওয়ার্ক আর্কিটেকচার নির্বাচন করা কঠিন হতে পারে। সাধারণত, আমরা এমন একটি আর্কিটেকচার নেব যা আমাদের নির্দিষ্ট কাজের (বা অনুরূপ) জন্য কাজ করার প্রমাণিত হয়েছে। এখানে কম্পিউটার ভিশনের জন্য নিউরাল নেটওয়ার্ক আর্কিটেকচারের একটি [ভালো ওভারভিউ](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) রয়েছে। + +> এটি গুরুত্বপূর্ণ যে আমাদের কাছে থাকা প্রশিক্ষণ নমুনার সংখ্যার জন্য যথেষ্ট শক্তিশালী একটি আর্কিটেকচার নির্বাচন করা। খুব শক্তিশালী মডেল নির্বাচন করলে [ওভারফিটিং](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) হতে পারে। + +আরেকটি ভালো উপায় হলো এমন একটি আর্কিটেকচার ব্যবহার করা যা প্রয়োজনীয় জটিলতার সাথে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করবে। কিছুটা হলেও, **ResNet** আর্কিটেকচার এবং **Inception** স্ব-সামঞ্জস্যপূর্ণ। [কম্পিউটার ভিশন আর্কিটেকচারের উপর আরও](../07-ConvNets/CNN_Architectures.md)। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/bn/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..b2b66590 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# ট্রান্সফার লার্নিং ব্যবহার করে অক্সফোর্ড পেটসের শ্রেণীবিভাগ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +ধরুন আপনাকে একটি পেট নার্সারির জন্য একটি অ্যাপ্লিকেশন তৈরি করতে হবে যেখানে সমস্ত পোষা প্রাণীকে ক্যাটালগ করা হবে। এমন একটি অ্যাপ্লিকেশনের একটি চমৎকার বৈশিষ্ট্য হতে পারে ফটোগ্রাফ থেকে স্বয়ংক্রিয়ভাবে প্রজাতি শনাক্ত করা। এই অ্যাসাইনমেন্টে, আমরা ট্রান্সফার লার্নিং ব্যবহার করে [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) পেটস ডেটাসেট থেকে বাস্তব জীবনের পোষা প্রাণীর ছবি শ্রেণীবদ্ধ করব। + +## ডেটাসেট + +আমরা মূল [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) পেটস ডেটাসেট ব্যবহার করব, যেখানে ৩৫টি ভিন্ন জাতের কুকুর এবং বিড়াল রয়েছে। + +ডেটাসেট ডাউনলোড করতে, এই কোড স্নিপেটটি ব্যবহার করুন: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## নোটবুক শুরু করা + +ল্যাব শুরু করতে [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) খুলুন। + +## মূল শিক্ষা + +ট্রান্সফার লার্নিং এবং প্রি-ট্রেইনড নেটওয়ার্ক আমাদের বাস্তব জীবনের ইমেজ শ্রেণীবিভাগের সমস্যাগুলি তুলনামূলকভাবে সহজে সমাধান করতে সাহায্য করে। তবে, প্রি-ট্রেইনড নেটওয়ার্কগুলি একই ধরনের ছবিতে ভালো কাজ করে, এবং যদি আমরা খুব ভিন্ন ধরনের ছবি (যেমন মেডিক্যাল ইমেজ) শ্রেণীবদ্ধ করতে শুরু করি, তাহলে ফলাফল অনেক খারাপ হতে পারে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/bn/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..7126475e --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# অটোএনকোডার + +সিএনএন প্রশিক্ষণের সময়, একটি বড় সমস্যা হলো প্রচুর লেবেলযুক্ত ডেটার প্রয়োজন হয়। উদাহরণস্বরূপ, ইমেজ ক্লাসিফিকেশনের ক্ষেত্রে, আমাদের ইমেজগুলোকে বিভিন্ন শ্রেণিতে ভাগ করতে হয়, যা একটি ম্যানুয়াল প্রচেষ্টা। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +তবে, আমরা সিএনএন ফিচার এক্সট্রাক্টর প্রশিক্ষণের জন্য কাঁচা (লেবেলবিহীন) ডেটা ব্যবহার করতে চাইতে পারি, যাকে **স্ব-পরিচালিত শেখা** (self-supervised learning) বলা হয়। লেবেলের পরিবর্তে, আমরা প্রশিক্ষণের জন্য ইমেজগুলোকে নেটওয়ার্কের ইনপুট এবং আউটপুট উভয় হিসেবেই ব্যবহার করব। **অটোএনকোডার** এর মূল ধারণা হলো, আমরা একটি **এনকোডার নেটওয়ার্ক** ব্যবহার করব যা ইনপুট ইমেজকে কিছু **ল্যাটেন্ট স্পেস**-এ রূপান্তর করবে (সাধারণত এটি একটি ছোট আকারের ভেক্টর), তারপর একটি **ডিকোডার নেটওয়ার্ক**, যার লক্ষ্য হবে মূল ইমেজটি পুনর্গঠন করা। + +> ✅ একটি [অটোএনকোডার](https://wikipedia.org/wiki/Autoencoder) হলো "এক ধরনের কৃত্রিম নিউরাল নেটওয়ার্ক যা লেবেলবিহীন ডেটার কার্যকর কোডিং শিখতে ব্যবহৃত হয়।" + +যেহেতু আমরা অটোএনকোডারকে মূল ইমেজ থেকে যতটা সম্ভব তথ্য ধারণ করতে প্রশিক্ষণ দিচ্ছি, যাতে সঠিকভাবে পুনর্গঠন করা যায়, নেটওয়ার্কটি ইনপুট ইমেজগুলোর সেরা **এম্বেডিং** খুঁজে বের করার চেষ্টা করে যা অর্থপূর্ণ তথ্য ধারণ করে। + +![অটোএনকোডার ডায়াগ্রাম](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bn.jpg) + +> চিত্র [Keras ব্লগ](https://blog.keras.io/building-autoencoders-in-keras.html) থেকে + +## অটোএনকোডার ব্যবহারের পরিস্থিতি + +মূল ইমেজ পুনর্গঠন নিজে থেকে খুব বেশি কার্যকর মনে না হলেও, কিছু পরিস্থিতিতে অটোএনকোডার বিশেষভাবে কার্যকর: + +* **ভিজ্যুয়ালাইজেশনের জন্য ইমেজের মাত্রা হ্রাস করা** বা **ইমেজ এম্বেডিং প্রশিক্ষণ**। সাধারণত অটোএনকোডার PCA-এর চেয়ে ভালো ফলাফল দেয়, কারণ এটি ইমেজের স্থানিক প্রকৃতি এবং স্তরবিন্যাস বৈশিষ্ট্যগুলিকে বিবেচনায় নেয়। +* **ডিনয়জিং**, অর্থাৎ ইমেজ থেকে শব্দ (noise) সরানো। শব্দ অনেক অপ্রয়োজনীয় তথ্য বহন করে, যা অটোএনকোডার তুলনামূলক ছোট ল্যাটেন্ট স্পেসে ধারণ করতে পারে না, ফলে এটি কেবল গুরুত্বপূর্ণ অংশটি ধারণ করে। ডিনয়জার প্রশিক্ষণের সময়, আমরা মূল ইমেজ দিয়ে শুরু করি এবং কৃত্রিমভাবে যোগ করা শব্দসহ ইমেজগুলোকে অটোএনকোডারের ইনপুট হিসেবে ব্যবহার করি। +* **সুপার-রেজোলিউশন**, অর্থাৎ ইমেজের রেজোলিউশন বৃদ্ধি করা। আমরা উচ্চ-রেজোলিউশনের ইমেজ দিয়ে শুরু করি এবং নিম্ন রেজোলিউশনের ইমেজকে অটোএনকোডারের ইনপুট হিসেবে ব্যবহার করি। +* **জেনারেটিভ মডেল**। একবার অটোএনকোডার প্রশিক্ষণ দেওয়া হলে, ডিকোডার অংশটি এলোমেলো ল্যাটেন্ট ভেক্টর থেকে নতুন অবজেক্ট তৈরি করতে ব্যবহার করা যায়। + +## ভ্যারিয়েশনাল অটোএনকোডার (VAE) + +প্রথাগত অটোএনকোডার ইনপুট ডেটার মাত্রা হ্রাস করে এবং ইনপুট ইমেজের গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো বের করে। তবে, ল্যাটেন্ট ভেক্টরগুলো প্রায়ই খুব অর্থবহ হয় না। উদাহরণস্বরূপ, MNIST ডেটাসেটের ক্ষেত্রে, বিভিন্ন ল্যাটেন্ট ভেক্টরের সাথে কোন সংখ্যাগুলো মিলে যায় তা বোঝা সহজ নয়, কারণ কাছাকাছি ল্যাটেন্ট ভেক্টরগুলো প্রয়োজনীয়ভাবে একই সংখ্যার প্রতিনিধিত্ব করে না। + +অন্যদিকে, *জেনারেটিভ* মডেল প্রশিক্ষণের জন্য ল্যাটেন্ট স্পেস সম্পর্কে কিছুটা বোঝাপড়া থাকা ভালো। এই ধারণা আমাদের **ভ্যারিয়েশনাল অটোএনকোডার** (VAE)-এর দিকে নিয়ে যায়। + +VAE হলো এমন একটি অটোএনকোডার যা ল্যাটেন্ট প্যারামিটারগুলোর *পরিসংখ্যানগত বণ্টন* (statistical distribution) পূর্বাভাস করতে শেখে, যাকে **ল্যাটেন্ট ডিস্ট্রিবিউশন** বলা হয়। উদাহরণস্বরূপ, আমরা চাইতে পারি যে ল্যাটেন্ট ভেক্টরগুলো zmean এবং zsigma (যেখানে mean এবং standard deviation হলো নির্দিষ্ট মাত্রার ভেক্টর) এর সাথে স্বাভাবিকভাবে বিতরণিত হোক। VAE-তে এনকোডার এই প্যারামিটারগুলো পূর্বাভাস করতে শেখে, এবং তারপর ডিকোডার এই বণ্টন থেকে একটি এলোমেলো ভেক্টর নিয়ে অবজেক্ট পুনর্গঠন করে। + +সংক্ষেপে: + + * ইনপুট ভেক্টর থেকে, আমরা `z_mean` এবং `z_log_sigma` পূর্বাভাস করি (স্ট্যান্ডার্ড ডেভিয়েশন নিজে পূর্বাভাস করার পরিবর্তে, আমরা এর লগারিদম পূর্বাভাস করি) + * আমরা বণ্টন N(zmean,exp(zlog\_sigma)) থেকে একটি ভেক্টর `sample` নিই + * ডিকোডার `sample` কে ইনপুট ভেক্টর হিসেবে ব্যবহার করে মূল ইমেজটি ডিকোড করার চেষ্টা করে + + + +> চিত্র [এই ব্লগ পোস্ট](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) থেকে, লেখক: আইজাক ডাইকম্যান + +ভ্যারিয়েশনাল অটোএনকোডার একটি জটিল লস ফাংশন ব্যবহার করে, যা দুটি অংশ নিয়ে গঠিত: + +* **পুনর্গঠন লস** হলো সেই লস ফাংশন যা দেখায় পুনর্গঠিত ইমেজ কতটা লক্ষ্য ইমেজের কাছাকাছি (এটি Mean Squared Error বা MSE হতে পারে)। এটি সাধারণ অটোএনকোডারের মতোই লস ফাংশন। +* **KL লস**, যা নিশ্চিত করে যে ল্যাটেন্ট ভেরিয়েবল বণ্টন স্বাভাবিক বণ্টনের কাছাকাছি থাকে। এটি [কুলব্যাক-লেইবলার ডাইভারজেন্স](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained)-এর ধারণার উপর ভিত্তি করে তৈরি - এটি দুটি পরিসংখ্যানগত বণ্টনের সাদৃশ্য পরিমাপের একটি মেট্রিক। + +VAE-এর একটি গুরুত্বপূর্ণ সুবিধা হলো এটি আমাদের নতুন ইমেজ তুলনামূলক সহজে তৈরি করতে দেয়, কারণ আমরা জানি কোন বণ্টন থেকে ল্যাটেন্ট ভেক্টরগুলো নিতে হবে। উদাহরণস্বরূপ, যদি আমরা MNIST-এ 2D ল্যাটেন্ট ভেক্টর দিয়ে VAE প্রশিক্ষণ দিই, তবে আমরা ল্যাটেন্ট ভেক্টরের উপাদানগুলো পরিবর্তন করে বিভিন্ন সংখ্যা পেতে পারি: + +vaemnist + +> চিত্র [দিমিত্রি সশনিকভ](http://soshnikov.com) দ্বারা + +লক্ষ্য করুন কিভাবে ইমেজগুলো একে অপরের সাথে মিশে যাচ্ছে, কারণ আমরা ল্যাটেন্ট প্যারামিটার স্পেসের বিভিন্ন অংশ থেকে ল্যাটেন্ট ভেক্টর নিচ্ছি। আমরা এই স্পেসটি 2D-তে ভিজ্যুয়ালাইজও করতে পারি: + +vaemnist cluster + +> চিত্র [দিমিত্রি সশনিকভ](http://soshnikov.com) দ্বারা + +## ✍️ অনুশীলন: অটোএনকোডার + +এই সম্পর্কিত নোটবুকগুলোতে অটোএনকোডার সম্পর্কে আরও জানুন: + +* [টেনসরফ্লোতে অটোএনকোডার](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [পাইটোর্চে অটোএনকোডার](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## অটোএনকোডারের বৈশিষ্ট্য + +* **ডেটা নির্দিষ্ট** - এগুলো কেবল সেই ধরনের ইমেজের সাথে ভালো কাজ করে, যেগুলো দিয়ে এগুলো প্রশিক্ষিত হয়েছে। উদাহরণস্বরূপ, যদি আমরা একটি সুপার-রেজোলিউশন নেটওয়ার্ক ফুলের উপর প্রশিক্ষণ দিই, এটি পোর্ট্রেটের উপর ভালো কাজ করবে না। কারণ নেটওয়ার্কটি প্রশিক্ষণ ডেটাসেট থেকে শেখা বৈশিষ্ট্যগুলো ব্যবহার করে উচ্চ রেজোলিউশনের ইমেজ তৈরি করতে পারে। +* **লসি** - পুনর্গঠিত ইমেজটি মূল ইমেজের মতো নয়। লসের প্রকৃতি নির্ধারিত হয় প্রশিক্ষণের সময় ব্যবহৃত *লস ফাংশন* দ্বারা। +* **লেবেলবিহীন ডেটা**-তে কাজ করে + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## উপসংহার + +এই পাঠে, আপনি একজন এআই বিজ্ঞানীর জন্য উপলব্ধ বিভিন্ন ধরনের অটোএনকোডার সম্পর্কে শিখেছেন। আপনি এগুলো কীভাবে তৈরি করবেন এবং কীভাবে ইমেজ পুনর্গঠনের জন্য ব্যবহার করবেন তা শিখেছেন। আপনি VAE এবং এটি ব্যবহার করে নতুন ইমেজ তৈরি করার পদ্ধতিও শিখেছেন। + +## 🚀 চ্যালেঞ্জ + +এই পাঠে, আপনি ইমেজের জন্য অটোএনকোডার ব্যবহারের কথা শিখেছেন। তবে এগুলো সঙ্গীতের জন্যও ব্যবহার করা যেতে পারে! ম্যাজেন্টা প্রকল্পের [MusicVAE](https://magenta.tensorflow.org/music-vae) প্রকল্পটি দেখুন, যা সঙ্গীত পুনর্গঠনের জন্য অটোএনকোডার ব্যবহার করে। এই লাইব্রেরি দিয়ে কিছু [পরীক্ষা](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) করুন এবং দেখুন আপনি কী তৈরি করতে পারেন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +তথ্যের জন্য, এই সম্পদগুলোতে অটোএনকোডার সম্পর্কে আরও পড়ুন: + +* [Keras-এ অটোএনকোডার তৈরি](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive-এ ব্লগ পোস্ট](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [ভ্যারিয়েশনাল অটোএনকোডার ব্যাখ্যা](https://kvfrans.com/variational-autoencoders-explained/) +* [কন্ডিশনাল ভ্যারিয়েশনাল অটোএনকোডার](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## অ্যাসাইনমেন্ট + +[এই নোটবুকটি](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) ব্যবহার করে টেনসরফ্লোতে 'টাস্ক' অংশটি খুঁজুন - এটি আপনার অ্যাসাইনমেন্ট হিসেবে ব্যবহার করুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/10-GANs/README.md b/translations/bn/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..54ffdcfa --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# জেনারেটিভ অ্যাডভার্সারিয়াল নেটওয়ার্কস + +পূর্ববর্তী অংশে আমরা **জেনারেটিভ মডেল** সম্পর্কে শিখেছি: এমন মডেল যা প্রশিক্ষণ ডেটাসেটের মতো নতুন ছবি তৈরি করতে পারে। VAE ছিল জেনারেটিভ মডেলের একটি ভালো উদাহরণ। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +তবে, যদি আমরা কিছু সত্যিই অর্থবহ তৈরি করতে চাই, যেমন একটি যুক্তিসঙ্গত রেজোলিউশনের পেইন্টিং, VAE ব্যবহার করে, আমরা দেখতে পাবো যে প্রশিক্ষণ ভালোভাবে কনভার্জ করে না। এই ব্যবহারের ক্ষেত্রে, আমাদের একটি নির্দিষ্ট জেনারেটিভ মডেলের জন্য লক্ষ্যযুক্ত আরেকটি আর্কিটেকচার সম্পর্কে শিখতে হবে - **জেনারেটিভ অ্যাডভার্সারিয়াল নেটওয়ার্কস**, বা GANs। + +GAN-এর মূল ধারণা হলো দুটি নিউরাল নেটওয়ার্ককে একে অপরের বিরুদ্ধে প্রশিক্ষণ দেওয়া: + + + +> ছবি: [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ কিছু শব্দভাণ্ডার: +> * **জেনারেটর** হলো একটি নেটওয়ার্ক যা কিছু র‍্যান্ডম ভেক্টর গ্রহণ করে এবং ফলাফল হিসেবে একটি ছবি তৈরি করে। +> * **ডিসক্রিমিনেটর** হলো একটি নেটওয়ার্ক যা একটি ছবি গ্রহণ করে এবং এটি বলার চেষ্টা করে যে এটি একটি বাস্তব ছবি (প্রশিক্ষণ ডেটাসেট থেকে) নাকি এটি জেনারেটর দ্বারা তৈরি। এটি মূলত একটি ইমেজ ক্লাসিফায়ার। + +### ডিসক্রিমিনেটর + +ডিসক্রিমিনেটরের আর্কিটেকচার সাধারণ ইমেজ ক্লাসিফিকেশন নেটওয়ার্ক থেকে আলাদা নয়। সহজতম ক্ষেত্রে এটি একটি সম্পূর্ণ-সংযুক্ত ক্লাসিফায়ার হতে পারে, তবে সম্ভবত এটি একটি [কনভোলিউশনাল নেটওয়ার্ক](../07-ConvNets/README.md) হবে। + +> ✅ কনভোলিউশনাল নেটওয়ার্কের উপর ভিত্তি করে GAN-কে [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) বলা হয়। + +একটি CNN ডিসক্রিমিনেটর নিম্নলিখিত স্তরগুলি নিয়ে গঠিত: কয়েকটি কনভোলিউশন+পুলিং (যার স্পেশিয়াল সাইজ ক্রমশ কমছে) এবং এক বা একাধিক সম্পূর্ণ-সংযুক্ত স্তর যা "ফিচার ভেক্টর" তৈরি করে, এবং চূড়ান্ত বাইনারি ক্লাসিফায়ার। + +> ✅ 'পুলিং' হলো একটি কৌশল যা ছবির আকার কমিয়ে দেয়। "পুলিং স্তরগুলি ডেটার মাত্রা কমিয়ে দেয়, একটি স্তরের নিউরন ক্লাস্টারের আউটপুটকে পরবর্তী স্তরের একটি নিউরনে একত্রিত করে।" - [উৎস](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### জেনারেটর + +জেনারেটর একটু বেশি জটিল। আপনি এটিকে একটি উল্টানো ডিসক্রিমিনেটর হিসেবে বিবেচনা করতে পারেন। একটি ল্যাটেন্ট ভেক্টর থেকে শুরু করে (ফিচার ভেক্টরের জায়গায়), এটি একটি সম্পূর্ণ-সংযুক্ত স্তর ব্যবহার করে প্রয়োজনীয় আকার/আকৃতিতে রূপান্তরিত করে, তারপর ডিকনভোলিউশন+আপস্কেলিং। এটি [অটোএনকোডার](../09-Autoencoders/README.md)-এর *ডিকোডার* অংশের মতো। + +> ✅ যেহেতু কনভোলিউশন স্তরটি একটি লিনিয়ার ফিল্টার হিসেবে ছবির উপর দিয়ে চলে, ডিকনভোলিউশন মূলত কনভোলিউশনের মতোই এবং একই স্তর লজিক ব্যবহার করে বাস্তবায়িত হতে পারে। + + + +> ছবি: [Dmitry Soshnikov](http://soshnikov.com) + +### GAN প্রশিক্ষণ + +GAN-কে **অ্যাডভার্সারিয়াল** বলা হয় কারণ জেনারেটর এবং ডিসক্রিমিনেটরের মধ্যে একটি ক্রমাগত প্রতিযোগিতা থাকে। এই প্রতিযোগিতার সময়, জেনারেটর এবং ডিসক্রিমিনেটর উভয়ই উন্নত হয়, ফলে নেটওয়ার্ক আরও ভালো ছবি তৈরি করতে শেখে। + +প্রশিক্ষণ দুটি ধাপে ঘটে: + +* **ডিসক্রিমিনেটর প্রশিক্ষণ**। এই কাজটি বেশ সহজ: আমরা জেনারেটর দ্বারা তৈরি একটি ব্যাচ ছবি তৈরি করি, তাদের লেবেল করি 0, যা নকল ছবির জন্য দাঁড়ায়, এবং ইনপুট ডেটাসেট থেকে একটি ব্যাচ ছবি গ্রহণ করি (লেবেল 1, বাস্তব ছবি)। আমরা কিছু *ডিসক্রিমিনেটর লস* পাই এবং ব্যাকপ্রপ করি। +* **জেনারেটর প্রশিক্ষণ**। এটি একটু বেশি জটিল, কারণ আমরা সরাসরি জেনারেটরের জন্য প্রত্যাশিত আউটপুট জানি না। আমরা পুরো GAN নেটওয়ার্ক (জেনারেটর এবং ডিসক্রিমিনেটর) গ্রহণ করি, এটিকে কিছু র‍্যান্ডম ভেক্টর দিয়ে ফিড করি এবং আশা করি ফলাফল হবে 1 (বাস্তব ছবির সাথে সম্পর্কিত)। আমরা ডিসক্রিমিনেটরের প্যারামিটারগুলি ফ্রিজ করি (এই ধাপে আমরা এটি প্রশিক্ষণ দিতে চাই না) এবং ব্যাকপ্রপ করি। + +এই প্রক্রিয়ার সময়, জেনারেটর এবং ডিসক্রিমিনেটর উভয়ের লস উল্লেখযোগ্যভাবে কমে না। আদর্শ পরিস্থিতিতে, তারা দোলায়মান হওয়া উচিত, যা উভয় নেটওয়ার্কের কর্মক্ষমতা উন্নতির সাথে সম্পর্কিত। + +## ✍️ অনুশীলন: GANs + +* [GAN নোটবুক TensorFlow/Keras-এ](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN নোটবুক PyTorch-এ](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN প্রশিক্ষণের সমস্যা + +GAN প্রশিক্ষণ বিশেষভাবে কঠিন বলে পরিচিত। এখানে কয়েকটি সমস্যা: + +* **মোড কলাপস**। এই শব্দটি দ্বারা বোঝানো হয় যে জেনারেটর একটি সফল ছবি তৈরি করতে শেখে যা ডিসক্রিমিনেটরকে ধোঁকা দেয়, কিন্তু বিভিন্ন ধরনের ছবি তৈরি করে না। +* **হাইপারপ্যারামিটারের প্রতি সংবেদনশীলতা**। প্রায়ই দেখা যায় যে GAN একেবারেই কনভার্জ করে না, এবং তারপর হঠাৎ করে লার্নিং রেট কমিয়ে কনভার্জ করে। +* জেনারেটর এবং ডিসক্রিমিনেটরের মধ্যে **সামঞ্জস্য** বজায় রাখা। অনেক ক্ষেত্রে ডিসক্রিমিনেটরের লস দ্রুত শূন্যে নেমে যেতে পারে, যার ফলে জেনারেটর আর প্রশিক্ষণ দিতে পারে না। এটি কাটিয়ে উঠতে, আমরা জেনারেটর এবং ডিসক্রিমিনেটরের জন্য ভিন্ন লার্নিং রেট সেট করার চেষ্টা করতে পারি, অথবা যদি লস ইতিমধ্যে খুব কম হয় তবে ডিসক্রিমিনেটর প্রশিক্ষণ এড়িয়ে যেতে পারি। +* **উচ্চ রেজোলিউশনের জন্য প্রশিক্ষণ**। অটোএনকোডারের মতো একই সমস্যার প্রতিফলন, এই সমস্যাটি ট্রিগার হয় কারণ কনভোলিউশনাল নেটওয়ার্কের খুব বেশি স্তর পুনর্গঠন করার ফলে আর্টিফ্যাক্ট তৈরি হয়। এই সমস্যাটি সাধারণত **প্রগ্রেসিভ গ্রোইং** ব্যবহার করে সমাধান করা হয়, যেখানে প্রথমে কয়েকটি স্তর কম-রেজোলিউশন ছবিতে প্রশিক্ষণ দেওয়া হয়, তারপর স্তরগুলি "আনব্লক" বা যোগ করা হয়। আরেকটি সমাধান হবে স্তরগুলির মধ্যে অতিরিক্ত সংযোগ যোগ করা এবং একাধিক রেজোলিউশন একসাথে প্রশিক্ষণ দেওয়া - বিস্তারিত জানার জন্য এই [মাল্টি-স্কেল গ্রেডিয়েন্ট GANs পেপার](https://arxiv.org/abs/1903.06048) দেখুন। + +## স্টাইল ট্রান্সফার + +GANs হলো শিল্পসম্মত ছবি তৈরি করার একটি চমৎকার উপায়। আরেকটি আকর্ষণীয় কৌশল হলো **স্টাইল ট্রান্সফার**, যা একটি **কন্টেন্ট ইমেজ** গ্রহণ করে এবং এটি একটি ভিন্ন স্টাইলে পুনরায় আঁকে, **স্টাইল ইমেজ** থেকে ফিল্টার প্রয়োগ করে। + +এর কাজ করার পদ্ধতি হলো নিম্নরূপ: +* আমরা একটি র‍্যান্ডম নয়েজ ইমেজ দিয়ে শুরু করি (বা একটি কন্টেন্ট ইমেজ দিয়ে শুরু করি, তবে বোঝার সুবিধার জন্য র‍্যান্ডম নয়েজ দিয়ে শুরু করা সহজ) +* আমাদের লক্ষ্য হবে এমন একটি ছবি তৈরি করা, যা কন্টেন্ট ইমেজ এবং স্টাইল ইমেজ উভয়ের কাছাকাছি হবে। এটি দুটি লস ফাংশন দ্বারা নির্ধারিত হবে: + - **কন্টেন্ট লস** বর্তমান ছবি এবং কন্টেন্ট ইমেজ থেকে CNN দ্বারা নির্দিষ্ট স্তরে বের করা বৈশিষ্ট্যের উপর ভিত্তি করে গণনা করা হয়। + - **স্টাইল লস** বর্তমান ছবি এবং স্টাইল ইমেজের মধ্যে একটি চতুর উপায়ে গ্রাম ম্যাট্রিক্স ব্যবহার করে গণনা করা হয় (বিস্তারিত [উদাহরণ নোটবুকে](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) দেখুন)। +* ছবিকে মসৃণ এবং নয়েজ সরাতে, আমরা **ভেরিয়েশন লস** পরিচয় করাই, যা প্রতিবেশী পিক্সেলের গড় দূরত্ব গণনা করে। +* প্রধান অপ্টিমাইজেশন লুপ বর্তমান ছবিকে গ্রেডিয়েন্ট ডিসেন্ট (বা অন্য কোনো অপ্টিমাইজেশন অ্যালগরিদম) ব্যবহার করে সামগ্রিক লস কমানোর জন্য সামঞ্জস্য করে। + +## ✍️ উদাহরণ: [স্টাইল ট্রান্সফার](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## উপসংহার + +এই পাঠে, আপনি GANs এবং সেগুলিকে কীভাবে প্রশিক্ষণ দিতে হয় তা শিখেছেন। আপনি এই ধরনের নিউরাল নেটওয়ার্কের বিশেষ চ্যালেঞ্জগুলি এবং সেগুলি কাটিয়ে ওঠার কিছু কৌশলও শিখেছেন। + +## 🚀 চ্যালেঞ্জ + +[স্টাইল ট্রান্সফার নোটবুক](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) চালান এবং আপনার নিজের ছবিগুলি ব্যবহার করুন। + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +GANs সম্পর্কে আরও পড়ার জন্য, এই রিসোর্সগুলি দেখুন: + +* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), একটি *ডি ফ্যাক্টো* GAN আর্কিটেকচার বিবেচনা করার জন্য +* [Creating Generative Art using GANs on Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## অ্যাসাইনমেন্ট + +এই পাঠের সাথে সম্পর্কিত দুটি নোটবুকের মধ্যে একটি পুনরায় দেখুন এবং GAN-কে আপনার নিজের ছবিতে পুনরায় প্রশিক্ষণ দিন। আপনি কী তৈরি করতে পারেন? + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/bn/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..f75affb4 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# অবজেক্ট ডিটেকশন + +যে ইমেজ ক্লাসিফিকেশন মডেলগুলো আমরা এখন পর্যন্ত ব্যবহার করেছি, সেগুলো একটি ইমেজ নিয়ে একটি ক্যাটেগরিক্যাল ফলাফল প্রদান করত, যেমন MNIST সমস্যায় 'সংখ্যা' ক্লাস। তবে, অনেক ক্ষেত্রে আমরা শুধু জানতে চাই না যে একটি ছবি কোনো বস্তু প্রদর্শন করছে - আমরা তাদের সঠিক অবস্থান নির্ধারণ করতে চাই। **অবজেক্ট ডিটেকশন** ঠিক এই কাজটি করে। + +## [প্রাক-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![অবজেক্ট ডিটেকশন](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bn.png) + +> ছবি [YOLO v2 ওয়েবসাইট](https://pjreddie.com/darknet/yolov2/) থেকে + +## অবজেক্ট ডিটেকশনের একটি সরল পদ্ধতি + +ধরা যাক আমরা একটি ছবিতে একটি বিড়াল খুঁজতে চাই। অবজেক্ট ডিটেকশনের একটি খুবই সরল পদ্ধতি হতে পারে নিম্নরূপ: + +1. ছবিটিকে অনেকগুলো টাইলসে ভাগ করুন। +2. প্রতিটি টাইলের উপর ইমেজ ক্লাসিফিকেশন চালান। +3. যেসব টাইল যথেষ্ট উচ্চ অ্যাক্টিভেশন দেখায়, সেগুলোতে কাঙ্ক্ষিত বস্তুটি আছে বলে বিবেচনা করুন। + +![সরল অবজেক্ট ডিটেকশন](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bn.png) + +> *ছবি [এক্সারসাইজ নোটবুক](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) থেকে* + +তবে, এই পদ্ধতি আদর্শ নয়, কারণ এটি বস্তুটির বাউন্ডিং বক্স খুবই অযথাযথভাবে নির্ধারণ করতে পারে। আরও সঠিক অবস্থান নির্ধারণের জন্য, আমাদের **রিগ্রেশন** চালিয়ে বাউন্ডিং বক্সের কোঅর্ডিনেট প্রেডিক্ট করতে হবে - এবং এর জন্য আমাদের নির্দিষ্ট ডেটাসেট প্রয়োজন। + +## অবজেক্ট ডিটেকশনের জন্য রিগ্রেশন + +[এই ব্লগ পোস্ট](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) একটি চমৎকার পরিচিতি প্রদান করে। + +## অবজেক্ট ডিটেকশনের জন্য ডেটাসেট + +এই কাজের জন্য আপনি নিম্নলিখিত ডেটাসেটগুলো দেখতে পারেন: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - ২০টি ক্লাস +* [COCO](http://cocodataset.org/#home) - সাধারণ বস্তুসমূহের প্রসঙ্গ। ৮০টি ক্লাস, বাউন্ডিং বক্স এবং সেগমেন্টেশন মাস্ক। + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bn.jpg) + +## অবজেক্ট ডিটেকশন মেট্রিকস + +### ইন্টারসেকশন ওভার ইউনিয়ন + +যেখানে ইমেজ ক্লাসিফিকেশনের ক্ষেত্রে অ্যালগরিদমের কার্যকারিতা পরিমাপ করা সহজ, অবজেক্ট ডিটেকশনের ক্ষেত্রে আমাদের ক্লাসের সঠিকতা এবং বাউন্ডিং বক্সের অবস্থানের নির্ভুলতা উভয়ই পরিমাপ করতে হবে। এর জন্য আমরা **ইন্টারসেকশন ওভার ইউনিয়ন** (IoU) ব্যবহার করি, যা দুটি বক্স (বা দুটি এলাকা) কতটা ওভারল্যাপ করে তা পরিমাপ করে। + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bn.png) + +> *[এই চমৎকার ব্লগ পোস্ট](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) থেকে ফিগার ২* + +আইডিয়াটি সহজ - আমরা দুটি ফিগারের ইন্টারসেকশন এলাকার আয়তনকে তাদের ইউনিয়ন এলাকার আয়তন দ্বারা ভাগ করি। দুটি অভিন্ন এলাকার জন্য IoU হবে ১, আর সম্পূর্ণ পৃথক এলাকার জন্য এটি হবে ০। অন্যথায় এটি ০ থেকে ১ এর মধ্যে পরিবর্তিত হবে। আমরা সাধারণত শুধুমাত্র সেই বাউন্ডিং বক্সগুলো বিবেচনা করি যেগুলোর IoU একটি নির্দিষ্ট মানের উপরে থাকে। + +### গড় নির্ভুলতা (Average Precision) + +ধরা যাক আমরা একটি নির্দিষ্ট ক্লাসের বস্তু $C$ কতটা ভালোভাবে শনাক্ত হচ্ছে তা পরিমাপ করতে চাই। এর জন্য আমরা **গড় নির্ভুলতা** মেট্রিকস ব্যবহার করি, যা নিম্নরূপে গণনা করা হয়: + +1. প্রিসিশন-রিকল কার্ভটি দেখায় যে শনাক্তকরণের থ্রেশহোল্ড মান (০ থেকে ১) অনুযায়ী সঠিকতা কেমন। +2. থ্রেশহোল্ডের উপর নির্ভর করে, আমরা ছবিতে বেশি বা কম বস্তু শনাক্ত করব এবং প্রিসিশন ও রিকলের বিভিন্ন মান পাব। +3. কার্ভটি এরকম দেখাবে: + + + +> *ছবি [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) থেকে* + +একটি নির্দিষ্ট ক্লাস $C$ এর জন্য গড় নির্ভুলতা হলো এই কার্ভের নিচের এলাকা। আরও নির্দিষ্টভাবে, রিকল অক্ষ সাধারণত ১০টি অংশে বিভক্ত হয় এবং প্রিসিশন এই পয়েন্টগুলোর উপর গড় করা হয়: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP এবং IoU + +আমরা শুধুমাত্র সেই শনাক্তকরণগুলো বিবেচনা করব, যেগুলোর IoU একটি নির্দিষ্ট মানের উপরে। উদাহরণস্বরূপ, PASCAL VOC ডেটাসেটে সাধারণত $\mbox{IoU Threshold} = 0.5$ ধরা হয়, যেখানে COCO ডেটাসেটে বিভিন্ন $\mbox{IoU Threshold}$ এর জন্য AP পরিমাপ করা হয়। + + + +> *ছবি [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) থেকে* + +### গড় গড় নির্ভুলতা - mAP + +অবজেক্ট ডিটেকশনের প্রধান মেট্রিক হলো **গড় গড় নির্ভুলতা**, বা **mAP**। এটি হলো গড় নির্ভুলতার মান, যা সমস্ত অবজেক্ট ক্লাসের উপর গড় করা হয়, এবং কখনও কখনও $\mbox{IoU Threshold}$ এর উপরও গড় করা হয়। **mAP** গণনার বিস্তারিত প্রক্রিয়া +[এই ব্লগ পোস্টে](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) এবং [কোড উদাহরণসহ এখানে](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) বর্ণনা করা হয়েছে। + +## বিভিন্ন অবজেক্ট ডিটেকশন পদ্ধতি + +অবজেক্ট ডিটেকশন অ্যালগরিদমের দুটি প্রধান শ্রেণি রয়েছে: + +* **রিজন প্রপোজাল নেটওয়ার্কস** (R-CNN, Fast R-CNN, Faster R-CNN)। মূল ধারণাটি হলো **রিজনস অফ ইন্টারেস্ট** (ROI) তৈরি করা এবং সেগুলোর উপর CNN চালানো, সর্বোচ্চ অ্যাক্টিভেশন খুঁজে বের করার জন্য। এটি সরল পদ্ধতির মতো, তবে ROI আরও বুদ্ধিমানের সাথে তৈরি করা হয়। এই পদ্ধতির একটি বড় সমস্যা হলো এটি ধীর, কারণ ছবির উপর CNN ক্লাসিফায়ার অনেকবার চালাতে হয়। +* **ওয়ান-পাস** (YOLO, SSD, RetinaNet) পদ্ধতি। এই আর্কিটেকচারে আমরা নেটওয়ার্ক ডিজাইন করি যাতে এটি একবারে ক্লাস এবং ROI উভয়ই প্রেডিক্ট করতে পারে। + +### R-CNN: রিজন-বেসড CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) ব্যবহার করে ROI অঞ্চলের একটি হায়ারারকিকাল স্ট্রাকচার তৈরি করে, যা পরে CNN ফিচার এক্সট্রাক্টর এবং SVM-ক্লাসিফায়ারগুলোর মাধ্যমে বস্তু ক্লাস নির্ধারণ করে এবং লিনিয়ার রিগ্রেশন ব্যবহার করে *বাউন্ডিং বক্স* এর কোঅর্ডিনেট নির্ধারণ করে। [অফিশিয়াল পেপার](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bn.png) + +> *ছবি van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bn.png) + +> *ছবি [এই ব্লগ](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) থেকে* + +### F-RCNN - ফাস্ট R-CNN + +এই পদ্ধতি R-CNN এর মতোই, তবে রিজনগুলো কনভোলিউশন লেয়ার প্রয়োগ করার পরে নির্ধারণ করা হয়। + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bn.png) + +> ছবি [অফিশিয়াল পেপার](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), ২০১৫ + +### Faster R-CNN + +এই পদ্ধতির মূল ধারণা হলো রিজন প্রেডিক্ট করতে নিউরাল নেটওয়ার্ক ব্যবহার করা - যাকে *রিজন প্রপোজাল নেটওয়ার্ক* বলা হয়। [পেপার](https://arxiv.org/pdf/1506.01497.pdf), ২০১৬ + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bn.png) + +> ছবি [অফিশিয়াল পেপার](https://arxiv.org/pdf/1506.01497.pdf) থেকে + +### R-FCN: রিজন-বেসড ফুলি কনভোলিউশনাল নেটওয়ার্ক + +এই অ্যালগরিদম Faster R-CNN এর চেয়েও দ্রুত। মূল ধারণাটি হলো: + +1. আমরা ResNet-101 ব্যবহার করে ফিচার এক্সট্রাক্ট করি। +2. ফিচারগুলো **পজিশন-সেনসিটিভ স্কোর ম্যাপ** দ্বারা প্রক্রিয়াকৃত হয়। $C$ ক্লাসের প্রতিটি অবজেক্টকে $k\times k$ অঞ্চলে ভাগ করা হয় এবং আমরা অবজেক্টের অংশগুলো প্রেডিক্ট করতে প্রশিক্ষণ দিই। +3. $k\times k$ অঞ্চলের প্রতিটি অংশের জন্য সমস্ত নেটওয়ার্ক অবজেক্ট ক্লাসের জন্য ভোট দেয় এবং সর্বোচ্চ ভোটপ্রাপ্ত ক্লাসটি নির্বাচিত হয়। + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bn.png) + +> ছবি [অফিশিয়াল পেপার](https://arxiv.org/abs/1605.06409) থেকে + +### YOLO - ইউ অনলি লুক ওন্স + +YOLO একটি রিয়েলটাইম ওয়ান-পাস অ্যালগরিদম। মূল ধারণাটি হলো: + + * ছবিটিকে $S\times S$ অঞ্চলে ভাগ করা হয়। + * প্রতিটি অঞ্চলের জন্য, **CNN** $n$ সম্ভাব্য অবজেক্ট, *বাউন্ডিং বক্স* এর কোঅর্ডিনেট এবং *কনফিডেন্স*=*প্রোবাবিলিটি* * IoU প্রেডিক্ট করে। + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bn.png) + +> ছবি [অফিশিয়াল পেপার](https://arxiv.org/abs/1506.02640) থেকে + +### অন্যান্য অ্যালগরিদম + +* RetinaNet: [অফিশিয়াল পেপার](https://arxiv.org/abs/1708.02002) + - [Torchvision-এ PyTorch ইমপ্লিমেন্টেশন](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras ইমপ্লিমেন্টেশন](https://github.com/fizyr/keras-retinanet) + - [Keras উদাহরণে Object Detection with RetinaNet](https://keras.io/examples/vision/retinanet/) +* SSD (Single Shot Detector): [অফিশিয়াল পেপার](https://arxiv.org/abs/1512.02325) + +## ✍️ এক্সারসাইজ: অবজেক্ট ডিটেকশন + +নিম্নলিখিত নোটবুকে আপনার শেখা চালিয়ে যান: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## উপসংহার + +এই পাঠে আপনি অবজেক্ট ডিটেকশন সম্পন্ন করার বিভিন্ন পদ্ধতির একটি দ্রুত পর্যালোচনা করেছেন! + +## 🚀 চ্যালেঞ্জ + +এই আর্টিকেল এবং নোটবুকগুলো পড়ুন এবং YOLO নিজে চেষ্টা করুন: + +* [YOLO সম্পর্কে একটি ভালো ব্লগ পোস্ট](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [অফিশিয়াল সাইট](https://pjreddie.com/darknet/yolo/) + * YOLO: [Keras ইমপ্লিমেন্টেশন](https://github.com/experiencor/keras-yolo2), [স্টেপ-বাই-স্টেপ নোটবুক](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Keras ইমপ্লিমেন্টেশন](https://github.com/experiencor/keras-yolo2), [স্টেপ-বাই-স্টেপ নোটবুক](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +* [অবজেক্ট ডিটেকশন](https://tjmachinelearning.com/lectures/1718/obj/) নিখিল সারদানার দ্বারা +* [অবজেক্ট ডিটেকশন অ্যালগরিদমের একটি ভালো তুলনা](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [অবজেক্ট ডিটেকশনের জন্য ডিপ লার্নিং অ্যালগরিদমের পর্যালোচনা](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [অবজেক্ট ডিটেকশন অ্যালগরিদমের একটি স্টেপ-বাই-স্টেপ পরিচিতি](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python-এ Faster R-CNN ইমপ্লিমেন্টেশন](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [অ্যাসাইনমেন্ট: অবজেক্ট ডিটেকশন](lab/README.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/bn/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..d987ae0c --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# হলিউড হেডস ডেটাসেট ব্যবহার করে হেড ডিটেকশন + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +ভিডিও নজরদারি ক্যামেরার স্ট্রিমে কতজন মানুষ আছে তা গণনা করা একটি গুরুত্বপূর্ণ কাজ, যা আমাদের দোকানে দর্শনার্থীর সংখ্যা, রেস্তোরাঁর ব্যস্ত সময় ইত্যাদি অনুমান করতে সাহায্য করবে। এই কাজটি সমাধান করতে, আমাদের বিভিন্ন কোণ থেকে মানুষের মাথা শনাক্ত করতে সক্ষম হতে হবে। মানুষের মাথা শনাক্ত করার জন্য একটি অবজেক্ট ডিটেকশন মডেল প্রশিক্ষণ দিতে, আমরা [হলিউড হেডস ডেটাসেট](https://www.di.ens.fr/willow/research/headdetection/) ব্যবহার করতে পারি। + +## ডেটাসেট + +[হলিউড হেডস ডেটাসেট](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) ৩,৬৯,৮৪৬টি মানুষের মাথার এনোটেশন সহ ২,২৪,৭৪০টি হলিউড সিনেমার ফ্রেম নিয়ে গঠিত। এটি [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) ফরম্যাটে সরবরাহ করা হয়েছে, যেখানে প্রতিটি ছবির জন্য একটি XML বর্ণনা ফাইলও থাকে যা দেখতে এরকম: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +এই ডেটাসেটে শুধুমাত্র একটি অবজেক্ট ক্লাস `head` রয়েছে, এবং প্রতিটি মাথার জন্য বাউন্ডিং বক্সের কোঅর্ডিনেট দেওয়া থাকে। আপনি XML পার্স করতে Python লাইব্রেরি ব্যবহার করতে পারেন, অথবা [এই লাইব্রেরি](https://pypi.org/project/pascal-voc/) ব্যবহার করতে পারেন যা সরাসরি PASCAL VOC ফরম্যাটের সাথে কাজ করে। + +## অবজেক্ট ডিটেকশন প্রশিক্ষণ + +আপনি নিম্নলিখিত পদ্ধতিগুলোর মাধ্যমে একটি অবজেক্ট ডিটেকশন মডেল প্রশিক্ষণ দিতে পারেন: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) এবং এর Python API ব্যবহার করে ক্লাউডে প্রোগ্রাম্যাটিকভাবে মডেল প্রশিক্ষণ দিন। কাস্টম ভিশন কয়েকশ ছবির বেশি ব্যবহার করতে পারবে না মডেল প্রশিক্ষণের জন্য, তাই আপনাকে ডেটাসেট সীমিত করতে হতে পারে। +* [Keras tutorial](https://keras.io/examples/vision/retinanet/) থেকে উদাহরণ ব্যবহার করে RetunaNet মডেল প্রশিক্ষণ দিন। +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) এর বিল্ট-ইন মডিউল ব্যবহার করুন। + +## মূল শিক্ষা + +অবজেক্ট ডিটেকশন একটি কাজ যা শিল্পে প্রায়ই প্রয়োজন হয়। যদিও কিছু সার্ভিস রয়েছে যা অবজেক্ট ডিটেকশন সম্পাদন করতে ব্যবহার করা যেতে পারে (যেমন [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), এটি বোঝা গুরুত্বপূর্ণ যে অবজেক্ট ডিটেকশন কীভাবে কাজ করে এবং নিজের মডেল প্রশিক্ষণ দেওয়ার সক্ষমতা থাকা। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/bn/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..f441b2c4 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# সেগমেন্টেশন + +আমরা পূর্বে অবজেক্ট ডিটেকশন সম্পর্কে শিখেছি, যা আমাদের *বাউন্ডিং বক্স* প্রেডিক্ট করে ছবিতে অবজেক্টের অবস্থান নির্ধারণ করতে সাহায্য করে। তবে, কিছু কাজের জন্য শুধুমাত্র বাউন্ডিং বক্স যথেষ্ট নয়, বরং আরও সুনির্দিষ্ট অবজেক্ট লোকালাইজেশন প্রয়োজন। এই কাজটিকে **সেগমেন্টেশন** বলা হয়। + +## [প্রাক-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +সেগমেন্টেশনকে **পিক্সেল ক্লাসিফিকেশন** হিসেবে দেখা যেতে পারে, যেখানে ছবির **প্রত্যেক** পিক্সেলের জন্য তার ক্লাস (*ব্যাকগ্রাউন্ড* একটি ক্লাস হিসেবে গণ্য) প্রেডিক্ট করতে হয়। সেগমেন্টেশনের দুটি প্রধান অ্যালগরিদম রয়েছে: + +* **সেমান্টিক সেগমেন্টেশন** শুধুমাত্র পিক্সেলের ক্লাস জানায়, এবং একই ক্লাসের বিভিন্ন অবজেক্টের মধ্যে পার্থক্য করে না। +* **ইনস্ট্যান্স সেগমেন্টেশন** ক্লাসগুলোকে বিভিন্ন ইনস্ট্যান্সে ভাগ করে। + +ইনস্ট্যান্স সেগমেন্টেশনের ক্ষেত্রে, এই ভেড়াগুলো আলাদা অবজেক্ট, কিন্তু সেমান্টিক সেগমেন্টেশনের ক্ষেত্রে সব ভেড়া একটি ক্লাস হিসেবে দেখানো হয়। + + + +> ছবি [এই ব্লগ পোস্ট](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) থেকে নেওয়া হয়েছে। + +সেগমেন্টেশনের জন্য বিভিন্ন নিউরাল আর্কিটেকচার রয়েছে, তবে এগুলোর গঠন একই রকম। একভাবে, এটি পূর্বে শেখা অটোএনকোডারের মতো, তবে এখানে মূল ছবিকে ডিকন্সট্রাক্ট করার পরিবর্তে আমাদের লক্ষ্য একটি **মাস্ক** ডিকন্সট্রাক্ট করা। সুতরাং, একটি সেগমেন্টেশন নেটওয়ার্কের নিম্নলিখিত অংশগুলো থাকে: + +* **এনকোডার** ইনপুট ছবির থেকে ফিচার এক্সট্রাক্ট করে। +* **ডিকোডার** সেই ফিচারগুলোকে **মাস্ক ইমেজে** রূপান্তরিত করে, যার সাইজ এবং চ্যানেলের সংখ্যা ক্লাসের সংখ্যার সাথে সামঞ্জস্যপূর্ণ। + + + +> ছবি [এই প্রকাশনা](https://arxiv.org/pdf/2001.05566.pdf) থেকে নেওয়া হয়েছে। + +সেগমেন্টেশনের জন্য ব্যবহৃত লস ফাংশন বিশেষভাবে উল্লেখযোগ্য। ক্লাসিক্যাল অটোএনকোডার ব্যবহার করার সময়, আমাদের দুটি ছবির মধ্যে সাদৃশ্য পরিমাপ করতে হয়, এবং আমরা এর জন্য মীন স্কয়ার এরর (MSE) ব্যবহার করতে পারি। সেগমেন্টেশনে, টার্গেট মাস্ক ছবির প্রতিটি পিক্সেল ক্লাস নম্বর (তৃতীয় ডাইমেনশনে এক-হট-এনকোডেড) উপস্থাপন করে, তাই আমাদের ক্লাসিফিকেশনের জন্য নির্দিষ্ট লস ফাংশন ব্যবহার করতে হয় - ক্রস-এনট্রপি লস, যা সমস্ত পিক্সেলের উপর গড় করা হয়। যদি মাস্ক বাইনারি হয় - **বাইনারি ক্রস-এনট্রপি লস** (BCE) ব্যবহার করা হয়। + +> ✅ এক-হট এনকোডিং একটি ক্লাস লেবেলকে ক্লাসের সংখ্যার সমান দৈর্ঘ্যের ভেক্টরে এনকোড করার একটি পদ্ধতি। এই পদ্ধতি সম্পর্কে [এই আর্টিকেল](https://datagy.io/sklearn-one-hot-encode/) দেখুন। + +## মেডিকেল ইমেজিংয়ের জন্য সেগমেন্টেশন + +এই পাঠে, আমরা সেগমেন্টেশনকে কার্যকরভাবে দেখতে পাবো, যেখানে নেটওয়ার্ককে মেডিকেল ছবিতে মানব নেভি (যা মোল নামেও পরিচিত) সনাক্ত করতে প্রশিক্ষণ দেওয়া হবে। আমরা PH2 ডাটাবেস ব্যবহার করব ডার্মোস্কপি ছবির উৎস হিসেবে। এই ডাটাসেটে তিনটি ক্লাসের ২০০টি ছবি রয়েছে: টিপিক্যাল নেভাস, অ্যাটিপিক্যাল নেভাস, এবং মেলানোমা। সমস্ত ছবির সাথে একটি **মাস্ক** রয়েছে যা নেভাসের আউটলাইন নির্দেশ করে। + +> ✅ এই প্রযুক্তি বিশেষভাবে এই ধরনের মেডিকেল ইমেজিংয়ের জন্য উপযুক্ত, তবে আপনি বাস্তব জীবনে এর আর কী কী ব্যবহার কল্পনা করতে পারেন? + +navi + +> ছবি PH2 ডাটাবেস থেকে নেওয়া হয়েছে। + +আমরা একটি মডেল প্রশিক্ষণ দেবো যাতে এটি ব্যাকগ্রাউন্ড থেকে যেকোনো নেভাস সেগমেন্ট করতে পারে। + +## ✍️ অনুশীলন: সেমান্টিক সেগমেন্টেশন + +নিচের নোটবুকগুলো খুলুন, বিভিন্ন সেমান্টিক সেগমেন্টেশন আর্কিটেকচার সম্পর্কে আরও জানুন, সেগুলো নিয়ে কাজ করার অনুশীলন করুন এবং সেগুলোকে কার্যকরভাবে দেখুন। + +* [সেমান্টিক সেগমেন্টেশন পাইটর্চ](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [সেমান্টিক সেগমেন্টেশন টেন্সরফ্লো](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## উপসংহার + +সেগমেন্টেশন একটি অত্যন্ত শক্তিশালী প্রযুক্তি যা ইমেজ ক্লাসিফিকেশনে বাউন্ডিং বক্সের বাইরে গিয়ে পিক্সেল-লেভেল ক্লাসিফিকেশন করে। এটি মেডিকেল ইমেজিংসহ অন্যান্য ক্ষেত্রে ব্যবহৃত হয়। + +## 🚀 চ্যালেঞ্জ + +শরীরের সেগমেন্টেশন মানুষের ছবি নিয়ে করা সাধারণ কাজগুলোর মধ্যে একটি। অন্য গুরুত্বপূর্ণ কাজগুলোর মধ্যে রয়েছে **স্কেলেটন ডিটেকশন** এবং **পোজ ডিটেকশন**। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) লাইব্রেরি ব্যবহার করে দেখুন কীভাবে পোজ ডিটেকশন ব্যবহার করা যায়। + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +এই [উইকিপিডিয়া আর্টিকেল](https://wikipedia.org/wiki/Image_segmentation) সেগমেন্টেশনের বিভিন্ন প্রয়োগ সম্পর্কে একটি ভালো ওভারভিউ প্রদান করে। ইনস্ট্যান্স সেগমেন্টেশন এবং প্যানোপটিক সেগমেন্টেশনের সাবডোমেইন সম্পর্কে আরও জানুন। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই ল্যাবে, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ব্যবহার করে **মানব শরীরের সেগমেন্টেশন** চেষ্টা করুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/bn/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..b385a893 --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# মানব শরীর সেগমেন্টেশন + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +ভিডিও প্রোডাকশনে, যেমন আবহাওয়ার পূর্বাভাসে, প্রায়ই ক্যামেরা থেকে মানুষের ছবি কেটে নিয়ে অন্য কোনো ফুটেজের উপর স্থাপন করতে হয়। এটি সাধারণত **ক্রোমা কী** প্রযুক্তি ব্যবহার করে করা হয়, যেখানে একজন মানুষকে একটি একরঙা পটভূমির সামনে ফিল্ম করা হয়, যা পরে সরিয়ে ফেলা হয়। এই ল্যাবে, আমরা একটি নিউরাল নেটওয়ার্ক মডেল প্রশিক্ষণ করব যা মানুষের সিলুয়েট কাট করতে পারে। + +## ডেটাসেট + +আমরা Kaggle থেকে [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ব্যবহার করব। Kaggle থেকে ডেটাসেটটি ম্যানুয়ালি ডাউনলোড করুন। + +## স্টার্টিং নোটবুক + +ল্যাব শুরু করুন [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) খুলে। + +## শিক্ষণীয় বিষয় + +শরীর সেগমেন্টেশন মানুষের ছবির সাথে কাজ করার সাধারণ কাজগুলোর মধ্যে একটি। অন্য গুরুত্বপূর্ণ কাজগুলোর মধ্যে রয়েছে **স্কেলেটন ডিটেকশন** এবং **পোজ ডিটেকশন**। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) লাইব্রেরি দেখুন, যেখানে এই কাজগুলো কীভাবে বাস্তবায়ন করা যায় তা দেখানো হয়েছে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/4-ComputerVision/README.md b/translations/bn/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..595d42bb --- /dev/null +++ b/translations/bn/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# কম্পিউটার ভিশন + +![কম্পিউটার ভিশন বিষয়বস্তুর সারাংশ একটি ডুডলে](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bn.png) + +এই অংশে আমরা শিখব: + +* [কম্পিউটার ভিশন এবং OpenCV এর পরিচিতি](06-IntroCV/README.md) +* [কনভলিউশনাল নিউরাল নেটওয়ার্ক](07-ConvNets/README.md) +* [প্রি-ট্রেইনড নেটওয়ার্ক এবং ট্রান্সফার লার্নিং](08-TransferLearning/README.md) +* [অটোএনকোডার](09-Autoencoders/README.md) +* [জেনারেটিভ অ্যাডভার্সারিয়াল নেটওয়ার্ক](10-GANs/README.md) +* [অবজেক্ট ডিটেকশন](11-ObjectDetection/README.md) +* [সেমান্টিক সেগমেন্টেশন](12-Segmentation/README.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/13-TextRep/README.md b/translations/bn/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..ba34ea6a --- /dev/null +++ b/translations/bn/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# টেক্সটকে টেনসরে উপস্থাপন করা + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## টেক্সট শ্রেণীবিন্যাস + +এই অংশের প্রথম ভাগে আমরা **টেক্সট শ্রেণীবিন্যাস** কাজের উপর মনোযোগ দেব। আমরা [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) ডেটাসেট ব্যবহার করব, যেখানে নিম্নলিখিত ধরনের সংবাদ নিবন্ধ রয়েছে: + +* বিভাগ: বিজ্ঞান/প্রযুক্তি +* শিরোনাম: Ky. কোম্পানি পেপটাইড গবেষণার জন্য অনুদান জিতেছে (AP) +* বডি: AP - লুইসভিল বিশ্ববিদ্যালয়ের একজন রসায়ন গবেষকের দ্বারা প্রতিষ্ঠিত একটি কোম্পানি একটি অনুদান জিতেছে... + +আমাদের লক্ষ্য হবে টেক্সটের ভিত্তিতে সংবাদটি কোন বিভাগে পড়ে তা শ্রেণীবদ্ধ করা। + +## টেক্সট উপস্থাপন + +যদি আমরা নিউরাল নেটওয়ার্ক ব্যবহার করে প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) কাজ সমাধান করতে চাই, তবে আমাদের টেক্সটকে টেনসরে উপস্থাপন করার একটি পদ্ধতি প্রয়োজন। কম্পিউটার ইতিমধ্যেই ASCII বা UTF-8 এর মতো এনকোডিং ব্যবহার করে আপনার স্ক্রিনে ফন্টে মানচিত্রিত সংখ্যার মাধ্যমে টেক্সট চরিত্র উপস্থাপন করে। + +চরিত্রকে ASCII এবং বাইনারি উপস্থাপনার সাথে মানচিত্রিত করার ডায়াগ্রাম দেখানো চিত্র + +> [চিত্র উৎস](https://www.seobility.net/en/wiki/ASCII) + +মানুষ হিসেবে আমরা বুঝি প্রতিটি অক্ষর **কী বোঝায়**, এবং কীভাবে সমস্ত অক্ষর একত্রে একটি বাক্যের শব্দ তৈরি করে। তবে, কম্পিউটার নিজেরাই এমন বোঝাপড়া রাখে না, এবং নিউরাল নেটওয়ার্ককে প্রশিক্ষণের সময় অর্থ শিখতে হয়। + +তাই, টেক্সট উপস্থাপনের জন্য আমরা বিভিন্ন পদ্ধতি ব্যবহার করতে পারি: + +* **চরিত্র-স্তরের উপস্থাপন**, যেখানে আমরা প্রতিটি চরিত্রকে একটি সংখ্যা হিসেবে বিবেচনা করে টেক্সট উপস্থাপন করি। যদি আমাদের টেক্সট কর্পাসে *C* ভিন্ন চরিত্র থাকে, তবে শব্দ *Hello* কে 5x*C* টেনসর হিসেবে উপস্থাপন করা হবে। প্রতিটি অক্ষর এক-হট এনকোডিংয়ে একটি টেনসর কলামের সাথে সম্পর্কিত হবে। +* **শব্দ-স্তরের উপস্থাপন**, যেখানে আমরা আমাদের টেক্সটের সমস্ত শব্দের একটি **ভোকাবুলারি** তৈরি করি এবং তারপর এক-হট এনকোডিং ব্যবহার করে শব্দ উপস্থাপন করি। এই পদ্ধতিটি কিছুটা ভালো, কারণ প্রতিটি অক্ষর নিজের মধ্যে খুব বেশি অর্থ বহন করে না, এবং উচ্চ-স্তরের অর্থপূর্ণ ধারণা - শব্দ - ব্যবহার করে আমরা নিউরাল নেটওয়ার্কের জন্য কাজটি সহজ করি। তবে, বৃহৎ ডিকশনারি আকারের কারণে আমাদের উচ্চ-মাত্রার স্পার্স টেনসরের সাথে কাজ করতে হয়। + +যে কোনো উপস্থাপনের জন্য, প্রথমে আমাদের টেক্সটকে **টোকেন**গুলোর একটি ক্রমে রূপান্তর করতে হবে, যেখানে একটি টোকেন একটি চরিত্র, একটি শব্দ, বা কখনও কখনও একটি শব্দের অংশ হতে পারে। তারপর, আমরা টোকেনকে একটি সংখ্যা হিসেবে রূপান্তর করি, সাধারণত **ভোকাবুলারি** ব্যবহার করে, এবং এই সংখ্যাটি এক-হট এনকোডিং ব্যবহার করে নিউরাল নেটওয়ার্কে খাওয়ানো যেতে পারে। + +## এন-গ্রাম + +প্রাকৃতিক ভাষায়, শব্দের সঠিক অর্থ কেবল প্রসঙ্গেই নির্ধারণ করা যায়। উদাহরণস্বরূপ, *neural network* এবং *fishing network* এর অর্থ সম্পূর্ণ ভিন্ন। এটি বিবেচনায় নেওয়ার একটি উপায় হল আমাদের মডেলটি শব্দ জোড়ার উপর ভিত্তি করে তৈরি করা এবং শব্দ জোড়াগুলোকে আলাদা ভোকাবুলারি টোকেন হিসেবে বিবেচনা করা। এইভাবে, বাক্য *I like to go fishing* নিম্নলিখিত টোকেন ক্রম দ্বারা উপস্থাপিত হবে: *I like*, *like to*, *to go*, *go fishing*। এই পদ্ধতির সমস্যা হল ডিকশনারি আকার উল্লেখযোগ্যভাবে বৃদ্ধি পায়, এবং *go fishing* এবং *go shopping* এর মতো সংমিশ্রণগুলো ভিন্ন টোকেন দ্বারা উপস্থাপিত হয়, যা একই ক্রিয়াপদ থাকা সত্ত্বেও কোনো অর্থগত সাদৃশ্য ভাগ করে না। + +কিছু ক্ষেত্রে, আমরা তিনটি শব্দের সংমিশ্রণ -- ট্রাই-গ্রাম -- ব্যবহার করার কথা বিবেচনা করতে পারি। তাই এই পদ্ধতিকে প্রায়ই **এন-গ্রাম** বলা হয়। এছাড়াও, চরিত্র-স্তরের উপস্থাপনের সাথে এন-গ্রাম ব্যবহার করাও অর্থবহ হতে পারে, যেখানে এন-গ্রাম প্রায় বিভিন্ন শব্দাংশের সাথে মিলে যায়। + +## ব্যাগ-অফ-ওয়ার্ডস এবং TF/IDF + +যখন টেক্সট শ্রেণীবিন্যাসের মতো কাজ সমাধান করতে হয়, তখন আমাদের একটি নির্দিষ্ট আকারের ভেক্টর দ্বারা টেক্সট উপস্থাপন করতে হয়, যা আমরা চূড়ান্ত ঘন শ্রেণীবিন্যাসকারীতে ইনপুট হিসেবে ব্যবহার করব। এটি করার সবচেয়ে সহজ উপায় হল সমস্ত পৃথক শব্দ উপস্থাপনাগুলোকে একত্রিত করা, যেমন তাদের যোগ করে। যদি আমরা প্রতিটি শব্দের এক-হট এনকোডিং যোগ করি, তবে আমরা একটি ফ্রিকোয়েন্সি ভেক্টর পাব, যা দেখায় যে টেক্সটের মধ্যে প্রতিটি শব্দ কতবার উপস্থিত হয়েছে। টেক্সটের এই ধরনের উপস্থাপনাকে **ব্যাগ অফ ওয়ার্ডস** (BoW) বলা হয়। + + + +> লেখকের তৈরি চিত্র + +একটি BoW মূলত কোন শব্দগুলো টেক্সটে উপস্থিত এবং কোন পরিমাণে তা উপস্থাপন করে, যা সত্যিই টেক্সটটি কী সম্পর্কে তা বোঝার একটি ভালো ইঙ্গিত হতে পারে। উদাহরণস্বরূপ, রাজনীতির উপর একটি সংবাদ নিবন্ধে *president* এবং *country* এর মতো শব্দ থাকতে পারে, যেখানে একটি বৈজ্ঞানিক প্রকাশনায় *collider*, *discovered* ইত্যাদি থাকতে পারে। তাই, অনেক ক্ষেত্রে শব্দের ফ্রিকোয়েন্সি টেক্সটের বিষয়বস্তু বোঝার একটি ভালো সূচক হতে পারে। + +BoW-এর সমস্যা হল কিছু সাধারণ শব্দ, যেমন *and*, *is* ইত্যাদি বেশিরভাগ টেক্সটে উপস্থিত হয় এবং তাদের ফ্রিকোয়েন্সি সর্বোচ্চ হয়, যা সত্যিই গুরুত্বপূর্ণ শব্দগুলোকে আড়াল করে। আমরা এই শব্দগুলোর গুরুত্ব কমাতে পারি যদি আমরা পুরো ডকুমেন্ট সংগ্রহে শব্দগুলো কতবার উপস্থিত হয় তা বিবেচনায় নিই। এটি TF/IDF পদ্ধতির মূল ধারণা, যা এই পাঠের সাথে সংযুক্ত নোটবুকে আরও বিস্তারিতভাবে আলোচনা করা হয়েছে। + +তবে, এই পদ্ধতিগুলো টেক্সটের **অর্থ** পুরোপুরি বিবেচনায় নিতে পারে না। এটি করার জন্য আমাদের আরও শক্তিশালী নিউরাল নেটওয়ার্ক মডেলের প্রয়োজন, যা আমরা এই অংশে পরে আলোচনা করব। + +## ✍️ অনুশীলন: টেক্সট উপস্থাপন + +নিম্নলিখিত নোটবুকে আপনার শেখা চালিয়ে যান: + +* [PyTorch দিয়ে টেক্সট উপস্থাপন](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow দিয়ে টেক্সট উপস্থাপন](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## উপসংহার + +এখন পর্যন্ত, আমরা এমন কৌশলগুলো অধ্যয়ন করেছি যা বিভিন্ন শব্দের ফ্রিকোয়েন্সি ওজন যোগ করতে পারে। তবে, এগুলো অর্থ বা ক্রম উপস্থাপন করতে অক্ষম। বিখ্যাত ভাষাবিদ জে. আর. ফার্থ ১৯৩৫ সালে বলেছিলেন, "একটি শব্দের সম্পূর্ণ অর্থ সর্বদা প্রসঙ্গগত, এবং প্রসঙ্গ ছাড়া অর্থের কোনো অধ্যয়নকে গুরুত্ব সহকারে নেওয়া যায় না।" আমরা এই কোর্সে পরে শিখব কীভাবে ভাষা মডেলিং ব্যবহার করে টেক্সট থেকে প্রসঙ্গগত তথ্য ধারণ করা যায়। + +## 🚀 চ্যালেঞ্জ + +ব্যাগ-অফ-ওয়ার্ডস এবং বিভিন্ন ডেটা মডেল ব্যবহার করে কিছু অন্যান্য অনুশীলন চেষ্টা করুন। আপনি এই [কাগল প্রতিযোগিতা](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) থেকে অনুপ্রাণিত হতে পারেন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## পুনরালোচনা ও স্ব-অধ্যয়ন + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) এ টেক্সট এমবেডিং এবং ব্যাগ-অফ-ওয়ার্ডস কৌশল নিয়ে আপনার দক্ষতা অনুশীলন করুন। + +## [অ্যাসাইনমেন্ট: নোটবুক](assignment.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/13-TextRep/assignment.md b/translations/bn/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..bac16d20 --- /dev/null +++ b/translations/bn/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# অ্যাসাইনমেন্ট: নোটবুক + +এই পাঠের সাথে সংযুক্ত নোটবুকগুলি (PyTorch বা TensorFlow সংস্করণ যেটি ব্যবহার করছেন), আপনার নিজের ডেটাসেট ব্যবহার করে পুনরায় চালান, সম্ভবত Kaggle থেকে নেওয়া একটি ডেটাসেট, যথাযথ স্বীকৃতির সাথে। নোটবুকটি পুনরায় লিখুন যাতে আপনার নিজস্ব পর্যবেক্ষণগুলি তুলে ধরা যায়। কিছু উদ্ভাবনী ডেটাসেট চেষ্টা করুন যা চমকপ্রদ হতে পারে, যেমন [এই UFO দর্শনের ডেটাসেট](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) NUFORC থেকে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/14-Embeddings/README.md b/translations/bn/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..559223fd --- /dev/null +++ b/translations/bn/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# এম্বেডিংস + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +BoW বা TF/IDF ভিত্তিক ক্লাসিফায়ার প্রশিক্ষণ করার সময়, আমরা উচ্চ-মাত্রার ব্যাগ-অফ-ওয়ার্ডস ভেক্টর নিয়ে কাজ করতাম যার দৈর্ঘ্য `vocab_size`, এবং আমরা স্পষ্টভাবে নিম্ন-মাত্রার পজিশনাল রিপ্রেজেন্টেশন ভেক্টর থেকে স্পার্স ওয়ান-হট রিপ্রেজেন্টেশনে রূপান্তর করতাম। তবে, এই ওয়ান-হট রিপ্রেজেন্টেশন মেমোরি-ইফিশিয়েন্ট নয়। এছাড়াও, প্রতিটি শব্দকে একে অপরের থেকে স্বাধীনভাবে বিবেচনা করা হয়, অর্থাৎ ওয়ান-হট এনকোডেড ভেক্টরগুলো শব্দগুলোর মধ্যে কোনো সেমান্টিক সাদৃশ্য প্রকাশ করে না। + +**এম্বেডিং** ধারণাটি হলো শব্দগুলোকে নিম্ন-মাত্রার ডেন্স ভেক্টর দিয়ে উপস্থাপন করা, যা কোনোভাবে শব্দের সেমান্টিক অর্থ প্রতিফলিত করে। আমরা পরে আলোচনা করব কীভাবে অর্থপূর্ণ শব্দ এম্বেডিং তৈরি করা যায়, তবে আপাতত এম্বেডিংকে শব্দ ভেক্টরের মাত্রা কমানোর একটি উপায় হিসেবে ভাবুন। + +এম্বেডিং লেয়ার একটি শব্দকে ইনপুট হিসেবে গ্রহণ করবে এবং নির্দিষ্ট `embedding_size` এর একটি আউটপুট ভেক্টর তৈরি করবে। এক অর্থে, এটি একটি `Linear` লেয়ারের মতোই, তবে এটি ওয়ান-হট এনকোডেড ভেক্টর গ্রহণ করার পরিবর্তে একটি শব্দ নম্বর ইনপুট হিসেবে নিতে সক্ষম হবে, যা আমাদের বড় ওয়ান-হট-এনকোডেড ভেক্টর তৈরি করা এড়াতে সাহায্য করবে। + +আমাদের ক্লাসিফায়ার নেটওয়ার্কে প্রথম লেয়ার হিসেবে একটি এম্বেডিং লেয়ার ব্যবহার করে, আমরা ব্যাগ-অফ-ওয়ার্ডস থেকে **এম্বেডিং ব্যাগ** মডেলে পরিবর্তন করতে পারি, যেখানে আমরা প্রথমে আমাদের টেক্সটের প্রতিটি শব্দকে সংশ্লিষ্ট এম্বেডিংয়ে রূপান্তর করি এবং তারপর সমস্ত এম্বেডিংয়ের উপর একটি অ্যাগ্রিগেট ফাংশন গণনা করি, যেমন `sum`, `average` বা `max`। + +![পাঁচটি সিকোয়েন্স শব্দের জন্য একটি এম্বেডিং ক্লাসিফায়ার দেখানো হয়েছে।](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bn.png) + +> লেখকের তৈরি চিত্র + +## ✍️ অনুশীলন: এম্বেডিংস + +নিম্নলিখিত নোটবুকগুলোতে আপনার শেখা চালিয়ে যান: +* [PyTorch দিয়ে এম্বেডিংস](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow দিয়ে এম্বেডিংস](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## সেমান্টিক এম্বেডিংস: Word2Vec + +যদিও এম্বেডিং লেয়ার শব্দগুলোকে ভেক্টর রিপ্রেজেন্টেশনে ম্যাপ করতে শিখেছে, তবে এই রিপ্রেজেন্টেশনে খুব বেশি সেমান্টিক অর্থ থাকতে পারে না। এমন একটি ভেক্টর রিপ্রেজেন্টেশন শেখা ভালো হবে যেখানে একই ধরনের শব্দ বা সমার্থক শব্দগুলো এমন ভেক্টর দ্বারা উপস্থাপিত হয় যা কিছু ভেক্টর দূরত্ব (যেমন ইউক্লিডিয়ান দূরত্ব) অনুযায়ী একে অপরের কাছাকাছি থাকে। + +এটি করতে, আমাদের একটি বড় টেক্সট সংগ্রহে একটি নির্দিষ্ট উপায়ে আমাদের এম্বেডিং মডেল প্রি-ট্রেন করতে হবে। সেমান্টিক এম্বেডিং প্রশিক্ষণের একটি উপায় হলো [Word2Vec](https://en.wikipedia.org/wiki/Word2vec)। এটি দুটি প্রধান আর্কিটেকচারের উপর ভিত্তি করে তৈরি, যা শব্দগুলোর একটি বিতরণকৃত রিপ্রেজেন্টেশন তৈরি করতে ব্যবহৃত হয়: + + - **কন্টিনিউয়াস ব্যাগ-অফ-ওয়ার্ডস** (CBoW) — এই আর্কিটেকচারে, আমরা মডেলকে আশেপাশের প্রসঙ্গ থেকে একটি শব্দ পূর্বানুমান করতে প্রশিক্ষণ দিই। ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ দেওয়া হলে, মডেলের লক্ষ্য হলো $(W_{-2},W_{-1},W_1,W_2)$ থেকে $W_0$ পূর্বানুমান করা। + - **কন্টিনিউয়াস স্কিপ-গ্রাম** CBoW এর বিপরীত। মডেল প্রসঙ্গ শব্দের আশেপাশের উইন্ডো ব্যবহার করে বর্তমান শব্দ পূর্বানুমান করে। + +CBoW দ্রুততর, তবে স্কিপ-গ্রাম ধীরতর, কিন্তু কম ঘন ঘন ব্যবহৃত শব্দগুলোকে ভালোভাবে উপস্থাপন করে। + +![CBoW এবং স্কিপ-গ্রাম অ্যালগরিদমগুলো শব্দগুলোকে ভেক্টরে রূপান্তর করার উদাহরণ দেখানো হয়েছে।](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bn.png) + +> [এই পেপার](https://arxiv.org/pdf/1301.3781.pdf) থেকে নেওয়া চিত্র + +Word2Vec প্রি-ট্রেনড এম্বেডিংস (এবং GloVe এর মতো অন্যান্য অনুরূপ মডেল) নিউরাল নেটওয়ার্কে এম্বেডিং লেয়ারের পরিবর্তে ব্যবহার করা যেতে পারে। তবে, আমাদের ভোকাবুলারি নিয়ে কাজ করতে হবে, কারণ Word2Vec/GloVe প্রি-ট্রেন করার সময় ব্যবহৃত ভোকাবুলারি আমাদের টেক্সট কর্পাসের ভোকাবুলারি থেকে আলাদা হতে পারে। এই সমস্যাটি কীভাবে সমাধান করা যায় তা দেখতে উপরের নোটবুকগুলো দেখুন। + +## প্রসঙ্গভিত্তিক এম্বেডিংস + +প্রথাগত প্রি-ট্রেনড এম্বেডিং রিপ্রেজেন্টেশনের একটি প্রধান সীমাবদ্ধতা হলো শব্দের অর্থ বিভ্রান্তি। যদিও প্রি-ট্রেনড এম্বেডিংস প্রসঙ্গে শব্দগুলোর কিছু অর্থ ধারণ করতে পারে, একটি শব্দের প্রতিটি সম্ভাব্য অর্থ একই এম্বেডিংয়ে এনকোড করা হয়। এটি ডাউনস্ট্রিম মডেলগুলোতে সমস্যা সৃষ্টি করতে পারে, কারণ অনেক শব্দ যেমন 'play' শব্দটি প্রসঙ্গ অনুযায়ী বিভিন্ন অর্থ ধারণ করে। + +উদাহরণস্বরূপ, 'play' শব্দটি এই দুটি বাক্যে ভিন্ন অর্থ প্রকাশ করে: + +- আমি থিয়েটারে একটি **play** দেখতে গিয়েছিলাম। +- জন তার বন্ধুদের সাথে **play** করতে চায়। + +উপরের প্রি-ট্রেনড এম্বেডিংগুলো 'play' শব্দটির এই দুটি অর্থ একই এম্বেডিংয়ে উপস্থাপন করে। এই সীমাবদ্ধতা কাটিয়ে উঠতে, আমাদের **ল্যাঙ্গুয়েজ মডেল** ভিত্তিক এম্বেডিং তৈরি করতে হবে, যা একটি বড় টেক্সট কর্পাসে প্রশিক্ষিত হয় এবং *জানে* কীভাবে শব্দগুলো বিভিন্ন প্রসঙ্গে একসাথে ব্যবহার করা যায়। প্রসঙ্গভিত্তিক এম্বেডিং নিয়ে আলোচনা এই টিউটোরিয়ালের আওতার বাইরে, তবে আমরা কোর্সের পরে ল্যাঙ্গুয়েজ মডেল নিয়ে আলোচনা করার সময় এটির কাছে ফিরে আসব। + +## উপসংহার + +এই পাঠে, আপনি TensorFlow এবং PyTorch-এ এম্বেডিং লেয়ার তৈরি এবং ব্যবহার করে কীভাবে শব্দগুলোর সেমান্টিক অর্থ আরও ভালোভাবে প্রতিফলিত করা যায় তা শিখেছেন। + +## 🚀 চ্যালেঞ্জ + +Word2Vec কিছু আকর্ষণীয় অ্যাপ্লিকেশনে ব্যবহৃত হয়েছে, যার মধ্যে রয়েছে গান এবং কবিতা তৈরি করা। [এই আর্টিকেলটি](https://www.politetype.com/blog/word2vec-color-poems) দেখুন, যেখানে লেখক Word2Vec ব্যবহার করে কবিতা তৈরি করার পদ্ধতি ব্যাখ্যা করেছেন। [ড্যান শিফম্যানের এই ভিডিওটি](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) দেখুন, যেখানে এই কৌশলটির একটি ভিন্ন ব্যাখ্যা দেওয়া হয়েছে। তারপর এই কৌশলগুলো আপনার নিজের টেক্সট কর্পাসে প্রয়োগ করার চেষ্টা করুন, যা হয়তো Kaggle থেকে সংগ্রহ করা যেতে পারে। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +Word2Vec নিয়ে এই পেপারটি পড়ুন: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [অ্যাসাইনমেন্ট: নোটবুক](assignment.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/14-Embeddings/assignment.md b/translations/bn/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..05311a96 --- /dev/null +++ b/translations/bn/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# অ্যাসাইনমেন্ট: নোটবুক + +এই পাঠের সাথে সংযুক্ত নোটবুকগুলি (PyTorch বা TensorFlow সংস্করণ যেটি ব্যবহার করছেন), আপনার নিজের ডেটাসেট ব্যবহার করে পুনরায় চালান, সম্ভবত Kaggle থেকে নেওয়া একটি ডেটাসেট, যথাযথ স্বীকৃতির সাথে। নোটবুকটি পুনরায় লিখুন এবং আপনার নিজস্ব পর্যবেক্ষণগুলি তুলে ধরুন। একটি ভিন্ন ধরনের ডেটাসেট চেষ্টা করুন এবং আপনার পর্যবেক্ষণগুলি নথিভুক্ত করুন, যেমন [এই বিটলস গানের লিরিক্স](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) ব্যবহার করে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/15-LanguageModeling/README.md b/translations/bn/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..cd1f09bb --- /dev/null +++ b/translations/bn/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# ভাষা মডেলিং + +সেমান্টিক এম্বেডিং, যেমন Word2Vec এবং GloVe, আসলে **ভাষা মডেলিং** এর দিকে প্রথম পদক্ষেপ - এমন মডেল তৈরি করা যা কোনোভাবে ভাষার প্রকৃতি *বোঝে* (বা *প্রতিনিধিত্ব করে*)। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +ভাষা মডেলিংয়ের মূল ধারণা হল তাদেরকে লেবেলবিহীন ডেটাসেটে প্রশিক্ষণ দেওয়া, যা একটি অসুপারভাইজড পদ্ধতিতে করা হয়। এটি গুরুত্বপূর্ণ কারণ আমাদের কাছে প্রচুর পরিমাণে লেবেলবিহীন টেক্সট উপলব্ধ রয়েছে, যেখানে লেবেলযুক্ত টেক্সটের পরিমাণ সবসময় সীমিত থাকবে, কারণ লেবেলিংয়ে আমরা যতটা প্রচেষ্টা করতে পারি তা দ্বারা সীমাবদ্ধ। বেশিরভাগ সময়, আমরা এমন ভাষা মডেল তৈরি করতে পারি যা **অনুপস্থিত শব্দগুলি পূর্বানুমান করতে পারে** টেক্সটে, কারণ টেক্সটে একটি র্যান্ডম শব্দ মাস্ক করা এবং এটি প্রশিক্ষণের নমুনা হিসাবে ব্যবহার করা সহজ। + +## এম্বেডিং প্রশিক্ষণ + +আমাদের আগের উদাহরণগুলিতে, আমরা প্রি-ট্রেইন্ড সেমান্টিক এম্বেডিং ব্যবহার করেছি, তবে এটি দেখতে আকর্ষণীয় যে কীভাবে এই এম্বেডিংগুলি প্রশিক্ষণ দেওয়া যায়। এখানে কয়েকটি সম্ভাব্য ধারণা রয়েছে যা ব্যবহার করা যেতে পারে: + +* **N-Gram** ভাষা মডেলিং, যেখানে আমরা N পূর্ববর্তী টোকেন (N-গ্রাম) দেখে একটি টোকেন পূর্বানুমান করি। +* **কন্টিনিউয়াস ব্যাগ-অফ-ওয়ার্ডস** (CBoW), যেখানে আমরা একটি টোকেন সিকোয়েন্স $W_{-N}$, ..., $W_N$ এর মধ্যে $W_0$ টোকেন পূর্বানুমান করি। +* **স্কিপ-গ্রাম**, যেখানে আমরা মধ্যবর্তী টোকেন $W_0$ থেকে পার্শ্ববর্তী টোকেনগুলির সেট {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} পূর্বানুমান করি। + +![শব্দকে ভেক্টরে রূপান্তর করার পেপারের চিত্র](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bn.png) + +> চিত্র [এই পেপার](https://arxiv.org/pdf/1301.3781.pdf) থেকে + +## ✍️ উদাহরণ নোটবুক: CBoW মডেল প্রশিক্ষণ + +নিম্নলিখিত নোটবুকগুলিতে আপনার শেখা চালিয়ে যান: + +* [TensorFlow দিয়ে CBoW Word2Vec প্রশিক্ষণ](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch দিয়ে CBoW Word2Vec প্রশিক্ষণ](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## উপসংহার + +পূর্ববর্তী পাঠে আমরা দেখেছি যে শব্দ এম্বেডিংগুলি জাদুর মতো কাজ করে! এখন আমরা জানি যে শব্দ এম্বেডিং প্রশিক্ষণ দেওয়া খুব জটিল কাজ নয়, এবং প্রয়োজনে আমরা ডোমেইন-নির্দিষ্ট টেক্সটের জন্য আমাদের নিজস্ব শব্দ এম্বেডিং প্রশিক্ষণ দিতে সক্ষম হওয়া উচিত। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +* [PyTorch এর অফিসিয়াল ভাষা মডেলিং টিউটোরিয়াল](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)। +* [TensorFlow এর অফিসিয়াল Word2Vec মডেল প্রশিক্ষণ টিউটোরিয়াল](https://www.TensorFlow.org/tutorials/text/word2vec)। +* **gensim** ফ্রেমওয়ার্ক ব্যবহার করে কয়েকটি লাইনে সবচেয়ে সাধারণ এম্বেডিং প্রশিক্ষণের পদ্ধতি [এই ডকুমেন্টেশনে](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) বর্ণনা করা হয়েছে। + +## 🚀 [অ্যাসাইনমেন্ট: স্কিপ-গ্রাম মডেল প্রশিক্ষণ](lab/README.md) + +ল্যাবে, আমরা আপনাকে এই পাঠের কোড পরিবর্তন করে CBoW এর পরিবর্তে স্কিপ-গ্রাম মডেল প্রশিক্ষণ দেওয়ার চ্যালেঞ্জ দিচ্ছি। [বিস্তারিত পড়ুন](lab/README.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/bn/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..be424ed1 --- /dev/null +++ b/translations/bn/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# স্কিপ-গ্রাম মডেল প্রশিক্ষণ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +এই ল্যাবে আপনাকে চ্যালেঞ্জ করা হচ্ছে স্কিপ-গ্রাম পদ্ধতি ব্যবহার করে Word2Vec মডেল প্রশিক্ষণ দিতে। $N$-টোকেন-প্রশস্ত স্কিপ-গ্রাম উইন্ডোতে প্রতিবেশী শব্দগুলি পূর্বাভাস করার জন্য এমবেডিং সহ একটি নেটওয়ার্ক প্রশিক্ষণ দিন। আপনি [এই পাঠের কোড](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) ব্যবহার করতে পারেন এবং এটিকে সামান্য পরিবর্তন করতে পারেন। + +## ডেটাসেট + +আপনি যেকোনো বই ব্যবহার করতে পারেন। [Project Gutenberg](https://www.gutenberg.org/) এ অনেক বিনামূল্যের টেক্সট পাওয়া যায়। উদাহরণস্বরূপ, এখানে লুইস ক্যারলের [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) এর একটি সরাসরি লিঙ্ক রয়েছে। অথবা, আপনি শেক্সপিয়ারের নাটকগুলি ব্যবহার করতে পারেন, যা আপনি নিম্নলিখিত কোড ব্যবহার করে পেতে পারেন: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## অনুসন্ধান করুন! + +যদি আপনার সময় থাকে এবং বিষয়টি আরও গভীরভাবে অন্বেষণ করতে চান, তবে কয়েকটি বিষয় পরীক্ষা করে দেখুন: + +* এমবেডিং সাইজ কীভাবে ফলাফলের উপর প্রভাব ফেলে? +* বিভিন্ন টেক্সট স্টাইল কীভাবে ফলাফলের উপর প্রভাব ফেলে? +* খুব ভিন্ন ধরনের শব্দ এবং তাদের সমার্থক শব্দগুলি নিন, তাদের ভেক্টর উপস্থাপনাগুলি সংগ্রহ করুন, মাত্রা কমানোর জন্য PCA প্রয়োগ করুন এবং সেগুলিকে 2D স্পেসে প্লট করুন। আপনি কি কোনো প্যাটার্ন দেখতে পাচ্ছেন? + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/16-RNN/README.md b/translations/bn/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..3860a8fa --- /dev/null +++ b/translations/bn/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# পুনরাবৃত্ত নিউরাল নেটওয়ার্ক + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +পূর্ববর্তী অংশগুলোতে, আমরা টেক্সটের সমৃদ্ধ সেমান্টিক উপস্থাপনাগুলি এবং এম্বেডিংয়ের উপরে একটি সাধারণ লিনিয়ার ক্লাসিফায়ার ব্যবহার করেছি। এই আর্কিটেকচারের কাজ হলো একটি বাক্যের শব্দগুলোর সম্মিলিত অর্থ ধারণ করা, কিন্তু এটি শব্দগুলোর **ক্রম** বিবেচনা করে না, কারণ এম্বেডিংয়ের উপরে অ্যাগ্রিগেশন অপারেশন মূল টেক্সট থেকে এই তথ্যটি সরিয়ে দেয়। যেহেতু এই মডেলগুলো শব্দের ক্রম মডেল করতে অক্ষম, তাই তারা টেক্সট জেনারেশন বা প্রশ্নোত্তরের মতো জটিল বা দ্ব্যর্থক কাজ সমাধান করতে পারে না। + +টেক্সট সিকোয়েন্সের অর্থ ধারণ করতে, আমাদের আরেকটি নিউরাল নেটওয়ার্ক আর্কিটেকচার ব্যবহার করতে হবে, যাকে বলা হয় **পুনরাবৃত্ত নিউরাল নেটওয়ার্ক**, বা RNN। RNN-এ, আমরা আমাদের বাক্যটি নেটওয়ার্কের মধ্য দিয়ে একবারে একটি প্রতীক পাঠাই, এবং নেটওয়ার্কটি কিছু **অবস্থা** তৈরি করে, যা আমরা পরবর্তী প্রতীকের সাথে আবার নেটওয়ার্কে পাঠাই। + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bn.png) + +> লেখকের চিত্র + +প্রতীকগুলোর ইনপুট সিকোয়েন্স X0,...,Xn দেওয়া হলে, RNN একটি নিউরাল নেটওয়ার্ক ব্লকের সিকোয়েন্স তৈরি করে এবং ব্যাকপ্রোপাগেশনের মাধ্যমে এই সিকোয়েন্সটি এন্ড-টু-এন্ড প্রশিক্ষণ দেয়। প্রতিটি নেটওয়ার্ক ব্লক (Xi,Si) জোড়াকে ইনপুট হিসেবে নেয় এবং ফলাফল হিসেবে Si+1 তৈরি করে। চূড়ান্ত অবস্থা Sn বা (আউটপুট Yn) একটি লিনিয়ার ক্লাসিফায়ারে যায় ফলাফল তৈরি করতে। সমস্ত নেটওয়ার্ক ব্লক একই ওজন শেয়ার করে এবং একবার ব্যাকপ্রোপাগেশন পাসের মাধ্যমে এন্ড-টু-এন্ড প্রশিক্ষণ পায়। + +কারণ অবস্থা ভেক্টর S0,...,Sn নেটওয়ার্কের মধ্য দিয়ে পাঠানো হয়, এটি শব্দগুলোর ক্রমিক নির্ভরতা শিখতে সক্ষম। উদাহরণস্বরূপ, যখন *not* শব্দটি সিকোয়েন্সের কোথাও উপস্থিত হয়, এটি অবস্থা ভেক্টরের নির্দিষ্ট উপাদানগুলোকে নেগেট করতে শিখতে পারে, যার ফলে নেগেশন ঘটে। + +> ✅ যেহেতু উপরের ছবিতে সমস্ত RNN ব্লকের ওজন শেয়ার করা হয়, একই ছবি একটি ব্লক (ডানদিকে) হিসেবে উপস্থাপন করা যেতে পারে একটি পুনরাবৃত্ত ফিডব্যাক লুপ সহ, যা নেটওয়ার্কের আউটপুট অবস্থা ইনপুটে ফেরত পাঠায়। + +## একটি RNN সেলের গঠন + +চলুন দেখি একটি সাধারণ RNN সেল কীভাবে সংগঠিত। এটি পূর্ববর্তী অবস্থা Si-1 এবং বর্তমান প্রতীক Xi ইনপুট হিসেবে গ্রহণ করে এবং আউটপুট অবস্থা Si তৈরি করতে হয় (এবং, কখনও কখনও, আমরা অন্য কিছু আউটপুট Yi সম্পর্কেও আগ্রহী, যেমন জেনারেটিভ নেটওয়ার্কের ক্ষেত্রে)। + +একটি সাধারণ RNN সেলের ভিতরে দুটি ওজন ম্যাট্রিক্স থাকে: একটি ইনপুট প্রতীককে রূপান্তর করে (আমরা একে W বলি), এবং অন্যটি ইনপুট অবস্থাকে রূপান্তর করে (H)। এই ক্ষেত্রে নেটওয়ার্কের আউটপুট হিসাব করা হয় σ(W×Xi+H×Si-1+b), যেখানে σ হলো অ্যাক্টিভেশন ফাংশন এবং b হলো অতিরিক্ত বায়াস। + +RNN সেলের গঠন + +> লেখকের চিত্র + +অনেক ক্ষেত্রে, ইনপুট প্রতীকগুলো RNN-এ প্রবেশ করার আগে এম্বেডিং লেয়ারের মধ্য দিয়ে পাঠানো হয় ডাইমেনশনালিটি কমানোর জন্য। এই ক্ষেত্রে, যদি ইনপুট ভেক্টরের ডাইমেনশন *emb_size* হয়, এবং অবস্থা ভেক্টর *hid_size* হয় - তবে W-এর আকার হবে *emb_size*×*hid_size*, এবং H-এর আকার হবে *hid_size*×*hid_size*। + +## লং শর্ট টার্ম মেমোরি (LSTM) + +ক্লাসিক্যাল RNN-এর প্রধান সমস্যাগুলোর একটি হলো **ভ্যানিশিং গ্রেডিয়েন্টস** সমস্যা। যেহেতু RNN-গুলো একবার ব্যাকপ্রোপাগেশন পাসে এন্ড-টু-এন্ড প্রশিক্ষণ পায়, এটি নেটওয়ার্কের প্রথম স্তরগুলোতে ত্রুটি প্রোপাগেট করতে অসুবিধা হয়, এবং এর ফলে নেটওয়ার্ক দূরবর্তী প্রতীকগুলোর মধ্যে সম্পর্ক শিখতে পারে না। এই সমস্যাটি এড়ানোর একটি উপায় হলো **স্পষ্ট অবস্থা ব্যবস্থাপনা** প্রবর্তন করা **গেট** ব্যবহার করে। এই ধরনের দুটি সুপরিচিত আর্কিটেকচার হলো: **লং শর্ট টার্ম মেমোরি** (LSTM) এবং **গেটেড রিলে ইউনিট** (GRU)। + +![একটি লং শর্ট টার্ম মেমোরি সেলের উদাহরণ](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> চিত্রের উৎস TBD + +LSTM নেটওয়ার্ক RNN-এর মতোই সংগঠিত, কিন্তু এখানে দুটি অবস্থা স্তর থেকে স্তরে পাঠানো হয়: প্রকৃত অবস্থা C এবং হিডেন ভেক্টর H। প্রতিটি ইউনিটে, হিডেন ভেক্টর Hi ইনপুট Xi-এর সাথে একত্রিত হয়, এবং তারা **গেট**-এর মাধ্যমে অবস্থা C-তে কী ঘটবে তা নিয়ন্ত্রণ করে। প্রতিটি গেট হলো সিগময়েড অ্যাক্টিভেশন সহ একটি নিউরাল নেটওয়ার্ক (আউটপুট [0,1] পরিসরে), যা অবস্থা ভেক্টরের সাথে গুণিত হলে বিটওয়াইজ মাস্ক হিসেবে বিবেচনা করা যেতে পারে। নিচে গেটগুলো উল্লেখ করা হলো (উপরের ছবিতে বাম থেকে ডানে): + +* **ফরগেট গেট** একটি হিডেন ভেক্টর গ্রহণ করে এবং নির্ধারণ করে কোন উপাদানগুলো অবস্থা C থেকে ভুলে যেতে হবে এবং কোনগুলো পাস করতে হবে। +* **ইনপুট গেট** ইনপুট এবং হিডেন ভেক্টর থেকে কিছু তথ্য গ্রহণ করে এবং তা অবস্থায় যোগ করে। +* **আউটপুট গেট** অবস্থা একটি লিনিয়ার লেয়ারের মাধ্যমে রূপান্তর করে *tanh* অ্যাক্টিভেশন সহ, তারপর এর কিছু উপাদান নির্বাচন করে একটি নতুন অবস্থা Ci+1 তৈরি করতে। + +অবস্থা C-এর উপাদানগুলোকে কিছু ফ্ল্যাগ হিসেবে বিবেচনা করা যেতে পারে যা চালু এবং বন্ধ করা যায়। উদাহরণস্বরূপ, যখন আমরা সিকোয়েন্সে *Alice* নামটি পাই, আমরা ধরে নিতে পারি এটি একটি মহিলা চরিত্রকে নির্দেশ করে, এবং অবস্থায় একটি ফ্ল্যাগ উত্থাপন করি যে বাক্যে একটি মহিলা বিশেষ্য রয়েছে। যখন আমরা আরও *and Tom* বাক্যাংশটি পাই, আমরা ফ্ল্যাগ উত্থাপন করি যে এখানে একটি বহুবচন বিশেষ্য রয়েছে। এভাবে অবস্থার মাধ্যমে আমরা বাক্যের অংশগুলোর ব্যাকরণগত বৈশিষ্ট্যগুলো ট্র্যাক করতে পারি। + +> ✅ LSTM-এর অভ্যন্তরীণ বিষয়গুলো বোঝার জন্য একটি চমৎকার রিসোর্স হলো ক্রিস্টোফার ওলাহের এই অসাধারণ নিবন্ধ [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)। + +## বাইডাইরেকশনাল এবং মাল্টিলেয়ার RNN + +আমরা এমন পুনরাবৃত্ত নেটওয়ার্ক নিয়ে আলোচনা করেছি যা একদিকে কাজ করে, সিকোয়েন্সের শুরু থেকে শেষ পর্যন্ত। এটি স্বাভাবিক মনে হয়, কারণ এটি পড়া এবং বক্তৃতা শোনার পদ্ধতির সাথে সাদৃশ্যপূর্ণ। তবে, অনেক বাস্তব ক্ষেত্রে আমাদের ইনপুট সিকোয়েন্সে র‍্যান্ডম অ্যাক্সেস থাকে, তাই পুনরাবৃত্ত গণনা উভয় দিকেই চালানো যৌক্তিক হতে পারে। এমন নেটওয়ার্কগুলোকে বলা হয় **বাইডাইরেকশনাল** RNN। বাইডাইরেকশনাল নেটওয়ার্কের ক্ষেত্রে, আমাদের দুটি হিডেন স্টেট ভেক্টর প্রয়োজন হবে, প্রতিটি দিকের জন্য একটি। + +একটি পুনরাবৃত্ত নেটওয়ার্ক, একদিকীয় বা বাইডাইরেকশনাল, একটি সিকোয়েন্সের নির্দিষ্ট প্যাটার্নগুলো ধারণ করে এবং সেগুলোকে একটি স্টেট ভেক্টরে সংরক্ষণ করতে পারে বা আউটপুটে পাস করতে পারে। কনভলিউশনাল নেটওয়ার্কের মতো, আমরা প্রথম স্তর দ্বারা নির্যাসিত নিম্ন-স্তরের প্যাটার্ন থেকে উচ্চ-স্তরের প্যাটার্ন ধারণ করতে প্রথম স্তরের উপরে আরেকটি পুনরাবৃত্ত স্তর তৈরি করতে পারি। এটি আমাদের **মাল্টি-লেয়ার RNN** ধারণায় নিয়ে যায়, যা দুটি বা তার বেশি পুনরাবৃত্ত নেটওয়ার্ক নিয়ে গঠিত, যেখানে পূর্ববর্তী স্তরের আউটপুট পরবর্তী স্তরের ইনপুট হিসেবে পাস হয়। + +![মাল্টিলেয়ার লং-শর্ট-টার্ম-মেমোরি RNN-এর একটি চিত্র](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bn.jpg) + +*[এই চমৎকার পোস্ট](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) থেকে ফার্নান্দো লোপেজের ছবি* + +## ✍️ অনুশীলন: এম্বেডিং + +নিম্নলিখিত নোটবুকগুলোতে আপনার শেখা চালিয়ে যান: + +* [PyTorch দিয়ে RNN](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow দিয়ে RNN](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## উপসংহার + +এই ইউনিটে, আমরা দেখেছি যে RNN সিকোয়েন্স ক্লাসিফিকেশনের জন্য ব্যবহার করা যেতে পারে, কিন্তু প্রকৃতপক্ষে, তারা আরও অনেক কাজ পরিচালনা করতে পারে, যেমন টেক্সট জেনারেশন, মেশিন ট্রান্সলেশন, এবং আরও অনেক কিছু। আমরা পরবর্তী ইউনিটে এই কাজগুলো বিবেচনা করব। + +## 🚀 চ্যালেঞ্জ + +LSTM সম্পর্কে কিছু সাহিত্য পড়ুন এবং তাদের প্রয়োগ বিবেচনা করুন: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) ক্রিস্টোফার ওলাহের দ্বারা। + +## [অ্যাসাইনমেন্ট: নোটবুক](assignment.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/16-RNN/assignment.md b/translations/bn/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..a6a8a53e --- /dev/null +++ b/translations/bn/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# অ্যাসাইনমেন্ট: নোটবুক + +এই পাঠের সাথে সংযুক্ত নোটবুকগুলি (PyTorch বা TensorFlow সংস্করণ যেটি ব্যবহার করছেন), আপনার নিজের ডেটাসেট ব্যবহার করে পুনরায় চালান, সম্ভবত Kaggle থেকে নেওয়া একটি ডেটাসেট, যথাযথ স্বীকৃতির সাথে। নোটবুকটি পুনরায় লিখুন এবং আপনার নিজস্ব পর্যবেক্ষণগুলি তুলে ধরুন। একটি ভিন্ন ধরনের ডেটাসেট চেষ্টা করুন এবং আপনার পর্যবেক্ষণগুলি নথিভুক্ত করুন, যেমন [এই Kaggle প্রতিযোগিতার ডেটাসেট যা আবহাওয়া সম্পর্কিত টুইট নিয়ে](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/bn/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..b1aa019d --- /dev/null +++ b/translations/bn/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# জেনারেটিভ নেটওয়ার্কস + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Recurrent Neural Networks (RNNs) এবং তাদের গেটেড সেল ভ্যারিয়েন্ট যেমন Long Short Term Memory Cells (LSTMs) এবং Gated Recurrent Units (GRUs) ভাষা মডেলিংয়ের জন্য একটি পদ্ধতি প্রদান করে, যেখানে তারা শব্দের ক্রম শিখতে পারে এবং একটি সিকোয়েন্সে পরবর্তী শব্দের পূর্বাভাস দিতে পারে। এটি আমাদের RNNs ব্যবহার করে **জেনারেটিভ কাজ** সম্পাদন করতে দেয়, যেমন সাধারণ টেক্সট জেনারেশন, মেশিন ট্রান্সলেশন এবং এমনকি ইমেজ ক্যাপশনিং। + +> ✅ ভাবুন, আপনি কতবার জেনারেটিভ কাজের সুবিধা পেয়েছেন, যেমন টাইপ করার সময় টেক্সট সম্পূর্ণ হওয়া। আপনার প্রিয় অ্যাপ্লিকেশনগুলোর উপর গবেষণা করুন এবং দেখুন তারা RNNs ব্যবহার করেছে কিনা। + +পূর্ববর্তী ইউনিটে আলোচনা করা RNN আর্কিটেকচারে, প্রতিটি RNN ইউনিট একটি আউটপুট হিসেবে পরবর্তী হিডেন স্টেট তৈরি করত। তবে, আমরা প্রতিটি রিকারেন্ট ইউনিটে আরেকটি আউটপুট যোগ করতে পারি, যা আমাদের একটি **সিকোয়েন্স** আউটপুট করতে দেয় (যা মূল সিকোয়েন্সের দৈর্ঘ্যের সমান)। তদ্ব্যতীত, আমরা এমন RNN ইউনিট ব্যবহার করতে পারি যা প্রতিটি ধাপে ইনপুট গ্রহণ করে না, বরং একটি প্রাথমিক স্টেট ভেক্টর গ্রহণ করে এবং তারপর আউটপুটের একটি সিকোয়েন্স তৈরি করে। + +এটি এমন বিভিন্ন নিউরাল আর্কিটেকচারের জন্য অনুমতি দেয় যা নিচের ছবিতে দেখানো হয়েছে: + +![RNN-এর সাধারণ প্যাটার্ন দেখানো একটি ছবি।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bn.jpg) + +> ছবি ব্লগ পোস্ট [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) থেকে, লেখক [Andrej Karpaty](http://karpathy.github.io/) + +* **ওয়ান-টু-ওয়ান** একটি ঐতিহ্যবাহী নিউরাল নেটওয়ার্ক যেখানে একটি ইনপুট এবং একটি আউটপুট থাকে +* **ওয়ান-টু-মেনি** একটি জেনারেটিভ আর্কিটেকচার যা একটি ইনপুট ভ্যালু গ্রহণ করে এবং আউটপুট ভ্যালুগুলোর একটি সিকোয়েন্স তৈরি করে। উদাহরণস্বরূপ, যদি আমরা একটি **ইমেজ ক্যাপশনিং** নেটওয়ার্ক প্রশিক্ষণ দিতে চাই যা একটি ছবির টেক্সট বর্ণনা তৈরি করবে, আমরা একটি ছবি ইনপুট হিসেবে গ্রহণ করতে পারি, এটিকে একটি CNN-এর মাধ্যমে পাস করিয়ে তার হিডেন স্টেট পেতে পারি, এবং তারপর একটি রিকারেন্ট চেইন শব্দ ধরে ধরে ক্যাপশন তৈরি করতে পারি। +* **মেনি-টু-ওয়ান** পূর্ববর্তী ইউনিটে বর্ণিত RNN আর্কিটেকচারের সাথে মিলে যায়, যেমন টেক্সট ক্লাসিফিকেশন। +* **মেনি-টু-মেনি**, বা **সিকোয়েন্স-টু-সিকোয়েন্স** এমন কাজের সাথে মিলে যায় যেমন **মেশিন ট্রান্সলেশন**, যেখানে প্রথম RNN ইনপুট সিকোয়েন্স থেকে সমস্ত তথ্য হিডেন স্টেটে সংগ্রহ করে, এবং আরেকটি RNN চেইন এই স্টেটকে আউটপুট সিকোয়েন্সে রূপান্তর করে। + +এই ইউনিটে, আমরা সহজ জেনারেটিভ মডেলের উপর ফোকাস করব যা আমাদের টেক্সট তৈরি করতে সাহায্য করে। সরলতার জন্য, আমরা ক্যারেক্টার-লেভেল টোকেনাইজেশন ব্যবহার করব। + +আমরা এই RNN-কে ধাপে ধাপে টেক্সট তৈরি করতে প্রশিক্ষণ দেব। প্রতিটি ধাপে, আমরা `nchars` দৈর্ঘ্যের একটি ক্যারেক্টার সিকোয়েন্স নেব এবং নেটওয়ার্ককে প্রতিটি ইনপুট ক্যারেক্টারের জন্য পরবর্তী আউটপুট ক্যারেক্টার তৈরি করতে বলব: + +![RNN-এর মাধ্যমে 'HELLO' শব্দ তৈরি করার একটি উদাহরণ।](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bn.png) + +টেক্সট তৈরি করার সময় (ইনফারেন্স চলাকালীন), আমরা কিছু **প্রম্পট** দিয়ে শুরু করি, যা RNN সেলগুলোর মাধ্যমে পাস হয় এবং এর মধ্যবর্তী স্টেট তৈরি করে, এবং তারপর এই স্টেট থেকে জেনারেশন শুরু হয়। আমরা একবারে একটি ক্যারেক্টার তৈরি করি এবং স্টেট ও তৈরি করা ক্যারেক্টারকে আরেকটি RNN সেলে পাস করি পরবর্তীটি তৈরি করার জন্য, যতক্ষণ না আমরা পর্যাপ্ত ক্যারেক্টার তৈরি করি। + + + +> লেখকের তৈরি ছবি + +## ✍️ অনুশীলন: জেনারেটিভ নেটওয়ার্কস + +নিচের নোটবুকগুলোতে আপনার শেখা চালিয়ে যান: + +* [PyTorch দিয়ে জেনারেটিভ নেটওয়ার্কস](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow দিয়ে জেনারেটিভ নেটওয়ার্কস](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## নরম টেক্সট জেনারেশন এবং টেম্পারেচার + +প্রতিটি RNN সেলের আউটপুট হলো ক্যারেক্টারগুলোর একটি সম্ভাব্যতা বিতরণ। যদি আমরা সর্বদা সর্বোচ্চ সম্ভাব্যতার ক্যারেক্টারকে পরবর্তী ক্যারেক্টার হিসেবে গ্রহণ করি, তাহলে তৈরি করা টেক্সট প্রায়ই একই ক্যারেক্টার সিকোয়েন্সের মধ্যে "ঘুরপাক" খেতে পারে, যেমন এই উদাহরণে: + +``` +today of the second the company and a second the company ... +``` + +তবে, যদি আমরা পরবর্তী ক্যারেক্টারের জন্য সম্ভাব্যতা বিতরণ দেখি, তাহলে দেখা যেতে পারে যে কয়েকটি সর্বোচ্চ সম্ভাব্যতার মধ্যে পার্থক্য খুব বেশি নয়, যেমন একটি ক্যারেক্টারের সম্ভাব্যতা ০.২ হতে পারে, আরেকটির ০.১৯, ইত্যাদি। উদাহরণস্বরূপ, '*play*' সিকোয়েন্সে পরবর্তী ক্যারেক্টার সমানভাবে স্পেস বা **e** (যেমন *player* শব্দে) হতে পারে। + +এটি আমাদের এই সিদ্ধান্তে পৌঁছায় যে সর্বোচ্চ সম্ভাব্যতার ক্যারেক্টার বেছে নেওয়া সবসময় "ন্যায্য" নয়, কারণ দ্বিতীয় সর্বোচ্চটি বেছে নেওয়াও অর্থপূর্ণ টেক্সট তৈরি করতে পারে। এটি আরও বুদ্ধিমানের কাজ যে নেটওয়ার্ক আউটপুট দ্বারা প্রদত্ত সম্ভাব্যতা বিতরণ থেকে ক্যারেক্টার **স্যাম্পল** করা। আমরা একটি প্যারামিটার, **টেম্পারেচার**, ব্যবহার করতে পারি যা সম্ভাব্যতা বিতরণকে সমতল করতে পারে, যদি আমরা আরও এলোমেলোতা যোগ করতে চাই, অথবা এটিকে আরও খাড়া করতে পারি, যদি আমরা সর্বোচ্চ-সম্ভাব্যতার ক্যারেক্টারগুলোর প্রতি বেশি মনোযোগ দিতে চাই। + +উপরের লিঙ্ক করা নোটবুকগুলোতে এই নরম টেক্সট জেনারেশন কীভাবে বাস্তবায়িত হয় তা অন্বেষণ করুন। + +## উপসংহার + +যদিও টেক্সট জেনারেশন নিজেই উপকারী হতে পারে, প্রধান সুবিধাগুলো আসে RNNs ব্যবহার করে কিছু প্রাথমিক ফিচার ভেক্টর থেকে টেক্সট তৈরি করার ক্ষমতা থেকে। উদাহরণস্বরূপ, টেক্সট জেনারেশন মেশিন ট্রান্সলেশনের অংশ হিসেবে ব্যবহৃত হয় (সিকোয়েন্স-টু-সিকোয়েন্স, এই ক্ষেত্রে *এনকোডার* থেকে স্টেট ভেক্টর ব্যবহার করে অনুবাদিত বার্তা তৈরি বা *ডিকোড* করা হয়), অথবা একটি ছবির টেক্সট বর্ণনা তৈরি করতে (যেখানে ফিচার ভেক্টরটি CNN এক্সট্রাক্টর থেকে আসে)। + +## 🚀 চ্যালেঞ্জ + +এই বিষয়ে Microsoft Learn থেকে কিছু পাঠ নিন + +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) দিয়ে টেক্সট জেনারেশন + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +আপনার জ্ঞান বাড়ানোর জন্য এখানে কিছু প্রবন্ধ রয়েছে + +* Markov Chain, LSTM এবং GPT-2 দিয়ে টেক্সট জেনারেশনের বিভিন্ন পদ্ধতি: [ব্লগ পোস্ট](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras ডকুমেন্টেশনে](https://keras.io/examples/generative/lstm_character_level_text_generation/) টেক্সট জেনারেশনের উদাহরণ + +## [অ্যাসাইনমেন্ট](lab/README.md) + +আমরা দেখেছি কিভাবে ক্যারেক্টার ধরে ধরে টেক্সট তৈরি করা যায়। ল্যাবে, আপনি শব্দ-লেভেল টেক্সট জেনারেশন অন্বেষণ করবেন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/bn/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..83b04dc4 --- /dev/null +++ b/translations/bn/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# শব্দ-স্তরের টেক্সট জেনারেশন RNNs ব্যবহার করে + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +এই ল্যাবে, আপনাকে যেকোনো একটি বই নিতে হবে এবং সেটিকে ডেটাসেট হিসেবে ব্যবহার করে শব্দ-স্তরের টেক্সট জেনারেটর প্রশিক্ষণ দিতে হবে। + +## ডেটাসেট + +আপনি যেকোনো বই ব্যবহার করতে পারেন। [Project Gutenberg](https://www.gutenberg.org/) এ অনেক ফ্রি টেক্সট পাওয়া যায়। উদাহরণস্বরূপ, এখানে লুইস ক্যারলের [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) বইটির সরাসরি লিঙ্ক দেওয়া হলো। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/18-Transformers/README.md b/translations/bn/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..5cf64072 --- /dev/null +++ b/translations/bn/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# অ্যাটেনশন মেকানিজম এবং ট্রান্সফর্মার + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP ডোমেইনের অন্যতম গুরুত্বপূর্ণ সমস্যা হলো **মেশিন অনুবাদ**, যা Google Translate-এর মতো টুলগুলোর ভিত্তি। এই সেকশনে, আমরা মেশিন অনুবাদ বা আরও সাধারণভাবে, *সিকোয়েন্স-টু-সিকোয়েন্স* টাস্ক (যাকে **সেন্টেন্স ট্রান্সডাকশন**ও বলা হয়) নিয়ে আলোচনা করব। + +RNN ব্যবহার করে, সিকোয়েন্স-টু-সিকোয়েন্স দুটি রিকরেন্ট নেটওয়ার্কের মাধ্যমে বাস্তবায়িত হয়, যেখানে একটি নেটওয়ার্ক, **এনকোডার**, ইনপুট সিকোয়েন্সকে একটি হিডেন স্টেটে সংকুচিত করে, এবং অন্য নেটওয়ার্ক, **ডিকোডার**, এই হিডেন স্টেটকে একটি অনুবাদিত ফলাফলে রূপান্তরিত করে। এই পদ্ধতির কিছু সমস্যা রয়েছে: + +* এনকোডার নেটওয়ার্কের চূড়ান্ত স্টেট একটি বাক্যের শুরু মনে রাখতে অসুবিধা করে, যার ফলে দীর্ঘ বাক্যের জন্য মডেলের গুণমান খারাপ হয়। +* একটি সিকোয়েন্সের সমস্ত শব্দের ফলাফলের উপর একই প্রভাব থাকে। তবে বাস্তবে, ইনপুট সিকোয়েন্সের নির্দিষ্ট শব্দগুলো সিকোয়েন্সিয়াল আউটপুটে অন্যদের তুলনায় বেশি প্রভাব ফেলে। + +**অ্যাটেনশন মেকানিজম** প্রতিটি ইনপুট ভেক্টরের প্রাসঙ্গিক প্রভাবকে প্রতিটি আউটপুট প্রেডিকশনে ওজন দেওয়ার একটি উপায় প্রদান করে। এটি বাস্তবায়িত হয় ইনপুট RNN এবং আউটপুট RNN-এর মধ্যবর্তী স্টেটগুলোর মধ্যে শর্টকাট তৈরি করে। এইভাবে, যখন আউটপুট প্রতীক yt তৈরি করা হয়, তখন আমরা সমস্ত ইনপুট হিডেন স্টেট hi বিবেচনা করব, বিভিন্ন ওজন সহগ αt,i সহ। + +![এনকোডার/ডিকোডার মডেল একটি অ্যাডিটিভ অ্যাটেনশন লেয়ার সহ](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bn.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)-এ অ্যাডিটিভ অ্যাটেনশন মেকানিজম সহ এনকোডার-ডিকোডার মডেল, [এই ব্লগ পোস্ট](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) থেকে উদ্ধৃত। + +অ্যাটেনশন ম্যাট্রিক্স {αi,j} একটি আউটপুট সিকোয়েন্সে একটি নির্দিষ্ট শব্দ তৈরিতে ইনপুট শব্দগুলোর ভূমিকা কতটা তা উপস্থাপন করবে। নিচে এমন একটি ম্যাট্রিক্সের উদাহরণ দেওয়া হয়েছে: + +![Bahdanau - arviz.org থেকে নেওয়া RNNsearch-50 দ্বারা পাওয়া একটি নমুনা অ্যালাইনমেন্ট](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bn.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) থেকে চিত্র। + +অ্যাটেনশন মেকানিজম NLP-তে বর্তমান বা প্রায় বর্তমান স্টেট-অফ-দ্য-আর্টের জন্য দায়ী। তবে অ্যাটেনশন যোগ করার ফলে মডেলের প্যারামিটারের সংখ্যা উল্লেখযোগ্যভাবে বৃদ্ধি পায়, যা RNN-এর স্কেলিং সমস্যার দিকে নিয়ে যায়। RNN স্কেল করার একটি প্রধান সীমাবদ্ধতা হলো মডেলের পুনরাবৃত্তিমূলক প্রকৃতি, যা ব্যাচ এবং ট্রেনিং প্যারালালাইজ করা কঠিন করে তোলে। RNN-এ একটি সিকোয়েন্সের প্রতিটি উপাদানকে ক্রমানুসারে প্রক্রিয়া করতে হয়, যার অর্থ এটি সহজে প্যারালালাইজ করা যায় না। + +![অ্যাটেনশন সহ এনকোডার ডিকোডার](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [গুগলের ব্লগ](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) থেকে চিত্র। + +অ্যাটেনশন মেকানিজমের গ্রহণযোগ্যতা এবং এই সীমাবদ্ধতার সংমিশ্রণ বর্তমান স্টেট-অফ-দ্য-আর্ট ট্রান্সফর্মার মডেলগুলোর সৃষ্টি করেছে, যেমন BERT থেকে Open-GPT3। + +## ট্রান্সফর্মার মডেল + +ট্রান্সফর্মারের পিছনের প্রধান ধারণাগুলোর একটি হলো RNN-এর ক্রমানুসার প্রকৃতি এড়ানো এবং ট্রেনিংয়ের সময় প্যারালালাইজযোগ্য একটি মডেল তৈরি করা। এটি দুটি ধারণা বাস্তবায়নের মাধ্যমে অর্জিত হয়: + +* পজিশনাল এনকোডিং +* RNN (বা CNN)-এর পরিবর্তে প্যাটার্ন ক্যাপচার করতে **সেলফ-অ্যাটেনশন মেকানিজম** ব্যবহার করা (এই কারণেই ট্রান্সফর্মার পরিচিতি পেপারটির নাম *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### পজিশনাল এনকোডিং/এম্বেডিং + +পজিশনাল এনকোডিংয়ের ধারণাটি নিম্নরূপ: +1. RNN ব্যবহার করার সময়, টোকেনগুলোর আপেক্ষিক অবস্থান স্টেপের সংখ্যা দ্বারা উপস্থাপিত হয়, এবং তাই এটি স্পষ্টভাবে উপস্থাপন করার প্রয়োজন হয় না। +2. তবে, একবার আমরা অ্যাটেনশন ব্যবহার শুরু করলে, আমাদের সিকোয়েন্সের মধ্যে টোকেনগুলোর আপেক্ষিক অবস্থান জানতে হবে। +3. পজিশনাল এনকোডিং পেতে, আমরা আমাদের টোকেন সিকোয়েন্সকে সিকোয়েন্সে টোকেন পজিশনের একটি সিকোয়েন্স (যেমন, সংখ্যা 0,1, ...) দিয়ে বৃদ্ধি করি। +4. আমরা টোকেন পজিশনকে একটি টোকেন এম্বেডিং ভেক্টরের সাথে মিশ্রিত করি। পজিশন (ইন্টিজার)কে একটি ভেক্টরে রূপান্তর করতে, আমরা বিভিন্ন পদ্ধতি ব্যবহার করতে পারি: + +* টোকেন এম্বেডিংয়ের মতো ট্রেনযোগ্য এম্বেডিং। এটি এখানে বিবেচিত পদ্ধতি। আমরা টোকেন এবং তাদের পজিশনের উপর এম্বেডিং লেয়ার প্রয়োগ করি, যার ফলে একই মাত্রার এম্বেডিং ভেক্টর তৈরি হয়, যা আমরা একসাথে যোগ করি। +* মূল পেপারে প্রস্তাবিত স্থির পজিশন এনকোডিং ফাংশন। + + + +> লেখকের তৈরি চিত্র। + +পজিশনাল এম্বেডিংয়ের মাধ্যমে আমরা মূল টোকেন এবং তার সিকোয়েন্সের মধ্যে অবস্থান উভয়কেই এম্বেড করি। + +### মাল্টি-হেড সেলফ-অ্যাটেনশন + +এরপর, আমাদের সিকোয়েন্সের মধ্যে কিছু প্যাটার্ন ক্যাপচার করতে হবে। এটি করতে, ট্রান্সফর্মার **সেলফ-অ্যাটেনশন** মেকানিজম ব্যবহার করে, যা মূলত ইনপুট এবং আউটপুট হিসেবে একই সিকোয়েন্সে অ্যাটেনশন প্রয়োগ। সেলফ-অ্যাটেনশন প্রয়োগ করে আমরা বাক্যের মধ্যে **প্রসঙ্গ** বিবেচনা করতে পারি এবং দেখতে পারি কোন শব্দগুলো আন্তঃসম্পর্কিত। উদাহরণস্বরূপ, এটি আমাদের দেখতে দেয় কোন শব্দগুলো *it* দ্বারা উল্লেখ করা হয়েছে এবং প্রসঙ্গ বিবেচনা করতে দেয়: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bn.png) + +> [গুগলের ব্লগ](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) থেকে চিত্র। + +ট্রান্সফর্মারে, আমরা **মাল্টি-হেড অ্যাটেনশন** ব্যবহার করি যাতে নেটওয়ার্ক বিভিন্ন ধরনের নির্ভরতা ক্যাপচার করতে পারে, যেমন দীর্ঘমেয়াদী বনাম স্বল্পমেয়াদী শব্দ সম্পর্ক, কো-রেফারেন্স বনাম অন্য কিছু ইত্যাদি। + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb)-এ ট্রান্সফর্মার লেয়ারের বাস্তবায়ন সম্পর্কে আরও বিস্তারিত রয়েছে। + +### এনকোডার-ডিকোডার অ্যাটেনশন + +ট্রান্সফর্মারে, অ্যাটেনশন দুটি স্থানে ব্যবহৃত হয়: + +* ইনপুট টেক্সটের মধ্যে প্যাটার্ন ক্যাপচার করতে সেলফ-অ্যাটেনশন ব্যবহার করে। +* সিকোয়েন্স অনুবাদ করতে - এটি এনকোডার এবং ডিকোডারের মধ্যে অ্যাটেনশন লেয়ার। + +এনকোডার-ডিকোডার অ্যাটেনশন RNN-এ ব্যবহৃত অ্যাটেনশন মেকানিজমের মতোই, যা এই সেকশনের শুরুতে বর্ণনা করা হয়েছে। এই অ্যানিমেটেড ডায়াগ্রামটি এনকোডার-ডিকোডার অ্যাটেনশনের ভূমিকা ব্যাখ্যা করে। + +![অ্যানিমেটেড GIF ট্রান্সফর্মার মডেলে মূল্যায়ন কীভাবে সম্পন্ন হয় তা দেখাচ্ছে।](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +যেহেতু প্রতিটি ইনপুট অবস্থান স্বাধীনভাবে প্রতিটি আউটপুট অবস্থানে ম্যাপ করা হয়, ট্রান্সফর্মার RNN-এর তুলনায় ভালোভাবে প্যারালালাইজ করতে পারে, যা অনেক বড় এবং আরও এক্সপ্রেসিভ ভাষার মডেল সক্ষম করে। প্রতিটি অ্যাটেনশন হেড শব্দগুলোর মধ্যে বিভিন্ন সম্পর্ক শেখার জন্য ব্যবহার করা যেতে পারে, যা ডাউনস্ট্রিম NLP টাস্ক উন্নত করে। + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) একটি খুব বড় মাল্টি লেয়ার ট্রান্সফর্মার নেটওয়ার্ক, যেখানে *BERT-base*-এর জন্য 12 লেয়ার এবং *BERT-large*-এর জন্য 24 লেয়ার রয়েছে। মডেলটি প্রথমে একটি বড় টেক্সট ডেটা কর্পাস (উইকিপিডিয়া + বই) ব্যবহার করে আনসুপারভাইজড ট্রেনিং (একটি বাক্যে মাস্ক করা শব্দগুলো প্রেডিক্ট করা) দিয়ে প্রি-ট্রেন করা হয়। প্রি-ট্রেনিংয়ের সময় মডেল উল্লেখযোগ্য স্তরের ভাষা বোঝার ক্ষমতা অর্জন করে, যা পরে অন্যান্য ডেটাসেটের সাথে ফাইন টিউনিংয়ের মাধ্যমে ব্যবহার করা যায়। এই প্রক্রিয়াকে **ট্রান্সফার লার্নিং** বলা হয়। + +![http://jalammar.github.io/illustrated-bert/ থেকে ছবি](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bn.png) + +> [উৎস](http://jalammar.github.io/illustrated-bert/) + +## ✍️ অনুশীলন: ট্রান্সফর্মার + +নিম্নলিখিত নোটবুকে আপনার শেখা চালিয়ে যান: + +* [PyTorch-এ ট্রান্সফর্মার](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow-এ ট্রান্সফর্মার](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## উপসংহার + +এই পাঠে আপনি ট্রান্সফর্মার এবং অ্যাটেনশন মেকানিজম সম্পর্কে শিখেছেন, যা NLP টুলবক্সের অপরিহার্য উপকরণ। ট্রান্সফর্মার আর্কিটেকচারের অনেক বৈচিত্র্য রয়েছে, যার মধ্যে BERT, DistilBERT, BigBird, OpenGPT3 এবং আরও অনেক কিছু রয়েছে, যা ফাইন টিউন করা যায়। [HuggingFace প্যাকেজ](https://github.com/huggingface/) PyTorch এবং TensorFlow উভয়ের সাথে এই আর্কিটেকচারগুলো ট্রেনিংয়ের জন্য একটি রিপোজিটরি প্রদান করে। + +## 🚀 চ্যালেঞ্জ + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## পর্যালোচনা এবং স্ব-অধ্যয়ন + +* [ব্লগ পোস্ট](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), যা ট্রান্সফর্মার সম্পর্কিত ক্লাসিক্যাল [Attention is all you need](https://arxiv.org/abs/1706.03762) পেপারটি ব্যাখ্যা করে। +* [ব্লগ পোস্টের একটি সিরিজ](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452), যা ট্রান্সফর্মার আর্কিটেকচার বিস্তারিতভাবে ব্যাখ্যা করে। + +## [অ্যাসাইনমেন্ট](assignment.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/18-Transformers/assignment.md b/translations/bn/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..2c61b072 --- /dev/null +++ b/translations/bn/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# অ্যাসাইনমেন্ট: ট্রান্সফর্মারস + +HuggingFace-এ ট্রান্সফর্মারস নিয়ে পরীক্ষা-নিরীক্ষা করুন! তাদের সাইটে উপলব্ধ বিভিন্ন মডেলের সাথে কাজ করার জন্য তারা যে স্ক্রিপ্টগুলো সরবরাহ করে সেগুলো চেষ্টা করুন: https://huggingface.co/docs/transformers/run_scripts। তাদের একটি ডেটাসেট ব্যবহার করে দেখুন, তারপর এই কারিকুলাম থেকে বা Kaggle থেকে আপনার নিজের একটি ডেটাসেট আমদানি করুন এবং দেখুন আপনি কি আকর্ষণীয় টেক্সট তৈরি করতে পারেন। আপনার পর্যবেক্ষণ নিয়ে একটি নোটবুক তৈরি করুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদের ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/19-NER/README.md b/translations/bn/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..debfa288 --- /dev/null +++ b/translations/bn/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# নামযুক্ত সত্তা সনাক্তকরণ + +এখন পর্যন্ত, আমরা মূলত একটি NLP কাজ - শ্রেণীবিন্যাসের উপর মনোযোগ কেন্দ্রীভূত করেছি। তবে, নিউরাল নেটওয়ার্ক ব্যবহার করে আরও অন্যান্য NLP কাজও সম্পন্ন করা যায়। সেই কাজগুলোর মধ্যে একটি হলো **[নামযুক্ত সত্তা সনাক্তকরণ](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), যা পাঠ্যের মধ্যে নির্দিষ্ট সত্তাগুলি সনাক্ত করার সাথে সম্পর্কিত, যেমন স্থান, ব্যক্তির নাম, তারিখ-সময়, রাসায়নিক সূত্র ইত্যাদি। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER ব্যবহারের উদাহরণ + +ধরা যাক আপনি একটি প্রাকৃতিক ভাষার চ্যাট বট তৈরি করতে চান, যেমন Amazon Alexa বা Google Assistant। বুদ্ধিমান চ্যাট বটগুলো কাজ করে ব্যবহারকারীর চাহিদা *বোঝার* মাধ্যমে, যা ইনপুট বাক্যের উপর পাঠ শ্রেণীবিন্যাস করে। এই শ্রেণীবিন্যাসের ফলাফল হলো তথাকথিত **ইন্টেন্ট**, যা নির্ধারণ করে চ্যাট বটটি কী করবে। + +Bot NER + +> লেখকের তৈরি চিত্র + +তবে, ব্যবহারকারী বাক্যের অংশ হিসেবে কিছু প্যারামিটার সরবরাহ করতে পারেন। উদাহরণস্বরূপ, আবহাওয়ার তথ্য চাইলে তিনি একটি স্থান বা তারিখ উল্লেখ করতে পারেন। একটি বটকে সেই সত্তাগুলো বুঝতে হবে এবং প্যারামিটার স্লটগুলো পূরণ করতে হবে, তারপর কার্য সম্পাদন করতে হবে। এখানেই NER কার্যকর হয়। + +> ✅ আরেকটি উদাহরণ হতে পারে [বৈজ্ঞানিক চিকিৎসা বিষয়ক গবেষণাপত্র বিশ্লেষণ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)। এখানে আমাদের প্রধান লক্ষ্য হলো নির্দিষ্ট চিকিৎসা বিষয়ক শব্দ খুঁজে বের করা, যেমন রোগ এবং চিকিৎসা উপাদান। যদিও কিছু রোগ সাবস্ট্রিং অনুসন্ধানের মাধ্যমে বের করা সম্ভব, তবে রাসায়নিক যৌগ এবং ওষুধের নামের মতো জটিল সত্তাগুলোর জন্য আরও জটিল পদ্ধতির প্রয়োজন। + +## NER টোকেন শ্রেণীবিন্যাস হিসেবে + +NER মডেলগুলো মূলত **টোকেন শ্রেণীবিন্যাস মডেল**, কারণ প্রতিটি ইনপুট টোকেনের জন্য আমাদের সিদ্ধান্ত নিতে হয় এটি কোনো সত্তার অন্তর্ভুক্ত কিনা, এবং যদি হয় - কোন সত্তা শ্রেণীর অন্তর্ভুক্ত। + +নিম্নলিখিত গবেষণাপত্রের শিরোনামটি বিবেচনা করুন: + +**Tricuspid valve regurgitation** এবং **lithium carbonate** **toxicity** একটি নবজাতকের মধ্যে। + +এখানে সত্তাগুলো হলো: + +* Tricuspid valve regurgitation একটি রোগ (`DIS`) +* Lithium carbonate একটি রাসায়নিক পদার্থ (`CHEM`) +* Toxicity একটি রোগ (`DIS`) + +লক্ষ্য করুন যে একটি সত্তা একাধিক টোকেন নিয়ে গঠিত হতে পারে। এবং, এই ক্ষেত্রে, আমাদের দুটি পরপর সত্তার মধ্যে পার্থক্য করতে হবে। তাই, প্রতিটি সত্তার জন্য দুটি শ্রেণী ব্যবহার করা সাধারণ - একটি সত্তার প্রথম টোকেন নির্ধারণের জন্য (`B-` প্রিফিক্স, **b**eginning এর জন্য), এবং অন্যটি সত্তার ধারাবাহিক টোকেনের জন্য (`I-`, **i**nner টোকেনের জন্য)। আমরা `O` শ্রেণী ব্যবহার করি সমস্ত **o**ther টোকেনের প্রতিনিধিত্ব করতে। এই ধরনের টোকেন ট্যাগিংকে [BIO ট্যাগিং](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (বা IOB) বলা হয়। ট্যাগিংয়ের পরে, আমাদের শিরোনামটি এভাবে দেখাবে: + +টোকেন | ট্যাগ +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O + +যেহেতু আমাদের টোকেন এবং শ্রেণীর মধ্যে এক-এক সম্পর্ক তৈরি করতে হবে, আমরা এই চিত্র থেকে একটি **many-to-many** নিউরাল নেটওয়ার্ক মডেল প্রশিক্ষণ করতে পারি: + +![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bn.jpg) + +> *[এই ব্লগ পোস্ট](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) থেকে চিত্র [Andrej Karpathy](http://karpathy.github.io/) দ্বারা। NER টোকেন শ্রেণীবিন্যাস মডেলগুলো এই চিত্রের ডানদিকের নেটওয়ার্ক আর্কিটেকচারের সাথে মিলে।* + +## NER মডেল প্রশিক্ষণ + +যেহেতু একটি NER মডেল মূলত একটি টোকেন শ্রেণীবিন্যাস মডেল, আমরা এই কাজের জন্য RNN ব্যবহার করতে পারি, যা আমরা ইতিমধ্যেই পরিচিত। এই ক্ষেত্রে, পুনরাবৃত্ত নেটওয়ার্কের প্রতিটি ব্লক টোকেন আইডি প্রদান করবে। নিম্নলিখিত উদাহরণ নোটবুকে দেখানো হয়েছে কিভাবে টোকেন শ্রেণীবিন্যাসের জন্য LSTM প্রশিক্ষণ করা যায়। + +## ✍️ উদাহরণ নোটবুক: NER + +নিম্নলিখিত নোটবুকে আপনার শেখা চালিয়ে যান: + +* [NER with TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## উপসংহার + +একটি NER মডেল হলো একটি **টোকেন শ্রেণীবিন্যাস মডেল**, যার অর্থ এটি টোকেন শ্রেণীবিন্যাস সম্পাদন করতে ব্যবহার করা যেতে পারে। এটি NLP-তে একটি খুব সাধারণ কাজ, যা পাঠ্যের মধ্যে নির্দিষ্ট সত্তাগুলো সনাক্ত করতে সাহায্য করে, যেমন স্থান, নাম, তারিখ এবং আরও অনেক কিছু। + +## 🚀 চ্যালেঞ্জ + +নিম্নলিখিত অ্যাসাইনমেন্ট সম্পন্ন করুন, যেখানে আপনাকে চিকিৎসা বিষয়ক শব্দের জন্য একটি নামযুক্ত সত্তা সনাক্তকরণ মডেল প্রশিক্ষণ দিতে হবে, তারপর এটি একটি ভিন্ন ডেটাসেটে চেষ্টা করুন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +[The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) ব্লগটি পড়ুন এবং সেই নিবন্ধের Further Reading অংশ অনুসরণ করুন আপনার জ্ঞান আরও গভীর করতে। + +## [অ্যাসাইনমেন্ট](lab/README.md) + +এই পাঠের অ্যাসাইনমেন্টে, আপনাকে একটি চিকিৎসা সত্তা সনাক্তকরণ মডেল প্রশিক্ষণ দিতে হবে। আপনি এই পাঠে বর্ণিত LSTM মডেল দিয়ে শুরু করতে পারেন এবং তারপর BERT ট্রান্সফর্মার মডেল ব্যবহার করতে পারেন। সমস্ত বিবরণ পেতে [নির্দেশাবলী](lab/README.md) পড়ুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/19-NER/lab/README.md b/translations/bn/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..e44635b0 --- /dev/null +++ b/translations/bn/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) থেকে ল্যাব অ্যাসাইনমেন্ট। + +## কাজ + +এই ল্যাবে, আপনাকে মেডিক্যাল টার্মের জন্য একটি নামযুক্ত সত্তা সনাক্তকরণ (NER) মডেল প্রশিক্ষণ দিতে হবে। + +## ডেটাসেট + +NER মডেল প্রশিক্ষণের জন্য, আমাদের মেডিক্যাল সত্তাগুলির সঠিকভাবে লেবেলযুক্ত ডেটাসেট প্রয়োজন। [BC5CDR ডেটাসেট](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) ১৫০০ এর বেশি পেপার থেকে লেবেলযুক্ত রোগ এবং রাসায়নিক সত্তাগুলি ধারণ করে। আপনি তাদের ওয়েবসাইটে নিবন্ধন করার পর ডেটাসেটটি ডাউনলোড করতে পারবেন। + +BC5CDR ডেটাসেট দেখতে এরকম: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +এই ডেটাসেটে, প্রথম দুটি লাইনে পেপারের শিরোনাম এবং সারাংশ থাকে, এবং তারপর পৃথক সত্তাগুলি থাকে, যার শুরুর এবং শেষ অবস্থান শিরোনাম+সারাংশ ব্লকের মধ্যে দেওয়া থাকে। সত্তার প্রকার ছাড়াও, আপনি এই সত্তার মেডিক্যাল অন্টোলজির মধ্যে অন্টোলজি আইডি পাবেন। + +আপনাকে এটি BIO এনকোডিংয়ে রূপান্তর করতে কিছু Python কোড লিখতে হবে। + +## নেটওয়ার্ক + +NER-এর প্রথম প্রচেষ্টা LSTM নেটওয়ার্ক ব্যবহার করে করা যেতে পারে, যেমন আপনি পাঠে উদাহরণে দেখেছেন। তবে, NLP কাজগুলিতে, [ট্রান্সফর্মার আর্কিটেকচার](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) এবং বিশেষভাবে [BERT ভাষার মডেল](https://en.wikipedia.org/wiki/BERT_(language_model)) অনেক ভালো ফলাফল দেখায়। প্রি-ট্রেইনড BERT মডেলগুলি একটি ভাষার সাধারণ গঠন বুঝতে পারে এবং তুলনামূলকভাবে ছোট ডেটাসেট এবং কম্পিউটেশনাল খরচ দিয়ে নির্দিষ্ট কাজের জন্য ফাইন-টিউন করা যায়। + +যেহেতু আমরা মেডিক্যাল পরিস্থিতিতে NER প্রয়োগ করতে যাচ্ছি, তাই মেডিক্যাল টেক্সটের উপর প্রশিক্ষিত BERT মডেল ব্যবহার করাটা যুক্তিযুক্ত। Microsoft Research একটি প্রি-ট্রেইনড মডেল প্রকাশ করেছে যার নাম [PubMedBERT][PubMedBERT] ([প্রকাশনা][PubMedBERT-Pub]), যা [PubMed](https://pubmed.ncbi.nlm.nih.gov/) রিপোজিটরির টেক্সট ব্যবহার করে ফাইন-টিউন করা হয়েছে। + +ট্রান্সফর্মার মডেল প্রশিক্ষণের জন্য *de facto* স্ট্যান্ডার্ড হলো [Hugging Face Transformers](https://huggingface.co/) লাইব্রেরি। এটি কমিউনিটি-রক্ষণাবেক্ষিত প্রি-ট্রেইনড মডেলের একটি রিপোজিটরি ধারণ করে, যার মধ্যে PubMedBERT অন্তর্ভুক্ত। এই মডেল লোড এবং ব্যবহার করতে আমাদের মাত্র কয়েকটি লাইনের কোড প্রয়োজন: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +এটি আমাদের `model` প্রদান করে, যা টোকেন ক্লাসিফিকেশন কাজের জন্য `classes` সংখ্যক ক্লাস ব্যবহার করে তৈরি করা হয়েছে, এবং `tokenizer` অবজেক্ট প্রদান করে যা ইনপুট টেক্সটকে টোকেনে বিভক্ত করতে পারে। আপনাকে ডেটাসেটটি BIO ফরম্যাটে রূপান্তর করতে হবে, PubMedBERT টোকেনাইজেশন বিবেচনায় রেখে। আপনি [এই Python কোডের অংশ](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) অনুপ্রেরণা হিসেবে ব্যবহার করতে পারেন। + +## মূল বিষয় + +এই কাজটি প্রকৃত কাজের খুব কাছাকাছি, যা আপনি সম্ভবত করবেন যদি আপনি প্রাকৃতিক ভাষার টেক্সটের বৃহৎ পরিমাণে আরও অন্তর্দৃষ্টি অর্জন করতে চান। আমাদের ক্ষেত্রে, আমরা আমাদের প্রশিক্ষিত মডেলটি [COVID-সম্পর্কিত পেপারের ডেটাসেটে](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) প্রয়োগ করতে পারি এবং দেখতে পারি আমরা কী অন্তর্দৃষ্টি অর্জন করতে পারি। [এই ব্লগ পোস্ট](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) এবং [এই পেপার](https://www.mdpi.com/2504-2289/6/1/4) বর্ণনা করে যে NER ব্যবহার করে এই পেপারের কর্পাসে কী গবেষণা করা যেতে পারে। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা আসল সংস্করণটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/20-LangModels/README.md b/translations/bn/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..09d1c0cb --- /dev/null +++ b/translations/bn/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# প্রি-ট্রেইনড বড় ভাষার মডেল + +আমাদের পূর্ববর্তী সমস্ত কাজগুলোতে, আমরা একটি নির্দিষ্ট কাজ সম্পাদনের জন্য লেবেলযুক্ত ডেটাসেট ব্যবহার করে একটি নিউরাল নেটওয়ার্ক প্রশিক্ষণ করছিলাম। বড় ট্রান্সফর্মার মডেলগুলোর ক্ষেত্রে, যেমন BERT, আমরা স্ব-পরিচালিত পদ্ধতিতে ভাষা মডেলিং ব্যবহার করে একটি ভাষার মডেল তৈরি করি, যা পরে নির্দিষ্ট ডাউনস্ট্রিম কাজের জন্য আরও ডোমেইন-নির্দিষ্ট প্রশিক্ষণের মাধ্যমে বিশেষায়িত হয়। তবে, এটি প্রমাণিত হয়েছে যে বড় ভাষার মডেলগুলো অনেক কাজ সম্পাদন করতে পারে কোনো ডোমেইন-নির্দিষ্ট প্রশিক্ষণ ছাড়াই। এমন মডেলের একটি পরিবারকে বলা হয় **GPT**: জেনারেটিভ প্রি-ট্রেইনড ট্রান্সফর্মার। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## টেক্সট জেনারেশন এবং পারপ্লেক্সিটি + +একটি নিউরাল নেটওয়ার্ক ডাউনস্ট্রিম প্রশিক্ষণ ছাড়াই সাধারণ কাজ করতে পারে এই ধারণাটি [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) পেপারে উপস্থাপন করা হয়েছে। মূল ধারণাটি হলো অনেক অন্যান্য কাজকে **টেক্সট জেনারেশন** ব্যবহার করে মডেল করা যেতে পারে, কারণ টেক্সট বোঝা মূলত এটি তৈরি করতে সক্ষম হওয়া। যেহেতু মডেলটি বিশাল পরিমাণ টেক্সটের উপর প্রশিক্ষিত যা মানব জ্ঞানকে অন্তর্ভুক্ত করে, এটি বিভিন্ন বিষয়ে জ্ঞানী হয়ে ওঠে। + +> টেক্সট বোঝা এবং তৈরি করতে সক্ষম হওয়া মানে আমাদের চারপাশের পৃথিবী সম্পর্কে কিছু জানাও। মানুষও অনেকাংশে পড়ার মাধ্যমে শেখে, এবং GPT নেটওয়ার্ক এই দিক থেকে অনুরূপ। + +টেক্সট জেনারেশন নেটওয়ার্কগুলো কাজ করে পরবর্তী শব্দের সম্ভাবনা $$P(w_N)$$ পূর্বাভাস দিয়ে। তবে, পরবর্তী শব্দের শর্তহীন সম্ভাবনা টেক্সট কর্পাসে এই শব্দের ফ্রিকোয়েন্সির সমান। GPT আমাদেরকে পূর্ববর্তী শব্দগুলো দেওয়া অবস্থায় পরবর্তী শব্দের **শর্তযুক্ত সম্ভাবনা** প্রদান করতে সক্ষম: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> আপনি আমাদের [ডেটা সায়েন্স ফর বিগিনারস কারিকুলাম](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) এ সম্ভাবনা সম্পর্কে আরও পড়তে পারেন। + +ভাষা তৈরি মডেলের গুণমান **পারপ্লেক্সিটি** ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে। এটি একটি অন্তর্নিহিত মেট্রিক যা আমাদেরকে কোনো কাজ-নির্দিষ্ট ডেটাসেট ছাড়াই মডেলের গুণমান পরিমাপ করতে দেয়। এটি *একটি বাক্যের সম্ভাবনা* ধারণার উপর ভিত্তি করে - মডেলটি একটি বাক্যকে উচ্চ সম্ভাবনা প্রদান করে যা বাস্তব হওয়ার সম্ভাবনা বেশি (অর্থাৎ মডেলটি এটি দ্বারা **বিভ্রান্ত** হয় না), এবং কম সম্ভাবনা প্রদান করে এমন বাক্যগুলোকে যা কম অর্থপূর্ণ (যেমন *Can it does what?*)। যখন আমরা আমাদের মডেলকে বাস্তব টেক্সট কর্পাস থেকে বাক্য প্রদান করি, আমরা আশা করি সেগুলো উচ্চ সম্ভাবনা এবং কম **পারপ্লেক্সিটি** থাকবে। গাণিতিকভাবে, এটি পরীক্ষার সেটের স্বাভাবিককৃত বিপরীত সম্ভাবনা হিসাবে সংজ্ঞায়িত করা হয়: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**আপনি [Hugging Face-এর GPT-চালিত টেক্সট এডিটর](https://transformer.huggingface.co/doc/gpt2-large)** ব্যবহার করে টেক্সট জেনারেশনের সাথে পরীক্ষা করতে পারেন। এই এডিটরে, আপনি আপনার টেক্সট লিখতে শুরু করেন এবং **[TAB]** চাপলে আপনাকে কয়েকটি সম্পূর্ণকরণ বিকল্প দেওয়া হবে। যদি সেগুলো খুব ছোট হয়, বা আপনি সেগুলোতে সন্তুষ্ট না হন - [TAB] আবার চাপুন, এবং আপনি আরও বিকল্প পাবেন, যার মধ্যে দীর্ঘ টেক্সটও অন্তর্ভুক্ত। + +## GPT একটি পরিবার + +GPT একটি একক মডেল নয়, বরং [OpenAI](https://openai.com) দ্বারা উন্নত এবং প্রশিক্ষিত মডেলের একটি সংগ্রহ। + +GPT মডেলগুলোর মধ্যে রয়েছে: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| ভাষা মডেল যার ১.৫ বিলিয়ন পর্যন্ত প্যারামিটার রয়েছে। | ভাষা মডেল যার ১৭৫ বিলিয়ন পর্যন্ত প্যারামিটার রয়েছে। | ১০০ ট্রিলিয়ন প্যারামিটার এবং এটি উভয় ইমেজ এবং টেক্সট ইনপুট গ্রহণ করে এবং টেক্সট আউটপুট প্রদান করে। | + +GPT-3 এবং GPT-4 মডেলগুলো [Microsoft Azure থেকে একটি কগনিটিভ সার্ভিস](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) এবং [OpenAI API](https://openai.com/api/) হিসেবে উপলব্ধ। + +## প্রম্পট ইঞ্জিনিয়ারিং + +GPT বিশাল পরিমাণ ডেটার উপর প্রশিক্ষিত হয়েছে ভাষা এবং কোড বুঝতে, তাই তারা ইনপুট (প্রম্পট) এর প্রতিক্রিয়ায় আউটপুট প্রদান করে। প্রম্পট হলো GPT ইনপুট বা প্রশ্ন যেখানে একজন মডেলগুলোকে নির্দিষ্ট কাজ সম্পাদনের জন্য নির্দেশনা প্রদান করে। কাঙ্ক্ষিত ফলাফল পেতে, সবচেয়ে কার্যকর প্রম্পট প্রয়োজন যা সঠিক শব্দ, ফরম্যাট, বাক্যাংশ বা এমনকি প্রতীক নির্বাচন জড়িত। এই পদ্ধতিকে বলা হয় [প্রম্পট ইঞ্জিনিয়ারিং](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum)। + +[এই ডকুমেন্টেশন](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) আপনাকে প্রম্পট ইঞ্জিনিয়ারিং সম্পর্কে আরও তথ্য প্রদান করে। + +## ✍️ উদাহরণ নোটবুক: [OpenAI-GPT নিয়ে খেলা](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +নিম্নলিখিত নোটবুকগুলোতে আপনার শেখা চালিয়ে যান: + +* [OpenAI-GPT এবং Hugging Face Transformers ব্যবহার করে টেক্সট তৈরি করা](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## উপসংহার + +নতুন সাধারণ প্রি-ট্রেইনড ভাষার মডেলগুলো শুধুমাত্র ভাষার গঠন মডেল করে না, বরং বিশাল পরিমাণ প্রাকৃতিক ভাষাও ধারণ করে। সুতরাং, সেগুলো কিছু NLP কাজকে জিরো-শট বা ফিউ-শট সেটিংসে কার্যকরভাবে সমাধান করতে ব্যবহার করা যেতে পারে। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে দয়া করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/5-NLP/README.md b/translations/bn/lessons/5-NLP/README.md new file mode 100644 index 00000000..ef6990fd --- /dev/null +++ b/translations/bn/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# প্রাকৃতিক ভাষা প্রক্রিয়াকরণ + +![NLP কাজগুলোর সারাংশ একটি ডুডলে](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bn.png) + +এই অংশে, আমরা **প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP)** সম্পর্কিত কাজগুলো পরিচালনা করতে নিউরাল নেটওয়ার্ক ব্যবহার করার উপর মনোযোগ দেব। অনেক ধরনের NLP সমস্যা রয়েছে যা আমরা চাই কম্পিউটার সমাধান করতে সক্ষম হোক: + +* **টেক্সট শ্রেণীবিন্যাস** হলো টেক্সট সিকোয়েন্সের সাথে সম্পর্কিত একটি সাধারণ শ্রেণীবিন্যাস সমস্যা। উদাহরণস্বরূপ, ই-মেইল বার্তাগুলোকে স্প্যাম বনাম নন-স্প্যাম হিসেবে শ্রেণীবিন্যাস করা, বা নিবন্ধগুলোকে খেলাধুলা, ব্যবসা, রাজনীতি ইত্যাদি হিসেবে শ্রেণীবিন্যাস করা। এছাড়াও, চ্যাটবট তৈরি করার সময়, প্রায়ই আমাদের বুঝতে হয় ব্যবহারকারী কী বলতে চেয়েছেন -- এই ক্ষেত্রে আমরা **ইচ্ছা শ্রেণীবিন্যাস** নিয়ে কাজ করি। ইচ্ছা শ্রেণীবিন্যাসে প্রায়ই অনেক ক্যাটাগরির সাথে কাজ করতে হয়। +* **অনুভূতি বিশ্লেষণ** হলো একটি সাধারণ রিগ্রেশন সমস্যা, যেখানে আমাদের একটি সংখ্যা (অনুভূতি) নির্ধারণ করতে হয় যা একটি বাক্যের অর্থ কতটা ইতিবাচক/নেতিবাচক তা নির্দেশ করে। অনুভূতি বিশ্লেষণের একটি উন্নত সংস্করণ হলো **অ্যাসপেক্ট-ভিত্তিক অনুভূতি বিশ্লেষণ** (ABSA), যেখানে আমরা পুরো বাক্যের পরিবর্তে এর বিভিন্ন অংশে (অ্যাসপেক্ট) অনুভূতি নির্ধারণ করি, যেমন: *এই রেস্টুরেন্টে আমি খাবারটি পছন্দ করেছি, কিন্তু পরিবেশটি ভয়ানক ছিল*। +* **নামযুক্ত সত্তা সনাক্তকরণ** (NER) হলো টেক্সট থেকে নির্দিষ্ট সত্তাগুলো বের করার সমস্যা। উদাহরণস্বরূপ, আমরা বুঝতে চাই যে বাক্য *আমি কাল প্যারিসে উড়ে যেতে চাই*-এ *কাল* শব্দটি তারিখ নির্দেশ করে এবং *প্যারিস* একটি অবস্থান। +* **কীওয়ার্ড নির্ধারণ** NER-এর মতো, তবে এখানে আমাদের স্বয়ংক্রিয়ভাবে বাক্যের অর্থের জন্য গুরুত্বপূর্ণ শব্দগুলো বের করতে হয়, নির্দিষ্ট সত্তার ধরনগুলোর জন্য পূর্ব-প্রশিক্ষণ ছাড়াই। +* **টেক্সট ক্লাস্টারিং** তখন কাজে লাগে যখন আমরা একই ধরনের বাক্যগুলো একত্রিত করতে চাই, যেমন: টেকনিক্যাল সাপোর্ট কথোপকথনে একই ধরনের অনুরোধগুলো। +* **প্রশ্ন উত্তর প্রদান** হলো একটি মডেলের নির্দিষ্ট প্রশ্নের উত্তর দেওয়ার ক্ষমতা। মডেলটি একটি টেক্সট প্যাসেজ এবং একটি প্রশ্ন ইনপুট হিসেবে গ্রহণ করে, এবং এটি টেক্সটে এমন একটি স্থান প্রদান করতে হয় যেখানে প্রশ্নের উত্তর রয়েছে (বা, কখনও কখনও, উত্তর টেক্সট তৈরি করতে হয়)। +* **টেক্সট তৈরি** হলো একটি মডেলের নতুন টেক্সট তৈরি করার ক্ষমতা। এটি এমন একটি শ্রেণীবিন্যাস কাজ হিসেবে বিবেচিত হতে পারে যা কিছু *টেক্সট প্রম্পট* এর উপর ভিত্তি করে পরবর্তী অক্ষর/শব্দ পূর্বাভাস দেয়। উন্নত টেক্সট তৈরি মডেল, যেমন GPT-3, [প্রম্পট প্রোগ্রামিং](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) বা [প্রম্পট ইঞ্জিনিয়ারিং](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) নামক একটি কৌশল ব্যবহার করে শ্রেণীবিন্যাসের মতো অন্যান্য NLP কাজ সমাধান করতে সক্ষম। +* **টেক্সট সারাংশ তৈরি** হলো একটি কৌশল যেখানে আমরা চাই কম্পিউটার দীর্ঘ টেক্সট "পড়ে" কয়েকটি বাক্যে সারাংশ তৈরি করুক। +* **মেশিন অনুবাদ** হলো এক ভাষায় টেক্সট বোঝা এবং অন্য ভাষায় টেক্সট তৈরি করার একটি সমন্বয়। + +প্রাথমিকভাবে, বেশিরভাগ NLP কাজগুলো ঐতিহ্যবাহী পদ্ধতি যেমন ব্যাকরণ ব্যবহার করে সমাধান করা হতো। উদাহরণস্বরূপ, মেশিন অনুবাদে পার্সার ব্যবহার করে প্রাথমিক বাক্যকে একটি সিনট্যাক্স ট্রিতে রূপান্তর করা হতো, তারপর উচ্চতর স্তরের অর্থগত কাঠামো বের করে বাক্যের অর্থ উপস্থাপন করা হতো, এবং এই অর্থ এবং লক্ষ্য ভাষার ব্যাকরণের উপর ভিত্তি করে ফলাফল তৈরি করা হতো। বর্তমানে, অনেক NLP কাজ নিউরাল নেটওয়ার্ক ব্যবহার করে আরও কার্যকরভাবে সমাধান করা হয়। + +> অনেক ক্লাসিক্যাল NLP পদ্ধতি [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) পাইথন লাইব্রেরিতে বাস্তবায়িত হয়েছে। অনলাইনে একটি চমৎকার [NLTK বই](https://www.nltk.org/book/) উপলব্ধ রয়েছে যা দেখায় কীভাবে বিভিন্ন NLP কাজ NLTK ব্যবহার করে সমাধান করা যায়। + +আমাদের কোর্সে, আমরা মূলত NLP-এর জন্য নিউরাল নেটওয়ার্ক ব্যবহার করার উপর মনোযোগ দেব, এবং যেখানে প্রয়োজন সেখানে NLTK ব্যবহার করব। + +আমরা ইতিমধ্যে ট্যাবুলার ডেটা এবং ইমেজ নিয়ে কাজ করার জন্য নিউরাল নেটওয়ার্ক ব্যবহার সম্পর্কে শিখেছি। এই ধরনের ডেটা এবং টেক্সটের মধ্যে প্রধান পার্থক্য হলো টেক্সট একটি পরিবর্তনশীল দৈর্ঘ্যের সিকোয়েন্স, যেখানে ইমেজের ক্ষেত্রে ইনপুট সাইজ পূর্বেই জানা থাকে। যদিও কনভোলিউশনাল নেটওয়ার্ক ইনপুট ডেটা থেকে প্যাটার্ন বের করতে পারে, টেক্সটের প্যাটার্নগুলো আরও জটিল। উদাহরণস্বরূপ, আমরা দেখতে পারি যে বিষয় থেকে নেগেশন অনেক শব্দ দ্বারা আলাদা হতে পারে (যেমন: *আমি কমলালেবু পছন্দ করি না*, বনাম *আমি সেই বড় রঙিন সুস্বাদু কমলালেবু পছন্দ করি না*), এবং এটি এখনও একটি প্যাটার্ন হিসেবে ব্যাখ্যা করা উচিত। তাই, ভাষা পরিচালনা করতে আমাদের নতুন নিউরাল নেটওয়ার্ক টাইপ, যেমন *রিকারেন্ট নেটওয়ার্ক* এবং *ট্রান্সফর্মার* প্রয়োজন। + +## লাইব্রেরি ইনস্টল করুন + +যদি আপনি এই কোর্স চালানোর জন্য স্থানীয় পাইথন ইনস্টলেশন ব্যবহার করেন, তাহলে NLP-এর জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি নিম্নলিখিত কমান্ডগুলো ব্যবহার করে ইনস্টল করতে হতে পারে: + +**PyTorch-এর জন্য** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow-এর জন্য** +```bash +pip install -r requirements-tf.txt +``` + +> আপনি [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) এ TensorFlow দিয়ে NLP চেষ্টা করতে পারেন। + +## GPU সতর্কতা + +এই অংশে, কিছু উদাহরণে আমরা বেশ বড় মডেল প্রশিক্ষণ করব। +* **GPU-সক্ষম কম্পিউটার ব্যবহার করুন**: বড় মডেল নিয়ে কাজ করার সময় অপেক্ষার সময় কমানোর জন্য GPU-সক্ষম কম্পিউটারে আপনার নোটবুক চালানো পরামর্শ দেওয়া হয়। +* **GPU মেমোরি সীমাবদ্ধতা**: GPU-তে চালানোর সময় বড় মডেল প্রশিক্ষণের সময় GPU মেমোরি শেষ হয়ে যেতে পারে। +* **GPU মেমোরি ব্যবহার**: প্রশিক্ষণের সময় GPU মেমোরি ব্যবহারের পরিমাণ বিভিন্ন বিষয়ের উপর নির্ভর করে, যেমন মিনিব্যাচ সাইজ। +* **মিনিব্যাচ সাইজ কমান**: যদি GPU মেমোরি সমস্যা হয়, তাহলে আপনার কোডে মিনিব্যাচ সাইজ কমানো একটি সম্ভাব্য সমাধান হতে পারে। +* **TensorFlow GPU মেমোরি রিলিজ**: TensorFlow-এর পুরনো সংস্করণগুলো একাধিক মডেল প্রশিক্ষণের সময় GPU মেমোরি সঠিকভাবে রিলিজ করতে পারে না। GPU মেমোরি ব্যবহারের কার্যকর ব্যবস্থাপনার জন্য, আপনি TensorFlow-কে প্রয়োজন অনুযায়ী GPU মেমোরি বরাদ্দ করতে কনফিগার করতে পারেন। +* **কোড অন্তর্ভুক্তি**: TensorFlow-কে GPU মেমোরি শুধুমাত্র প্রয়োজন হলে বরাদ্দ করতে সেট করতে, আপনার নোটবুকে নিম্নলিখিত কোড অন্তর্ভুক্ত করুন: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +যদি আপনি ক্লাসিক্যাল ML দৃষ্টিকোণ থেকে NLP সম্পর্কে শিখতে আগ্রহী হন, তাহলে [এই পাঠগুলোর সংগ্রহ](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) দেখুন। + +## এই অংশে +এই অংশে আমরা শিখব: + +* [টেক্সটকে টেনসর হিসেবে উপস্থাপন](13-TextRep/README.md) +* [ওয়ার্ড এম্বেডিংস](14-Emdeddings/README.md) +* [ভাষা মডেলিং](15-LanguageModeling/README.md) +* [রিকারেন্ট নিউরাল নেটওয়ার্ক](16-RNN/README.md) +* [জেনারেটিভ নেটওয়ার্ক](17-GenerativeNetworks/README.md) +* [ট্রান্সফর্মার](18-Transformers/README.md) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/bn/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..7757caea --- /dev/null +++ b/translations/bn/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# জেনেটিক অ্যালগরিদম + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**জেনেটিক অ্যালগরিদম** (GA) একটি **বিবর্তনমূলক পদ্ধতির** উপর ভিত্তি করে তৈরি, যেখানে একটি সমস্যার জন্য সর্বোত্তম সমাধান খুঁজে পেতে জনসংখ্যার বিবর্তনের পদ্ধতি ব্যবহার করা হয়। এটি ১৯৭৫ সালে [জন হেনরি হল্যান্ড](https://wikipedia.org/wiki/John_Henry_Holland) প্রস্তাব করেছিলেন। + +জেনেটিক অ্যালগরিদম নিম্নলিখিত ধারণাগুলোর উপর ভিত্তি করে কাজ করে: + +* সমস্যার বৈধ সমাধানগুলোকে **জিন** হিসেবে উপস্থাপন করা যায় +* **ক্রসওভার** আমাদের দুটি সমাধান একত্রিত করে একটি নতুন বৈধ সমাধান পেতে সাহায্য করে +* **সিলেকশন** ব্যবহার করে কিছু **ফিটনেস ফাংশন** এর মাধ্যমে আরও ভাল সমাধান নির্বাচন করা হয় +* **মিউটেশন** প্রবর্তন করা হয় যাতে অপ্টিমাইজেশনকে অস্থিতিশীল করা যায় এবং স্থানীয় সর্বনিম্ন থেকে বেরিয়ে আসা যায় + +যদি আপনি একটি জেনেটিক অ্যালগরিদম বাস্তবায়ন করতে চান, তবে আপনার প্রয়োজন: + + * আমাদের সমস্যার সমাধানগুলোকে **জিন** g∈Γ ব্যবহার করে কোডিং করার একটি পদ্ধতি খুঁজে বের করা + * জিন সেট Γ এর উপর একটি **ফিটনেস ফাংশন** fit: Γ→**R** সংজ্ঞায়িত করা। ছোট ফাংশন মানগুলো ভাল সমাধানের সাথে সম্পর্কিত। + * দুটি জিন একত্রিত করে একটি নতুন বৈধ সমাধান পেতে **ক্রসওভার** মেকানিজম সংজ্ঞায়িত করা crossover: Γ2→Γ। + * **মিউটেশন** মেকানিজম সংজ্ঞায়িত করা mutate: Γ→Γ। + +অনেক ক্ষেত্রে, ক্রসওভার এবং মিউটেশন হল সংখ্যাসূচক সিকোয়েন্স বা বিট ভেক্টর হিসেবে জিন ম্যানিপুলেট করার সহজ অ্যালগরিদম। + +জেনেটিক অ্যালগরিদমের নির্দিষ্ট বাস্তবায়ন কেস থেকে কেসে ভিন্ন হতে পারে, তবে সামগ্রিক কাঠামো নিম্নরূপ: + +1. প্রাথমিক জনসংখ্যা G⊂Γ নির্বাচন করুন +2. এই ধাপে সম্পাদিত হওয়া অপারেশনটি এলোমেলোভাবে নির্বাচন করুন: ক্রসওভার বা মিউটেশন +3. **ক্রসওভার**: + * এলোমেলোভাবে দুটি জিন g1, g2 ∈ G নির্বাচন করুন + * ক্রসওভার গণনা করুন g=crossover(g1,g2) + * যদি fit(g)1) বা fit(g)2) হয় - জনসংখ্যায় সংশ্লিষ্ট জিনটি g দ্বারা প্রতিস্থাপন করুন। +4. **মিউটেশন** - এলোমেলোভাবে একটি জিন g∈G নির্বাচন করুন এবং এটি mutate(g) দ্বারা প্রতিস্থাপন করুন +5. ধাপ ২ থেকে পুনরাবৃত্তি করুন, যতক্ষণ না আমরা fit এর যথেষ্ট ছোট মান পাই, অথবা ধাপের সংখ্যার সীমা পৌঁছায়। + +## সাধারণ কাজ + +জেনেটিক অ্যালগরিদম দ্বারা সাধারণত সমাধান করা কাজগুলো অন্তর্ভুক্ত: + +1. সময়সূচি অপ্টিমাইজেশন +1. সর্বোত্তম প্যাকিং +1. সর্বোত্তম কাটিং +1. এক্সহস্টিভ সার্চ দ্রুততর করা + +## ✍️ অনুশীলন: জেনেটিক অ্যালগরিদম + +নিম্নলিখিত নোটবুকে আপনার শেখা চালিয়ে যান: + +[এই নোটবুকে](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) যান এবং জেনেটিক অ্যালগরিদম ব্যবহারের দুটি উদাহরণ দেখুন: + +1. ধনসম্পদের ন্যায্য বিভাজন +1. ৮ কুইন সমস্যা + +## উপসংহার + +জেনেটিক অ্যালগরিদম অনেক সমস্যার সমাধানে ব্যবহৃত হয়, যার মধ্যে লজিস্টিক এবং সার্চ সমস্যা অন্তর্ভুক্ত। এই ক্ষেত্রটি মনোবিজ্ঞান এবং কম্পিউটার বিজ্ঞানের সংমিশ্রণে অনুপ্রাণিত গবেষণা থেকে উদ্ভূত। + +## 🚀 চ্যালেঞ্জ + +"জেনেটিক অ্যালগরিদম বাস্তবায়ন করা সহজ, কিন্তু এর আচরণ বোঝা কঠিন।" [উৎস](https://wikipedia.org/wiki/Genetic_algorithm) একটি জেনেটিক অ্যালগরিদমের বাস্তবায়ন যেমন একটি সুডোকু ধাঁধার সমাধান খুঁজুন এবং এটি কীভাবে কাজ করে তা একটি স্কেচ বা ফ্লোচার্ট আকারে ব্যাখ্যা করুন। + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## পর্যালোচনা ও স্ব-অধ্যয়ন + +[এই চমৎকার ভিডিওটি](https://www.youtube.com/watch?v=qv6UVOQ0F44) দেখুন যেখানে কম্পিউটার কীভাবে জেনেটিক অ্যালগরিদম দ্বারা প্রশিক্ষিত নিউরাল নেটওয়ার্ক ব্যবহার করে সুপার মারিও খেলতে শিখতে পারে তা আলোচনা করা হয়েছে। আমরা [পরবর্তী সেকশনে](../22-DeepRL/README.md) এই ধরনের গেম খেলার জন্য কম্পিউটার শেখার বিষয়ে আরও জানব। + +## [অ্যাসাইনমেন্ট: ডায়োফ্যান্টাইন সমীকরণ](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +আপনার লক্ষ্য হল তথাকথিত **ডায়োফ্যান্টাইন সমীকরণ** সমাধান করা - একটি সমীকরণ যার পূর্ণসংখ্যার মূল রয়েছে। উদাহরণস্বরূপ, a+2b+3c+4d=30 সমীকরণটি বিবেচনা করুন। আপনাকে এমন পূর্ণসংখ্যার মূল খুঁজে বের করতে হবে যা এই সমীকরণটি পূরণ করে। + +*এই অ্যাসাইনমেন্টটি [এই পোস্ট](https://habr.com/post/128704/) দ্বারা অনুপ্রাণিত।* + +পরামর্শ: + +1. আপনি মূলগুলোকে [0;30] পরিসরে বিবেচনা করতে পারেন +1. একটি জিন হিসেবে মূল মানগুলোর তালিকা ব্যবহার করার কথা ভাবুন + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) ব্যবহার করে শুরু করুন। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/6-Other/22-DeepRL/README.md b/translations/bn/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..a7e1a768 --- /dev/null +++ b/translations/bn/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# ডিপ রিইনফোর্সমেন্ট লার্নিং + +রিইনফোর্সমেন্ট লার্নিং (RL) সুপারভাইজড লার্নিং এবং আনসুপারভাইজড লার্নিং-এর পাশাপাশি মেশিন লার্নিং-এর একটি মৌলিক প্যারাডাইম হিসেবে বিবেচিত হয়। যেখানে সুপারভাইজড লার্নিং পরিচিত ফলাফল সহ ডেটাসেটের উপর নির্ভর করে, RL **কাজ করে শেখার** উপর ভিত্তি করে। উদাহরণস্বরূপ, যখন আমরা প্রথমবার একটি কম্পিউটার গেম দেখি, আমরা খেলা শুরু করি, এমনকি নিয়ম না জেনেও, এবং শীঘ্রই শুধুমাত্র খেলার মাধ্যমে এবং আমাদের আচরণ সামঞ্জস্য করে আমাদের দক্ষতা উন্নত করতে সক্ষম হই। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL সম্পাদন করতে আমাদের প্রয়োজন: + +* একটি **পরিবেশ** বা **সিমুলেটর**, যা গেমের নিয়ম নির্ধারণ করে। আমাদের সিমুলেটরে পরীক্ষা চালানোর এবং ফলাফল পর্যবেক্ষণ করার সক্ষমতা থাকা উচিত। +* কিছু **রিওয়ার্ড ফাংশন**, যা আমাদের পরীক্ষার সফলতার ইঙ্গিত দেয়। কম্পিউটার গেম খেলা শেখার ক্ষেত্রে, রিওয়ার্ড হবে আমাদের চূড়ান্ত স্কোর। + +রিওয়ার্ড ফাংশনের উপর ভিত্তি করে, আমাদের আচরণ সামঞ্জস্য করার এবং আমাদের দক্ষতা উন্নত করার সক্ষমতা থাকা উচিত, যাতে পরবর্তীবার আমরা আরও ভালো খেলতে পারি। অন্যান্য মেশিন লার্নিং-এর ধরণের সাথে RL-এর প্রধান পার্থক্য হলো RL-এ আমরা সাধারণত গেম শেষ না হওয়া পর্যন্ত জানি না যে আমরা জিতেছি বা হেরেছি। তাই, আমরা বলতে পারি না যে একটি নির্দিষ্ট পদক্ষেপ একাই ভালো বা খারাপ - আমরা শুধুমাত্র গেমের শেষে রিওয়ার্ড পাই। + +RL-এর সময়, আমরা সাধারণত অনেক পরীক্ষা চালাই। প্রতিটি পরীক্ষার সময়, আমাদের শিখে নেওয়া সর্বোত্তম কৌশল অনুসরণ করা (**এক্সপ্লয়টেশন**) এবং নতুন সম্ভাব্য অবস্থাগুলি অন্বেষণ করা (**এক্সপ্লোরেশন**) এর মধ্যে ভারসাম্য বজায় রাখতে হয়। + +## ওপেনএআই জিম + +RL-এর জন্য একটি চমৎকার টুল হলো [OpenAI Gym](https://gym.openai.com/) - একটি **সিমুলেশন পরিবেশ**, যা বিভিন্ন পরিবেশ সিমুলেট করতে পারে, যেমন অ্যাটারি গেম থেকে শুরু করে পোল ব্যালেন্সিং-এর পদার্থবিদ্যা। এটি রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদম প্রশিক্ষণের জন্য সবচেয়ে জনপ্রিয় সিমুলেশন পরিবেশগুলির মধ্যে একটি এবং এটি [OpenAI](https://openai.com/) দ্বারা রক্ষণাবেক্ষণ করা হয়। + +> **Note**: OpenAI Gym থেকে উপলব্ধ সমস্ত পরিবেশ [এখানে](https://gym.openai.com/envs/#classic_control) দেখতে পারেন। + +## কার্টপোল ব্যালেন্সিং + +আপনারা সম্ভবত আধুনিক ব্যালেন্সিং ডিভাইস যেমন *Segway* বা *Gyroscooters* দেখেছেন। এগুলো স্বয়ংক্রিয়ভাবে ব্যালেন্স করতে সক্ষম হয়, যা অ্যাক্সিলেরোমিটার বা জাইরোস্কোপ থেকে সংকেতের প্রতিক্রিয়ায় তাদের চাকা সামঞ্জস্য করে। এই অংশে, আমরা একটি অনুরূপ সমস্যা সমাধান করতে শিখব - একটি পোল ব্যালেন্স করা। এটি একটি সার্কাস পারফর্মারের তার হাতে একটি পোল ব্যালেন্স করার মতো পরিস্থিতির অনুরূপ - তবে এই পোল ব্যালেন্সিং শুধুমাত্র 1D-তে ঘটে। + +ব্যালেন্সিং-এর একটি সরলীকৃত সংস্করণকে **CartPole** সমস্যা বলা হয়। কার্টপোল জগতে, আমাদের একটি অনুভূমিক স্লাইডার রয়েছে যা বাম বা ডানে সরতে পারে, এবং লক্ষ্য হলো স্লাইডারের উপরে একটি উল্লম্ব পোল ব্যালেন্স করা। + +a cartpole + +এই পরিবেশ তৈরি এবং ব্যবহার করতে, আমাদের কয়েকটি লাইন পাইথন কোড প্রয়োজন: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +প্রতিটি পরিবেশ ঠিক একইভাবে অ্যাক্সেস করা যায়: +* `env.reset` একটি নতুন পরীক্ষা শুরু করে +* `env.step` একটি সিমুলেশন ধাপ সম্পাদন করে। এটি **অ্যাকশন স্পেস** থেকে একটি **অ্যাকশন** গ্রহণ করে এবং একটি **অবজারভেশন** (অবজারভেশন স্পেস থেকে), একটি রিওয়ার্ড এবং একটি টার্মিনেশন ফ্ল্যাগ প্রদান করে। + +উপরের উদাহরণে, আমরা প্রতিটি ধাপে একটি র্যান্ডম অ্যাকশন সম্পাদন করি, যার কারণে পরীক্ষার জীবন খুবই সংক্ষিপ্ত: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RL অ্যালগরিদমের লক্ষ্য হলো একটি মডেল প্রশিক্ষণ করা - তথাকথিত **পলিসি** π - যা একটি প্রদত্ত অবস্থার প্রতিক্রিয়ায় অ্যাকশন প্রদান করবে। আমরা পলিসিকে সম্ভাবনামূলকও বিবেচনা করতে পারি, যেমন কোনো অবস্থান *s* এবং অ্যাকশন *a* এর জন্য এটি সম্ভাবনা π(*a*|*s*) প্রদান করবে যে আমরা *s* অবস্থায় *a* গ্রহণ করব। + +## পলিসি গ্রেডিয়েন্টস অ্যালগরিদম + +পলিসি মডেল করার সবচেয়ে স্পষ্ট উপায় হলো একটি নিউরাল নেটওয়ার্ক তৈরি করা যা ইনপুট হিসেবে অবস্থান গ্রহণ করবে এবং সংশ্লিষ্ট অ্যাকশন (বা বরং সমস্ত অ্যাকশনের সম্ভাবনা) প্রদান করবে। এক অর্থে, এটি একটি সাধারণ ক্লাসিফিকেশন টাস্কের মতো হবে, একটি বড় পার্থক্য সহ - আমরা আগে থেকে জানি না যে প্রতিটি ধাপে কোন অ্যাকশন গ্রহণ করা উচিত। + +এখানে ধারণাটি হলো এই সম্ভাবনাগুলি অনুমান করা। আমরা **কিউমুলেটিভ রিওয়ার্ডস** এর একটি ভেক্টর তৈরি করি যা পরীক্ষার প্রতিটি ধাপে আমাদের মোট রিওয়ার্ড দেখায়। আমরা **রিওয়ার্ড ডিসকাউন্টিং** প্রয়োগ করি, কিছু গুণক γ=0.99 দ্বারা পূর্ববর্তী রিওয়ার্ডগুলিকে গুণ করে, যাতে পূর্ববর্তী রিওয়ার্ডগুলির ভূমিকা কমানো যায়। তারপর, আমরা পরীক্ষার পথে বৃহত্তর রিওয়ার্ড প্রদানকারী ধাপগুলিকে শক্তিশালী করি। + +> পলিসি গ্রেডিয়েন্ট অ্যালগরিদম সম্পর্কে আরও জানুন এবং এটি কার্যকরভাবে দেখতে [উদাহরণ নোটবুক](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) দেখুন। + +## অ্যাক্টর-ক্রিটিক অ্যালগরিদম + +পলিসি গ্রেডিয়েন্টস পদ্ধতির একটি উন্নত সংস্করণকে **Actor-Critic** বলা হয়। এর প্রধান ধারণা হলো নিউরাল নেটওয়ার্ককে দুটি জিনিস প্রদান করতে প্রশিক্ষণ দেওয়া: + +* পলিসি, যা নির্ধারণ করে কোন অ্যাকশন গ্রহণ করতে হবে। এই অংশটিকে **অ্যাক্টর** বলা হয়। +* আমরা এই অবস্থায় মোট রিওয়ার্ড কতটা আশা করতে পারি তার একটি অনুমান - এই অংশটিকে **ক্রিটিক** বলা হয়। + +এক অর্থে, এই আর্কিটেকচারটি একটি [GAN](../../4-ComputerVision/10-GANs/README.md)-এর মতো, যেখানে দুটি নেটওয়ার্ক একে অপরের বিরুদ্ধে প্রশিক্ষিত হয়। অ্যাক্টর-ক্রিটিক মডেলে, অ্যাক্টর আমাদের গ্রহণ করার জন্য অ্যাকশন প্রস্তাব করে, এবং ক্রিটিক সমালোচনামূলক হয়ে ফলাফল অনুমান করার চেষ্টা করে। তবে, আমাদের লক্ষ্য হলো এই নেটওয়ার্কগুলিকে একসঙ্গে প্রশিক্ষণ দেওয়া। + +কারণ আমরা পরীক্ষার সময় উভয় বাস্তব কিউমুলেটিভ রিওয়ার্ড এবং ক্রিটিক দ্বারা প্রদত্ত ফলাফল জানি, এটি তাদের মধ্যে পার্থক্য কমানোর জন্য একটি লস ফাংশন তৈরি করা তুলনামূলকভাবে সহজ। এটি আমাদের **ক্রিটিক লস** প্রদান করবে। আমরা **অ্যাক্টর লস** গণনা করতে পারি পলিসি গ্রেডিয়েন্ট অ্যালগরিদমের মতো একই পদ্ধতি ব্যবহার করে। + +এই অ্যালগরিদমগুলির একটি চালানোর পরে, আমরা আশা করতে পারি আমাদের কার্টপোল এইভাবে আচরণ করবে: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ অনুশীলন: পলিসি গ্রেডিয়েন্টস এবং অ্যাক্টর-ক্রিটিক RL + +নিম্নলিখিত নোটবুকগুলিতে আপনার শেখা চালিয়ে যান: + +* [TensorFlow-এ RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch-এ RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## অন্যান্য RL টাস্ক + +বর্তমানে রিইনফোর্সমেন্ট লার্নিং একটি দ্রুত বর্ধনশীল গবেষণা ক্ষেত্র। রিইনফোর্সমেন্ট লার্নিং-এর কিছু আকর্ষণীয় উদাহরণ হলো: + +* **অ্যাটারি গেম** খেলা শেখানো। এই সমস্যার চ্যালেঞ্জিং অংশ হলো আমাদের কাছে একটি সাধারণ অবস্থান ভেক্টর হিসেবে উপস্থাপিত হয় না, বরং একটি স্ক্রিনশট থাকে - এবং আমাদের CNN ব্যবহার করে এই স্ক্রিন ইমেজকে একটি ফিচার ভেক্টরে রূপান্তর করতে হবে, বা রিওয়ার্ড তথ্য বের করতে হবে। অ্যাটারি গেমগুলি Gym-এ উপলব্ধ। +* কম্পিউটারকে বোর্ড গেম খেলতে শেখানো, যেমন চেস এবং গো। সম্প্রতি **Alpha Zero** এর মতো অত্যাধুনিক প্রোগ্রাম দুটি এজেন্ট একে অপরের বিরুদ্ধে খেলে এবং প্রতিটি ধাপে উন্নতি করে শূন্য থেকে প্রশিক্ষিত হয়েছে। +* শিল্পে, RL সিমুলেশন থেকে কন্ট্রোল সিস্টেম তৈরি করতে ব্যবহৃত হয়। [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) নামে একটি পরিষেবা বিশেষভাবে এর জন্য ডিজাইন করা হয়েছে। + +## উপসংহার + +আমরা এখন শিখেছি কীভাবে এজেন্টদের শুধুমাত্র একটি রিওয়ার্ড ফাংশন প্রদান করে, যা গেমের কাঙ্ক্ষিত অবস্থাকে সংজ্ঞায়িত করে, এবং তাদের বুদ্ধিমত্তার সাথে অনুসন্ধান স্থানটি অন্বেষণ করার সুযোগ দিয়ে ভালো ফলাফল অর্জন করতে প্রশিক্ষণ দিতে হয়। আমরা সফলভাবে দুটি অ্যালগরিদম চেষ্টা করেছি এবং তুলনামূলকভাবে স্বল্প সময়ের মধ্যে একটি ভালো ফলাফল অর্জন করেছি। তবে, এটি RL-এ আপনার যাত্রার শুধুমাত্র শুরু, এবং আপনি যদি আরও গভীরে যেতে চান তবে একটি পৃথক কোর্স নেওয়ার কথা বিবেচনা করা উচিত। + +## 🚀 চ্যালেঞ্জ + +'অন্যান্য RL টাস্ক' বিভাগে তালিকাভুক্ত অ্যাপ্লিকেশনগুলি অন্বেষণ করুন এবং একটি বাস্তবায়নের চেষ্টা করুন! + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## পর্যালোচনা এবং স্ব-অধ্যয়ন + +আমাদের [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md)-এ ক্লাসিকাল রিইনফোর্সমেন্ট লার্নিং সম্পর্কে আরও জানুন। + +[এই চমৎকার ভিডিওটি](https://www.youtube.com/watch?v=qv6UVOQ0F44) দেখুন যেখানে একটি কম্পিউটার কীভাবে সুপার মারিও খেলতে শিখতে পারে তা আলোচনা করা হয়েছে। + +## অ্যাসাইনমেন্ট: [মাউন্টেন কার প্রশিক্ষণ দিন](lab/README.md) + +এই অ্যাসাইনমেন্টের সময় আপনার লক্ষ্য হবে একটি ভিন্ন Gym পরিবেশ - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) প্রশিক্ষণ দেওয়া। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। \ No newline at end of file diff --git a/translations/bn/lessons/6-Other/22-DeepRL/lab/README.md b/translations/bn/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..272670ed --- /dev/null +++ b/translations/bn/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## পরিবেশ + +মাউন্টেন কার পরিবেশে একটি গাড়ি একটি উপত্যকার মধ্যে আটকে থাকে। আপনার লক্ষ্য হলো উপত্যকা থেকে লাফিয়ে বেরিয়ে পতাকার কাছে পৌঁছানো। আপনি যে কাজগুলো করতে পারেন তা হলো বাম দিকে ত্বরান্বিত করা, ডান দিকে ত্বরান্বিত করা, অথবা কিছুই না করা। আপনি গাড়ির অবস্থান x-অক্ষ বরাবর এবং গতিবেগ পর্যবেক্ষণ করতে পারেন। + +## শুরুর নোটবুক + +ল্যাব শুরু করুন [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) খুলে। + +## শিক্ষণীয় বিষয় + +এই ল্যাবের মাধ্যমে আপনি শিখবেন যে নতুন পরিবেশে RL অ্যালগরিদম গ্রহণ করা প্রায়ই বেশ সহজ হয়, কারণ OpenAI Gym-এর সব পরিবেশের জন্য একই ইন্টারফেস রয়েছে এবং অ্যালগরিদমগুলো পরিবেশের প্রকৃতির উপর খুব বেশি নির্ভর করে না। আপনি এমনকি পাইথন কোডকে পুনর্গঠন করতে পারেন যাতে কোনো পরিবেশকে RL অ্যালগরিদমে একটি প্যারামিটার হিসেবে পাস করা যায়। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/6-Other/23-MultiagentSystems/README.md b/translations/bn/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..27c3bcfc --- /dev/null +++ b/translations/bn/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,160 @@ + +# মাল্টি-এজেন্ট সিস্টেম + +বুদ্ধিমত্তা অর্জনের একটি সম্ভাব্য উপায় হল তথাকথিত **উদ্ভাসিত** (বা **সমন্বিত**) পদ্ধতি, যা এই ধারণার উপর ভিত্তি করে যে অনেক তুলনামূলকভাবে সহজ এজেন্টের সম্মিলিত আচরণ পুরো সিস্টেমের সামগ্রিকভাবে আরও জটিল (বা বুদ্ধিমান) আচরণ তৈরি করতে পারে। তাত্ত্বিকভাবে, এটি [সমষ্টিগত বুদ্ধিমত্তা](https://en.wikipedia.org/wiki/Collective_intelligence), [উদ্ভাসবাদ](https://en.wikipedia.org/wiki/Global_brain) এবং [বিবর্তনীয় সাইবারনেটিক্স](https://en.wikipedia.org/wiki/Global_brain)-এর নীতির উপর ভিত্তি করে, যা বলে যে উচ্চ-স্তরের সিস্টেমগুলি নিম্ন-স্তরের সিস্টেমগুলি সঠিকভাবে একত্রিত হলে কিছু অতিরিক্ত মান অর্জন করে (*মেটাসিস্টেম ট্রানজিশনের নীতি* নামে পরিচিত)। + +## [পূর্ব-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**মাল্টি-এজেন্ট সিস্টেম** এর ধারণা ১৯৯০-এর দশকে ইন্টারনেট এবং বিতরণকৃত সিস্টেমের বৃদ্ধির প্রতিক্রিয়া হিসেবে AI-এ উদ্ভূত হয়। ক্লাসিক্যাল AI-এর একটি বিখ্যাত পাঠ্যপুস্তক, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), মাল্টি-এজেন্ট সিস্টেমের দৃষ্টিকোণ থেকে ক্লাসিক্যাল AI-এর উপর আলোকপাত করে। + +মাল্টি-এজেন্ট পদ্ধতির কেন্দ্রে রয়েছে **এজেন্ট** এর ধারণা - একটি সত্তা যা কিছু **পরিবেশে** বসবাস করে, যা এটি উপলব্ধি করতে এবং এর উপর কাজ করতে পারে। এটি একটি খুব বিস্তৃত সংজ্ঞা, এবং এজেন্টের অনেক ভিন্ন প্রকার এবং শ্রেণিবিন্যাস হতে পারে: + +* তাদের যুক্তি করার ক্ষমতা অনুযায়ী: + - **প্রতিক্রিয়াশীল** এজেন্ট সাধারণত সহজ অনুরোধ-প্রতিক্রিয়া ধরনের আচরণ করে + - **বিবেচনামূলক** এজেন্ট কিছু ধরণের যৌক্তিক যুক্তি এবং/অথবা পরিকল্পনা করার ক্ষমতা ব্যবহার করে +* এজেন্টের কোড যেখানে কার্যকর হয় তার ভিত্তিতে: + - **স্থির** এজেন্ট একটি নির্দিষ্ট নেটওয়ার্ক নোডে কাজ করে + - **মোবাইল** এজেন্ট তাদের কোড নেটওয়ার্ক নোডগুলির মধ্যে সরাতে পারে +* তাদের আচরণের ভিত্তিতে: + - **নিষ্ক্রিয় এজেন্ট** এর নির্দিষ্ট লক্ষ্য থাকে না। এই ধরনের এজেন্ট বাহ্যিক উদ্দীপনার প্রতি প্রতিক্রিয়া জানাতে পারে, কিন্তু নিজের থেকে কোনো পদক্ষেপ শুরু করবে না। + - **সক্রিয় এজেন্ট** কিছু লক্ষ্য অনুসরণ করে + - **জ্ঞানীয় এজেন্ট** জটিল পরিকল্পনা এবং যুক্তি ব্যবহার করে + +বর্তমানে মাল্টি-এজেন্ট সিস্টেম বিভিন্ন অ্যাপ্লিকেশনে ব্যবহৃত হচ্ছে: + +* গেমে, অনেক নন-প্লেয়ার চরিত্র কিছু ধরণের AI ব্যবহার করে এবং তাদের বুদ্ধিমান এজেন্ট হিসেবে বিবেচনা করা যেতে পারে +* ভিডিও প্রোডাকশনে, ভিড়যুক্ত জটিল ৩ডি দৃশ্য রেন্ডারিং সাধারণত মাল্টি-এজেন্ট সিমুলেশন ব্যবহার করে করা হয় +* সিস্টেম মডেলিংয়ে, মাল্টি-এজেন্ট পদ্ধতি একটি জটিল মডেলের আচরণ অনুকরণ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, মাল্টি-এজেন্ট পদ্ধতি সফলভাবে COVID-19 রোগের বিশ্বব্যাপী বিস্তার পূর্বাভাস দিতে ব্যবহৃত হয়েছে। অনুরূপ পদ্ধতি শহরের ট্রাফিক মডেল করতে এবং ট্রাফিক নিয়মের পরিবর্তনের প্রতিক্রিয়া দেখতে ব্যবহার করা যেতে পারে। +* জটিল অটোমেশন সিস্টেমে, প্রতিটি ডিভাইস একটি স্বাধীন এজেন্ট হিসাবে কাজ করতে পারে, যা পুরো সিস্টেমকে কম একক এবং আরও শক্তিশালী করে তোলে। + +আমরা মাল্টি-এজেন্ট সিস্টেমের গভীরে যাওয়ার জন্য অনেক সময় ব্যয় করব না, তবে **মাল্টি-এজেন্ট মডেলিং** এর একটি উদাহরণ বিবেচনা করব। + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) একটি মাল্টি-এজেন্ট মডেলিং পরিবেশ যা [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) প্রোগ্রামিং ভাষার একটি পরিবর্তিত সংস্করণের উপর ভিত্তি করে তৈরি। এই ভাষাটি শিশুদের প্রোগ্রামিং ধারণা শেখানোর জন্য তৈরি করা হয়েছিল এবং এটি আপনাকে **কচ্ছপ** নামে একটি এজেন্ট নিয়ন্ত্রণ করতে দেয়, যা চলতে পারে এবং পিছনে একটি চিহ্ন রেখে যেতে পারে। এটি জটিল জ্যামিতিক চিত্র তৈরি করতে দেয়, যা একটি এজেন্টের আচরণ বুঝতে একটি খুব দৃশ্যমান উপায়। + +NetLogo-তে, আমরা `create-turtles` কমান্ড ব্যবহার করে অনেক কচ্ছপ তৈরি করতে পারি। তারপর আমরা সমস্ত কচ্ছপকে কিছু কাজ করতে নির্দেশ দিতে পারি (নিচের উদাহরণে - ১০ পয়েন্ট সামনে এগিয়ে): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +অবশ্যই, যখন সমস্ত কচ্ছপ একই কাজ করে তখন এটি আকর্ষণীয় নয়, তাই আমরা নির্দিষ্ট পয়েন্টের আশেপাশে থাকা কচ্ছপের দলগুলিকে `ask` করতে পারি। আমরা `breed [cats cat]` কমান্ড ব্যবহার করে বিভিন্ন *ব্রিড* এর কচ্ছপও তৈরি করতে পারি। এখানে `cat` একটি ব্রিডের নাম, এবং আমাদের একবচন এবং বহুবচন উভয় শব্দ নির্দিষ্ট করতে হবে, কারণ বিভিন্ন কমান্ড স্পষ্টতার জন্য বিভিন্ন ফর্ম ব্যবহার করে। + +> ✅ আমরা NetLogo ভাষা শেখার দিকে মনোযোগ দেব না - আপনি যদি আরও জানতে আগ্রহী হন তবে [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) রিসোর্সটি দেখতে পারেন। + +আপনি NetLogo [ডাউনলোড](https://ccl.northwestern.edu/netlogo/download.shtml) এবং ইনস্টল করে চেষ্টা করতে পারেন। + +### মডেল লাইব্রেরি + +NetLogo-এর একটি চমৎকার দিক হল এটি একটি কার্যকরী মডেলের লাইব্রেরি ধারণ করে যা আপনি চেষ্টা করতে পারেন। **File → Models Library**-এ যান, এবং আপনার কাছে অনেক ক্যাটাগরির মডেল বেছে নেওয়ার সুযোগ থাকবে। + +NetLogo Models Library + +> NetLogo মডেল লাইব্রেরির একটি স্ক্রিনশট, দিমিত্রি সশনিকভ দ্বারা + +আপনি একটি মডেল খুলতে পারেন, উদাহরণস্বরূপ **Biology → Flocking**। + +### প্রধান নীতিমালা + +মডেলটি খুললে, আপনি NetLogo-এর প্রধান স্ক্রিনে নিয়ে যাওয়া হয়। এখানে একটি নমুনা মডেল রয়েছে যা সীমিত সম্পদ (ঘাস) দেওয়া নেকড়ে এবং ভেড়ার জনসংখ্যা বর্ণনা করে। + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bn.png) + +> দিমিত্রি সশনিকভ দ্বারা স্ক্রিনশট + +এই স্ক্রিনে, আপনি দেখতে পারেন: + +* **ইন্টারফেস** বিভাগ, যা অন্তর্ভুক্ত: + - প্রধান ক্ষেত্র, যেখানে সমস্ত এজেন্ট বসবাস করে + - বিভিন্ন নিয়ন্ত্রণ: বোতাম, স্লাইডার ইত্যাদি + - গ্রাফ, যা আপনি সিমুলেশনের প্যারামিটার প্রদর্শনের জন্য ব্যবহার করতে পারেন +* **কোড** ট্যাব, যা সম্পাদক ধারণ করে, যেখানে আপনি NetLogo প্রোগ্রাম টাইপ করতে পারেন + +বেশিরভাগ ক্ষেত্রে, ইন্টারফেসে একটি **Setup** বোতাম থাকবে, যা সিমুলেশনের অবস্থা আরম্ভ করে, এবং একটি **Go** বোতাম থাকবে যা কার্যকর শুরু করে। এগুলি কোডে সংশ্লিষ্ট হ্যান্ডলার দ্বারা পরিচালিত হয় যা এইরকম দেখায়: + +``` +to go [ +... +] +``` + +NetLogo-এর বিশ্ব নিম্নলিখিত বস্তুগুলি নিয়ে গঠিত: + +* **এজেন্ট** (কচ্ছপ) যা ক্ষেত্র জুড়ে চলতে পারে এবং কিছু করতে পারে। আপনি `ask turtles [...]` সিনট্যাক্স ব্যবহার করে এজেন্টদের নির্দেশ দেন, এবং বন্ধনীর মধ্যে কোডটি *কচ্ছপ মোডে* সমস্ত এজেন্ট দ্বারা কার্যকর করা হয়। +* **প্যাচ** ক্ষেত্রের বর্গাকার এলাকা, যেখানে এজেন্টরা বসবাস করে। আপনি একই প্যাচে থাকা সমস্ত এজেন্টকে উল্লেখ করতে পারেন, অথবা আপনি প্যাচের রঙ এবং অন্যান্য কিছু বৈশিষ্ট্য পরিবর্তন করতে পারেন। আপনি `ask patches` ব্যবহার করে প্যাচগুলিকে কিছু করতে বলতে পারেন। +* **অবজারভার** একটি অনন্য এজেন্ট যা বিশ্বকে নিয়ন্ত্রণ করে। সমস্ত বোতাম হ্যান্ডলার *অবজারভার মোডে* কার্যকর করা হয়। + +> ✅ মাল্টি-এজেন্ট পরিবেশের সৌন্দর্য হল যে কচ্ছপ মোড বা প্যাচ মোডে চলমান কোডটি সমস্ত এজেন্ট দ্বারা একসাথে সমান্তরালভাবে কার্যকর করা হয়। সুতরাং, সামান্য কোড লিখে এবং পৃথক এজেন্টের আচরণ প্রোগ্রাম করে, আপনি পুরো সিমুলেশন সিস্টেমের জটিল আচরণ তৈরি করতে পারেন। + +### ফ্লকিং + +মাল্টি-এজেন্ট আচরণের একটি উদাহরণ হিসেবে, **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** বিবেচনা করা যাক। ফ্লকিং একটি জটিল প্যাটার্ন যা পাখির ঝাঁকের উড়ার মতো। তাদের উড়তে দেখে আপনি ভাবতে পারেন যে তারা কোনো ধরনের সমষ্টিগত অ্যালগরিদম অনুসরণ করছে, অথবা তাদের কিছু *সমষ্টিগত বুদ্ধিমত্তা* রয়েছে। তবে, এই জটিল আচরণ তখনই উদ্ভূত হয় যখন প্রতিটি পৃথক এজেন্ট (এই ক্ষেত্রে, একটি *পাখি*) শুধুমাত্র তার কাছাকাছি থাকা কিছু অন্যান্য এজেন্টকে পর্যবেক্ষণ করে এবং তিনটি সহজ নিয়ম অনুসরণ করে: + +* **অ্যালাইনমেন্ট** - এটি প্রতিবেশী এজেন্টদের গড় অভিমুখের দিকে চালিত হয় +* **কোহেশন** - এটি প্রতিবেশীদের গড় অবস্থানের দিকে চালিত হয় (*দীর্ঘ পরিসরের আকর্ষণ*) +* **সেপারেশন** - যখন অন্য পাখির খুব কাছাকাছি আসে, এটি দূরে সরে যাওয়ার চেষ্টা করে (*স্বল্প পরিসরের প্রতিক্রিয়া*) + +আপনি ফ্লকিং উদাহরণটি চালাতে পারেন এবং আচরণটি পর্যবেক্ষণ করতে পারেন। আপনি *সেপারেশনের ডিগ্রি* বা *দেখার পরিসর* এর মতো প্যারামিটারও সামঞ্জস্য করতে পারেন, যা সংজ্ঞায়িত করে যে প্রতিটি পাখি কত দূর পর্যন্ত দেখতে পারে। লক্ষ্য করুন যে আপনি যদি দেখার পরিসর ০-তে কমিয়ে দেন, সমস্ত পাখি অন্ধ হয়ে যায় এবং ফ্লকিং বন্ধ হয়ে যায়। যদি আপনি সেপারেশন ০-তে কমিয়ে দেন, সমস্ত পাখি একটি সরল রেখায় একত্রিত হয়। + +> ✅ **কোড** ট্যাবে যান এবং দেখুন ফ্লকিংয়ের তিনটি নিয়ম (অ্যালাইনমেন্ট, কোহেশন এবং সেপারেশন) কোডে কোথায় বাস্তবায়িত হয়েছে। লক্ষ্য করুন যে আমরা শুধুমাত্র দৃষ্টিতে থাকা এজেন্টদের উল্লেখ করি। + +### দেখার জন্য অন্যান্য মডেল + +কিছু আরও আকর্ষণীয় মডেল রয়েছে যা আপনি পরীক্ষা করতে পারেন: + +* **Art → Fireworks** দেখায় কিভাবে একটি আতশবাজি পৃথক আগুনের প্রবাহের সমষ্টিগত আচরণ হিসেবে বিবেচিত হতে পারে +* **Social Science → Traffic Basic** এবং **Social Science → Traffic Grid** দেখায় ১ডি এবং ২ডি গ্রিডে ট্রাফিকের মডেল, ট্রাফিক লাইট সহ বা ছাড়া। সিমুলেশনে প্রতিটি গাড়ি নিম্নলিখিত নিয়ম অনুসরণ করে: + - যদি সামনে জায়গা খালি থাকে - গতি বাড়ান (একটি নির্দিষ্ট সর্বোচ্চ গতির মধ্যে) + - যদি সামনে বাধা দেখেন - ব্রেক করুন (এবং আপনি সামঞ্জস্য করতে পারেন যে একজন চালক কত দূর পর্যন্ত দেখতে পারে) +* **Social Science → Party** দেখায় কিভাবে একটি ককটেল পার্টিতে মানুষ একত্রিত হয়। আপনি এমন প্যারামিটারের সংমিশ্রণ খুঁজে পেতে পারেন যা দলের সুখ দ্রুততম বৃদ্ধির দিকে নিয়ে যায়। + +এই উদাহরণগুলি থেকে আপনি দেখতে পারেন, মাল্টি-এজেন্ট সিমুলেশন একটি জটিল সিস্টেমের আচরণ বুঝতে একটি কার্যকর উপায় হতে পারে যা একই বা অনুরূপ যুক্তি অনুসরণ করে। এটি ভার্চুয়াল এজেন্ট, যেমন [NPCs](https://en.wikipedia.org/wiki/NPC) কম্পিউটার গেমে বা ৩ডি অ্যানিমেটেড জগতে এজেন্ট নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে। + +## বিবেচনামূলক এজেন্ট + +উপরের এজেন্টগুলি খুবই সহজ, পরিবেশের পরিবর্তনের প্রতি কিছু ধরণের অ্যালগরিদম ব্যবহার করে প্রতিক্রিয়া জানায়। এদের **প্রতিক্রিয়াশীল এজেন্ট** বলা হয়। তবে, কখনও কখনও এজেন্ট যুক্তি করতে এবং তাদের পদক্ষেপ পরিকল্পনা করতে পারে, এই ক্ষেত্রে তাদের **বিবেচনামূলক** বলা হয়। + +একটি সাধারণ উদাহরণ হতে পারে একটি ব্যক্তিগত এজেন্ট যা একজন মানুষের কাছ থেকে একটি নির্দেশনা পায় একটি ছুটির ট্যুর বুক করার জন্য। ধরুন ইন্টারনেটে অনেক এজেন্ট রয়েছে যারা এটি করতে সাহায্য করতে পারে। এটি তখন অন্যান্য এজেন্টদের সাথে যোগাযোগ করতে হবে দেখতে যে কোন ফ্লাইটগুলি উপলব্ধ, বিভিন্ন তারিখের জন্য হোটেলের দাম কী, এবং সেরা মূল্য নিয়ে আলোচনা করার চেষ্টা করতে হবে। যখন ছুটির পরিকল্পনা সম্পূর্ণ এবং মালিক দ্বারা নিশ্চিত হয়, এটি বুকিংয়ের সাথে এগিয়ে যেতে পারে। + +এটি করার জন্য, এজেন্টদের **যোগাযোগ** করতে হবে। সফল যোগাযোগের জন্য তাদের প্রয়োজন: + +* **জ্ঞান বিনিময়ের জন্য মানক ভাষা**, যেমন [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) এবং [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML)। এই ভাষাগুলি [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act)-এর উপর ভিত্তি করে ডিজাইন করা হয়েছে। +* এই ভাষাগুলিতে **আলোচনার জন্য প্রোটোকল** অন্তর্ভুক্ত করা উচিত, বিভিন্ন **নিলামের ধরন** এর উপর ভিত্তি করে। +* একটি **সাধারণ অ্যান্টোলজি** ব্যবহার করা উচিত, যাতে তারা একই ধারণাগুলিকে উল্লেখ করতে পারে এবং তাদের অর্থ বুঝতে পারে। +* **আবিষ্কার করার একটি উপায়** থাকা উচিত যে বিভিন্ন এজেন্ট কী করতে পারে, যা কিছু ধরণের অ্যান্টোলজির উপর ভিত্তি করে। + +বিবেচনামূলক এজেন্টগুলি প্রতিক্রিয়াশীল এজেন্টের তুলনায় অনেক বেশি জটিল, কারণ তারা শুধুমাত্র পরিবেশের পরিবর্তনের প্রতি প্রতিক্রিয়া জানায় না, তারা *পদক্ষেপ শুরু* করতেও সক্ষম হতে হবে। বিবেচনামূলক এজেন্টের জন্য প্রস্তাবিত আর্কিটেকচারগুলির মধ্যে একটি হল তথাকথিত Belief-Desire-Intention (BDI) এজেন্ট: + +* **Beliefs** একটি এজেন্টের পরিবেশ সম্পর্কে জ্ঞানের একটি সেট গঠন করে। এটি একটি জ্ঞানভাণ্ডার বা নিয়মের সেট হিসাবে গঠন করা যেতে পারে যা একটি এজেন্ট পরিবেশে একটি নির্দিষ্ট পরিস্থিতিতে প্রয়োগ করতে পারে। +* **Desires** একটি এজেন্ট কী করতে চায় তা সংজ্ঞায়িত করে, অর্থাৎ তার লক্ষ্য। উদাহরণস্বরূপ, উপরের ব্যক্তিগত সহকারী এজেন্টের লক্ষ্য একটি ট্যুর বুক করা, এবং একটি হোটেল এজেন্টের লক্ষ্য লাভ সর্বাধিক করা। +* **Intentions** নির্দিষ্ট পদক্ষেপ যা একটি এজেন্ট তার লক্ষ্য অর্জনের জন্য পরিকল্পনা করে। পদক্ষেপগুলি সাধারণত পরিবেশ পরিবর্তন করে এবং অন্যান্য এজেন্টের সাথে যোগাযোগের কারণ হয়। + +মাল্টি-এজেন্ট সিস্টেম তৈরির জন্য কিছু প্ল্যাটফর্ম উপলব্ধ রয়েছে, যেমন [JADE](https://jade.tilab.com/)। [এই গবেষণাপত্র](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) মাল্টি-এজেন্ট প্ল্যাটফর্মগুলির একটি পর্যালোচনা ধারণ করে, মাল্টি-এজেন্ট সিস্টেমের সংক্ষিপ্ত ইতিহাস এবং তাদের বিভিন্ন ব্যবহারিক দৃশ্যপট সহ। + +## উপসংহার + +মাল্টি-এজেন্ট সিস্টেমগুলি বিভিন্ন রূপ নিতে পারে এবং অনেক ভিন্ন অ্যাপ্লিকেশনে ব্যবহার করা যেতে পারে। +এগুলি সাধারণত একটি পৃথক এজেন্টের সহজ আচরণের উপর মনোযোগ কেন্দ্রীভূত করে এবং **সমন্বিত প্রভাব** এর কারণে সামগ্রিক সিস্টেমের আরও জটিল আচরণ অর্জন করে। + +## 🚀 চ্যালেঞ্জ + +এই পাঠটি বাস্তব জগতে নিয়ে যান এবং একটি সমস্যা সমাধানের জন্য একটি মাল্টি-এজেন্ট সিস্টেম ধারণা করার চেষ্টা করুন। উদাহরণস্বরূপ, একটি মাল্টি-এজেন্ট সিস্টেম একটি স্কুল বাসের রুট অপ্টিমাইজ করতে কী করতে হবে? এটি একটি বেকারিতে কীভাবে কাজ করতে পারে? + +## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## পর্যালোচনা এবং স্ব- + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/bn/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..14484dea --- /dev/null +++ b/translations/bn/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# NetLogo অ্যাসাইনমেন্ট + +NetLogo-এর লাইব্রেরির একটি মডেল নিন এবং এটি ব্যবহার করে একটি বাস্তব জীবনের পরিস্থিতি যতটা সম্ভব ঘনিষ্ঠভাবে অনুকরণ করুন। একটি ভালো উদাহরণ হতে পারে Alternative Visualizations ফোল্ডারের Virus মডেলটি পরিবর্তন করা, যাতে এটি COVID-19-এর বিস্তার মডেল করতে কীভাবে ব্যবহার করা যেতে পারে তা দেখানো যায়। আপনি কি এমন একটি মডেল তৈরি করতে পারেন যা বাস্তব জীবনের ভাইরাসের বিস্তার অনুকরণ করে? + +আপনার কাজ দেখানোর জন্য একটি কপি সংরক্ষণ করুন এবং একটি ভিডিও ডেমো তৈরি করুন, যেখানে ব্যাখ্যা করা হবে যে মডেলটি কীভাবে বাস্তব জীবনের পরিস্থিতির সাথে সংযুক্ত। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/7-Ethics/README.md b/translations/bn/lessons/7-Ethics/README.md new file mode 100644 index 00000000..7569c1bd --- /dev/null +++ b/translations/bn/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# নৈতিক এবং দায়িত্বশীল কৃত্রিম বুদ্ধিমত্তা + +আপনি এই কোর্সটি প্রায় শেষ করে ফেলেছেন, এবং আশা করি এখন পর্যন্ত আপনি পরিষ্কারভাবে বুঝতে পেরেছেন যে কৃত্রিম বুদ্ধিমত্তা (AI) বিভিন্ন গাণিতিক পদ্ধতির উপর ভিত্তি করে তৈরি, যা আমাদের ডেটার মধ্যে সম্পর্ক খুঁজে বের করতে এবং কিছু মানব আচরণের দিক পুনরায় তৈরি করতে মডেল প্রশিক্ষণ দিতে সাহায্য করে। এই মুহূর্তে, আমরা AI-কে একটি অত্যন্ত শক্তিশালী টুল হিসেবে বিবেচনা করি যা ডেটা থেকে প্যাটার্ন বের করতে এবং নতুন সমস্যার সমাধানে সেই প্যাটার্ন প্রয়োগ করতে সক্ষম। + +## [পূর্ব-লেকচার কুইজ](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +তবে, বিজ্ঞান কল্পকাহিনীতে আমরা প্রায়ই এমন গল্প দেখি যেখানে AI মানবজাতির জন্য বিপদ ডেকে আনে। সাধারণত এই গল্পগুলো AI বিদ্রোহের উপর ভিত্তি করে তৈরি, যেখানে AI মানুষের বিরুদ্ধে অবস্থান নেয়। এটি বোঝায় যে AI-এর কোনো ধরনের আবেগ রয়েছে বা এটি এমন সিদ্ধান্ত নিতে পারে যা তার নির্মাতাদের কল্পনার বাইরে। + +এই কোর্সে আমরা যে ধরনের AI শিখেছি তা আসলে বড় বড় ম্যাট্রিক্স গাণিতিক হিসাব ছাড়া আর কিছুই নয়। এটি আমাদের সমস্যাগুলোর সমাধানে সাহায্য করার জন্য একটি অত্যন্ত শক্তিশালী টুল, এবং যেকোনো শক্তিশালী টুলের মতোই - এটি ভালো এবং খারাপ উভয় উদ্দেশ্যে ব্যবহার করা যেতে পারে। সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, এটি *ভুলভাবে ব্যবহার* করা যেতে পারে। + +## দায়িত্বশীল AI-এর নীতিমালা + +AI-এর এই অনিচ্ছাকৃত বা ইচ্ছাকৃত ভুল ব্যবহারের ঝুঁকি এড়াতে, মাইক্রোসফট গুরুত্বপূর্ণ [দায়িত্বশীল AI-এর নীতিমালা](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) প্রকাশ করেছে। এই নীতিমালাগুলো নিম্নলিখিত ধারণাগুলোর উপর ভিত্তি করে তৈরি: + +* **ন্যায্যতা** মডেলের পক্ষপাতিত্বের (bias) গুরুত্বপূর্ণ সমস্যার সাথে সম্পর্কিত, যা পক্ষপাতযুক্ত ডেটা ব্যবহার করে প্রশিক্ষণের ফলে হতে পারে। উদাহরণস্বরূপ, যখন আমরা কোনো ব্যক্তির সফটওয়্যার ডেভেলপার চাকরি পাওয়ার সম্ভাবনা পূর্বাভাস করার চেষ্টা করি, মডেলটি পুরুষদের প্রতি বেশি প্রাধান্য দিতে পারে - কারণ প্রশিক্ষণ ডেটাসেটটি সম্ভবত পুরুষদের উপর বেশি ভিত্তি করে তৈরি। আমাদের প্রশিক্ষণ ডেটার ভারসাম্য বজায় রাখতে হবে এবং মডেলটি পক্ষপাতমুক্ত কিনা তা নিশ্চিত করতে হবে, যাতে এটি আরও প্রাসঙ্গিক বৈশিষ্ট্যগুলো বিবেচনায় নেয়। +* **নির্ভরযোগ্যতা এবং নিরাপত্তা**। AI মডেলগুলোর প্রকৃতিগতভাবে ভুল করার সম্ভাবনা থাকে। একটি নিউরাল নেটওয়ার্ক সম্ভাব্যতার ভিত্তিতে ফলাফল দেয়, এবং সিদ্ধান্ত নেওয়ার সময় এটি বিবেচনায় নেওয়া প্রয়োজন। প্রতিটি মডেলের নির্দিষ্ট পরিমাণ সঠিকতা এবং পুনরুদ্ধার ক্ষমতা থাকে, এবং ভুল পরামর্শের কারণে ক্ষতি এড়াতে আমাদের এটি বুঝতে হবে। +* **গোপনীয়তা এবং নিরাপত্তা** AI-এর ক্ষেত্রে কিছু নির্দিষ্ট প্রভাব ফেলে। উদাহরণস্বরূপ, যখন আমরা কোনো ডেটা মডেল প্রশিক্ষণের জন্য ব্যবহার করি, সেই ডেটা কোনোভাবে মডেলের সাথে "একীভূত" হয়ে যায়। একদিকে এটি নিরাপত্তা এবং গোপনীয়তা বাড়ায়, অন্যদিকে আমাদের মনে রাখতে হবে যে মডেলটি কোন ডেটার উপর প্রশিক্ষিত হয়েছে। +* **অন্তর্ভুক্তি** বোঝায় যে আমরা AI তৈরি করছি মানুষকে প্রতিস্থাপন করার জন্য নয়, বরং তাদের কাজকে আরও সৃজনশীল করতে এবং তাদের সহায়তা করার জন্য। এটি ন্যায্যতার সাথেও সম্পর্কিত, কারণ যখন আমরা কম প্রতিনিধিত্বশীল সম্প্রদায়ের সাথে কাজ করি, তখন আমাদের সংগ্রহ করা ডেটাসেটগুলো পক্ষপাতযুক্ত হওয়ার সম্ভাবনা বেশি থাকে। আমাদের নিশ্চিত করতে হবে যে এই সম্প্রদায়গুলো AI দ্বারা সঠিকভাবে অন্তর্ভুক্ত এবং পরিচালিত হচ্ছে। +* **স্বচ্ছতা**। এর মধ্যে নিশ্চিত করা অন্তর্ভুক্ত যে আমরা সবসময় পরিষ্কারভাবে জানাই যে AI ব্যবহার করা হচ্ছে। এছাড়াও, যেখানে সম্ভব, আমরা এমন AI সিস্টেম ব্যবহার করতে চাই যা *ব্যাখ্যাযোগ্য*। +* **জবাবদিহিতা**। যখন AI মডেলগুলো কোনো সিদ্ধান্ত নেয়, তখন সবসময় পরিষ্কার নয় যে সেই সিদ্ধান্তগুলোর জন্য কে দায়ী। আমাদের নিশ্চিত করতে হবে যে আমরা বুঝতে পারি AI সিদ্ধান্তের দায়ভার কোথায়। বেশিরভাগ ক্ষেত্রে আমরা চাইব গুরুত্বপূর্ণ সিদ্ধান্ত নেওয়ার প্রক্রিয়ায় মানুষকে অন্তর্ভুক্ত করতে, যাতে প্রকৃত মানুষদের জবাবদিহি করা যায়। + +## দায়িত্বশীল AI-এর জন্য টুলস + +মাইক্রোসফট [দায়িত্বশীল AI টুলবক্স](https://github.com/microsoft/responsible-ai-toolbox) তৈরি করেছে, যা একটি টুলসের সেট অন্তর্ভুক্ত করে: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, যার মধ্যে রয়েছে: + + - EconML - কারণ বিশ্লেষণের জন্য একটি টুল, যা "যদি এমন হতো" ধরনের প্রশ্নের উপর ফোকাস করে + - DiCE - কাউন্টারফ্যাকচুয়াল বিশ্লেষণের টুল, যা আপনাকে দেখায় কোন বৈশিষ্ট্যগুলো পরিবর্তন করতে হবে মডেলের সিদ্ধান্ত প্রভাবিত করতে + +AI নীতিশাস্ত্র সম্পর্কে আরও জানতে, দয়া করে [এই পাঠটি](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) দেখুন, যা মেশিন লার্নিং কারিকুলামের অংশ এবং এতে অ্যাসাইনমেন্ট অন্তর্ভুক্ত রয়েছে। + +## পর্যালোচনা এবং স্ব-অধ্যয়ন + +দায়িত্বশীল AI সম্পর্কে আরও জানতে এই [শিক্ষা পথটি](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) গ্রহণ করুন। + +## [পোস্ট-লেকচার কুইজ](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/README.md b/translations/bn/lessons/README.md new file mode 100644 index 00000000..834f3a3f --- /dev/null +++ b/translations/bn/lessons/README.md @@ -0,0 +1,17 @@ + +# সংক্ষিপ্ত বিবরণ + +![ডুডলে সংক্ষিপ্ত বিবরণ](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bn.png) + +> স্কেচনোট করেছেন [Tomomi Imura](https://twitter.com/girlie_mac) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/X-Extras/X1-MultiModal/README.md b/translations/bn/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..ec94a700 --- /dev/null +++ b/translations/bn/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# মাল্টি-মোডাল নেটওয়ার্ক + +ট্রান্সফর্মার মডেলগুলো NLP কাজের ক্ষেত্রে সফল হওয়ার পর, একই বা অনুরূপ আর্কিটেকচার কম্পিউটার ভিশন কাজের জন্য প্রয়োগ করা হয়েছে। ভিশন এবং প্রাকৃতিক ভাষার ক্ষমতা *একত্রিত* করার জন্য মডেল তৈরি করার প্রতি আগ্রহ বাড়ছে। এরকম একটি প্রচেষ্টা OpenAI দ্বারা করা হয়েছে, যার নাম CLIP এবং DALL.E। + +## কনট্রাস্টিভ ইমেজ প্রি-ট্রেনিং (CLIP) + +CLIP-এর মূল ধারণা হলো টেক্সট প্রম্পটের সাথে একটি ইমেজ তুলনা করা এবং নির্ধারণ করা যে ইমেজটি প্রম্পটের সাথে কতটা সঙ্গতিপূর্ণ। + +![CLIP আর্কিটেকচার](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bn.png) + +> *ছবি [এই ব্লগ পোস্ট](https://openai.com/blog/clip/) থেকে নেওয়া হয়েছে* + +মডেলটি ইন্টারনেট থেকে প্রাপ্ত ইমেজ এবং তাদের ক্যাপশন দিয়ে প্রশিক্ষিত হয়। প্রতিটি ব্যাচে, আমরা N জোড়া (ইমেজ, টেক্সট) নিই এবং সেগুলোকে কিছু ভেক্টর রিপ্রেজেন্টেশনে রূপান্তর করি। + +সেই রিপ্রেজেন্টেশনগুলো একসাথে মিলানো হয়। লস ফাংশনটি এমনভাবে সংজ্ঞায়িত করা হয়েছে যাতে একটি জোড়ার (যেমন I এবং T) ভেক্টরের মধ্যে কসমাইন সাদৃশ্য সর্বাধিক হয় এবং অন্য সব জোড়ার মধ্যে কসমাইন সাদৃশ্য সর্বনিম্ন হয়। এই কারণেই এই পদ্ধতিকে **কনট্রাস্টিভ** বলা হয়। + +CLIP মডেল/লাইব্রেরি [OpenAI GitHub](https://github.com/openai/CLIP) থেকে পাওয়া যায়। এই পদ্ধতি [এই ব্লগ পোস্ট](https://openai.com/blog/clip/) এবং আরও বিস্তারিতভাবে [এই পেপার](https://arxiv.org/pdf/2103.00020.pdf)-এ বর্ণিত হয়েছে। + +একবার এই মডেলটি প্রি-ট্রেনিং সম্পন্ন হলে, আমরা এটিকে একটি ব্যাচ ইমেজ এবং একটি ব্যাচ টেক্সট প্রম্পট দিতে পারি, এবং এটি আমাদের একটি টেনসর প্রদান করবে যার মধ্যে সম্ভাবনার মান থাকবে। CLIP বিভিন্ন কাজের জন্য ব্যবহার করা যেতে পারে: + +**ইমেজ ক্লাসিফিকেশন** + +ধরা যাক আমাদের ইমেজগুলোকে বিড়াল, কুকুর এবং মানুষের মধ্যে শ্রেণীবদ্ধ করতে হবে। এই ক্ষেত্রে, আমরা মডেলটিকে একটি ইমেজ এবং একটি সিরিজ টেক্সট প্রম্পট দিতে পারি: "*একটি বিড়ালের ছবি*", "*একটি কুকুরের ছবি*", "*একটি মানুষের ছবি*"। ফলাফল হিসেবে প্রাপ্ত ৩টি সম্ভাবনার ভেক্টরে আমরা সর্বোচ্চ মানের ইনডেক্সটি নির্বাচন করব। + +![ইমেজ ক্লাসিফিকেশনের জন্য CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bn.png) + +> *ছবি [এই ব্লগ পোস্ট](https://openai.com/blog/clip/) থেকে নেওয়া হয়েছে* + +**টেক্সট-ভিত্তিক ইমেজ অনুসন্ধান** + +আমরা বিপরীত কাজও করতে পারি। যদি আমাদের কাছে একটি ইমেজের সংগ্রহ থাকে, আমরা এই সংগ্রহটি মডেলে দিতে পারি এবং একটি টেক্সট প্রম্পট দিতে পারি - এটি আমাদের সেই ইমেজটি প্রদান করবে যা প্রম্পটের সাথে সবচেয়ে বেশি সঙ্গতিপূর্ণ। + +## ✍️ উদাহরণ: [ইমেজ ক্লাসিফিকেশন এবং ইমেজ অনুসন্ধানের জন্য CLIP ব্যবহার](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP-এর কার্যকারিতা দেখতে [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) নোটবুকটি খুলুন। + +## VQGAN+CLIP দিয়ে ইমেজ তৈরি + +CLIP টেক্সট প্রম্পট থেকে **ইমেজ তৈরি** করার জন্যও ব্যবহার করা যেতে পারে। এটি করতে হলে আমাদের একটি **জেনারেটর মডেল** প্রয়োজন যা কিছু ভেক্টর ইনপুটের ভিত্তিতে ইমেজ তৈরি করতে সক্ষম। এরকম একটি মডেল হলো [VQGAN](https://compvis.github.io/taming-transformers/) (ভেক্টর-কোয়ান্টাইজড GAN)। + +VQGAN-এর প্রধান ধারণাগুলো যা সাধারণ [GAN](../../4-ComputerVision/10-GANs/README.md) থেকে আলাদা: +* অটো-রিগ্রেসিভ ট্রান্সফর্মার আর্কিটেকচার ব্যবহার করে একটি সিকোয়েন্স তৈরি করা যা প্রসঙ্গ-সমৃদ্ধ ভিজ্যুয়াল অংশ তৈরি করে যা ইমেজ গঠন করে। এই ভিজ্যুয়াল অংশগুলো [CNN](../../4-ComputerVision/07-ConvNets/README.md) দ্বারা শেখা হয়। +* সাব-ইমেজ ডিসক্রিমিনেটর ব্যবহার করে ইমেজের অংশগুলো "বাস্তব" বা "নকল" কিনা তা সনাক্ত করা (সাধারণ GAN-এর "সব-বা-কিছুই নয়" পদ্ধতির বিপরীতে)। + +VQGAN সম্পর্কে আরও জানতে [Taming Transformers](https://compvis.github.io/taming-transformers/) ওয়েবসাইট দেখুন। + +VQGAN এবং সাধারণ GAN-এর মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য হলো, সাধারণ GAN যেকোনো ইনপুট ভেক্টর থেকে একটি ভালো ইমেজ তৈরি করতে পারে, কিন্তু VQGAN সম্ভবত একটি অসঙ্গতিপূর্ণ ইমেজ তৈরি করবে। তাই, ইমেজ তৈরির প্রক্রিয়াকে আরও নির্দেশনা দিতে হবে, এবং এটি CLIP ব্যবহার করে করা যেতে পারে। + +![VQGAN+CLIP আর্কিটেকচার](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bn.png) + +টেক্সট প্রম্পটের সাথে সঙ্গতিপূর্ণ একটি ইমেজ তৈরি করতে, আমরা কিছু র্যান্ডম এনকোডিং ভেক্টর দিয়ে শুরু করি যা VQGAN-এর মাধ্যমে একটি ইমেজ তৈরি করে। তারপর CLIP ব্যবহার করে একটি লস ফাংশন তৈরি করা হয় যা দেখায় ইমেজটি টেক্সট প্রম্পটের সাথে কতটা সঙ্গতিপূর্ণ। এরপর লক্ষ্য হলো এই লসকে কমানো, ব্যাক প্রোপাগেশন ব্যবহার করে ইনপুট ভেক্টর প্যারামিটারগুলো সামঞ্জস্য করা। + +VQGAN+CLIP বাস্তবায়নের জন্য একটি চমৎকার লাইব্রেরি হলো [Pixray](http://github.com/pixray/pixray) + +![Pixray দ্বারা তৈরি ছবি](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.bn.png) | ![Pixray দ্বারা তৈরি ছবি](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bn.png) | ![Pixray দ্বারা তৈরি ছবি](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bn.png) +----|----|---- +প্রম্পট থেকে তৈরি ছবি *একটি বই সহ তরুণ পুরুষ সাহিত্য শিক্ষকের একটি ক্লোজআপ জলরঙের প্রতিকৃতি* | প্রম্পট থেকে তৈরি ছবি *একটি কম্পিউটার সহ তরুণ নারী কম্পিউটার বিজ্ঞান শিক্ষকের একটি ক্লোজআপ তেল প্রতিকৃতি* | প্রম্পট থেকে তৈরি ছবি *একটি ব্ল্যাকবোর্ডের সামনে বৃদ্ধ পুরুষ গণিত শিক্ষকের একটি ক্লোজআপ তেল প্রতিকৃতি* + +> **Artificial Teachers** সংগ্রহ থেকে ছবি, [Dmitry Soshnikov](http://soshnikov.com) দ্বারা + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E হলো GPT-3-এর একটি সংস্করণ যা প্রম্পট থেকে ইমেজ তৈরি করতে প্রশিক্ষিত। এটি ১২-বিলিয়ন প্যারামিটার দিয়ে প্রশিক্ষিত হয়েছে। + +CLIP-এর বিপরীতে, DALL-E টেক্সট এবং ইমেজ উভয়কেই একটি একক টোকেন স্ট্রিম হিসেবে গ্রহণ করে। তাই, একাধিক প্রম্পট থেকে টেক্সটের ভিত্তিতে ইমেজ তৈরি করা যায়। + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 এবং 2-এর প্রধান পার্থক্য হলো, এটি আরও বাস্তবসম্মত ইমেজ এবং শিল্পকর্ম তৈরি করে। + +DALL-E দিয়ে তৈরি ইমেজের উদাহরণ: +![Pixray দ্বারা তৈরি ছবি](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.bn.png) | ![Pixray দ্বারা তৈরি ছবি](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.bn.png) | ![Pixray দ্বারা তৈরি ছবি](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.bn.png) +----|----|---- +প্রম্পট থেকে তৈরি ছবি *একটি বই সহ তরুণ পুরুষ সাহিত্য শিক্ষকের একটি ক্লোজআপ জলরঙের প্রতিকৃতি* | প্রম্পট থেকে তৈরি ছবি *একটি কম্পিউটার সহ তরুণ নারী কম্পিউটার বিজ্ঞান শিক্ষকের একটি ক্লোজআপ তেল প্রতিকৃতি* | প্রম্পট থেকে তৈরি ছবি *একটি ব্ল্যাকবোর্ডের সামনে বৃদ্ধ পুরুষ গণিত শিক্ষকের একটি ক্লোজআপ তেল প্রতিকৃতি* + +## রেফারেন্স + +* VQGAN পেপার: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP পেপার: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/sketchnotes/LICENSE.md b/translations/bn/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..1b90444f --- /dev/null +++ b/translations/bn/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,143 @@ + +অ্যাট্রিবিউশন-শেয়ারঅলাইক ৪.০ ইন্টারন্যাশনাল + +======================================================================= + +ক্রিয়েটিভ কমন্স কর্পোরেশন ("ক্রিয়েটিভ কমন্স") একটি আইন সংস্থা নয় এবং আইনি সেবা বা আইনি পরামর্শ প্রদান করে না। ক্রিয়েটিভ কমন্স পাবলিক লাইসেন্স বিতরণ আইনজীবী-গ্রাহক বা অন্য কোনো সম্পর্ক তৈরি করে না। ক্রিয়েটিভ কমন্স তার লাইসেন্স এবং সংশ্লিষ্ট তথ্য "যেমন আছে" ভিত্তিতে উপলব্ধ করে। ক্রিয়েটিভ কমন্স তার লাইসেন্স, তাদের শর্তাবলীর অধীনে লাইসেন্সকৃত কোনো উপাদান, বা সংশ্লিষ্ট তথ্য সম্পর্কে কোনো গ্যারান্টি দেয় না। ক্রিয়েটিভ কমন্স তাদের ব্যবহারের ফলে সৃষ্ট ক্ষতির জন্য সমস্ত দায় অস্বীকার করে যতদূর সম্ভব। + +ক্রিয়েটিভ কমন্স পাবলিক লাইসেন্স ব্যবহার করা + +ক্রিয়েটিভ কমন্স পাবলিক লাইসেন্স একটি মানক শর্তাবলী প্রদান করে যা সৃষ্টিকর্তা এবং অন্যান্য অধিকারধারীরা তাদের মৌলিক সৃষ্টিকর্ম এবং কপিরাইট এবং নীচে নির্দিষ্ট কিছু অধিকার সাপেক্ষে অন্যান্য উপাদান ভাগ করার জন্য ব্যবহার করতে পারেন। নিম্নলিখিত বিবেচনাগুলি শুধুমাত্র তথ্যের উদ্দেশ্যে এবং সম্পূর্ণ নয় এবং আমাদের লাইসেন্সের অংশ নয়। + + লাইসেন্সদাতাদের জন্য বিবেচনা: আমাদের পাবলিক লাইসেন্সগুলি + তাদের দ্বারা ব্যবহারের জন্য উদ্দেশ্যপ্রণোদিত যারা + কপিরাইট এবং নির্দিষ্ট অন্যান্য অধিকার দ্বারা সীমাবদ্ধ + উপাদান ব্যবহারের জন্য জনসাধারণকে অনুমতি দিতে + অনুমোদিত। আমাদের লাইসেন্সগুলি অপরিবর্তনীয়। + লাইসেন্সদাতাদের তাদের নির্বাচিত লাইসেন্সের শর্তাবলী + পড়া এবং বুঝা উচিত এটি প্রয়োগ করার আগে। + লাইসেন্সদাতাদের সমস্ত প্রয়োজনীয় অধিকার সুরক্ষিত করা + উচিত আমাদের লাইসেন্স প্রয়োগ করার আগে যাতে জনসাধারণ + প্রত্যাশিতভাবে উপাদান পুনরায় ব্যবহার করতে পারে। + লাইসেন্সদাতাদের স্পষ্টভাবে চিহ্নিত করা উচিত যে কোনো + উপাদান যা লাইসেন্সের অধীন নয়। এর মধ্যে অন্তর্ভুক্ত + অন্যান্য CC-লাইসেন্সকৃত উপাদান, বা কপিরাইটের ব্যতিক্রম + বা সীমাবদ্ধতার অধীনে ব্যবহৃত উপাদান। লাইসেন্সদাতাদের + জন্য আরও বিবেচনা: + wiki.creativecommons.org/Considerations_for_licensors + + জনসাধারণের জন্য বিবেচনা: আমাদের পাবলিক লাইসেন্সগুলির + একটি ব্যবহার করে, একটি লাইসেন্সদাতা নির্দিষ্ট শর্তাবলীর + অধীনে লাইসেন্সকৃত উপাদান ব্যবহারের জন্য জনসাধারণকে + অনুমতি প্রদান করে। যদি লাইসেন্সদাতার অনুমতি কোনো কারণে + প্রয়োজনীয় না হয়—যেমন, কপিরাইটের কোনো প্রযোজ্য + ব্যতিক্রম বা সীমাবদ্ধতার কারণে—তাহলে সেই ব্যবহার + লাইসেন্স দ্বারা নিয়ন্ত্রিত নয়। আমাদের লাইসেন্সগুলি + শুধুমাত্র কপিরাইট এবং নির্দিষ্ট অন্যান্য অধিকারগুলির + অধীনে অনুমতি প্রদান করে যা একটি লাইসেন্সদাতার + অনুমোদন দেওয়ার ক্ষমতা রয়েছে। লাইসেন্সকৃত উপাদানের + ব্যবহার এখনও অন্যান্য কারণে সীমাবদ্ধ হতে পারে, + যার মধ্যে অন্তর্ভুক্ত অন্যদের কপিরাইট বা উপাদানের + উপর অন্যান্য অধিকার। একটি লাইসেন্সদাতা বিশেষ অনুরোধ + করতে পারে, যেমন সমস্ত পরিবর্তন চিহ্নিত বা বর্ণনা করার + জন্য অনুরোধ করা। যদিও আমাদের লাইসেন্সগুলির দ্বারা + প্রয়োজনীয় নয়, আপনি যুক্তিসঙ্গত হলে সেই অনুরোধগুলি + সম্মান করতে উৎসাহিত। জনসাধারণের জন্য আরও বিবেচনা: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-শেয়ারঅলাইক ৪.০ ইন্টারন্যাশনাল পাবলিক লাইসেন্স + +লাইসেন্সকৃত অধিকার (নিচে সংজ্ঞায়িত) প্রয়োগ করে, আপনি এই ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-শেয়ারঅলাইক ৪.০ ইন্টারন্যাশনাল পাবলিক লাইসেন্স ("পাবলিক লাইসেন্স") এর শর্তাবলীর সাথে সম্মত হন এবং বাধ্য হন। এই পাবলিক লাইসেন্সকে চুক্তি হিসেবে ব্যাখ্যা করা হলে, আপনি এই শর্তাবলীর গ্রহণের বিনিময়ে লাইসেন্সকৃত অধিকার প্রদান করা হয়, এবং লাইসেন্সদাতা এই শর্তাবলীর অধীনে লাইসেন্সকৃত উপাদান উপলব্ধ করার মাধ্যমে প্রাপ্ত সুবিধার বিনিময়ে আপনাকে এই অধিকার প্রদান করে। + + +ধারা ১ -- সংজ্ঞা। + + ক. অভিযোজিত উপাদান বলতে বোঝায় কপিরাইট এবং অনুরূপ অধিকার সাপেক্ষে উপাদান যা লাইসেন্সকৃত উপাদান থেকে উদ্ভূত বা ভিত্তিক এবং যেখানে লাইসেন্সকৃত উপাদান অনুবাদ, পরিবর্তন, সাজানো, রূপান্তরিত বা অন্যভাবে সংশোধিত হয় এমনভাবে যা লাইসেন্সদাতার অধীনে কপিরাইট এবং অনুরূপ অধিকার প্রয়োজন। এই পাবলিক লাইসেন্সের উদ্দেশ্যে, যেখানে লাইসেন্সকৃত উপাদান একটি সঙ্গীতকর্ম, পরিবেশনা বা শব্দ রেকর্ডিং, অভিযোজিত উপাদান সর্বদা তৈরি হয় যেখানে লাইসেন্সকৃত উপাদান একটি চলমান চিত্রের সাথে সময়মতো সম্পর্কিত হয়। + + খ. অভিযোজকের লাইসেন্স বলতে বোঝায় আপনি আপনার কপিরাইট এবং অনুরূপ অধিকার আপনার অবদান অভিযোজিত উপাদানে এই পাবলিক লাইসেন্সের শর্তাবলীর সাথে প্রয়োগ করেন। + + গ. BY-SA সামঞ্জস্যপূর্ণ লাইসেন্স বলতে বোঝায় একটি লাইসেন্স যা creativecommons.org/compatiblelicenses এ তালিকাভুক্ত, ক্রিয়েটিভ কমন্স দ্বারা এই পাবলিক লাইসেন্সের সমতুল্য হিসেবে অনুমোদিত। + + ঘ. কপিরাইট এবং অনুরূপ অধিকার বলতে বোঝায় কপিরাইট এবং/অথবা কপিরাইটের সাথে ঘনিষ্ঠভাবে সম্পর্কিত অনুরূপ অধিকার, যার মধ্যে অন্তর্ভুক্ত, কিন্তু সীমাবদ্ধ নয়, পরিবেশনা, সম্প্রচার, শব্দ রেকর্ডিং এবং Sui Generis ডাটাবেস অধিকার, অধিকারগুলি কীভাবে লেবেল করা হয়েছে বা শ্রেণীবদ্ধ করা হয়েছে তা বিবেচনা না করে। এই পাবলিক লাইসেন্সের উদ্দেশ্যে, ধারা ২(খ)(১)-(২) এ নির্দিষ্ট অধিকারগুলি কপিরাইট এবং অনুরূপ অধিকার নয়। + + ঙ. কার্যকর প্রযুক্তিগত ব্যবস্থা বলতে বোঝায় সেই ব্যবস্থা যা, যথাযথ কর্তৃপক্ষের অনুপস্থিতিতে, ২০ ডিসেম্বর, ১৯৯৬ তারিখে গৃহীত WIPO কপিরাইট চুক্তির ধারা ১১ এর অধীনে বাধ্যবাধকতা পূরণকারী আইন এবং/অথবা অনুরূপ আন্তর্জাতিক চুক্তির অধীনে বাইপাস করা যাবে না। + + চ. ব্যতিক্রম এবং সীমাবদ্ধতা বলতে বোঝায় ন্যায্য ব্যবহার, ন্যায্য চুক্তি, এবং/অথবা কপিরাইট এবং অনুরূপ অধিকারগুলিতে আপনার ব্যবহারের জন্য প্রযোজ্য অন্য কোনো ব্যতিক্রম বা সীমাবদ্ধতা। + + ছ. লাইসেন্স উপাদান বলতে বোঝায় ক্রিয়েটিভ কমন্স পাবলিক লাইসেন্সের নামের তালিকাভুক্ত লাইসেন্স বৈশিষ্ট্য। এই পাবলিক লাইসেন্সের লাইসেন্স উপাদান হল Attribution এবং ShareAlike। + + জ. লাইসেন্সকৃত উপাদান বলতে বোঝায় শিল্পকর্ম বা সাহিত্যকর্ম, ডাটাবেস, বা অন্য উপাদান যা লাইসেন্সদাতা এই পাবলিক লাইসেন্স প্রয়োগ করেছে। + + ঝ. লাইসেন্সকৃত অধিকার বলতে বোঝায় এই পাবলিক লাইসেন্সের শর্তাবলীর অধীনে আপনাকে প্রদত্ত অধিকারগুলি, যা আপনার লাইসেন্সকৃত উপাদানের ব্যবহারের জন্য প্রযোজ্য সমস্ত কপিরাইট এবং অনুরূপ অধিকারগুলিতে সীমাবদ্ধ এবং যা লাইসেন্সদাতার লাইসেন্স করার ক্ষমতা রয়েছে। + + ঞ. লাইসেন্সদাতা বলতে বোঝায় ব্যক্তি(গুলি) বা সত্তা(গুলি) যারা এই পাবলিক লাইসেন্সের অধীনে অধিকার প্রদান করছে। + + ট. ভাগ করা বলতে বোঝায় উপাদান জনসাধারণের কাছে এমন কোনো মাধ্যম বা প্রক্রিয়ার মাধ্যমে প্রদান করা যা লাইসেন্সকৃত অধিকারগুলির অধীনে অনুমতি প্রয়োজন, যেমন পুনরুৎপাদন, জন প্রদর্শন, জন পরিবেশনা, বিতরণ, প্রচার, যোগাযোগ, বা আমদানি, এবং উপাদান জনসাধারণের কাছে উপলব্ধ করা যাতে জনসাধারণের সদস্যরা তাদের পছন্দ অনুযায়ী একটি স্থান এবং সময় থেকে উপাদান অ্যাক্সেস করতে পারে। + + ঠ. Sui Generis ডাটাবেস অধিকার বলতে বোঝায় কপিরাইট ছাড়া অন্য অধিকার যা ১১ মার্চ, ১৯৯৬ তারিখে ইউরোপীয় সংসদ এবং কাউন্সিলের ডিরেক্টিভ ৯৬/৯/EC এর অধীনে ডাটাবেসের আইনি সুরক্ষার জন্য, সংশোধিত এবং/অথবা সফল, এবং বিশ্বব্যাপী অন্য সমতুল্য অধিকার। + + ড. আপনি বলতে বোঝায় ব্যক্তি বা সত্তা যারা এই পাবলিক লাইসেন্সের অধীনে লাইসেন্সকৃত অধিকার প্রয়োগ করছে। আপনার এর একটি সংশ্লিষ্ট অর্থ রয়েছে। +অধিকারসমূহ, তারপর যে ডাটাবেসে আপনার Sui Generis Database Rights রয়েছে (কিন্তু এর পৃথক বিষয়বস্তু নয়) তা Adapted Material হিসেবে বিবেচিত হবে, + +যা Section 3(b)-এর উদ্দেশ্যেও প্রযোজ্য; এবং +c. আপনি যদি ডাটাবেসের সমস্ত বা একটি উল্লেখযোগ্য অংশ শেয়ার করেন, তবে আপনাকে Section 3(a)-এর শর্তাবলী মেনে চলতে হবে। + +সন্দেহ এড়ানোর জন্য, এই Section 4 আপনার এই Public License-এর অধীনে থাকা বাধ্যবাধকতাগুলিকে সম্পূরক করে এবং প্রতিস্থাপন করে না, যেখানে Licensed Rights-এ অন্যান্য Copyright এবং Similar Rights অন্তর্ভুক্ত রয়েছে। + +### Section 5 -- ওয়ারেন্টির অস্বীকৃতি এবং দায়বদ্ধতার সীমাবদ্ধতা। + +a. যদি Licensor আলাদাভাবে অন্য কোনো প্রতিশ্রুতি না দেয়, তবে যতদূর সম্ভব, Licensor Licensed Material "যেমন আছে" এবং "যেমন পাওয়া যায়" ভিত্তিতে প্রদান করে এবং Licensed Material সম্পর্কিত কোনো ধরনের উপস্থাপনা বা ওয়ারেন্টি দেয় না, তা প্রকাশ্য, অন্তর্নিহিত, আইনগত বা অন্য কোনোভাবে হোক। এর মধ্যে অন্তর্ভুক্ত, কিন্তু সীমাবদ্ধ নয়, শিরোনামের ওয়ারেন্টি, বিক্রয়যোগ্যতা, নির্দিষ্ট উদ্দেশ্যে উপযুক্ততা, অ-লঙ্ঘন, গোপন বা অন্যান্য ত্রুটির অনুপস্থিতি, সঠিকতা, বা ত্রুটির উপস্থিতি বা অনুপস্থিতি, তা জানা থাকুক বা আবিষ্কারযোগ্য হোক। যেখানে ওয়ারেন্টির অস্বীকৃতি সম্পূর্ণ বা আংশিকভাবে অনুমোদিত নয়, সেখানে এই অস্বীকৃতি আপনার ক্ষেত্রে প্রযোজ্য নাও হতে পারে। + +b. যতদূর সম্ভব, কোনো অবস্থাতেই Licensor আপনার প্রতি কোনো আইনি তত্ত্বের (যেমন, সীমাবদ্ধ নয়, অবহেলা) ভিত্তিতে বা অন্য কোনোভাবে এই Public License বা Licensed Material ব্যবহারের কারণে কোনো সরাসরি, বিশেষ, পরোক্ষ, আকস্মিক, ফলস্বরূপ, শাস্তিমূলক, উদাহরণস্বরূপ, বা অন্যান্য ক্ষতি, খরচ, ব্যয়, বা ক্ষতির জন্য দায়ী থাকবে না, এমনকি যদি Licensor এই ধরনের ক্ষতি, খরচ, ব্যয়, বা ক্ষতির সম্ভাবনা সম্পর্কে অবগত থাকে। যেখানে দায়বদ্ধতার সীমাবদ্ধতা সম্পূর্ণ বা আংশিকভাবে অনুমোদিত নয়, সেখানে এই সীমাবদ্ধতা আপনার ক্ষেত্রে প্রযোজ্য নাও হতে পারে। + +c. উপরের ওয়ারেন্টির অস্বীকৃতি এবং দায়বদ্ধতার সীমাবদ্ধতা এমনভাবে ব্যাখ্যা করা হবে যা, যতদূর সম্ভব, একটি সম্পূর্ণ অস্বীকৃতি এবং সমস্ত দায়বদ্ধতার পরিত্যাগের সাথে সবচেয়ে ঘনিষ্ঠভাবে মিলে যায়। + +### Section 6 -- মেয়াদ এবং সমাপ্তি। + +a. এই Public License এখানে লাইসেন্সকৃত Copyright এবং Similar Rights-এর মেয়াদের জন্য প্রযোজ্য। তবে, আপনি যদি এই Public License-এর শর্তাবলী মেনে চলতে ব্যর্থ হন, তবে এই Public License-এর অধীনে আপনার অধিকার স্বয়ংক্রিয়ভাবে বাতিল হয়ে যাবে। + +b. Section 6(a)-এর অধীনে Licensed Material ব্যবহারের আপনার অধিকার বাতিল হলে, তা পুনঃপ্রতিষ্ঠিত হবে: + +1. স্বয়ংক্রিয়ভাবে সেই তারিখে যখন লঙ্ঘন সংশোধন করা হয়, যদি তা আপনার লঙ্ঘন আবিষ্কারের ৩০ দিনের মধ্যে সংশোধন করা হয়; অথবা +2. Licensor-এর স্পষ্ট পুনঃপ্রতিষ্ঠার মাধ্যমে। + +সন্দেহ এড়ানোর জন্য, এই Section 6(b) Licensor-এর আপনার এই Public License লঙ্ঘনের জন্য প্রতিকার চাওয়ার অধিকারকে প্রভাবিত করে না। + +c. সন্দেহ এড়ানোর জন্য, Licensor আলাদাভাবে শর্তাবলী বা শর্তে Licensed Material প্রদান করতে পারে বা যে কোনো সময় Licensed Material বিতরণ বন্ধ করতে পারে; তবে, এটি এই Public License বাতিল করবে না। + +d. Sections 1, 5, 6, 7, এবং 8 এই Public License-এর সমাপ্তির পরেও কার্যকর থাকবে। + +### Section 7 -- অন্যান্য শর্তাবলী। + +a. Licensor আপনার দ্বারা যোগাযোগ করা অতিরিক্ত বা ভিন্ন শর্তাবলী দ্বারা আবদ্ধ হবে না যদি না তা স্পষ্টভাবে সম্মত হয়। + +b. এখানে উল্লিখিত নয় এমন Licensed Material সম্পর্কিত যে কোনো ব্যবস্থা, বোঝাপড়া, বা চুক্তি এই Public License-এর শর্তাবলী এবং শর্তাবলী থেকে পৃথক এবং স্বাধীন। + +### Section 8 -- ব্যাখ্যা। + +a. সন্দেহ এড়ানোর জন্য, এই Public License Licensed Material-এর যে কোনো ব্যবহারকে সীমিত, নিয়ন্ত্রিত, বা শর্তযুক্ত করে না যা এই Public License-এর অধীনে অনুমতি ছাড়াই আইনত করা যেতে পারে। + +b. যতদূর সম্ভব, যদি এই Public License-এর কোনো বিধান অকার্যকর বলে বিবেচিত হয়, তবে তা কার্যকর করার জন্য প্রয়োজনীয় সর্বনিম্ন পরিমাণে স্বয়ংক্রিয়ভাবে সংশোধিত হবে। যদি বিধানটি সংশোধন করা না যায়, তবে তা এই Public License থেকে বিচ্ছিন্ন করা হবে, বাকি শর্তাবলী এবং শর্তাবলীর কার্যকারিতা প্রভাবিত না করে। + +c. এই Public License-এর কোনো শর্ত বা শর্তাবলী মওকুফ করা হবে না এবং কোনো ব্যর্থতা সম্মত হবে না যদি না তা Licensor দ্বারা স্পষ্টভাবে সম্মত হয়। + +d. এই Public License-এ কিছুই Licensor বা আপনার ক্ষেত্রে প্রযোজ্য কোনো অধিকার বা প্রতিরক্ষা, যেমন কোনো বিচারব্যবস্থা বা কর্তৃপক্ষের আইনি প্রক্রিয়া থেকে সুরক্ষা, সীমিত বা পরিত্যাগ করার জন্য গৃহীত বা ব্যাখ্যা করা হবে না। + +======================================================================= + +Creative Commons তাদের Public License-এর পক্ষ নয়। তবুও, Creative Commons তাদের প্রকাশিত উপাদানে তাদের Public License প্রয়োগ করতে পারে এবং সেই ক্ষেত্রে "Licensor" হিসেবে বিবেচিত হবে। Creative Commons Public License-এর পাঠ্য CC0 Public Domain Dedication-এর অধীনে পাবলিক ডোমেইনে উৎসর্গ করা হয়েছে। Creative Commons-এর নীতিমালায় উল্লিখিত সীমিত উদ্দেশ্য ছাড়া, যেমন উপাদানটি Creative Commons Public License-এর অধীনে শেয়ার করা হয়েছে তা নির্দেশ করা বা অন্যথায় অনুমোদিত, Creative Commons তাদের ট্রেডমার্ক "Creative Commons" বা অন্য কোনো ট্রেডমার্ক বা লোগো ব্যবহার করার অনুমতি দেয় না, যদি না পূর্বে লিখিত সম্মতি প্রদান করা হয়। সন্দেহ এড়ানোর জন্য, এই অনুচ্ছেদটি Public License-এর অংশ নয়। + +Creative Commons-এর সাথে যোগাযোগ করা যেতে পারে creativecommons.org-এ। + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না। \ No newline at end of file diff --git a/translations/bn/lessons/sketchnotes/README.md b/translations/bn/lessons/sketchnotes/README.md new file mode 100644 index 00000000..7b7d1701 --- /dev/null +++ b/translations/bn/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +সমস্ত পাঠক্রমের স্কেচনোটগুলি এখান থেকে ডাউনলোড করা যেতে পারে। + +🎨 তৈরি করেছেন: টোমোমি ইমুরা (টুইটার: [@girlie_mac](https://twitter.com/girlie_mac), গিটহাব: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**অস্বীকৃতি**: +এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। এর মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না। \ No newline at end of file diff --git a/translations/br/README.md b/translations/br/README.md new file mode 100644 index 00000000..7f29727b --- /dev/null +++ b/translations/br/README.md @@ -0,0 +1,155 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# Inteligência Artificial para Iniciantes - Um Currículo + +|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI para Iniciantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Explore o mundo da **Inteligência Artificial** (IA) com nosso currículo de 12 semanas e 24 aulas! Ele inclui lições práticas, questionários e laboratórios. O currículo é voltado para iniciantes e aborda ferramentas como TensorFlow e PyTorch, além de ética em IA. + +## O que você vai aprender + +**[Mapa mental do curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +Neste currículo, você aprenderá: + +* Diferentes abordagens para Inteligência Artificial, incluindo a abordagem simbólica "tradicional" com **Representação de Conhecimento** e raciocínio ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Redes Neurais** e **Aprendizado Profundo**, que estão no centro da IA moderna. Vamos ilustrar os conceitos por trás desses tópicos importantes usando código em dois dos frameworks mais populares - [TensorFlow](http://Tensorflow.org) e [PyTorch](http://pytorch.org). +* **Arquiteturas Neurais** para trabalhar com imagens e texto. Vamos abordar modelos recentes, mas talvez não os mais avançados. +* Abordagens menos populares de IA, como **Algoritmos Genéticos** e **Sistemas Multiagentes**. + +O que não será abordado neste currículo: + +> [Encontre todos os recursos adicionais para este curso em nossa coleção no Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Casos de uso de **IA nos Negócios**. Considere fazer o curso [Introdução à IA para usuários de negócios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) no Microsoft Learn, ou o [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desenvolvido em cooperação com [INSEAD](https://www.insead.edu/). +* **Aprendizado de Máquina Clássico**, que está bem descrito em nosso [Currículo de Aprendizado de Máquina para Iniciantes](http://github.com/Microsoft/ML-for-Beginners). +* Aplicações práticas de IA construídas usando **[Serviços Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para isso, recomendamos começar com os módulos do Microsoft Learn para [visão](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [processamento de linguagem natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa com o Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** e outros. +* Frameworks específicos de **ML na Nuvem**, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) ou [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considere usar os caminhos de aprendizado [Construir e operar soluções de aprendizado de máquina com o Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) e [Construir e operar soluções de aprendizado de máquina com o Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversacional** e **Chatbots**. Há um caminho de aprendizado separado [Criar soluções de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), e você também pode consultar [este post no blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para mais detalhes. +* **Matemática Avançada** por trás do aprendizado profundo. Para isso, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio e Aaron Courville, que também está disponível online em [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Para uma introdução mais leve aos tópicos de _IA na Nuvem_, você pode considerar fazer o caminho de aprendizado [Introdução à inteligência artificial no Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Conteúdo + +| | Link da Aula | PyTorch/Keras/TensorFlow | Laboratório | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuração do Curso](./lessons/0-course-setup/setup.md) | [Configure seu Ambiente de Desenvolvimento](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introdução à IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introdução e História da IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbólica** | +| 02 | [Representação de Conhecimento e Sistemas Especialistas](./lessons/2-Symbolic/README.md) | [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Grafo de Conceitos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introdução às Redes Neurais**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratório](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptron Multicamadas e Criando nosso Próprio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratório](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Introdução aos Frameworks (PyTorch/TensorFlow) e Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratório](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Visão Computacional**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explore Visão Computacional no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introdução à Visão Computacional. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratório](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Redes Neurais Convolucionais](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquiteturas de CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Redes Pré-treinadas e Transferência de Aprendizado](./lessons/4-ComputerVision/08-TransferLearning/README.md) e [Dicas de Treinamento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencoders e VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Redes Adversárias Generativas e Transferência de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Detecção de Objetos](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Segmentação Semântica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**Processamento de Linguagem Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explore o Processamento de Linguagem Natural no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Representação de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Embeddings Semânticos de Palavras. Word2Vec e GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modelagem de Linguagem. Treinando seus próprios embeddings](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Redes Neurais Recorrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Redes Recorrentes Generativas](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Reconhecimento de Entidades Nomeadas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Modelos de Linguagem de Grande Escala, Programação com Prompt e Tarefas de Poucos Exemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Outras Técnicas de IA** || | +| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Aprendizado por Reforço Profundo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemas Multiagentes](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Ética em IA** | | | +| 24 | [Ética em IA e IA Responsável](./lessons/7-Ethics/README.md) | [Microsoft Learn: Princípios de IA Responsável](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extras** | | | +| 25 | [Redes Multimodais, CLIP e VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Cada lição contém + +* Material de leitura prévia +* Notebooks Jupyter executáveis, que geralmente são específicos para o framework (**PyTorch** ou **TensorFlow**). O notebook executável também contém muito material teórico, então, para entender o tópico, é necessário passar por pelo menos uma versão do notebook (seja PyTorch ou TensorFlow). +* **Labs** disponíveis para alguns tópicos, que oferecem a oportunidade de aplicar o material aprendido a um problema específico. +* Algumas seções contêm links para módulos do [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que abordam tópicos relacionados. + +## Começando + +- Criamos uma [lição de configuração](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) para ajudá-lo a configurar seu ambiente de desenvolvimento. - Para educadores, criamos uma [lição de configuração de currículo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) também! +- Como [Executar o código no VSCode ou em um Codespace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Siga estes passos: + +Faça um Fork do Repositório: Clique no botão "Fork" no canto superior direito desta página. + +Clone o Repositório: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Não se esqueça de dar uma estrela (🌟) neste repositório para encontrá-lo mais facilmente depois. + +## Conheça outros Aprendizes + +Junte-se ao nosso [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conhecer e se conectar com outros aprendizes que estão fazendo este curso e obter suporte. + +Se você tiver feedback sobre o produto ou dúvidas enquanto desenvolve, visite nosso [Fórum de Desenvolvedores do Azure AI Foundry](https://aka.ms/foundry/forum) + +## Questionários +> **Uma observação sobre os questionários**: Todos os questionários estão contidos na pasta Quiz-app em etc\quiz-app. Eles estão vinculados dentro das lições. O aplicativo de questionários pode ser executado localmente ou implantado no Azure; siga as instruções na pasta `quiz-app`. Eles estão sendo localizados gradualmente. +## Ajuda Necessária + +Você tem sugestões ou encontrou erros de ortografia ou código? Abra uma issue ou crie um pull request. + +## Agradecimentos Especiais + +* **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editora:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustradora de Sketchnotes:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Criadora do Quiz:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contribuidores Principais:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Outros Currículos + +Nossa equipe produz outros currículos! Confira: + +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Agentic use](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/SECURITY.md b/translations/br/SECURITY.md new file mode 100644 index 00000000..1d6728d6 --- /dev/null +++ b/translations/br/SECURITY.md @@ -0,0 +1,49 @@ + +## Segurança + +A Microsoft leva a segurança de seus produtos e serviços de software muito a sério, incluindo todos os repositórios de código-fonte gerenciados por meio de nossas organizações no GitHub, que incluem [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) e [nossas organizações no GitHub](https://opensource.microsoft.com/). + +Se você acredita ter encontrado uma vulnerabilidade de segurança em qualquer repositório de propriedade da Microsoft que atenda à [definição de vulnerabilidade de segurança da Microsoft](https://aka.ms/opensource/security/definition), por favor, informe-nos conforme descrito abaixo. + +## Relatando Problemas de Segurança + +**Por favor, não relate vulnerabilidades de segurança por meio de issues públicas no GitHub.** + +Em vez disso, informe-as ao Microsoft Security Response Center (MSRC) em [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Se preferir enviar sem fazer login, envie um e-mail para [secure@microsoft.com](mailto:secure@microsoft.com). Se possível, criptografe sua mensagem com nossa chave PGP; faça o download na [página de Chave PGP do Microsoft Security Response Center](https://aka.ms/opensource/security/pgpkey). + +Você deve receber uma resposta dentro de 24 horas. Se, por algum motivo, não receber, entre em contato novamente por e-mail para garantir que recebemos sua mensagem original. Informações adicionais podem ser encontradas em [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Inclua as informações solicitadas abaixo (o máximo que puder fornecer) para nos ajudar a entender melhor a natureza e o alcance do possível problema: + + * Tipo de problema (por exemplo, buffer overflow, SQL injection, cross-site scripting, etc.) + * Caminhos completos dos arquivos de código-fonte relacionados à manifestação do problema + * A localização do código-fonte afetado (tag/branch/commit ou URL direto) + * Qualquer configuração especial necessária para reproduzir o problema + * Instruções passo a passo para reproduzir o problema + * Código de prova de conceito ou exploit (se possível) + * Impacto do problema, incluindo como um atacante poderia explorar o problema + +Essas informações nos ajudarão a priorizar seu relatório mais rapidamente. + +Se você estiver relatando para um programa de recompensa por bugs, relatórios mais completos podem contribuir para uma recompensa maior. Visite nossa página do [Programa de Recompensa por Bugs da Microsoft](https://aka.ms/opensource/security/bounty) para mais detalhes sobre nossos programas ativos. + +## Idiomas Preferidos + +Preferimos que todas as comunicações sejam feitas em inglês. + +## Política + +A Microsoft segue o princípio de [Divulgação Coordenada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/etc/CODE_OF_CONDUCT.md b/translations/br/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..221be629 --- /dev/null +++ b/translations/br/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Código de Conduta de Código Aberto da Microsoft + +Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Recursos: + +- [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [FAQ do Código de Conduta da Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) para dúvidas ou preocupações + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/etc/CONTRIBUTING.md b/translations/br/etc/CONTRIBUTING.md new file mode 100644 index 00000000..95adf2f9 --- /dev/null +++ b/translations/br/etc/CONTRIBUTING.md @@ -0,0 +1,31 @@ + +# Contribuindo + +Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Acordo de Licença de Contribuidor (CLA), declarando que você tem o direito de, e realmente concede a nós, os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com. + +Ao enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR apropriadamente (por exemplo, com etiqueta ou comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que utilizam nosso CLA. + +Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). +Para mais informações, veja as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) +ou entre em contato pelo e-mail [opencode@microsoft.com](mailto:opencode@microsoft.com) para quaisquer dúvidas ou comentários adicionais. + +# Procurando Contribuições + +Atualmente, estamos buscando ativamente contribuições nos seguintes tópicos: + +- [ ] Escrever seção sobre Aprendizado por Reforço Profundo +- [ ] Melhorar seção + notebook sobre Detecção de Objetos +- [ ] PyTorch Lightning (para [esta seção](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Escrever seção + exemplos sobre Reconhecimento de Entidades Nomeadas +- [ ] Criar exemplos para treinar nossos próprios embeddings para [esta seção](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/etc/Mindmap.md b/translations/br/etc/Mindmap.md new file mode 100644 index 00000000..6174dfe0 --- /dev/null +++ b/translations/br/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# IA + +## [Introdução à IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definição de IA + - História da IA + - Abordagens para IA + - Top-down/Simbólica + - Bottom-up/Neural + - Evolutiva + - Sinergética / IA Emergente + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Representação de Conhecimento + - [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologias](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Web Semântica + +## [Redes Neurais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Redes Multicamadas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introdução a Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Visão Computacional](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - No MS Learn + - [Fundamentos de IA: Explore Visão Computacional](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Visão Computacional com PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Visão Computacional com TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introdução à Visão Computacional. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Redes Convolucionais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arquiteturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transferência de Aprendizado](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Dicas de Treinamento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoders e VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Redes Adversárias Generativas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transferência de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detecção de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentação](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Processamento de Linguagem Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - No MS Learn + - [Fundamentos de IA: Explore PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PLN com PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [PLN com TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Representação de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Embeddings Semânticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelagem de Linguagem](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Redes Neurais Recorrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Redes Recorrentes Generativas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers e BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Reconhecimento de Entidades Nomeadas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Geração de Texto e GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## Outras Técnicas + - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Aprendizado por Reforço Profundo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemas Multiagentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Ética em IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn sobre IA Responsável](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Extras + - [Redes Multimodais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/etc/SUPPORT.md b/translations/br/etc/SUPPORT.md new file mode 100644 index 00000000..de55b6cb --- /dev/null +++ b/translations/br/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Suporte + +## Como registrar problemas e obter ajuda + +Este projeto utiliza o GitHub Issues para rastrear bugs e solicitações de recursos. Por favor, pesquise os problemas existentes antes de registrar novos, para evitar duplicações. Para novos problemas, registre seu bug ou solicitação de recurso como um novo Issue. + +Para obter ajuda e tirar dúvidas sobre o uso deste projeto, utilize os Fóruns de Discussão. + +## Política de Suporte da Microsoft + +O suporte para este projeto é limitado aos recursos listados acima. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/etc/TRANSLATIONS.md b/translations/br/etc/TRANSLATIONS.md new file mode 100644 index 00000000..33bfcf09 --- /dev/null +++ b/translations/br/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Contribua traduzindo as lições + +Agradecemos traduções para as lições deste currículo! + +## Diretrizes + +Existem pastas em cada pasta de lição e pasta de introdução de lição que contêm os arquivos markdown traduzidos. + +> Nota: por favor, não traduza nenhum código nos arquivos de exemplo de código; as únicas coisas a serem traduzidas são README, tarefas e os questionários. Obrigado! + +Os arquivos traduzidos devem seguir esta convenção de nomenclatura: + +**README._[language]_.md** + +onde _[language]_ é uma abreviação de dois caracteres do idioma seguindo o padrão ISO 639-1 (por exemplo, `README.es.md` para Espanhol e `README.nl.md` para Holandês). + +**assignment._[language]_.md** + +Semelhante aos Readme's, por favor, traduza também as tarefas. + +**Questionários** + +1. Adicione sua tradução ao quiz-app adicionando um arquivo aqui: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, com a convenção de nomenclatura adequada (en.json, fr.json). **Por favor, não localize as palavras 'true' ou 'false'. Obrigado!** + +2. Adicione o código do seu idioma ao menu suspenso no arquivo App.vue do quiz-app. + +3. Edite o [arquivo index.js de traduções](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) do quiz-app para adicionar seu idioma. + +4. Por fim, edite TODOS os links de questionários nos seus arquivos README.md traduzidos para apontar diretamente para o questionário traduzido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se torna https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**OBRIGADO** + +Agradecemos muito seus esforços! + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/etc/quiz-app/README.md b/translations/br/etc/quiz-app/README.md new file mode 100644 index 00000000..6f7993f6 --- /dev/null +++ b/translations/br/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# Questionários + +Esses questionários são os questionários pré e pós-aula para o currículo de IA em https://aka.ms/ai-beginners + +## Adicionando um conjunto de questionários traduzidos + +Adicione uma tradução de questionário criando estruturas de questionários correspondentes nas pastas `assets/translations`. Os questionários originais estão em `assets/translations/en`. Os questionários estão divididos em vários agrupamentos por lição. Certifique-se de alinhar a numeração com a seção correta do questionário. Há um total de 40 questionários neste currículo, começando a contagem em 0. + +Após editar as traduções, edite o arquivo index.js na pasta de tradução para importar todos os arquivos seguindo as convenções em `en`. + +Edite o arquivo `index.js` em `assets/translations` para importar os novos arquivos traduzidos. + +Depois, edite o menu suspenso em `App.vue` neste aplicativo para adicionar seu idioma. Combine a abreviação localizada com o nome da pasta do seu idioma. + +Por fim, edite todos os links dos questionários nas lições traduzidas, se existirem, para incluir essa localização como um parâmetro de consulta: `?loc=fr`, por exemplo. + +## Configuração do projeto + +``` +npm install +``` + +### Compila e recarrega automaticamente para desenvolvimento + +``` +npm run serve +``` + +### Compila e minimiza para produção + +``` +npm run build +``` + +### Verifica e corrige arquivos + +``` +npm run lint +``` + +### Personalizar configuração + +Veja [Referência de Configuração](https://cli.vuejs.org/config/). + +Créditos: Agradecimentos à versão original deste aplicativo de questionário: https://github.com/arpan45/simple-quiz-vue + +## Implantando no Azure + +Aqui está um guia passo a passo para ajudá-lo a começar: + +1. Faça um fork do repositório GitHub +Certifique-se de que o código do seu aplicativo web estático esteja no seu repositório GitHub. Faça um fork deste repositório. + +2. Crie um aplicativo web estático no Azure +- Crie uma [conta no Azure](http://azure.microsoft.com) +- Acesse o [portal do Azure](https://portal.azure.com) +- Clique em “Criar um recurso” e procure por “Aplicativo Web Estático”. +- Clique em “Criar”. + +3. Configure o aplicativo web estático +- Básico: + - Assinatura: Selecione sua assinatura do Azure. + - Grupo de Recursos: Crie um novo grupo de recursos ou use um existente. + - Nome: Forneça um nome para seu aplicativo web estático. + - Região: Escolha a região mais próxima dos seus usuários. + +- #### Detalhes de Implantação: + - Fonte: Selecione “GitHub”. + - Conta do GitHub: Autorize o Azure a acessar sua conta do GitHub. + - Organização: Selecione sua organização no GitHub. + - Repositório: Escolha o repositório que contém seu aplicativo web estático. + - Branch: Selecione o branch do qual deseja implantar. + +- #### Detalhes de Build: + - Presets de Build: Escolha o framework com o qual seu aplicativo foi construído (ex.: React, Angular, Vue, etc.). + - Localização do Aplicativo: Especifique a pasta que contém o código do seu aplicativo (ex.: / se estiver na raiz). + - Localização da API: Se você tiver uma API, especifique sua localização (opcional). + - Localização de Saída: Especifique a pasta onde a saída do build é gerada (ex.: build ou dist). + +4. Revisar e Criar +Revise suas configurações e clique em “Criar”. O Azure configurará os recursos necessários e criará um workflow do GitHub Actions no seu repositório. + +5. Workflow do GitHub Actions +O Azure criará automaticamente um arquivo de workflow do GitHub Actions no seu repositório (.github/workflows/azure-static-web-apps-.yml). Este workflow lidará com o processo de build e implantação. + +6. Monitorar a Implantação +Acesse a aba “Actions” no seu repositório GitHub. +Você deverá ver um workflow em execução. Este workflow irá construir e implantar seu aplicativo web estático no Azure. +Assim que o workflow for concluído, seu aplicativo estará ativo no URL fornecido pelo Azure. + +### Exemplo de Arquivo de Workflow + +Aqui está um exemplo de como o arquivo de workflow do GitHub Actions pode ser: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Recursos Adicionais +- [Documentação de Aplicativos Web Estáticos do Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentação do GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/0-course-setup/for-teachers.md b/translations/br/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..5184a0c3 --- /dev/null +++ b/translations/br/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Para Educadores + +Gostaria de usar este currículo em sua sala de aula? Fique à vontade! + +Na verdade, você pode utilizá-lo diretamente no GitHub, usando o GitHub Classroom. + +Para isso, faça um fork deste repositório. Você precisará criar um repositório para cada aula, então será necessário extrair cada pasta em um repositório separado. Dessa forma, o [GitHub Classroom](https://classroom.github.com/classrooms) poderá identificar cada aula individualmente. + +Estas [instruções completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) darão uma ideia de como configurar sua sala de aula. + +## Usando o repositório como está + +Se você preferir usar este repositório no formato atual, sem utilizar o GitHub Classroom, isso também é possível. Você precisará comunicar aos seus alunos qual aula seguir juntos. + +Em um formato online (Zoom, Teams ou outro), você pode criar salas de grupo para os questionários e orientar os alunos para ajudá-los a se prepararem para aprender. Depois, convide os alunos para os questionários e peça que enviem suas respostas como 'issues' em um horário determinado. Você pode fazer o mesmo com as tarefas, caso queira que os alunos trabalhem colaborativamente de forma aberta. + +Se preferir um formato mais privado, peça aos seus alunos que façam o fork do currículo, aula por aula, para seus próprios repositórios privados no GitHub, e concedam acesso a você. Assim, eles podem completar os questionários e tarefas de forma privada e enviá-los para você como issues no repositório da sua sala de aula. + +Existem muitas maneiras de fazer isso funcionar em um formato de sala de aula online. Por favor, compartilhe conosco o que funciona melhor para você! + +## Por favor, compartilhe suas opiniões + +Queremos que este currículo funcione para você e seus alunos. Por favor, envie seu feedback nos fóruns de discussão! + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/0-course-setup/how-to-run.md b/translations/br/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..a4f84e51 --- /dev/null +++ b/translations/br/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Como Executar o Código + +Este curso contém muitos exemplos executáveis e laboratórios que você provavelmente vai querer rodar. Para isso, é necessário ter a capacidade de executar código Python em Jupyter Notebooks fornecidos como parte deste curso. Você tem várias opções para executar o código: + +## Executar localmente no seu computador + +Para executar o código localmente no seu computador, você precisará ter alguma versão do Python instalada. Eu recomendo instalar o **[miniconda](https://conda.io/en/latest/miniconda.html)** - é uma instalação leve que suporta o gerenciador de pacotes `conda` para diferentes **ambientes virtuais** Python. + +Depois de instalar o miniconda, você precisará clonar o repositório e criar um ambiente virtual para ser usado neste curso: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Usando o Visual Studio Code com a Extensão Python + +Provavelmente, a melhor maneira de usar o curso é abri-lo no [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) com a [Extensão Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Nota**: Assim que você clonar e abrir o diretório no VS Code, ele automaticamente sugerirá a instalação das extensões Python. Você também precisará instalar o miniconda conforme descrito acima. + +> **Nota**: Se o VS Code sugerir reabrir o repositório em um container, recuse para usar a instalação local do Python. + +### Usando o Jupyter no Navegador + +Você também pode usar o ambiente Jupyter diretamente do navegador no seu próprio computador. Na verdade, tanto o Jupyter clássico quanto o Jupyter Hub oferecem um ambiente de desenvolvimento bastante conveniente com autocompletar, destaque de código, etc. + +Para iniciar o Jupyter localmente, vá até o diretório do curso e execute: + +```bash +jupyter notebook +``` +ou +```bash +jupyterhub +``` +Depois, você pode navegar até qualquer um dos arquivos `.ipynb`, abri-los e começar a trabalhar. + +### Executando em um Container + +Uma alternativa à instalação do Python seria executar o código em um container. Como nosso repositório contém uma pasta especial `.devcontainer` que instrui como construir um container para este repositório, o VS Code oferecerá a opção de reabrir o código em um container. Isso exigirá a instalação do Docker e será mais complexo, então recomendamos essa opção para usuários mais experientes. + +## Executando na Nuvem + +Se você não quiser instalar o Python localmente e tiver acesso a alguns recursos na nuvem, uma boa alternativa seria executar o código na nuvem. Existem várias maneiras de fazer isso: + +* Usando o **[GitHub Codespaces](https://github.com/features/codespaces)**, que é um ambiente virtual criado para você no GitHub, acessível através da interface do navegador do VS Code. Se você tiver acesso ao Codespaces, basta clicar no botão **Code** no repositório, iniciar um codespace e começar a trabalhar rapidamente. +* Usando o **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. O [Binder](https://mybinder.org) oferece recursos computacionais gratuitos na nuvem para pessoas como você testarem algum código no GitHub. Há um botão na página inicial para abrir o repositório no Binder - isso deve levá-lo rapidamente ao site do Binder, que construirá o container subjacente e iniciará a interface web do Jupyter para você de forma transparente. + +> **Nota**: Para evitar uso indevido, o Binder bloqueia o acesso a alguns recursos da web. Isso pode impedir que alguns códigos funcionem, especialmente aqueles que baixam modelos e/ou conjuntos de dados da Internet pública. Você pode precisar encontrar alternativas. Além disso, os recursos computacionais fornecidos pelo Binder são bastante básicos, então o treinamento será lento, especialmente nas lições mais complexas. + +## Executando na Nuvem com GPU + +Algumas das lições mais avançadas deste curso se beneficiariam muito do suporte a GPU, pois, caso contrário, o treinamento será extremamente lento. Existem algumas opções que você pode seguir, especialmente se tiver acesso à nuvem, seja através do [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ou da sua instituição: + +* Criar uma [Máquina Virtual de Ciência de Dados](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) e conectá-la via Jupyter. Você pode então clonar o repositório diretamente na máquina e começar a aprender. As VMs da série NC possuem suporte a GPU. + +> **Nota**: Algumas assinaturas, incluindo o Azure for Students, não oferecem suporte a GPU por padrão. Pode ser necessário solicitar núcleos de GPU adicionais através de um pedido de suporte técnico. + +* Criar um [Workspace do Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) e usar o recurso de Notebook lá. [Este vídeo](https://azure-for-academics.github.io/quickstart/azureml-papers/) mostra como clonar um repositório em um notebook do Azure ML e começar a usá-lo. + +Você também pode usar o Google Colab, que oferece algum suporte gratuito a GPU, e carregar os Jupyter Notebooks lá para executá-los um por um. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/0-course-setup/setup.md b/translations/br/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..fff29ed3 --- /dev/null +++ b/translations/br/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Começando com este Currículo + +## Você é um estudante? + +Comece com os seguintes recursos: + +* [Página do Student Hub](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Nesta página, você encontrará recursos para iniciantes, pacotes para estudantes e até maneiras de obter um voucher gratuito para certificação. Esta é uma página que você vai querer adicionar aos favoritos e verificar de tempos em tempos, pois atualizamos o conteúdo pelo menos mensalmente. +* [Microsoft Student Learn ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Junte-se a uma comunidade global de embaixadores estudantis, esta pode ser sua porta de entrada para a Microsoft. + +**Estudantes**, há algumas maneiras de usar o currículo. Primeiro, você pode simplesmente ler o texto e explorar o código diretamente no GitHub. Se quiser executar o código em qualquer um dos notebooks - [leia nossas instruções](./etc/how-to-run.md) e encontre mais dicas sobre como fazer isso [neste post do blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Instruções sobre como executar o código neste currículo](./how-to-run.md) + +## Estudo Autônomo + +No entanto, se você quiser fazer o curso como um projeto de estudo autônomo, sugerimos que você faça um fork de todo o repositório para sua própria conta no GitHub e complete os exercícios por conta própria ou com um grupo: + +* Comece com um quiz pré-aula. +* Leia o texto introdutório da aula. +* Se a aula tiver notebooks adicionais, explore-os, lendo e executando o código. Se forem fornecidos notebooks tanto para TensorFlow quanto para PyTorch, você pode focar em um deles - escolha o framework que preferir. +* Os notebooks frequentemente contêm desafios que exigem que você ajuste o código um pouco para experimentar. +* Faça o quiz pós-aula. +* Se houver um laboratório vinculado ao módulo - complete a tarefa. +* Visite o [Fórum de Discussão](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender em voz alta". + +> Para estudos adicionais, recomendamos seguir estes módulos e trilhas de aprendizado do [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Professores**, nós [incluímos algumas sugestões](/for-teachers.md) sobre como usar este currículo. + +--- + +## Pedagogia + +Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que ele seja **baseado em projetos** e que inclua **quizzes frequentes**. + +Ao garantir que o conteúdo esteja alinhado com projetos, o processo se torna mais envolvente para os estudantes e a retenção dos conceitos será aumentada. Além disso, um quiz de baixa complexidade antes da aula define a intenção do estudante em aprender um tópico, enquanto um segundo quiz após a aula garante uma maior retenção. Este currículo foi projetado para ser flexível e divertido e pode ser realizado em sua totalidade ou em partes. Os projetos começam pequenos e se tornam progressivamente mais complexos ao final do ciclo de 12 semanas. + +> **Uma nota sobre quizzes**: Todos os quizzes estão contidos [neste aplicativo](https://red-field-0a6ddfd03.1.azurestaticapps.net/), com um total de 50 quizzes de três perguntas cada. Eles estão vinculados dentro das lições, mas o aplicativo de quizzes pode ser executado localmente; siga as instruções na pasta `etc/quiz-app`. + +## Acesso offline + +Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) em sua máquina local e, na pasta raiz deste repositório, digite `docsify serve`. O site será servido na porta 3000 do seu localhost: `localhost:3000`. Um PDF do currículo está disponível [neste link](../../../../../../../../../etc/pdf/readme.pdf). + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/1-Intro/README.md b/translations/br/lessons/1-Intro/README.md new file mode 100644 index 00000000..82bd32b8 --- /dev/null +++ b/translations/br/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +Com o passar do tempo, os recursos computacionais se tornaram mais acessíveis, e mais dados passaram a estar disponíveis, permitindo que abordagens baseadas em redes neurais demonstrassem um desempenho impressionante, competindo com seres humanos em diversas áreas, como visão computacional e compreensão de fala. Na última década, o termo Inteligência Artificial tem sido amplamente usado como sinônimo de Redes Neurais, já que a maioria dos sucessos em IA que ouvimos falar são baseados nelas. + +Podemos observar como as abordagens mudaram, por exemplo, na criação de um programa de computador para jogar xadrez: + +* Os primeiros programas de xadrez eram baseados em busca – o programa tentava explicitamente estimar os possíveis movimentos do oponente para um determinado número de jogadas futuras e selecionava o movimento ideal com base na melhor posição que poderia ser alcançada em algumas jogadas. Isso levou ao desenvolvimento do algoritmo de busca chamado [poda alfa-beta](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Estratégias de busca funcionam bem no final do jogo, onde o espaço de busca é limitado por um número reduzido de movimentos possíveis. No entanto, no início do jogo, o espaço de busca é enorme, e o algoritmo pode ser melhorado aprendendo com partidas existentes entre jogadores humanos. Experimentos subsequentes empregaram o chamado [raciocínio baseado em casos](https://en.wikipedia.org/wiki/Case-based_reasoning), onde o programa buscava casos na base de conhecimento muito semelhantes à posição atual no jogo. +* Programas modernos que vencem jogadores humanos são baseados em redes neurais e [aprendizado por reforço](https://en.wikipedia.org/wiki/Reinforcement_learning), onde os programas aprendem a jogar exclusivamente jogando contra si mesmos por um longo período e aprendendo com seus próprios erros – muito parecido com o que os seres humanos fazem ao aprender a jogar xadrez. No entanto, um programa de computador pode jogar muito mais partidas em muito menos tempo, aprendendo assim de forma muito mais rápida. + +✅ Faça uma pequena pesquisa sobre outros jogos que já foram jogados por IA. + +De forma semelhante, podemos observar como a abordagem para criar “programas que falam” (que poderiam passar no teste de Turing) mudou: + +* Os primeiros programas desse tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), eram baseados em regras gramaticais muito simples e na reformulação da frase de entrada em uma pergunta. +* Assistentes modernos, como Cortana, Siri ou Google Assistant, são todos sistemas híbridos que utilizam redes neurais para converter fala em texto e reconhecer nossa intenção, e depois empregam algum raciocínio ou algoritmos explícitos para realizar as ações necessárias. +* No futuro, podemos esperar um modelo completamente baseado em redes neurais para lidar com diálogos de forma autônoma. As recentes redes neurais da família GPT e [Turing-NLG](https://turing.microsoft.com/) têm mostrado grande sucesso nesse sentido. + +> Imagem por Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) por [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Pesquisas Recentes em IA + +O enorme crescimento recente na pesquisa de redes neurais começou por volta de 2010, quando grandes conjuntos de dados públicos começaram a se tornar disponíveis. Uma vasta coleção de imagens chamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contém cerca de 14 milhões de imagens anotadas, deu origem ao [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Precisão do ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +Em 2012, [Redes Neurais Convolucionais](../4-ComputerVision/07-ConvNets/README.md) foram usadas pela primeira vez na classificação de imagens, o que levou a uma queda significativa nos erros de classificação (de quase 30% para 16,4%). Em 2015, a arquitetura ResNet da Microsoft Research [alcançou precisão em nível humano](https://doi.org/10.1109/ICCV.2015.123). + +Desde então, as Redes Neurais demonstraram um desempenho muito bem-sucedido em diversas tarefas: + +--- + +Ano | Paridade com Humanos alcançada +-----|-------- +2015 | [Classificação de Imagens](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Reconhecimento de Fala Conversacional](https://arxiv.org/abs/1610.05256) +2018 | [Tradução Automática de Máquinas](https://arxiv.org/abs/1803.05567) (Chinês para Inglês) +2020 | [Geração de Legendas para Imagens](https://arxiv.org/abs/2009.13682) + +Nos últimos anos, testemunhamos grandes avanços com modelos de linguagem de grande escala, como BERT e GPT-3. Isso aconteceu principalmente devido ao fato de haver uma grande quantidade de dados textuais gerais disponíveis, permitindo treinar modelos para capturar a estrutura e o significado dos textos, pré-treiná-los em coleções de textos gerais e, em seguida, especializá-los para tarefas mais específicas. Vamos aprender mais sobre [Processamento de Linguagem Natural](../5-NLP/README.md) mais adiante neste curso. + +## 🚀 Desafio + +Faça uma pesquisa na internet para determinar onde, na sua opinião, a IA é mais eficazmente utilizada. É em um aplicativo de mapeamento, em algum serviço de conversão de fala para texto ou em um videogame? Pesquise como o sistema foi construído. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Revisão e Autoestudo + +Revise a história da IA e do aprendizado de máquina lendo [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Escolha um elemento do sketchnote no início dessa lição ou desta e pesquise mais a fundo para entender o contexto cultural que influenciou sua evolução. + +**Tarefa**: [Game Jam](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/1-Intro/assignment.md b/translations/br/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..bfdd9001 --- /dev/null +++ b/translations/br/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Jogos são uma área que tem sido fortemente influenciada pelos avanços em IA e ML. Nesta tarefa, escreva um breve artigo sobre um jogo que você gosta e que foi influenciado pela evolução da IA. Deve ser um jogo antigo o suficiente para ter sido impactado por vários tipos de sistemas de processamento computacional. Um bom exemplo é Xadrez ou Go, mas também considere jogos como Pong ou Pac-Man. Escreva um ensaio que discuta o passado, o presente e o futuro da IA no jogo. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/2-Symbolic/README.md b/translations/br/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..ec3dbdb2 --- /dev/null +++ b/translations/br/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Representação de Conhecimento e Sistemas Especialistas + +![Resumo do conteúdo de IA Simbólica](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.br.png) + +> Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) + +A busca pela inteligência artificial é baseada na procura por conhecimento, para entender o mundo de forma semelhante aos humanos. Mas como podemos fazer isso? + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Nos primeiros dias da IA, a abordagem de cima para baixo para criar sistemas inteligentes (discutida na aula anterior) era popular. A ideia era extrair o conhecimento das pessoas em uma forma legível por máquinas e usá-lo para resolver problemas automaticamente. Essa abordagem era baseada em duas grandes ideias: + +* Representação de Conhecimento +* Raciocínio + +## Representação de Conhecimento + +Um dos conceitos importantes na IA Simbólica é o **conhecimento**. É importante diferenciar conhecimento de *informação* ou *dados*. Por exemplo, pode-se dizer que livros contêm conhecimento, porque podemos estudá-los e nos tornar especialistas. No entanto, o que os livros realmente contêm é chamado de *dados*, e ao ler livros e integrar esses dados em nosso modelo do mundo, transformamos esses dados em conhecimento. + +> ✅ **Conhecimento** é algo que está em nossa mente e representa nossa compreensão do mundo. Ele é obtido por um processo ativo de **aprendizado**, que integra pedaços de informação que recebemos em nosso modelo ativo do mundo. + +Na maioria das vezes, não definimos estritamente o conhecimento, mas o alinhamos com outros conceitos relacionados usando o [DIKW Pyramid](https://en.wikipedia.org/wiki/DIKW_pyramid). Ele contém os seguintes conceitos: + +* **Dados** são algo representado em mídia física, como texto escrito ou palavras faladas. Os dados existem independentemente dos seres humanos e podem ser transmitidos entre pessoas. +* **Informação** é como interpretamos os dados em nossa mente. Por exemplo, quando ouvimos a palavra *computador*, temos alguma compreensão do que é. +* **Conhecimento** é a informação integrada em nosso modelo do mundo. Por exemplo, uma vez que aprendemos o que é um computador, começamos a ter algumas ideias sobre como ele funciona, quanto custa e para que pode ser usado. Essa rede de conceitos inter-relacionados forma nosso conhecimento. +* **Sabedoria** é mais um nível de nossa compreensão do mundo e representa o *meta-conhecimento*, ou seja, uma noção de como e quando o conhecimento deve ser usado. + +*Imagem [da Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Por Longlivetheux - Trabalho próprio, CC BY-SA 4.0* + +Assim, o problema da **representação de conhecimento** é encontrar uma maneira eficaz de representar o conhecimento dentro de um computador na forma de dados, para torná-lo automaticamente utilizável. Isso pode ser visto como um espectro: + +![Espectro de representação de conhecimento](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.br.png) + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +* À esquerda, há tipos muito simples de representações de conhecimento que podem ser usados de forma eficaz por computadores. O mais simples é o algorítmico, quando o conhecimento é representado por um programa de computador. No entanto, essa não é a melhor maneira de representar conhecimento, porque não é flexível. O conhecimento em nossa mente muitas vezes não é algorítmico. +* À direita, há representações como texto natural. É a mais poderosa, mas não pode ser usada para raciocínio automático. + +> ✅ Pense por um minuto sobre como você representa conhecimento em sua mente e o converte em anotações. Existe um formato específico que funciona bem para você e ajuda na retenção? + +## Classificando Representações de Conhecimento em Computadores + +Podemos classificar diferentes métodos de representação de conhecimento em computadores nas seguintes categorias: + +* **Representações em rede** são baseadas no fato de que temos uma rede de conceitos inter-relacionados em nossa mente. Podemos tentar reproduzir essas redes como um grafo dentro de um computador - uma chamada **rede semântica**. + +1. **Triplas Objeto-Atributo-Valor** ou **pares atributo-valor**. Como um grafo pode ser representado dentro de um computador como uma lista de nós e arestas, podemos representar uma rede semântica por uma lista de triplas, contendo objetos, atributos e valores. Por exemplo, construímos as seguintes triplas sobre linguagens de programação: + +Objeto | Atributo | Valor +-------|----------|------ +Python | é | Linguagem Não Tipada +Python | inventado-por | Guido van Rossum +Python | sintaxe-de-bloco | indentação +Linguagem Não Tipada | não tem | definições de tipo + +> ✅ Pense como as triplas podem ser usadas para representar outros tipos de conhecimento. + +2. **Representações hierárquicas** enfatizam o fato de que frequentemente criamos uma hierarquia de objetos em nossa mente. Por exemplo, sabemos que o canário é um pássaro, e todos os pássaros têm asas. Também temos alguma ideia sobre qual é a cor usual de um canário e qual é sua velocidade de voo. + + - **Representação em quadros** é baseada em representar cada objeto ou classe de objetos como um **quadro** que contém **slots**. Os slots têm possíveis valores padrão, restrições de valor ou procedimentos armazenados que podem ser chamados para obter o valor de um slot. Todos os quadros formam uma hierarquia semelhante à hierarquia de objetos em linguagens de programação orientadas a objetos. + - **Cenários** são um tipo especial de quadros que representam situações complexas que podem se desenrolar ao longo do tempo. + +**Python** + +Slot | Valor | Valor padrão | Intervalo | +-----|-------|--------------|-----------| +Nome | Python | | | +É-Um | Linguagem Não Tipada | | | +Caso de Variável | | CamelCase | | +Comprimento do Programa | | | 5-5000 linhas | +Sintaxe de Bloco | Indentação | | | + +3. **Representações procedurais** são baseadas em representar conhecimento por uma lista de ações que podem ser executadas quando uma certa condição ocorre. + - Regras de produção são declarações do tipo "se-então" que nos permitem tirar conclusões. Por exemplo, um médico pode ter uma regra dizendo que **SE** um paciente tem febre alta **OU** alto nível de proteína C-reativa no exame de sangue **ENTÃO** ele tem uma inflamação. Uma vez que encontramos uma das condições, podemos concluir sobre a inflamação e, em seguida, usá-la em raciocínios posteriores. + - Algoritmos podem ser considerados outra forma de representação procedural, embora quase nunca sejam usados diretamente em sistemas baseados em conhecimento. + +4. **Lógica** foi originalmente proposta por Aristóteles como uma forma de representar o conhecimento humano universal. + - Lógica de predicados como teoria matemática é muito rica para ser computável, portanto, normalmente é usado algum subconjunto dela, como cláusulas de Horn usadas no Prolog. + - Lógica descritiva é uma família de sistemas lógicos usados para representar e raciocinar sobre hierarquias de objetos e representações de conhecimento distribuído, como a *web semântica*. + +## Sistemas Especialistas + +Um dos primeiros sucessos da IA simbólica foram os chamados **sistemas especialistas** - sistemas computacionais projetados para agir como especialistas em um domínio de problema limitado. Eles eram baseados em uma **base de conhecimento** extraída de um ou mais especialistas humanos e continham um **motor de inferência** que realizava algum raciocínio sobre ela. + +![Arquitetura Humana](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.br.png) | ![Sistema Baseado em Conhecimento](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.br.png) +---------------------------------------------|------------------------------------------------ +Estrutura simplificada do sistema neural humano | Arquitetura de um sistema baseado em conhecimento + +Os sistemas especialistas são construídos como o sistema de raciocínio humano, que contém **memória de curto prazo** e **memória de longo prazo**. Da mesma forma, nos sistemas baseados em conhecimento distinguimos os seguintes componentes: + +* **Memória do problema**: contém o conhecimento sobre o problema que está sendo resolvido atualmente, ou seja, a temperatura ou pressão arterial de um paciente, se ele tem inflamação ou não, etc. Esse conhecimento também é chamado de **conhecimento estático**, porque contém um instantâneo do que sabemos atualmente sobre o problema - o chamado *estado do problema*. +* **Base de conhecimento**: representa o conhecimento de longo prazo sobre um domínio de problema. Ele é extraído manualmente de especialistas humanos e não muda de consulta para consulta. Como permite navegar de um estado de problema para outro, também é chamado de **conhecimento dinâmico**. +* **Motor de inferência**: orquestra todo o processo de busca no espaço de estado do problema, fazendo perguntas ao usuário quando necessário. Também é responsável por encontrar as regras certas a serem aplicadas a cada estado. + +Como exemplo, vamos considerar o seguinte sistema especialista para determinar um animal com base em suas características físicas: + +![Árvore AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.br.png) + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +Este diagrama é chamado de **árvore AND-OR**, e é uma representação gráfica de um conjunto de regras de produção. Desenhar uma árvore é útil no início da extração de conhecimento do especialista. Para representar o conhecimento dentro do computador, é mais conveniente usar regras: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +Você pode notar que cada condição no lado esquerdo da regra e a ação são essencialmente triplas objeto-atributo-valor (OAV). **Memória de trabalho** contém o conjunto de triplas OAV que correspondem ao problema que está sendo resolvido atualmente. Um **motor de regras** procura regras cujas condições são satisfeitas e as aplica, adicionando outra tripla à memória de trabalho. + +> ✅ Escreva sua própria árvore AND-OR sobre um tópico que você goste! + +### Inferência Progressiva vs. Regressiva + +O processo descrito acima é chamado de **inferência progressiva**. Ele começa com alguns dados iniciais sobre o problema disponíveis na memória de trabalho e, em seguida, executa o seguinte ciclo de raciocínio: + +1. Se o atributo alvo estiver presente na memória de trabalho - pare e forneça o resultado +2. Procure todas as regras cujas condições estão atualmente satisfeitas - obtenha o **conjunto de conflito** de regras. +3. Realize **resolução de conflito** - selecione uma regra que será executada nesta etapa. Podem existir diferentes estratégias de resolução de conflito: + - Selecionar a primeira regra aplicável na base de conhecimento + - Selecionar uma regra aleatória + - Selecionar uma regra *mais específica*, ou seja, aquela que atende ao maior número de condições no "lado esquerdo" (LHS) +4. Aplicar a regra selecionada e inserir um novo pedaço de conhecimento no estado do problema +5. Repetir a partir do passo 1. + +No entanto, em alguns casos, podemos querer começar com um conhecimento vazio sobre o problema e fazer perguntas que nos ajudarão a chegar à conclusão. Por exemplo, ao fazer um diagnóstico médico, geralmente não realizamos todas as análises médicas antecipadamente antes de começar a diagnosticar o paciente. Preferimos realizar análises quando uma decisão precisa ser tomada. + +Esse processo pode ser modelado usando **inferência regressiva**. Ele é orientado pelo **objetivo** - o valor do atributo que estamos tentando encontrar: + +1. Selecionar todas as regras que podem nos dar o valor de um objetivo (ou seja, com o objetivo no RHS ("lado direito")) - um conjunto de conflito +1. Se não houver regras para este atributo, ou houver uma regra dizendo que devemos perguntar o valor ao usuário - pergunte, caso contrário: +1. Use a estratégia de resolução de conflito para selecionar uma regra que usaremos como *hipótese* - tentaremos prová-la +1. Repetir recursivamente o processo para todos os atributos no LHS da regra, tentando prová-los como objetivos +1. Se em algum momento o processo falhar - use outra regra no passo 3. + +> ✅ Em quais situações a inferência progressiva é mais apropriada? E a inferência regressiva? + +### Implementando Sistemas Especialistas + +Os sistemas especialistas podem ser implementados usando diferentes ferramentas: + +* Programando-os diretamente em alguma linguagem de programação de alto nível. Esta não é a melhor ideia, porque a principal vantagem de um sistema baseado em conhecimento é que o conhecimento é separado da inferência, e potencialmente um especialista no domínio do problema deve ser capaz de escrever regras sem entender os detalhes do processo de inferência. +* Usando **shell de sistemas especialistas**, ou seja, um sistema projetado especificamente para ser preenchido com conhecimento usando alguma linguagem de representação de conhecimento. + +## ✍️ Exercício: Inferência de Animais + +Veja [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para um exemplo de implementação de sistema especialista com inferência progressiva e regressiva. +> **Nota**: Este exemplo é bastante simples e serve apenas para dar uma ideia de como um sistema especialista se parece. Quando você começar a criar um sistema desse tipo, só perceberá algum comportamento *inteligente* depois de atingir um certo número de regras, em torno de 200 ou mais. Em algum momento, as regras se tornam complexas demais para serem mantidas todas na mente, e é nesse ponto que você pode começar a se perguntar por que o sistema toma certas decisões. No entanto, uma característica importante dos sistemas baseados em conhecimento é que você pode sempre *explicar* exatamente como qualquer uma das decisões foi tomada. +## Ontologias e a Web Semântica + +No final do século 20, houve uma iniciativa para usar a representação de conhecimento para anotar recursos da Internet, de forma que fosse possível encontrar recursos que correspondessem a consultas muito específicas. Esse movimento foi chamado de **Web Semântica**, e baseava-se em vários conceitos: + +- Uma representação de conhecimento especial baseada em **[lógicas descritivas](https://en.wikipedia.org/wiki/Description_logic)** (DL). É semelhante à representação de conhecimento em quadros, pois constrói uma hierarquia de objetos com propriedades, mas possui semântica lógica formal e inferência. Existe toda uma família de DLs que equilibram expressividade e complexidade algorítmica da inferência. +- Representação de conhecimento distribuída, onde todos os conceitos são representados por um identificador URI global, tornando possível criar hierarquias de conhecimento que abrangem a internet. +- Uma família de linguagens baseadas em XML para descrição de conhecimento: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Um conceito central na Web Semântica é o conceito de **Ontologia**. Refere-se a uma especificação explícita de um domínio de problema usando alguma representação formal de conhecimento. A ontologia mais simples pode ser apenas uma hierarquia de objetos em um domínio de problema, mas ontologias mais complexas incluirão regras que podem ser usadas para inferência. + +Na Web Semântica, todas as representações são baseadas em triplas. Cada objeto e cada relação são identificados de forma única pelo URI. Por exemplo, se quisermos declarar o fato de que este Currículo de IA foi desenvolvido por Dmitry Soshnikov em 1º de janeiro de 2022, aqui estão as triplas que podemos usar: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ Aqui `http://www.example.com/terms/creation-date` e `http://purl.org/dc/elements/1.1/creator` são alguns URIs bem conhecidos e universalmente aceitos para expressar os conceitos de *criador* e *data de criação*. + +Em um caso mais complexo, se quisermos definir uma lista de criadores, podemos usar algumas estruturas de dados definidas em RDF. + + + +> Diagramas acima por [Dmitry Soshnikov](http://soshnikov.com) + +O progresso na construção da Web Semântica foi de certa forma desacelerado pelo sucesso dos motores de busca e das técnicas de processamento de linguagem natural, que permitem extrair dados estruturados de textos. No entanto, em algumas áreas ainda há esforços significativos para manter ontologias e bases de conhecimento. Alguns projetos que merecem destaque: + +* [WikiData](https://wikidata.org/) é uma coleção de bases de conhecimento legíveis por máquinas associadas à Wikipedia. A maior parte dos dados é extraída das *InfoBoxes* da Wikipedia, pedaços de conteúdo estruturado dentro das páginas da Wikipedia. Você pode [consultar](https://query.wikidata.org/) o WikiData em SPARQL, uma linguagem de consulta especial para a Web Semântica. Aqui está uma consulta de exemplo que exibe as cores de olhos mais populares entre os humanos: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) é outro esforço semelhante ao WikiData. + +> ✅ Se você quiser experimentar construir suas próprias ontologias ou abrir ontologias existentes, há um ótimo editor visual de ontologias chamado [Protégé](https://protege.stanford.edu/). Baixe-o ou use-o online. + + + +*Editor Web Protégé aberto com a ontologia da Família Romanov. Captura de tela por Dmitry Soshnikov* + +## ✍️ Exercício: Uma Ontologia Familiar + +Veja [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para um exemplo de uso de técnicas da Web Semântica para raciocinar sobre relações familiares. Vamos pegar uma árvore genealógica representada no formato comum GEDCOM e uma ontologia de relações familiares e construir um gráfico de todas as relações familiares para um conjunto dado de indivíduos. + +## Microsoft Concept Graph + +Na maioria dos casos, as ontologias são cuidadosamente criadas manualmente. No entanto, também é possível **extrair** ontologias de dados não estruturados, por exemplo, de textos em linguagem natural. + +Uma dessas tentativas foi realizada pela Microsoft Research, resultando no [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +É uma grande coleção de entidades agrupadas usando a relação de herança `is-a`. Permite responder a perguntas como "O que é a Microsoft?" - a resposta sendo algo como "uma empresa com probabilidade 0,87, e uma marca com probabilidade 0,75". + +O Graph está disponível como uma API REST ou como um grande arquivo de texto para download que lista todos os pares de entidades. + +## ✍️ Exercício: Um Concept Graph + +Experimente o notebook [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) para ver como podemos usar o Microsoft Concept Graph para agrupar artigos de notícias em várias categorias. + +## Conclusão + +Hoje em dia, IA é frequentemente considerada sinônimo de *Aprendizado de Máquina* ou *Redes Neurais*. No entanto, um ser humano também exibe raciocínio explícito, algo que atualmente não é tratado por redes neurais. Em projetos do mundo real, o raciocínio explícito ainda é usado para realizar tarefas que exigem explicações ou a capacidade de modificar o comportamento do sistema de maneira controlada. + +## 🚀 Desafio + +No notebook Family Ontology associado a esta lição, há uma oportunidade de experimentar outras relações familiares. Tente descobrir novas conexões entre pessoas na árvore genealógica. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Revisão e Autoestudo + +Pesquise na internet para descobrir áreas onde os humanos tentaram quantificar e codificar conhecimento. Dê uma olhada na Taxonomia de Bloom e volte na história para aprender como os humanos tentaram entender o mundo. Explore o trabalho de Linnaeus para criar uma taxonomia de organismos e observe como Dmitri Mendeleev criou uma forma de descrever e agrupar elementos químicos. Que outros exemplos interessantes você pode encontrar? + +**Tarefa**: [Construa uma Ontologia](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/2-Symbolic/assignment.md b/translations/br/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..5e1286ea --- /dev/null +++ b/translations/br/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Construir uma Ontologia + +Construir uma base de conhecimento envolve categorizar um modelo que representa fatos sobre um determinado tema. Escolha um tema - como uma pessoa, um lugar ou um objeto - e, em seguida, construa um modelo sobre esse tema. Utilize algumas das técnicas e estratégias de construção de modelos descritas nesta lição. Um exemplo seria criar uma ontologia de uma sala de estar com móveis, luzes, e assim por diante. Como a sala de estar se diferencia da cozinha? Do banheiro? Como você sabe que é uma sala de estar e não uma sala de jantar? Use o [Protégé](https://protege.stanford.edu/) para construir sua ontologia. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/br/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..df63bc9e --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Introdução às Redes Neurais: Perceptron + +## [Quiz antes da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Uma das primeiras tentativas de implementar algo semelhante a uma rede neural moderna foi feita por Frank Rosenblatt, do Laboratório Aeronáutico de Cornell, em 1957. Foi uma implementação em hardware chamada "Mark-1", projetada para reconhecer figuras geométricas primitivas, como triângulos, quadrados e círculos. + +| | | +|--------------|-----------| +|Frank Rosenblatt | O Perceptron Mark 1| + +> Imagens [da Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Uma imagem de entrada era representada por uma matriz de fotocélulas de 20x20, então a rede neural tinha 400 entradas e uma saída binária. Uma rede simples continha um único neurônio, também chamado de **unidade lógica de limiar**. Os pesos da rede neural funcionavam como potenciômetros que precisavam ser ajustados manualmente durante a fase de treinamento. + +> ✅ Um potenciômetro é um dispositivo que permite ao usuário ajustar a resistência de um circuito. + +> O New York Times escreveu sobre o perceptron na época: *o embrião de um computador eletrônico que [a Marinha] espera que seja capaz de andar, falar, ver, escrever, se reproduzir e ter consciência de sua existência.* + +## Modelo de Perceptron + +Suponha que temos N características em nosso modelo, caso em que o vetor de entrada seria um vetor de tamanho N. Um perceptron é um modelo de **classificação binária**, ou seja, ele pode distinguir entre duas classes de dados de entrada. Vamos assumir que, para cada vetor de entrada x, a saída do nosso perceptron será +1 ou -1, dependendo da classe. A saída será calculada usando a fórmula: + +y(x) = f(wTx) + +onde f é uma função de ativação em degrau. + + + + +## Treinando o Perceptron + +Para treinar um perceptron, precisamos encontrar um vetor de pesos w que classifique a maioria dos valores corretamente, ou seja, que resulte no menor **erro**. Este erro E é definido pelo **critério do perceptron** da seguinte maneira: + +E(w) = -∑wTxiti + +onde: + +* a soma é feita sobre os pontos de dados de treinamento i que resultam em classificação incorreta +* xi é o dado de entrada, e ti é -1 ou +1 para exemplos negativos e positivos, respectivamente. + +Este critério é considerado como uma função dos pesos w, e precisamos minimizá-lo. Frequentemente, é usado um método chamado **descida de gradiente**, no qual começamos com alguns pesos iniciais w(0), e então, a cada passo, atualizamos os pesos de acordo com a fórmula: + +w(t+1) = w(t) - η∇E(w) + +Aqui, η é a chamada **taxa de aprendizado**, e ∇E(w) denota o **gradiente** de E. Após calcular o gradiente, obtemos: + +w(t+1) = w(t) + ∑ηxiti + +O algoritmo em Python se parece com isto: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## Conclusão + +Nesta lição, você aprendeu sobre o perceptron, que é um modelo de classificação binária, e como treiná-lo usando um vetor de pesos. + +## 🚀 Desafio + +Se você quiser tentar construir seu próprio perceptron, experimente [este laboratório no Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), que utiliza o [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Quiz após a aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Revisão e Autoestudo + +Para ver como podemos usar o perceptron para resolver um problema simples, bem como problemas da vida real, e para continuar aprendendo - acesse o notebook [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Aqui está um [artigo interessante sobre perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Tarefa](lab/README.md) + +Nesta lição, implementamos um perceptron para uma tarefa de classificação binária e o usamos para classificar entre dois dígitos manuscritos. Neste laboratório, você é solicitado a resolver o problema de classificação de dígitos completamente, ou seja, determinar qual dígito é mais provável de corresponder a uma imagem dada. + +* [Instruções](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/br/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..30b2cca5 --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Classificação Multi-Classe com Perceptron + +Atividade de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Usando o código que desenvolvemos nesta lição para classificação binária de dígitos manuscritos do MNIST, crie um classificador multi-classe que seja capaz de reconhecer qualquer dígito. Calcule a precisão da classificação nos conjuntos de dados de treinamento e teste, e exiba a matriz de confusão. + +## Dicas + +1. Para cada dígito, crie um conjunto de dados para o classificador binário de "este dígito vs. todos os outros dígitos". +1. Treine 10 perceptrons diferentes para classificação binária (um para cada dígito). +1. Defina uma função que classifique um dígito de entrada. + +> **Dica**: Se combinarmos os pesos de todos os 10 perceptrons em uma única matriz, devemos ser capazes de aplicar todos os 10 perceptrons aos dígitos de entrada por meio de uma única multiplicação de matriz. O dígito mais provável pode então ser encontrado simplesmente aplicando a operação `argmax` no resultado. + +## Notebook Inicial + +Comece o laboratório abrindo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/br/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..694d079f --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Introdução às Redes Neurais. Perceptron Multicamadas + +Na seção anterior, você aprendeu sobre o modelo mais simples de rede neural - o perceptron de uma camada, um modelo linear de classificação para duas classes. + +Nesta seção, vamos expandir esse modelo para um framework mais flexível, permitindo-nos: + +* realizar **classificação multiclasse** além da classificação de duas classes +* resolver **problemas de regressão** além da classificação +* separar classes que não são linearmente separáveis + +Também desenvolveremos nosso próprio framework modular em Python, que nos permitirá construir diferentes arquiteturas de redes neurais. + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalização de Aprendizado de Máquina + +Vamos começar formalizando o problema de Aprendizado de Máquina. Suponha que temos um conjunto de dados de treinamento **X** com rótulos **Y**, e precisamos construir um modelo *f* que faça previsões mais precisas. A qualidade das previsões é medida pela **função de perda** ℒ. As seguintes funções de perda são frequentemente usadas: + +* Para problemas de regressão, quando precisamos prever um número, podemos usar o **erro absoluto** ∑i|f(x(i))-y(i)| ou o **erro quadrático** ∑i(f(x(i))-y(i))2 +* Para classificação, usamos a **perda 0-1** (que é essencialmente o mesmo que a **acurácia** do modelo) ou a **perda logística**. + +Para o perceptron de uma camada, a função *f* foi definida como uma função linear *f(x)=wx+b* (aqui *w* é a matriz de pesos, *x* é o vetor de características de entrada e *b* é o vetor de viés). Para diferentes arquiteturas de redes neurais, essa função pode assumir uma forma mais complexa. + +> No caso de classificação, muitas vezes é desejável obter probabilidades das classes correspondentes como saída da rede. Para converter números arbitrários em probabilidades (por exemplo, para normalizar a saída), frequentemente usamos a função **softmax** σ, e a função *f* torna-se *f(x)=σ(wx+b)*. + +Na definição de *f* acima, *w* e *b* são chamados de **parâmetros** θ=⟨*w,b*⟩. Dado o conjunto de dados ⟨**X**,**Y**⟩, podemos calcular um erro geral em todo o conjunto de dados como uma função dos parâmetros θ. + +> ✅ **O objetivo do treinamento de redes neurais é minimizar o erro variando os parâmetros θ** + +## Otimização por Gradiente Descendente + +Existe um método bem conhecido de otimização de funções chamado **gradiente descendente**. A ideia é que podemos calcular a derivada (no caso multidimensional chamada de **gradiente**) da função de perda em relação aos parâmetros e variar os parâmetros de forma que o erro diminua. Isso pode ser formalizado da seguinte maneira: + +* Inicialize os parâmetros com alguns valores aleatórios w(0), b(0) +* Repita o seguinte passo várias vezes: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Durante o treinamento, os passos de otimização devem ser calculados considerando todo o conjunto de dados (lembre-se de que a perda é calculada como uma soma de todas as amostras de treinamento). No entanto, na prática, usamos pequenas porções do conjunto de dados chamadas **minilotes**, e calculamos os gradientes com base em um subconjunto de dados. Como o subconjunto é escolhido aleatoriamente a cada vez, esse método é chamado de **gradiente descendente estocástico** (SGD). + +## Perceptrons Multicamadas e Retropropagação + +A rede de uma camada, como vimos acima, é capaz de classificar classes linearmente separáveis. Para construir um modelo mais rico, podemos combinar várias camadas da rede. Matematicamente, isso significa que a função *f* terá uma forma mais complexa e será calculada em várias etapas: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Aqui, α é uma **função de ativação não linear**, σ é uma função softmax, e os parâmetros θ=<*w1,b1,w2,b2*>. + +O algoritmo de gradiente descendente permaneceria o mesmo, mas calcular os gradientes seria mais difícil. Dado o princípio da regra da cadeia de diferenciação, podemos calcular as derivadas como: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ A regra da cadeia de diferenciação é usada para calcular as derivadas da função de perda em relação aos parâmetros. + +Observe que a parte mais à esquerda de todas essas expressões é a mesma, e assim podemos calcular as derivadas de forma eficiente começando pela função de perda e indo "para trás" através do grafo computacional. Assim, o método de treinamento de um perceptron multicamadas é chamado de **retropropagação**, ou 'backprop'. + +grafo computacional + +> TODO: citação da imagem + +> ✅ Vamos abordar a retropropagação com muito mais detalhes em nosso exemplo no notebook. + +## Conclusão + +Nesta lição, construímos nossa própria biblioteca de redes neurais e a utilizamos para uma tarefa simples de classificação bidimensional. + +## 🚀 Desafio + +No notebook que acompanha, você implementará seu próprio framework para construir e treinar perceptrons multicamadas. Você poderá ver em detalhes como as redes neurais modernas operam. + +Acesse o notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) e trabalhe nele. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Revisão e Autoestudo + +A retropropagação é um algoritmo comum usado em IA e ML, valendo a pena estudá-lo [em mais detalhes](https://wikipedia.org/wiki/Backpropagation). + +## [Tarefa](lab/README.md) + +Neste laboratório, você será solicitado a usar o framework que construiu nesta lição para resolver a classificação de dígitos manuscritos do MNIST. + +* [Instruções](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/br/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..131463d6 --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# Classificação MNIST com Nosso Próprio Framework + +Tarefa de Laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Resolva o problema de classificação de dígitos manuscritos do MNIST usando perceptrons com 1, 2 e 3 camadas. Utilize o framework de rede neural que desenvolvemos na aula. + +## Notebook Inicial + +Inicie o laboratório abrindo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Perguntas + +Como resultado deste laboratório, tente responder às seguintes perguntas: + +- A função de ativação entre as camadas afeta o desempenho da rede? +- Precisamos de uma rede com 2 ou 3 camadas para esta tarefa? +- Você encontrou algum problema ao treinar a rede? Especialmente à medida que o número de camadas aumentava. +- Como os pesos da rede se comportam durante o treinamento? Você pode plotar o valor absoluto máximo dos pesos em relação às épocas para entender a relação. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/br/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..5604de91 --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Frameworks de Redes Neurais + +Como já aprendemos, para treinar redes neurais de forma eficiente, precisamos fazer duas coisas: + +* Operar com tensores, por exemplo, multiplicar, somar e calcular algumas funções como sigmoid ou softmax. +* Calcular os gradientes de todas as expressões, para realizar a otimização por descida do gradiente. + +## [Pré-aula: Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Embora a biblioteca `numpy` possa realizar a primeira parte, precisamos de algum mecanismo para calcular os gradientes. No [nosso framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desenvolvemos na seção anterior, tivemos que programar manualmente todas as funções derivadas dentro do método `backward`, que realiza a retropropagação. Idealmente, um framework deveria nos oferecer a possibilidade de calcular os gradientes de *qualquer expressão* que possamos definir. + +Outra coisa importante é ser capaz de realizar cálculos em GPU ou em outras unidades de processamento especializadas, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). O treinamento de redes neurais profundas exige *muitos* cálculos, e a capacidade de paralelizar esses cálculos em GPUs é muito importante. + +> ✅ O termo 'paralelizar' significa distribuir os cálculos em vários dispositivos. + +Atualmente, os dois frameworks de redes neurais mais populares são: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Ambos fornecem uma API de baixo nível para operar com tensores tanto em CPU quanto em GPU. Além da API de baixo nível, também há uma API de alto nível, chamada [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/), respectivamente. + +API de Baixo Nível | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------------|-------------------------------------|-------------------------------- +API de Alto Nível | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +As **APIs de baixo nível** em ambos os frameworks permitem construir os chamados **grafos computacionais**. Esse grafo define como calcular a saída (geralmente a função de perda) com os parâmetros de entrada fornecidos e pode ser enviado para cálculo em GPU, se disponível. Existem funções para diferenciar esse grafo computacional e calcular gradientes, que podem ser usados para otimizar os parâmetros do modelo. + +As **APIs de alto nível** consideram redes neurais como uma **sequência de camadas**, tornando a construção da maioria das redes neurais muito mais fácil. Treinar o modelo geralmente exige preparar os dados e, em seguida, chamar uma função `fit` para realizar o treinamento. + +A API de alto nível permite construir redes neurais típicas muito rapidamente, sem se preocupar com muitos detalhes. Ao mesmo tempo, a API de baixo nível oferece muito mais controle sobre o processo de treinamento e, por isso, é amplamente utilizada em pesquisas, quando se trabalha com novas arquiteturas de redes neurais. + +Também é importante entender que você pode usar ambas as APIs juntas. Por exemplo, você pode desenvolver sua própria arquitetura de camada de rede usando a API de baixo nível e, em seguida, usá-la dentro de uma rede maior construída e treinada com a API de alto nível. Ou você pode definir uma rede usando a API de alto nível como uma sequência de camadas e, em seguida, usar seu próprio loop de treinamento de baixo nível para realizar a otimização. Ambas as APIs utilizam os mesmos conceitos básicos subjacentes e são projetadas para funcionar bem juntas. + +## Aprendizado + +Neste curso, oferecemos a maior parte do conteúdo tanto para PyTorch quanto para TensorFlow. Você pode escolher o framework de sua preferência e seguir apenas os notebooks correspondentes. Se não tiver certeza de qual framework escolher, leia algumas discussões na internet sobre **PyTorch vs. TensorFlow**. Você também pode explorar ambos os frameworks para obter uma melhor compreensão. + +Sempre que possível, utilizaremos as APIs de alto nível para simplificar. No entanto, acreditamos que é importante entender como as redes neurais funcionam desde o início, por isso começamos trabalhando com a API de baixo nível e tensores. No entanto, se você quiser começar rapidamente e não gastar muito tempo aprendendo esses detalhes, pode pular essa parte e ir direto para os notebooks de API de alto nível. + +## ✍️ Exercícios: Frameworks + +Continue seu aprendizado nos seguintes notebooks: + +API de Baixo Nível | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------------|-------------------------------------|-------------------------------- +API de Alto Nível | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Depois de dominar os frameworks, vamos revisar o conceito de overfitting. + +# Overfitting + +Overfitting é um conceito extremamente importante em aprendizado de máquina, e é essencial compreendê-lo corretamente! + +Considere o seguinte problema de aproximar 5 pontos (representados por `x` nos gráficos abaixo): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.br.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.br.jpg) +-------------------------|-------------------------- +**Modelo linear, 2 parâmetros** | **Modelo não-linear, 7 parâmetros** +Erro de treinamento = 5.3 | Erro de treinamento = 0 +Erro de validação = 5.1 | Erro de validação = 20 + +* À esquerda, vemos uma boa aproximação com uma linha reta. Como o número de parâmetros é adequado, o modelo compreende corretamente a distribuição dos pontos. +* À direita, o modelo é muito poderoso. Como temos apenas 5 pontos e o modelo possui 7 parâmetros, ele pode se ajustar de forma a passar por todos os pontos, fazendo com que o erro de treinamento seja 0. No entanto, isso impede o modelo de entender o padrão correto dos dados, resultando em um erro de validação muito alto. + +É muito importante encontrar um equilíbrio correto entre a complexidade do modelo (número de parâmetros) e o número de amostras de treinamento. + +## Por que o overfitting ocorre + + * Poucos dados de treinamento + * Modelo muito complexo + * Muito ruído nos dados de entrada + +## Como detectar overfitting + +Como você pode ver no gráfico acima, o overfitting pode ser detectado por um erro de treinamento muito baixo e um erro de validação alto. Normalmente, durante o treinamento, veremos tanto o erro de treinamento quanto o de validação diminuindo, mas em algum momento o erro de validação pode parar de diminuir e começar a aumentar. Isso será um sinal de overfitting e um indicador de que devemos provavelmente parar o treinamento nesse ponto (ou pelo menos salvar um snapshot do modelo). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.br.png) + +## Como prevenir o overfitting + +Se você perceber que o overfitting está ocorrendo, pode fazer uma das seguintes ações: + + * Aumentar a quantidade de dados de treinamento + * Diminuir a complexidade do modelo + * Usar alguma [técnica de regularização](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que será abordada mais adiante. + +## Overfitting e o Compromisso Viés-Variância + +O overfitting é, na verdade, um caso de um problema mais genérico em estatística chamado [Compromisso Viés-Variância](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se considerarmos as possíveis fontes de erro em nosso modelo, podemos identificar dois tipos de erros: + +* **Erros de viés** são causados pelo fato de nosso algoritmo não conseguir capturar corretamente a relação nos dados de treinamento. Isso pode ocorrer porque nosso modelo não é suficientemente poderoso (**underfitting**). +* **Erros de variância**, que são causados pelo modelo ao aproximar o ruído nos dados de entrada em vez de relações significativas (**overfitting**). + +Durante o treinamento, o erro de viés diminui (à medida que nosso modelo aprende a aproximar os dados) e o erro de variância aumenta. É importante parar o treinamento - seja manualmente (quando detectamos overfitting) ou automaticamente (introduzindo regularização) - para evitar o overfitting. + +## Conclusão + +Nesta lição, você aprendeu sobre as diferenças entre as várias APIs dos dois frameworks de IA mais populares, TensorFlow e PyTorch. Além disso, você aprendeu sobre um tema muito importante: o overfitting. + +## 🚀 Desafio + +Nos notebooks que acompanham esta lição, você encontrará 'tarefas' no final; trabalhe nos notebooks e complete as tarefas. + +## [Pós-aula: Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Revisão e Autoestudo + +Pesquise sobre os seguintes tópicos: + +- TensorFlow +- PyTorch +- Overfitting + +Pergunte a si mesmo: + +- Qual é a diferença entre TensorFlow e PyTorch? +- Qual é a diferença entre overfitting e underfitting? + +## [Tarefa](lab/README.md) + +Neste laboratório, você será solicitado a resolver dois problemas de classificação usando redes totalmente conectadas de uma ou várias camadas, utilizando PyTorch ou TensorFlow. + +* [Instruções](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/br/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..fb5f3daa --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Classificação com PyTorch/TensorFlow + +Trabalho prático do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Resolva dois problemas de classificação usando redes totalmente conectadas de camada única e multicamadas com PyTorch ou TensorFlow: + +1. Problema de **[classificação de íris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - um exemplo de problema com dados de entrada tabulares, que podem ser tratados por aprendizado de máquina clássico. Seu objetivo será classificar íris em 3 classes, com base em 4 parâmetros numéricos. +1. Problema de classificação de dígitos manuscritos **MNIST**, que já vimos anteriormente. + +Experimente diferentes arquiteturas de rede para alcançar a melhor precisão possível. + +## Notebook Inicial + +Comece o trabalho prático abrindo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/3-NeuralNetworks/README.md b/translations/br/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..8c0e3ae7 --- /dev/null +++ b/translations/br/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Introdução às Redes Neurais + +![Resumo do conteúdo de Introdução às Redes Neurais em um desenho](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.br.png) + +Como discutimos na introdução, uma das formas de alcançar inteligência é treinar um **modelo computacional** ou um **cérebro artificial**. Desde meados do século XX, pesquisadores experimentaram diferentes modelos matemáticos, até que, nos últimos anos, essa abordagem se mostrou extremamente bem-sucedida. Esses modelos matemáticos do cérebro são chamados de **redes neurais**. + +> Às vezes, redes neurais são chamadas de *Redes Neurais Artificiais*, ou ANNs, para indicar que estamos falando de modelos, e não de redes reais de neurônios. + +## Aprendizado de Máquina + +Redes Neurais fazem parte de uma disciplina maior chamada **Aprendizado de Máquina**, cujo objetivo é usar dados para treinar modelos computacionais capazes de resolver problemas. O Aprendizado de Máquina constitui uma grande parte da Inteligência Artificial, porém, não abordamos o aprendizado de máquina clássico neste currículo. + +> Visite nosso currículo separado **[Aprendizado de Máquina para Iniciantes](http://github.com/microsoft/ml-for-beginners)** para aprender mais sobre Aprendizado de Máquina clássico. + +No Aprendizado de Máquina, assumimos que temos algum conjunto de dados de exemplos **X** e valores de saída correspondentes **Y**. Os exemplos geralmente são vetores N-dimensionais que consistem em **características**, e as saídas são chamadas de **rótulos**. + +Consideraremos os dois problemas mais comuns de aprendizado de máquina: + +* **Classificação**, onde precisamos classificar um objeto de entrada em duas ou mais classes. +* **Regressão**, onde precisamos prever um valor numérico para cada uma das amostras de entrada. + +> Ao representar entradas e saídas como tensores, o conjunto de dados de entrada é uma matriz de tamanho M×N, onde M é o número de amostras e N é o número de características. Os rótulos de saída Y são o vetor de tamanho M. + +Neste currículo, focaremos apenas em modelos de redes neurais. + +## Um Modelo de Neurônio + +Na biologia, sabemos que nosso cérebro é composto por células neurais, cada uma delas tendo múltiplas "entradas" (axônios) e uma saída (dendrito). Axônios e dendritos podem conduzir sinais elétricos, e as conexões entre axônios e dendritos podem apresentar diferentes graus de condutividade (controlados por neurotransmissores). + +![Modelo de um Neurônio](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.br.jpg) | ![Modelo de um Neurônio](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.br.png) +----|---- +Neurônio Real *([Imagem](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) da Wikipedia)* | Neurônio Artificial *(Imagem do Autor)* + +Assim, o modelo matemático mais simples de um neurônio contém várias entradas X1, ..., XN e uma saída Y, além de uma série de pesos W1, ..., WN. A saída é calculada como: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +onde f é alguma **função de ativação** não linear. + +> Os primeiros modelos de neurônio foram descritos no artigo clássico [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) por Warren McCullock e Walter Pitts em 1943. Donald Hebb, em seu livro "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", propôs uma forma de treinar essas redes. + +## Nesta Seção + +Nesta seção, aprenderemos sobre: +* [Perceptron](03-Perceptron/README.md), um dos primeiros modelos de redes neurais para classificação de duas classes +* [Redes multicamadas](04-OwnFramework/README.md) com um notebook associado [como construir nosso próprio framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworks de Redes Neurais](05-Frameworks/README.md), com estes notebooks: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) e [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/br/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..e7e66cc1 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Introdução à Visão Computacional + +[Visão Computacional](https://wikipedia.org/wiki/Computer_vision) é uma disciplina cujo objetivo é permitir que computadores obtenham uma compreensão de alto nível de imagens digitais. Esta é uma definição bastante ampla, pois *compreensão* pode significar muitas coisas, incluindo encontrar um objeto em uma imagem (**detecção de objetos**), entender o que está acontecendo (**detecção de eventos**), descrever uma imagem em texto ou reconstruir uma cena em 3D. Existem também tarefas específicas relacionadas a imagens humanas: estimativa de idade e emoção, detecção e identificação de rostos, e estimativa de pose em 3D, para citar algumas. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Uma das tarefas mais simples da visão computacional é a **classificação de imagens**. + +A visão computacional é frequentemente considerada um ramo da IA. Hoje em dia, a maioria das tarefas de visão computacional é resolvida usando redes neurais. Vamos aprender mais sobre o tipo especial de redes neurais usadas para visão computacional, as [redes neurais convolucionais](../07-ConvNets/README.md), ao longo desta seção. + +No entanto, antes de passar a imagem para uma rede neural, em muitos casos faz sentido usar algumas técnicas algorítmicas para melhorar a imagem. + +Existem várias bibliotecas Python disponíveis para processamento de imagens: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** pode ser usada para ler/escrever diferentes formatos de imagem. Também suporta ffmpeg, uma ferramenta útil para converter quadros de vídeo em imagens. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (também conhecida como PIL) é um pouco mais poderosa e também suporta algumas manipulações de imagem, como morphing, ajustes de paleta e mais. +* **[OpenCV](https://opencv.org/)** é uma poderosa biblioteca de processamento de imagens escrita em C++, que se tornou o padrão *de facto* para processamento de imagens. Possui uma interface conveniente para Python. +* **[dlib](http://dlib.net/)** é uma biblioteca em C++ que implementa muitos algoritmos de aprendizado de máquina, incluindo alguns algoritmos de visão computacional. Também possui uma interface para Python e pode ser usada para tarefas desafiadoras, como detecção de rostos e pontos faciais. + +## OpenCV + +[OpenCV](https://opencv.org/) é considerado o padrão *de facto* para processamento de imagens. Ele contém muitos algoritmos úteis, implementados em C++. Você também pode chamar o OpenCV a partir do Python. + +Um bom lugar para aprender OpenCV é [este curso Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). Em nosso currículo, nosso objetivo não é aprender OpenCV, mas mostrar alguns exemplos de quando ele pode ser usado e como. + +### Carregando Imagens + +Imagens em Python podem ser convenientemente representadas por arrays NumPy. Por exemplo, imagens em escala de cinza com tamanho de 320x200 pixels seriam armazenadas em um array 200x320, e imagens coloridas da mesma dimensão teriam a forma 200x320x3 (para 3 canais de cor). Para carregar uma imagem, você pode usar o seguinte código: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradicionalmente, o OpenCV usa codificação BGR (Azul-Verde-Vermelho) para imagens coloridas, enquanto o restante das ferramentas Python usa o mais tradicional RGB (Vermelho-Verde-Azul). Para que a imagem seja exibida corretamente, você precisa convertê-la para o espaço de cores RGB, seja trocando as dimensões no array NumPy ou chamando uma função do OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +A mesma função `cvtColor` pode ser usada para realizar outras transformações de espaço de cores, como converter uma imagem para escala de cinza ou para o espaço de cores HSV (Matiz-Saturação-Valor). + +Você também pode usar o OpenCV para carregar vídeos quadro a quadro - um exemplo é dado no exercício [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Processamento de Imagens + +Antes de alimentar uma imagem para uma rede neural, você pode querer aplicar várias etapas de pré-processamento. O OpenCV pode fazer muitas coisas, incluindo: + +* **Redimensionar** a imagem usando `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Desfocar** a imagem usando `im = cv2.medianBlur(im,3)` ou `im = cv2.GaussianBlur(im, (3,3), 0)` +* Alterar o **brilho e contraste** da imagem pode ser feito por manipulações de arrays NumPy, conforme descrito [nesta nota do Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Usar [limiarização](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) chamando as funções `cv2.threshold`/`cv2.adaptiveThreshold`, o que muitas vezes é preferível a ajustar brilho ou contraste. +* Aplicar diferentes [transformações](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) à imagem: + - **[Transformações Afins](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** podem ser úteis se você precisar combinar rotação, redimensionamento e distorção na imagem e souber a localização de origem e destino de três pontos na imagem. Transformações afins mantêm linhas paralelas paralelas. + - **[Transformações de Perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** podem ser úteis quando você conhece as posições de origem e destino de 4 pontos na imagem. Por exemplo, se você tirar uma foto de um documento retangular com uma câmera de smartphone de algum ângulo e quiser criar uma imagem retangular do próprio documento. +* Entender o movimento dentro da imagem usando **[fluxo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Exemplos de Uso da Visão Computacional + +Em nosso [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos alguns exemplos de quando a visão computacional pode ser usada para realizar tarefas específicas: + +* **Pré-processamento de uma fotografia de um livro em Braille**. Focamos em como podemos usar limiarização, detecção de características, transformação de perspectiva e manipulações NumPy para separar símbolos individuais em Braille para posterior classificação por uma rede neural. + +![Imagem Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.br.jpeg) | ![Imagem Braille Pré-processada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.br.png) | ![Símbolos Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.br.png) +----|-----|----- + +> Imagem de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectando movimento em vídeo usando diferença de quadros**. Se a câmera estiver fixa, os quadros do feed da câmera devem ser bastante semelhantes entre si. Como os quadros são representados como arrays, apenas subtraindo esses arrays para dois quadros subsequentes obteremos a diferença de pixels, que deve ser baixa para quadros estáticos e se tornar maior quando houver movimento substancial na imagem. + +![Imagem de quadros de vídeo e diferenças de quadros](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.br.png) + +> Imagem de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectando movimento usando Fluxo Óptico**. [Fluxo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender como os pixels individuais nos quadros de vídeo se movem. Existem dois tipos de fluxo óptico: + + - **Fluxo Óptico Denso** calcula o campo vetorial que mostra para cada pixel onde ele está se movendo. + - **Fluxo Óptico Esparso** é baseado em pegar algumas características distintivas na imagem (por exemplo, bordas) e construir sua trajetória de quadro a quadro. + +![Imagem de Fluxo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.br.png) + +> Imagem de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Notebooks de Exemplo: OpenCV [experimente OpenCV em Ação](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Vamos fazer alguns experimentos com OpenCV explorando [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +## Conclusão + +Às vezes, tarefas relativamente complexas, como detecção de movimento ou detecção de pontas dos dedos, podem ser resolvidas puramente por visão computacional. Assim, é muito útil conhecer as técnicas básicas de visão computacional e o que bibliotecas como OpenCV podem fazer. + +## 🚀 Desafio + +Assista a [este vídeo](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) do AI Show para aprender sobre o projeto Cortic Tigers e como eles construíram uma solução baseada em blocos para democratizar tarefas de visão computacional via um robô. Pesquise outros projetos como este que ajudam a introduzir novos aprendizes no campo. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Revisão e Autoestudo + +Leia mais sobre fluxo óptico [neste ótimo tutorial](https://learnopencv.com/optical-flow-in-opencv/). + +## [Tarefa](lab/README.md) + +Neste laboratório, você gravará um vídeo com gestos simples, e seu objetivo será extrair movimentos para cima/baixo/esquerda/direita usando fluxo óptico. + +Quadro de Movimento da Palma + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/br/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..5a24b0bc --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Detectando Movimentos usando Optical Flow + +Tarefa de laboratório do [Currículo de IA para Iniciantes](https://aka.ms/ai-beginners). + +## Tarefa + +Considere [este vídeo](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), no qual a palma da mão de uma pessoa se move para a esquerda/direita/cima/baixo em um fundo estável. + +**Seu objetivo** será usar Optical Flow para determinar quais partes do vídeo contêm movimentos para cima, para baixo, para a esquerda ou para a direita. + +**Objetivo adicional** seria rastrear o movimento da palma/dos dedos usando o tom de pele, conforme descrito [neste post do blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ou [aqui](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Notebook Inicial + +Comece o laboratório abrindo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Conclusão + +Às vezes, tarefas relativamente complexas, como detecção de movimento ou detecção de ponta dos dedos, podem ser resolvidas puramente por visão computacional. Por isso, é muito útil saber o que bibliotecas como OpenCV podem fazer. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/br/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..5dd27112 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Arquiteturas Conhecidas de CNN + +### VGG-16 + +VGG-16 é uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014. Ela possui a seguinte estrutura de camadas: + +![Camadas do ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.br.jpg) + +Como você pode ver, a VGG segue uma arquitetura piramidal tradicional, que é uma sequência de camadas de convolução e pooling. + +![Pirâmide do ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.br.jpg) + +> Imagem de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet é uma família de modelos proposta pela Microsoft Research em 2015. A ideia principal da ResNet é usar **blocos residuais**: + + + +> Imagem deste [artigo](https://arxiv.org/pdf/1512.03385.pdf) + +A razão para usar a passagem de identidade é fazer com que a camada preveja **a diferença** entre o resultado de uma camada anterior e a saída do bloco residual - daí o nome *residual*. Esses blocos são muito mais fáceis de treinar, e é possível construir redes com centenas desses blocos (as variantes mais comuns são ResNet-52, ResNet-101 e ResNet-152). + +Você também pode pensar nessa rede como sendo capaz de ajustar sua complexidade ao conjunto de dados. Inicialmente, quando você começa a treinar a rede, os valores dos pesos são pequenos, e a maior parte do sinal passa pelas camadas de identidade. À medida que o treinamento avança e os pesos se tornam maiores, a importância dos parâmetros da rede cresce, e a rede se ajusta para acomodar o poder expressivo necessário para classificar corretamente as imagens de treinamento. + +### Google Inception + +A arquitetura Google Inception leva essa ideia um passo adiante e constrói cada camada da rede como uma combinação de vários caminhos diferentes: + + + +> Imagem de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Aqui, precisamos enfatizar o papel das convoluções 1x1, porque, à primeira vista, elas não fazem sentido. Por que precisaríamos passar pela imagem com um filtro 1x1? No entanto, é importante lembrar que os filtros de convolução também trabalham com vários canais de profundidade (originalmente - cores RGB, em camadas subsequentes - canais para diferentes filtros), e a convolução 1x1 é usada para misturar esses canais de entrada usando diferentes pesos treináveis. Ela também pode ser vista como uma redução de dimensionalidade (pooling) na dimensão dos canais. + +Aqui está [um bom artigo sobre convolução 1x1](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) e [o artigo original](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet é uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se você tiver poucos recursos e puder sacrificar um pouco de precisão. A ideia principal por trás deles é a chamada **convolução separável por profundidade**, que permite representar filtros de convolução como uma composição de convoluções espaciais e convoluções 1x1 sobre os canais de profundidade. Isso reduz significativamente o número de parâmetros, tornando a rede menor em tamanho e também mais fácil de treinar com menos dados. + +Aqui está [um bom artigo sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Conclusão + +Nesta unidade, você aprendeu o conceito principal por trás das redes neurais de visão computacional - redes convolucionais. Arquiteturas reais que alimentam classificação de imagens, detecção de objetos e até redes de geração de imagens são todas baseadas em CNNs, apenas com mais camadas e alguns truques adicionais de treinamento. + +## 🚀 Desafio + +Nos notebooks que acompanham esta unidade, há anotações no final sobre como obter maior precisão. Faça alguns experimentos para ver se você consegue alcançar uma precisão maior. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Revisão e Autoestudo + +Embora as CNNs sejam mais frequentemente usadas para tarefas de Visão Computacional, elas são geralmente boas para extrair padrões de tamanho fixo. Por exemplo, se estivermos lidando com sons, também podemos querer usar CNNs para procurar padrões específicos no sinal de áudio - nesse caso, os filtros seriam unidimensionais (e essa CNN seria chamada de 1D-CNN). Além disso, às vezes uma 3D-CNN é usada para extrair características em um espaço multidimensional, como certos eventos ocorrendo em vídeos - a CNN pode capturar certos padrões de mudança de características ao longo do tempo. Faça uma revisão e autoestudo sobre outras tarefas que podem ser realizadas com CNNs. + +## [Tarefa](lab/README.md) + +Neste laboratório, sua tarefa é classificar diferentes raças de gatos e cães. Essas imagens são mais complexas do que o conjunto de dados MNIST, possuem dimensões maiores e há mais de 10 classes. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/br/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..301d3a30 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Redes Neurais Convolucionais + +Já vimos anteriormente que redes neurais são bastante eficazes ao lidar com imagens, e até mesmo um perceptron de uma única camada é capaz de reconhecer dígitos manuscritos do conjunto de dados MNIST com uma precisão razoável. No entanto, o conjunto de dados MNIST é muito especial, pois todos os dígitos estão centralizados na imagem, o que torna a tarefa mais simples. + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Na vida real, queremos ser capazes de reconhecer objetos em uma imagem independentemente de sua localização exata. A visão computacional é diferente da classificação genérica, porque, ao tentar encontrar um determinado objeto na imagem, estamos analisando a imagem em busca de **padrões** específicos e suas combinações. Por exemplo, ao procurar por um gato, podemos primeiro buscar por linhas horizontais, que podem formar os bigodes, e então uma certa combinação de bigodes pode nos indicar que se trata de uma imagem de um gato. A posição relativa e a presença de certos padrões são importantes, e não sua posição exata na imagem. + +Para extrair padrões, utilizaremos o conceito de **filtros convolucionais**. Como você sabe, uma imagem é representada por uma matriz 2D ou um tensor 3D com profundidade de cor. Aplicar um filtro significa que pegamos uma matriz relativamente pequena chamada de **kernel do filtro**, e para cada pixel na imagem original calculamos a média ponderada com os pontos vizinhos. Podemos imaginar isso como uma pequena janela deslizando sobre toda a imagem e calculando a média de todos os pixels de acordo com os pesos na matriz do kernel do filtro. + +![Filtro de Borda Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.br.png) | ![Filtro de Borda Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.br.png) +----|---- + +> Imagem por Dmitry Soshnikov + +Por exemplo, se aplicarmos filtros de borda vertical e horizontal 3x3 aos dígitos do MNIST, podemos destacar (por exemplo, obter valores altos) onde há bordas verticais e horizontais na imagem original. Assim, esses dois filtros podem ser usados para "procurar" bordas. Da mesma forma, podemos projetar diferentes filtros para buscar outros padrões de baixo nível: + +> Imagem do [Banco de Filtros Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +No entanto, embora possamos projetar manualmente os filtros para extrair alguns padrões, também podemos projetar a rede de forma que ela aprenda os padrões automaticamente. Essa é uma das principais ideias por trás das CNNs. + +## Principais ideias por trás das CNNs + +O funcionamento das CNNs baseia-se nas seguintes ideias importantes: + +* Filtros convolucionais podem extrair padrões. +* Podemos projetar a rede de forma que os filtros sejam treinados automaticamente. +* Podemos usar a mesma abordagem para encontrar padrões em características de alto nível, não apenas na imagem original. Assim, a extração de características nas CNNs funciona em uma hierarquia de características, começando com combinações de pixels de baixo nível até combinações de alto nível de partes da imagem. + +![Extração Hierárquica de Características](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.br.png) + +> Imagem de [um artigo de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), baseado em [sua pesquisa](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Exercícios: Redes Neurais Convolucionais + +Vamos continuar explorando como as redes neurais convolucionais funcionam e como podemos obter filtros treináveis, trabalhando nos notebooks correspondentes: + +* [Redes Neurais Convolucionais - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Redes Neurais Convolucionais - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Arquitetura em Pirâmide + +A maioria das CNNs usadas para processamento de imagens segue uma chamada arquitetura em pirâmide. A primeira camada convolucional aplicada às imagens originais geralmente possui um número relativamente baixo de filtros (8-16), que correspondem a diferentes combinações de pixels, como linhas horizontais/verticais ou traços. No nível seguinte, reduzimos a dimensão espacial da rede e aumentamos o número de filtros, o que corresponde a mais combinações possíveis de características simples. Com cada camada, à medida que avançamos em direção ao classificador final, as dimensões espaciais da imagem diminuem e o número de filtros aumenta. + +Como exemplo, vejamos a arquitetura do VGG-16, uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014: + +![Camadas do ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.br.jpg) + +![Pirâmide do ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.br.jpg) + +> Imagem de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Arquiteturas de CNN Mais Conhecidas + +[Continue seus estudos sobre as arquiteturas de CNN mais conhecidas](CNN_Architectures.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/br/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..1b669cbf --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Classificação de Rostos de Animais de Estimação + +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Imagine que você precisa desenvolver um aplicativo para um berçário de animais de estimação para catalogar todos os animais. Uma das grandes funcionalidades de tal aplicativo seria identificar automaticamente a raça a partir de uma fotografia. Isso pode ser feito com sucesso utilizando redes neurais. + +Você precisa treinar uma rede neural convolucional para classificar diferentes raças de gatos e cachorros usando o dataset **Pet Faces**. + +## O Dataset + +Usaremos o dataset **Pet Faces**, derivado do dataset de animais de estimação [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Ele contém 35 raças diferentes de cães e gatos. + +![Dataset com o qual trabalharemos](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.br.png) + +Para baixar o dataset, use este trecho de código: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Iniciando o Notebook + +Comece o trabalho prático abrindo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Conclusão + +Você resolveu um problema relativamente complexo de classificação de imagens do zero! Havia muitas classes, e mesmo assim você conseguiu obter uma precisão razoável! Também faz sentido medir a precisão top-k, porque é fácil confundir algumas classes que não são claramente diferentes, mesmo para seres humanos. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/br/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..3bb78155 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Redes Pré-treinadas e Aprendizado por Transferência + +Treinar redes neurais convolucionais (CNNs) pode levar muito tempo e requer uma grande quantidade de dados. No entanto, grande parte do tempo é gasto aprendendo os melhores filtros de baixo nível que uma rede pode usar para extrair padrões de imagens. Surge então uma pergunta natural: podemos usar uma rede neural treinada em um conjunto de dados e adaptá-la para classificar imagens diferentes sem precisar de um processo completo de treinamento? + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Essa abordagem é chamada de **aprendizado por transferência**, porque transferimos algum conhecimento de um modelo de rede neural para outro. No aprendizado por transferência, geralmente começamos com um modelo pré-treinado, que foi treinado em um grande conjunto de dados de imagens, como o **ImageNet**. Esses modelos já conseguem extrair diferentes características de imagens genéricas, e em muitos casos, apenas construir um classificador em cima dessas características extraídas pode gerar bons resultados. + +> ✅ Aprendizado por Transferência é um termo encontrado em outras áreas acadêmicas, como Educação. Ele se refere ao processo de transferir conhecimento de um domínio e aplicá-lo em outro. + +## Modelos Pré-treinados como Extratores de Características + +As redes convolucionais que discutimos na seção anterior contêm várias camadas, cada uma responsável por extrair características da imagem, começando com combinações de pixels de baixo nível (como linhas horizontais/verticais ou traços), até combinações de características de nível mais alto, correspondendo a coisas como o olho de uma chama. Se treinarmos uma CNN em um conjunto de dados suficientemente grande e diverso, a rede deve aprender a extrair essas características comuns. + +Tanto o Keras quanto o PyTorch possuem funções para carregar facilmente pesos de redes neurais pré-treinadas para algumas arquiteturas comuns, a maioria das quais foi treinada em imagens do ImageNet. As mais utilizadas são descritas na página [Arquiteturas de CNN](../07-ConvNets/CNN_Architectures.md) da lição anterior. Em particular, você pode considerar usar uma das seguintes: + +* **VGG-16/VGG-19**, que são modelos relativamente simples, mas ainda oferecem boa precisão. Usar o VGG como uma primeira tentativa é uma boa escolha para ver como o aprendizado por transferência funciona. +* **ResNet**, uma família de modelos proposta pela Microsoft Research em 2015. Eles possuem mais camadas e, portanto, exigem mais recursos. +* **MobileNet**, uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se você tiver poucos recursos e puder sacrificar um pouco de precisão. + +Aqui estão exemplos de características extraídas de uma imagem de um gato pela rede VGG-16: + +![Características extraídas pela VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.br.png) + +## Conjunto de Dados de Gatos vs. Cachorros + +Neste exemplo, usaremos um conjunto de dados de [Gatos e Cachorros](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que é muito próximo de um cenário real de classificação de imagens. + +## ✍️ Exercício: Aprendizado por Transferência + +Vamos ver o aprendizado por transferência em ação nos notebooks correspondentes: + +* [Aprendizado por Transferência - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Aprendizado por Transferência - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualizando o Gato Adversarial + +Uma rede neural pré-treinada contém diferentes padrões em seu *cérebro*, incluindo noções de um **gato ideal** (assim como um cachorro ideal, uma zebra ideal, etc.). Seria interessante de alguma forma **visualizar essa imagem**. No entanto, isso não é simples, porque os padrões estão espalhados pelos pesos da rede e organizados em uma estrutura hierárquica. + +Uma abordagem que podemos adotar é começar com uma imagem aleatória e, em seguida, tentar usar a técnica de **otimização por descida de gradiente** para ajustar essa imagem de forma que a rede comece a pensar que é um gato. + +![Loop de Otimização de Imagem](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.br.png) + +No entanto, se fizermos isso, obteremos algo muito semelhante a um ruído aleatório. Isso ocorre porque *existem muitas maneiras de fazer a rede pensar que a imagem de entrada é um gato*, incluindo algumas que não fazem sentido visualmente. Embora essas imagens contenham muitos padrões típicos de um gato, não há nada que as restrinja a serem visualmente distintas. + +Para melhorar o resultado, podemos adicionar outro termo à função de perda, chamado de **perda de variação**. É uma métrica que mostra o quão semelhantes são os pixels vizinhos da imagem. Minimizar a perda de variação torna a imagem mais suave e elimina o ruído, revelando assim padrões visualmente mais atraentes. Aqui está um exemplo de tais imagens "ideais", classificadas como gato e zebra com alta probabilidade: + +![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.br.png) | ![Zebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.br.png) +-----|----- +*Gato Ideal* | *Zebra Ideal* + +Uma abordagem semelhante pode ser usada para realizar os chamados **ataques adversariais** em uma rede neural. Suponha que queremos enganar uma rede neural e fazer um cachorro parecer um gato. Se pegarmos a imagem de um cachorro, que é reconhecida pela rede como um cachorro, podemos ajustá-la um pouco usando a otimização por descida de gradiente, até que a rede comece a classificá-la como um gato: + +![Imagem de um Cachorro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.br.png) | ![Imagem de um cachorro classificada como um gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.br.png) +-----|----- +*Imagem original de um cachorro* | *Imagem de um cachorro classificada como um gato* + +Veja o código para reproduzir os resultados acima no seguinte notebook: + +* [Gato Ideal e Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Conclusão + +Usando o aprendizado por transferência, você pode rapidamente montar um classificador para uma tarefa personalizada de classificação de objetos e alcançar alta precisão. Você pode perceber que tarefas mais complexas que estamos resolvendo agora exigem maior poder computacional e não podem ser facilmente resolvidas em uma CPU. Na próxima unidade, tentaremos usar uma implementação mais leve para treinar o mesmo modelo usando menos recursos computacionais, resultando em uma precisão ligeiramente menor. + +## 🚀 Desafio + +Nos notebooks que acompanham, há notas no final sobre como o aprendizado por transferência funciona melhor com dados de treinamento um pouco semelhantes (talvez um novo tipo de animal). Faça alguns experimentos com tipos completamente novos de imagens para ver quão bem ou mal seus modelos de aprendizado por transferência se saem. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisão e Autoestudo + +Leia o arquivo [TrainingTricks.md](TrainingTricks.md) para aprofundar seu conhecimento sobre outras formas de treinar seus modelos. + +## [Tarefa](lab/README.md) + +Neste laboratório, usaremos o conjunto de dados real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) de animais de estimação, com 35 raças de gatos e cachorros, e construiremos um classificador usando aprendizado por transferência. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/br/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..911989ba --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Truques para Treinamento de Deep Learning + +À medida que as redes neurais se tornam mais profundas, o processo de treinamento delas se torna cada vez mais desafiador. Um dos principais problemas é o chamado [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) (gradientes que desaparecem) ou [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) (gradientes que explodem). [Este artigo](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) oferece uma boa introdução a esses problemas. + +Para tornar o treinamento de redes profundas mais eficiente, existem algumas técnicas que podem ser utilizadas. + +## Mantendo os valores em um intervalo razoável + +Para tornar os cálculos numéricos mais estáveis, queremos garantir que todos os valores dentro da nossa rede neural estejam em uma escala razoável, tipicamente [-1..1] ou [0..1]. Não é um requisito muito rigoroso, mas a natureza dos cálculos em ponto flutuante é tal que valores de magnitudes diferentes não podem ser manipulados com precisão juntos. Por exemplo, se somarmos 10-10 e 1010, provavelmente obteremos 1010, porque o valor menor seria "convertido" para a mesma ordem do maior, e assim a mantissa seria perdida. + +A maioria das funções de ativação possui não-linearidades em torno de [-1..1], e, portanto, faz sentido escalar todos os dados de entrada para o intervalo [-1..1] ou [0..1]. + +## Inicialização de Pesos + +Idealmente, queremos que os valores estejam na mesma faixa após passarem pelas camadas da rede. Assim, é importante inicializar os pesos de forma a preservar a distribuição dos valores. + +A distribuição normal **N(0,1)** não é uma boa ideia, porque se tivermos *n* entradas, o desvio padrão da saída será *n*, e os valores provavelmente sairão do intervalo [0..1]. + +As seguintes inicializações são frequentemente usadas: + +- Distribuição uniforme -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** garante que, para entradas com média zero e desvio padrão de 1, a mesma média/desvio padrão será mantida +- **N(0,√2/(n_in+n_out))** -- a chamada **inicialização de Xavier** (`glorot`), que ajuda a manter os sinais na faixa durante a propagação direta e reversa + +## Normalização em Lote (Batch Normalization) + +Mesmo com uma inicialização adequada dos pesos, eles podem ficar arbitrariamente grandes ou pequenos durante o treinamento, o que levará os sinais para fora da faixa adequada. Podemos trazer os sinais de volta usando uma das técnicas de **normalização**. Embora existam várias delas (normalização de pesos, normalização de camadas), a mais utilizada é a Normalização em Lote. + +A ideia da **normalização em lote** é levar em conta todos os valores dentro do minibatch e realizar a normalização (ou seja, subtrair a média e dividir pelo desvio padrão) com base nesses valores. Ela é implementada como uma camada da rede que realiza essa normalização após aplicar os pesos, mas antes da função de ativação. Como resultado, é provável que vejamos maior precisão final e treinamento mais rápido. + +Aqui está o [artigo original](https://arxiv.org/pdf/1502.03167.pdf) sobre normalização em lote, a [explicação na Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) e [um bom post introdutório](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (e outro [em russo](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** é uma técnica interessante que remove uma certa porcentagem de neurônios aleatórios durante o treinamento. Ele também é implementado como uma camada com um parâmetro (percentual de neurônios a serem removidos, tipicamente 10%-50%), e durante o treinamento ele zera elementos aleatórios do vetor de entrada antes de passá-lo para a próxima camada. + +Embora isso possa parecer uma ideia estranha, você pode ver o efeito do dropout no treinamento de um classificador de dígitos MNIST no notebook [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Ele acelera o treinamento e permite alcançar maior precisão em menos épocas de treinamento. + +Esse efeito pode ser explicado de várias maneiras: + +- Pode ser considerado como um fator de choque aleatório para o modelo, que tira a otimização de mínimos locais +- Pode ser considerado como uma *média implícita de modelos*, porque podemos dizer que durante o dropout estamos treinando modelos ligeiramente diferentes + +> *Algumas pessoas dizem que, quando uma pessoa bêbada tenta aprender algo, ela se lembrará melhor disso na manhã seguinte, em comparação com uma pessoa sóbria, porque um cérebro com alguns neurônios "defeituosos" tenta se adaptar melhor para captar o significado. Nunca testamos se isso é verdade ou não.* + +## Prevenindo Overfitting + +Um dos aspectos muito importantes do deep learning é ser capaz de prevenir o [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Embora possa ser tentador usar um modelo de rede neural muito poderoso, devemos sempre equilibrar o número de parâmetros do modelo com o número de amostras de treinamento. + +> Certifique-se de entender o conceito de [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que introduzimos anteriormente! + +Existem várias maneiras de prevenir o overfitting: + +- Parada antecipada (Early stopping) -- monitorar continuamente o erro no conjunto de validação e interromper o treinamento quando o erro de validação começar a aumentar. +- Decaimento de pesos explícito / Regularização -- adicionar uma penalidade extra à função de perda para valores absolutos altos dos pesos, o que evita que o modelo produza resultados muito instáveis +- Média de Modelos -- treinar vários modelos e depois fazer a média dos resultados. Isso ajuda a minimizar a variância. +- Dropout (Média Implícita de Modelos) + +## Otimizadores / Algoritmos de Treinamento + +Outro aspecto importante do treinamento é escolher um bom algoritmo de treinamento. Embora o **gradiente descendente** clássico seja uma escolha razoável, ele pode, às vezes, ser muito lento ou resultar em outros problemas. + +No deep learning, usamos o **Stochastic Gradient Descent** (SGD), que é um gradiente descendente aplicado a minibatches, selecionados aleatoriamente do conjunto de treinamento. Os pesos são ajustados usando esta fórmula: + +wt+1 = wt - η∇ℒ + +### Momentum + +No **momentum SGD**, mantemos uma parte do gradiente dos passos anteriores. É semelhante a quando estamos nos movendo com inércia e recebemos um empurrão em uma direção diferente; nossa trajetória não muda imediatamente, mas mantém parte do movimento original. Aqui introduzimos outro vetor v para representar a *velocidade*: + +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt + vt+1 + +Aqui, o parâmetro γ indica a extensão em que levamos a inércia em conta: γ=0 corresponde ao SGD clássico; γ=1 é uma equação de movimento puro. + +### Adam, Adagrad, etc. + +Como em cada camada multiplicamos os sinais por alguma matriz Wi, dependendo de ||Wi||, o gradiente pode diminuir e ficar próximo de 0 ou crescer indefinidamente. Esse é o cerne do problema de Exploding/Vanishing Gradients. + +Uma das soluções para esse problema é usar apenas a direção do gradiente na equação e ignorar o valor absoluto, ou seja: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), onde ||∇ℒ|| = √∑(∇ℒ)2 + +Esse algoritmo é chamado de **Adagrad**. Outros algoritmos que usam a mesma ideia: **RMSProp**, **Adam** + +> **Adam** é considerado um algoritmo muito eficiente para muitas aplicações, então, se você não tiver certeza de qual usar, use Adam. + +### Gradient clipping + +Gradient clipping é uma extensão da ideia acima. Quando ||∇ℒ|| ≤ θ, consideramos o gradiente original na otimização dos pesos, e quando ||∇ℒ|| > θ, dividimos o gradiente pela sua norma. Aqui, θ é um parâmetro; na maioria dos casos, podemos usar θ=1 ou θ=10. + +### Decaimento da taxa de aprendizado + +O sucesso do treinamento frequentemente depende do parâmetro de taxa de aprendizado η. É lógico supor que valores maiores de η resultam em treinamento mais rápido, algo que geralmente queremos no início do treinamento, e então valores menores de η permitem ajustar melhor a rede. Assim, na maioria dos casos, queremos diminuir η ao longo do treinamento. + +Isso pode ser feito multiplicando η por algum número (por exemplo, 0,98) após cada época de treinamento ou usando um **cronograma de taxa de aprendizado** mais complexo. + +## Diferentes Arquiteturas de Redes + +Selecionar a arquitetura de rede certa para o seu problema pode ser complicado. Normalmente, escolheríamos uma arquitetura que tenha se mostrado eficaz para nossa tarefa específica (ou uma similar). Aqui está uma [boa visão geral](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) de arquiteturas de redes neurais para visão computacional. + +> É importante selecionar uma arquitetura que seja poderosa o suficiente para o número de amostras de treinamento que temos. Selecionar um modelo muito poderoso pode resultar em [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Outra boa abordagem seria usar uma arquitetura que se ajuste automaticamente à complexidade necessária. Até certo ponto, as arquiteturas **ResNet** e **Inception** são autoajustáveis. [Mais sobre arquiteturas para visão computacional](../07-ConvNets/CNN_Architectures.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/br/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..dcc9bfe3 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Classificação de Oxford Pets usando Transfer Learning + +Trabalho prático do [Currículo AI for Beginners](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Imagine que você precisa desenvolver um aplicativo para uma creche de animais para catalogar todos os pets. Uma das grandes funcionalidades de tal aplicativo seria identificar automaticamente a raça a partir de uma fotografia. Neste exercício, usaremos transfer learning para classificar imagens reais de animais de estimação do conjunto de dados [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## O Conjunto de Dados + +Usaremos o conjunto de dados original [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contém 35 raças diferentes de cães e gatos. + +Para baixar o conjunto de dados, use este trecho de código: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Iniciando o Notebook + +Comece o exercício abrindo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Conclusão + +Transfer learning e redes pré-treinadas nos permitem resolver problemas reais de classificação de imagens de forma relativamente simples. No entanto, redes pré-treinadas funcionam bem em imagens de tipos semelhantes, e se começarmos a classificar imagens muito diferentes (por exemplo, imagens médicas), é provável que obtenhamos resultados muito piores. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/br/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..8f6ee3fc --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoencoders + +Ao treinar CNNs, um dos problemas é que precisamos de muitos dados rotulados. No caso de classificação de imagens, precisamos separar as imagens em diferentes classes, o que exige esforço manual. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +No entanto, podemos querer usar dados brutos (não rotulados) para treinar extratores de características de CNN, o que é chamado de **aprendizado auto-supervisionado**. Em vez de rótulos, usaremos imagens de treinamento como entrada e saída da rede. A ideia principal do **autoencoder** é que teremos uma **rede codificadora** que converte a imagem de entrada em algum **espaço latente** (normalmente é apenas um vetor de tamanho menor), e então uma **rede decodificadora**, cujo objetivo será reconstruir a imagem original. + +> ✅ Um [autoencoder](https://wikipedia.org/wiki/Autoencoder) é "um tipo de rede neural artificial usada para aprender codificações eficientes de dados não rotulados." + +Como estamos treinando um autoencoder para capturar o máximo de informações da imagem original possível para uma reconstrução precisa, a rede tenta encontrar a melhor **representação** das imagens de entrada para capturar seu significado. + +![Diagrama do Autoencoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.br.jpg) + +> Imagem do [blog do Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Cenários para o uso de Autoencoders + +Embora reconstruir imagens originais possa não parecer útil por si só, existem alguns cenários em que os autoencoders são especialmente úteis: + +* **Reduzir a dimensionalidade de imagens para visualização** ou **treinar representações de imagens**. Geralmente, autoencoders oferecem melhores resultados do que PCA, porque levam em conta a natureza espacial das imagens e características hierárquicas. +* **Remoção de ruído**, ou seja, eliminar ruídos da imagem. Como o ruído carrega muitas informações inúteis, o autoencoder não consegue encaixar tudo no espaço latente relativamente pequeno e, assim, captura apenas a parte importante da imagem. Ao treinar removedores de ruído, começamos com imagens originais e usamos imagens com ruído artificialmente adicionado como entrada para o autoencoder. +* **Super-resolução**, aumentando a resolução da imagem. Começamos com imagens de alta resolução e usamos a imagem com resolução mais baixa como entrada do autoencoder. +* **Modelos generativos**. Uma vez treinado o autoencoder, a parte decodificadora pode ser usada para criar novos objetos a partir de vetores latentes aleatórios. + +## Autoencoders Variacionais (VAE) + +Autoencoders tradicionais reduzem a dimensionalidade dos dados de entrada de alguma forma, identificando as características importantes das imagens de entrada. No entanto, os vetores latentes frequentemente não fazem muito sentido. Em outras palavras, usando o conjunto de dados MNIST como exemplo, identificar quais dígitos correspondem a diferentes vetores latentes não é uma tarefa fácil, porque vetores latentes próximos não necessariamente correspondem aos mesmos dígitos. + +Por outro lado, para treinar modelos *generativos*, é melhor ter algum entendimento do espaço latente. Essa ideia nos leva ao **autoencoder variacional** (VAE). + +O VAE é um autoencoder que aprende a prever a *distribuição estatística* dos parâmetros latentes, chamada de **distribuição latente**. Por exemplo, podemos querer que os vetores latentes sejam distribuídos normalmente com uma média zmean e um desvio padrão zsigma (tanto a média quanto o desvio padrão são vetores de alguma dimensionalidade d). O codificador no VAE aprende a prever esses parâmetros, e então o decodificador pega um vetor aleatório dessa distribuição para reconstruir o objeto. + +Resumindo: + + * A partir do vetor de entrada, prevemos `z_mean` e `z_log_sigma` (em vez de prever o desvio padrão diretamente, prevemos seu logaritmo) + * Amostramos um vetor `sample` da distribuição N(zmean,exp(zlog\_sigma)) + * O decodificador tenta decodificar a imagem original usando `sample` como vetor de entrada + + + +> Imagem deste [post no blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) por Isaak Dykeman + +Autoencoders variacionais usam uma função de perda complexa que consiste em duas partes: + +* **Perda de reconstrução** é a função de perda que mostra o quão próxima a imagem reconstruída está do alvo (pode ser o Erro Quadrático Médio, ou MSE). É a mesma função de perda usada em autoencoders normais. +* **Perda KL**, que garante que as distribuições das variáveis latentes permaneçam próximas da distribuição normal. É baseada na noção de [divergência de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - uma métrica para estimar quão semelhantes duas distribuições estatísticas são. + +Uma vantagem importante dos VAEs é que eles permitem gerar novas imagens com relativa facilidade, porque sabemos de qual distribuição amostrar os vetores latentes. Por exemplo, se treinarmos um VAE com vetor latente 2D no MNIST, podemos variar os componentes do vetor latente para obter diferentes dígitos: + +vaemnist + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +Observe como as imagens se misturam, à medida que começamos a obter vetores latentes de diferentes partes do espaço de parâmetros latentes. Também podemos visualizar esse espaço em 2D: + +vaemnist cluster + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Exercícios: Autoencoders + +Saiba mais sobre autoencoders nestes notebooks correspondentes: + +* [Autoencoders no TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders no PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Propriedades dos Autoencoders + +* **Específicos para os Dados** - eles funcionam bem apenas com o tipo de imagens nos quais foram treinados. Por exemplo, se treinarmos uma rede de super-resolução em flores, ela não funcionará bem em retratos. Isso ocorre porque a rede pode produzir imagens de maior resolução aproveitando os detalhes finos aprendidos a partir do conjunto de dados de treinamento. +* **Com perdas** - a imagem reconstruída não é idêntica à imagem original. A natureza da perda é definida pela *função de perda* usada durante o treinamento. +* Funciona com **dados não rotulados** + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Conclusão + +Nesta lição, você aprendeu sobre os vários tipos de autoencoders disponíveis para o cientista de IA. Aprendeu como construí-los e como usá-los para reconstruir imagens. Também aprendeu sobre o VAE e como usá-lo para gerar novas imagens. + +## 🚀 Desafio + +Nesta lição, você aprendeu sobre o uso de autoencoders para imagens. Mas eles também podem ser usados para música! Confira o projeto [MusicVAE](https://magenta.tensorflow.org/music-vae) do Magenta, que usa autoencoders para aprender a reconstruir música. Faça alguns [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) com esta biblioteca para ver o que você pode criar. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisão e Autoestudo + +Para referência, leia mais sobre autoencoders nestes recursos: + +* [Construindo Autoencoders no Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Post no blog NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencoders Variacionais Explicados](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencoders Variacionais Condicionais](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Tarefa + +No final deste [notebook usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), você encontrará uma 'tarefa' - use-a como sua tarefa. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/10-GANs/README.md b/translations/br/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..03279cff --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Redes Adversárias Generativas + +Na seção anterior, aprendemos sobre **modelos generativos**: modelos que podem gerar novas imagens semelhantes às do conjunto de dados de treinamento. O VAE foi um bom exemplo de modelo generativo. + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +No entanto, se tentarmos gerar algo realmente significativo, como uma pintura em resolução razoável, com o VAE, veremos que o treinamento não converge bem. Para esse caso de uso, devemos aprender sobre outra arquitetura especificamente voltada para modelos generativos - as **Redes Adversárias Generativas**, ou GANs. + +A ideia principal de uma GAN é ter duas redes neurais que serão treinadas uma contra a outra: + + + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Um pouco de vocabulário: +> * **Gerador** é uma rede que recebe um vetor aleatório e produz uma imagem como resultado. +> * **Discriminador** é uma rede que recebe uma imagem e deve dizer se é uma imagem real (do conjunto de dados de treinamento) ou se foi gerada por um gerador. Essencialmente, é um classificador de imagens. + +### Discriminador + +A arquitetura do discriminador não difere de uma rede de classificação de imagens comum. No caso mais simples, pode ser um classificador totalmente conectado, mas provavelmente será uma [rede convolucional](../07-ConvNets/README.md). + +> ✅ Uma GAN baseada em redes convolucionais é chamada de [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Um discriminador CNN consiste nas seguintes camadas: várias convoluções+poolings (com tamanho espacial decrescente) e uma ou mais camadas totalmente conectadas para obter o "vetor de características", e um classificador binário final. + +> ✅ Um 'pooling' neste contexto é uma técnica que reduz o tamanho da imagem. "As camadas de pooling reduzem as dimensões dos dados combinando as saídas de clusters de neurônios em uma camada em um único neurônio na próxima camada." - [fonte](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Gerador + +Um Gerador é um pouco mais complicado. Você pode considerá-lo como um discriminador invertido. Começando de um vetor latente (no lugar de um vetor de características), ele possui uma camada totalmente conectada para convertê-lo no tamanho/forma necessários, seguida por deconvoluções+upscaling. Isso é semelhante à parte de *decodificador* de um [autoencoder](../09-Autoencoders/README.md). + +> ✅ Como a camada de convolução é implementada como um filtro linear percorrendo a imagem, a deconvolução é essencialmente semelhante à convolução e pode ser implementada usando a mesma lógica de camada. + + + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +### Treinando a GAN + +As GANs são chamadas de **adversárias** porque há uma competição constante entre o gerador e o discriminador. Durante essa competição, tanto o gerador quanto o discriminador melhoram, fazendo com que a rede aprenda a produzir imagens cada vez melhores. + +O treinamento ocorre em duas etapas: + +* **Treinando o discriminador**. Essa tarefa é bastante direta: geramos um lote de imagens com o gerador, rotulando-as como 0, o que significa imagem falsa, e pegamos um lote de imagens do conjunto de dados de entrada (com rótulo 1, imagem real). Obtemos uma *perda do discriminador* e realizamos o backpropagation. +* **Treinando o gerador**. Isso é um pouco mais complicado, porque não sabemos diretamente a saída esperada para o gerador. Pegamos toda a rede GAN, composta por um gerador seguido de um discriminador, alimentamos com alguns vetores aleatórios e esperamos que o resultado seja 1 (correspondente a imagens reais). Em seguida, congelamos os parâmetros do discriminador (não queremos que ele seja treinado nesta etapa) e realizamos o backpropagation. + +Durante esse processo, as perdas do gerador e do discriminador não diminuem significativamente. Na situação ideal, elas devem oscilar, correspondendo à melhoria de ambas as redes. + +## ✍️ Exercícios: GANs + +* [Notebook GAN em TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook GAN em PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problemas no treinamento de GANs + +As GANs são conhecidas por serem especialmente difíceis de treinar. Aqui estão alguns problemas: + +* **Colapso de modo**. Esse termo significa que o gerador aprende a produzir uma única imagem bem-sucedida que engana o discriminador, em vez de uma variedade de imagens diferentes. +* **Sensibilidade a hiperparâmetros**. Muitas vezes, você pode ver que uma GAN não converge de forma alguma e, de repente, uma redução na taxa de aprendizado leva à convergência. +* Manter um **equilíbrio** entre o gerador e o discriminador. Em muitos casos, a perda do discriminador pode cair para zero relativamente rápido, o que resulta no gerador sendo incapaz de continuar o treinamento. Para superar isso, podemos tentar definir taxas de aprendizado diferentes para o gerador e o discriminador ou pular o treinamento do discriminador se a perda já estiver muito baixa. +* Treinamento para **alta resolução**. Refletindo o mesmo problema dos autoencoders, esse problema é desencadeado porque reconstruir muitas camadas de uma rede convolucional leva a artefatos. Esse problema é geralmente resolvido com o chamado **crescimento progressivo**, onde primeiro algumas camadas são treinadas em imagens de baixa resolução e, em seguida, as camadas são "desbloqueadas" ou adicionadas. Outra solução seria adicionar conexões extras entre camadas e treinar várias resoluções ao mesmo tempo - veja este [artigo sobre Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) para mais detalhes. + +## Transferência de Estilo + +As GANs são uma ótima maneira de gerar imagens artísticas. Outra técnica interessante é a chamada **transferência de estilo**, que pega uma **imagem de conteúdo** e a redesenha em um estilo diferente, aplicando filtros de uma **imagem de estilo**. + +O funcionamento é o seguinte: +* Começamos com uma imagem de ruído aleatório (ou com uma imagem de conteúdo, mas para fins de entendimento é mais fácil começar com ruído aleatório). +* Nosso objetivo será criar uma imagem que seja próxima tanto da imagem de conteúdo quanto da imagem de estilo. Isso será determinado por duas funções de perda: + - **Perda de conteúdo** é calculada com base nas características extraídas pela CNN em algumas camadas da imagem atual e da imagem de conteúdo. + - **Perda de estilo** é calculada entre a imagem atual e a imagem de estilo de uma maneira inteligente usando matrizes de Gram (mais detalhes no [notebook de exemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Para tornar a imagem mais suave e remover o ruído, também introduzimos a **Perda de variação**, que calcula a distância média entre pixels vizinhos. +* O principal loop de otimização ajusta a imagem atual usando descida de gradiente (ou algum outro algoritmo de otimização) para minimizar a perda total, que é uma soma ponderada de todas as três perdas. + +## ✍️ Exemplo: [Transferência de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Conclusão + +Nesta lição, você aprendeu sobre GANs e como treiná-las. Você também aprendeu sobre os desafios especiais que esse tipo de Rede Neural pode enfrentar e algumas estratégias para superá-los. + +## 🚀 Desafio + +Execute o [notebook de Transferência de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) usando suas próprias imagens. + +## Revisão e Autoestudo + +Para referência, leia mais sobre GANs nestes recursos: + +* Marco Pasini, [10 Lições que Aprendi Treinando GANs por um Ano](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), uma arquitetura GAN *de facto* a ser considerada. +* [Criando Arte Generativa usando GANs no Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Tarefa + +Revise um dos dois notebooks associados a esta lição e re-treine a GAN com suas próprias imagens. O que você pode criar? + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/br/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..35ae415d --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Detecção de Objetos + +Os modelos de classificação de imagens que abordamos até agora tomam uma imagem e produzem um resultado categórico, como a classe 'número' em um problema MNIST. No entanto, em muitos casos, não queremos apenas saber que uma imagem retrata objetos - queremos determinar sua localização exata. Este é exatamente o objetivo da **detecção de objetos**. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Detecção de Objetos](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.br.png) + +> Imagem do [site YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Uma Abordagem Ingênua para Detecção de Objetos + +Suponha que queremos encontrar um gato em uma imagem. Uma abordagem muito ingênua para detecção de objetos seria a seguinte: + +1. Dividir a imagem em vários blocos. +2. Executar a classificação de imagem em cada bloco. +3. Os blocos que resultarem em uma ativação suficientemente alta podem ser considerados como contendo o objeto em questão. + +![Detecção Ingênua de Objetos](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.br.png) + +> *Imagem do [Notebook de Exercícios](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +No entanto, essa abordagem está longe de ser ideal, pois só permite que o algoritmo localize a caixa delimitadora do objeto de forma muito imprecisa. Para uma localização mais precisa, precisamos executar algum tipo de **regressão** para prever as coordenadas das caixas delimitadoras - e, para isso, precisamos de conjuntos de dados específicos. + +## Regressão para Detecção de Objetos + +[Este post no blog](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) oferece uma ótima introdução à detecção de formas. + +## Conjuntos de Dados para Detecção de Objetos + +Você pode encontrar os seguintes conjuntos de dados para essa tarefa: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 classes +* [COCO](http://cocodataset.org/#home) - Objetos Comuns em Contexto. 80 classes, caixas delimitadoras e máscaras de segmentação + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.br.jpg) + +## Métricas de Detecção de Objetos + +### Interseção sobre União + +Enquanto na classificação de imagens é fácil medir o desempenho do algoritmo, na detecção de objetos precisamos medir tanto a correção da classe quanto a precisão da localização inferida da caixa delimitadora. Para este último, usamos a chamada **Interseção sobre União** (IoU), que mede o quão bem duas caixas (ou duas áreas arbitrárias) se sobrepõem. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.br.png) + +> *Figura 2 deste [excelente post sobre IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +A ideia é simples - dividimos a área de interseção entre duas figuras pela área de sua união. Para duas áreas idênticas, IoU seria 1, enquanto para áreas completamente separadas será 0. Caso contrário, variará de 0 a 1. Normalmente, consideramos apenas as caixas delimitadoras para as quais IoU está acima de um determinado valor. + +### Precisão Média + +Suponha que queremos medir o quão bem uma determinada classe de objetos $C$ é reconhecida. Para medir isso, usamos a métrica de **Precisão Média**, que é calculada da seguinte forma: + +1. Considere a curva de Precisão-Recall que mostra a precisão dependendo de um valor de limiar de detecção (de 0 a 1). +2. Dependendo do limiar, detectaremos mais ou menos objetos na imagem, e diferentes valores de precisão e recall. +3. A curva terá a seguinte aparência: + + + +> *Imagem do [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +A Precisão Média para uma classe $C$ é a área sob essa curva. Mais precisamente, o eixo Recall é normalmente dividido em 10 partes, e a Precisão é calculada como a média de todos esses pontos: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP e IoU + +Consideramos apenas as detecções para as quais IoU está acima de um determinado valor. Por exemplo, no conjunto de dados PASCAL VOC, normalmente $\mbox{IoU Threshold} = 0.5$ é assumido, enquanto no COCO AP é medido para diferentes valores de $\mbox{IoU Threshold}$. + + + +> *Imagem do [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Precisão Média Global - mAP + +A principal métrica para Detecção de Objetos é chamada de **Precisão Média Global**, ou **mAP**. É o valor da Precisão Média, calculado como a média entre todas as classes de objetos, e às vezes também sobre $\mbox{IoU Threshold}$. Em mais detalhes, o processo de cálculo do **mAP** é descrito +[neste post](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), e também [aqui com exemplos de código](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Diferentes Abordagens para Detecção de Objetos + +Existem duas grandes classes de algoritmos de detecção de objetos: + +* **Redes de Proposta de Região** (R-CNN, Fast R-CNN, Faster R-CNN). A ideia principal é gerar **Regiões de Interesse** (ROI) e executar CNN sobre elas, procurando a ativação máxima. É um pouco semelhante à abordagem ingênua, com a exceção de que as ROIs são geradas de forma mais inteligente. Uma das principais desvantagens desses métodos é que eles são lentos, pois precisamos de muitas passagens do classificador CNN sobre a imagem. +* Métodos de **uma única passagem** (YOLO, SSD, RetinaNet). Nessas arquiteturas, projetamos a rede para prever classes e ROIs em uma única passagem. + +### R-CNN: CNN Baseada em Região + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) usa [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) para gerar uma estrutura hierárquica de regiões ROI, que são então passadas por extratores de características CNN e classificadores SVM para determinar a classe do objeto, e regressão linear para determinar as coordenadas da *caixa delimitadora*. [Artigo Oficial](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.br.png) + +> *Imagem de van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.br.png) + +> *Imagens deste [blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Essa abordagem é semelhante à R-CNN, mas as regiões são definidas após as camadas de convolução terem sido aplicadas. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.br.png) + +> Imagem do [Artigo Oficial](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +A ideia principal dessa abordagem é usar uma rede neural para prever ROIs - a chamada *Rede de Proposta de Região*. [Artigo](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.br.png) + +> Imagem do [Artigo Oficial](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Rede Totalmente Convolucional Baseada em Região + +Este algoritmo é ainda mais rápido que o Faster R-CNN. A ideia principal é a seguinte: + +1. Extraímos características usando ResNet-101. +2. As características são processadas por **Position-Sensitive Score Map**. Cada objeto de $C$ classes é dividido em $k\times k$ regiões, e treinamos para prever partes dos objetos. +3. Para cada parte das $k\times k$ regiões, todas as redes votam pelas classes de objetos, e a classe de objeto com o maior número de votos é selecionada. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.br.png) + +> Imagem do [Artigo Oficial](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO é um algoritmo de uma única passagem em tempo real. A ideia principal é a seguinte: + + * A imagem é dividida em regiões $S\times S$. + * Para cada região, **CNN** prevê $n$ objetos possíveis, coordenadas da *caixa delimitadora* e *confiança*=*probabilidade* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.br.png) + +> Imagem do [Artigo Oficial](https://arxiv.org/abs/1506.02640) + +### Outros Algoritmos + +* RetinaNet: [Artigo Oficial](https://arxiv.org/abs/1708.02002) + - [Implementação em PyTorch no Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementação em Keras](https://github.com/fizyr/keras-retinanet) + - [Detecção de Objetos com RetinaNet](https://keras.io/examples/vision/retinanet/) em Exemplos do Keras +* SSD (Single Shot Detector): [Artigo Oficial](https://arxiv.org/abs/1512.02325) + +## ✍️ Exercícios: Detecção de Objetos + +Continue seu aprendizado no seguinte notebook: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Conclusão + +Nesta lição, você fez um tour rápido por todas as várias maneiras de realizar a detecção de objetos! + +## 🚀 Desafio + +Leia estes artigos e notebooks sobre YOLO e experimente por conta própria: + +* [Bom post no blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) descrevendo YOLO + * [Site Oficial](https://pjreddie.com/darknet/yolo/) + * YOLO: [Implementação em Keras](https://github.com/experiencor/keras-yolo2), [notebook passo a passo](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Implementação em Keras](https://github.com/experiencor/keras-yolo2), [notebook passo a passo](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Revisão e Estudo Individual + +* [Detecção de Objetos](https://tjmachinelearning.com/lectures/1718/obj/) por Nikhil Sardana +* [Uma boa comparação de algoritmos de detecção de objetos](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Revisão de Algoritmos de Aprendizado Profundo para Detecção de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Uma Introdução Passo a Passo aos Algoritmos Básicos de Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementação de Faster R-CNN em Python para Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Tarefa: Detecção de Objetos](lab/README.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/br/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..6932aad7 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Detecção de Cabeças usando o Hollywood Heads Dataset + +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Contar o número de pessoas em uma transmissão de câmera de vigilância é uma tarefa importante que nos permite estimar o número de visitantes em lojas, horários de pico em restaurantes, etc. Para resolver essa tarefa, precisamos ser capazes de detectar cabeças humanas de diferentes ângulos. Para treinar um modelo de detecção de objetos para identificar cabeças humanas, podemos usar o [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). + +## O Conjunto de Dados + +O [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contém 369.846 cabeças humanas anotadas em 224.740 quadros de filmes de Hollywood. Ele é fornecido no formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), onde para cada imagem há também um arquivo de descrição XML que se parece com isto: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +Neste conjunto de dados, há apenas uma classe de objetos, `head`, e para cada cabeça, você obtém as coordenadas da caixa delimitadora. Você pode analisar os arquivos XML usando bibliotecas Python ou usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para lidar diretamente com o formato PASCAL VOC. + +## Treinamento de Detecção de Objetos + +Você pode treinar um modelo de detecção de objetos usando uma das seguintes abordagens: + +* Usando o [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) e sua API Python para treinar o modelo programaticamente na nuvem. O Custom Vision não será capaz de usar mais do que algumas centenas de imagens para treinar o modelo, então pode ser necessário limitar o conjunto de dados. +* Usando o exemplo do [tutorial do Keras](https://keras.io/examples/vision/retinanet/) para treinar o modelo RetunaNet. +* Usando o módulo integrado [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) no torchvision. + +## Conclusão + +A detecção de objetos é uma tarefa frequentemente necessária na indústria. Embora existam alguns serviços que podem ser usados para realizar a detecção de objetos (como o [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), é importante entender como a detecção de objetos funciona e ser capaz de treinar seus próprios modelos. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/br/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..f9617f41 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentação + +Anteriormente, aprendemos sobre Detecção de Objetos, que nos permite localizar objetos em uma imagem ao prever suas *caixas delimitadoras* (*bounding boxes*). No entanto, para algumas tarefas, não precisamos apenas das caixas delimitadoras, mas também de uma localização mais precisa dos objetos. Essa tarefa é chamada de **segmentação**. + +## [Pré-quiz da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +A segmentação pode ser vista como uma **classificação de pixels**, onde para **cada** pixel da imagem devemos prever sua classe (*fundo* sendo uma das classes). Existem dois principais algoritmos de segmentação: + +* **Segmentação semântica** informa apenas a classe do pixel, sem distinguir entre diferentes objetos da mesma classe. +* **Segmentação por instância** divide as classes em diferentes instâncias. + +Na segmentação por instância, essas ovelhas são objetos diferentes, mas na segmentação semântica todas as ovelhas são representadas por uma única classe. + + + +> Imagem retirada [deste post no blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Existem diferentes arquiteturas neurais para segmentação, mas todas possuem a mesma estrutura. De certa forma, é semelhante ao autoencoder que você aprendeu anteriormente, mas em vez de reconstruir a imagem original, nosso objetivo é reconstruir uma **máscara**. Assim, uma rede de segmentação possui as seguintes partes: + +* **Codificador (Encoder)** extrai características da imagem de entrada. +* **Decodificador (Decoder)** transforma essas características na **imagem da máscara**, com o mesmo tamanho e número de canais correspondentes ao número de classes. + + + +> Imagem retirada [desta publicação](https://arxiv.org/pdf/2001.05566.pdf) + +Devemos destacar especialmente a função de perda usada para segmentação. Ao usar autoencoders clássicos, precisamos medir a similaridade entre duas imagens, e podemos usar o erro quadrático médio (MSE) para isso. Na segmentação, cada pixel na imagem de máscara de destino representa o número da classe (codificado em one-hot ao longo da terceira dimensão), então precisamos usar funções de perda específicas para classificação - perda de entropia cruzada, média sobre todos os pixels. Se a máscara for binária - usa-se a **perda de entropia cruzada binária** (BCE). + +> ✅ One-hot encoding é uma técnica para codificar um rótulo de classe em um vetor de comprimento igual ao número de classes. Confira [este artigo](https://datagy.io/sklearn-one-hot-encode/) sobre essa técnica. + +## Segmentação para Imagens Médicas + +Nesta lição, veremos a segmentação em ação treinando uma rede para reconhecer nevos humanos (também conhecidos como pintas) em imagens médicas. Utilizaremos o Banco de Dados PH2 de imagens dermatoscópicas como fonte de imagens. Este conjunto de dados contém 200 imagens de três classes: nevo típico, nevo atípico e melanoma. Todas as imagens também possuem uma **máscara** correspondente que delimita o nevo. + +> ✅ Essa técnica é particularmente apropriada para este tipo de imagem médica, mas quais outras aplicações do mundo real você consegue imaginar? + +navi + +> Imagem retirada do Banco de Dados PH2 + +Treinaremos um modelo para segmentar qualquer nevo do fundo. + +## ✍️ Exercícios: Segmentação Semântica + +Abra os notebooks abaixo para aprender mais sobre diferentes arquiteturas de segmentação semântica, praticar com elas e vê-las em ação. + +* [Segmentação Semântica com Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentação Semântica com TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Pós-quiz da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Conclusão + +A segmentação é uma técnica muito poderosa para classificação de imagens, indo além das caixas delimitadoras para a classificação em nível de pixel. É uma técnica usada em imagens médicas, entre outras aplicações. + +## 🚀 Desafio + +A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Experimente a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como a detecção de pose pode ser utilizada. + +## Revisão e Autoestudo + +Este [artigo da Wikipedia](https://wikipedia.org/wiki/Image_segmentation) oferece uma boa visão geral das várias aplicações dessa técnica. Aprenda mais por conta própria sobre os subdomínios de Segmentação por Instância e Segmentação Panóptica neste campo de estudo. + +## [Tarefa](lab/README.md) + +Neste laboratório, experimente a **segmentação do corpo humano** usando o [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/br/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..8a398fb0 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentação do Corpo Humano + +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Na produção de vídeos, como em previsões do tempo, frequentemente precisamos recortar a imagem de uma pessoa capturada pela câmera e colocá-la sobre outro vídeo. Isso geralmente é feito utilizando técnicas de **chroma key**, onde uma pessoa é filmada em frente a um fundo de cor uniforme, que é então removido. Neste trabalho prático, vamos treinar um modelo de rede neural para recortar a silhueta humana. + +## O Conjunto de Dados + +Usaremos o [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. Baixe o conjunto de dados manualmente no Kaggle. + +## Notebook Inicial + +Comece o trabalho prático abrindo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Conclusão + +A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Confira a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como essas tarefas podem ser implementadas. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/4-ComputerVision/README.md b/translations/br/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..3dc757e3 --- /dev/null +++ b/translations/br/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Visão Computacional + +![Resumo do conteúdo de Visão Computacional em um desenho](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.br.png) + +Nesta seção, vamos aprender sobre: + +* [Introdução à Visão Computacional e OpenCV](06-IntroCV/README.md) +* [Redes Neurais Convolucionais](07-ConvNets/README.md) +* [Redes Pré-treinadas e Aprendizado por Transferência](08-TransferLearning/README.md) +* [Autoencoders](09-Autoencoders/README.md) +* [Redes Adversárias Generativas](10-GANs/README.md) +* [Detecção de Objetos](11-ObjectDetection/README.md) +* [Segmentação Semântica](12-Segmentation/README.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/13-TextRep/README.md b/translations/br/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..31614c9d --- /dev/null +++ b/translations/br/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Representando Texto como Tensores + +## [Pré-quiz da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Classificação de Texto + +Ao longo da primeira parte desta seção, vamos focar na tarefa de **classificação de texto**. Usaremos o Dataset [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contém artigos de notícias como o seguinte: + +* Categoria: Ciência/Tecnologia +* Título: Empresa de Ky. Ganha Subsídio para Estudar Peptídeos (AP) +* Corpo: AP - Uma empresa fundada por um pesquisador de química da Universidade de Louisville ganhou um subsídio para desenvolver... + +Nosso objetivo será classificar a notícia em uma das categorias com base no texto. + +## Representando texto + +Se quisermos resolver tarefas de Processamento de Linguagem Natural (PLN) com redes neurais, precisamos de uma maneira de representar texto como tensores. Os computadores já representam caracteres textuais como números que mapeiam para fontes na sua tela usando codificações como ASCII ou UTF-8. + +Imagem mostrando um diagrama que mapeia um caractere para uma representação ASCII e binária + +> [Fonte da imagem](https://www.seobility.net/en/wiki/ASCII) + +Como humanos, entendemos o que cada letra **representa** e como todos os caracteres se juntam para formar as palavras de uma frase. No entanto, os computadores, por si só, não têm esse entendimento, e a rede neural precisa aprender o significado durante o treinamento. + +Portanto, podemos usar diferentes abordagens para representar texto: + +* **Representação no nível de caracteres**, onde representamos o texto tratando cada caractere como um número. Dado que temos *C* caracteres diferentes em nosso corpus de texto, a palavra *Hello* seria representada por um tensor de 5x*C*. Cada letra corresponderia a uma coluna do tensor em codificação one-hot. +* **Representação no nível de palavras**, na qual criamos um **vocabulário** de todas as palavras em nosso texto e, em seguida, representamos as palavras usando codificação one-hot. Essa abordagem é um pouco melhor, porque cada letra, por si só, não tem muito significado. Assim, ao usar conceitos semânticos de nível mais alto - palavras - simplificamos a tarefa para a rede neural. No entanto, dado o tamanho grande do dicionário, precisamos lidar com tensores esparsos de alta dimensão. + +Independentemente da representação, primeiro precisamos converter o texto em uma sequência de **tokens**, sendo um token um caractere, uma palavra ou, às vezes, até mesmo parte de uma palavra. Depois, convertemos o token em um número, geralmente usando um **vocabulário**, e esse número pode ser alimentado em uma rede neural usando codificação one-hot. + +## N-Gramas + +Na linguagem natural, o significado preciso das palavras só pode ser determinado no contexto. Por exemplo, os significados de *rede neural* e *rede de pesca* são completamente diferentes. Uma das maneiras de levar isso em conta é construir nosso modelo com pares de palavras, considerando pares de palavras como tokens separados no vocabulário. Dessa forma, a frase *Eu gosto de pescar* será representada pela seguinte sequência de tokens: *Eu gosto*, *gosto de*, *de pescar*. O problema com essa abordagem é que o tamanho do dicionário cresce significativamente, e combinações como *de pescar* e *de comprar* são representadas por tokens diferentes, que não compartilham nenhuma semelhança semântica, apesar do mesmo verbo. + +Em alguns casos, podemos considerar o uso de tri-gramas -- combinações de três palavras -- também. Assim, essa abordagem é frequentemente chamada de **n-gramas**. Além disso, faz sentido usar n-gramas com representação no nível de caracteres, caso em que os n-gramas corresponderão aproximadamente a diferentes sílabas. + +## Bag-of-Words e TF/IDF + +Ao resolver tarefas como classificação de texto, precisamos ser capazes de representar o texto por um vetor de tamanho fixo, que usaremos como entrada para o classificador denso final. Uma das maneiras mais simples de fazer isso é combinar todas as representações individuais das palavras, por exemplo, somando-as. Se somarmos as codificações one-hot de cada palavra, acabaremos com um vetor de frequências, mostrando quantas vezes cada palavra aparece no texto. Essa representação de texto é chamada de **bag of words** (BoW). + + + +> Imagem do autor + +Um BoW essencialmente representa quais palavras aparecem no texto e em quais quantidades, o que pode ser uma boa indicação sobre o que o texto trata. Por exemplo, um artigo de notícias sobre política provavelmente contém palavras como *presidente* e *país*, enquanto uma publicação científica teria algo como *colisor*, *descoberto*, etc. Assim, as frequências das palavras podem, em muitos casos, ser um bom indicador do conteúdo do texto. + +O problema com o BoW é que certas palavras comuns, como *e*, *é*, etc., aparecem na maioria dos textos e têm as maiores frequências, mascarando as palavras que são realmente importantes. Podemos reduzir a importância dessas palavras levando em conta a frequência com que elas ocorrem em toda a coleção de documentos. Essa é a ideia principal por trás da abordagem TF/IDF, que é abordada em mais detalhes nos notebooks anexados a esta lição. + +No entanto, nenhuma dessas abordagens pode levar totalmente em conta a **semântica** do texto. Precisamos de modelos de redes neurais mais poderosos para fazer isso, o que discutiremos mais adiante nesta seção. + +## ✍️ Exercícios: Representação de Texto + +Continue seu aprendizado nos seguintes notebooks: + +* [Representação de Texto com PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Representação de Texto com TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Conclusão + +Até agora, estudamos técnicas que podem adicionar peso de frequência a diferentes palavras. No entanto, elas não conseguem representar o significado ou a ordem. Como o famoso linguista J. R. Firth disse em 1935: "O significado completo de uma palavra é sempre contextual, e nenhum estudo de significado fora do contexto pode ser levado a sério." Aprenderemos mais adiante no curso como capturar informações contextuais do texto usando modelagem de linguagem. + +## 🚀 Desafio + +Experimente outros exercícios usando bag-of-words e diferentes modelos de dados. Você pode se inspirar nesta [competição no Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Pós-quiz da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Revisão e Autoestudo + +Pratique suas habilidades com técnicas de embeddings de texto e bag-of-words no [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste). + +## [Tarefa: Notebooks](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/13-TextRep/assignment.md b/translations/br/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..1ecce258 --- /dev/null +++ b/translations/br/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Tarefa: Notebooks + +Usando os notebooks associados a esta lição (seja a versão do PyTorch ou do TensorFlow), execute-os novamente utilizando seu próprio conjunto de dados, talvez um do Kaggle, usado com a devida atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente alguns conjuntos de dados inovadores que possam ser surpreendentes, como [este sobre avistamentos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) do NUFORC. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/14-Embeddings/README.md b/translations/br/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..1381dc65 --- /dev/null +++ b/translations/br/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Embeddings + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Ao treinar classificadores baseados em BoW ou TF/IDF, trabalhamos com vetores de bag-of-words de alta dimensionalidade com comprimento `vocab_size`, e estávamos convertendo explicitamente de vetores de representação posicional de baixa dimensionalidade para representações esparsas de uma única posição ativa (one-hot). No entanto, essa representação one-hot não é eficiente em termos de memória. Além disso, cada palavra é tratada de forma independente, ou seja, vetores codificados em one-hot não expressam nenhuma similaridade semântica entre palavras. + +A ideia de **embedding** é representar palavras por vetores densos de menor dimensionalidade, que de alguma forma refletem o significado semântico de uma palavra. Mais adiante, discutiremos como construir embeddings de palavras significativos, mas, por enquanto, vamos apenas pensar em embeddings como uma forma de reduzir a dimensionalidade de um vetor de palavras. + +Assim, a camada de embedding receberia uma palavra como entrada e produziria um vetor de saída com o tamanho especificado em `embedding_size`. De certa forma, é muito semelhante a uma camada `Linear`, mas, em vez de receber um vetor codificado em one-hot, ela será capaz de receber um número de palavra como entrada, permitindo evitar a criação de grandes vetores codificados em one-hot. + +Ao usar uma camada de embedding como a primeira camada em nossa rede de classificação, podemos mudar de um modelo de bag-of-words para um modelo de **embedding bag**, onde primeiro convertemos cada palavra em nosso texto no embedding correspondente e, em seguida, calculamos alguma função agregada sobre todos esses embeddings, como `sum`, `average` ou `max`. + +![Imagem mostrando um classificador de embedding para cinco palavras em sequência.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.br.png) + +> Imagem do autor + +## ✍️ Exercícios: Embeddings + +Continue seu aprendizado nos seguintes notebooks: +* [Embeddings com PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Embeddings com TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Embeddings Semânticos: Word2Vec + +Embora a camada de embedding tenha aprendido a mapear palavras para representações vetoriais, essa representação não necessariamente possui muito significado semântico. Seria interessante aprender uma representação vetorial em que palavras semelhantes ou sinônimos correspondam a vetores próximos entre si em termos de alguma distância vetorial (por exemplo, distância Euclidiana). + +Para isso, precisamos pré-treinar nosso modelo de embedding em uma grande coleção de textos de uma maneira específica. Uma forma de treinar embeddings semânticos é chamada de [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Ela se baseia em duas arquiteturas principais usadas para produzir uma representação distribuída de palavras: + + - **Continuous bag-of-words** (CBoW) — nesta arquitetura, treinamos o modelo para prever uma palavra a partir do contexto ao redor. Dado o ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, o objetivo do modelo é prever $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. + - **Continuous skip-gram** é o oposto do CBoW. O modelo usa a janela de palavras de contexto ao redor para prever a palavra atual. + +CBoW é mais rápido, enquanto skip-gram é mais lento, mas faz um trabalho melhor ao representar palavras menos frequentes. + +![Imagem mostrando os algoritmos CBoW e Skip-Gram para converter palavras em vetores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.br.png) + +> Imagem retirada [deste artigo](https://arxiv.org/pdf/1301.3781.pdf) + +Embeddings pré-treinados do Word2Vec (assim como outros modelos semelhantes, como GloVe) também podem ser usados no lugar da camada de embedding em redes neurais. No entanto, precisamos lidar com vocabulários, porque o vocabulário usado para pré-treinar o Word2Vec/GloVe provavelmente será diferente do vocabulário em nosso corpus de texto. Confira os notebooks acima para ver como esse problema pode ser resolvido. + +## Embeddings Contextuais + +Uma limitação importante das representações tradicionais de embeddings pré-treinados, como Word2Vec, é o problema de desambiguação de sentidos das palavras. Embora embeddings pré-treinados possam capturar parte do significado das palavras no contexto, todos os possíveis significados de uma palavra são codificados no mesmo embedding. Isso pode causar problemas em modelos posteriores, já que muitas palavras, como a palavra 'play', têm significados diferentes dependendo do contexto em que são usadas. + +Por exemplo, a palavra 'play' nas duas frases abaixo tem significados bastante diferentes: + +- Eu fui a uma **peça** no teatro. +- John quer **brincar** com seus amigos. + +Os embeddings pré-treinados acima representam ambos os significados da palavra 'play' no mesmo embedding. Para superar essa limitação, precisamos construir embeddings baseados no **modelo de linguagem**, que é treinado em um grande corpus de texto e *sabe* como as palavras podem ser combinadas em diferentes contextos. Discutir embeddings contextuais está fora do escopo deste tutorial, mas voltaremos a eles ao falar sobre modelos de linguagem mais adiante no curso. + +## Conclusão + +Nesta lição, você descobriu como construir e usar camadas de embedding no TensorFlow e PyTorch para refletir melhor os significados semânticos das palavras. + +## 🚀 Desafio + +Word2Vec tem sido usado em algumas aplicações interessantes, incluindo a geração de letras de músicas e poesias. Confira [este artigo](https://www.politetype.com/blog/word2vec-color-poems), que explica como o autor usou Word2Vec para gerar poesia. Assista também [este vídeo de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descobrir uma explicação diferente dessa técnica. Depois, tente aplicar essas técnicas ao seu próprio corpus de texto, talvez obtido no Kaggle. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Revisão e Autoestudo + +Leia este artigo sobre Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Assignment: Notebooks](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/14-Embeddings/assignment.md b/translations/br/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..da35e5a9 --- /dev/null +++ b/translations/br/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Tarefa: Notebooks + +Utilizando os notebooks associados a esta lição (seja a versão PyTorch ou TensorFlow), execute-os novamente usando seu próprio conjunto de dados, talvez um do Kaggle, utilizado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente um tipo diferente de conjunto de dados e documente suas conclusões, usando texto como [essas letras dos Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/15-LanguageModeling/README.md b/translations/br/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..73f21dc7 --- /dev/null +++ b/translations/br/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Modelagem de Linguagem + +Embeddings semânticos, como Word2Vec e GloVe, são, na verdade, um primeiro passo em direção à **modelagem de linguagem** - criando modelos que de alguma forma *entendem* (ou *representam*) a natureza da linguagem. + +## [Pré-quiz da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +A ideia principal por trás da modelagem de linguagem é treiná-los em conjuntos de dados não rotulados de forma não supervisionada. Isso é importante porque temos uma enorme quantidade de texto não rotulado disponível, enquanto a quantidade de texto rotulado sempre será limitada pelo esforço necessário para rotular. Na maioria das vezes, podemos construir modelos de linguagem que conseguem **prever palavras ausentes** no texto, porque é fácil mascarar uma palavra aleatória no texto e usá-la como um exemplo de treinamento. + +## Treinando Embeddings + +Nos nossos exemplos anteriores, usamos embeddings semânticos pré-treinados, mas é interessante ver como esses embeddings podem ser treinados. Existem várias ideias possíveis que podem ser utilizadas: + +* **Modelagem de linguagem N-Gram**, onde prevemos um token observando os N tokens anteriores (N-grama). +* **Continuous Bag-of-Words** (CBoW), onde prevemos o token do meio $W_0$ em uma sequência de tokens $W_{-N}$, ..., $W_N$. +* **Skip-gram**, onde prevemos um conjunto de tokens vizinhos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir do token do meio $W_0$. + +![imagem do artigo sobre conversão de palavras em vetores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.br.png) + +> Imagem retirada [deste artigo](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Notebooks de Exemplo: Treinando o modelo CBoW + +Continue seu aprendizado nos seguintes notebooks: + +* [Treinando CBoW Word2Vec com TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Treinando CBoW Word2Vec com PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Conclusão + +Na lição anterior, vimos que embeddings de palavras funcionam como mágica! Agora sabemos que treinar embeddings de palavras não é uma tarefa muito complexa, e devemos ser capazes de treinar nossos próprios embeddings para textos específicos de domínio, se necessário. + +## [Pós-quiz da aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Revisão e Autoestudo + +* [Tutorial oficial do PyTorch sobre Modelagem de Linguagem](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial do TensorFlow sobre treinamento do modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* O uso do framework **gensim** para treinar os embeddings mais comumente usados em poucas linhas de código é descrito [nesta documentação](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Tarefa: Treinar Modelo Skip-Gram](lab/README.md) + +No laboratório, desafiamos você a modificar o código desta lição para treinar o modelo skip-gram em vez do CBoW. [Leia os detalhes](lab/README.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/br/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..3343f47e --- /dev/null +++ b/translations/br/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Treinando o Modelo Skip-Gram + +Atividade prática do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Neste laboratório, desafiamos você a treinar um modelo Word2Vec usando a técnica Skip-Gram. Treine uma rede com embeddings para prever palavras vizinhas em uma janela Skip-Gram de $N$ tokens de largura. Você pode usar o [código desta lição](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) e modificá-lo levemente. + +## O Conjunto de Dados + +Você pode usar qualquer livro. Há muitos textos gratuitos disponíveis no [Project Gutenberg](https://www.gutenberg.org/), por exemplo, aqui está um link direto para [Alice no País das Maravilhas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. Ou, você pode usar as peças de Shakespeare, que podem ser obtidas com o seguinte código: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## Explore! + +Se você tiver tempo e quiser se aprofundar no assunto, tente explorar algumas coisas: + +* Como o tamanho do embedding afeta os resultados? +* Como diferentes estilos de texto afetam o resultado? +* Pegue vários tipos de palavras muito diferentes e seus sinônimos, obtenha suas representações vetoriais, aplique PCA para reduzir as dimensões para 2 e plote-as em um espaço 2D. Você percebe algum padrão? + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/16-RNN/README.md b/translations/br/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..cafa2a07 --- /dev/null +++ b/translations/br/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Redes Neurais Recorrentes + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Nas seções anteriores, utilizamos representações semânticas ricas de texto e um classificador linear simples sobre as embeddings. O que essa arquitetura faz é capturar o significado agregado das palavras em uma frase, mas ela não leva em conta a **ordem** das palavras, porque a operação de agregação sobre as embeddings remove essa informação do texto original. Como esses modelos não conseguem modelar a ordem das palavras, eles não podem resolver tarefas mais complexas ou ambíguas, como geração de texto ou resposta a perguntas. + +Para capturar o significado de uma sequência de texto, precisamos usar outra arquitetura de rede neural, chamada de **rede neural recorrente**, ou RNN. Na RNN, passamos nossa frase pela rede um símbolo de cada vez, e a rede produz algum **estado**, que então passamos novamente para a rede junto com o próximo símbolo. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.br.png) + +> Imagem do autor + +Dada a sequência de entrada de tokens X0,...,Xn, a RNN cria uma sequência de blocos de rede neural e treina essa sequência de ponta a ponta usando retropropagação. Cada bloco de rede recebe um par (Xi,Si) como entrada e produz Si+1 como resultado. O estado final Sn ou (saída Yn) é enviado para um classificador linear para produzir o resultado. Todos os blocos da rede compartilham os mesmos pesos e são treinados de ponta a ponta usando uma única passagem de retropropagação. + +Como os vetores de estado S0,...,Sn são passados pela rede, ela consegue aprender as dependências sequenciais entre as palavras. Por exemplo, quando a palavra *não* aparece em algum lugar da sequência, a rede pode aprender a negar certos elementos dentro do vetor de estado, resultando em negação. + +> ✅ Como os pesos de todos os blocos da RNN na imagem acima são compartilhados, a mesma imagem pode ser representada como um único bloco (à direita) com um loop de feedback recorrente, que passa o estado de saída da rede de volta para a entrada. + +## Anatomia de uma Célula RNN + +Vamos ver como uma célula RNN simples é organizada. Ela aceita o estado anterior Si-1 e o símbolo atual Xi como entradas e precisa produzir o estado de saída Si (e, às vezes, também estamos interessados em alguma outra saída Yi, como no caso de redes generativas). + +Uma célula RNN simples possui duas matrizes de peso internas: uma transforma um símbolo de entrada (vamos chamá-la de W) e outra transforma um estado de entrada (H). Nesse caso, a saída da rede é calculada como σ(W×Xi+H×Si-1+b), onde σ é a função de ativação e b é um viés adicional. + +Anatomia da Célula RNN + +> Imagem do autor + +Em muitos casos, os tokens de entrada são passados por uma camada de embedding antes de entrar na RNN para reduzir a dimensionalidade. Nesse caso, se a dimensão dos vetores de entrada for *emb_size* e o vetor de estado for *hid_size*, o tamanho de W será *emb_size*×*hid_size*, e o tamanho de H será *hid_size*×*hid_size*. + +## Long Short Term Memory (LSTM) + +Um dos principais problemas das RNNs clássicas é o chamado problema de **gradientes que desaparecem**. Como as RNNs são treinadas de ponta a ponta em uma única passagem de retropropagação, elas têm dificuldade em propagar o erro para as primeiras camadas da rede, e assim a rede não consegue aprender relações entre tokens distantes. Uma das formas de evitar esse problema é introduzir **gerenciamento explícito de estado** usando os chamados **gates**. Existem duas arquiteturas bem conhecidas desse tipo: **Long Short Term Memory** (LSTM) e **Gated Relay Unit** (GRU). + +![Imagem mostrando um exemplo de célula LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Fonte da imagem a ser definida + +A rede LSTM é organizada de maneira semelhante à RNN, mas há dois estados que são passados de camada para camada: o estado real C e o vetor oculto H. Em cada unidade, o vetor oculto Hi é concatenado com a entrada Xi, e eles controlam o que acontece com o estado C por meio de **gates**. Cada gate é uma rede neural com ativação sigmoide (saída no intervalo [0,1]), que pode ser vista como uma máscara bit a bit quando multiplicada pelo vetor de estado. Existem os seguintes gates (da esquerda para a direita na imagem acima): + +* O **gate de esquecimento** pega um vetor oculto e determina quais componentes do vetor C precisamos esquecer e quais passar adiante. +* O **gate de entrada** pega algumas informações dos vetores de entrada e ocultos e as insere no estado. +* O **gate de saída** transforma o estado por meio de uma camada linear com ativação *tanh*, depois seleciona alguns de seus componentes usando um vetor oculto Hi para produzir um novo estado Ci+1. + +Os componentes do estado C podem ser vistos como algumas flags que podem ser ativadas ou desativadas. Por exemplo, quando encontramos o nome *Alice* na sequência, podemos assumir que ele se refere a uma personagem feminina e ativar a flag no estado indicando que temos um substantivo feminino na frase. Quando encontramos posteriormente a frase *e Tom*, ativaremos a flag indicando que temos um substantivo plural. Assim, manipulando o estado, podemos supostamente acompanhar as propriedades gramaticais das partes da frase. + +> ✅ Um excelente recurso para entender os detalhes internos do LSTM é este ótimo artigo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## RNNs Bidirecionais e Multicamadas + +Discutimos redes recorrentes que operam em uma direção, do início de uma sequência até o fim. Isso parece natural, pois se assemelha à maneira como lemos e ouvimos fala. No entanto, como em muitos casos práticos temos acesso aleatório à sequência de entrada, pode fazer sentido executar o cálculo recorrente em ambas as direções. Essas redes são chamadas de **RNNs bidirecionais**. Ao lidar com redes bidirecionais, precisaríamos de dois vetores de estado oculto, um para cada direção. + +Uma rede recorrente, seja unidirecional ou bidirecional, captura certos padrões dentro de uma sequência e pode armazená-los em um vetor de estado ou passá-los para a saída. Assim como nas redes convolucionais, podemos construir outra camada recorrente sobre a primeira para capturar padrões de nível superior e construir a partir dos padrões de baixo nível extraídos pela primeira camada. Isso nos leva à noção de uma **RNN multicamada**, que consiste em duas ou mais redes recorrentes, onde a saída da camada anterior é passada para a próxima camada como entrada. + +![Imagem mostrando uma RNN LSTM multicamada](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.br.jpg) + +*Imagem retirada [deste post maravilhoso](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* + +## ✍️ Exercícios: Embeddings + +Continue seu aprendizado nos seguintes notebooks: + +* [RNNs com PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs com TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Conclusão + +Nesta unidade, vimos que as RNNs podem ser usadas para classificação de sequência, mas, na verdade, elas podem lidar com muitas outras tarefas, como geração de texto, tradução automática e mais. Consideraremos essas tarefas na próxima unidade. + +## 🚀 Desafio + +Leia alguns artigos sobre LSTMs e considere suas aplicações: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Revisão e Autoestudo + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## [Tarefa: Notebooks](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/16-RNN/assignment.md b/translations/br/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..ccc7a740 --- /dev/null +++ b/translations/br/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Tarefa: Notebooks + +Usando os notebooks associados a esta lição (seja a versão do PyTorch ou do TensorFlow), execute-os novamente utilizando seu próprio conjunto de dados, talvez um do Kaggle, usado com a devida atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente um tipo diferente de conjunto de dados e documente suas conclusões, usando textos como [este conjunto de dados de competição do Kaggle sobre tweets de clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/br/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..029e8224 --- /dev/null +++ b/translations/br/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Redes Generativas + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Redes Neurais Recorrentes (RNNs) e suas variantes com células controladas, como Long Short Term Memory Cells (LSTMs) e Gated Recurrent Units (GRUs), fornecem um mecanismo para modelagem de linguagem, pois conseguem aprender a ordem das palavras e prever a próxima palavra em uma sequência. Isso nos permite usar RNNs para **tarefas generativas**, como geração de texto comum, tradução automática e até legendagem de imagens. + +> ✅ Pense em todas as vezes que você se beneficiou de tarefas generativas, como a conclusão de texto enquanto você digita. Pesquise sobre seus aplicativos favoritos para ver se eles utilizam RNNs. + +Na arquitetura de RNN que discutimos na unidade anterior, cada unidade RNN produzia o próximo estado oculto como saída. No entanto, também podemos adicionar outra saída a cada unidade recorrente, o que nos permitiria gerar uma **sequência** (que tem o mesmo comprimento da sequência original). Além disso, podemos usar unidades RNN que não aceitam uma entrada em cada etapa, mas apenas um vetor de estado inicial, e então produzem uma sequência de saídas. + +Isso permite diferentes arquiteturas neurais, como mostrado na imagem abaixo: + +![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.br.jpg) + +> Imagem do post no blog [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) por [Andrej Karpaty](http://karpathy.github.io/) + +* **One-to-one** é uma rede neural tradicional com uma entrada e uma saída. +* **One-to-many** é uma arquitetura generativa que aceita um valor de entrada e gera uma sequência de valores de saída. Por exemplo, se quisermos treinar uma rede de **legenda de imagem** que produza uma descrição textual de uma imagem, podemos usar a imagem como entrada, passá-la por uma CNN para obter seu estado oculto e, em seguida, usar uma cadeia recorrente para gerar a legenda palavra por palavra. +* **Many-to-one** corresponde às arquiteturas RNN que descrevemos na unidade anterior, como classificação de texto. +* **Many-to-many**, ou **sequência-para-sequência**, corresponde a tarefas como **tradução automática**, onde temos uma primeira RNN que coleta todas as informações da sequência de entrada no estado oculto, e outra cadeia RNN que desenrola esse estado na sequência de saída. + +Nesta unidade, focaremos em modelos generativos simples que nos ajudam a gerar texto. Para simplificar, usaremos tokenização em nível de caracteres. + +Treinaremos esta RNN para gerar texto passo a passo. Em cada etapa, pegaremos uma sequência de caracteres de comprimento `nchars` e pediremos à rede para gerar o próximo caractere de saída para cada caractere de entrada: + +![Imagem mostrando um exemplo de geração de RNN da palavra 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.br.png) + +Ao gerar texto (durante a inferência), começamos com um **prompt**, que é passado pelas células RNN para gerar seu estado intermediário, e então a geração começa a partir desse estado. Geramos um caractere por vez e passamos o estado e o caractere gerado para outra célula RNN para gerar o próximo, até que tenhamos gerado caracteres suficientes. + + + +> Imagem do autor + +## ✍️ Exercícios: Redes Generativas + +Continue seu aprendizado nos notebooks a seguir: + +* [Redes Generativas com PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Redes Generativas com TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Geração de texto suave e temperatura + +A saída de cada célula RNN é uma distribuição de probabilidade de caracteres. Se sempre escolhermos o caractere com a maior probabilidade como o próximo caractere no texto gerado, o texto frequentemente pode se tornar "cíclico", repetindo as mesmas sequências de caracteres repetidamente, como neste exemplo: + +``` +today of the second the company and a second the company ... +``` + +No entanto, se analisarmos a distribuição de probabilidade para o próximo caractere, pode ser que a diferença entre algumas das maiores probabilidades não seja tão grande, por exemplo, um caractere pode ter probabilidade 0,2, outro 0,19, etc. Por exemplo, ao procurar o próximo caractere na sequência '*play*', o próximo caractere pode ser tanto um espaço quanto **e** (como na palavra *player*). + +Isso nos leva à conclusão de que nem sempre é "justo" selecionar o caractere com maior probabilidade, pois escolher o segundo maior ainda pode levar a um texto significativo. É mais sábio **amostrar** caracteres da distribuição de probabilidade fornecida pela saída da rede. Também podemos usar um parâmetro, **temperatura**, que ajustará a distribuição de probabilidade, caso queiramos adicionar mais aleatoriedade ou torná-la mais inclinada, se quisermos nos ater mais aos caracteres de maior probabilidade. + +Explore como essa geração de texto suave é implementada nos notebooks vinculados acima. + +## Conclusão + +Embora a geração de texto possa ser útil por si só, os maiores benefícios vêm da capacidade de gerar texto usando RNNs a partir de algum vetor de características inicial. Por exemplo, a geração de texto é usada como parte da tradução automática (sequência-para-sequência, neste caso o vetor de estado do *encoder* é usado para gerar ou *decodificar* a mensagem traduzida) ou para gerar descrições textuais de uma imagem (nesse caso, o vetor de características viria de um extrator CNN). + +## 🚀 Desafio + +Faça algumas lições no Microsoft Learn sobre este tópico: + +* Geração de Texto com [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Revisão e Autoestudo + +Aqui estão alguns artigos para expandir seu conhecimento: + +* Diferentes abordagens para geração de texto com Cadeia de Markov, LSTM e GPT-2: [post no blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Exemplo de geração de texto na [documentação do Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Tarefa](lab/README.md) + +Vimos como gerar texto caractere por caractere. No laboratório, você explorará a geração de texto em nível de palavras. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/br/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..f59e6c2f --- /dev/null +++ b/translations/br/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Geração de Texto em Nível de Palavra usando RNNs + +Atividade de Laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Neste laboratório, você precisa escolher qualquer livro e usá-lo como um conjunto de dados para treinar um gerador de texto em nível de palavra. + +## O Conjunto de Dados + +Você pode usar qualquer livro. É possível encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/), por exemplo, aqui está um link direto para [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) de Lewis Carroll. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/18-Transformers/README.md b/translations/br/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..6d75c7b4 --- /dev/null +++ b/translations/br/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mecanismos de Atenção e Transformers + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Um dos problemas mais importantes no domínio de NLP é a **tradução automática**, uma tarefa essencial que sustenta ferramentas como o Google Tradutor. Nesta seção, vamos focar na tradução automática ou, de forma mais geral, em qualquer tarefa de *sequência para sequência* (também chamada de **transdução de sentenças**). + +Com RNNs, a tarefa de sequência para sequência é implementada por duas redes recorrentes, onde uma rede, o **codificador**, comprime uma sequência de entrada em um estado oculto, enquanto outra rede, o **decodificador**, expande esse estado oculto em um resultado traduzido. Existem alguns problemas com essa abordagem: + +* O estado final da rede codificadora tem dificuldade em lembrar o início de uma sentença, causando baixa qualidade do modelo para sentenças longas. +* Todas as palavras em uma sequência têm o mesmo impacto no resultado. Na realidade, no entanto, palavras específicas na sequência de entrada frequentemente têm mais impacto nos resultados sequenciais do que outras. + +**Mecanismos de Atenção** fornecem um meio de ponderar o impacto contextual de cada vetor de entrada em cada previsão de saída da RNN. Isso é implementado criando atalhos entre os estados intermediários da RNN de entrada e a RNN de saída. Dessa forma, ao gerar o símbolo de saída yt, levamos em conta todos os estados ocultos de entrada hi, com diferentes coeficientes de peso αt,i. + +![Imagem mostrando um modelo codificador/decodificador com uma camada de atenção aditiva](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.br.png) + +> O modelo codificador-decodificador com mecanismo de atenção aditiva em [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citado deste [post de blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +A matriz de atenção {αi,j} representaria o grau em que certas palavras de entrada influenciam a geração de uma determinada palavra na sequência de saída. Abaixo está um exemplo de tal matriz: + +![Imagem mostrando um alinhamento de exemplo encontrado pelo RNNsearch-50, retirada de Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.br.png) + +> Figura de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Os mecanismos de atenção são responsáveis por grande parte do estado da arte atual ou próximo ao atual em NLP. No entanto, adicionar atenção aumenta significativamente o número de parâmetros do modelo, o que levou a problemas de escalabilidade com RNNs. Uma restrição chave na escalabilidade das RNNs é que a natureza recorrente dos modelos torna desafiador agrupar e paralelizar o treinamento. Em uma RNN, cada elemento de uma sequência precisa ser processado em ordem sequencial, o que significa que não pode ser facilmente paralelizado. + +![Codificador Decodificador com Atenção](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figura do [Blog do Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +A adoção de mecanismos de atenção combinada com essa restrição levou à criação dos modelos Transformers, agora estado da arte, que conhecemos e usamos hoje, como BERT e Open-GPT3. + +## Modelos Transformers + +Uma das principais ideias por trás dos transformers é evitar a natureza sequencial das RNNs e criar um modelo que seja paralelizável durante o treinamento. Isso é alcançado implementando duas ideias: + +* codificação posicional +* uso de mecanismo de autoatenção para capturar padrões em vez de RNNs (ou CNNs) (é por isso que o artigo que introduz transformers é chamado *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codificação/Embelezamento Posicional + +A ideia da codificação posicional é a seguinte: +1. Ao usar RNNs, a posição relativa dos tokens é representada pelo número de passos e, portanto, não precisa ser explicitamente representada. +2. No entanto, ao mudar para atenção, precisamos saber as posições relativas dos tokens dentro de uma sequência. +3. Para obter codificação posicional, aumentamos nossa sequência de tokens com uma sequência de posições dos tokens na sequência (ou seja, uma sequência de números 0,1, ...). +4. Em seguida, misturamos a posição do token com um vetor de embelezamento do token. Para transformar a posição (inteiro) em um vetor, podemos usar diferentes abordagens: + +* Embelezamento treinável, semelhante ao embelezamento de tokens. Esta é a abordagem que consideramos aqui. Aplicamos camadas de embelezamento tanto nos tokens quanto em suas posições, resultando em vetores de embelezamento de mesmas dimensões, que então somamos. +* Função de codificação de posição fixa, conforme proposto no artigo original. + + + +> Imagem do autor + +O resultado que obtemos com o embelezamento posicional incorpora tanto o token original quanto sua posição dentro de uma sequência. + +### Autoatenção Multi-Head + +Em seguida, precisamos capturar alguns padrões dentro de nossa sequência. Para isso, os transformers usam um mecanismo de **autoatenção**, que é essencialmente atenção aplicada à mesma sequência como entrada e saída. Aplicar autoatenção nos permite levar em conta o **contexto** dentro da sentença e ver quais palavras estão inter-relacionadas. Por exemplo, permite ver quais palavras são referidas por correferências, como *it*, e também levar o contexto em consideração: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.br.png) + +> Imagem do [Blog do Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Nos transformers, usamos **Atenção Multi-Head** para dar à rede o poder de capturar vários tipos diferentes de dependências, como relações de palavras de longo prazo vs. curto prazo, correferência vs. algo mais, etc. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contém mais detalhes sobre a implementação das camadas de transformers. + +### Atenção Codificador-Decodificador + +Nos transformers, a atenção é usada em dois lugares: + +* Para capturar padrões dentro do texto de entrada usando autoatenção. +* Para realizar tradução de sequência - é a camada de atenção entre codificador e decodificador. + +A atenção codificador-decodificador é muito semelhante ao mecanismo de atenção usado em RNNs, conforme descrito no início desta seção. Este diagrama animado explica o papel da atenção codificador-decodificador. + +![GIF animado mostrando como as avaliações são realizadas em modelos transformers.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Como cada posição de entrada é mapeada independentemente para cada posição de saída, os transformers podem paralelizar melhor do que as RNNs, o que permite modelos de linguagem muito maiores e mais expressivos. Cada cabeça de atenção pode ser usada para aprender diferentes relações entre palavras que melhoram tarefas de Processamento de Linguagem Natural. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) é uma rede transformer muito grande com várias camadas: 12 camadas para *BERT-base* e 24 para *BERT-large*. O modelo é primeiro pré-treinado em um grande corpus de dados de texto (WikiPedia + livros) usando treinamento não supervisionado (prevendo palavras mascaradas em uma sentença). Durante o pré-treinamento, o modelo absorve níveis significativos de compreensão de linguagem que podem ser aproveitados com outros conjuntos de dados usando ajuste fino. Esse processo é chamado de **aprendizado por transferência**. + +![imagem de http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.br.png) + +> Imagem [fonte](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exercícios: Transformers + +Continue seu aprendizado nos seguintes notebooks: + +* [Transformers em PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers em TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusão + +Nesta lição, você aprendeu sobre Transformers e Mecanismos de Atenção, ferramentas essenciais na caixa de ferramentas de NLP. Existem muitas variações de arquiteturas de Transformers, incluindo BERT, DistilBERT, BigBird, OpenGPT3 e mais, que podem ser ajustadas. O pacote [HuggingFace](https://github.com/huggingface/) fornece um repositório para treinar muitas dessas arquiteturas com PyTorch e TensorFlow. + +## 🚀 Desafio + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revisão e Autoestudo + +* [Post de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), explicando o clássico artigo [Attention is all you need](https://arxiv.org/abs/1706.03762) sobre transformers. +* [Uma série de posts de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sobre transformers, explicando a arquitetura em detalhes. + +## [Tarefa](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/18-Transformers/assignment.md b/translations/br/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..02c00ab5 --- /dev/null +++ b/translations/br/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Tarefa: Transformers + +Experimente os Transformers no HuggingFace! Teste alguns dos scripts que eles fornecem para trabalhar com os diversos modelos disponíveis no site: https://huggingface.co/docs/transformers/run_scripts. Experimente um dos conjuntos de dados deles, depois importe um dos seus próprios deste currículo ou do Kaggle e veja se consegue gerar textos interessantes. Produza um notebook com suas descobertas. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/19-NER/README.md b/translations/br/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..955b525b --- /dev/null +++ b/translations/br/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,95 @@ + +# Reconhecimento de Entidades Nomeadas + +Até agora, temos nos concentrado principalmente em uma tarefa de PLN - classificação. No entanto, existem outras tarefas de PLN que podem ser realizadas com redes neurais. Uma dessas tarefas é o **[Reconhecimento de Entidades Nomeadas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que lida com o reconhecimento de entidades específicas dentro de um texto, como lugares, nomes de pessoas, intervalos de data e hora, fórmulas químicas, entre outros. + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Exemplo de Uso do NER + +Suponha que você queira desenvolver um chatbot de linguagem natural, semelhante ao Amazon Alexa ou Google Assistente. A forma como chatbots inteligentes funcionam é *entendendo* o que o usuário deseja, realizando a classificação de texto na frase de entrada. O resultado dessa classificação é o chamado **intento**, que determina o que o chatbot deve fazer. + +Bot NER + +> Imagem do autor + +No entanto, um usuário pode fornecer alguns parâmetros como parte da frase. Por exemplo, ao perguntar sobre o clima, ele pode especificar um local ou uma data. Um bot deve ser capaz de entender essas entidades e preencher os campos de parâmetros adequadamente antes de executar a ação. É exatamente aqui que o NER entra em cena. + +> ✅ Outro exemplo seria [analisar artigos científicos médicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Um dos principais objetivos é identificar termos médicos específicos, como doenças e substâncias médicas. Enquanto um pequeno número de doenças pode ser extraído usando busca por substring, entidades mais complexas, como compostos químicos e nomes de medicamentos, exigem uma abordagem mais sofisticada. + +## NER como Classificação de Tokens + +Modelos de NER são essencialmente **modelos de classificação de tokens**, porque para cada um dos tokens de entrada precisamos decidir se ele pertence a uma entidade ou não, e, se pertence, a qual classe de entidade. + +Considere o seguinte título de artigo: + +**Regurgitação da válvula tricúspide** e **carbonato de lítio** **toxicidade** em um recém-nascido. + +As entidades aqui são: + +* Regurgitação da válvula tricúspide é uma doença (`DIS`) +* Carbonato de lítio é uma substância química (`CHEM`) +* Toxicidade também é uma doença (`DIS`) + +Observe que uma entidade pode abranger vários tokens. E, como neste caso, precisamos distinguir entre duas entidades consecutivas. Assim, é comum usar duas classes para cada entidade - uma especificando o primeiro token da entidade (geralmente o prefixo `B-` é usado, para **b**eginning/início), e outra para a continuação de uma entidade (`I-`, para **i**nner token/token interno). Também usamos `O` como uma classe para representar todos os **o**utros tokens. Essa marcação de tokens é chamada de [marcação BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ou IOB). Quando marcada, nosso título ficará assim: + +Token | Tag +------|----- +Regurgitação | B-DIS +da | I-DIS +válvula | I-DIS +tricúspide | I-DIS +e | O +carbonato | B-CHEM +de | I-CHEM +lítio | I-CHEM +toxicidade | B-DIS +em | O +um | O +recém-nascido | O +. | O + +Como precisamos construir uma correspondência um-para-um entre tokens e classes, podemos treinar um modelo neural **muitos-para-muitos** da seguinte forma: + +![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.br.jpg) + +> *Imagem retirada [deste post no blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) por [Andrej Karpathy](http://karpathy.github.io/). Modelos de classificação de tokens NER correspondem à arquitetura de rede mais à direita nesta imagem.* + +## Treinando Modelos de NER + +Como um modelo de NER é essencialmente um modelo de classificação de tokens, podemos usar RNNs, com as quais já estamos familiarizados, para essa tarefa. Nesse caso, cada bloco da rede recorrente retornará o ID do token. O notebook de exemplo a seguir mostra como treinar um LSTM para classificação de tokens. + +## ✍️ Notebooks de Exemplo: NER + +Continue seu aprendizado no seguinte notebook: + +* [NER com TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Conclusão + +Um modelo de NER é um **modelo de classificação de tokens**, o que significa que ele pode ser usado para realizar a classificação de tokens. Essa é uma tarefa muito comum em PLN, ajudando a reconhecer entidades específicas dentro de um texto, incluindo lugares, nomes, datas e mais. + +## 🚀 Desafio + +Complete a tarefa vinculada abaixo para treinar um modelo de reconhecimento de entidades nomeadas para termos médicos e, em seguida, experimente em um conjunto de dados diferente. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Revisão e Autoestudo + +Leia o blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) e siga a seção de Leituras Adicionais nesse artigo para aprofundar seu conhecimento. + +## [Tarefa](lab/README.md) + +Na tarefa desta lição, você terá que treinar um modelo de reconhecimento de entidades médicas. Você pode começar treinando um modelo LSTM, como descrito nesta lição, e depois avançar para usar o modelo transformer BERT. Leia [as instruções](lab/README.md) para obter todos os detalhes. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/19-NER/lab/README.md b/translations/br/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..37220f7c --- /dev/null +++ b/translations/br/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Trabalho prático do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Neste laboratório, você precisa treinar um modelo de reconhecimento de entidades nomeadas (NER) para termos médicos. + +## O Conjunto de Dados + +Para treinar o modelo de NER, precisamos de um conjunto de dados devidamente rotulado com entidades médicas. O [conjunto de dados BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contém entidades rotuladas de doenças e produtos químicos extraídas de mais de 1500 artigos. Você pode baixar o conjunto de dados após se registrar no site deles. + +O conjunto de dados BC5CDR tem o seguinte formato: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +Neste conjunto de dados, há o título e o resumo do artigo nas duas primeiras linhas, e depois há entidades individuais, com posições de início e fim dentro do bloco título+resumo. Além do tipo de entidade, você obtém o ID de ontologia dessa entidade dentro de alguma ontologia médica. + +Você precisará escrever algum código em Python para converter isso em codificação BIO. + +## A Rede + +A primeira tentativa de NER pode ser feita usando uma rede LSTM, como no exemplo que você viu durante a aula. No entanto, em tarefas de PLN, a [arquitetura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), e especificamente os [modelos de linguagem BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), apresentam resultados muito melhores. Modelos BERT pré-treinados entendem a estrutura geral de uma linguagem e podem ser ajustados para tarefas específicas com conjuntos de dados relativamente pequenos e custos computacionais reduzidos. + +Como planejamos aplicar NER a um cenário médico, faz sentido usar um modelo BERT treinado em textos médicos. A Microsoft Research lançou um modelo pré-treinado chamado [PubMedBERT][PubMedBERT] ([publicação][PubMedBERT-Pub]), que foi ajustado usando textos do repositório [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +O padrão *de facto* para treinar modelos transformer é a biblioteca [Hugging Face Transformers](https://huggingface.co/). Ela também contém um repositório de modelos pré-treinados mantidos pela comunidade, incluindo o PubMedBERT. Para carregar e usar este modelo, precisamos apenas de algumas linhas de código: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +Isso nos fornece o próprio `model`, construído para a tarefa de classificação de tokens usando o número de `classes`, bem como o objeto `tokenizer`, que pode dividir o texto de entrada em tokens. Você precisará converter o conjunto de dados para o formato BIO, levando em conta a tokenização do PubMedBERT. Você pode usar [este trecho de código Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiração. + +## Conclusão + +Esta tarefa é muito próxima da tarefa real que você provavelmente terá se quiser obter mais insights sobre grandes volumes de textos em linguagem natural. No nosso caso, podemos aplicar o modelo treinado ao [conjunto de dados de artigos relacionados à COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) e ver quais insights podemos obter. [Este post no blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) e [este artigo](https://www.mdpi.com/2504-2289/6/1/4) descrevem as pesquisas que podem ser realizadas nesse corpus de artigos usando NER. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/20-LangModels/README.md b/translations/br/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..1761e68f --- /dev/null +++ b/translations/br/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Modelos de Linguagem Pré-Treinados + +Em todas as nossas tarefas anteriores, treinamos uma rede neural para realizar uma determinada tarefa usando um conjunto de dados rotulado. Com grandes modelos de transformadores, como o BERT, utilizamos modelagem de linguagem de forma auto-supervisionada para construir um modelo de linguagem, que é então especializado para tarefas específicas com treinamento adicional em domínios específicos. No entanto, foi demonstrado que grandes modelos de linguagem também podem resolver muitas tarefas sem QUALQUER treinamento específico de domínio. Uma família de modelos capaz de fazer isso é chamada de **GPT**: Transformador Pré-Treinado Generativo. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Geração de Texto e Perplexidade + +A ideia de uma rede neural ser capaz de realizar tarefas gerais sem treinamento adicional é apresentada no artigo [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). A ideia principal é que muitas outras tarefas podem ser modeladas usando **geração de texto**, porque entender texto essencialmente significa ser capaz de produzi-lo. Como o modelo é treinado em uma enorme quantidade de texto que abrange o conhecimento humano, ele também se torna conhecedor de uma ampla variedade de assuntos. + +> Entender e ser capaz de produzir texto também implica saber algo sobre o mundo ao nosso redor. As pessoas também aprendem muito lendo, e a rede GPT é semelhante nesse aspecto. + +Redes de geração de texto funcionam prevendo a probabilidade da próxima palavra $$P(w_N)$$. No entanto, a probabilidade incondicional da próxima palavra é igual à frequência dessa palavra no corpus de texto. O GPT é capaz de nos fornecer a **probabilidade condicional** da próxima palavra, dadas as anteriores: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Você pode ler mais sobre probabilidades em nosso [Currículo de Ciência de Dados para Iniciantes](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +A qualidade de um modelo de geração de linguagem pode ser definida usando **perplexidade**. É uma métrica intrínseca que nos permite medir a qualidade do modelo sem qualquer conjunto de dados específico de tarefa. Ela se baseia na noção de *probabilidade de uma sentença* - o modelo atribui alta probabilidade a uma sentença que provavelmente é real (ou seja, o modelo não está **perplexo** com ela) e baixa probabilidade a sentenças que fazem menos sentido (ex.: *Pode ele faz o quê?*). Quando damos ao nosso modelo sentenças de um corpus de texto real, esperamos que elas tenham alta probabilidade e baixa **perplexidade**. Matematicamente, é definida como a probabilidade inversa normalizada do conjunto de teste: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Você pode experimentar a geração de texto usando o [editor de texto com GPT da Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Neste editor, você começa a escrever seu texto e, ao pressionar **[TAB]**, várias opções de conclusão serão oferecidas. Se forem muito curtas ou você não estiver satisfeito com elas, pressione [TAB] novamente e terá mais opções, incluindo trechos mais longos de texto. + +## GPT é uma Família + +GPT não é um único modelo, mas sim uma coleção de modelos desenvolvidos e treinados pela [OpenAI](https://openai.com). + +Dentro dos modelos GPT, temos: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|Modelo de linguagem com até 1,5 bilhões de parâmetros. | Modelo de linguagem com até 175 bilhões de parâmetros. | 100 trilhões de parâmetros e aceita tanto entradas de imagem quanto de texto, gerando saídas em texto. | + +Os modelos GPT-3 e GPT-4 estão disponíveis [como um serviço cognitivo da Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) e como [API da OpenAI](https://openai.com/api/). + +## Engenharia de Prompt + +Como o GPT foi treinado em grandes volumes de dados para entender linguagem e código, ele fornece respostas em resposta a entradas (prompts). Prompts são entradas ou consultas para o GPT, onde se fornecem instruções aos modelos sobre as tarefas que devem ser realizadas. Para obter um resultado desejado, é necessário o prompt mais eficaz, que envolve selecionar as palavras, formatos, frases ou até símbolos certos. Essa abordagem é chamada de [Engenharia de Prompt](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Esta documentação](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) fornece mais informações sobre engenharia de prompt. + +## ✍️ Notebook de Exemplo: [Explorando o OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continue seu aprendizado nos seguintes notebooks: + +* [Gerando texto com OpenAI-GPT e Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusão + +Novos modelos de linguagem pré-treinados gerais não apenas modelam a estrutura da linguagem, mas também contêm uma vasta quantidade de linguagem natural. Assim, eles podem ser usados de forma eficaz para resolver algumas tarefas de PLN em configurações de zero-shot ou few-shot. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/5-NLP/README.md b/translations/br/lessons/5-NLP/README.md new file mode 100644 index 00000000..f2a9ce01 --- /dev/null +++ b/translations/br/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Processamento de Linguagem Natural + +![Resumo das tarefas de PLN em um desenho](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.br.png) + +Nesta seção, vamos focar no uso de Redes Neurais para lidar com tarefas relacionadas ao **Processamento de Linguagem Natural (PLN)**. Existem muitos problemas de PLN que queremos que os computadores sejam capazes de resolver: + +* **Classificação de texto** é um problema típico de classificação relacionado a sequências de texto. Exemplos incluem classificar mensagens de e-mail como spam ou não-spam, ou categorizar artigos como esportes, negócios, política, etc. Além disso, ao desenvolver chatbots, frequentemente precisamos entender o que o usuário quis dizer — nesse caso, estamos lidando com **classificação de intenção**. Muitas vezes, na classificação de intenção, precisamos lidar com muitas categorias. +* **Análise de sentimento** é um problema típico de regressão, onde precisamos atribuir um número (um sentimento) correspondente ao quão positivo/negativo é o significado de uma frase. Uma versão mais avançada da análise de sentimento é a **análise de sentimento baseada em aspectos** (ABSA), onde atribuímos o sentimento não à frase inteira, mas a diferentes partes dela (aspectos), por exemplo: *Neste restaurante, gostei da culinária, mas a atmosfera era horrível*. +* **Reconhecimento de Entidades Nomeadas** (NER) refere-se ao problema de extrair certas entidades de um texto. Por exemplo, podemos precisar entender que na frase *Preciso voar para Paris amanhã* a palavra *amanhã* refere-se a uma DATA, e *Paris* é um LOCAL. +* **Extração de palavras-chave** é semelhante ao NER, mas precisamos extrair palavras importantes para o significado da frase automaticamente, sem pré-treinamento para tipos específicos de entidades. +* **Agrupamento de texto** pode ser útil quando queremos agrupar frases semelhantes, por exemplo, solicitações similares em conversas de suporte técnico. +* **Resposta a perguntas** refere-se à capacidade de um modelo de responder a uma pergunta específica. O modelo recebe um trecho de texto e uma pergunta como entradas, e precisa fornecer um local no texto onde a resposta à pergunta está contida (ou, às vezes, gerar o texto da resposta). +* **Geração de texto** é a capacidade de um modelo de gerar novo texto. Pode ser considerado como uma tarefa de classificação que prevê a próxima letra/palavra com base em algum *texto inicial*. Modelos avançados de geração de texto, como o GPT-3, são capazes de resolver outras tarefas de PLN usando uma técnica chamada [programação de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ou [engenharia de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Resumo de texto** é uma técnica em que queremos que um computador "leia" um texto longo e o resuma em algumas frases. +* **Tradução automática** pode ser vista como uma combinação de compreensão de texto em um idioma e geração de texto em outro. + +Inicialmente, a maioria das tarefas de PLN era resolvida usando métodos tradicionais, como gramáticas. Por exemplo, na tradução automática, analisadores eram usados para transformar a frase inicial em uma árvore sintática, depois estruturas semânticas de nível superior eram extraídas para representar o significado da frase, e com base nesse significado e na gramática do idioma de destino, o resultado era gerado. Hoje em dia, muitas tarefas de PLN são resolvidas de forma mais eficaz usando redes neurais. + +> Muitos métodos clássicos de PLN estão implementados na biblioteca Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Há um excelente [Livro do NLTK](https://www.nltk.org/book/) disponível online que cobre como diferentes tarefas de PLN podem ser resolvidas usando o NLTK. + +Em nosso curso, vamos focar principalmente no uso de Redes Neurais para PLN, e usaremos o NLTK quando necessário. + +Já aprendemos sobre o uso de redes neurais para lidar com dados tabulares e imagens. A principal diferença entre esses tipos de dados e texto é que o texto é uma sequência de comprimento variável, enquanto o tamanho da entrada no caso de imagens é conhecido antecipadamente. Embora redes convolucionais possam extrair padrões de dados de entrada, os padrões em texto são mais complexos. Por exemplo, podemos ter uma negação separada do sujeito por muitas palavras arbitrárias (ex.: *Eu não gosto de laranjas*, vs. *Eu não gosto dessas grandes laranjas coloridas e saborosas*), e isso ainda deve ser interpretado como um único padrão. Assim, para lidar com a linguagem, precisamos introduzir novos tipos de redes neurais, como *redes recorrentes* e *transformers*. + +## Instalar Bibliotecas + +Se você estiver usando uma instalação local do Python para executar este curso, pode ser necessário instalar todas as bibliotecas necessárias para PLN usando os seguintes comandos: + +**Para PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Para TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Você pode experimentar PLN com TensorFlow no [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Aviso sobre GPU + +Nesta seção, em alguns dos exemplos, treinaremos modelos bastante grandes. +* **Use um computador com GPU**: É recomendável executar seus notebooks em um computador com GPU para reduzir o tempo de espera ao trabalhar com modelos grandes. +* **Restrições de memória da GPU**: Executar em uma GPU pode levar a situações em que você fique sem memória da GPU, especialmente ao treinar modelos grandes. +* **Consumo de memória da GPU**: A quantidade de memória da GPU consumida durante o treinamento depende de vários fatores, incluindo o tamanho do minibatch. +* **Minimize o tamanho do minibatch**: Se você encontrar problemas de memória da GPU, considere reduzir o tamanho do minibatch em seu código como uma solução potencial. +* **Liberação de memória da GPU no TensorFlow**: Versões mais antigas do TensorFlow podem não liberar corretamente a memória da GPU ao treinar vários modelos dentro de um único kernel Python. Para gerenciar o uso de memória da GPU de forma eficaz, você pode configurar o TensorFlow para alocar memória da GPU apenas conforme necessário. +* **Inclusão de código**: Para configurar o TensorFlow para aumentar a alocação de memória da GPU apenas quando necessário, inclua o seguinte código em seus notebooks: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Se você estiver interessado em aprender sobre PLN a partir de uma perspectiva de aprendizado de máquina clássico, visite [esta coleção de lições](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## Nesta Seção +Nesta seção, aprenderemos sobre: + +* [Representação de texto como tensores](13-TextRep/README.md) +* [Embeddings de palavras](14-Emdeddings/README.md) +* [Modelagem de linguagem](15-LanguageModeling/README.md) +* [Redes Neurais Recorrentes](16-RNN/README.md) +* [Redes Generativas](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/br/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..7c716906 --- /dev/null +++ b/translations/br/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Algoritmos Genéticos + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Algoritmos Genéticos** (AG) são baseados em uma abordagem **evolutiva** para IA, na qual métodos de evolução de uma população são usados para obter uma solução ótima para um determinado problema. Eles foram propostos em 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Os Algoritmos Genéticos são baseados nas seguintes ideias: + +* Soluções válidas para o problema podem ser representadas como **genes** +* O **crossover** permite combinar duas soluções para obter uma nova solução válida +* A **seleção** é usada para escolher soluções mais otimizadas utilizando alguma **função de aptidão** +* **Mutações** são introduzidas para desestabilizar a otimização e nos tirar de mínimos locais + +Se você quiser implementar um Algoritmo Genético, precisará do seguinte: + +* Encontrar um método para codificar as soluções do problema usando **genes** g∈Γ +* No conjunto de genes Γ, é necessário definir uma **função de aptidão** fit: Γ→**R**. Valores menores da função correspondem a soluções melhores. +* Definir um mecanismo de **crossover** para combinar dois genes e obter uma nova solução válida crossover: Γ2→Γ. +* Definir um mecanismo de **mutação** mutate: Γ→Γ. + +Em muitos casos, os algoritmos de crossover e mutação são bastante simples para manipular genes como sequências numéricas ou vetores de bits. + +A implementação específica de um algoritmo genético pode variar de caso para caso, mas a estrutura geral é a seguinte: + +1. Selecionar uma população inicial G⊂Γ +2. Selecionar aleatoriamente uma das operações que será realizada nesta etapa: crossover ou mutação +3. **Crossover**: + * Selecionar aleatoriamente dois genes g1, g2 ∈ G + * Calcular o crossover g=crossover(g1,g2) + * Se fit(g)1) ou fit(g)2) - substituir o gene correspondente na população por g. +4. **Mutação** - selecionar um gene aleatório g∈G e substituí-lo por mutate(g) +5. Repetir a partir do passo 2, até obtermos um valor suficientemente pequeno de fit, ou até que o limite no número de etapas seja alcançado. + +## Tarefas Típicas + +As tarefas tipicamente resolvidas por Algoritmos Genéticos incluem: + +1. Otimização de cronogramas +1. Empacotamento ótimo +1. Corte ótimo +1. Aceleração de busca exaustiva + +## ✍️ Exercícios: Algoritmos Genéticos + +Continue seu aprendizado nos seguintes notebooks: + +Acesse [este notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dois exemplos de uso de Algoritmos Genéticos: + +1. Divisão justa de tesouro +1. Problema das 8 Rainhas + +## Conclusão + +Os Algoritmos Genéticos são usados para resolver muitos problemas, incluindo problemas de logística e busca. A área é inspirada por pesquisas que uniram tópicos de Psicologia e Ciência da Computação. + +## 🚀 Desafio + +"Algoritmos genéticos são simples de implementar, mas seu comportamento é difícil de entender." [fonte](https://wikipedia.org/wiki/Genetic_algorithm) Faça uma pesquisa para encontrar uma implementação de um algoritmo genético, como resolver um quebra-cabeça de Sudoku, e explique como ele funciona por meio de um esboço ou fluxograma. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Revisão e Autoestudo + +Assista a [este ótimo vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como um computador pode aprender a jogar Super Mario usando redes neurais treinadas por algoritmos genéticos. Aprenderemos mais sobre computadores aprendendo a jogar jogos como esse [na próxima seção](../22-DeepRL/README.md). + +## [Tarefa: Equação Diofantina](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Seu objetivo é resolver a chamada **equação diofantina** - uma equação com raízes inteiras. Por exemplo, considere a equação a+2b+3c+4d=30. Você precisa encontrar as raízes inteiras que satisfaçam essa equação. + +*Esta tarefa é inspirada por [este post](https://habr.com/post/128704/).* + +Dicas: + +1. Você pode considerar raízes no intervalo [0;30] +1. Como gene, considere usar a lista de valores das raízes + +Use [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como ponto de partida. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/6-Other/22-DeepRL/README.md b/translations/br/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..7964adf0 --- /dev/null +++ b/translations/br/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Aprendizado por Reforço Profundo + +O aprendizado por reforço (RL) é considerado um dos paradigmas básicos de aprendizado de máquina, ao lado do aprendizado supervisionado e não supervisionado. Enquanto no aprendizado supervisionado dependemos de um conjunto de dados com resultados conhecidos, o RL é baseado no **aprender fazendo**. Por exemplo, quando vemos um jogo de computador pela primeira vez, começamos a jogar, mesmo sem conhecer as regras, e logo conseguimos melhorar nossas habilidades apenas pelo processo de jogar e ajustar nosso comportamento. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Para realizar RL, precisamos de: + +* Um **ambiente** ou **simulador** que define as regras do jogo. Devemos ser capazes de executar experimentos no simulador e observar os resultados. +* Uma **função de recompensa**, que indica quão bem-sucedido foi nosso experimento. No caso de aprender a jogar um jogo de computador, a recompensa seria nossa pontuação final. + +Com base na função de recompensa, devemos ser capazes de ajustar nosso comportamento e melhorar nossas habilidades, para que na próxima vez joguemos melhor. A principal diferença entre outros tipos de aprendizado de máquina e RL é que no RL geralmente não sabemos se ganhamos ou perdemos até terminarmos o jogo. Assim, não podemos dizer se um movimento específico é bom ou não - só recebemos uma recompensa no final do jogo. + +Durante o RL, normalmente realizamos muitos experimentos. Em cada experimento, precisamos equilibrar entre seguir a estratégia ideal que aprendemos até agora (**exploração**) e explorar novos estados possíveis (**exploração**). + +## OpenAI Gym + +Uma ferramenta excelente para RL é o [OpenAI Gym](https://gym.openai.com/) - um **ambiente de simulação**, que pode simular muitos ambientes diferentes, desde jogos do Atari até a física por trás do equilíbrio de um pêndulo. É um dos ambientes de simulação mais populares para treinar algoritmos de aprendizado por reforço e é mantido pela [OpenAI](https://openai.com/). + +> **Note**: Você pode ver todos os ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). + +## Equilíbrio do CartPole + +Provavelmente todos já viram dispositivos modernos de equilíbrio, como o *Segway* ou *Gyroscooters*. Eles conseguem se equilibrar automaticamente ajustando suas rodas em resposta a um sinal de um acelerômetro ou giroscópio. Nesta seção, aprenderemos como resolver um problema semelhante - equilibrar um pêndulo. É similar a uma situação em que um artista de circo precisa equilibrar um pêndulo na mão - mas esse equilíbrio ocorre apenas em 1D. + +Uma versão simplificada do equilíbrio é conhecida como problema **CartPole**. No mundo do CartPole, temos um slider horizontal que pode se mover para a esquerda ou para a direita, e o objetivo é equilibrar um pêndulo vertical no topo do slider enquanto ele se move. + +um cartpole + +Para criar e usar este ambiente, precisamos de algumas linhas de código Python: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +Cada ambiente pode ser acessado exatamente da mesma maneira: +* `env.reset` inicia um novo experimento +* `env.step` realiza um passo de simulação. Ele recebe uma **ação** do **espaço de ações** e retorna uma **observação** (do espaço de observação), bem como uma recompensa e um sinal de término. + +No exemplo acima, realizamos uma ação aleatória em cada passo, o que faz com que a vida do experimento seja muito curta: + +![cartpole sem equilíbrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +O objetivo de um algoritmo de RL é treinar um modelo - a chamada **política** π - que retornará a ação em resposta a um estado dado. Também podemos considerar a política como probabilística, por exemplo, para qualquer estado *s* e ação *a*, ela retornará a probabilidade π(*a*|*s*) de que devemos tomar *a* no estado *s*. + +## Algoritmo de Gradientes de Política + +A maneira mais óbvia de modelar uma política é criando uma rede neural que receba estados como entrada e retorne ações correspondentes (ou melhor, as probabilidades de todas as ações). Em certo sentido, seria semelhante a uma tarefa de classificação normal, com uma grande diferença - não sabemos de antemão quais ações devemos tomar em cada passo. + +A ideia aqui é estimar essas probabilidades. Construímos um vetor de **recompensas acumuladas**, que mostra nossa recompensa total em cada passo do experimento. Também aplicamos **desconto de recompensa**, multiplicando recompensas anteriores por algum coeficiente γ=0.99, para diminuir o papel das recompensas anteriores. Em seguida, reforçamos os passos ao longo do caminho do experimento que geram maiores recompensas. + +> Saiba mais sobre o algoritmo de Gradientes de Política e veja-o em ação no [notebook de exemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritmo Ator-Crítico + +Uma versão aprimorada da abordagem de Gradientes de Política é chamada de **Ator-Crítico**. A ideia principal por trás disso é que a rede neural seria treinada para retornar duas coisas: + +* A política, que determina qual ação tomar. Esta parte é chamada de **ator** +* A estimativa da recompensa total que podemos esperar obter neste estado - esta parte é chamada de **crítico**. + +Em certo sentido, essa arquitetura se assemelha a um [GAN](../../4-ComputerVision/10-GANs/README.md), onde temos duas redes que são treinadas uma contra a outra. No modelo ator-crítico, o ator propõe a ação que precisamos tomar, e o crítico tenta ser crítico e estimar o resultado. No entanto, nosso objetivo é treinar essas redes em conjunto. + +Como sabemos tanto as recompensas acumuladas reais quanto os resultados retornados pelo crítico durante o experimento, é relativamente fácil construir uma função de perda que minimize a diferença entre eles. Isso nos daria a **perda do crítico**. Podemos calcular a **perda do ator** usando a mesma abordagem do algoritmo de gradientes de política. + +Depois de executar um desses algoritmos, podemos esperar que nosso CartPole se comporte assim: + +![um cartpole equilibrado](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Exercícios: Gradientes de Política e RL Ator-Crítico + +Continue seu aprendizado nos seguintes notebooks: + +* [RL em TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL em PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Outras Tarefas de RL + +O aprendizado por reforço atualmente é um campo de pesquisa em rápido crescimento. Alguns exemplos interessantes de aprendizado por reforço são: + +* Ensinar um computador a jogar **jogos do Atari**. A parte desafiadora desse problema é que não temos um estado simples representado como um vetor, mas sim uma captura de tela - e precisamos usar uma CNN para converter essa imagem de tela em um vetor de características ou extrair informações de recompensa. Os jogos do Atari estão disponíveis no Gym. +* Ensinar um computador a jogar jogos de tabuleiro, como Xadrez e Go. Recentemente, programas de última geração como **Alpha Zero** foram treinados do zero por dois agentes jogando um contra o outro e melhorando a cada passo. +* Na indústria, o RL é usado para criar sistemas de controle a partir de simulações. Um serviço chamado [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) é especificamente projetado para isso. + +## Conclusão + +Agora aprendemos como treinar agentes para alcançar bons resultados apenas fornecendo-lhes uma função de recompensa que define o estado desejado do jogo e dando-lhes a oportunidade de explorar inteligentemente o espaço de busca. Experimentamos com sucesso dois algoritmos e alcançamos um bom resultado em um período relativamente curto de tempo. No entanto, este é apenas o começo de sua jornada no RL, e você definitivamente deve considerar fazer um curso separado se quiser se aprofundar. + +## 🚀 Desafio + +Explore as aplicações listadas na seção 'Outras Tarefas de RL' e tente implementar uma delas! + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Revisão e Autoestudo + +Saiba mais sobre aprendizado por reforço clássico em nosso [Currículo de Aprendizado de Máquina para Iniciantes](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Assista a [este ótimo vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como um computador pode aprender a jogar Super Mario. + +## Tarefa: [Treine um Mountain Car](lab/README.md) + +Seu objetivo nesta tarefa será treinar um ambiente diferente do Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/6-Other/22-DeepRL/lab/README.md b/translations/br/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..4ceadd3c --- /dev/null +++ b/translations/br/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,31 @@ + +# Treinando o Carro da Montanha para Escapar + +Tarefa do laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Seu objetivo é treinar o agente de RL para controlar o [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) no Ambiente OpenAI. + +## O Ambiente + +O ambiente Mountain Car consiste em um carro preso dentro de um vale. Seu objetivo é sair do vale e alcançar a bandeira. As ações que você pode realizar são acelerar para a esquerda, para a direita ou não fazer nada. Você pode observar a posição do carro ao longo do eixo x e sua velocidade. + +## Notebook Inicial + +Comece o laboratório abrindo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Conclusão + +Você deve aprender ao longo deste laboratório que adaptar algoritmos de RL para um novo ambiente é frequentemente bastante simples, porque o OpenAI Gym possui a mesma interface para todos os ambientes, e os algoritmos, como tal, não dependem muito da natureza do ambiente. Você pode até reestruturar o código Python de forma a passar qualquer ambiente para o algoritmo de RL como um parâmetro. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/6-Other/23-MultiagentSystems/README.md b/translations/br/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..aab33db1 --- /dev/null +++ b/translations/br/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Sistemas Multiagentes + +Uma das formas possíveis de alcançar inteligência é a chamada abordagem **emergente** (ou **sinergética**), que se baseia no fato de que o comportamento combinado de muitos agentes relativamente simples pode resultar em um comportamento geral mais complexo (ou inteligente) do sistema como um todo. Teoricamente, isso se baseia nos princípios de [Inteligência Coletiva](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) e [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirmam que sistemas de nível superior ganham algum tipo de valor agregado quando são devidamente combinados a partir de sistemas de nível inferior (o chamado *princípio da transição de metasistema*). + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +A direção dos **Sistemas Multiagentes** surgiu na IA na década de 1990 como uma resposta ao crescimento da Internet e dos sistemas distribuídos. Um dos livros clássicos de IA, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), foca na visão da IA clássica do ponto de vista dos sistemas multiagentes. + +Central para a abordagem multiagente é a noção de **Agente** - uma entidade que vive em algum **ambiente**, que pode perceber e agir sobre ele. Esta é uma definição muito ampla, e pode haver muitos tipos e classificações diferentes de agentes: + +* Pela sua capacidade de raciocinar: + - Agentes **reativos** geralmente têm um comportamento simples de solicitação-resposta + - Agentes **deliberativos** empregam algum tipo de raciocínio lógico e/ou capacidades de planejamento +* Pelo local onde o agente executa seu código: + - Agentes **estáticos** trabalham em um nó de rede dedicado + - Agentes **móveis** podem mover seu código entre nós de rede +* Pelo seu comportamento: + - Agentes **passivos** não têm objetivos específicos. Esses agentes podem reagir a estímulos externos, mas não iniciam ações por conta própria. + - Agentes **ativos** têm alguns objetivos que perseguem + - Agentes **cognitivos** envolvem planejamento e raciocínio complexos + +Os sistemas multiagentes são atualmente usados em várias aplicações: + +* Em jogos, muitos personagens não jogáveis empregam algum tipo de IA e podem ser considerados agentes inteligentes +* Na produção de vídeos, renderizar cenas 3D complexas que envolvem multidões geralmente é feito usando simulação multiagente +* Na modelagem de sistemas, a abordagem multiagente é usada para simular o comportamento de um modelo complexo. Por exemplo, a abordagem multiagente foi usada com sucesso para prever a disseminação da COVID-19 em todo o mundo. Abordagem semelhante pode ser usada para modelar o tráfego em uma cidade e ver como ele reage a mudanças nas regras de trânsito. +* Em sistemas de automação complexos, cada dispositivo pode atuar como um agente independente, tornando o sistema como um todo menos monolítico e mais robusto. + +Não vamos gastar muito tempo nos aprofundando em sistemas multiagentes, mas vamos considerar um exemplo de **Modelagem Multiagente**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) é um ambiente de modelagem multiagente baseado em uma versão modificada da linguagem de programação [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Essa linguagem foi desenvolvida para ensinar conceitos de programação a crianças e permite controlar um agente chamado **tartaruga**, que pode se mover deixando um rastro. Isso permite criar figuras geométricas complexas, sendo uma forma muito visual de entender o comportamento de um agente. + +No NetLogo, podemos criar muitas tartarugas usando o comando `create-turtles`. Podemos então comandar todas as tartarugas para realizar algumas ações (no exemplo abaixo - mover 10 pontos para frente): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Claro, não é interessante quando todas as tartarugas fazem a mesma coisa, então podemos `ask` grupos de tartarugas, por exemplo, aquelas que estão nas proximidades de um determinado ponto. Também podemos criar tartarugas de diferentes *raças* usando o comando `breed [cats cat]`. Aqui `cat` é o nome de uma raça, e precisamos especificar tanto a palavra no singular quanto no plural, porque diferentes comandos usam formas diferentes para maior clareza. + +> ✅ Não entraremos no aprendizado da linguagem NetLogo em si - você pode visitar o excelente recurso [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) se estiver interessado em aprender mais. + +Você pode [baixar](https://ccl.northwestern.edu/netlogo/download.shtml) e instalar o NetLogo para experimentá-lo. + +### Biblioteca de Modelos + +Uma grande vantagem do NetLogo é que ele contém uma biblioteca de modelos funcionais que você pode experimentar. Vá para **File → Models Library**, e você terá muitas categorias de modelos para escolher. + +Biblioteca de Modelos do NetLogo + +> Uma captura de tela da biblioteca de modelos por Dmitry Soshnikov + +Você pode abrir um dos modelos, por exemplo **Biology → Flocking**. + +### Princípios Principais + +Após abrir o modelo, você será levado à tela principal do NetLogo. Aqui está um modelo de exemplo que descreve a população de lobos e ovelhas, dado recursos finitos (grama). + +![Tela Principal do NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.br.png) + +> Captura de tela por Dmitry Soshnikov + +Nesta tela, você pode ver: + +* A seção **Interface**, que contém: + - O campo principal, onde todos os agentes vivem + - Diferentes controles: botões, sliders, etc. + - Gráficos que você pode usar para exibir parâmetros da simulação +* A aba **Code**, que contém o editor onde você pode digitar o programa NetLogo + +Na maioria dos casos, a interface terá um botão **Setup**, que inicializa o estado da simulação, e um botão **Go**, que inicia a execução. Esses são tratados por manipuladores correspondentes no código que se parecem com isto: + +``` +to go [ +... +] +``` + +O mundo do NetLogo consiste nos seguintes objetos: + +* **Agentes** (tartarugas) que podem se mover pelo campo e fazer algo. Você comanda os agentes usando a sintaxe `ask turtles [...]`, e o código entre colchetes é executado por todos os agentes no *modo tartaruga*. +* **Patches** são áreas quadradas do campo onde os agentes vivem. Você pode se referir a todos os agentes no mesmo patch ou pode alterar as cores do patch e algumas outras propriedades. Você também pode `ask patches` para fazer algo. +* **Observer** é um agente único que controla o mundo. Todos os manipuladores de botões são executados no *modo observador*. + +> ✅ A beleza de um ambiente multiagente é que o código que roda no modo tartaruga ou no modo patch é executado ao mesmo tempo por todos os agentes em paralelo. Assim, ao escrever um pouco de código e programar o comportamento de um agente individual, você pode criar um comportamento complexo do sistema de simulação como um todo. + +### Flocking + +Como exemplo de comportamento multiagente, vamos considerar **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking é um padrão complexo muito semelhante ao modo como bandos de pássaros voam. Observando-os voar, você pode pensar que eles seguem algum tipo de algoritmo coletivo ou que possuem alguma forma de *inteligência coletiva*. No entanto, esse comportamento complexo surge quando cada agente individual (neste caso, um *pássaro*) apenas observa alguns outros agentes em uma curta distância e segue três regras simples: + +* **Alinhamento** - direciona-se para a direção média dos agentes vizinhos +* **Coesão** - tenta direcionar-se para a posição média dos vizinhos (*atração de longo alcance*) +* **Separação** - ao se aproximar muito de outros pássaros, tenta se afastar (*repulsão de curto alcance*) + +Você pode executar o exemplo de flocking e observar o comportamento. Também pode ajustar parâmetros, como o *grau de separação* ou o *alcance de visão*, que define quão longe cada pássaro pode enxergar. Note que, se você diminuir o alcance de visão para 0, todos os pássaros ficam cegos e o flocking para. Se você diminuir a separação para 0, todos os pássaros se agrupam em uma linha reta. + +> ✅ Mude para a aba **Code** e veja onde as três regras de flocking (alinhamento, coesão e separação) são implementadas no código. Note como nos referimos apenas aos agentes que estão à vista. + +### Outros Modelos para Ver + +Há alguns modelos interessantes que você pode experimentar: + +* **Art → Fireworks** mostra como um fogo de artifício pode ser considerado um comportamento coletivo de fluxos individuais de fogo +* **Social Science → Traffic Basic** e **Social Science → Traffic Grid** mostram o modelo de tráfego urbano em uma grade 1D e 2D com ou sem semáforos. Cada carro na simulação segue as seguintes regras: + - Se o espaço à frente estiver vazio - acelere (até uma certa velocidade máxima) + - Se vir um obstáculo à frente - freie (e você pode ajustar o quão longe o motorista pode enxergar) +* **Social Science → Party** mostra como as pessoas se agrupam durante uma festa de coquetel. Você pode encontrar a combinação de parâmetros que leva ao aumento mais rápido da felicidade do grupo. + +Como você pode ver nesses exemplos, simulações multiagentes podem ser uma maneira bastante útil de entender o comportamento de um sistema complexo composto por indivíduos que seguem a mesma lógica ou lógica semelhante. Também pode ser usado para controlar agentes virtuais, como [NPCs](https://en.wikipedia.org/wiki/NPC) em jogos de computador ou agentes em mundos animados em 3D. + +## Agentes Deliberativos + +Os agentes descritos acima são muito simples, reagindo a mudanças no ambiente usando algum tipo de algoritmo. Como tal, eles são **agentes reativos**. No entanto, às vezes os agentes podem raciocinar e planejar suas ações, caso em que são chamados de **deliberativos**. + +Um exemplo típico seria um agente pessoal que recebe uma instrução de um humano para reservar um pacote de férias. Suponha que existam muitos agentes que vivem na internet e podem ajudá-lo. Ele deve então entrar em contato com outros agentes para ver quais voos estão disponíveis, quais são os preços dos hotéis para diferentes datas e tentar negociar o melhor preço. Quando o plano de férias estiver completo e confirmado pelo proprietário, ele pode prosseguir com a reserva. + +Para fazer isso, os agentes precisam **comunicar-se**. Para uma comunicação bem-sucedida, eles precisam: + +* Algumas **linguagens padrão para trocar conhecimento**, como [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) e [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Essas linguagens são projetadas com base na [Teoria dos Atos de Fala](https://en.wikipedia.org/wiki/Speech_act). +* Essas linguagens também devem incluir alguns **protocolos de negociação**, baseados em diferentes **tipos de leilão**. +* Uma **ontologia comum** para usar, de modo que se refiram aos mesmos conceitos conhecendo sua semântica +* Uma maneira de **descobrir** o que diferentes agentes podem fazer, também baseada em algum tipo de ontologia + +Agentes deliberativos são muito mais complexos do que reativos, porque não apenas reagem a mudanças no ambiente, mas também devem ser capazes de *iniciar* ações. Uma das arquiteturas propostas para agentes deliberativos é o chamado agente de Crença-Desejo-Intenção (BDI): + +* **Crenças** formam um conjunto de conhecimento sobre o ambiente do agente. Pode ser estruturado como uma base de conhecimento ou conjunto de regras que um agente pode aplicar a uma situação específica no ambiente. +* **Desejos** definem o que um agente quer fazer, ou seja, seus objetivos. Por exemplo, o objetivo do agente assistente pessoal acima é reservar um pacote de férias, e o objetivo de um agente de hotel é maximizar o lucro. +* **Intenções** são ações específicas que um agente planeja para alcançar seus objetivos. As ações geralmente mudam o ambiente e causam comunicação com outros agentes. + +Existem algumas plataformas disponíveis para construir sistemas multiagentes, como [JADE](https://jade.tilab.com/). [Este artigo](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contém uma revisão das plataformas multiagentes, juntamente com um breve histórico dos sistemas multiagentes e seus diferentes cenários de uso. + +## Conclusão + +Sistemas Multiagentes podem assumir formas muito diferentes e ser usados em muitas aplicações distintas. +Eles tendem a focar no comportamento mais simples de um agente individual e alcançar um comportamento mais complexo do sistema geral devido ao **efeito sinergético**. + +## 🚀 Desafio + +Leve esta lição para o mundo real e tente conceituar um sistema multiagente que possa resolver um problema. O que, por exemplo, um sistema multiagente precisaria fazer para otimizar a rota de um ônibus escolar? Como ele poderia funcionar em uma padaria? + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Revisão e Autoestudo + +Revise o uso desse tipo de sistema na indústria. Escolha um domínio, como manufatura ou a indústria de videogames, e descubra como sistemas multiagentes podem ser usados para resolver problemas únicos. + +## [Tarefa NetLogo](assignment.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/br/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..6f39f89b --- /dev/null +++ b/translations/br/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Tarefa NetLogo + +Escolha um dos modelos da biblioteca do NetLogo e use-o para simular uma situação da vida real da forma mais fiel possível. Um bom exemplo seria ajustar o modelo Virus na pasta Alternative Visualizations para mostrar como ele pode ser usado para modelar a disseminação da COVID-19. Você consegue criar um modelo que imite a propagação viral na vida real? + +Mostre seu trabalho salvando uma cópia e criando um vídeo demonstrativo explicando como o modelo está conectado a uma situação do mundo real. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/7-Ethics/README.md b/translations/br/lessons/7-Ethics/README.md new file mode 100644 index 00000000..90147f89 --- /dev/null +++ b/translations/br/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# IA Ética e Responsável + +Você está quase terminando este curso, e espero que até agora esteja claro que a IA é baseada em uma série de métodos matemáticos formais que nos permitem encontrar relações nos dados e treinar modelos para replicar alguns aspectos do comportamento humano. Neste momento da história, consideramos a IA uma ferramenta muito poderosa para extrair padrões dos dados e aplicar esses padrões para resolver novos problemas. + +## [Quiz pré-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +No entanto, na ficção científica, frequentemente vemos histórias onde a IA apresenta um perigo para a humanidade. Geralmente, essas histórias giram em torno de algum tipo de rebelião da IA, quando ela decide confrontar os seres humanos. Isso implica que a IA possui algum tipo de emoção ou pode tomar decisões inesperadas por seus desenvolvedores. + +O tipo de IA que aprendemos neste curso nada mais é do que uma grande aritmética de matrizes. É uma ferramenta muito poderosa para nos ajudar a resolver nossos problemas e, como qualquer outra ferramenta poderosa, pode ser usada para fins bons ou ruins. É importante destacar que ela pode ser *mal utilizada*. + +## Princípios de IA Responsável + +Para evitar o uso acidental ou intencional inadequado da IA, a Microsoft estabelece os importantes [Princípios de IA Responsável](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Os seguintes conceitos fundamentam esses princípios: + +* **Justiça** está relacionada ao importante problema de *viés nos modelos*, que pode ser causado pelo uso de dados tendenciosos no treinamento. Por exemplo, quando tentamos prever a probabilidade de uma pessoa conseguir um emprego como desenvolvedor de software, o modelo provavelmente dará preferência maior aos homens - simplesmente porque o conjunto de dados de treinamento provavelmente foi tendencioso em relação ao público masculino. Precisamos equilibrar cuidadosamente os dados de treinamento e investigar o modelo para evitar vieses, garantindo que ele leve em conta características mais relevantes. +* **Confiabilidade e Segurança**. Por sua natureza, os modelos de IA podem cometer erros. Uma rede neural retorna probabilidades, e precisamos levar isso em consideração ao tomar decisões. Todo modelo possui alguma precisão e recall, e precisamos entender isso para evitar danos que conselhos errados podem causar. +* **Privacidade e Segurança** têm algumas implicações específicas para IA. Por exemplo, quando usamos alguns dados para treinar um modelo, esses dados se tornam de certa forma "integrados" ao modelo. Por um lado, isso aumenta a segurança e a privacidade, por outro - precisamos lembrar quais dados foram usados no treinamento do modelo. +* **Inclusão** significa que não estamos construindo IA para substituir pessoas, mas sim para aumentar a capacidade humana e tornar nosso trabalho mais criativo. Isso também está relacionado à justiça, porque ao lidar com comunidades sub-representadas, a maioria dos conjuntos de dados que coletamos provavelmente será tendenciosa, e precisamos garantir que essas comunidades sejam incluídas e tratadas corretamente pela IA. +* **Transparência**. Isso inclui garantir que sejamos sempre claros sobre o uso de IA. Além disso, sempre que possível, queremos usar sistemas de IA que sejam *interpretáveis*. +* **Responsabilidade**. Quando os modelos de IA tomam decisões, nem sempre é claro quem é responsável por essas decisões. Precisamos garantir que entendemos onde está a responsabilidade pelas decisões da IA. Na maioria dos casos, queremos incluir seres humanos no processo de tomada de decisões importantes, para que pessoas reais sejam responsabilizadas. + +## Ferramentas para IA Responsável + +A Microsoft desenvolveu o [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), que contém um conjunto de ferramentas: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, que inclui: + + - EconML - ferramenta para Análise Causal, que foca em questões de "e se" + - DiCE - ferramenta para Análise Contrafactual que permite ver quais características precisam ser alteradas para influenciar a decisão do modelo + +Para mais informações sobre Ética em IA, visite [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) no currículo de Machine Learning, que inclui tarefas. + +## Revisão e Autoestudo + +Faça este [Caminho de Aprendizado](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender mais sobre IA responsável. + +## [Quiz pós-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/README.md b/translations/br/lessons/README.md new file mode 100644 index 00000000..e6005831 --- /dev/null +++ b/translations/br/lessons/README.md @@ -0,0 +1,17 @@ + +# Visão Geral + +![Visão Geral em um rabisco](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.br.png) + +> Rabisco por [Tomomi Imura](https://twitter.com/girlie_mac) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/X-Extras/X1-MultiModal/README.md b/translations/br/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..386f1313 --- /dev/null +++ b/translations/br/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Redes Multi-Modais + +Após o sucesso dos modelos transformers na resolução de tarefas de PLN, as mesmas ou similares arquiteturas foram aplicadas a tarefas de visão computacional. Há um interesse crescente em construir modelos que *combinem* capacidades de visão e linguagem natural. Uma dessas tentativas foi realizada pela OpenAI, chamada CLIP e DALL.E. + +## Treinamento Contrastivo de Imagens (CLIP) + +A ideia principal do CLIP é ser capaz de comparar descrições textuais com uma imagem e determinar o quão bem a imagem corresponde à descrição. + +![Arquitetura do CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.br.png) + +> *Imagem retirada [deste post no blog](https://openai.com/blog/clip/)* + +O modelo é treinado com imagens obtidas da Internet e suas legendas. Para cada lote, pegamos N pares de (imagem, texto) e os convertemos em representações vetoriais I e T. Essas representações são então comparadas entre si. A função de perda é definida para maximizar a similaridade cosseno entre os vetores correspondentes a um par (por exemplo, I e T) e minimizar a similaridade cosseno entre todos os outros pares. É por isso que essa abordagem é chamada de **contrastiva**. + +A biblioteca/modelo CLIP está disponível no [GitHub da OpenAI](https://github.com/openai/CLIP). A abordagem é descrita [neste post no blog](https://openai.com/blog/clip/) e em mais detalhes [neste artigo](https://arxiv.org/pdf/2103.00020.pdf). + +Uma vez que este modelo é pré-treinado, podemos fornecer a ele um lote de imagens e um lote de descrições textuais, e ele retornará um tensor com probabilidades. O CLIP pode ser usado para várias tarefas: + +**Classificação de Imagens** + +Suponha que precisamos classificar imagens entre, por exemplo, gatos, cachorros e humanos. Nesse caso, podemos fornecer ao modelo uma imagem e uma série de descrições textuais: "*uma foto de um gato*", "*uma foto de um cachorro*", "*uma foto de um humano*". No vetor resultante de 3 probabilidades, basta selecionar o índice com o maior valor. + +![CLIP para Classificação de Imagens](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.br.png) + +> *Imagem retirada [deste post no blog](https://openai.com/blog/clip/)* + +**Busca de Imagens Baseada em Texto** + +Também podemos fazer o oposto. Se tivermos uma coleção de imagens, podemos passar essa coleção para o modelo, juntamente com uma descrição textual, e ele nos dará a imagem mais semelhante à descrição fornecida. + +## ✍️ Exemplo: [Usando CLIP para Classificação de Imagens e Busca de Imagens](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Abra o notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) para ver o CLIP em ação. + +## Geração de Imagens com VQGAN+CLIP + +O CLIP também pode ser usado para **geração de imagens** a partir de uma descrição textual. Para isso, precisamos de um **modelo gerador** que seja capaz de gerar imagens com base em algum vetor de entrada. Um desses modelos é chamado [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +As principais ideias do VQGAN que o diferenciam de um [GAN](../../4-ComputerVision/10-GANs/README.md) tradicional são as seguintes: +* Uso de uma arquitetura transformer autorregressiva para gerar uma sequência de partes visuais ricas em contexto que compõem a imagem. Essas partes visuais, por sua vez, são aprendidas por uma [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Uso de um discriminador de sub-imagens que detecta se partes da imagem são "reais" ou "falsas" (diferente da abordagem "tudo ou nada" nos GANs tradicionais). + +Saiba mais sobre o VQGAN no site [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Uma das diferenças importantes entre o VQGAN e um GAN tradicional é que o último pode produzir uma imagem decente a partir de qualquer vetor de entrada, enquanto o VQGAN provavelmente produzirá uma imagem incoerente. Assim, precisamos orientar ainda mais o processo de criação da imagem, e isso pode ser feito usando o CLIP. + +![Arquitetura VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.br.png) + +Para gerar uma imagem correspondente a uma descrição textual, começamos com algum vetor de codificação aleatório que é passado pelo VQGAN para produzir uma imagem. Em seguida, o CLIP é usado para produzir uma função de perda que mostra o quão bem a imagem corresponde à descrição textual. O objetivo, então, é minimizar essa perda, usando retropropagação para ajustar os parâmetros do vetor de entrada. + +Uma ótima biblioteca que implementa o VQGAN+CLIP é o [Pixray](http://github.com/pixray/pixray). + +![Imagem gerada pelo Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.br.png) | ![Imagem gerada pelo Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.br.png) | ![Imagem gerada pelo Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.br.png) +----|----|---- +Imagem gerada a partir da descrição *um retrato em aquarela de um jovem professor de literatura com um livro* | Imagem gerada a partir da descrição *um retrato a óleo de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir da descrição *um retrato a óleo de um velho professor de matemática em frente a um quadro-negro* + +> Imagens da coleção **Artificial Teachers** por [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +O DALL-E é uma versão do GPT-3 treinada para gerar imagens a partir de descrições textuais. Ele foi treinado com 12 bilhões de parâmetros. + +Diferentemente do CLIP, o DALL-E recebe tanto texto quanto imagem como um único fluxo de tokens para ambos. Assim, a partir de múltiplas descrições, é possível gerar imagens baseadas no texto. + +### [DALL-E 2](https://openai.com/dall-e-2) +A principal diferença entre o DALL-E 1 e o 2 é que o último gera imagens e artes mais realistas. + +Exemplos de imagens geradas com o DALL-E: +![Imagem gerada pelo DALL-E](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.br.png) | ![Imagem gerada pelo DALL-E](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.br.png) | ![Imagem gerada pelo DALL-E](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.br.png) +----|----|---- +Imagem gerada a partir da descrição *um retrato em aquarela de um jovem professor de literatura com um livro* | Imagem gerada a partir da descrição *um retrato a óleo de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir da descrição *um retrato a óleo de um velho professor de matemática em frente a um quadro-negro* + +## Referências + +* Artigo do VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Artigo do CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/sketchnotes/LICENSE.md b/translations/br/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..fdd96f28 --- /dev/null +++ b/translations/br/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,110 @@ + +Direitos, então o banco de dados resultante (Adapted Material) deve ser licenciado sob a mesma condições da Seção 3(b); e + + c. Você deve cumprir as condições da Seção 3(a) se compartilhar todo ou uma parte substancial do conteúdo do banco de dados. + +Seção 5 -- Isenção de Garantias e Limitação de Responsabilidade. + + a. Salvo conforme expressamente estabelecido nesta Licença Pública, na medida máxima permitida pela lei aplicável, o Licenciador oferece o Material Licenciado "como está" e "conforme disponível", sem garantias ou condições de qualquer tipo, seja expressa, implícita, estatutária ou de outra forma, incluindo, sem limitação, garantias ou condições de comercialização, adequação a um propósito específico ou não violação. + + b. Na medida máxima permitida pela lei aplicável, em nenhum caso o Licenciador será responsável por qualquer perda, custo, despesa ou dano resultante de qualquer forma do uso do Material Licenciado, mesmo que o Licenciador tenha sido informado da possibilidade de tais perdas, custos, despesas ou danos. + +Seção 6 -- Termo e Rescisão. + + a. Este Termo da Licença Pública começa quando Você exerce os Direitos Licenciados e permanece em vigor enquanto os Direitos Autorais e Direitos Similares aplicáveis ao Material Licenciado não expirarem. + + b. Se Você violar os termos e condições desta Licença Pública, seus direitos sob esta Licença Pública terminarão automaticamente. + + c. Quando seus direitos sob esta Licença Pública terminarem, Você ainda assim continuará vinculado às disposições desta Licença Pública que, por sua natureza, sobrevivem à rescisão. + + d. A rescisão desta Licença Pública não encerra as licenças concedidas por Você a terceiros sob esta Licença Pública, desde que esses terceiros cumpram seus termos e condições. + +Seção 7 -- Outras Condições e Termos. + + a. O Licenciador não será vinculado por quaisquer termos ou condições adicionais ou diferentes comunicados por Você, a menos que expressamente acordado. + + b. Quaisquer disposições desta Licença Pública consideradas inválidas ou inexequíveis por um tribunal de jurisdição competente serão interpretadas, modificadas ou separadas conforme necessário para torná-las válidas e exequíveis. + + c. Nenhuma renúncia por parte do Licenciador de qualquer violação ou falha por Você será considerada uma renúncia de qualquer violação ou falha anterior ou subsequente. + +Seção 8 -- Interpretação. + + a. Para evitar dúvidas, esta Licença Pública não será interpretada como reduzindo, limitando, restringindo ou impondo condições ao uso do Material Licenciado que seja permitido sob exceções e limitações aplicáveis ao direito autoral e direitos similares. + + b. Quando os Direitos Licenciados incluem direitos sob disposições de proteção de banco de dados, esta Licença Pública será interpretada de forma consistente com essas disposições. + + c. Esta Licença Pública será interpretada de acordo com os termos e condições aplicáveis ao Material Licenciado e ao Licenciador. + + d. Nada nesta Licença Pública será interpretado como limitando ou restringindo o uso do Material Licenciado que não seja regulado por direitos autorais ou direitos similares. +Direitos, então o banco de dados no qual você possui Direitos de Banco de Dados Sui Generis (mas não seus conteúdos individuais) é Material Adaptado, + +incluindo para os propósitos da Seção 3(b); e +c. Você deve cumprir as condições da Seção 3(a) se compartilhar todo ou uma parte substancial do conteúdo do banco de dados. + +Para evitar dúvidas, esta Seção 4 complementa e não substitui suas obrigações sob esta Licença Pública quando os Direitos Licenciados incluem outros Direitos Autorais e Direitos Similares. + +--- + +Seção 5 -- Isenção de Garantias e Limitação de Responsabilidade. + +a. SALVO DISPOSIÇÃO EM CONTRÁRIO ASSUMIDA SEPARADAMENTE PELO LICENCIANTE, NA MEDIDA DO POSSÍVEL, O LICENCIANTE OFERECE O MATERIAL LICENCIADO "NO ESTADO EM QUE SE ENCONTRA" E "CONFORME DISPONÍVEL", E NÃO FAZ REPRESENTAÇÕES OU GARANTIAS DE QUALQUER TIPO RELACIONADAS AO MATERIAL LICENCIADO, SEJAM ELAS EXPRESSAS, IMPLÍCITAS, LEGAIS OU OUTRAS. ISSO INCLUI, SEM LIMITAÇÃO, GARANTIAS DE TÍTULO, COMERCIABILIDADE, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO, NÃO VIOLAÇÃO, AUSÊNCIA DE DEFEITOS LATENTES OU OUTROS, PRECISÃO, OU A PRESENÇA OU AUSÊNCIA DE ERROS, SEJAM OU NÃO CONHECIDOS OU DETECTÁVEIS. ONDE ISENÇÕES DE GARANTIAS NÃO SÃO PERMITIDAS TOTAL OU PARCIALMENTE, ESTA ISENÇÃO PODE NÃO SE APLICAR A VOCÊ. + +b. NA MEDIDA DO POSSÍVEL, EM NENHUMA CIRCUNSTÂNCIA O LICENCIANTE SERÁ RESPONSÁVEL PERANTE VOCÊ SOB QUALQUER TEORIA LEGAL (INCLUINDO, SEM LIMITAÇÃO, NEGLIGÊNCIA) OU DE OUTRA FORMA POR QUAISQUER PERDAS, CUSTOS, DESPESAS OU DANOS DIRETOS, ESPECIAIS, INDIRETOS, INCIDENTAIS, CONSEQUENCIAIS, PUNITIVOS, EXEMPLARES OU OUTROS DECORRENTES DESTA LICENÇA PÚBLICA OU DO USO DO MATERIAL LICENCIADO, MESMO QUE O LICENCIANTE TENHA SIDO AVISADO DA POSSIBILIDADE DE TAIS PERDAS, CUSTOS, DESPESAS OU DANOS. ONDE UMA LIMITAÇÃO DE RESPONSABILIDADE NÃO É PERMITIDA TOTAL OU PARCIALMENTE, ESTA LIMITAÇÃO PODE NÃO SE APLICAR A VOCÊ. + +c. A isenção de garantias e a limitação de responsabilidade fornecidas acima devem ser interpretadas de maneira que, na medida do possível, mais se aproxime de uma isenção absoluta e renúncia de toda responsabilidade. + +--- + +Seção 6 -- Vigência e Rescisão. + +a. Esta Licença Pública se aplica durante o prazo dos Direitos Autorais e Direitos Similares licenciados aqui. No entanto, se você não cumprir esta Licença Pública, seus direitos sob esta Licença Pública serão automaticamente encerrados. + +b. Quando seu direito de usar o Material Licenciado for encerrado sob a Seção 6(a), ele será restabelecido: + +1. automaticamente na data em que a violação for corrigida, desde que seja corrigida dentro de 30 dias após sua descoberta da violação; ou +2. mediante restabelecimento expresso pelo Licenciante. + +Para evitar dúvidas, esta Seção 6(b) não afeta qualquer direito que o Licenciante possa ter de buscar reparações por suas violações desta Licença Pública. + +c. Para evitar dúvidas, o Licenciante também pode oferecer o Material Licenciado sob termos ou condições separados ou parar de distribuir o Material Licenciado a qualquer momento; no entanto, isso não encerrará esta Licença Pública. + +d. As Seções 1, 5, 6, 7 e 8 sobrevivem ao término desta Licença Pública. + +--- + +Seção 7 -- Outros Termos e Condições. + +a. O Licenciante não estará vinculado a quaisquer termos ou condições adicionais ou diferentes comunicados por você, a menos que expressamente acordado. + +b. Quaisquer arranjos, entendimentos ou acordos relacionados ao Material Licenciado não declarados aqui são separados e independentes dos termos e condições desta Licença Pública. + +--- + +Seção 8 -- Interpretação. + +a. Para evitar dúvidas, esta Licença Pública não reduz, limita, restringe ou impõe condições sobre qualquer uso do Material Licenciado que possa ser legalmente feito sem permissão sob esta Licença Pública. + +b. Na medida do possível, se qualquer disposição desta Licença Pública for considerada inexequível, ela será automaticamente reformada na extensão mínima necessária para torná-la exequível. Se a disposição não puder ser reformada, ela será separada desta Licença Pública sem afetar a exequibilidade dos termos e condições restantes. + +c. Nenhum termo ou condição desta Licença Pública será renunciado e nenhum descumprimento será consentido, a menos que expressamente acordado pelo Licenciante. + +d. Nada nesta Licença Pública constitui ou pode ser interpretado como uma limitação ou renúncia de quaisquer privilégios e imunidades que se apliquem ao Licenciante ou a você, incluindo em relação aos processos legais de qualquer jurisdição ou autoridade. + +--- + +======================================================================= + +A Creative Commons não é parte de suas licenças públicas. Não obstante, a Creative Commons pode optar por aplicar uma de suas licenças públicas ao material que publica e, nesses casos, será considerada o “Licenciante”. O texto das licenças públicas da Creative Commons é dedicado ao domínio público sob a Dedicação ao Domínio Público CC0. Exceto para o propósito limitado de indicar que o material é compartilhado sob uma licença pública da Creative Commons ou conforme permitido pelas políticas da Creative Commons publicadas em creativecommons.org/policies, a Creative Commons não autoriza o uso da marca "Creative Commons" ou de qualquer outra marca ou logotipo da Creative Commons sem seu consentimento prévio por escrito, incluindo, sem limitação, em conexão com quaisquer modificações não autorizadas de suas licenças públicas ou quaisquer outros arranjos, entendimentos ou acordos relacionados ao uso do material licenciado. Para evitar dúvidas, este parágrafo não faz parte das licenças públicas. + +A Creative Commons pode ser contatada em creativecommons.org. + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/br/lessons/sketchnotes/README.md b/translations/br/lessons/sketchnotes/README.md new file mode 100644 index 00000000..f5e63c2d --- /dev/null +++ b/translations/br/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Todas as sketchnotes do currículo podem ser baixadas aqui. + +🎨 Criado por: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/it/README.md b/translations/it/README.md index 65e21e8a..8db1e5fd 100644 --- a/translations/it/README.md +++ b/translations/it/README.md @@ -1,140 +1,155 @@ -[![Licencia de GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![Contribuyentes de GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![Problemas de GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![Solicitudes de extracción de GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![PRs Bienvenidos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Observadores de GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![Forks de GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![Estrellas de GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# Inteligencia Artificial para Principiantes - Un Currículo +# Intelligenza Artificiale per Principianti - Un Curriculum -|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| AI Para Principiantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ Sketchnote di [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI For Beginners - _Sketchnote di [@girlie_mac](https://twitter.com/girlie_mac)_ | -¡Explora el mundo de la **Inteligencia Artificial** (IA) con nuestro currículo de 12 semanas y 24 lecciones! Incluye lecciones prácticas, cuestionarios y laboratorios. El currículo está diseñado para principiantes y cubre herramientas como TensorFlow y PyTorch, así como la ética en la IA. +Esplora il mondo dell'**Intelligenza Artificiale** (AI) con il nostro curriculum di 12 settimane e 24 lezioni! Include lezioni pratiche, quiz e laboratori. Il curriculum è adatto ai principianti e copre strumenti come TensorFlow e PyTorch, oltre a temi sull'etica nell'AI. -## Lo que aprenderás +## Cosa imparerai -**[Mapa mental del curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Mappa mentale del corso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -En este currículo, aprenderás: +In questo curriculum, imparerai: -* Diferentes enfoques de la Inteligencia Artificial, incluido el "buen viejo" enfoque simbólico con **Representación del Conocimiento** y razonamiento ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). -* **Redes Neuronales** y **Aprendizaje Profundo**, que son fundamentales en la IA moderna. Ilustraremos los conceptos detrás de estos temas importantes utilizando código en dos de los frameworks más populares: [TensorFlow](http://Tensorflow.org) y [PyTorch](http://pytorch.org). -* **Arquitecturas Neuronales** para trabajar con imágenes y texto. Cubriremos modelos recientes, aunque puede que no estemos al día con lo último en tecnología. -* Enfoques de IA menos populares, como **Algoritmos Genéticos** y **Sistemas Multi-Agente**. +* Diversi approcci all'Intelligenza Artificiale, incluso il "vecchio e caro" approccio simbolico con **Rappresentazione della Conoscenza** e ragionamento ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Reti Neurali** e **Deep Learning**, che sono al centro dell'AI moderna. Illustreremo i concetti dietro questi argomenti importanti utilizzando codice nei due framework più popolari - [TensorFlow](http://Tensorflow.org) e [PyTorch](http://pytorch.org). +* **Architetture Neurali** per lavorare con immagini e testo. Copriremo modelli recenti, anche se potremmo non essere completamente aggiornati con lo stato dell'arte. +* Approcci meno popolari all'AI, come **Algoritmi Genetici** e **Sistemi Multi-Agente**. -Lo que no cubriremos en este currículo: +Cosa non copriremo in questo curriculum: -> [Encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Trova tutte le risorse aggiuntive per questo corso nella nostra collezione su Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* Casos de negocio sobre el uso de **IA en los Negocios**. Considera seguir la ruta de aprendizaje [Introducción a la IA para usuarios de negocios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) en Microsoft Learn, o [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desarrollada en cooperación con [INSEAD](https://www.insead.edu/). -* **Aprendizaje Automático Clásico**, que está bien descrito en nuestro [Currículo de Aprendizaje Automático para Principiantes](http://github.com/Microsoft/ML-for-Beginners). -* Aplicaciones prácticas de IA construidas usando **[Servicios Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para esto, te recomendamos que comiences con los módulos de Microsoft Learn para [visión](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [procesamiento de lenguaje natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa con el Servicio Azure OpenAI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** y otros. -* Frameworks de ML **en la Nube** específicos, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considera utilizar las rutas de aprendizaje de [Construir y operar soluciones de aprendizaje automático con Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) y [Construir y operar soluciones de aprendizaje automático con Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). -* **IA Conversacional** y **Bots de Chat**. Hay una ruta de aprendizaje separada llamada [Crear soluciones de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), y también puedes consultar [esta publicación de blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para más detalles. -* **Matemáticas Avanzadas** detrás del aprendizaje profundo. Para esto, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio y Aaron Courville, que también está disponible en línea en [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). +* Casi aziendali di utilizzo dell'**AI nel Business**. Considera di seguire il percorso di apprendimento [Introduzione all'AI per utenti aziendali](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) su Microsoft Learn, o [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), sviluppato in collaborazione con [INSEAD](https://www.insead.edu/). +* **Machine Learning Classico**, che è ben descritto nel nostro [Curriculum di Machine Learning per Principianti](http://github.com/Microsoft/ML-for-Beginners). +* Applicazioni pratiche di AI costruite utilizzando **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Per questo, ti consigliamo di iniziare con i moduli di Microsoft Learn per [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [elaborazione del linguaggio naturale](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI con Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** e altri. +* Specifici **Framework Cloud ML**, come [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considera di utilizzare i percorsi di apprendimento [Costruire e operare soluzioni di machine learning con Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) e [Costruire e operare soluzioni di machine learning con Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **AI Conversazionale** e **Chat Bot**. Esiste un percorso di apprendimento separato [Creare soluzioni di AI conversazionale](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), e puoi anche fare riferimento a [questo post sul blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) per maggiori dettagli. +* **Matematica Avanzata** dietro il deep learning. Per questo, ti consigliamo [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) di Ian Goodfellow, Yoshua Bengio e Aaron Courville, disponibile anche online su [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -Para una introducción suave a los temas de _IA en la Nube_, puedes considerar tomar la ruta de aprendizaje [Introducción a la inteligencia artificial en Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). +Per un'introduzione graduale agli argomenti di _AI nel Cloud_, potresti considerare di seguire il percorso di apprendimento [Introduzione all'intelligenza artificiale su Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). -# Contenido +# Contenuto -| | Enlace de la Lección | PyTorch/Keras/TensorFlow | Lab | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Configuración del Curso](./lessons/0-course-setup/setup.md) | [Configura tu Entorno de Desarrollo](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Introducción a la IA**](./lessons/1-Intro/README.md) | | | -| 01 | [Introducción e Historia de la IA](./lessons/1-Intro/README.md) | - | - | -| II | **IA Simbólica** | -| 02 | [Representación del Conocimiento y Sistemas Expertos](./lessons/2-Symbolic/README.md) | [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontología](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Gráfico de Conceptos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Introducción a las Redes Neuronales**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [Perceptrón](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [Perceptrón Multicapa y Creando nuestro propio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [Introducción a Frameworks (PyTorch/TensorFlow) y Sobreajuste](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**Computer Vision**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explore Computer Vision on Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Introduction to Computer Vision. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Convolutional Neural Networks](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Architectures](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Pre-trained Networks and Transfer Learning](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [Training Tricks](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | -| 09 | [Autoencoders and VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [Generative Adversarial Networks & Artistic Style Transfer](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | -| 11 | [Object Detection](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Semantic Segmentation. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | -| V | [**Procesamiento de Lenguaje Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explora el Procesamiento de Lenguaje Natural en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| -| 13 | [Representación de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | -| 14 | [Incrustaciones semánticas de palabras. Word2Vec y GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [Modelado del Lenguaje. Entrenando tus propias incrustaciones](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratorio](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | -| 16 | [Redes Neuronales Recurrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [Redes Generativas Recurrentes](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratorio](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | -| 18 | [Transformadores. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | -| 19 | [Reconocimiento de Entidades Nombradas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorio](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [Modelos de Lenguaje Grandes, Programación de Prompts y Tareas de Pocos Ejemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | -| VI | **Otras Técnicas de IA** || | -| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [Aprendizaje Profundo por Refuerzo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratorio](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Sistemas Multi-Agente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | -| VII | **Ética en IA** | | | -| 24 | [Ética en IA y IA Responsable](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principios de IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | -| IX | **Extras** | | | -| 25 | [Redes Multi-Modal, CLIP y VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| | Link alla Lezione | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Impostazione del Corso](./lessons/0-course-setup/setup.md) | [Configura il tuo ambiente di sviluppo](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introduzione all'AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Introduzione e Storia dell'AI](./lessons/1-Intro/README.md) | - | - | +| II | **AI Simbolica** | +| 02 | [Rappresentazione della Conoscenza e Sistemi Esperti](./lessons/2-Symbolic/README.md) | [Sistemi Esperti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Grafo Concettuale](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introduzione alle Reti Neurali**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptron Multistrato e Creazione del nostro Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Introduzione ai Framework (PyTorch/TensorFlow) e Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Visione Artificiale**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Esplora la Visione Artificiale su Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introduzione alla Visione Artificiale. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Reti Neurali Convoluzionali](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Architetture CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Reti pre-addestrate e Transfer Learning](./lessons/4-ComputerVision/08-TransferLearning/README.md) e [Trucchi per l'addestramento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencoder e VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Reti Generative Adversarial e Trasferimento di Stile Artistico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Rilevamento degli Oggetti](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Segmentazione Semantica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**Elaborazione del Linguaggio Naturale**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Esplora l'elaborazione del linguaggio naturale su Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Rappresentazione del Testo. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Embedding semantici delle parole. Word2Vec e GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modellazione del Linguaggio. Addestrare i propri embedding](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Reti Neurali Ricorrenti](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Reti Ricorrenti Generative](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Riconoscimento delle Entità Nominate](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Modelli di Linguaggio di Grandi Dimensioni, Programmazione con Prompt e Task Few-Shot](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Altre Tecniche di AI** || | +| 21 | [Algoritmi Genetici](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Apprendimento Rinforzato Profondo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemi Multi-Agente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etica dell'AI** | | | +| 24 | [Etica dell'AI e AI Responsabile](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principi di AI Responsabile](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extra** | | | +| 25 | [Reti Multi-Modali, CLIP e VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | -## Cada lección contiene +## Ogni lezione contiene -* Material de lectura previa -* Notebooks Jupyter ejecutables, que a menudo son específicos para el marco (**PyTorch** o **TensorFlow**). El notebook ejecutable también contiene mucho material teórico, por lo que para entender el tema necesitas revisar al menos una versión del notebook (ya sea de PyTorch o TensorFlow). -* **Laboratorios** disponibles para algunos temas, que te brindan la oportunidad de aplicar el material que has aprendido a un problema específico. -* Algunas secciones contienen enlaces a módulos de [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que abordan temas relacionados. +* Materiale di lettura preliminare +* Jupyter Notebook eseguibili, spesso specifici per il framework (**PyTorch** o **TensorFlow**). Il notebook eseguibile contiene anche molto materiale teorico, quindi per comprendere l'argomento è necessario esaminare almeno una versione del notebook (PyTorch o TensorFlow). +* **Lab** disponibili per alcuni argomenti, che offrono l'opportunità di applicare il materiale appreso a un problema specifico. +* Alcune sezioni contengono link ai moduli [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) che trattano argomenti correlati. -## Empezando +## Per iniziare -- Hemos creado una [lección de configuración](./lessons/0-course-setup/setup.md) para ayudarte a configurar tu entorno de desarrollo. - Para Educadores, también hemos creado una [lección de configuración curricular](./lessons/0-course-setup/for-teachers.md) para ti. -- Cómo [Ejecutar el código en un VSCode o un Codepace](./lessons/0-course-setup/how-to-run.md) +- Abbiamo creato una [lezione di configurazione](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) per aiutarti a configurare il tuo ambiente di sviluppo. - Per gli educatori, abbiamo creato anche una [lezione di configurazione del curriculum](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Come [Eseguire il codice in VSCode o Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) -Sigue estos pasos: +Segui questi passaggi: -Fork el Repositorio: Haz clic en el botón "Fork" en la esquina superior derecha de esta página. +Fork del Repository: Clicca sul pulsante "Fork" in alto a destra in questa pagina. -Clona el Repositorio: `git clone https://github.com/microsoft/AI-For-Beginners.git` +Clona il Repository: `git clone https://github.com/microsoft/AI-For-Beginners.git` -No olvides dar una estrella (🌟) a este repositorio para encontrarlo más fácilmente más tarde. +Non dimenticare di aggiungere una stella (🌟) a questo repository per trovarlo più facilmente in seguito. -## Conoce a otros Aprendices +## Incontra altri studenti -Únete a nuestro [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conocer y conectar con otros aprendices que están tomando este curso y obtener apoyo. +Unisciti al nostro [server Discord ufficiale AI](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) per incontrare e fare networking con altri studenti che seguono questo corso e ottenere supporto. -## Cuestionarios +Se hai feedback sul prodotto o domande durante la costruzione, visita il nostro [Forum degli Sviluppatori Azure AI Foundry](https://aka.ms/foundry/forum) -> **Una nota sobre los cuestionarios**: Todos los cuestionarios se encuentran en la carpeta Quiz-app en etc\quiz-app, están vinculados desde dentro de las lecciones; la aplicación de cuestionarios se puede ejecutar localmente o desplegar en Azure; sigue las instrucciones en la carpeta `quiz-app`. Están siendo localizados gradualmente. +## Quiz +> **Una nota sui quiz**: Tutti i quiz si trovano nella cartella Quiz-app in etc\quiz-app. Sono collegati all'interno delle lezioni e l'app dei quiz può essere eseguita localmente o distribuita su Azure; segui le istruzioni nella cartella `quiz-app`. La localizzazione è in corso gradualmente. +## Aiuto richiesto -## Se Busca Ayuda +Hai suggerimenti o hai trovato errori di ortografia o di codice? Apri un problema o crea una pull request. -¿Tienes sugerencias o has encontrado errores de ortografía o de código? Abre un problema o crea una solicitud de extracción. +## Ringraziamenti speciali -## Agradecimientos Especiales +* **✍️ Autore principale:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Illustratrice di sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Creatrice del quiz:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contributori principali:** [Evgenii Pishchik](https://github.com/Pe4enIks) -* **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD -* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD -* **🎨 Ilustrador de Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) -* **✅ Creador de Cuestionarios:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) -* **🙏 Contribuidores Principales:** [Evgenii Pishchik](https://github.com/Pe4enIks) +## Altri curricula -## Otros Currículos +Il nostro team produce altri curricula! Dai un'occhiata a: -¡Nuestro equipo produce otros currículos! Echa un vistazo a: - -* [Ciencia de Datos para Principiantes](https://aka.ms/ds4beginners) -* [**Versión 2.0** IA Generativa para Principiantes](https://aka.ms/genai-beginners) -* [**NUEVO** Ciberseguridad para Principiantes](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Desarrollo Web para Principiantes](https://aka.ms/webdev-beginners) -* [IoT para Principiantes](https://aka.ms/iot-beginners) -* [Aprendizaje Automático para Principiantes](https://aka.ms/ml4beginners) -* [Desarrollo XR para Principiantes](https://aka.ms/xr-dev-for-beginners) -* [Dominando GitHub Copilot para Programación Emparejada en IA](https://aka.ms/GitHubCopilotAI) +- [Generative AI per principianti](https://aka.ms/genai-beginners) +- [Generative AI per principianti .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI con JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI con Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI per principianti](https://aka.ms/ai-beginners) +- [Data Science per principianti](https://aka.ms/datascience-beginners) +- [ML per principianti](https://aka.ms/ml-beginners) +- [Cybersecurity per principianti](https://github.com/microsoft/Security-101) +- [Sviluppo Web per principianti](https://aka.ms/webdev-beginners) +- [IoT per principianti](https://aka.ms/iot-beginners) +- [Sviluppo XR per principianti](https://github.com/microsoft/xr-development-for-beginners) +- [Padroneggiare GitHub Copilot per un uso agentico](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Padroneggiare GitHub Copilot per sviluppatori C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Scegli la tua avventura con Copilot](https://github.com/microsoft/CopilotAdventures) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/SECURITY.md b/translations/it/SECURITY.md index 98a511fe..e2f15434 100644 --- a/translations/it/SECURITY.md +++ b/translations/it/SECURITY.md @@ -1,40 +1,49 @@ -## Seguridad + +## Sicurezza -Microsoft toma muy en serio la seguridad de nuestros productos y servicios de software, lo que incluye todos los repositorios de código fuente gestionados a través de nuestras organizaciones en GitHub, que incluyen [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) y [nuestras organizaciones de GitHub](https://opensource.microsoft.com/). +Microsoft prende molto seriamente la sicurezza dei propri prodotti software e servizi, inclusi tutti i repository di codice sorgente gestiti attraverso le nostre organizzazioni GitHub, che includono [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) e [le nostre organizzazioni GitHub](https://opensource.microsoft.com/). -Si crees que has encontrado una vulnerabilidad de seguridad en algún repositorio de Microsoft que cumpla con [la definición de vulnerabilidad de seguridad de Microsoft](https://aka.ms/opensource/security/definition), por favor repórtala como se describe a continuación. +Se ritieni di aver individuato una vulnerabilità di sicurezza in un repository di proprietà di Microsoft che soddisfa [la definizione di vulnerabilità di sicurezza di Microsoft](https://aka.ms/opensource/security/definition), ti preghiamo di segnalarcela come descritto di seguito. -## Reportando Problemas de Seguridad +## Segnalazione di Problemi di Sicurezza -**Por favor, no reportes vulnerabilidades de seguridad a través de problemas públicos de GitHub.** +**Non segnalare vulnerabilità di sicurezza tramite issue pubblici su GitHub.** -En su lugar, repórtalas al Centro de Respuesta de Seguridad de Microsoft (MSRC) en [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). +Invece, segnalale al Microsoft Security Response Center (MSRC) su [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). -Si prefieres enviar tu informe sin iniciar sesión, envía un correo electrónico a [secure@microsoft.com](mailto:secure@microsoft.com). Si es posible, cifra tu mensaje con nuestra clave PGP; por favor descárgala desde la [página de Clave PGP del Centro de Respuesta de Seguridad de Microsoft](https://aka.ms/opensource/security/pgpkey). +Se preferisci inviare la segnalazione senza effettuare l'accesso, invia un'email a [secure@microsoft.com](mailto:secure@microsoft.com). Se possibile, cifra il tuo messaggio con la nostra chiave PGP; puoi scaricarla dalla [pagina della chiave PGP del Microsoft Security Response Center](https://aka.ms/opensource/security/pgpkey). -Deberías recibir una respuesta dentro de las 24 horas. Si por alguna razón no lo haces, por favor sigue el hilo por correo electrónico para asegurarte de que recibimos tu mensaje original. Puedes encontrar información adicional en [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). +Dovresti ricevere una risposta entro 24 ore. Se per qualche motivo non la ricevi, ti invitiamo a inviare un'email di follow-up per assicurarci di aver ricevuto il tuo messaggio originale. Ulteriori informazioni sono disponibili su [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). -Por favor incluye la información solicitada que se detalla a continuación (tanto como puedas proporcionar) para ayudarnos a comprender mejor la naturaleza y el alcance del posible problema: +Ti preghiamo di includere le informazioni richieste elencate di seguito (per quanto possibile) per aiutarci a comprendere meglio la natura e la portata del possibile problema: - * Tipo de problema (por ejemplo, desbordamiento de búfer, inyección SQL, scripting entre sitios, etc.) - * Rutas completas de los archivos de origen relacionados con la manifestación del problema - * La ubicación del código fuente afectado (etiqueta/rama/commit o URL directa) - * Cualquier configuración especial requerida para reproducir el problema - * Instrucciones paso a paso para reproducir el problema - * Código de prueba de concepto o de explotación (si es posible) - * Impacto del problema, incluyendo cómo un atacante podría explotarlo + * Tipo di problema (ad esempio, buffer overflow, SQL injection, cross-site scripting, ecc.) + * Percorsi completi dei file sorgente relativi alla manifestazione del problema + * La posizione del codice sorgente interessato (tag/branch/commit o URL diretto) + * Qualsiasi configurazione speciale necessaria per riprodurre il problema + * Istruzioni dettagliate per riprodurre il problema + * Codice proof-of-concept o exploit (se possibile) + * Impatto del problema, incluso come un attaccante potrebbe sfruttarlo -Esta información nos ayudará a clasificar tu informe más rápidamente. +Queste informazioni ci aiuteranno a gestire la tua segnalazione più rapidamente. -Si estás reportando para un programa de recompensas por errores, informes más completos pueden contribuir a una mayor recompensa. Por favor visita nuestra página del [Programa de Recompensas por Errores de Microsoft](https://aka.ms/opensource/security/bounty) para más detalles sobre nuestros programas activos. +Se stai segnalando per un programma di bug bounty, rapporti più completi possono contribuire a un premio più alto. Visita la nostra pagina del [Programma di Bug Bounty di Microsoft](https://aka.ms/opensource/security/bounty) per maggiori dettagli sui nostri programmi attivi. -## Idiomas Preferidos +## Lingue Preferite -Preferimos que todas las comunicaciones sean en inglés. +Preferiamo che tutte le comunicazioni siano in inglese. -## Política +## Politica -Microsoft sigue el principio de [Divulgación Coordinada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). +Microsoft segue il principio della [Divulgazione Coordinata delle Vulnerabilità](https://aka.ms/opensource/security/cvd). **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/etc/CODE_OF_CONDUCT.md b/translations/it/etc/CODE_OF_CONDUCT.md index 388ff6d0..b3a77cfc 100644 --- a/translations/it/etc/CODE_OF_CONDUCT.md +++ b/translations/it/etc/CODE_OF_CONDUCT.md @@ -1,12 +1,21 @@ -# Código de Conducta de Microsoft para Proyectos de Código Abierto + +# Codice di Condotta Open Source di Microsoft -Este proyecto ha adoptado el [Código de Conducta de Microsoft para Proyectos de Código Abierto](https://opensource.microsoft.com/codeofconduct/). +Questo progetto ha adottato il [Codice di Condotta Open Source di Microsoft](https://opensource.microsoft.com/codeofconduct/). -Recursos: +Risorse: -- [Código de Conducta de Microsoft para Proyectos de Código Abierto](https://opensource.microsoft.com/codeofconduct/) -- [Preguntas Frecuentes sobre el Código de Conducta de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) -- Contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) si tienes preguntas o inquietudes. +- [Codice di Condotta Open Source di Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [FAQ sul Codice di Condotta di Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contatta [opencode@microsoft.com](mailto:opencode@microsoft.com) per domande o preoccupazioni **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si consiglia una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/etc/CONTRIBUTING.md b/translations/it/etc/CONTRIBUTING.md index 624215f5..f2c6d79f 100644 --- a/translations/it/etc/CONTRIBUTING.md +++ b/translations/it/etc/CONTRIBUTING.md @@ -1,20 +1,31 @@ -# Contribuindo + +# Contribuire -Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Acordo de Licença de Contribuidor (CLA) declarando que você tem o direito de, e realmente faz, nos conceder os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com. +Questo progetto accoglie con favore contributi e suggerimenti. La maggior parte dei contributi richiede di accettare un Accordo di Licenza per Contributori (CLA) dichiarando che hai il diritto di, e effettivamente concedi, i diritti per utilizzare il tuo contributo. Per maggiori dettagli, visita https://cla.microsoft.com. -Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR de forma apropriada (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que utilizam nosso CLA. +Quando invii una pull request, un bot CLA determinerà automaticamente se è necessario fornire un CLA e decorerà la PR di conseguenza (ad esempio, etichetta, commento). Segui semplicemente le istruzioni fornite dal bot. Dovrai farlo solo una volta per tutti i repository che utilizzano il nostro CLA. -Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para mais informações, consulte as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) para quaisquer perguntas ou comentários adicionais. +Questo progetto ha adottato il [Codice di Condotta Open Source di Microsoft](https://opensource.microsoft.com/codeofconduct/). +Per ulteriori informazioni, consulta le [FAQ sul Codice di Condotta](https://opensource.microsoft.com/codeofconduct/faq/) +o contatta [opencode@microsoft.com](mailto:opencode@microsoft.com) per eventuali domande o commenti aggiuntivi. -# Procurando Contribuições +# Alla ricerca di contributi -Atualmente, estamos buscando ativamente contribuições nos seguintes tópicos: +Attualmente stiamo cercando attivamente contributi sui seguenti argomenti: -- [ ] Escrever seção sobre Aprendizado por Reforço Profundo -- [ ] Melhorar seção + notebook sobre Detecção de Objetos -- [ ] PyTorch Lightning (para [esta seção](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] Escrever seção + exemplos sobre Reconhecimento de Entidades Nomeadas -- [ ] Criar exemplos para treinar nossas próprias incorporações para [esta seção](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) +- [ ] Scrivere una sezione sul Deep Reinforcement Learning +- [ ] Migliorare la sezione + notebook sul Rilevamento di Oggetti +- [ ] PyTorch Lightning (per [questa sezione](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Scrivere una sezione + esempi sul Riconoscimento di Entità Nominate +- [ ] Creare esempi per l'addestramento di embedding personalizzati per [questa sezione](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale umana. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/etc/Mindmap.md b/translations/it/etc/Mindmap.md index f92ccc24..ed8099c2 100644 --- a/translations/it/etc/Mindmap.md +++ b/translations/it/etc/Mindmap.md @@ -1,76 +1,87 @@ -# IA + +# AI -## [Introducción a la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - - Definición de IA - - Historia de la IA - - Enfoques de la IA - - De arriba hacia abajo/Simbólico - - De abajo hacia arriba/Neuronal +## [Introduzione all'AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definizione di AI + - Storia dell'AI + - Approcci all'AI + - Top-down/Symbolico + - Bottom-up/Neurale - Evolutivo - - Sinérgico / IA Emergente - - [Escuela de Negocios de IA de Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + - Sinergico / AI Emergente + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) -## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - - Representación del Conocimiento - - [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) - - [Ontologías](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) - - Web Semántica +## [AI Simbolica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Rappresentazione della Conoscenza + - [Sistemi Esperti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Web Semantico -## [Redes Neuronales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - - [Perceptrón](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - - [Redes Multicapa](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - - [Introducción a Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) +## [Reti Neurali](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Reti Multi-Strato](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introduzione ai Framework](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) - - [Sobreajuste](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) -## [Visión por Computadora](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - - En MS Learn - - [Fundamentos de IA: Explorar Visión por Computadora](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - - [Visión por Computadora con PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - - [Visión por Computadora con TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - - [Introducción a CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - - [Redes Convolucionales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - - [Arquitecturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - - [Aprendizaje por Transferencia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - - [Trucos de Entrenamiento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - - [Autoencoders y VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [Redes Generativas Antagónicas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - - [Transferencia de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - - [Detección de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - - [Segmentación](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) - -## [Procesamiento de Lenguaje Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - - En MS Learn - - [Fundamentos de IA: Explorar PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - - [PLN con PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - - [PLN con TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [Text Representation](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - - Bolsa de Palabras +## [Visione Artificiale](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Su MS Learn + - [Fondamenti di AI: Esplora la Visione Artificiale](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Visione Artificiale con PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Visione Artificiale con TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introduzione alla Visione Artificiale. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Reti Convoluzionali](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Architetture CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transfer Learning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trucchi per l'Addestramento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoder e VAE](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Reti Generative Avversarie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Trasferimento di Stile](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Rilevamento Oggetti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentazione](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Elaborazione del Linguaggio Naturale](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Su MS Learn + - [Fondamenti di AI: Esplora l'NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP con PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP con TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Rappresentazione del Testo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words - TF/IDF - - [Semantic Embeddings](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - [Incorporamenti Semantici](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - Word2Vec - GloVE - - [Modelado del Lenguaje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - - [Redes Neuronales Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - [Modellazione del Linguaggio](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Reti Neurali Ricorrenti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - LSTM - GRU - - [Redes Generativas Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) - - [Transformers y BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - - [Reconocimiento de Entidades Nombradas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - - [Generación de Texto y GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) -## Otras Técnicas - - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - - [Aprendizaje Profundo por Refuerzo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - - [Sistemas Multi-Agente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + - [Reti Ricorrenti Generative](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers e BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Riconoscimento di Entità Nominate](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generazione di Testo e GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) -## [Ética en IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - - [MS Learn sobre IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) -## Extras - - [Redes Multimodales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) +## Altre Tecniche + - [Algoritmi Genetici](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Deep Reinforcement Learning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemi Multi-Agente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etica dell'AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn sull'AI Responsabile](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Extra + - [Reti Multimodali](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) - DALL-E - VQ-GAN **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/etc/SUPPORT.md b/translations/it/etc/SUPPORT.md index 6a19fa66..4ead4e74 100644 --- a/translations/it/etc/SUPPORT.md +++ b/translations/it/etc/SUPPORT.md @@ -1,14 +1,23 @@ -# Support + +# Supporto -## How to file issues and get help +## Come segnalare problemi e ottenere aiuto -This project utilizes GitHub Issues to monitor bugs and feature requests. Please check the existing issues before submitting new ones to prevent duplicates. For new issues, please report your bug or feature request as a new Issue. +Questo progetto utilizza GitHub Issues per tracciare bug e richieste di funzionalità. Cerca tra i problemi esistenti prima di segnalare nuovi problemi per evitare duplicati. Per nuovi problemi, segnala il tuo bug o la tua richiesta di funzionalità come un nuovo Issue. -For assistance and inquiries regarding the use of this project, kindly refer to the Discussion Boards. +Per assistenza e domande sull'utilizzo di questo progetto, utilizza i Forum di Discussione. -## Microsoft Support Policy +## Politica di supporto Microsoft -Support for this project is restricted to the resources mentioned above. +Il supporto per questo progetto è limitato alle risorse elencate sopra. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/etc/TRANSLATIONS.md b/translations/it/etc/TRANSLATIONS.md index 4ea26614..c3ff0b78 100644 --- a/translations/it/etc/TRANSLATIONS.md +++ b/translations/it/etc/TRANSLATIONS.md @@ -1,36 +1,45 @@ -# Contribuye traduciendo lecciones + +# Contribuisci traducendo le lezioni -¡Damos la bienvenida a las traducciones de las lecciones en este currículo! +Accogliamo con piacere le traduzioni delle lezioni di questo curriculum! -## Directrices +## Linee guida -Hay carpetas en cada carpeta de lección y en la carpeta de introducción de lección que contienen los archivos markdown traducidos. +Ci sono cartelle in ogni cartella di lezione e nella cartella di introduzione alle lezioni che contengono i file markdown tradotti. -> Nota: por favor, no traduzcas ningún código en los archivos de muestra de código; lo único que se debe traducir son README, tareas y cuestionarios. ¡Gracias! +> Nota, per favore non tradurre alcun codice nei file di esempio di codice; le uniche cose da tradurre sono README, esercizi e quiz. Grazie! -Los archivos traducidos deben seguir esta convención de nombres: +I file tradotti devono seguire questa convenzione di denominazione: -**README._[language]_.md** +**README._[lingua]_.md** -donde _[language]_ es una abreviatura de dos letras del idioma que sigue el estándar ISO 639-1 (por ejemplo, `README.es.md` para español y `README.nl.md` para neerlandés). +dove _[lingua]_ è un'abbreviazione di due lettere della lingua secondo lo standard ISO 639-1 (ad esempio `README.es.md` per lo spagnolo e `README.nl.md` per l'olandese). -**assignment._[language]_.md** +**assignment._[lingua]_.md** -Al igual que los README, por favor traduce también las tareas. +Simile ai README, traduci anche gli esercizi. -**Cuestionarios** +**Quiz** -1. Agrega tu traducción al quiz-app añadiendo un archivo aquí: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, con la convención de nombres adecuada (en.json, fr.json). **Sin embargo, por favor no localices las palabras 'true' o 'false'. ¡Gracias!** +1. Aggiungi la tua traduzione all'app del quiz aggiungendo un file qui: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, seguendo la corretta convenzione di denominazione (en.json, fr.json). **Per favore, non localizzare le parole 'true' o 'false'. Grazie!** -2. Agrega el código de tu idioma al menú desplegable en el archivo App.vue del quiz-app. +2. Aggiungi il codice della tua lingua al menu a tendina nel file App.vue dell'app del quiz. -3. Edita el [archivo index.js de traducciones del quiz-app](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) para añadir tu idioma. +3. Modifica il [file index.js delle traduzioni](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) dell'app del quiz per aggiungere la tua lingua. -4. Finalmente, edita TODOS los enlaces de los cuestionarios en tus archivos README.md traducidos para que apunten directamente a tu cuestionario traducido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se convierte en https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id +4. Infine, modifica TUTTI i link ai quiz nei tuoi file README.md tradotti per puntare direttamente al tuo quiz tradotto: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 diventa https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id -**¡GRACIAS!** +**GRAZIE** -¡Apreciamos sinceramente tus esfuerzos! +Apprezziamo davvero i tuoi sforzi! -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/etc/quiz-app/README.md b/translations/it/etc/quiz-app/README.md index f520aa14..259f31fd 100644 --- a/translations/it/etc/quiz-app/README.md +++ b/translations/it/etc/quiz-app/README.md @@ -1,96 +1,106 @@ -# Quizzes + +# Quiz -Estos cuestionarios son los cuestionarios de antes y después de la conferencia para el currículo de IA en https://aka.ms/ai-beginners +Questi quiz sono i quiz pre- e post-lezione per il curriculum di AI disponibile su https://aka.ms/ai-beginners -## Agregar un conjunto de cuestionarios traducidos +## Aggiungere un set di quiz tradotto -Agrega una traducción de cuestionario creando estructuras de cuestionario coincidentes en las carpetas `assets/translations`. Los cuestionarios canónicos están en `assets/translations/en`. Los cuestionarios están divididos en varios grupos por lección. Asegúrate de alinear la numeración con la sección de cuestionario correspondiente. Hay un total de 40 cuestionarios en este currículo, comenzando desde 0. +Aggiungi una traduzione dei quiz creando strutture di quiz corrispondenti nelle cartelle `assets/translations`. I quiz canonici si trovano in `assets/translations/en`. I quiz sono suddivisi in diversi gruppi per le lezioni. Assicurati di allineare la numerazione con la sezione corretta del quiz. In totale, ci sono 40 quiz in questo curriculum, con la numerazione che inizia da 0. -Después de editar las traducciones, edita el archivo index.js en la carpeta de traducción para importar todos los archivos siguiendo las convenciones en `en`. +Dopo aver modificato le traduzioni, modifica il file index.js nella cartella delle traduzioni per importare tutti i file seguendo le convenzioni di `en`. -Edita el archivo `index.js` en `assets/translations` para importar los nuevos archivos traducidos. +Modifica il file `index.js` in `assets/translations` per importare i nuovi file tradotti. -Luego, edita el menú desplegable en `App.vue` en esta aplicación para agregar tu idioma. Asegúrate de que la abreviatura localizada coincida con el nombre de la carpeta de tu idioma. +Successivamente, modifica il menu a discesa in `App.vue` in questa app per aggiungere la tua lingua. Abbina l'abbreviazione localizzata al nome della cartella della tua lingua. -Finalmente, edita todos los enlaces de cuestionarios en las lecciones traducidas, si existen, para incluir esta localización como un parámetro de consulta: `?loc=fr` por ejemplo. +Infine, modifica tutti i link ai quiz nelle lezioni tradotte, se esistono, per includere questa localizzazione come parametro di query: `?loc=fr`, ad esempio. -## Configuración del proyecto +## Configurazione del progetto ``` npm install ``` -### Compila y recarga en caliente para desarrollo +### Compila e ricarica automaticamente per lo sviluppo ``` npm run serve ``` -### Compila y minimiza para producción +### Compila e minimizza per la produzione ``` npm run build ``` -### Lint y corrige archivos +### Analizza e corregge i file ``` npm run lint ``` -### Personaliza la configuración +### Personalizza la configurazione -Consulta la [Referencia de Configuración](https://cli.vuejs.org/config/). +Consulta [Configuration Reference](https://cli.vuejs.org/config/). -Créditos: Gracias a la versión original de esta aplicación de cuestionarios: https://github.com/arpan45/simple-quiz-vue +Crediti: Grazie alla versione originale di questa app per quiz: https://github.com/arpan45/simple-quiz-vue -## Despliegue en Azure +## Distribuzione su Azure -Aquí tienes una guía paso a paso para ayudarte a comenzar: +Ecco una guida passo-passo per aiutarti a iniziare: -1. Haz un fork de un repositorio de GitHub -Asegúrate de que el código de tu aplicación web estática esté en tu repositorio de GitHub. Haz un fork de este repositorio. +1. Fai un fork del repository GitHub +Assicurati che il codice della tua app web statica sia nel tuo repository GitHub. Fai un fork di questo repository. -2. Crea una Aplicación Web Estática en Azure -- Crea una [cuenta de Azure](http://azure.microsoft.com) -- Ve al [portal de Azure](https://portal.azure.com) -- Haz clic en "Crear un recurso" y busca "Aplicación Web Estática". -- Haz clic en "Crear". +2. Crea un'app web statica su Azure +- Crea un [account Azure](http://azure.microsoft.com) +- Vai al [portale di Azure](https://portal.azure.com) +- Clicca su “Crea una risorsa” e cerca “App Web Statica”. +- Clicca su “Crea”. -3. Configura la Aplicación Web Estática -- Básicos: Suscripción: Selecciona tu suscripción de Azure. -- Grupo de Recursos: Crea un nuevo grupo de recursos o utiliza uno existente. -- Nombre: Proporciona un nombre para tu aplicación web estática. -- Región: Elige la región más cercana a tus usuarios. +3. Configura l'app web statica +- **Base**: + - Sottoscrizione: Seleziona la tua sottoscrizione Azure. + - Gruppo di risorse: Crea un nuovo gruppo di risorse o utilizza uno esistente. + - Nome: Fornisci un nome per la tua app web statica. + - Regione: Scegli la regione più vicina ai tuoi utenti. -- #### Detalles del Despliegue: -- Origen: Selecciona "GitHub". -- Cuenta de GitHub: Autoriza a Azure a acceder a tu cuenta de GitHub. -- Organización: Selecciona tu organización de GitHub. -- Repositorio: Elige el repositorio que contiene tu aplicación web estática. -- Rama: Selecciona la rama desde la cual deseas desplegar. +- **Dettagli di distribuzione**: + - Origine: Seleziona “GitHub”. + - Account GitHub: Autorizza Azure ad accedere al tuo account GitHub. + - Organizzazione: Seleziona la tua organizzazione GitHub. + - Repository: Scegli il repository contenente la tua app web statica. + - Branch: Seleziona il branch da cui vuoi distribuire. -- #### Detalles de Construcción: -- Presets de Construcción: Elige el marco con el que está construida tu aplicación (por ejemplo, React, Angular, Vue, etc.). -- Ubicación de la Aplicación: Especifica la carpeta que contiene el código de tu aplicación (por ejemplo, / si está en la raíz). -- Ubicación de la API: Si tienes una API, especifica su ubicación (opcional). -- Ubicación de Salida: Especifica la carpeta donde se genera la salida de la construcción (por ejemplo, build o dist). +- **Dettagli di build**: + - Preset di build: Scegli il framework con cui è costruita la tua app (es. React, Angular, Vue, ecc.). + - Posizione dell'app: Specifica la cartella contenente il codice della tua app (es. / se è nella radice). + - Posizione API: Se hai un'API, specifica la sua posizione (opzionale). + - Posizione output: Specifica la cartella in cui viene generato l'output della build (es. build o dist). -4. Revisa y Crea -Revisa tu configuración y haz clic en "Crear". Azure configurará los recursos necesarios y creará un flujo de trabajo de GitHub Actions en tu repositorio. +4. Rivedi e crea +Rivedi le impostazioni e clicca su “Crea”. Azure configurerà le risorse necessarie e creerà un file di workflow GitHub Actions nel tuo repository. -5. Flujo de Trabajo de GitHub Actions -Azure creará automáticamente un archivo de flujo de trabajo de GitHub Actions en tu repositorio (.github/workflows/azure-static-web-apps-.yml). Este flujo de trabajo manejará el proceso de construcción y despliegue. +5. Workflow GitHub Actions +Azure creerà automaticamente un file di workflow GitHub Actions nel tuo repository (.github/workflows/azure-static-web-apps-.yml). Questo workflow gestirà il processo di build e distribuzione. -6. Monitorea el Despliegue -Ve a la pestaña "Acciones" en tu repositorio de GitHub. -Deberías ver un flujo de trabajo en ejecución. Este flujo de trabajo construirá y desplegará tu aplicación web estática en Azure. -Una vez que el flujo de trabajo se complete, tu aplicación estará activa en la URL de Azure proporcionada. +6. Monitora la distribuzione +Vai alla scheda “Actions” nel tuo repository GitHub. +Dovresti vedere un workflow in esecuzione. Questo workflow costruirà e distribuirà la tua app web statica su Azure. +Una volta completato il workflow, la tua app sarà online all'URL fornito da Azure. -### Ejemplo de Archivo de Flujo de Trabajo +### Esempio di file Workflow -Aquí tienes un ejemplo de cómo podría verse el archivo de flujo de trabajo de GitHub Actions: -name: Azure Static Web Apps CI/CD +Ecco un esempio di come potrebbe apparire il file di workflow GitHub Actions: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Recursos Adicionales -- [Documentación de Aplicaciones Web Estáticas de Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [Documentación de GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Risorse aggiuntive +- [Documentazione Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentazione GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/0-course-setup/for-teachers.md b/translations/it/lessons/0-course-setup/for-teachers.md index 3cec2338..677c5668 100644 --- a/translations/it/lessons/0-course-setup/for-teachers.md +++ b/translations/it/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ -# For Educators + +# Per gli Educatori -¿Te gustaría utilizar este currículo en tu aula? ¡No dudes en hacerlo! +Vorresti utilizzare questo curriculum nella tua classe? Sentiti libero di farlo! -De hecho, puedes usarlo dentro de GitHub mismo utilizando GitHub Classroom. +Infatti, puoi usarlo direttamente su GitHub utilizzando GitHub Classroom. -Para hacerlo, haz un fork de este repositorio. Necesitarás crear un repositorio para cada lección, así que tendrás que extraer cada carpeta en un repositorio separado. De esta manera, [GitHub Classroom](https://classroom.github.com/classrooms) podrá recoger cada lección por separado. +Per farlo, fai un fork di questo repository. Avrai bisogno di creare un repository per ogni lezione, quindi dovrai estrarre ogni cartella in un repository separato. In questo modo, [GitHub Classroom](https://classroom.github.com/classrooms) potrà gestire ogni lezione separatamente. -Estas [instrucciones completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) te darán una idea de cómo configurar tu aula. +Queste [istruzioni complete](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ti daranno un'idea di come configurare la tua classe. -## Usando el repositorio tal como está +## Utilizzare il repository così com'è -Si deseas utilizar este repositorio tal como está, sin usar GitHub Classroom, también se puede hacer. Tendrás que comunicarte con tus estudiantes sobre qué lección trabajar juntos. +Se desideri utilizzare questo repository nello stato attuale, senza utilizzare GitHub Classroom, è possibile farlo. Dovrai comunicare ai tuoi studenti quale lezione seguire insieme. -En un formato en línea (Zoom, Teams u otro), podrías formar salas de trabajo para los cuestionarios y guiar a los estudiantes para ayudarlos a prepararse para aprender. Luego, invita a los estudiantes a realizar los cuestionarios y enviar sus respuestas como 'issues' en un momento determinado. Podrías hacer lo mismo con las tareas, si deseas que los estudiantes trabajen colaborativamente en público. +In un formato online (Zoom, Teams o altri), potresti creare stanze di gruppo per i quiz e fare da mentore agli studenti per aiutarli a prepararsi per l'apprendimento. Poi invita gli studenti a partecipare ai quiz e a inviare le loro risposte come 'issue' a un orario stabilito. Potresti fare lo stesso con i compiti, se desideri che gli studenti lavorino in modo collaborativo e aperto. -Si prefieres un formato más privado, pídele a tus estudiantes que hagan un fork del currículo, lección por lección, a sus propios repositorios de GitHub como repositorios privados y que te den acceso. Así podrán completar cuestionarios y tareas de forma privada y enviártelas a través de issues en tu repositorio de aula. +Se preferisci un formato più privato, chiedi ai tuoi studenti di fare un fork del curriculum, lezione per lezione, nei loro repository GitHub privati, e di darti accesso. In questo modo, potranno completare quiz e compiti in modo privato e inviarteli tramite issue sul tuo repository della classe. -Hay muchas maneras de hacer que esto funcione en un formato de aula en línea. ¡Por favor, háznos saber qué funciona mejor para ti! +Ci sono molti modi per far funzionare questo approccio in un'aula online. Facci sapere quale funziona meglio per te! -## Por favor, danos tus comentarios +## Dacci il tuo feedback -Queremos hacer que este currículo funcione para ti y tus estudiantes. ¡Por favor, danos tu opinión en los foros de discusión! +Vogliamo che questo curriculum funzioni per te e i tuoi studenti. Ti preghiamo di darci il tuo feedback nei forum di discussione! -**Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/0-course-setup/how-to-run.md b/translations/it/lessons/0-course-setup/how-to-run.md index 4046f2dd..f7c385a7 100644 --- a/translations/it/lessons/0-course-setup/how-to-run.md +++ b/translations/it/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ -# Cómo Ejecutar el Código + +# Come Eseguire il Codice -Este currículo contiene muchos ejemplos ejecutables y laboratorios que querrás ejecutar. Para hacer esto, necesitas la capacidad de ejecutar código Python en Jupyter Notebooks que se proporcionan como parte de este currículo. Tienes varias opciones para ejecutar el código: +Questo curriculum contiene molti esempi eseguibili e laboratori che vorresti provare. Per farlo, hai bisogno della possibilità di eseguire codice Python nei Jupyter Notebook forniti come parte di questo curriculum. Hai diverse opzioni per eseguire il codice: -## Ejecutar localmente en tu computadora +## Eseguire localmente sul tuo computer -Para ejecutar el código localmente en tu computadora, necesitarás tener instalada alguna versión de Python. Personalmente, recomiendo instalar **[miniconda](https://conda.io/en/latest/miniconda.html)**, ya que es una instalación bastante ligera que soporta el administrador de paquetes `conda` para diferentes **entornos virtuales** de Python. +Per eseguire il codice localmente sul tuo computer, devi avere una qualche versione di Python installata. Personalmente consiglio di installare **[miniconda](https://conda.io/en/latest/miniconda.html)** - è un'installazione piuttosto leggera che supporta il gestore di pacchetti `conda` per diversi **ambienti virtuali** Python. -Después de instalar miniconda, necesitarás clonar el repositorio y crear un entorno virtual que se utilizará para este curso: +Dopo aver installato miniconda, devi clonare il repository e creare un ambiente virtuale da utilizzare per questo corso: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,53 +24,54 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Usando Visual Studio Code con la Extensión de Python +### Utilizzare Visual Studio Code con l'Estensione Python -Probablemente la mejor manera de utilizar el currículo es abrirlo en [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) con la [Extensión de Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Probabilmente il modo migliore per utilizzare il curriculum è aprirlo in [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) con l'[Estensione Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Nota**: Una vez que clones y abras el directorio en VS Code, te sugerirá automáticamente que instales las extensiones de Python. También tendrás que instalar miniconda como se describió anteriormente. +> **Note**: Una volta clonato e aperto il directory in VS Code, ti verrà automaticamente suggerito di installare le estensioni Python. Dovrai anche installare miniconda come descritto sopra. -> **Nota**: Si VS Code te sugiere reabrir el repositorio en un contenedor, debes rechazar esto para usar la instalación local de Python. +> **Note**: Se VS Code ti suggerisce di riaprire il repository in un container, devi rifiutare per utilizzare l'installazione locale di Python. -### Usando Jupyter en el Navegador +### Utilizzare Jupyter nel Browser -También puedes utilizar el entorno Jupyter directamente desde el navegador en tu propia computadora. De hecho, tanto Jupyter clásico como Jupyter Hub ofrecen un entorno de desarrollo bastante conveniente con autocompletado, resaltado de código, etc. +Puoi anche utilizzare l'ambiente Jupyter direttamente dal browser sul tuo computer. In realtà, sia Jupyter classico che Jupyter Hub offrono un ambiente di sviluppo piuttosto comodo con completamento automatico, evidenziazione del codice, ecc. -Para iniciar Jupyter localmente, ve al directorio del curso y ejecuta: +Per avviare Jupyter localmente, vai nella directory del corso ed esegui: ```bash jupyter notebook ``` -o +oppure ```bash jupyterhub ``` -Luego podrás navegar a cualquiera de las carpetas `.ipynb` files, open them and start working. +Puoi quindi navigare tra i file `.ipynb`, aprirli e iniziare a lavorare. -### Running in container +### Eseguire in un container -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` que indican cómo construir un contenedor para este repositorio; VS Code te ofrecerá reabrir el código en el contenedor. Esto requerirá la instalación de Docker y será más complejo, por lo que lo recomendamos para usuarios más experimentados. +Un'alternativa all'installazione di Python sarebbe eseguire il codice in un container. Poiché il nostro repository contiene una cartella speciale `.devcontainer` che istruisce su come costruire un container per questo repo, VS Code ti offrirà di riaprire il codice in un container. Questo richiederà l'installazione di Docker e sarà anche più complesso, quindi lo consigliamo agli utenti più esperti. -## Ejecución en la Nube +## Eseguire nel Cloud -Si no deseas instalar Python localmente y tienes acceso a algunos recursos en la nube, una buena alternativa sería ejecutar el código en la nube. Hay varias maneras de hacerlo: +Se non vuoi installare Python localmente e hai accesso a risorse cloud, una buona alternativa sarebbe eseguire il codice nel cloud. Ci sono diversi modi per farlo: -* Usando **[GitHub Codespaces](https://github.com/features/codespaces)**, que es un entorno virtual creado para ti en GitHub, accesible a través de la interfaz del navegador de VS Code. Si tienes acceso a Codespaces, solo tienes que hacer clic en el botón **Code** en el repositorio, iniciar un codespace y comenzar a trabajar en poco tiempo. -* Usando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) es un recurso de computación gratuito proporcionado en la nube para personas como tú que desean probar algún código en GitHub. Hay un botón en la página principal para abrir el repositorio en Binder; esto debería llevarte rápidamente al sitio de binder, que construirá el contenedor subyacente y comenzará la interfaz web de Jupyter para ti sin problemas. +* Utilizzando **[GitHub Codespaces](https://github.com/features/codespaces)**, che è un ambiente virtuale creato per te su GitHub, accessibile tramite l'interfaccia browser di VS Code. Se hai accesso a Codespaces, puoi semplicemente cliccare sul pulsante **Code** nel repository, avviare un codespace e iniziare rapidamente. -> **Nota**: Para prevenir el uso indebido, Binder tiene bloqueado el acceso a algunos recursos web. Esto puede impedir que parte del código funcione, especialmente si intenta obtener modelos y/o conjuntos de datos de Internet público. Puede que necesites encontrar algunas soluciones alternativas. Además, los recursos de computación proporcionados por Binder son bastante básicos, por lo que el entrenamiento será lento, especialmente en lecciones más complejas más adelante. +* Utilizzando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) offre risorse di calcolo gratuite nel cloud per persone come te che vogliono testare del codice su GitHub. C'è un pulsante nella pagina principale per aprire il repository in Binder - questo ti porterà rapidamente al sito di Binder, che costruirà il container sottostante e avvierà l'interfaccia web di Jupyter per te senza problemi. -## Ejecución en la Nube con GPU +> **Note**: Per prevenire abusi, Binder ha accesso a alcune risorse web bloccato. Questo potrebbe impedire il funzionamento di parte del codice che scarica modelli e/o dataset da Internet pubblico. Potresti dover trovare delle soluzioni alternative. Inoltre, le risorse di calcolo fornite da Binder sono piuttosto basilari, quindi l'addestramento sarà lento, specialmente nelle lezioni più complesse. -Algunas de las lecciones posteriores en este currículo se beneficiarán enormemente del soporte de GPU, ya que de lo contrario el entrenamiento será dolorosamente lento. Hay algunas opciones que puedes seguir, especialmente si tienes acceso a la nube ya sea a través de [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) o a través de tu institución: +## Eseguire nel Cloud con GPU -* Crea una [Máquina Virtual de Ciencia de Datos](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) y conéctate a ella a través de Jupyter. Luego puedes clonar el repositorio directamente en la máquina y comenzar a aprender. Las máquinas virtuales de la serie NC tienen soporte para GPU. +Alcune delle lezioni più avanzate di questo curriculum trarrebbero grande beneficio dal supporto GPU, perché altrimenti l'addestramento sarebbe estremamente lento. Ci sono alcune opzioni che puoi seguire, specialmente se hai accesso al cloud tramite [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) o tramite la tua istituzione: -> **Nota**: Algunas suscripciones, incluyendo Azure for Students, no proporcionan soporte de GPU de manera predeterminada. Puede que necesites solicitar núcleos de GPU adicionales a través de una solicitud de soporte técnico. +* Crea una [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) e connettiti ad essa tramite Jupyter. Puoi quindi clonare il repository direttamente sulla macchina e iniziare a imparare. Le VM della serie NC hanno supporto GPU. -* Crea un [Espacio de Trabajo de Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) y luego utiliza la función de Notebook allí. [Este video](https://azure-for-academics.github.io/quickstart/azureml-papers/) muestra cómo clonar un repositorio en un notebook de Azure ML y comenzar a utilizarlo. +> **Note**: Alcuni abbonamenti, inclusi Azure for Students, non forniscono supporto GPU di default. Potresti dover richiedere core GPU aggiuntivi tramite una richiesta di supporto tecnico. -También puedes usar Google Colab, que viene con algo de soporte gratuito para GPU, y subir Jupyter Notebooks allí para ejecutarlos uno por uno. +* Crea un [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) e utilizza la funzione Notebook lì. [Questo video](https://azure-for-academics.github.io/quickstart/azureml-papers/) mostra come clonare un repository in un notebook di Azure ML e iniziare a usarlo. + +Puoi anche utilizzare Google Colab, che offre un certo supporto GPU gratuito, e caricare i Jupyter Notebook lì per eseguirli uno per uno. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autoritativa. Para información crítica, se recomienda la traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/0-course-setup/setup.md b/translations/it/lessons/0-course-setup/setup.md index daab54ca..a8b1cb31 100644 --- a/translations/it/lessons/0-course-setup/setup.md +++ b/translations/it/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ -# Introduction à ce cursus + +# Introduzione a questo Curriculum -## Êtes-vous un étudiant ? +## Sei uno studente? -Commencez avec les ressources suivantes : +Inizia con le seguenti risorse: -* [Page du Hub étudiant](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Sur cette page, vous trouverez des ressources pour débutants, des packs étudiants et même des moyens d'obtenir un bon de certification gratuit. C'est une page que vous voudrez mettre en favoris et consulter de temps en temps, car nous mettons à jour le contenu au moins une fois par mois. -* [Ambassadeurs Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Rejoignez une communauté mondiale d'ambassadeurs étudiants, cela pourrait être votre porte d'entrée vers Microsoft. +* [Pagina Student Hub](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Su questa pagina troverai risorse per principianti, pacchetti per studenti e persino modi per ottenere un voucher gratuito per la certificazione. È una pagina da salvare nei preferiti e controllare di tanto in tanto, poiché il contenuto viene aggiornato almeno mensilmente. +* [Microsoft Student Learn Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Unisciti a una comunità globale di ambasciatori studenti, potrebbe essere il tuo ingresso in Microsoft. -**Étudiants**, il existe plusieurs façons d'utiliser le cursus. Tout d'abord, vous pouvez simplement lire le texte et consulter le code directement sur GitHub. Si vous souhaitez exécuter le code dans l'un des notebooks - [lisez nos instructions](./etc/how-to-run.md), et trouvez plus de conseils sur la façon de le faire [dans cet article de blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +**Studenti**, ci sono diversi modi per utilizzare il curriculum. Innanzitutto, puoi semplicemente leggere il testo e consultare il codice direttamente su GitHub. Se vuoi eseguire il codice in uno dei notebook - [leggi le nostre istruzioni](./etc/how-to-run.md) e trova ulteriori consigli su come farlo [in questo post del blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -> **Remarque** : [Instructions sur la façon d'exécuter le code de ce cursus](/how-to-run.md) +> **Nota**: [Istruzioni su come eseguire il codice in questo curriculum](./how-to-run.md) -## Auto-apprentissage +## Studio autonomo -Cependant, si vous souhaitez suivre le cours en tant que projet d'auto-apprentissage, nous vous suggérons de forker l'ensemble du dépôt sur votre propre compte GitHub et de compléter les exercices par vous-même ou en groupe : +Se invece desideri seguire il corso come progetto di studio autonomo, ti consigliamo di fare un fork dell'intero repository sul tuo account GitHub e completare gli esercizi da solo o con un gruppo: -* Commencez par un quiz pré-conférence. -* Lisez le texte d'introduction de la conférence. -* Si la conférence comprend des notebooks supplémentaires, parcourez-les, lisez et exécutez le code. Si des notebooks TensorFlow et PyTorch sont fournis, vous pouvez vous concentrer sur l'un d'eux - choisissez votre framework préféré. -* Les notebooks contiennent souvent certains défis qui vous obligent à ajuster le code un peu pour expérimenter. -* Réalisez le quiz post-conférence. -* S'il y a un laboratoire associé au module - complétez l'affectation. -* Visitez le [Forum de discussion](https://github.com/microsoft/AI-For-Beginners/discussions) pour "apprendre à haute voix". +* Inizia con un quiz pre-lezione. +* Leggi il testo introduttivo della lezione. +* Se la lezione include notebook aggiuntivi, esaminali, leggendo ed eseguendo il codice. Se sono forniti notebook sia per TensorFlow che per PyTorch, puoi concentrarti su uno di essi - scegli il tuo framework preferito. +* I notebook spesso contengono alcune sfide che richiedono di modificare un po' il codice per sperimentare. +* Completa il quiz post-lezione. +* Se c'è un laboratorio associato al modulo - completa l'esercizio. +* Visita il [Forum di discussione](https://github.com/microsoft/AI-For-Beginners/discussions) per "imparare ad alta voce". -> Pour un apprentissage supplémentaire, nous recommandons de suivre ces modules et parcours d'apprentissage [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). +> Per ulteriori studi, consigliamo di seguire questi moduli e percorsi di apprendimento su [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). -**Enseignants**, nous avons [inclus quelques suggestions](/for-teachers.md) sur la façon d'utiliser ce cursus. +**Insegnanti**, abbiamo [incluso alcune indicazioni](/for-teachers.md) su come utilizzare questo curriculum. --- -## Pédagogie +## Pedagogia -Nous avons choisi deux principes pédagogiques lors de la construction de ce cursus : garantir qu'il soit pratique **basé sur des projets** et qu'il inclut des **quiz fréquents**. +Abbiamo scelto due principi pedagogici nella costruzione di questo curriculum: garantire che sia basato su **progetti pratici** e che includa **quiz frequenti**. -En veillant à ce que le contenu soit aligné sur des projets, le processus devient plus engageant pour les étudiants et la rétention des concepts sera renforcée. De plus, un quiz à faible enjeu avant un cours fixe l'intention de l'étudiant envers l'apprentissage d'un sujet, tandis qu'un second quiz après le cours assure une rétention supplémentaire. Ce cursus a été conçu pour être flexible et amusant et peut être suivi dans son intégralité ou en partie. Les projets commencent petits et deviennent de plus en plus complexes à la fin du cycle de 12 semaines. +Garantendo che il contenuto sia allineato ai progetti, il processo diventa più coinvolgente per gli studenti e la comprensione dei concetti viene migliorata. Inoltre, un quiz a basso rischio prima della lezione orienta lo studente verso l'apprendimento di un argomento, mentre un secondo quiz dopo la lezione garantisce una maggiore ritenzione. Questo curriculum è stato progettato per essere flessibile e divertente e può essere seguito interamente o in parte. I progetti iniziano in modo semplice e diventano progressivamente più complessi entro la fine del ciclo di 12 settimane. -> **Une note sur les quiz** : Tous les quiz sont contenus [dans cette application](https://red-field-0a6ddfd03.1.azurestaticapps.net/), pour un total de 50 quiz de trois questions chacun. Ils sont liés depuis les leçons, mais l'application de quiz peut être exécutée localement ; suivez les instructions dans le dossier `etc/quiz-app`. +> **Una nota sui quiz**: Tutti i quiz sono contenuti [in questa app](https://red-field-0a6ddfd03.1.azurestaticapps.net/), per un totale di 50 quiz di tre domande ciascuno. Sono collegati all'interno delle lezioni, ma l'app dei quiz può essere eseguita localmente; segui le istruzioni nella cartella `etc/quiz-app`. -## Accès hors ligne +## Accesso offline -Vous pouvez exécuter cette documentation hors ligne en utilisant [Docsify](https://docsify.js.org/#/). Forkez ce dépôt, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier `etc/docsify` de ce dépôt, tapez `docsify serve`. Le site sera servi sur le port 3000 sur votre localhost : `localhost:3000`. Un PDF du cursus est disponible [à ce lien](../../../../../../etc/pdf/readme.pdf). +Puoi eseguire questa documentazione offline utilizzando [Docsify](https://docsify.js.org/#/). Fai un fork di questo repository, [installa Docsify](https://docsify.js.org/#/quickstart) sulla tua macchina locale e poi, nella cartella principale di questo repository, digita `docsify serve`. Il sito web sarà servito sulla porta 3000 del tuo localhost: `localhost:3000`. Un pdf del curriculum è disponibile [a questo link](../../../../../../../../../etc/pdf/readme.pdf). **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/1-Intro/README.md b/translations/it/lessons/1-Intro/README.md index bbe35a9e..f0c77193 100644 --- a/translations/it/lessons/1-Intro/README.md +++ b/translations/it/lessons/1-Intro/README.md @@ -1,38 +1,66 @@ -> Image by Dmitry Soshnikov, [photo](https://unsplash.com/photos/r8LmVbUKgns) by [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -## Recente Ricerca sull'IA +Con il passare del tempo, le risorse informatiche sono diventate più economiche e sono stati resi disponibili più dati, permettendo agli approcci basati su reti neurali di dimostrare grandi prestazioni nel competere con gli esseri umani in molti ambiti, come la visione artificiale o la comprensione del linguaggio parlato. Nell'ultimo decennio, il termine Intelligenza Artificiale è stato spesso usato come sinonimo di Reti Neurali, poiché la maggior parte dei successi dell'IA di cui sentiamo parlare si basa su di esse. -La recente crescita esponenziale nella ricerca sulle reti neurali è iniziata attorno al 2010, quando sono diventati disponibili grandi dataset pubblici. Una vasta collezione di immagini chiamata [ImageNet](https://en.wikipedia.org/wiki/ImageNet), che contiene circa 14 milioni di immagini annotate, ha dato origine alla [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). +Possiamo osservare come gli approcci siano cambiati, ad esempio, nella creazione di un programma per giocare a scacchi: -![Accuratezza ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) +* I primi programmi di scacchi si basavano sulla ricerca: un programma cercava di stimare esplicitamente le possibili mosse dell'avversario per un certo numero di mosse successive e selezionava la mossa ottimale basandosi sulla posizione migliore che poteva essere raggiunta in poche mosse. Questo ha portato allo sviluppo del cosiddetto algoritmo di ricerca [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Le strategie di ricerca funzionano bene verso la fine della partita, dove lo spazio di ricerca è limitato da un numero ridotto di mosse possibili. Tuttavia, all'inizio della partita, lo spazio di ricerca è enorme e l'algoritmo può essere migliorato imparando dalle partite esistenti tra giocatori umani. Esperimenti successivi hanno impiegato il cosiddetto [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning), in cui il programma cercava casi nella base di conoscenza molto simili alla posizione attuale nel gioco. +* I programmi moderni che vincono contro i giocatori umani si basano su reti neurali e [apprendimento per rinforzo](https://en.wikipedia.org/wiki/Reinforcement_learning), dove i programmi imparano a giocare semplicemente giocando a lungo contro sé stessi e apprendendo dai propri errori, proprio come fanno gli esseri umani quando imparano a giocare a scacchi. Tuttavia, un programma informatico può giocare molte più partite in molto meno tempo e quindi può imparare molto più velocemente. -> Image by [Dmitry Soshnikov](http://soshnikov.com) -En 2012, se utilizaron por primera vez las [Redes Neuronales Convolucionales](../4-ComputerVision/07-ConvNets/README.md) en la clasificación de imágenes, lo que provocó una disminución significativa en los errores de clasificación (de casi el 30% al 16.4%). En 2015, la arquitectura ResNet de Microsoft Research [alcanzó una precisión a nivel humano](https://doi.org/10.1109/ICCV.2015.123). +✅ Fai una piccola ricerca su altri giochi che sono stati giocati dall'IA. -Desde entonces, las Redes Neuronales han demostrado un comportamiento muy exitoso en muchas tareas: +Allo stesso modo, possiamo osservare come l'approccio alla creazione di "programmi parlanti" (che potrebbero superare il test di Turing) sia cambiato: + +* I primi programmi di questo tipo, come [Eliza](https://en.wikipedia.org/wiki/ELIZA), si basavano su regole grammaticali molto semplici e sulla riformulazione della frase di input in una domanda. +* Gli assistenti moderni, come Cortana, Siri o Google Assistant, sono tutti sistemi ibridi che utilizzano reti neurali per convertire il parlato in testo e riconoscere l'intento dell'utente, per poi impiegare un po' di ragionamento o algoritmi espliciti per eseguire le azioni richieste. +* In futuro, possiamo aspettarci un modello completamente basato su reti neurali per gestire il dialogo autonomamente. Le recenti famiglie di reti neurali GPT e [Turing-NLG](https://turing.microsoft.com/) mostrano grandi successi in questo ambito. + +> Immagine di Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) di [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Recenti Ricerche sull'AI + +Il grande sviluppo recente nella ricerca sulle reti neurali è iniziato intorno al 2010, quando sono diventati disponibili grandi dataset pubblici. Una vasta collezione di immagini chiamata [ImageNet](https://en.wikipedia.org/wiki/ImageNet), che contiene circa 14 milioni di immagini annotate, ha dato vita alla [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Precisione ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) + +Nel 2012, le [Reti Neurali Convoluzionali](../4-ComputerVision/07-ConvNets/README.md) sono state utilizzate per la prima volta nella classificazione delle immagini, portando a una significativa riduzione degli errori di classificazione (dal quasi 30% al 16,4%). Nel 2015, l'architettura ResNet di Microsoft Research [raggiunse una precisione a livello umano](https://doi.org/10.1109/ICCV.2015.123). + +Da allora, le Reti Neurali hanno dimostrato un comportamento molto efficace in molti compiti: --- -Año | Paridad Humana alcanzada ------|-------- -2015 | [Clasificación de Imágenes](https://doi.org/10.1109/ICCV.2015.123) -2016 | [Reconocimiento de Voz Conversacional](https://arxiv.org/abs/1610.05256) -2018 | [Traducción Automática de Máquinas](https://arxiv.org/abs/1803.05567) (chino a inglés) -2020 | [Generación de Descripciones de Imágenes](https://arxiv.org/abs/2009.13682) +Anno | Parità con l'Umano raggiunta +-----|----------------------------- +2015 | [Classificazione delle Immagini](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Riconoscimento del Parlato Conversazionale](https://arxiv.org/abs/1610.05256) +2018 | [Traduzione Automatica](https://arxiv.org/abs/1803.05567) (Cinese-Inglese) +2020 | [Descrizione delle Immagini](https://arxiv.org/abs/2009.13682) -En los últimos años, hemos sido testigos de grandes éxitos con modelos de lenguaje de gran tamaño, como BERT y GPT-3. Esto ocurrió principalmente debido a la disponibilidad de una gran cantidad de datos textuales generales que nos permiten entrenar modelos para captar la estructura y el significado de los textos, preentrenarlos en colecciones de texto generales y luego especializar esos modelos para tareas más específicas. Aprenderemos más sobre [Procesamiento del Lenguaje Natural](../5-NLP/README.md) más adelante en este curso. +Negli ultimi anni abbiamo assistito a enormi successi con i modelli linguistici di grandi dimensioni, come BERT e GPT-3. Questo è avvenuto principalmente grazie alla grande quantità di dati testuali generali disponibili, che permettono di addestrare i modelli a catturare la struttura e il significato dei testi, pre-addestrarli su collezioni di testi generali e poi specializzarli per compiti più specifici. Impareremo di più sull'[Elaborazione del Linguaggio Naturale](../5-NLP/README.md) più avanti in questo corso. -## 🚀 Desafío +## 🚀 Sfida -Haz un recorrido por internet para determinar dónde, en tu opinión, se utiliza la IA de manera más efectiva. ¿Es en una aplicación de mapas, en algún servicio de conversión de voz a texto o en un videojuego? Investiga cómo se construyó el sistema. +Fai un giro su internet per determinare dove, secondo te, l'AI viene utilizzata in modo più efficace. È in un'app di mappatura, in un servizio di riconoscimento vocale o in un videogioco? Ricerca come è stato costruito il sistema. -## [Cuestionario post-clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Revisa la historia de la IA y el ML leyendo [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Toma un elemento del sketchnote en la parte superior de esa lección o de esta y investígalo en mayor profundidad para entender el contexto cultural que informa su evolución. +Rivedi la storia dell'AI e del ML leggendo [questa lezione](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Prendi un elemento dallo sketchnote all'inizio di quella lezione o di questa e approfondiscilo per comprendere il contesto culturale che ha influenzato la sua evoluzione. -**Tarea**: [Game Jam](assignment.md) +**Compito**: [Game Jam](assignment.md) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/1-Intro/assignment.md b/translations/it/lessons/1-Intro/assignment.md index e82fc880..f069b661 100644 --- a/translations/it/lessons/1-Intro/assignment.md +++ b/translations/it/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ + # Game Jam -Los juegos son un área que ha sido fuertemente influenciada por los desarrollos en IA y ML. En esta tarea, escribe un breve artículo sobre un juego que te guste y que haya sido influenciado por la evolución de la IA. Debe ser un juego lo suficientemente antiguo como para haber sido impactado por varios tipos de sistemas de procesamiento computacional. Un buen ejemplo es el ajedrez o el go, pero también echa un vistazo a videojuegos como pong o Pac-Man. Escribe un ensayo que discuta el pasado, presente y futuro de la IA en el juego. +I giochi sono un ambito che è stato fortemente influenzato dai progressi nell'IA e nel ML. In questo compito, scrivi un breve saggio su un gioco che ti piace e che è stato influenzato dall'evoluzione dell'IA. Dovrebbe essere un gioco abbastanza vecchio da essere stato influenzato da diversi tipi di sistemi di elaborazione informatica. Un buon esempio è Scacchi o Go, ma considera anche videogiochi come Pong o Pac-Man. Scrivi un saggio che discuta il passato, il presente e il futuro dell'IA nel gioco. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/2-Symbolic/README.md b/translations/it/lessons/2-Symbolic/README.md index 85bc8b9e..8d5e1b7a 100644 --- a/translations/it/lessons/2-Symbolic/README.md +++ b/translations/it/lessons/2-Symbolic/README.md @@ -1,107 +1,86 @@ -# Représentation des connaissances et systèmes experts + +*Immagine [da Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), di Longlivetheux - Opera propria, CC BY-SA 4.0* -![Résumé du contenu de l'IA symbolique](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.it.png) +Pertanto, il problema della **rappresentazione della conoscenza** consiste nel trovare un modo efficace per rappresentare la conoscenza all'interno di un computer sotto forma di dati, rendendola automaticamente utilizzabile. Questo può essere visto come uno spettro: -> Schéma par [Tomomi Imura](https://twitter.com/girlie_mac) +![Spettro della rappresentazione della conoscenza](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.it.png) -La quête de l'intelligence artificielle repose sur la recherche de connaissances, pour donner un sens au monde de manière similaire à celle des humains. Mais comment procéder ? +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +* A sinistra, ci sono tipi di rappresentazione della conoscenza molto semplici che possono essere utilizzati efficacemente dai computer. La più semplice è quella algoritmica, in cui la conoscenza è rappresentata da un programma informatico. Tuttavia, questo non è il modo migliore per rappresentare la conoscenza, poiché non è flessibile. La conoscenza nella nostra mente è spesso non algoritmica. +* A destra, ci sono rappresentazioni come il testo naturale. È la più potente, ma non può essere utilizzata per il ragionamento automatico. -Au début de l'IA, l'approche descendante pour créer des systèmes intelligents (discutée dans la leçon précédente) était populaire. L'idée était d'extraire les connaissances des personnes dans une forme lisible par machine, puis de les utiliser pour résoudre automatiquement des problèmes. Cette approche reposait sur deux grandes idées : +> ✅ Pensa per un momento a come rappresenti la conoscenza nella tua mente e la converti in appunti. Esiste un formato particolare che funziona bene per te per favorire la memorizzazione? -* Représentation des connaissances -* Raisonnement +## Classificazione delle rappresentazioni della conoscenza nei computer -## Représentation des connaissances +Possiamo classificare i diversi metodi di rappresentazione della conoscenza nei computer nelle seguenti categorie: -L'un des concepts importants de l'IA symbolique est la **connaissance**. Il est essentiel de différencier la connaissance de *l'information* ou *des données*. Par exemple, on peut dire que les livres contiennent des connaissances, car on peut les étudier et devenir un expert. Cependant, ce que contiennent les livres est en réalité appelé *données*, et en lisant ces livres et en intégrant ces données dans notre modèle du monde, nous convertissons ces données en connaissances. +* **Rappresentazioni a rete** si basano sul fatto che abbiamo una rete di concetti interrelati nella nostra mente. Possiamo provare a riprodurre le stesse reti come un grafo all'interno di un computer - una cosiddetta **rete semantica**. -> ✅ **La connaissance** est quelque chose qui est contenu dans notre esprit et représente notre compréhension du monde. Elle est obtenue par un processus d'**apprentissage** actif, qui intègre des morceaux d'information que nous recevons dans notre modèle actif du monde. +1. **Triplette Oggetto-Attributo-Valore** o **coppie attributo-valore**. Poiché un grafo può essere rappresentato all'interno di un computer come un elenco di nodi e archi, possiamo rappresentare una rete semantica con un elenco di triplette, contenenti oggetti, attributi e valori. Ad esempio, costruiamo le seguenti triplette sui linguaggi di programmazione: -Le plus souvent, nous ne définissons pas strictement la connaissance, mais nous l'alignons avec d'autres concepts connexes en utilisant la [Pyramide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Elle contient les concepts suivants : +Oggetto | Attributo | Valore +--------|-----------|------ +Python | è | Linguaggio non tipizzato +Python | inventato-da | Guido van Rossum +Python | sintassi-blocco | indentazione +Linguaggio non tipizzato | non ha | definizioni di tipo -* **Données** : quelque chose représenté sur un support physique, tel qu'un texte écrit ou des mots prononcés. Les données existent indépendamment des êtres humains et peuvent être transmises entre les personnes. -* **Information** : c'est ainsi que nous interprétons les données dans notre esprit. Par exemple, lorsque nous entendons le mot *ordinateur*, nous avons une certaine compréhension de ce que c'est. -* **Connaissance** : c'est l'information intégrée dans notre modèle du monde. Par exemple, une fois que nous apprenons ce qu'est un ordinateur, nous commençons à avoir des idées sur son fonctionnement, son coût et ses utilisations possibles. Ce réseau de concepts interconnectés forme notre connaissance. -* **Sagesse** : c'est encore un niveau supplémentaire de notre compréhension du monde, et cela représente *la méta-connaissance*, c'est-à-dire une notion sur comment et quand la connaissance doit être utilisée. +> ✅ Pensa a come le triplette possono essere utilizzate per rappresentare altri tipi di conoscenza. - +2. **Rappresentazioni gerarchiche** enfatizzano il fatto che spesso creiamo una gerarchia di oggetti nella nostra mente. Ad esempio, sappiamo che il canarino è un uccello, e tutti gli uccelli hanno le ali. Abbiamo anche un'idea di quale sia il colore di un canarino e della sua velocità di volo. -*Image [de Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), par Longlivetheux - Travail personnel, CC BY-SA 4.0* - -Ainsi, le problème de la **représentation des connaissances** est de trouver un moyen efficace de représenter les connaissances à l'intérieur d'un ordinateur sous forme de données, afin de les rendre automatiquement utilisables. Cela peut être vu comme un spectre : - -![Spectre de la représentation des connaissances](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.it.png) - -> Image par [Dmitry Soshnikov](http://soshnikov.com) - -* À gauche, il y a des types très simples de représentations des connaissances qui peuvent être efficacement utilisés par les ordinateurs. Le plus simple est algorithmique, lorsque la connaissance est représentée par un programme informatique. Cependant, ce n'est pas la meilleure façon de représenter la connaissance, car elle n'est pas flexible. La connaissance dans notre esprit est souvent non-algorithmique. -* À droite, il y a des représentations telles que le texte naturel. C'est la plus puissante, mais elle ne peut pas être utilisée pour le raisonnement automatique. - -> ✅ Pensez un instant à la façon dont vous représentez la connaissance dans votre esprit et la convertissez en notes. Existe-t-il un format particulier qui fonctionne bien pour vous afin d'aider à la rétention ? - -## Classification des représentations des connaissances informatiques - -Nous pouvons classer différentes méthodes de représentation des connaissances informatiques dans les catégories suivantes : - -* **Représentations en réseau** : basées sur le fait que nous avons un réseau de concepts interconnectés dans notre esprit. Nous pouvons essayer de reproduire ces mêmes réseaux sous forme de graphique à l'intérieur d'un ordinateur - un soi-disant **réseau sémantique**. - -1. **Triplets Objet-Attribut-Valeur** ou **paires attribut-valeur**. Étant donné qu'un graphique peut être représenté à l'intérieur d'un ordinateur sous forme de liste de nœuds et d'arêtes, nous pouvons représenter un réseau sémantique par une liste de triplets, contenant des objets, des attributs et des valeurs. Par exemple, nous construisons les triplets suivants sur les langages de programmation : - -Objet | Attribut | Valeur --------|-----------|------ -Python | est | Langage-Non-Typé -Python | inventé-par | Guido van Rossum -Python | syntaxe-bloc | indentation -Langage-Non-Typé | n'a pas | définitions de type - -> ✅ Réfléchissez à la manière dont les triplets peuvent être utilisés pour représenter d'autres types de connaissances. - -2. **Représentations hiérarchiques** : mettent en avant le fait que nous créons souvent une hiérarchie d'objets dans notre esprit. Par exemple, nous savons que le canari est un oiseau, et que tous les oiseaux ont des ailes. Nous avons également une idée de la couleur qu'un canari a généralement et de sa vitesse de vol. - - - **Représentation par cadre** : basée sur la représentation de chaque objet ou classe d'objets sous forme de **cadre** qui contient des **emplacements**. Les emplacements ont des valeurs par défaut possibles, des restrictions de valeur ou des procédures stockées qui peuvent être appelées pour obtenir la valeur d'un emplacement. Tous les cadres forment une hiérarchie similaire à une hiérarchie d'objets dans les langages de programmation orientés objet. - - **Scénarios** : sont une sorte spéciale de cadres qui représentent des situations complexes pouvant se dérouler dans le temps. + - **Rappresentazione a frame** si basa sulla rappresentazione di ogni oggetto o classe di oggetti come un **frame** che contiene **slot**. Gli slot hanno possibili valori predefiniti, restrizioni di valore o procedure memorizzate che possono essere chiamate per ottenere il valore di uno slot. Tutti i frame formano una gerarchia simile a una gerarchia di oggetti nei linguaggi di programmazione orientati agli oggetti. + - **Scenari** sono un tipo speciale di frame che rappresentano situazioni complesse che possono evolversi nel tempo. **Python** -Emplacement | Valeur | Valeur par défaut | Intervalle | ------|-------|---------------|----------| -Nom | Python | | | -Est-Un | Langage-Non-Typé | | | -Cas de Variable | | CamelCase | | -Longueur du Programme | | | 5-5000 lignes | -Syntaxe de Bloc | Indentation | | | +Slot | Valore | Valore predefinito | Intervallo | +-----|--------|--------------------|------------| +Nome | Python | | | +È-Un | Linguaggio non tipizzato | | | +Caso Variabile | | CamelCase | | +Lunghezza Programma | | | 5-5000 righe | +Sintassi Blocco | Indentazione | | | -3. **Représentations procédurales** : basées sur la représentation de la connaissance par une liste d'actions pouvant être exécutées lorsqu'une certaine condition se produit. - - Les règles de production sont des déclarations si-alors qui nous permettent de tirer des conclusions. Par exemple, un médecin peut avoir une règle disant que **SI** un patient a une forte fièvre **OU** un taux élevé de protéine C-réactive dans un test sanguin **ALORS** il a une inflammation. Une fois que nous rencontrons l'une des conditions, nous pouvons tirer une conclusion sur l'inflammation, puis l'utiliser dans un raisonnement ultérieur. - - Les algorithmes peuvent être considérés comme une autre forme de représentation procédurale, bien qu'ils ne soient presque jamais utilisés directement dans les systèmes basés sur la connaissance. +3. **Rappresentazioni procedurali** si basano sulla rappresentazione della conoscenza tramite un elenco di azioni che possono essere eseguite quando si verifica una certa condizione. + - Le regole di produzione sono dichiarazioni if-then che ci permettono di trarre conclusioni. Ad esempio, un medico può avere una regola che dice che **SE** un paziente ha febbre alta **O** un alto livello di proteina C-reattiva nel test del sangue **ALLORA** ha un'infiammazione. Una volta che incontriamo una delle condizioni, possiamo trarre una conclusione sull'infiammazione e poi usarla per ulteriori ragionamenti. + - Gli algoritmi possono essere considerati un'altra forma di rappresentazione procedurale, anche se quasi mai vengono utilizzati direttamente nei sistemi basati sulla conoscenza. -4. **Logique** : a été initialement proposée par Aristote comme un moyen de représenter la connaissance humaine universelle. - - La logique des prédicats, en tant que théorie mathématique, est trop riche pour être calculable, donc un sous-ensemble est normalement utilisé, comme les clauses Horn utilisées dans Prolog. - - La logique descriptive est une famille de systèmes logiques utilisés pour représenter et raisonner sur des hiérarchies d'objets et des représentations de connaissances distribuées telles que le *web sémantique*. +4. **Logica** è stata originariamente proposta da Aristotele come un modo per rappresentare la conoscenza universale umana. + - La logica predicativa come teoria matematica è troppo ricca per essere computabile, quindi normalmente viene utilizzato un sottoinsieme di essa, come le clausole di Horn utilizzate in Prolog. + - La logica descrittiva è una famiglia di sistemi logici utilizzati per rappresentare e ragionare su gerarchie di oggetti e rappresentazioni distribuite della conoscenza come il *web semantico*. -## Systèmes experts +## Sistemi esperti -L'un des premiers succès de l'IA symbolique a été les soi-disant **systèmes experts** - des systèmes informatiques conçus pour agir en tant qu'expert dans un domaine de problème limité. Ils étaient basés sur une **base de connaissances** extraite d'un ou plusieurs experts humains, et contenaient un **moteur d'inférence** qui effectuait un raisonnement sur cette base. +Uno dei primi successi dell'IA simbolica sono stati i cosiddetti **sistemi esperti** - sistemi informatici progettati per agire come esperti in un dominio di problemi limitato. Si basavano su una **base di conoscenza** estratta da uno o più esperti umani e contenevano un **motore di inferenza** che eseguiva alcuni ragionamenti su di essa. -![Architecture humaine](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.it.png) | ![Système basé sur la connaissance](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.it.png) +![Architettura umana](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.it.png) | ![Sistema basato sulla conoscenza](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.it.png) ---------------------------------------------|------------------------------------------------ -Structure simplifiée d'un système nerveux humain | Architecture d'un système basé sur la connaissance +Struttura semplificata del sistema neurale umano | Architettura di un sistema basato sulla conoscenza -Les systèmes experts sont construits comme le système de raisonnement humain, qui contient de la **mémoire à court terme** et de la **mémoire à long terme**. De même, dans les systèmes basés sur la connaissance, nous distinguons les composants suivants : +I sistemi esperti sono costruiti come il sistema di ragionamento umano, che contiene **memoria a breve termine** e **memoria a lungo termine**. Allo stesso modo, nei sistemi basati sulla conoscenza distinguiamo i seguenti componenti: -* **Mémoire de problème** : contient les connaissances sur le problème actuellement résolu, c'est-à-dire la température ou la pression artérielle d'un patient, s'il a une inflammation ou non, etc. Cette connaissance est également appelée **connaissance statique**, car elle contient un instantané de ce que nous savons actuellement sur le problème - l'état du *problème*. -* **Base de connaissances** : représente la connaissance à long terme sur un domaine de problème. Elle est extraite manuellement d'experts humains et ne change pas d'une consultation à l'autre. Parce qu'elle nous permet de naviguer d'un état de problème à un autre, elle est également appelée **connaissance dynamique**. -* **Moteur d'inférence** : orchestre tout le processus de recherche dans l'espace des états de problème, posant des questions à l'utilisateur lorsque cela est nécessaire. Il est également responsable de la recherche des bonnes règles à appliquer à chaque état. +* **Memoria del problema**: contiene la conoscenza sul problema attualmente in fase di risoluzione, ad esempio la temperatura o la pressione sanguigna di un paziente, se ha un'infiammazione o meno, ecc. Questa conoscenza è anche chiamata **conoscenza statica**, poiché contiene un'istantanea di ciò che sappiamo attualmente sul problema - il cosiddetto *stato del problema*. +* **Base di conoscenza**: rappresenta la conoscenza a lungo termine su un dominio di problemi. È estratta manualmente dagli esperti umani e non cambia da una consultazione all'altra. Poiché ci permette di navigare da uno stato del problema a un altro, è anche chiamata **conoscenza dinamica**. +* **Motore di inferenza**: orchestra l'intero processo di ricerca nello spazio dello stato del problema, ponendo domande all'utente quando necessario. È anche responsabile di trovare le regole giuste da applicare a ogni stato. -Prenons comme exemple le système expert suivant pour déterminer un animal en fonction de ses caractéristiques physiques : +Come esempio, consideriamo il seguente sistema esperto per determinare un animale basandosi sulle sue caratteristiche fisiche: -![Arbre AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.it.png) +![Albero AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.it.png) -> Image par [Dmitry Soshnikov](http://soshnikov.com) +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -Ce diagramme est appelé un **arbre AND-OR**, et c'est une représentation graphique d'un ensemble de règles de production. Dessiner un arbre est utile au début de l'extraction de connaissances de l'expert. Pour représenter les connaissances à l'intérieur de l'ordinateur, il est plus pratique d'utiliser des règles : +Questo diagramma è chiamato **albero AND-OR**, ed è una rappresentazione grafica di un insieme di regole di produzione. Disegnare un albero è utile all'inizio dell'estrazione della conoscenza dall'esperto. Per rappresentare la conoscenza all'interno del computer è più conveniente utilizzare regole: ``` IF the animal eats meat @@ -112,59 +91,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Vous pouvez remarquer que chaque condition du côté gauche de la règle et l'action sont essentiellement des triplets objet-attribut-valeur (OAV). La **mémoire de travail** contient l'ensemble des triplets OAV qui correspondent au problème actuellement résolu. Un **moteur de règles** recherche les règles pour lesquelles une condition est satisfaite et les applique, ajoutant un autre triplet à la mémoire de travail. +Puoi notare che ogni condizione sul lato sinistro della regola e l'azione sono essenzialmente triplette Oggetto-Attributo-Valore (OAV). La **memoria di lavoro** contiene l'insieme di triplette OAV che corrispondono al problema attualmente in fase di risoluzione. Un **motore di regole** cerca regole per le quali una condizione è soddisfatta e le applica, aggiungendo un'altra tripletta alla memoria di lavoro. -> ✅ Écrivez votre propre arbre AND-OR sur un sujet qui vous plaît ! +> ✅ Scrivi il tuo albero AND-OR su un argomento che ti piace! -### Inférence avant vs. Inférence arrière +### Inferenza in avanti vs. inferenza all'indietro -Le processus décrit ci-dessus est appelé **inférence avant**. Il commence avec certaines données initiales sur le problème disponibles dans la mémoire de travail, puis exécute la boucle de raisonnement suivante : +Il processo descritto sopra è chiamato **inferenza in avanti**. Inizia con alcuni dati iniziali sul problema disponibili nella memoria di lavoro e poi esegue il seguente ciclo di ragionamento: -1. Si l'attribut cible est présent dans la mémoire de travail - arrêtez et donnez le résultat -2. Recherchez toutes les règles dont la condition est actuellement satisfaite - obtenez l'**ensemble de conflits** des règles. -3. Effectuez la **résolution de conflits** - sélectionnez une règle qui sera exécutée à cette étape. Il pourrait y avoir différentes stratégies de résolution de conflits : - - Sélectionnez la première règle applicable dans la base de connaissances - - Sélectionnez une règle aléatoire - - Sélectionnez une règle *plus spécifique*, c'est-à-dire celle qui répond à la plupart des conditions dans le "côté gauche" (LHS) -4. Appliquez la règle sélectionnée et insérez un nouveau morceau de connaissance dans l'état du problème -5. Répétez à partir de l'étape 1. +1. Se l'attributo target è presente nella memoria di lavoro - fermati e fornisci il risultato +2. Cerca tutte le regole la cui condizione è attualmente soddisfatta - ottieni il **set di conflitto** delle regole. +3. Esegui la **risoluzione del conflitto** - seleziona una regola che verrà eseguita in questo passaggio. Ci potrebbero essere diverse strategie di risoluzione del conflitto: + - Seleziona la prima regola applicabile nella base di conoscenza + - Seleziona una regola casuale + - Seleziona una regola *più specifica*, cioè quella che soddisfa il maggior numero di condizioni nel "lato sinistro" (LHS) +4. Applica la regola selezionata e inserisci un nuovo pezzo di conoscenza nello stato del problema +5. Ripeti dal passo 1. -Cependant, dans certains cas, nous pourrions vouloir commencer avec une connaissance vide du problème et poser des questions qui nous aideront à arriver à la conclusion. Par exemple, lors d'un diagnostic médical, nous ne réalisons généralement pas toutes les analyses médicales à l'avance avant de commencer à diagnostiquer le patient. Nous préférons plutôt effectuer des analyses lorsqu'une décision doit être prise. +Tuttavia, in alcuni casi potremmo voler iniziare con una conoscenza vuota sul problema e porre domande che ci aiuteranno ad arrivare alla conclusione. Ad esempio, quando si effettua una diagnosi medica, di solito non eseguiamo tutte le analisi mediche in anticipo prima di iniziare a diagnosticare il paziente. Piuttosto, vogliamo eseguire analisi quando è necessario prendere una decisione. -Ce processus peut être modélisé en utilisant l'**inférence arrière**. Il est dirigé par le **but** - la valeur d'attribut que nous cherchons à trouver : +Questo processo può essere modellato utilizzando **inferenza all'indietro**. È guidato dall'**obiettivo** - il valore dell'attributo che stiamo cercando di trovare: -1. Sélectionnez toutes les règles qui peuvent nous donner la valeur d'un but (c'est-à-dire avec le but sur le RHS ("côté droit")) - un ensemble de conflits -2. S'il n'y a pas de règles pour cet attribut, ou s'il y a une règle disant que nous devons demander la valeur à l'utilisateur - demandez-la, sinon : -3. Utilisez la stratégie de résolution de conflits pour sélectionner une règle que nous utiliserons comme *hypothèse* - nous allons essayer de la prouver -4. Répétez de manière récurrente le processus pour tous les attributs dans le LHS de la règle, essayant de les prouver comme des buts -5. Si à un moment donné le processus échoue - utilisez une autre règle à l'étape 3. +1. Seleziona tutte le regole che possono fornire il valore di un obiettivo (cioè con l'obiettivo sul RHS ("lato destro")) - un set di conflitto +1. Se non ci sono regole per questo attributo, o c'è una regola che dice che dovremmo chiedere il valore all'utente - chiedilo, altrimenti: +1. Usa una strategia di risoluzione del conflitto per selezionare una regola che useremo come *ipotesi* - proveremo a dimostrarla +1. Ripeti ricorsivamente il processo per tutti gli attributi nel LHS della regola, cercando di dimostrarli come obiettivi +1. Se in qualsiasi momento il processo fallisce - usa un'altra regola al passo 3. -> ✅ Dans quelles situations l'inférence avant est-elle plus appropriée ? Et l'inférence arrière ? +> ✅ In quali situazioni è più appropriata l'inferenza in avanti? E l'inferenza all'indietro? -### Mise en œuvre des systèmes experts +### Implementazione dei sistemi esperti -Les systèmes experts peuvent être mis en œuvre à l'aide de différents outils : +I sistemi esperti possono essere implementati utilizzando diversi strumenti: -* En les programmant directement dans un langage de programmation de haut niveau. Ce n'est pas la meilleure idée, car le principal avantage d'un système basé sur la connaissance est que la connaissance est séparée de l'inférence, et potentiellement un expert du domaine du problème devrait être capable d'écrire des règles sans comprendre les détails du processus d'inférence. -* En utilisant une **coquille de systèmes experts**, c'est-à-dire un système spécifiquement conçu pour être peuplé de connaissances à l'aide d'un certain langage de représentation des connaissances. +* Programmandoli direttamente in un linguaggio di programmazione di alto livello. Questa non è la scelta migliore, poiché il principale vantaggio di un sistema basato sulla conoscenza è che la conoscenza è separata dall'inferenza, e potenzialmente un esperto del dominio del problema dovrebbe essere in grado di scrivere regole senza comprendere i dettagli del processo di inferenza. +* Utilizzando un **guscio di sistemi esperti**, cioè un sistema progettato specificamente per essere popolato di conoscenza utilizzando un linguaggio di rappresentazione della conoscenza. -## ✍️ Exercice : Inférence animale +## ✍️ Esercizio: Inferenza sugli animali -Voir [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) pour un exemple de mise en œuvre d'un système expert d'inférence avant et arrière. +Consulta [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) per un esempio di implementazione di un sistema esperto con inferenza in avanti e all'indietro. +> **Nota**: Questo esempio è piuttosto semplice e serve solo a dare un'idea di come appare un sistema esperto. Una volta che inizi a creare un sistema del genere, noterai un comportamento *intelligente* solo quando raggiungi un certo numero di regole, circa 200 o più. A un certo punto, le regole diventano troppo complesse per tenerle tutte a mente, e potresti iniziare a chiederti perché il sistema prenda determinate decisioni. Tuttavia, una caratteristica importante dei sistemi basati sulla conoscenza è che puoi sempre *spiegare* esattamente come è stata presa ciascuna decisione. +## Ontologie e il Web Semantico -> **Remarque** : Cet exemple est assez simple et ne donne qu'une idée de ce à quoi ressemble un système expert. Une fois que vous commencez à créer un tel système, vous remarquerez un comportement *intelligent* de sa part seulement lorsque vous atteindrez un certain nombre de règles, autour de 200+. À un moment donné, les règles deviennent trop complexes pour garder toutes en tête, et à ce stade, vous pourriez commencer à vous demander pourquoi un système prend certaines décisions. Cependant, la caractéristique importante des systèmes basés sur la connaissance est que vous pouvez toujours *expliquer* exactement comment l'une des décisions a été prise. +Alla fine del XX secolo, è stata avviata un'iniziativa per utilizzare la rappresentazione della conoscenza al fine di annotare le risorse Internet, rendendo possibile trovare risorse che corrispondano a query molto specifiche. Questo movimento è stato chiamato **Web Semantico** e si basava su diversi concetti: -## Ontologies et Web Sémantique +- Una rappresentazione della conoscenza speciale basata su **[logiche descrittive](https://en.wikipedia.org/wiki/Description_logic)** (DL). È simile alla rappresentazione della conoscenza a frame, poiché costruisce una gerarchia di oggetti con proprietà, ma ha una semantica logica formale e inferenza. Esiste un'intera famiglia di DL che bilanciano tra espressività e complessità algoritmica dell'inferenza. +- Una rappresentazione della conoscenza distribuita, in cui tutti i concetti sono rappresentati da un identificatore URI globale, rendendo possibile creare gerarchie di conoscenza che si estendono su Internet. +- Una famiglia di linguaggi basati su XML per la descrizione della conoscenza: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). -À la fin du 20ème siècle, il y a eu une initiative visant à utiliser la représentation des connaissances pour annoter les ressources Internet, afin qu'il soit possible de trouver des ressources correspondant à des requêtes très spécifiques. Ce mouvement a été appelé **Web Sémantique**, et il reposait sur plusieurs concepts : +Un concetto fondamentale nel Web Semantico è quello di **Ontologia**. Si riferisce a una specifica esplicita di un dominio di problema utilizzando una rappresentazione formale della conoscenza. L'ontologia più semplice può essere solo una gerarchia di oggetti in un dominio di problema, ma le ontologie più complesse includeranno regole che possono essere utilizzate per l'inferenza. -- Une représentation de connaissance spéciale basée sur les **[logiques de description](https://en.wikipedia.org/wiki/Description_logic)** (DL). Elle est similaire à la représentation de connaissance par cadre, car elle construit une hiérarchie d'objets avec des propriétés, mais elle a une sémantique logique formelle et une inférence. Il existe toute une famille de DL qui équilibre expressivité et complexité algorithmique de l'inférence. -- Représentation de connaissance distribuée, où tous les concepts sont représentés par un identifiant URI global, ce qui permet de créer des hiérarchies de connaissances qui s'étendent sur Internet. -- Une famille de langages basés sur XML pour la description des connaissances : RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). - -Un concept central du Web Sémantique est le concept d'**Ontologie**. Cela fait référence à une spécification explicite d'un domaine de problème utilisant une certaine représentation formelle des connaissances. La plus simple des ontologies peut être juste une hiérarchie d'objets dans un domaine de problème, mais des ontologies plus complexes incluront des règles qui peuvent être utilisées pour l'inférence. - -Dans le web sémantique, toutes les représentations sont basées sur des triplets. Chaque objet et chaque relation sont identifiés de manière unique par l'URI. Par exemple, si nous voulons affirmer le fait que ce curriculum IA a été développé par Dmitry Soshnikov le 1er janvier 2022 - voici les triplets que nous pouvons utiliser : +Nel Web Semantico, tutte le rappresentazioni si basano su triplette. Ogni oggetto e ogni relazione sono identificati univocamente dall'URI. Ad esempio, se vogliamo affermare che questo Curriculum di AI è stato sviluppato da Dmitry Soshnikov il 1° gennaio 2022, ecco le triplette che possiamo utilizzare: @@ -173,17 +150,17 @@ http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creati http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com ``` -> ✅ Ici `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` sont des URI bien connues et universellement acceptées pour exprimer les concepts de *créateur* et de *date de création*. +> ✅ Qui `http://www.example.com/terms/creation-date` e `http://purl.org/dc/elements/1.1/creator` sono alcuni URI ben noti e universalmente accettati per esprimere i concetti di *creatore* e *data di creazione*. -Dans un cas plus complexe, si nous voulons définir une liste de créateurs, nous pouvons utiliser certaines structures de données définies dans RDF. +In un caso più complesso, se vogliamo definire un elenco di creatori, possiamo utilizzare alcune strutture dati definite in RDF. -> Diagrammes ci-dessus par [Dmitry Soshnikov](http://soshnikov.com) +> Diagrammi sopra di [Dmitry Soshnikov](http://soshnikov.com) -Les progrès réalisés dans la construction du Web Sémantique ont été quelque peu ralentis par le succès des moteurs de recherche et des techniques de traitement du langage naturel, qui permettent d'extraire des données structurées à partir de texte. Cependant, dans certains domaines, il y a encore des efforts significatifs pour maintenir des ontologies et des bases de connaissances. Quelques projets à noter : +Il progresso nella costruzione del Web Semantico è stato in qualche modo rallentato dal successo dei motori di ricerca e delle tecniche di elaborazione del linguaggio naturale, che consentono di estrarre dati strutturati dal testo. Tuttavia, in alcune aree ci sono ancora sforzi significativi per mantenere ontologie e basi di conoscenza. Alcuni progetti degni di nota: -* [WikiData](https://wikidata.org/) est une collection de bases de connaissances lisibles par machine associées à Wikipedia. La plupart des données sont extraites des *InfoBoxes* de Wikipedia, des morceaux de contenu structuré à l'intérieur des pages Wikipedia. Vous pouvez [interroger](https://query.wikidata.org/) wikidata en SPARQL, un langage de requête spécial pour le Web Sémantique. Voici un exemple de requête qui affiche les couleurs d'yeux les plus populaires chez les humains : +* [WikiData](https://wikidata.org/) è una raccolta di basi di conoscenza leggibili dalle macchine associate a Wikipedia. La maggior parte dei dati è estratta dagli *InfoBox* di Wikipedia, pezzi di contenuto strutturato all'interno delle pagine di Wikipedia. Puoi [interrogare](https://query.wikidata.org/) WikiData in SPARQL, un linguaggio di query speciale per il Web Semantico. Ecco un esempio di query che mostra i colori degli occhi più popolari tra gli esseri umani: ```sparql #defaultView:BubbleChart @@ -197,9 +174,47 @@ WHERE GROUP BY ?eyeColorLabel ``` -* [DBpedia](https://www.dbpedia.org/) est un autre effort similaire à WikiData. +* [DBpedia](https://www.dbpedia.org/) è un altro progetto simile a WikiData. -> ✅ Si vous souhaitez expérimenter la construction de vos propres ontologies, ou ouvrir des ontologies existantes, il existe un excellent éditeur d'ontologies visuel appelé [Protégé](https://protege.stanford.edu/ +> ✅ Se vuoi sperimentare la costruzione delle tue ontologie o aprire quelle esistenti, c'è un ottimo editor visuale di ontologie chiamato [Protégé](https://protege.stanford.edu/). Scaricalo o usalo online. -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file + + +*Editor Web Protégé aperto con l'ontologia della Famiglia Romanov. Screenshot di Dmitry Soshnikov* + +## ✍️ Esercizio: Un'Ontologia Familiare + +Consulta [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) per un esempio di utilizzo delle tecniche del Web Semantico per ragionare sulle relazioni familiari. Prenderemo un albero genealogico rappresentato nel formato comune GEDCOM e un'ontologia delle relazioni familiari per costruire un grafo di tutte le relazioni familiari per un determinato insieme di individui. + +## Microsoft Concept Graph + +Nella maggior parte dei casi, le ontologie sono create con cura manualmente. Tuttavia, è anche possibile **estrarre** ontologie da dati non strutturati, ad esempio da testi in linguaggio naturale. + +Un tentativo in tal senso è stato fatto da Microsoft Research, e ha portato al [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Si tratta di una vasta raccolta di entità raggruppate utilizzando la relazione di ereditarietà `is-a`. Consente di rispondere a domande come "Cos'è Microsoft?" - la risposta potrebbe essere qualcosa come "un'azienda con probabilità 0,87 e un marchio con probabilità 0,75". + +Il grafo è disponibile sia come API REST che come un grande file di testo scaricabile che elenca tutte le coppie di entità. + +## ✍️ Esercizio: Un Concept Graph + +Prova il notebook [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) per vedere come possiamo utilizzare Microsoft Concept Graph per raggruppare articoli di notizie in diverse categorie. + +## Conclusione + +Oggi, l'AI è spesso considerata sinonimo di *Machine Learning* o *Reti Neurali*. Tuttavia, un essere umano dimostra anche un ragionamento esplicito, qualcosa che attualmente non viene gestito dalle reti neurali. Nei progetti del mondo reale, il ragionamento esplicito è ancora utilizzato per svolgere compiti che richiedono spiegazioni o la capacità di modificare il comportamento del sistema in modo controllato. + +## 🚀 Sfida + +Nel notebook sull'Ontologia Familiare associato a questa lezione, c'è l'opportunità di sperimentare altre relazioni familiari. Prova a scoprire nuove connessioni tra le persone nell'albero genealogico. + +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Revisione e Studio Autonomo + +Fai una ricerca su Internet per scoprire aree in cui gli esseri umani hanno cercato di quantificare e codificare la conoscenza. Dai un'occhiata alla Tassonomia di Bloom e torna indietro nella storia per imparare come gli esseri umani hanno cercato di dare un senso al loro mondo. Esplora il lavoro di Linneo per creare una tassonomia degli organismi e osserva come Dmitri Mendeleev ha creato un modo per descrivere e raggruppare gli elementi chimici. Quali altri esempi interessanti riesci a trovare? + +**Compito**: [Costruisci un'Ontologia](assignment.md) + +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/2-Symbolic/assignment.md b/translations/it/lessons/2-Symbolic/assignment.md index 9bfd8ff6..d8637cd3 100644 --- a/translations/it/lessons/2-Symbolic/assignment.md +++ b/translations/it/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ -# Construir una Ontología + +# Costruire un'ontologia -Construir una base de conocimientos se trata de categorizar un modelo que represente hechos sobre un tema. Elige un tema, como una persona, un lugar o un objeto, y luego construye un modelo de ese tema. Utiliza algunas de las técnicas y estrategias de construcción de modelos descritas en esta lección. Un ejemplo sería crear una ontología de una sala de estar con muebles, luces, y así sucesivamente. ¿En qué se diferencia la sala de estar de la cocina? ¿Del baño? ¿Cómo sabes que es una sala de estar y no un comedor? Utiliza [Protégé](https://protege.stanford.edu/) para construir tu ontología. +Costruire una base di conoscenza significa categorizzare un modello che rappresenta fatti su un argomento. Scegli un argomento - come una persona, un luogo o un oggetto - e poi costruisci un modello di quell'argomento. Utilizza alcune delle tecniche e strategie di costruzione del modello descritte in questa lezione. Un esempio potrebbe essere creare un'ontologia di un soggiorno con mobili, luci e così via. In che modo il soggiorno si differenzia dalla cucina? Dal bagno? Come fai a sapere che è un soggiorno e non una sala da pranzo? Usa [Protégé](https://protege.stanford.edu/) per costruire la tua ontologia. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md index 73127091..b72798f3 100644 --- a/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,52 +1,61 @@ -# Introducción a las Redes Neuronales: Perceptrón + +# Introduzione alle Reti Neurali: Perceptron -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -Uno de los primeros intentos de implementar algo similar a una red neuronal moderna fue realizado por Frank Rosenblatt del Laboratorio Aeronáutico de Cornell en 1957. Fue una implementación de hardware llamada "Mark-1", diseñada para reconocer figuras geométricas primitivas, como triángulos, cuadrados y círculos. +Uno dei primi tentativi di implementare qualcosa di simile a una rete neurale moderna fu realizzato da Frank Rosenblatt del Cornell Aeronautical Laboratory nel 1957. Si trattava di un'implementazione hardware chiamata "Mark-1", progettata per riconoscere figure geometriche primitive, come triangoli, quadrati e cerchi. | | | |--------------|-----------| -|Frank Rosenblatt | El Perceptrón Mark 1| +|Frank Rosenblatt | Il Perceptron Mark 1| -> Imágenes [de Wikipedia](https://en.wikipedia.org/wiki/Perceptron) +> Immagini [da Wikipedia](https://en.wikipedia.org/wiki/Perceptron) -Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20, por lo que la red neuronal tenía 400 entradas y una salida binaria. Una red simple contenía una neurona, también llamada **unidad lógica de umbral**. Los pesos de la red neuronal funcionaban como potenciómetros que requerían ajuste manual durante la fase de entrenamiento. +Un'immagine di input era rappresentata da una matrice di fotocellule 20x20, quindi la rete neurale aveva 400 ingressi e un'uscita binaria. Una rete semplice conteneva un solo neurone, chiamato anche **unità logica a soglia**. I pesi della rete neurale funzionavano come potenziometri che richiedevano una regolazione manuale durante la fase di addestramento. -> ✅ Un potenciómetro es un dispositivo que permite al usuario ajustar la resistencia de un circuito. +> ✅ Un potenziometro è un dispositivo che consente all'utente di regolare la resistenza di un circuito. -> El New York Times escribió sobre el perceptrón en ese momento: *el embrión de una computadora electrónica que [la Marina] espera que pueda caminar, hablar, ver, escribir, reproducirse y ser consciente de su existencia.* +> Il New York Times scrisse del perceptron in quel periodo: *l'embrione di un computer elettronico che [la Marina] si aspetta sarà in grado di camminare, parlare, vedere, scrivere, riprodursi e avere coscienza della propria esistenza.* -## Modelo de Perceptrón +## Modello del Perceptron -Supongamos que tenemos N características en nuestro modelo, en cuyo caso el vector de entrada sería un vector de tamaño N. Un perceptrón es un modelo de **clasificación binaria**, es decir, puede distinguir entre dos clases de datos de entrada. Asumiremos que para cada vector de entrada x, la salida de nuestro perceptrón será ya sea +1 o -1, dependiendo de la clase. La salida se calculará utilizando la fórmula: +Supponiamo di avere N caratteristiche nel nostro modello, nel qual caso il vettore di input sarebbe un vettore di dimensione N. Un perceptron è un modello di **classificazione binaria**, cioè può distinguere tra due classi di dati di input. Supponiamo che per ogni vettore di input x l'uscita del nostro perceptron sia +1 o -1, a seconda della classe. L'uscita sarà calcolata utilizzando la formula: y(x) = f(wTx) -donde f es una función de activación de escalón. +dove f è una funzione di attivazione a gradino -## Entrenamiento del Perceptrón +## Addestramento del Perceptron -Para entrenar un perceptrón, necesitamos encontrar un vector de pesos w que clasifique correctamente la mayoría de los valores, es decir, que resulte en el menor **error**. Este error E se define por el **criterio del perceptrón** de la siguiente manera: +Per addestrare un perceptron dobbiamo trovare un vettore di pesi w che classifichi correttamente la maggior parte dei valori, cioè che produca l'**errore** più piccolo. Questo errore E è definito dal **criterio del perceptron** nel modo seguente: E(w) = -∑wTxiti -donde: +dove: -* la suma se toma sobre aquellos puntos de datos de entrenamiento i que resultan en una clasificación incorrecta -* xi es el dato de entrada, y ti es ya sea -1 o +1 para ejemplos negativos y positivos respectivamente. +* la somma è calcolata sui punti di dati di addestramento i che risultano classificati in modo errato +* xi è il dato di input, e ti è -1 o +1 per esempi negativi e positivi rispettivamente. -Este criterio se considera como una función de los pesos w, y necesitamos minimizarlo. A menudo, se utiliza un método llamado **descenso de gradiente**, en el que comenzamos con algunos pesos iniciales w(0), y luego en cada paso actualizamos los pesos de acuerdo con la fórmula: +Questo criterio è considerato come una funzione dei pesi w, e dobbiamo minimizzarlo. Spesso si utilizza un metodo chiamato **discesa del gradiente**, in cui si parte da un insieme iniziale di pesi w(0), e poi a ogni passo si aggiornano i pesi secondo la formula: w(t+1) = w(t) - η∇E(w) -Aquí η es la llamada **tasa de aprendizaje**, y ∇E(w) denota el **gradiente** de E. Después de calcular el gradiente, terminamos con +Qui η è il cosiddetto **tasso di apprendimento**, e ∇E(w) denota il **gradiente** di E. Dopo aver calcolato il gradiente, otteniamo: w(t+1) = w(t) + ∑ηxiti -El algoritmo en Python se ve así: +L'algoritmo in Python appare così: ```python def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): @@ -68,28 +77,28 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): return weights ``` -## Conclusión +## Conclusione -En esta lección, aprendiste sobre un perceptrón, que es un modelo de clasificación binaria, y cómo entrenarlo utilizando un vector de pesos. +In questa lezione, hai appreso cos'è un perceptron, un modello di classificazione binaria, e come addestrarlo utilizzando un vettore di pesi. -## 🚀 Desafío +## 🚀 Sfida -Si deseas intentar construir tu propio perceptrón, prueba [este laboratorio en Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) que utiliza el [diseñador de Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). +Se vuoi provare a costruire il tuo perceptron, prova [questo laboratorio su Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) che utilizza il [designer di Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Para ver cómo podemos utilizar el perceptrón para resolver un problema simple así como problemas de la vida real, y para continuar aprendiendo, dirígete al cuaderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). +Per vedere come possiamo utilizzare il perceptron per risolvere un problema semplice così come problemi reali, e per continuare a imparare, vai al notebook [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). -Aquí hay un [artículo interesante sobre perceptrones](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) también. +Ecco un interessante [articolo sui perceptron](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). -## [Tarea](lab/README.md) +## [Compito](lab/README.md) -En esta lección, hemos implementado un perceptrón para la tarea de clasificación binaria, y lo hemos utilizado para clasificar entre dos dígitos manuscritos. En este laboratorio, se te pide resolver el problema de clasificación de dígitos por completo, es decir, determinar qué dígito es más probable que corresponda a una imagen dada. +In questa lezione, abbiamo implementato un perceptron per un compito di classificazione binaria e lo abbiamo utilizzato per distinguere tra due cifre scritte a mano. In questo laboratorio, ti viene chiesto di risolvere completamente il problema della classificazione delle cifre, cioè determinare quale cifra corrisponde più probabilmente a una data immagine. -* [Instrucciones](lab/README.md) -* [Cuaderno](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +* [Istruzioni](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index c1567802..48ee38f1 100644 --- a/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ -# Clasificación Multiclase con Perceptrón + +# Classificazione Multi-Classe con Perceptrone -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -Usando el código que hemos desarrollado en esta lección para la clasificación binaria de dígitos manuscritos MNIST, crea un clasificador multiclase que sea capaz de reconocer cualquier dígito. Calcula la precisión de clasificación en el conjunto de datos de entrenamiento y prueba, y muestra la matriz de confusión. +Utilizzando il codice sviluppato in questa lezione per la classificazione binaria delle cifre scritte a mano del dataset MNIST, crea un classificatore multi-classe in grado di riconoscere qualsiasi cifra. Calcola l'accuratezza della classificazione sui dataset di addestramento e di test, e stampa la matrice di confusione. -## Sugerencias +## Suggerimenti -1. Para cada dígito, crea un conjunto de datos para el clasificador binario de "este dígito vs. todos los demás dígitos". -1. Entrena 10 perceptrones diferentes para clasificación binaria (uno para cada dígito). -1. Define una función que clasifique un dígito de entrada. +1. Per ogni cifra, crea un dataset per un classificatore binario del tipo "questa cifra vs. tutte le altre cifre". +1. Addestra 10 perceptroni diversi per la classificazione binaria (uno per ogni cifra). +1. Definisci una funzione che classifichi una cifra in input. -> **Sugerencia**: Si combinamos los pesos de los 10 perceptrones en una sola matriz, deberíamos poder aplicar los 10 perceptrones a los dígitos de entrada mediante una multiplicación de matrices. El dígito más probable se puede encontrar simplemente aplicando la operación `argmax` sobre la salida. +> **Suggerimento**: Se combiniamo i pesi di tutti e 10 i perceptroni in una matrice, dovremmo essere in grado di applicare tutti e 10 i perceptroni alle cifre in input con una sola moltiplicazione di matrici. La cifra più probabile può essere trovata semplicemente applicando l'operazione `argmax` sull'output. -## Notebook Inicial +## Notebook di Partenza -Comienza el laboratorio abriendo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb). +Inizia il laboratorio aprendo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md index 118a7ae9..cfe1f407 100644 --- a/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# Introducción a las Redes Neuronales. Perceptrón Multicapa + +# Introduzione alle Reti Neurali. Perceptron Multistrato -En la sección anterior, aprendiste sobre el modelo de red neuronal más simple: el perceptrón de una sola capa, un modelo lineal de clasificación binaria. +Nella sezione precedente, hai imparato il modello di rete neurale più semplice: il perceptron a un livello, un modello lineare per la classificazione a due classi. -En esta sección, ampliaremos este modelo a un marco más flexible, que nos permitirá: +In questa sezione estenderemo questo modello in un framework più flessibile, che ci permetterà di: -* realizar **clasificación multiclase** además de la clasificación binaria -* resolver **problemas de regresión** además de la clasificación -* separar clases que no son linealmente separables +* eseguire la **classificazione multi-classe** oltre alla classificazione a due classi +* risolvere problemi di **regressione** oltre alla classificazione +* separare classi che non sono linearmente separabili -También desarrollaremos nuestro propio marco modular en Python que nos permitirá construir diferentes arquitecturas de redes neuronales. +Svilupperemo anche un framework modulare in Python che ci consentirà di costruire diverse architetture di reti neurali. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) -## Formalización del Aprendizaje Automático +## Formalizzazione del Machine Learning -Comencemos formalizando el problema del Aprendizaje Automático. Supongamos que tenemos un conjunto de datos de entrenamiento **X** con etiquetas **Y**, y necesitamos construir un modelo *f* que realice las predicciones más precisas. La calidad de las predicciones se mide mediante la **función de pérdida** ℒ. Las siguientes funciones de pérdida son las más utilizadas: +Iniziamo formalizzando il problema del Machine Learning. Supponiamo di avere un dataset di addestramento **X** con etichette **Y**, e dobbiamo costruire un modello *f* che produca le previsioni più accurate. La qualità delle previsioni viene misurata dalla **funzione di perdita** ℒ. Le seguenti funzioni di perdita sono spesso utilizzate: -* Para problemas de regresión, cuando necesitamos predecir un número, podemos usar el **error absoluto** ∑i|f(x(i))-y(i)|, o el **error cuadrático** ∑i(f(x(i))-y(i))2 -* Para la clasificación, usamos la **pérdida 0-1** (que es esencialmente lo mismo que la **precisión** del modelo), o la **pérdida logística**. +* Per problemi di regressione, quando dobbiamo prevedere un numero, possiamo usare **errore assoluto** ∑i|f(x(i))-y(i)|, o **errore quadratico** ∑i(f(x(i))-y(i))2 +* Per la classificazione, utilizziamo **0-1 loss** (che è essenzialmente lo stesso dell'**accuratezza** del modello), o **logistic loss**. -Para el perceptrón de una sola capa, la función *f* se definió como una función lineal *f(x)=wx+b* (donde *w* es la matriz de pesos, *x* es el vector de características de entrada y *b* es el vector de sesgo). Para diferentes arquitecturas de redes neuronales, esta función puede adoptar una forma más compleja. +Per il perceptron a un livello, la funzione *f* era definita come una funzione lineare *f(x)=wx+b* (qui *w* è la matrice dei pesi, *x* è il vettore delle caratteristiche di input, e *b* è il vettore di bias). Per diverse architetture di reti neurali, questa funzione può assumere una forma più complessa. -> En el caso de la clasificación, a menudo es deseable obtener probabilidades de las clases correspondientes como salida de la red. Para convertir números arbitrarios en probabilidades (por ejemplo, para normalizar la salida), a menudo usamos la función **softmax** σ, y la función *f* se convierte en *f(x)=σ(wx+b)* +> Nel caso della classificazione, è spesso desiderabile ottenere le probabilità delle classi corrispondenti come output della rete. Per convertire numeri arbitrari in probabilità (ad esempio per normalizzare l'output), utilizziamo spesso la funzione **softmax** σ, e la funzione *f* diventa *f(x)=σ(wx+b)* -En la definición de *f* anterior, *w* y *b* se denominan **parámetros** θ=⟨*w,b*⟩. Dado el conjunto de datos ⟨**X**,**Y**⟩, podemos calcular un error general en todo el conjunto de datos como una función de los parámetros θ. +Nella definizione di *f* sopra, *w* e *b* sono chiamati **parametri** θ=⟨*w,b*⟩. Dato il dataset ⟨**X**,**Y**⟩, possiamo calcolare un errore complessivo sull'intero dataset come funzione dei parametri θ. -> ✅ **El objetivo del entrenamiento de la red neuronal es minimizar el error variando los parámetros θ** +> ✅ **L'obiettivo dell'addestramento della rete neurale è minimizzare l'errore variando i parametri θ** -## Optimización por Descenso de Gradiente +## Ottimizzazione con Discesa del Gradiente -Hay un método bien conocido de optimización de funciones llamado **descenso de gradiente**. La idea es que podemos calcular una derivada (en el caso multidimensional, llamada **gradiente**) de la función de pérdida con respecto a los parámetros, y variar los parámetros de tal manera que el error disminuya. Esto se puede formalizar de la siguiente manera: +Esiste un metodo ben noto per l'ottimizzazione delle funzioni chiamato **discesa del gradiente**. L'idea è che possiamo calcolare una derivata (nel caso multidimensionale chiamata **gradiente**) della funzione di perdita rispetto ai parametri, e variare i parametri in modo tale che l'errore diminuisca. Questo può essere formalizzato come segue: -* Inicializa los parámetros con algunos valores aleatorios w(0), b(0) -* Repite el siguiente paso muchas veces: +* Inizializzare i parametri con alcuni valori casuali w(0), b(0) +* Ripetere il seguente passo molte volte: - w(i+1) = w(i)-η∂ℒ/∂w - b(i+1) = b(i)-η∂ℒ/∂b -Durante el entrenamiento, se supone que los pasos de optimización se calculan considerando todo el conjunto de datos (recuerda que la pérdida se calcula como una suma a través de todas las muestras de entrenamiento). Sin embargo, en la práctica, tomamos pequeñas porciones del conjunto de datos llamadas **minibatches**, y calculamos gradientes basados en un subconjunto de datos. Dado que el subconjunto se toma aleatoriamente cada vez, este método se llama **descenso de gradiente estocástico** (SGD). +Durante l'addestramento, i passi di ottimizzazione dovrebbero essere calcolati considerando l'intero dataset (ricorda che la perdita è calcolata come somma su tutti i campioni di addestramento). Tuttavia, nella pratica prendiamo piccole porzioni del dataset chiamate **minibatch**, e calcoliamo i gradienti basandoci su un sottoinsieme di dati. Poiché il sottoinsieme viene preso casualmente ogni volta, tale metodo è chiamato **discesa del gradiente stocastica** (SGD). -## Perceptrones Multicapa y Retropropagación +## Perceptron Multistrato e Backpropagation -La red de una sola capa, como hemos visto anteriormente, es capaz de clasificar clases que son linealmente separables. Para construir un modelo más rico, podemos combinar varias capas de la red. Matemáticamente, esto significaría que la función *f* tendría una forma más compleja y se calcularía en varios pasos: +La rete a un livello, come abbiamo visto sopra, è in grado di classificare classi linearmente separabili. Per costruire un modello più ricco, possiamo combinare diversi livelli della rete. Matematicamente ciò significherebbe che la funzione *f* avrebbe una forma più complessa e verrebbe calcolata in diversi passaggi: * z1=w1x+b1 * z2=w2α(z1)+b2 * f = σ(z2) -Aquí, α es una **función de activación no lineal**, σ es una función softmax y los parámetros θ=<*w1,b1,w2,b2*. +Qui, α è una **funzione di attivazione non lineare**, σ è una funzione softmax, e i parametri θ=<*w1,b1,w2,b2*>. -El algoritmo de descenso de gradiente seguiría siendo el mismo, pero sería más difícil calcular los gradientes. Dada la regla de diferenciación en cadena, podemos calcular derivadas como: +L'algoritmo di discesa del gradiente rimarrebbe lo stesso, ma sarebbe più difficile calcolare i gradienti. Dato il principio della derivazione a catena, possiamo calcolare le derivate come: * ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) * ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ La regla de diferenciación en cadena se utiliza para calcular las derivadas de la función de pérdida con respecto a los parámetros. +> ✅ La regola della derivazione a catena viene utilizzata per calcolare le derivate della funzione di perdita rispetto ai parametri. -Ten en cuenta que la parte más a la izquierda de todas esas expresiones es la misma, y así podemos calcular efectivamente las derivadas comenzando desde la función de pérdida y yendo "hacia atrás" a través del gráfico computacional. Así, el método de entrenamiento de un perceptrón multicapa se llama **retropropagación**, o 'backprop'. +Nota che la parte più a sinistra di tutte queste espressioni è la stessa, e quindi possiamo calcolare efficacemente le derivate partendo dalla funzione di perdita e andando "indietro" attraverso il grafo computazionale. Pertanto, il metodo di addestramento di un perceptron multistrato è chiamato **backpropagation**, o 'backprop'. -gráfico computacional +compute graph -> TODO: cita de imagen +> TODO: citazione immagine -> ✅ Cubriremos la retropropagación con mucho más detalle en nuestro ejemplo de cuaderno. +> ✅ Approfondiremo il backpropagation in modo molto più dettagliato nel nostro esempio nel notebook. -## Conclusión +## Conclusione -En esta lección, hemos construido nuestra propia biblioteca de redes neuronales y la hemos utilizado para una tarea simple de clasificación bidimensional. +In questa lezione, abbiamo costruito la nostra libreria di reti neurali e l'abbiamo utilizzata per un semplice compito di classificazione bidimensionale. -## 🚀 Desafío +## 🚀 Sfida -En el cuaderno adjunto, implementarás tu propio marco para construir y entrenar perceptrones multicapa. Podrás ver en detalle cómo operan las redes neuronales modernas. +Nel notebook allegato, implementerai il tuo framework per costruire e addestrare perceptron multistrato. Potrai vedere in dettaglio come operano le reti neurali moderne. -Procede al cuaderno [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) y trabaja en él. +Procedi al notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) e segui le istruzioni. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## Revisión y Autoestudio +## Revisione e Studio Autonomo -La retropropagación es un algoritmo comúnmente utilizado en IA y ML, vale la pena estudiarlo [con más detalle](https://wikipedia.org/wiki/Backpropagation) +Il backpropagation è un algoritmo comune utilizzato in AI e ML, vale la pena studiarlo [in modo più dettagliato](https://wikipedia.org/wiki/Backpropagation) -## [Tarea](lab/README.md) +## [Compito](lab/README.md) -En este laboratorio, se te pide que utilices el marco que construiste en esta lección para resolver la clasificación de dígitos manuscritos de MNIST. +In questo laboratorio, ti viene chiesto di utilizzare il framework che hai costruito in questa lezione per risolvere la classificazione delle cifre scritte a mano MNIST. -* [Instrucciones](lab/README.md) -* [Cuaderno](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +* [Istruzioni](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index 154de262..ff95e60a 100644 --- a/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ -# Clasificación MNIST con Nuestro Propio Marco + +# Classificazione MNIST con il Nostro Framework -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI per Principianti](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -Resuelve el problema de clasificación de dígitos manuscritos MNIST utilizando perceptrones de 1, 2 y 3 capas. Utiliza el marco de red neuronal que hemos desarrollado en la lección. +Risolvi il problema di classificazione delle cifre scritte a mano di MNIST utilizzando un percettrone a 1, 2 e 3 strati. Usa il framework per reti neurali che abbiamo sviluppato durante la lezione. -## Inicio del Notebook +## Notebook di Partenza -Comienza el laboratorio abriendo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +Inizia il laboratorio aprendo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) -## Preguntas +## Domande -Como resultado de este laboratorio, intenta responder las siguientes preguntas: +Come risultato di questo laboratorio, prova a rispondere alle seguenti domande: -- ¿Afecta la función de activación entre capas al rendimiento de la red? -- ¿Necesitamos una red de 2 o 3 capas para esta tarea? -- ¿Tuviste algún problema al entrenar la red? Especialmente a medida que aumentaba el número de capas. -- ¿Cómo se comportan los pesos de la red durante el entrenamiento? Puedes graficar el valor absoluto máximo de los pesos frente a la época para entender la relación. +- La funzione di attivazione tra gli strati influisce sulle prestazioni della rete? +- È necessario utilizzare una rete a 2 o 3 strati per questo compito? +- Hai riscontrato problemi nell'addestrare la rete? Soprattutto con l'aumentare del numero di strati. +- Come si comportano i pesi della rete durante l'addestramento? Puoi tracciare il valore massimo assoluto dei pesi rispetto alle epoche per comprendere la relazione. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md index c4aa8b7b..e4ccafff 100644 --- a/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,123 +1,132 @@ -# Frameworks de Redes Neurais + +# Framework per Reti Neurali -Como já aprendemos, para treinar redes neurais de forma eficiente, precisamos fazer duas coisas: +Come abbiamo già appreso, per addestrare reti neurali in modo efficiente dobbiamo fare due cose: -* Operar em tensores, por exemplo, multiplicar, adicionar e calcular algumas funções como sigmoid ou softmax -* Calcular gradientes de todas as expressões, a fim de realizar a otimização por descida de gradiente +* Operare sui tensori, ad esempio moltiplicare, sommare e calcolare alcune funzioni come sigmoid o softmax. +* Calcolare i gradienti di tutte le espressioni, per eseguire l'ottimizzazione tramite discesa del gradiente. -## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -Enquanto a biblioteca `numpy` pode realizar a primeira parte, precisamos de algum mecanismo para calcular gradientes. No [nosso framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desenvolvemos na seção anterior, tivemos que programar manualmente todas as funções derivadas dentro do método `backward`, que realiza a retropropagação. Idealmente, um framework deve nos oferecer a oportunidade de calcular gradientes de *qualquer expressão* que possamos definir. +Mentre la libreria `numpy` può occuparsi della prima parte, abbiamo bisogno di un meccanismo per calcolare i gradienti. Nel [nostro framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) che abbiamo sviluppato nella sezione precedente, abbiamo dovuto programmare manualmente tutte le funzioni derivate all'interno del metodo `backward`, che esegue la retropropagazione. Idealmente, un framework dovrebbe offrirci la possibilità di calcolare i gradienti di *qualsiasi espressione* che possiamo definire. -Outra coisa importante é ser capaz de realizar cálculos em GPU ou em outras unidades de computação especializadas, como o [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). O treinamento de redes neurais profundas exige *muitos* cálculos, e a capacidade de paralelizar esses cálculos em GPUs é muito importante. +Un altro aspetto importante è la capacità di eseguire calcoli su GPU o altre unità di calcolo specializzate, come [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). L'addestramento di reti neurali profonde richiede *molti* calcoli, e poter parallelizzare questi calcoli sulle GPU è fondamentale. -> ✅ O termo 'paralelizar' significa distribuir os cálculos entre vários dispositivos. +> ✅ Il termine 'parallelizzare' significa distribuire i calcoli su più dispositivi. -Atualmente, os dois frameworks de redes neurais mais populares são: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Ambos fornecem uma API de baixo nível para operar com tensores tanto em CPU quanto em GPU. Além da API de baixo nível, também existe uma API de nível superior, chamada [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. +Attualmente, i due framework per reti neurali più popolari sono: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Entrambi forniscono un'API di basso livello per operare con tensori sia su CPU che su GPU. Sopra l'API di basso livello, esiste anche un'API di alto livello, chiamata rispettivamente [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/). -API de Baixo Nível | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) --------------------|-------------------------------------|-------------------------------- -API de Alto Nível | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +API di basso livello | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +----------------------|-------------------------------------|-------------------------------- +API di alto livello | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**APIs de baixo nível** em ambos os frameworks permitem que você construa os chamados **gráficos computacionais**. Este gráfico define como calcular a saída (geralmente a função de perda) com parâmetros de entrada dados, e pode ser enviado para computação na GPU, se disponível. Existem funções para diferenciar esse gráfico computacional e calcular gradientes, que podem então ser usados para otimizar os parâmetros do modelo. +Le **API di basso livello** in entrambi i framework consentono di costruire i cosiddetti **grafi computazionali**. Questo grafo definisce come calcolare l'output (di solito la funzione di perdita) con i parametri di input forniti e può essere inviato per il calcolo su GPU, se disponibile. Esistono funzioni per differenziare questo grafo computazionale e calcolare i gradienti, che possono poi essere utilizzati per ottimizzare i parametri del modello. -**APIs de alto nível** consideram essencialmente redes neurais como uma **sequência de camadas**, tornando a construção da maioria das redes neurais muito mais fácil. O treinamento do modelo geralmente requer a preparação dos dados e, em seguida, a chamada de uma função `fit` para realizar a tarefa. +Le **API di alto livello** considerano le reti neurali come una **sequenza di livelli**, rendendo molto più semplice la costruzione della maggior parte delle reti neurali. L'addestramento del modello di solito richiede la preparazione dei dati e poi la chiamata a una funzione `fit` per eseguire il lavoro. -A API de alto nível permite que você construa redes neurais típicas rapidamente, sem se preocupar com muitos detalhes. Ao mesmo tempo, a API de baixo nível oferece muito mais controle sobre o processo de treinamento, e, portanto, é muito utilizada em pesquisas, quando você está lidando com novas arquiteturas de redes neurais. +L'API di alto livello consente di costruire reti neurali tipiche molto rapidamente senza preoccuparsi di molti dettagli. Allo stesso tempo, l'API di basso livello offre un controllo molto maggiore sul processo di addestramento, ed è quindi molto utilizzata nella ricerca, quando si lavora con nuove architetture di reti neurali. -É também importante entender que você pode usar ambas as APIs juntas, por exemplo, você pode desenvolver sua própria arquitetura de camada de rede usando a API de baixo nível e, em seguida, usá-la dentro da rede maior construída e treinada com a API de alto nível. Ou você pode definir uma rede usando a API de alto nível como uma sequência de camadas e, em seguida, usar seu próprio loop de treinamento de baixo nível para realizar a otimização. Ambas as APIs utilizam os mesmos conceitos básicos subjacentes e são projetadas para funcionar bem juntas. +È anche importante capire che è possibile utilizzare entrambe le API insieme, ad esempio si può sviluppare la propria architettura di livello di rete utilizzando l'API di basso livello e poi utilizzarla all'interno di una rete più grande costruita e addestrata con l'API di alto livello. Oppure si può definire una rete utilizzando l'API di alto livello come una sequenza di livelli e poi utilizzare il proprio ciclo di addestramento di basso livello per eseguire l'ottimizzazione. Entrambe le API utilizzano gli stessi concetti di base e sono progettate per funzionare bene insieme. -## Aprendizado +## Apprendimento -Neste curso, oferecemos a maior parte do conteúdo tanto para PyTorch quanto para TensorFlow. Você pode escolher seu framework preferido e apenas percorrer os notebooks correspondentes. Se você não tiver certeza de qual framework escolher, leia algumas discussões na internet sobre **PyTorch vs. TensorFlow**. Você também pode dar uma olhada em ambos os frameworks para obter uma melhor compreensão. +In questo corso, offriamo la maggior parte dei contenuti sia per PyTorch che per TensorFlow. Puoi scegliere il framework che preferisci e seguire solo i notebook corrispondenti. Se non sei sicuro di quale framework scegliere, leggi alcune discussioni online su **PyTorch vs. TensorFlow**. Puoi anche dare un'occhiata a entrambi i framework per comprenderli meglio. -Sempre que possível, usaremos APIs de Alto Nível por uma questão de simplicidade. No entanto, acreditamos que é importante entender como as redes neurais funcionam desde o início, portanto, no começo, começamos trabalhando com a API de baixo nível e tensores. Contudo, se você quiser avançar rapidamente e não quiser passar muito tempo aprendendo esses detalhes, pode pular essas partes e ir direto para os notebooks da API de alto nível. +Dove possibile, utilizzeremo le API di alto livello per semplicità. Tuttavia, riteniamo importante capire come funzionano le reti neurali dalle basi, quindi all'inizio iniziamo lavorando con l'API di basso livello e i tensori. Tuttavia, se vuoi iniziare rapidamente e non vuoi dedicare troppo tempo a imparare questi dettagli, puoi saltare questa parte e passare direttamente ai notebook con le API di alto livello. -## ✍️ Exercícios: Frameworks +## ✍️ Esercizi: Framework -Continue seu aprendizado nos seguintes notebooks: +Continua il tuo apprendimento nei seguenti notebook: -API de Baixo Nível | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) --------------------|-------------------------------------|-------------------------------- -API de Alto Nível | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +API di basso livello | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +----------------------|-------------------------------------|-------------------------------- +API di alto livello | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -Após dominar os frameworks, vamos recapitular a noção de sobreajuste. +Dopo aver padroneggiato i framework, ricapitoliamo il concetto di overfitting. -# Sobreajuste +# Overfitting -O sobreajuste é um conceito extremamente importante em aprendizado de máquina, e é crucial compreendê-lo corretamente! +L'overfitting è un concetto estremamente importante nel machine learning, ed è fondamentale comprenderlo correttamente! -Considere o seguinte problema de aproximar 5 pontos (representados por `x` nos gráficos abaixo): +Considera il seguente problema di approssimazione di 5 punti (rappresentati da `x` nei grafici sottostanti): ![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.it.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.it.jpg) -------------------------|-------------------------- -**Modelo linear, 2 parâmetros** | **Modelo não-linear, 7 parâmetros** -Erro de treinamento = 5.3 | Erro de validação = 0 -Erro de validação = 5.1 | Erro de validação = 20 +**Modello lineare, 2 parametri** | **Modello non lineare, 7 parametri** +Errore di addestramento = 5.3 | Errore di addestramento = 0 +Errore di validazione = 5.1 | Errore di validazione = 20 -* À esquerda, vemos uma boa aproximação de linha reta. Como o número de parâmetros é adequado, o modelo compreende bem a distribuição dos pontos. -* À direita, o modelo é muito poderoso. Como temos apenas 5 pontos e o modelo possui 7 parâmetros, ele pode se ajustar de tal forma a passar por todos os pontos, fazendo com que o erro de treinamento seja 0. No entanto, isso impede que o modelo entenda o padrão correto por trás dos dados, resultando em um erro de validação muito alto. +* A sinistra, vediamo una buona approssimazione con una linea retta. Poiché il numero di parametri è adeguato, il modello coglie correttamente la distribuzione dei punti. +* A destra, il modello è troppo potente. Poiché abbiamo solo 5 punti e il modello ha 7 parametri, può adattarsi in modo da passare attraverso tutti i punti, portando l'errore di addestramento a 0. Tuttavia, ciò impedisce al modello di comprendere il pattern corretto nei dati, causando un errore di validazione molto alto. -É muito importante encontrar um equilíbrio adequado entre a complexidade do modelo (número de parâmetros) e o número de amostras de treinamento. +È molto importante trovare il giusto equilibrio tra la complessità del modello (numero di parametri) e il numero di campioni di addestramento. -## Por que o sobreajuste ocorre +## Perché si verifica l'overfitting - * Dados de treinamento insuficientes - * Modelo excessivamente poderoso - * Muito ruído nos dados de entrada + * Dati di addestramento insufficienti + * Modello troppo potente + * Troppo rumore nei dati di input -## Como detectar o sobreajuste +## Come rilevare l'overfitting -Como você pode ver no gráfico acima, o sobreajuste pode ser detectado por um erro de treinamento muito baixo e um erro de validação alto. Normalmente, durante o treinamento, observamos ambos os erros de treinamento e validação começando a diminuir, e então, em algum momento, o erro de validação pode parar de diminuir e começar a aumentar. Isso será um sinal de sobreajuste e um indicativo de que devemos provavelmente parar o treinamento neste ponto (ou pelo menos fazer uma captura do modelo). +Come puoi vedere dal grafico sopra, l'overfitting può essere rilevato da un errore di addestramento molto basso e un errore di validazione molto alto. Normalmente, durante l'addestramento vedremo sia l'errore di addestramento che quello di validazione diminuire, ma a un certo punto l'errore di validazione potrebbe smettere di diminuire e iniziare a salire. Questo sarà un segnale di overfitting e un indicatore che probabilmente dovremmo interrompere l'addestramento a questo punto (o almeno salvare uno snapshot del modello). ![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.it.png) -## Como prevenir o sobreajuste +## Come prevenire l'overfitting -Se você perceber que o sobreajuste está ocorrendo, pode fazer uma das seguintes ações: +Se noti che si verifica l'overfitting, puoi fare una delle seguenti cose: - * Aumentar a quantidade de dados de treinamento - * Diminuir a complexidade do modelo - * Utilizar alguma [técnica de regularização](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos mais adiante. + * Aumentare la quantità di dati di addestramento. + * Ridurre la complessità del modello. + * Utilizzare qualche [tecnica di regolarizzazione](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), come [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), che considereremo più avanti. -## Sobreajuste e a Troca de Viés-Variância +## Overfitting e Tradeoff Bias-Varianza -O sobreajuste é, na verdade, um caso de um problema mais genérico em estatísticas chamado [Troca de Viés-Variância](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se considerarmos as possíveis fontes de erro em nosso modelo, podemos observar dois tipos de erros: +L'overfitting è in realtà un caso di un problema più generale in statistica chiamato [Tradeoff Bias-Varianza](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se consideriamo le possibili fonti di errore nel nostro modello, possiamo distinguere due tipi di errori: -* **Erros de viés** são causados pelo fato de nosso algoritmo não conseguir capturar corretamente a relação entre os dados de treinamento. Isso pode resultar do fato de nosso modelo não ser poderoso o suficiente (**subajuste**). -* **Erros de variância**, que são causados pelo modelo aproximar o ruído nos dados de entrada em vez de uma relação significativa (**sobreajuste**). +* **Errori di bias**, causati dal fatto che il nostro algoritmo non riesce a catturare correttamente la relazione nei dati di addestramento. Questo può derivare dal fatto che il nostro modello non è abbastanza potente (**underfitting**). +* **Errori di varianza**, causati dal modello che approssima il rumore nei dati di input invece di una relazione significativa (**overfitting**). -Durante o treinamento, o erro de viés diminui (à medida que nosso modelo aprende a aproximar os dados), e o erro de variância aumenta. É importante parar o treinamento - seja manualmente (quando detectamos sobreajuste) ou automaticamente (introduzindo regularização) - para evitar o sobreajuste. +Durante l'addestramento, l'errore di bias diminuisce (poiché il nostro modello impara ad approssimare i dati), mentre l'errore di varianza aumenta. È importante interrompere l'addestramento - manualmente (quando rileviamo l'overfitting) o automaticamente (introducendo la regolarizzazione) - per prevenire l'overfitting. -## Conclusão +## Conclusione -Nesta lição, você aprendeu sobre as diferenças entre as várias APIs dos dois frameworks de IA mais populares, TensorFlow e PyTorch. Além disso, você aprendeu sobre um tópico muito importante, o sobreajuste. +In questa lezione, hai appreso le differenze tra le varie API dei due framework di intelligenza artificiale più popolari, TensorFlow e PyTorch. Inoltre, hai appreso un argomento molto importante: l'overfitting. -## 🚀 Desafio +## 🚀 Sfida -Nos notebooks acompanhantes, você encontrará 'tarefas' na parte inferior; trabalhe pelos notebooks e complete as tarefas. +Nei notebook allegati, troverai dei 'compiti' alla fine; lavora attraverso i notebook e completa i compiti. -## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) -## Revisão e Autoestudo +## Revisione e Studio Autonomo -Faça uma pesquisa sobre os seguintes tópicos: +Fai delle ricerche sui seguenti argomenti: - TensorFlow - PyTorch -- Sobreajuste +- Overfitting -Pergunte a si mesmo as seguintes questões: +Poniti le seguenti domande: -- Qual é a diferença entre TensorFlow e PyTorch? -- Qual é a diferença entre sobreajuste e subajuste? +- Qual è la differenza tra TensorFlow e PyTorch? +- Qual è la differenza tra overfitting e underfitting? -## [Tarefa](lab/README.md) +## [Compito](lab/README.md) -Neste laboratório, você é solicitado a resolver dois problemas de classificação usando redes totalmente conectadas de uma e várias camadas, utilizando PyTorch ou TensorFlow. +In questo laboratorio, ti viene chiesto di risolvere due problemi di classificazione utilizzando reti completamente connesse a uno o più strati, utilizzando PyTorch o TensorFlow. -* [Instruções](lab/README.md) +* [Istruzioni](lab/README.md) * [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 7109b0d8..d83fe116 100644 --- a/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ -# Clasificación con PyTorch/TensorFlow + +# Classificazione con PyTorch/TensorFlow -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -Resuelve dos problemas de clasificación utilizando redes completamente conectadas de una y varias capas con PyTorch o TensorFlow: +Risolvi due problemi di classificazione utilizzando reti completamente connesse a uno o più strati con PyTorch o TensorFlow: -1. Problema de **[clasificación de iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un ejemplo de un problema con datos de entrada tabulares, que puede ser abordado por el aprendizaje automático clásico. Tu objetivo será clasificar los iris en 3 clases, basándote en 4 parámetros numéricos. -2. Problema de clasificación de dígitos manuscritos **MNIST** que ya hemos visto anteriormente. +1. Problema di **[classificazione dell'Iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un esempio di problema con dati di input tabellari, che può essere gestito con il machine learning classico. Il tuo obiettivo sarà classificare i fiori di iris in 3 classi, basandoti su 4 parametri numerici. +2. Problema di classificazione delle cifre scritte a mano **MNIST**, che abbiamo già visto in precedenza. -Prueba diferentes arquitecturas de red para lograr la mejor precisión posible. +Prova diverse architetture di rete per ottenere la migliore accuratezza possibile. -## Iniciando el Notebook +## Notebook di Partenza -Comienza el laboratorio abriendo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb). +Inizia il laboratorio aprendo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si consiglia una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/README.md b/translations/it/lessons/3-NeuralNetworks/README.md index 3c33eff8..0149af67 100644 --- a/translations/it/lessons/3-NeuralNetworks/README.md +++ b/translations/it/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ -# Introducción a las Redes Neuronales + +# Introduzione alle Reti Neurali -![Resumen del contenido de Introducción a las Redes Neuronales en un doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.it.png) +![Riassunto del contenuto di Introduzione alle Reti Neurali in uno schizzo](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.it.png) -Como discutimos en la introducción, una de las formas de alcanzar la inteligencia es entrenar un **modelo computacional** o un **cerebro artificial**. Desde mediados del siglo XX, los investigadores han probado diferentes modelos matemáticos, hasta que en años recientes esta dirección ha demostrado ser enormemente exitosa. Estos modelos matemáticos del cerebro se conocen como **redes neuronales**. +Come discusso nell'introduzione, uno dei modi per raggiungere l'intelligenza è addestrare un **modello computazionale** o un **cervello artificiale**. Dalla metà del XX secolo, i ricercatori hanno provato diversi modelli matematici, fino a quando negli ultimi anni questa direzione si è dimostrata estremamente promettente. Questi modelli matematici del cervello sono chiamati **reti neurali**. -> A veces, las redes neuronales se llaman *Redes Neuronales Artificiales*, ANNs, para indicar que estamos hablando de modelos, no de redes reales de neuronas. +> A volte le reti neurali vengono chiamate *Reti Neurali Artificiali*, ANNs, per indicare che stiamo parlando di modelli, non di reti reali di neuroni. -## Aprendizaje Automático +## Apprendimento Automatico -Las Redes Neuronales son parte de una disciplina más amplia llamada **Aprendizaje Automático**, cuyo objetivo es utilizar datos para entrenar modelos computacionales que sean capaces de resolver problemas. El Aprendizaje Automático constituye una gran parte de la Inteligencia Artificial; sin embargo, no cubrimos el aprendizaje automático clásico en este currículo. +Le reti neurali fanno parte di una disciplina più ampia chiamata **Apprendimento Automatico**, il cui obiettivo è utilizzare i dati per addestrare modelli computazionali in grado di risolvere problemi. L'apprendimento automatico costituisce una grande parte dell'Intelligenza Artificiale, tuttavia, non trattiamo l'apprendimento automatico classico in questo curriculum. -> Visita nuestro currículo separado de **[Aprendizaje Automático para Principiantes](http://github.com/microsoft/ml-for-beginners)** para aprender más sobre el aprendizaje automático clásico. +> Visita il nostro curriculum separato **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** per saperne di più sull'apprendimento automatico classico. -En el Aprendizaje Automático, asumimos que tenemos un conjunto de datos de ejemplos **X**, y los valores de salida correspondientes **Y**. Los ejemplos son a menudo vectores N-dimensionales que consisten en **características**, y las salidas se llaman **etiquetas**. +Nell'apprendimento automatico, assumiamo di avere un dataset di esempi **X** e i corrispondenti valori di output **Y**. Gli esempi sono spesso vettori N-dimensionali che consistono in **caratteristiche**, e gli output sono chiamati **etichette**. -Consideraremos los dos problemas más comunes en el aprendizaje automático: +Considereremo i due problemi più comuni dell'apprendimento automatico: -* **Clasificación**, donde necesitamos clasificar un objeto de entrada en dos o más clases. -* **Regresión**, donde necesitamos predecir un número numérico para cada una de las muestras de entrada. +* **Classificazione**, dove dobbiamo classificare un oggetto di input in due o più classi. +* **Regressione**, dove dobbiamo prevedere un valore numerico per ciascun campione di input. -> Al representar las entradas y salidas como tensores, el conjunto de datos de entrada es una matriz de tamaño M×N, donde M es el número de muestras y N es el número de características. Las etiquetas de salida Y son el vector de tamaño M. +> Quando rappresentiamo gli input e gli output come tensori, il dataset di input è una matrice di dimensioni M×N, dove M è il numero di campioni e N è il numero di caratteristiche. Le etichette di output Y sono un vettore di dimensioni M. -En este currículo, nos enfocaremos únicamente en los modelos de redes neuronales. +In questo curriculum, ci concentreremo solo sui modelli di reti neurali. -## Un Modelo de Neurona +## Un Modello di Neurone -Desde la biología sabemos que nuestro cerebro está compuesto por células neuronales, cada una de ellas con múltiples "entradas" (axones) y una salida (dendrita). Los axones y dendritas pueden conducir señales eléctricas, y las conexiones entre axones y dendritas pueden exhibir diferentes grados de conductividad (controlados por neuromediadores). +Dalla biologia sappiamo che il nostro cervello è composto da cellule neuronali, ognuna delle quali ha molteplici "input" (assoni) e un output (dendrite). Gli assoni e i dendriti possono condurre segnali elettrici, e le connessioni tra assoni e dendriti possono mostrare diversi gradi di conduttività (controllati dai neuromediatori). -![Modelo de una Neurona](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.it.jpg) | ![Modelo de una Neurona](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.it.png) +![Modello di un Neurone](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.it.jpg) | ![Modello di un Neurone](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.it.png) ----|---- -Neurona Real *([Imagen](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) de Wikipedia)* | Neurona Artificial *(Imagen del Autor)* +Neurone Reale *([Immagine](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) da Wikipedia)* | Neurone Artificiale *(Immagine dell'Autore)* -Así, el modelo matemático más simple de una neurona contiene varias entradas X1, ..., XN y una salida Y, junto con una serie de pesos W1, ..., WN. La salida se calcula como: +Pertanto, il modello matematico più semplice di un neurone contiene diversi input X1, ..., XN e un output Y, e una serie di pesi W1, ..., WN. L'output viene calcolato come: Y = f\left(\sum_{i=1}^N X_iW_i\right) -donde f es alguna **función de activación** no lineal. +dove f è una **funzione di attivazione** non lineare. -> Los primeros modelos de neuronas fueron descritos en el artículo clásico [Un cálculo lógico de las ideas inherentes a la actividad nerviosa](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) de Warren McCullock y Walter Pitts en 1943. Donald Hebb, en su libro "[La Organización del Comportamiento: Una Teoría Neuropsicológica](https://books.google.com/books?id=VNetYrB8EBoC)", propuso la forma en que esas redes pueden ser entrenadas. +> I primi modelli di neurone sono stati descritti nel classico articolo [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) di Warren McCullock e Walter Pitts nel 1943. Donald Hebb, nel suo libro "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", ha proposto il modo in cui queste reti possono essere addestrate. -## En esta Sección +## In questa Sezione -En esta sección aprenderemos sobre: -* [Perceptrón](03-Perceptron/README.md), uno de los primeros modelos de redes neuronales para clasificación de dos clases -* [Redes multicapa](04-OwnFramework/README.md) con un cuaderno emparejado [cómo construir nuestro propio marco](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Marcos de Redes Neuronales](05-Frameworks/README.md), con estos cuadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) y [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) -* [Sobreajuste](../../../../lessons/3-NeuralNetworks/05-Frameworks) +In questa sezione impareremo: +* [Perceptron](03-Perceptron/README.md), uno dei primi modelli di rete neurale per la classificazione a due classi +* [Reti multi-strato](04-OwnFramework/README.md) con un notebook associato [come costruire il nostro framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Framework per Reti Neurali](05-Frameworks/README.md), con questi notebook: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) e [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md index bd6f9822..fb1eda77 100644 --- a/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ -# Introducción a la Visión por Computadora + +# Introduzione alla Visione Artificiale -[Visión por Computadora](https://wikipedia.org/wiki/Computer_vision) es una disciplina cuyo objetivo es permitir que las computadoras obtengan una comprensión de alto nivel de las imágenes digitales. Esta es una definición bastante amplia, porque *comprensión* puede significar muchas cosas diferentes, incluyendo encontrar un objeto en una imagen (**detección de objetos**), entender lo que está sucediendo (**detección de eventos**), describir una imagen en texto, o reconstruir una escena en 3D. También hay tareas especiales relacionadas con imágenes humanas: estimación de edad y emociones, detección e identificación de rostros, y estimación de pose en 3D, por nombrar algunas. +[Computer Vision](https://wikipedia.org/wiki/Computer_vision) è una disciplina il cui obiettivo è permettere ai computer di ottenere una comprensione di alto livello delle immagini digitali. Questa è una definizione piuttosto ampia, poiché *comprensione* può significare molte cose, tra cui trovare un oggetto in un'immagine (**rilevamento di oggetti**), capire cosa sta accadendo (**rilevamento di eventi**), descrivere un'immagine in testo o ricostruire una scena in 3D. Ci sono anche compiti specifici legati alle immagini umane: stima dell'età e delle emozioni, rilevamento e identificazione del volto, e stima della posa in 3D, solo per citarne alcuni. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -Una de las tareas más simples de la visión por computadora es **clasificación de imágenes**. +Uno dei compiti più semplici della visione artificiale è la **classificazione delle immagini**. -La visión por computadora a menudo se considera una rama de la IA. Hoy en día, la mayoría de las tareas de visión por computadora se resuelven utilizando redes neuronales. Aprenderemos más sobre el tipo especial de redes neuronales utilizadas para la visión por computadora, [redes neuronales convolucionales](../07-ConvNets/README.md), a lo largo de esta sección. +La visione artificiale è spesso considerata un ramo dell'IA. Oggi, la maggior parte dei compiti di visione artificiale viene risolta utilizzando reti neurali. Impareremo di più sul tipo speciale di reti neurali utilizzate per la visione artificiale, [reti neurali convoluzionali](../07-ConvNets/README.md), in questa sezione. -Sin embargo, antes de pasar la imagen a una red neuronal, en muchos casos tiene sentido utilizar algunas técnicas algorítmicas para mejorar la imagen. +Tuttavia, prima di passare un'immagine a una rete neurale, in molti casi ha senso utilizzare alcune tecniche algoritmiche per migliorare l'immagine. -Hay varias bibliotecas de Python disponibles para el procesamiento de imágenes: +Esistono diverse librerie Python disponibili per l'elaborazione delle immagini: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** se puede utilizar para leer/escribir diferentes formatos de imagen. También soporta ffmpeg, una herramienta útil para convertir fotogramas de video en imágenes. -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (también conocido como PIL) es un poco más poderosa, y también soporta algunas manipulaciones de imágenes como morfología, ajustes de paleta, y más. -* **[OpenCV](https://opencv.org/)** es una poderosa biblioteca de procesamiento de imágenes escrita en C++, que se ha convertido en el estándar *de facto* para el procesamiento de imágenes. Tiene una interfaz conveniente para Python. -* **[dlib](http://dlib.net/)** es una biblioteca de C++ que implementa muchos algoritmos de aprendizaje automático, incluyendo algunos de los algoritmos de Visión por Computadora. También tiene una interfaz de Python y se puede utilizar para tareas desafiantes como la detección de rostros y puntos de referencia faciales. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** può essere utilizzata per leggere/scrivere diversi formati di immagine. Supporta anche ffmpeg, uno strumento utile per convertire i fotogrammi video in immagini. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (conosciuto anche come PIL) è un po' più potente e supporta anche alcune manipolazioni delle immagini come morphing, regolazioni della palette e altro. +* **[OpenCV](https://opencv.org/)** è una potente libreria di elaborazione delle immagini scritta in C++, che è diventata lo standard *de facto* per l'elaborazione delle immagini. Ha un'interfaccia Python comoda. +* **[dlib](http://dlib.net/)** è una libreria C++ che implementa molti algoritmi di machine learning, inclusi alcuni algoritmi di visione artificiale. Ha anche un'interfaccia Python e può essere utilizzata per compiti impegnativi come il rilevamento del volto e dei punti di riferimento facciali. ## OpenCV -[OpenCV](https://opencv.org/) se considera el estándar *de facto* para el procesamiento de imágenes. Contiene muchos algoritmos útiles, implementados en C++. También puedes llamar a OpenCV desde Python. +[OpenCV](https://opencv.org/) è considerata lo standard *de facto* per l'elaborazione delle immagini. Contiene molti algoritmi utili, implementati in C++. Puoi utilizzare OpenCV anche da Python. -Un buen lugar para aprender OpenCV es [este curso de Aprende OpenCV](https://learnopencv.com/getting-started-with-opencv/). En nuestro currículo, nuestro objetivo no es aprender OpenCV, sino mostrarte algunos ejemplos de cuándo se puede usar y cómo. +Un buon punto di partenza per imparare OpenCV è [questo corso Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). Nel nostro curriculum, il nostro obiettivo non è imparare OpenCV, ma mostrarti alcuni esempi di quando può essere utilizzato e come. -### Cargando Imágenes +### Caricamento delle immagini -Las imágenes en Python pueden ser representadas de manera conveniente por arreglos de NumPy. Por ejemplo, las imágenes en escala de grises con un tamaño de 320x200 píxeles se almacenarían en un arreglo de 200x320, y las imágenes a color de la misma dimensión tendrían una forma de 200x320x3 (para 3 canales de color). Para cargar una imagen, puedes usar el siguiente código: +Le immagini in Python possono essere rappresentate comodamente da array NumPy. Ad esempio, immagini in scala di grigi con dimensioni di 320x200 pixel sarebbero memorizzate in un array 200x320, e immagini a colori della stessa dimensione avrebbero una forma di 200x320x3 (per 3 canali di colore). Per caricare un'immagine, puoi utilizzare il seguente codice: ```python import cv2 @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Tradicionalmente, OpenCV utiliza codificación BGR (Azul-Verde-Rojo) para imágenes a color, mientras que el resto de las herramientas de Python utilizan el más tradicional RGB (Rojo-Verde-Azul). Para que la imagen se vea correctamente, necesitas convertirla al espacio de color RGB, ya sea intercambiando dimensiones en el arreglo de NumPy o llamando a una función de OpenCV: +Tradizionalmente, OpenCV utilizza la codifica BGR (Blu-Verde-Rosso) per le immagini a colori, mentre il resto degli strumenti Python utilizza la più tradizionale RGB (Rosso-Verde-Blu). Per far sì che l'immagine appaia correttamente, è necessario convertirla nello spazio colore RGB, o scambiando le dimensioni nell'array NumPy, o chiamando una funzione OpenCV: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -Las mismas funciones `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +La stessa funzione `cvtColor` può essere utilizzata per eseguire altre trasformazioni dello spazio colore, come convertire un'immagine in scala di grigi o nello spazio colore HSV (Tonalità-Saturazione-Valore). -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +Puoi anche utilizzare OpenCV per caricare video fotogramma per fotogramma - un esempio è fornito nell'esercizio [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). -### Image Processing +### Elaborazione delle immagini -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Prima di passare un'immagine a una rete neurale, potresti voler applicare diversi passaggi di pre-elaborazione. OpenCV può fare molte cose, tra cui: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, que a menudo son preferibles a ajustar el brillo o el contraste. -* Aplicar diferentes [transformaciones](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) a la imagen: - - **[Transformaciones afines](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** pueden ser útiles si necesitas combinar rotación, redimensionamiento y sesgo en la imagen y conoces la ubicación de origen y destino de tres puntos en la imagen. Las transformaciones afines mantienen las líneas paralelas. - - **[Transformaciones de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** pueden ser útiles cuando conoces las posiciones de origen y destino de 4 puntos en la imagen. Por ejemplo, si tomas una foto de un documento rectangular a través de la cámara de un smartphone desde algún ángulo, y deseas hacer una imagen rectangular del documento en sí. -* Comprender el movimiento dentro de la imagen utilizando **[flujo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. +* **Ridimensionare** l'immagine utilizzando `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Sfocare** l'immagine utilizzando `im = cv2.medianBlur(im,3)` o `im = cv2.GaussianBlur(im, (3,3), 0)` +* Cambiare la **luminosità e il contrasto** dell'immagine può essere fatto tramite manipolazioni degli array NumPy, come descritto [in questa nota su Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Utilizzare [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) chiamando le funzioni `cv2.threshold`/`cv2.adaptiveThreshold`, che spesso è preferibile rispetto alla regolazione della luminosità o del contrasto. +* Applicare diverse [trasformazioni](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) all'immagine: + - **[Trasformazioni affini](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** possono essere utili se hai bisogno di combinare rotazione, ridimensionamento e inclinazione dell'immagine e conosci la posizione di origine e destinazione di tre punti nell'immagine. Le trasformazioni affini mantengono le linee parallele parallele. + - **[Trasformazioni prospettiche](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** possono essere utili quando conosci le posizioni di origine e destinazione di 4 punti nell'immagine. Ad esempio, se scatti una foto di un documento rettangolare tramite la fotocamera di uno smartphone da un certo angolo, e vuoi ottenere un'immagine rettangolare del documento stesso. +* Comprendere il movimento all'interno dell'immagine utilizzando **[optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. -## Ejemplos de uso de la Visión por Computadora +## Esempi di utilizzo della Visione Artificiale -En nuestro [Cuaderno de OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos algunos ejemplos de cuándo se puede usar la visión por computadora para realizar tareas específicas: +Nel nostro [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), forniamo alcuni esempi di quando la visione artificiale può essere utilizzata per svolgere compiti specifici: -* **Pre-procesar una fotografía de un libro en Braille**. Nos enfocamos en cómo podemos usar umbralización, detección de características, transformación de perspectiva y manipulaciones de NumPy para separar símbolos individuales de Braille para su posterior clasificación por una red neuronal. +* **Pre-elaborazione di una fotografia di un libro in Braille**. Ci concentriamo su come possiamo utilizzare thresholding, rilevamento delle caratteristiche, trasformazione prospettica e manipolazioni NumPy per separare i singoli simboli Braille per una successiva classificazione tramite una rete neurale. -![Imagen de Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.it.jpeg) | ![Imagen de Braille Pre-procesada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.it.png) | ![Símbolos de Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.it.png) +![Immagine Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.it.jpeg) | ![Immagine Braille Pre-elaborata](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.it.png) | ![Simboli Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.it.png) ----|-----|----- -> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Immagine da [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detectar movimiento en video utilizando diferencia de fotogramas**. Si la cámara está fija, entonces los fotogramas del flujo de la cámara deberían ser bastante similares entre sí. Dado que los fotogramas se representan como arreglos, al restar esos arreglos de dos fotogramas subsecuentes obtendremos la diferencia de píxeles, que debería ser baja para fotogramas estáticos y aumentar una vez que haya un movimiento sustancial en la imagen. +* **Rilevamento del movimento in video utilizzando la differenza tra fotogrammi**. Se la fotocamera è fissa, i fotogrammi del feed della fotocamera dovrebbero essere abbastanza simili tra loro. Poiché i fotogrammi sono rappresentati come array, semplicemente sottraendo questi array per due fotogrammi consecutivi otterremo la differenza dei pixel, che dovrebbe essere bassa per fotogrammi statici e diventare più alta quando c'è un movimento significativo nell'immagine. -![Imagen de fotogramas de video y diferencias de fotogramas](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.it.png) +![Immagine di fotogrammi video e differenze tra fotogrammi](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.it.png) -> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Immagine da [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detectar movimiento utilizando Flujo Óptico**. [El flujo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender cómo se mueven los píxeles individuales en los fotogramas de video. Hay dos tipos de flujo óptico: +* **Rilevamento del movimento utilizzando Optical Flow**. [Optical flow](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ci permette di capire come si muovono i singoli pixel nei fotogrammi video. Ci sono due tipi di optical flow: - - **Flujo Óptico Denso** calcula el campo vectorial que muestra para cada píxel hacia dónde se está moviendo. - - **Flujo Óptico Escaso** se basa en tomar algunas características distintivas en la imagen (por ejemplo, bordes) y construir su trayectoria de un fotograma a otro. + - **Dense Optical Flow** calcola il campo vettoriale che mostra per ogni pixel dove si sta muovendo. + - **Sparse Optical Flow** si basa sull'individuazione di alcune caratteristiche distintive nell'immagine (es. bordi) e sulla costruzione della loro traiettoria da fotogramma a fotogramma. -![Imagen de Flujo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.it.png) +![Immagine di Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.it.png) -> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Immagine da [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## ✍️ Cuadernos de Ejemplo: OpenCV [prueba OpenCV en acción](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ Notebook di esempio: OpenCV [prova OpenCV in azione](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -Hagamos algunos experimentos con OpenCV explorando [Cuaderno de OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +Facciamo alcuni esperimenti con OpenCV esplorando [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## Conclusión +## Conclusione -A veces, tareas relativamente complejas como la detección de movimiento o la detección de yemas de los dedos pueden resolverse puramente mediante visión por computadora. Por lo tanto, es muy útil conocer las técnicas básicas de visión por computadora y lo que bibliotecas como OpenCV pueden hacer. +A volte, compiti relativamente complessi come il rilevamento del movimento o il rilevamento della punta delle dita possono essere risolti esclusivamente tramite visione artificiale. Pertanto, è molto utile conoscere le tecniche di base della visione artificiale e cosa possono fare librerie come OpenCV. -## 🚀 Desafío +## 🚀 Sfida -Mira [este video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) del programa de IA para aprender sobre el proyecto Cortic Tigers y cómo construyeron una solución basada en bloques para democratizar las tareas de visión por computadora a través de un robot. Investiga sobre otros proyectos como este que ayuden a nuevos aprendices a ingresar al campo. +Guarda [questo video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) dello show AI per conoscere il progetto Cortic Tigers e come hanno costruito una soluzione basata su blocchi per democratizzare i compiti di visione artificiale tramite un robot. Fai qualche ricerca su altri progetti simili che aiutano i nuovi studenti ad avvicinarsi al campo. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) -## Revisión y Autoestudio +## Revisione e studio autonomo -Lee más sobre el flujo óptico [en este gran tutorial](https://learnopencv.com/optical-flow-in-opencv/). +Leggi di più sull'optical flow [in questo ottimo tutorial](https://learnopencv.com/optical-flow-in-opencv/). -## [Asignación](lab/README.md) +## [Compito](lab/README.md) -En este laboratorio, tomarás un video con gestos simples, y tu objetivo es extraer movimientos arriba/abajo/izquierda/derecha utilizando flujo óptico. +In questo laboratorio, registrerai un video con gesti semplici, e il tuo obiettivo sarà estrarre movimenti su/giù/sinistra/destra utilizzando optical flow. -Marco de Movimiento de Palma +Fotogramma Movimento Palma -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md index a5288698..3005124c 100644 --- a/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,22 +1,31 @@ -# Detectar Movimientos usando Flujo Óptico + +# Rilevamento dei Movimenti con Optical Flow -Tarea del [Currículo de IA para Principiantes](https://aka.ms/ai-beginners). +Compito del laboratorio tratto dal [Curriculum AI per Principianti](https://aka.ms/ai-beginners). -## Tarea +## Compito -Considera [este video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), en el que la palma de una persona se mueve de izquierda/derecha/arriba/abajo sobre un fondo estable. Estás entrenado en datos hasta octubre de 2023. +Considera [questo video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), in cui il palmo di una persona si muove a sinistra/destra/su/giù su uno sfondo stabile. -**Tu objetivo** será utilizar Flujo Óptico para determinar qué partes del video contienen movimientos hacia arriba/abajo/izquierda/derecha. +**Il tuo obiettivo** sarà utilizzare Optical Flow per determinare quali parti del video contengono movimenti verso l'alto, il basso, la sinistra o la destra. -**Objetivo adicional** sería rastrear el movimiento de la palma/dedo utilizando el tono de piel, como se describe [en esta publicación de blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) o [aquí](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). +**Obiettivo avanzato** sarà effettivamente tracciare il movimento del palmo/delle dita utilizzando il tono della pelle, come descritto [in questo post sul blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) o [qui](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). -## Cuaderno de Inicio +## Notebook di Partenza -Comienza el laboratorio abriendo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) +Inizia il laboratorio aprendo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) -## Conclusión +## Conclusione -A veces, tareas relativamente complejas como la detección de movimientos o la detección de puntas de dedos pueden resolverse únicamente mediante visión por computadora. Por lo tanto, es muy útil saber lo que bibliotecas como OpenCV pueden hacer. +A volte, compiti relativamente complessi come il rilevamento del movimento o il rilevamento della punta delle dita possono essere risolti esclusivamente tramite visione artificiale. Pertanto, è molto utile sapere cosa possono fare librerie come OpenCV. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index 76b0dd73..090c438a 100644 --- a/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,64 +1,73 @@ -# Conocidas Arquitecturas de CNN + +# Architetture CNN Famose ### VGG-16 -VGG-16 es una red que logró un 92.7% de precisión en la clasificación top-5 de ImageNet en 2014. Tiene la siguiente estructura de capas: +VGG-16 è una rete che ha raggiunto il 92,7% di accuratezza nella classificazione top-5 di ImageNet nel 2014. Ha la seguente struttura di livelli: -![Capas de ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg) +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg) -Como puedes ver, VGG sigue una arquitectura de pirámide tradicional, que es una secuencia de capas de convolución y agrupamiento. +Come puoi vedere, VGG segue una tradizionale architettura a piramide, che consiste in una sequenza di livelli di convoluzione e pooling. -![Pirámide de ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg) +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg) -> Imagen de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) +> Immagine da [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ### ResNet -ResNet es una familia de modelos propuesta por Microsoft Research en 2015. La idea principal de ResNet es utilizar **bloques residuales**: +ResNet è una famiglia di modelli proposta da Microsoft Research nel 2015. L'idea principale di ResNet è l'utilizzo di **blocchi residui**: -> Imagen de [este artículo](https://arxiv.org/pdf/1512.03385.pdf) +> Immagine da [questo articolo](https://arxiv.org/pdf/1512.03385.pdf) -La razón para usar un paso de identidad es hacer que nuestra capa prediga **la diferencia** entre el resultado de una capa anterior y la salida del bloque residual, de ahí el nombre *residual*. Estos bloques son mucho más fáciles de entrenar, y se pueden construir redes con varios cientos de esos bloques (las variantes más comunes son ResNet-52, ResNet-101 y ResNet-152). +Il motivo per utilizzare il passaggio identitario è far sì che il livello predica **la differenza** tra il risultato di un livello precedente e l'output del blocco residuo - da qui il nome *residuo*. Questi blocchi sono molto più facili da addestrare, e si possono costruire reti con centinaia di questi blocchi (le varianti più comuni sono ResNet-52, ResNet-101 e ResNet-152). -También puedes pensar en esta red como capaz de ajustar su complejidad al conjunto de datos. Inicialmente, cuando comienzas a entrenar la red, los valores de los pesos son pequeños, y la mayor parte de la señal pasa a través de capas de identidad. A medida que avanza el entrenamiento y los pesos se hacen más grandes, la importancia de los parámetros de la red crece, y la red se ajusta para acomodar el poder expresivo necesario para clasificar correctamente las imágenes de entrenamiento. +Puoi anche pensare a questa rete come capace di adattare la sua complessità al dataset. Inizialmente, quando si inizia ad addestrare la rete, i valori dei pesi sono piccoli e la maggior parte del segnale passa attraverso i livelli identitari. Con il progredire dell'addestramento e l'aumento dei pesi, l'importanza dei parametri della rete cresce, e la rete si adatta per fornire la potenza espressiva necessaria per classificare correttamente le immagini di addestramento. ### Google Inception -La arquitectura Google Inception lleva esta idea un paso más allá y construye cada capa de la red como una combinación de varios caminos diferentes: +L'architettura Google Inception porta questa idea un passo avanti, costruendo ogni livello della rete come una combinazione di diversi percorsi: -> Imagen de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) +> Immagine da [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) -Aquí, necesitamos enfatizar el papel de las convoluciones 1x1, porque al principio no tienen sentido. ¿Por qué necesitaríamos pasar por la imagen con un filtro 1x1? Sin embargo, debes recordar que los filtros de convolución también trabajan con varios canales de profundidad (originalmente - colores RGB, en capas posteriores - canales para diferentes filtros), y la convolución 1x1 se utiliza para mezclar esos canales de entrada utilizando diferentes pesos entrenables. También se puede ver como un muestreo (pooling) a lo largo de la dimensión de los canales. +Qui, è importante sottolineare il ruolo delle convoluzioni 1x1, che inizialmente potrebbero sembrare poco sensate. Perché dovremmo analizzare l'immagine con un filtro 1x1? Tuttavia, bisogna ricordare che i filtri di convoluzione lavorano anche con diversi canali di profondità (originariamente - colori RGB, nei livelli successivi - canali per filtri diversi), e la convoluzione 1x1 viene utilizzata per mescolare questi canali di input insieme usando pesi allenabili diversi. Può anche essere vista come un downsampling (pooling) sulla dimensione del canale. -Aquí hay [una buena publicación de blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre el tema, y [el artículo original](https://arxiv.org/pdf/1312.4400.pdf). +Ecco [un ottimo articolo](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sull'argomento, e [l'articolo originale](https://arxiv.org/pdf/1312.4400.pdf). ### MobileNet -MobileNet es una familia de modelos con tamaño reducido, adecuados para dispositivos móviles. Úsalos si tienes pocos recursos y puedes sacrificar un poco de precisión. La idea principal detrás de ellos es la llamada **convolución separable por profundidad**, que permite representar filtros de convolución mediante una composición de convoluciones espaciales y convoluciones 1x1 sobre los canales de profundidad. Esto reduce significativamente el número de parámetros, haciendo que la red sea más pequeña en tamaño y también más fácil de entrenar con menos datos. +MobileNet è una famiglia di modelli di dimensioni ridotte, adatti per dispositivi mobili. Usali se hai risorse limitate e puoi sacrificare un po' di accuratezza. L'idea principale alla base di questi modelli è la cosiddetta **convoluzione separabile in profondità**, che consente di rappresentare i filtri di convoluzione come una composizione di convoluzioni spaziali e convoluzioni 1x1 sui canali di profondità. Questo riduce significativamente il numero di parametri, rendendo la rete più piccola e anche più facile da addestrare con meno dati. -Aquí hay [una buena publicación de blog sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). +Ecco [un ottimo articolo su MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). -## Conclusión +## Conclusione -En esta unidad, has aprendido el concepto principal detrás de las redes neuronales de visión por computadora: las redes convolucionales. Las arquitecturas de la vida real que impulsan la clasificación de imágenes, la detección de objetos e incluso las redes de generación de imágenes se basan en CNNs, solo que con más capas y algunos trucos adicionales de entrenamiento. +In questa unità, hai appreso il concetto principale alla base delle reti neurali per la visione artificiale - le reti convoluzionali. Le architetture reali che alimentano la classificazione delle immagini, il rilevamento degli oggetti e persino le reti di generazione di immagini si basano tutte sulle CNN, solo con più livelli e alcuni trucchi di addestramento aggiuntivi. -## 🚀 Desafío +## 🚀 Sfida -En los cuadernos adjuntos, hay notas al final sobre cómo obtener una mayor precisión. Realiza algunos experimentos para ver si puedes lograr una mayor precisión. +Nei notebook allegati, ci sono note in fondo su come ottenere una maggiore accuratezza. Fai alcuni esperimenti per vedere se riesci a raggiungere una maggiore accuratezza. -## [Cuestionario post-clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Aunque las CNN se utilizan más a menudo para tareas de Visión por Computadora, son generalmente buenas para extraer patrones de tamaño fijo. Por ejemplo, si estamos tratando con sonidos, también podríamos querer usar CNNs para buscar patrones específicos en la señal de audio, en cuyo caso los filtros serían unidimensionales (y esta CNN se llamaría 1D-CNN). Además, a veces se utiliza 3D-CNN para extraer características en un espacio multidimensional, como ciertos eventos que ocurren en un video; CNN puede capturar ciertos patrones de características que cambian con el tiempo. Realiza algunas revisiones y autoestudio sobre otras tareas que se pueden realizar con CNNs. +Sebbene le CNN siano più spesso utilizzate per compiti di visione artificiale, sono generalmente buone per estrarre schemi di dimensioni fisse. Ad esempio, se stiamo lavorando con suoni, potremmo voler utilizzare le CNN per cercare alcuni schemi specifici nel segnale audio - in tal caso i filtri sarebbero monodimensionali (e questa CNN sarebbe chiamata 1D-CNN). Inoltre, a volte si utilizza la 3D-CNN per estrarre caratteristiche in uno spazio multidimensionale, come certi eventi che si verificano in un video - la CNN può catturare certi schemi di cambiamento delle caratteristiche nel tempo. Fai una revisione e uno studio autonomo su altri compiti che possono essere svolti con le CNN. -## [Asignación](lab/README.md) +## [Compito](lab/README.md) -En este laboratorio, se te asigna la tarea de clasificar diferentes razas de gatos y perros. Estas imágenes son más complejas que el conjunto de datos MNIST y de dimensiones más altas, y hay más de 10 clases. +In questo laboratorio, ti viene chiesto di classificare diverse razze di gatti e cani. Queste immagini sono più complesse rispetto al dataset MNIST, hanno dimensioni maggiori e ci sono più di 10 classi. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md index df6781c4..59cd543c 100644 --- a/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,59 +1,67 @@ -# Réseaux de Neurones Convolutionnels + +# Reti Neurali Convoluzionali -Nous avons déjà constaté que les réseaux de neurones sont assez efficaces pour traiter des images, et même un perceptron à une couche est capable de reconnaître des chiffres manuscrits à partir du jeu de données MNIST avec une précision raisonnable. Cependant, le jeu de données MNIST est très particulier, et tous les chiffres sont centrés dans l'image, ce qui simplifie la tâche. +Abbiamo visto in precedenza che le reti neurali sono piuttosto efficaci nel trattare le immagini, e persino un percettrone a un solo strato è in grado di riconoscere le cifre scritte a mano del dataset MNIST con una precisione ragionevole. Tuttavia, il dataset MNIST è molto particolare: tutte le cifre sono centrate all'interno dell'immagine, il che rende il compito più semplice. -## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [Quiz preliminare alla lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -Dans la vie réelle, nous voulons être capables de reconnaître des objets sur une image, peu importe leur emplacement exact dans celle-ci. La vision par ordinateur diffère de la classification générique, car lorsque nous essayons de trouver un certain objet dans l'image, nous scannons l'image à la recherche de certains **modèles** et de leurs combinaisons. Par exemple, lorsque nous cherchons un chat, nous pouvons d'abord rechercher des lignes horizontales, qui peuvent former des moustaches, et ensuite une certaine combinaison de moustaches peut nous indiquer qu'il s'agit en fait d'une image d'un chat. La position relative et la présence de certains modèles sont importantes, et non leur position exacte dans l'image. +Nella vita reale, vogliamo essere in grado di riconoscere oggetti in un'immagine indipendentemente dalla loro posizione esatta. La visione artificiale è diversa dalla classificazione generica, perché quando cerchiamo di individuare un certo oggetto in un'immagine, stiamo scansionando l'immagine alla ricerca di specifici **schemi** e delle loro combinazioni. Ad esempio, cercando un gatto, potremmo iniziare cercando linee orizzontali che possono formare i baffi, e poi una certa combinazione di baffi potrebbe indicarci che si tratta effettivamente di un'immagine di un gatto. La posizione relativa e la presenza di certi schemi sono importanti, non la loro posizione esatta nell'immagine. -Pour extraire des modèles, nous utiliserons la notion de **filtres convolutionnels**. Comme vous le savez, une image est représentée par une matrice 2D, ou un tenseur 3D avec une profondeur de couleur. Appliquer un filtre signifie que nous prenons une matrice de **noyau de filtre** relativement petite, et pour chaque pixel de l'image originale, nous calculons la moyenne pondérée avec les points voisins. Nous pouvons voir cela comme une petite fenêtre glissant sur toute l'image, et moyennant tous les pixels selon les poids dans la matrice du noyau de filtre. +Per estrarre schemi, utilizzeremo il concetto di **filtri convoluzionali**. Come sapete, un'immagine è rappresentata da una matrice 2D o da un tensore 3D con profondità di colore. Applicare un filtro significa prendere una matrice relativamente piccola chiamata **kernel del filtro**, e per ogni pixel dell'immagine originale calcolare la media ponderata con i punti vicini. Possiamo immaginare questo processo come una piccola finestra che scorre su tutta l'immagine, mediando tutti i pixel secondo i pesi nella matrice del kernel del filtro. -![Filtre de Bord Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.it.png) | ![Filtre de Bord Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.it.png) +![Filtro per bordi verticali](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.it.png) | ![Filtro per bordi orizzontali](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.it.png) ----|---- -> Image par Dmitry Soshnikov +> Immagine di Dmitry Soshnikov -Par exemple, si nous appliquons des filtres de bord vertical et horizontal 3x3 aux chiffres MNIST, nous pouvons obtenir des surlignages (par exemple, des valeurs élevées) là où se trouvent des bords verticaux et horizontaux dans notre image originale. Ainsi, ces deux filtres peuvent être utilisés pour "chercher" des bords. De même, nous pouvons concevoir différents filtres pour rechercher d'autres modèles de bas niveau : -Vous êtes formé sur des données jusqu'à octobre 2023. +Ad esempio, se applichiamo filtri per bordi verticali e orizzontali 3x3 alle cifre del dataset MNIST, possiamo evidenziare (ad esempio, ottenere valori alti) dove ci sono bordi verticali e orizzontali nell'immagine originale. Questi due filtri possono quindi essere utilizzati per "cercare" i bordi. Allo stesso modo, possiamo progettare filtri diversi per individuare altri schemi di basso livello: -> Image de [Banque de Filtres Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> Immagine del [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) -Cependant, bien que nous puissions concevoir les filtres pour extraire certains modèles manuellement, nous pouvons également concevoir le réseau de manière à ce qu'il apprenne les modèles automatiquement. C'est l'une des idées principales derrière le CNN. +Tuttavia, mentre possiamo progettare manualmente i filtri per estrarre alcuni schemi, possiamo anche progettare la rete in modo tale che impari automaticamente gli schemi. Questa è una delle idee principali alla base delle CNN. -## Idées principales derrière le CNN +## Idee principali delle CNN -Le fonctionnement des CNN est basé sur les idées importantes suivantes : +Il funzionamento delle CNN si basa sulle seguenti idee fondamentali: -* Les filtres convolutionnels peuvent extraire des modèles -* Nous pouvons concevoir le réseau de manière à ce que les filtres soient entraînés automatiquement -* Nous pouvons utiliser la même approche pour trouver des modèles dans des caractéristiques de haut niveau, et pas seulement dans l'image originale. Ainsi, l'extraction de caractéristiques par CNN fonctionne sur une hiérarchie de caractéristiques, allant des combinaisons de pixels de bas niveau jusqu'aux combinaisons de parties d'image de niveau supérieur. +* I filtri convoluzionali possono estrarre schemi +* Possiamo progettare la rete in modo che i filtri vengano addestrati automaticamente +* Possiamo utilizzare lo stesso approccio per individuare schemi in caratteristiche di alto livello, non solo nell'immagine originale. In questo modo, l'estrazione delle caratteristiche nelle CNN funziona su una gerarchia di caratteristiche, partendo da combinazioni di pixel di basso livello fino a combinazioni di alto livello di parti dell'immagine. -![Extraction de Caractéristiques Hiérarchiques](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.it.png) +![Estrazione gerarchica delle caratteristiche](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.it.png) -> Image tirée [d'un article de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basé sur [leur recherche](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) +> Immagine tratta da [un articolo di Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basato sulla [loro ricerca](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) -## ✍️ Exercices : Réseaux de Neurones Convolutionnels +## ✍️ Esercizi: Reti Neurali Convoluzionali -Continuons à explorer comment fonctionnent les réseaux de neurones convolutionnels et comment nous pouvons obtenir des filtres entraînables, en travaillant à travers les notebooks correspondants : +Continuiamo a esplorare come funzionano le reti neurali convoluzionali e come possiamo ottenere filtri addestrabili, lavorando sui notebook corrispondenti: -* [Réseaux de Neurones Convolutionnels - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) -* [Réseaux de Neurones Convolutionnels - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) +* [Reti Neurali Convoluzionali - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Reti Neurali Convoluzionali - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) -## Architecture Pyramidale +## Architettura a Piramide -La plupart des CNN utilisés pour le traitement d'images suivent une architecture pyramidale. La première couche convolutionnelle appliquée aux images originales a généralement un nombre relativement faible de filtres (8-16), qui correspondent à différentes combinaisons de pixels, telles que des lignes horizontales/verticales de traits. Au niveau suivant, nous réduisons la dimension spatiale du réseau et augmentons le nombre de filtres, ce qui correspond à plus de combinaisons possibles de caractéristiques simples. À chaque couche, à mesure que nous nous rapprochons du classificateur final, les dimensions spatiales de l'image diminuent et le nombre de filtres augmente. +La maggior parte delle CNN utilizzate per l'elaborazione delle immagini segue una cosiddetta architettura a piramide. Il primo strato convoluzionale applicato alle immagini originali ha tipicamente un numero relativamente basso di filtri (8-16), che corrispondono a diverse combinazioni di pixel, come linee orizzontali/verticali o tratti. Al livello successivo, riduciamo la dimensione spaziale della rete e aumentiamo il numero di filtri, che corrisponde a più possibili combinazioni di caratteristiche semplici. Con ogni strato, man mano che ci avviciniamo al classificatore finale, le dimensioni spaziali dell'immagine diminuiscono e il numero di filtri cresce. -À titre d'exemple, examinons l'architecture de VGG-16, un réseau qui a atteint 92,7 % de précision dans la classification top-5 d'ImageNet en 2014 : +Ad esempio, diamo un'occhiata all'architettura di VGG-16, una rete che ha raggiunto il 92,7% di accuratezza nella classificazione top-5 di ImageNet nel 2014: -![Couches ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg) +![Strati di ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg) -![Pyramide ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg) +![Piramide di ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg) -> Image tirée de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) +> Immagine tratta da [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) -## Architectures CNN les Plus Connues +## Architetture CNN più conosciute -[Continuez votre étude sur les architectures CNN les plus connues](CNN_Architectures.md) +[Continua il tuo studio sulle architetture CNN più conosciute](CNN_Architectures.md) -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 5f031b0e..fd15ab00 100644 --- a/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,20 +1,29 @@ -# Clasificación de Caras de Mascotas + +# Classificazione dei Volti degli Animali Domestici -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI per Principianti](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todos los animales. Una de las grandes características de tal aplicación sería descubrir automáticamente la raza a partir de una fotografía. Esto se puede lograr con éxito utilizando redes neuronales. +Immagina di dover sviluppare un'applicazione per un asilo per animali domestici per catalogare tutti gli animali. Una delle funzionalità più utili di tale applicazione sarebbe identificare automaticamente la razza da una fotografia. Questo può essere fatto con successo utilizzando le reti neurali. -Necesitas entrenar una red neuronal convolucional para clasificar diferentes razas de gatos y perros utilizando el conjunto de datos **Caras de Mascotas**. +Devi addestrare una rete neurale convoluzionale per classificare diverse razze di gatti e cani utilizzando il dataset **Pet Faces**. -## El Conjunto de Datos +## Il Dataset -Usaremos el conjunto de datos **Caras de Mascotas**, derivado del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Contiene 35 razas diferentes de perros y gatos. +Utilizzeremo il dataset **Pet Faces**, derivato dal dataset di animali domestici [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Contiene 35 diverse razze di cani e gatti. -![Conjunto de datos con el que trabajaremos](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.it.png) +![Dataset con cui lavoreremo](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.it.png) -Para descargar el conjunto de datos, utiliza este fragmento de código: +Per scaricare il dataset, utilizza questo frammento di codice: ```python !wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz @@ -22,13 +31,13 @@ Para descargar el conjunto de datos, utiliza este fragmento de código: !rm petfaces.tar.gz ``` -## Iniciando el Notebook +## Notebook di Partenza -Comienza el laboratorio abriendo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb). +Inizia il laboratorio aprendo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) -## Conclusión +## Conclusione -¡Has resuelto un problema relativamente complejo de clasificación de imágenes desde cero! Había muchas clases, ¡y aún así lograste obtener una precisión razonable! También tiene sentido medir la precisión top-k, ya que es fácil confundir algunas de las clases que no son claramente diferentes incluso para los seres humanos. +Hai risolto un problema relativamente complesso di classificazione delle immagini da zero! C'erano molte classi, e sei comunque riuscito a ottenere una precisione ragionevole! Ha anche senso misurare la top-k accuracy, perché è facile confondere alcune classi che non sono chiaramente distinguibili nemmeno per gli esseri umani. -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md index 95bd1a95..cda48479 100644 --- a/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,80 +1,90 @@ -# Redes Neurais Pré-treinadas e Aprendizado por Transferência + +# Reti Pre-addestrate e Apprendimento per Trasferimento -Treinar CNNs pode levar muito tempo, e uma grande quantidade de dados é necessária para essa tarefa. No entanto, muito do tempo é gasto aprendendo os melhores filtros de baixo nível que uma rede pode usar para extrair padrões de imagens. Surge uma pergunta natural: podemos usar uma rede neural treinada em um conjunto de dados e adaptá-la para classificar diferentes imagens sem precisar de um processo completo de treinamento? +Addestrare le CNN può richiedere molto tempo e una grande quantità di dati. Tuttavia, gran parte del tempo viene speso per imparare i migliori filtri di basso livello che una rete può utilizzare per estrarre schemi dalle immagini. Sorge una domanda naturale: possiamo utilizzare una rete neurale addestrata su un dataset e adattarla per classificare immagini diverse senza dover eseguire un processo di addestramento completo? -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Essa abordagem é chamada de **aprendizado por transferência**, porque transferimos algum conhecimento de um modelo de rede neural para outro. No aprendizado por transferência, normalmente começamos com um modelo pré-treinado, que foi treinado em um grande conjunto de dados de imagens, como o **ImageNet**. Esses modelos já conseguem extrair diferentes características de imagens genéricas, e em muitos casos, simplesmente construir um classificador em cima dessas características extraídas pode resultar em um bom desempenho. +Questo approccio è chiamato **apprendimento per trasferimento**, perché trasferiamo alcune conoscenze da un modello di rete neurale a un altro. Nell'apprendimento per trasferimento, di solito si parte da un modello pre-addestrato, che è stato addestrato su un grande dataset di immagini, come **ImageNet**. Questi modelli sono già in grado di estrarre diverse caratteristiche da immagini generiche e, in molti casi, costruire un classificatore sopra queste caratteristiche estratte può portare a buoni risultati. -> ✅ Aprendizado por Transferência é um termo que você encontra em outros campos acadêmicos, como Educação. Refere-se ao processo de levar conhecimento de um domínio e aplicá-lo a outro. +> ✅ L'apprendimento per trasferimento è un termine che si trova anche in altri campi accademici, come l'Educazione. Si riferisce al processo di trasferire conoscenze da un dominio e applicarle a un altro. -## Modelos Pré-treinados como Extratores de Recursos +## Modelli Pre-addestrati come Estrattori di Caratteristiche -As redes convolucionais que discutimos na seção anterior continham várias camadas, cada uma delas destinada a extrair algumas características da imagem, começando por combinações de pixels de baixo nível (como linhas ou traços horizontais/verticais), até combinações de características de nível mais alto, correspondendo a coisas como o olho de uma chama. Se treinarmos uma CNN em um conjunto de dados suficientemente grande de imagens genéricas e diversas, a rede deve aprender a extrair essas características comuns. +Le reti convoluzionali di cui abbiamo parlato nella sezione precedente contengono un certo numero di livelli, ciascuno dei quali è progettato per estrarre caratteristiche dall'immagine, partendo da combinazioni di pixel di basso livello (come linee orizzontali/verticali o tratti), fino a combinazioni di caratteristiche di livello superiore, corrispondenti a elementi come un occhio o una fiamma. Se addestriamo una CNN su un dataset sufficientemente grande di immagini generiche e diversificate, la rete dovrebbe imparare a estrarre queste caratteristiche comuni. -Tanto o Keras quanto o PyTorch contêm funções para carregar facilmente os pesos de redes neurais pré-treinadas para algumas arquiteturas comuns, a maioria das quais foi treinada em imagens do ImageNet. Os mais utilizados estão descritos na página de [Arquiteturas de CNN](../07-ConvNets/CNN_Architectures.md) da aula anterior. Em particular, você pode considerar usar uma das seguintes: +Sia Keras che PyTorch contengono funzioni per caricare facilmente i pesi di reti neurali pre-addestrate per alcune architetture comuni, la maggior parte delle quali è stata addestrata su immagini di ImageNet. Le più utilizzate sono descritte nella pagina [Architetture CNN](../07-ConvNets/CNN_Architectures.md) della lezione precedente. In particolare, potresti considerare di utilizzare una delle seguenti: -* **VGG-16/VGG-19**, que são modelos relativamente simples, mas ainda oferecem boa precisão. Muitas vezes, usar o VGG como uma primeira tentativa é uma boa escolha para ver como o aprendizado por transferência funciona. -* **ResNet** é uma família de modelos proposta pela Microsoft Research em 2015. Eles têm mais camadas e, portanto, consomem mais recursos. -* **MobileNet** é uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se você tiver poucos recursos e puder sacrificar um pouco de precisão. +* **VGG-16/VGG-19**, che sono modelli relativamente semplici ma che offrono comunque una buona accuratezza. Spesso utilizzare VGG come primo tentativo è una buona scelta per vedere come funziona l'apprendimento per trasferimento. +* **ResNet**, una famiglia di modelli proposta da Microsoft Research nel 2015. Hanno più livelli e quindi richiedono più risorse. +* **MobileNet**, una famiglia di modelli con dimensioni ridotte, adatti per dispositivi mobili. Usali se hai risorse limitate e puoi sacrificare un po' di accuratezza. -Aqui estão exemplos de características extraídas de uma imagem de um gato pela rede VGG-16: +Ecco alcune caratteristiche estratte da un'immagine di un gatto dalla rete VGG-16: -![Características extraídas pela VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.it.png) +![Caratteristiche estratte da VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.it.png) -## Conjunto de Dados de Gatos vs. Cachorros +## Dataset Gatti vs. Cani -Neste exemplo, usaremos um conjunto de dados de [Gatos e Cachorros](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que é muito próximo de um cenário real de classificação de imagens. +In questo esempio, utilizzeremo un dataset di [Gatti e Cani](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), che è molto vicino a uno scenario reale di classificazione di immagini. -## ✍️ Exercício: Aprendizado por Transferência +## ✍️ Esercizio: Apprendimento per Trasferimento -Vamos ver o aprendizado por transferência em ação nos cadernos correspondentes: +Vediamo l'apprendimento per trasferimento in azione nei notebook corrispondenti: -* [Aprendizado por Transferência - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Aprendizado por Transferência - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [Apprendimento per Trasferimento - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Apprendimento per Trasferimento - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## Visualizando o Gato Adversarial +## Visualizzare il Gatto Avversario -Uma rede neural pré-treinada contém diferentes padrões dentro de seu *cérebro*, incluindo noções de **gato ideal** (assim como cachorro ideal, zebra ideal, etc.). Seria interessante de alguma forma **visualizar essa imagem**. No entanto, isso não é simples, pois os padrões estão espalhados por todo o peso da rede e também organizados em uma estrutura hierárquica. +Una rete neurale pre-addestrata contiene diversi schemi al suo interno, inclusi concetti di **gatto ideale** (così come cane ideale, zebra ideale, ecc.). Sarebbe interessante **visualizzare questa immagine**. Tuttavia, non è semplice, perché gli schemi sono distribuiti in tutti i pesi della rete e organizzati in una struttura gerarchica. -Uma abordagem que podemos adotar é começar com uma imagem aleatória e, em seguida, tentar usar a técnica de **otimização por gradiente** para ajustar essa imagem de tal forma que a rede comece a pensar que é um gato. +Un approccio che possiamo adottare è partire da un'immagine casuale e poi utilizzare la tecnica di **ottimizzazione con discesa del gradiente** per modificare quell'immagine in modo tale che la rete inizi a pensare che sia un gatto. -![Loop de Otimização de Imagem](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.it.png) +![Ciclo di Ottimizzazione dell'Immagine](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.it.png) -No entanto, se fizermos isso, receberemos algo muito semelhante a um ruído aleatório. Isso ocorre porque *existem muitas maneiras de fazer a rede pensar que a imagem de entrada é um gato*, incluindo algumas que não fazem sentido visualmente. Embora essas imagens contenham muitos padrões típicos de um gato, não há nada que as restrinja a serem visualmente distintas. +Tuttavia, se facciamo questo, otterremo qualcosa di molto simile a un rumore casuale. Questo perché *ci sono molti modi per far pensare alla rete che l'immagine di input sia un gatto*, inclusi alcuni che non hanno senso visivamente. Sebbene queste immagini contengano molti schemi tipici di un gatto, non c'è nulla che le vincoli a essere visivamente distintive. -Para melhorar o resultado, podemos adicionar outro termo à função de perda, que é chamado de **perda de variação**. É uma métrica que mostra quão semelhantes são os pixels vizinhos da imagem. Minimizar a perda de variação torna a imagem mais suave e elimina o ruído, revelando assim padrões visualmente mais atraentes. Aqui está um exemplo de tais imagens "ideais", que são classificadas como gato e como zebra com alta probabilidade: +Per migliorare il risultato, possiamo aggiungere un altro termine alla funzione di perdita, chiamato **perdita di variazione**. È una metrica che mostra quanto siano simili i pixel vicini dell'immagine. Minimizzare la perdita di variazione rende l'immagine più fluida e elimina il rumore, rivelando così schemi più visivamente accattivanti. Ecco un esempio di immagini "ideali", classificate come gatto e zebra con alta probabilità: -![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.it.png) | ![Zebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.it.png) +![Gatto Ideale](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.it.png) | ![Zebra Ideale](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.it.png) -----|----- - *Gato Ideal* | *Zebra Ideal* + *Gatto Ideale* | *Zebra Ideale* -Uma abordagem semelhante pode ser usada para realizar os chamados **ataques adversariais** em uma rede neural. Suponha que queremos enganar uma rede neural e fazer um cachorro parecer um gato. Se pegarmos a imagem de um cachorro, que é reconhecida por uma rede como um cachorro, podemos então ajustá-la um pouco usando a otimização por gradiente, até que a rede comece a classificá-la como um gato: +Un approccio simile può essere utilizzato per eseguire i cosiddetti **attacchi avversari** su una rete neurale. Supponiamo di voler ingannare una rete neurale e far sembrare un cane un gatto. Se prendiamo l'immagine di un cane, che è riconosciuta dalla rete come un cane, possiamo modificarla leggermente utilizzando l'ottimizzazione con discesa del gradiente, fino a quando la rete inizia a classificarla come un gatto: -![Imagem de um Cachorro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.it.png) | ![Imagem de um cachorro classificado como gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.it.png) +![Immagine di un Cane](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.it.png) | ![Immagine di un cane classificata come gatto](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.it.png) -----|----- -*Imagem original de um cachorro* | *Imagem de um cachorro classificado como gato* +*Immagine originale di un cane* | *Immagine di un cane classificata come gatto* -Veja o código para reproduzir os resultados acima no seguinte caderno: +Consulta il codice per riprodurre i risultati sopra nel seguente notebook: -* [Gato Ideal e Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) -## Conclusão +* [Gatto Ideale e Avversario - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) -Usando o aprendizado por transferência, você consegue montar rapidamente um classificador para uma tarefa de classificação de objetos personalizados e alcançar alta precisão. Você pode ver que tarefas mais complexas que estamos resolvendo agora exigem maior poder computacional e não podem ser facilmente resolvidas na CPU. Na próxima unidade, tentaremos usar uma implementação mais leve para treinar o mesmo modelo usando recursos computacionais menores, o que resulta em uma precisão apenas ligeiramente inferior. +## Conclusione -## 🚀 Desafio +Utilizzando l'apprendimento per trasferimento, puoi rapidamente mettere insieme un classificatore per un compito di classificazione di oggetti personalizzato e ottenere un'alta accuratezza. Puoi vedere che i compiti più complessi che stiamo risolvendo ora richiedono una maggiore potenza computazionale e non possono essere facilmente risolti sulla CPU. Nell'unità successiva, proveremo a utilizzare un'implementazione più leggera per addestrare lo stesso modello utilizzando risorse computazionali inferiori, con una riduzione minima dell'accuratezza. -Nos cadernos acompanhados, há notas no final sobre como o conhecimento transferido funciona melhor com dados de treinamento um tanto semelhantes (um novo tipo de animal, talvez). Faça algumas experimentações com tipos de imagens completamente novos para ver quão bem ou mal seus modelos de conhecimento transferido se comportam. +## 🚀 Sfida -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +Nei notebook allegati, ci sono note in fondo su come l'apprendimento per trasferimento funzioni meglio con dati di addestramento relativamente simili (ad esempio, un nuovo tipo di animale). Fai qualche esperimento con tipi di immagini completamente nuovi per vedere quanto bene o male i tuoi modelli di apprendimento per trasferimento funzionano. -## Revisão e Autoestudo +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -Leia [TrainingTricks.md](TrainingTricks.md) para aprofundar seu conhecimento sobre algumas outras maneiras de treinar seus modelos. +## Revisione e Studio Autonomo -## [Tarefa](lab/README.md) +Leggi [TrainingTricks.md](TrainingTricks.md) per approfondire la tua conoscenza di altri modi per addestrare i tuoi modelli. -Neste laboratório, usaremos um conjunto de dados de pets da [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) com 35 raças de gatos e cachorros, e construiremos um classificador de aprendizado por transferência. +## [Compito](lab/README.md) + +In questo laboratorio, utilizzeremo il dataset reale [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) di animali domestici con 35 razze di gatti e cani, e costruiremo un classificatore basato sull'apprendimento per trasferimento. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index f46f5063..44ea8e22 100644 --- a/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ -# Tricks for Training Deep Learning Models + +# Trucchi per l'Addestramento del Deep Learning -As neural networks grow deeper, training them becomes increasingly challenging. A significant issue is the so-called [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) or [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [This article](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) provides a solid introduction to these challenges. +Man mano che le reti neurali diventano più profonde, il processo di addestramento diventa sempre più complesso. Uno dei principali problemi è il cosiddetto [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) o [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Questo post](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) offre una buona introduzione a questi problemi. -To enhance the efficiency of training deep networks, several techniques can be employed. +Per rendere l'addestramento delle reti profonde più efficiente, ci sono alcune tecniche che possono essere utilizzate. -## Maintaining Values within a Reasonable Range +## Mantenere i valori in un intervallo ragionevole -To ensure more stable numerical computations, it is essential to keep all values within our neural network at a reasonable scale, typically in the range of [-1..1] or [0..1]. While this is not a strict requirement, the nature of floating-point calculations means that values of vastly different magnitudes cannot be accurately processed together. For instance, if we add 10-10 and 1010, the result will likely be 1010, as the smaller value gets "converted" to match the order of the larger one, resulting in the loss of precision in the mantissa. +Per rendere i calcoli numerici più stabili, è importante assicurarsi che tutti i valori all'interno della rete neurale siano in una scala ragionevole, tipicamente [-1..1] o [0..1]. Non è un requisito molto rigido, ma la natura dei calcoli in virgola mobile è tale che valori di magnitudini diverse non possono essere manipolati accuratamente insieme. Ad esempio, se sommiamo 10-10 e 1010, è probabile che otteniamo 1010, poiché il valore più piccolo verrebbe "convertito" allo stesso ordine di grandezza del più grande, perdendo così la mantissa. -Most activation functions exhibit non-linearities around [-1..1], making it sensible to scale all input data to fall within this range. +La maggior parte delle funzioni di attivazione presenta non-linearità intorno a [-1..1], e quindi ha senso scalare tutti i dati di input nell'intervallo [-1..1] o [0..1]. -## Initial Weight Initialization +## Inizializzazione dei Pesi -Ideally, we want the values to remain within the same range after passing through the layers of the network. Therefore, it is crucial to initialize weights in a way that preserves the distribution of values. +Idealmente, vogliamo che i valori rimangano nello stesso intervallo dopo essere passati attraverso i livelli della rete. Pertanto, è importante inizializzare i pesi in modo da preservare la distribuzione dei valori. -Using a normal distribution **N(0,1)** is not advisable, as having *n* inputs would result in an output standard deviation of *n*, causing values to likely exceed the [0..1] range. +La distribuzione normale **N(0,1)** non è una buona idea, perché se abbiamo *n* input, la deviazione standard dell'output sarebbe *n*, e i valori potrebbero uscire dall'intervallo [0..1]. -The following initialization methods are commonly used: +Le seguenti inizializzazioni sono spesso utilizzate: - * Uniform distribution -- `uniform` + * Distribuzione uniforme -- `uniform` * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** guarantees that for inputs with a zero mean and a standard deviation of 1, the same mean/standard deviation will be maintained - * **N(0,√2/(n_in+n_out))** -- known as **Xavier initialization** (`glorot`), this helps keep the signals within range during both forward and backward propagation + * **N(0,1/√n_in)** garantisce che per input con media zero e deviazione standard di 1, la stessa media/deviazione standard rimanga + * **N(0,√2/(n_in+n_out))** -- la cosiddetta **Xavier initialization** (`glorot`), aiuta a mantenere i segnali nell'intervallo sia durante la propagazione in avanti che quella all'indietro ## Batch Normalization -Even with proper weight initialization, weights can become arbitrarily large or small during training, leading to signals being pushed out of the appropriate range. We can bring the signals back within range by employing one of the normalization techniques. While several methods exist (Weight normalization, Layer Normalization), the most commonly used is Batch Normalization. +Anche con una corretta inizializzazione dei pesi, questi possono diventare arbitrariamente grandi o piccoli durante l'addestramento, portando i segnali fuori dal range corretto. Possiamo riportare i segnali nel range corretto utilizzando una delle tecniche di **normalizzazione**. Sebbene ce ne siano diverse (Weight Normalization, Layer Normalization), la più utilizzata è la Batch Normalization. -The concept of **batch normalization** involves taking into account all values across the minibatch and performing normalization (i.e., subtracting the mean and dividing by the standard deviation) based on these values. This is implemented as a network layer that applies normalization after the weights but before the activation function. Consequently, we are likely to achieve higher final accuracy and faster training. +L'idea della **batch normalization** è di considerare tutti i valori all'interno del minibatch e di eseguire la normalizzazione (cioè sottrarre la media e dividere per la deviazione standard) basandosi su quei valori. È implementata come un livello della rete che esegue questa normalizzazione dopo l'applicazione dei pesi, ma prima della funzione di attivazione. Il risultato è una maggiore accuratezza finale e un addestramento più veloce. -Here is the [original paper](https://arxiv.org/pdf/1502.03167.pdf) on batch normalization, along with an [explanation on Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) and [a useful introductory blog post](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (and the one [in Russian](https://habrahabr.ru/post/309302/)). +Ecco il [paper originale](https://arxiv.org/pdf/1502.03167.pdf) sulla batch normalization, la [spiegazione su Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), e [un buon post introduttivo](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (e uno [in russo](https://habrahabr.ru/post/309302/)). ## Dropout -**Dropout** is a fascinating technique that randomly removes a certain percentage of neurons during training. It is also implemented as a layer with a single parameter (the percentage of neurons to drop, typically between 10% and 50%), and during training, it zeroes out random elements of the input vector before passing it to the next layer. +**Dropout** è una tecnica interessante che rimuove una certa percentuale di neuroni casuali durante l'addestramento. È implementata come un livello con un parametro (percentuale di neuroni da rimuovere, tipicamente 10%-50%), e durante l'addestramento azzera elementi casuali del vettore di input, prima di passarli al livello successivo. -While this may sound unconventional, you can observe the impact of dropout on training an MNIST digit classifier in [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). It accelerates training and enables us to achieve higher accuracy in fewer training epochs. +Anche se può sembrare un'idea strana, puoi vedere l'effetto del dropout sull'addestramento di un classificatore di cifre MNIST nel notebook [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Accelera l'addestramento e consente di ottenere una maggiore accuratezza in meno epoche di addestramento. -This phenomenon can be explained in various ways: +Questo effetto può essere spiegato in diversi modi: - * It can be viewed as a random perturbation to the model, which helps to escape local minima during optimization. - * It can also be seen as *implicit model averaging*, since during dropout, we are effectively training slightly different models. + * Può essere considerato come un fattore di shock casuale per il modello, che lo porta fuori da un minimo locale + * Può essere considerato come *implicit model averaging*, perché durante il dropout stiamo addestrando un modello leggermente diverso -> *Some people suggest that when a person under the influence of alcohol attempts to learn something, they may remember it better the next day compared to a sober person, as the brain with some impaired neurons tries to adapt more effectively to grasp the meaning. We have never tested this theory ourselves.* +> *Alcune persone dicono che quando una persona ubriaca cerca di imparare qualcosa, la ricorderà meglio il giorno dopo rispetto a una persona sobria, perché un cervello con alcuni neuroni malfunzionanti cerca di adattarsi meglio per afferrare il significato. Non abbiamo mai testato personalmente se questo sia vero o meno.* -## Preventing Overfitting +## Prevenire l'Overfitting -A critical aspect of deep learning is the ability to prevent [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). While it may be tempting to employ a highly powerful neural network model, we should always balance the number of model parameters with the number of training samples. +Uno degli aspetti molto importanti del deep learning è la capacità di prevenire l'[overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Anche se potrebbe essere allettante utilizzare un modello di rete neurale molto potente, dovremmo sempre bilanciare il numero di parametri del modello con il numero di campioni di addestramento. -> Ensure you grasp the concept of [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) that we discussed earlier! +> Assicurati di comprendere il concetto di [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) che abbiamo introdotto in precedenza! -Several strategies can help prevent overfitting: +Ci sono diversi modi per prevenire l'overfitting: - * Early stopping -- continuously monitor the error on the validation set and halt training when the validation error begins to rise. - * Explicit Weight Decay / Regularization -- adding an extra penalty to the loss function for high absolute weight values, preventing the model from producing highly unstable results. - * Model Averaging -- training multiple models and then averaging their results. This helps minimize variance. + * Early stopping -- monitorare continuamente l'errore sul set di validazione e interrompere l'addestramento quando l'errore di validazione inizia ad aumentare. + * Decadimento esplicito dei pesi / Regularizzazione -- aggiungere una penalità extra alla funzione di perdita per valori assoluti elevati dei pesi, prevenendo risultati molto instabili + * Media del modello -- addestrare diversi modelli e poi mediare il risultato. Questo aiuta a minimizzare la varianza. * Dropout (Implicit Model Averaging) -## Optimizers / Training Algorithms +## Ottimizzatori / Algoritmi di Addestramento -Another vital aspect of training is selecting a suitable training algorithm. While classical **gradient descent** is a reasonable option, it can sometimes be too slow or lead to other issues. +Un altro aspetto importante dell'addestramento è scegliere un buon algoritmo di addestramento. Sebbene il classico **gradient descent** sia una scelta ragionevole, a volte può essere troppo lento o causare altri problemi. -In deep learning, we employ **Stochastic Gradient Descent** (SGD), which applies gradient descent to minibatches randomly selected from the training set. Weights are adjusted using the following formula: +Nel deep learning, utilizziamo **Stochastic Gradient Descent** (SGD), che è un gradient descent applicato a minibatch selezionati casualmente dal set di addestramento. I pesi vengono aggiornati utilizzando questa formula: wt+1 = wt - η∇ℒ ### Momentum -In **momentum SGD**, we retain a portion of the gradient from previous steps. This is akin to moving with inertia; if we are struck from a different direction, our trajectory doesn't change instantly but retains some aspect of the original motion. Here, we introduce another vector v to represent the *speed*: +Nel **momentum SGD**, manteniamo una parte del gradiente dei passaggi precedenti. È simile a quando ci muoviamo con inerzia e riceviamo un colpo in una direzione diversa: la nostra traiettoria non cambia immediatamente, ma conserva una parte del movimento originale. Qui introduciamo un altro vettore v per rappresentare la *velocità*: * vt+1 = γ vt - η∇ℒ -* wt+1 = wt + vt+1 +* wt+1 = wt+vt+1 -Here, the parameter γ indicates the degree to which we consider inertia: γ=0 corresponds to classical SGD; γ=1 represents a pure motion equation. +Il parametro γ indica quanto teniamo conto dell'inerzia: γ=0 corrisponde al classico SGD; γ=1 è un'equazione di puro movimento. -### Adam, Adagrad, etc. +### Adam, Adagrad, ecc. -Since in each layer we multiply signals by some matrix Wi, depending on ||Wi||, the gradient can either diminish and approach 0 or increase indefinitely. This encapsulates the essence of the Exploding/Vanishing Gradients problem. +Poiché in ogni livello moltiplichiamo i segnali per una matrice Wi, a seconda di ||Wi||, il gradiente può diminuire e avvicinarsi a 0, oppure crescere indefinitamente. Questo è il cuore del problema degli Exploding/Vanishing Gradients. -One solution to this issue is to use only the direction of the gradient in the equation and disregard the absolute value, i.e., +Una delle soluzioni a questo problema è utilizzare solo la direzione del gradiente nell'equazione, ignorando il valore assoluto, cioè: -wt+1 = wt - η(∇ℒ/||∇ℒ||), where ||∇ℒ|| = √∑(∇ℒ)2 +wt+1 = wt - η(∇ℒ/||∇ℒ||), dove ||∇ℒ|| = √∑(∇ℒ)2 -This algorithm is known as **Adagrad**. Other algorithms that utilize the same concept include **RMSProp** and **Adam**. +Questo algoritmo è chiamato **Adagrad**. Altri algoritmi che utilizzano la stessa idea: **RMSProp**, **Adam** -> **Adam** is regarded as a highly efficient algorithm for many applications, so if you're uncertain about which one to use, opt for Adam. +> **Adam** è considerato un algoritmo molto efficiente per molte applicazioni, quindi se non sei sicuro di quale utilizzare, scegli Adam. -### Gradient Clipping +### Gradient clipping -Gradient clipping extends the idea mentioned above. When ||∇ℒ|| ≤ θ, we consider the original gradient in weight optimization; when ||∇ℒ|| > θ, we divide the gradient by its norm. Here, θ is a parameter, and in most cases, we can set θ=1 or θ=10. +Il gradient clipping è un'estensione dell'idea sopra. Quando ||∇ℒ|| ≤ θ, consideriamo il gradiente originale nell'ottimizzazione dei pesi, e quando ||∇ℒ|| > θ - dividiamo il gradiente per la sua norma. Qui θ è un parametro, nella maggior parte dei casi possiamo prendere θ=1 o θ=10. -### Learning Rate Decay +### Decadimento del learning rate -The success of training often hinges on the learning rate parameter η. It is logical to assume that larger values of η lead to faster training, which is typically desirable at the beginning of the training process, while smaller values of η allow for fine-tuning the network later. Thus, in most cases, we aim to reduce η as training progresses. +Il successo dell'addestramento dipende spesso dal parametro learning rate η. È logico supporre che valori più grandi di η portino a un addestramento più veloce, che è qualcosa che tipicamente vogliamo all'inizio dell'addestramento, e poi valori più piccoli di η ci permettano di affinare la rete. Pertanto, nella maggior parte dei casi vogliamo diminuire η durante il processo di addestramento. -This can be achieved by multiplying η by a certain factor (e.g., 0.98) after each training epoch or by implementing a more complex **learning rate schedule**. +Questo può essere fatto moltiplicando η per un numero (es. 0.98) dopo ogni epoca di addestramento, o utilizzando un **learning rate schedule** più complicato. -## Various Network Architectures +## Diverse Architetture di Rete -Choosing the right network architecture for your problem can be challenging. Typically, we would select an architecture that has proven effective for our specific task (or a similar one). Here is a [good overview](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) of neural network architectures for computer vision. +Selezionare l'architettura di rete giusta per il tuo problema può essere complicato. Normalmente, sceglieremmo un'architettura che ha dimostrato di funzionare per il nostro compito specifico (o uno simile). Ecco una [buona panoramica](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) delle architetture di reti neurali per la visione artificiale. -> It is crucial to choose an architecture that is sufficiently powerful for the number of training samples available. Opting for an excessively powerful model can lead to [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). +> È importante selezionare un'architettura che sia abbastanza potente per il numero di campioni di addestramento che abbiamo. Scegliere un modello troppo potente può portare all'[overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). -Another effective approach is to use an architecture that automatically adapts to the required complexity. To some extent, **ResNet** and **Inception** architectures are self-adjusting. [More on computer vision architectures](../07-ConvNets/CNN_Architectures.md). +Un altro buon approccio potrebbe essere utilizzare un'architettura che si adatti automaticamente alla complessità richiesta. In una certa misura, l'architettura **ResNet** e **Inception** sono auto-adattanti. [Maggiori informazioni sulle architetture per la visione artificiale](../07-ConvNets/CNN_Architectures.md). **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index d2730690..0c7fe2bf 100644 --- a/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,16 +1,25 @@ -# Clasificación de Mascotas de Oxford utilizando Aprendizaje por Transferencia + +# Classificazione degli Oxford Pets utilizzando il Transfer Learning -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todos los animales. Una de las grandes características de dicha aplicación sería descubrir automáticamente la raza a partir de una fotografía. En esta tarea, utilizaremos el aprendizaje por transferencia para clasificar imágenes de mascotas de la vida real del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). +Immagina di dover sviluppare un'applicazione per un asilo per animali domestici per catalogare tutti gli animali. Una delle funzionalità più utili di tale applicazione sarebbe quella di riconoscere automaticamente la razza da una fotografia. In questo compito, utilizzeremo il transfer learning per classificare immagini reali di animali domestici tratte dal dataset [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). -## El Conjunto de Datos +## Il Dataset -Usaremos el conjunto de datos original de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contiene 35 razas diferentes de perros y gatos. +Utilizzeremo il dataset originale [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), che contiene 35 diverse razze di cani e gatti. -Para descargar el conjunto de datos, utiliza este fragmento de código: +Per scaricare il dataset, utilizza questo frammento di codice: ```python !wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz @@ -18,13 +27,13 @@ Para descargar el conjunto de datos, utiliza este fragmento de código: !rm images.tar.gz ``` -## Iniciando el Notebook +## Notebook di Partenza -Comienza el laboratorio abriendo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) +Inizia il laboratorio aprendo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) -## Conclusión +## Conclusione -El aprendizaje por transferencia y las redes preentrenadas nos permiten resolver problemas de clasificación de imágenes del mundo real de manera relativamente sencilla. Sin embargo, las redes preentrenadas funcionan bien con imágenes de un tipo similar, y si comenzamos a clasificar imágenes muy diferentes (por ejemplo, imágenes médicas), es probable que obtengamos resultados mucho peores. +Il transfer learning e le reti pre-addestrate ci permettono di risolvere problemi di classificazione delle immagini del mondo reale in modo relativamente semplice. Tuttavia, le reti pre-addestrate funzionano bene su immagini di tipo simile e, se iniziamo a classificare immagini molto diverse (ad esempio immagini mediche), è probabile che i risultati siano molto peggiori. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md index 96edce52..a4e81291 100644 --- a/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,100 +1,109 @@ -# Autoencoders + +# Autoencoder -Cuando se entrena CNNs, uno de los problemas es que necesitamos una gran cantidad de datos etiquetados. En el caso de la clasificación de imágenes, debemos separar las imágenes en diferentes clases, lo que implica un esfuerzo manual. +Quando si addestrano le CNN, uno dei problemi è che abbiamo bisogno di molti dati etichettati. Nel caso della classificazione delle immagini, dobbiamo separare le immagini in diverse classi, il che richiede un lavoro manuale. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -Sin embargo, podríamos querer utilizar datos en bruto (sin etiquetar) para entrenar extractores de características de CNN, lo que se denomina **aprendizaje auto-supervisado**. En lugar de etiquetas, utilizaremos imágenes de entrenamiento como entrada y salida de la red. La idea principal de un **autoencoder** es que tendremos una **red de codificación** que convierte la imagen de entrada en un **espacio latente** (normalmente es solo un vector de menor tamaño), y luego la **red de decodificación**, cuyo objetivo es reconstruir la imagen original. +Tuttavia, potremmo voler utilizzare dati grezzi (non etichettati) per addestrare gli estrattori di caratteristiche delle CNN, il che viene chiamato **apprendimento auto-supervisionato**. Invece delle etichette, utilizzeremo le immagini di addestramento sia come input che come output della rete. L'idea principale dell'**autoencoder** è che avremo una **rete encoder** che converte l'immagine di input in uno **spazio latente** (normalmente è solo un vettore di dimensioni ridotte), e poi una **rete decoder**, il cui obiettivo sarà ricostruire l'immagine originale. -> ✅ Un [autoencoder](https://wikipedia.org/wiki/Autoencoder) es "un tipo de red neuronal artificial utilizada para aprender codificaciones eficientes de datos no etiquetados." +> ✅ Un [autoencoder](https://wikipedia.org/wiki/Autoencoder) è "un tipo di rete neurale artificiale utilizzata per apprendere codifiche efficienti di dati non etichettati." -Dado que estamos entrenando un autoencoder para capturar la mayor cantidad de información posible de la imagen original para una reconstrucción precisa, la red intenta encontrar la mejor **inmersión** de las imágenes de entrada para capturar su significado. +Poiché stiamo addestrando un autoencoder per catturare quante più informazioni possibili dall'immagine originale per una ricostruzione accurata, la rete cerca di trovare il miglior **embedding** delle immagini di input per catturarne il significato. -![Diagrama de Autoencoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.it.jpg) +![Diagramma AutoEncoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.it.jpg) -> Imagen del [blog de Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +> Immagine dal [blog di Keras](https://blog.keras.io/building-autoencoders-in-keras.html) -## Escenarios para usar Autoencoders +## Scenari di utilizzo degli Autoencoder -Aunque reconstruir imágenes originales no parece útil por sí mismo, hay algunos escenarios donde los autoencoders son especialmente útiles: +Sebbene la ricostruzione delle immagini originali possa non sembrare utile di per sé, ci sono alcuni scenari in cui gli autoencoder sono particolarmente utili: -* **Reducir la dimensión de las imágenes para visualización** o **entrenar embeddings de imágenes**. Generalmente, los autoencoders ofrecen mejores resultados que PCA, porque tienen en cuenta la naturaleza espacial de las imágenes y las características jerárquicas. -* **Eliminación de ruido**, es decir, quitar el ruido de la imagen. Debido a que el ruido contiene mucha información innecesaria, el autoencoder no puede ajustarlo todo en un espacio latente relativamente pequeño, y por lo tanto solo captura la parte importante de la imagen. Al entrenar eliminadores de ruido, comenzamos con imágenes originales y utilizamos imágenes con ruido añadido artificialmente como entrada para el autoencoder. -* **Super-resolución**, aumentando la resolución de la imagen. Comenzamos con imágenes de alta resolución y utilizamos imágenes de menor resolución como entrada para el autoencoder. -* **Modelos generativos**. Una vez que entrenamos el autoencoder, la parte del decodificador puede usarse para crear nuevos objetos a partir de vectores latentes aleatorios. +* **Riduzione della dimensione delle immagini per la visualizzazione** o **addestramento degli embedding delle immagini**. Di solito gli autoencoder danno risultati migliori rispetto al PCA, perché tengono conto della natura spaziale delle immagini e delle caratteristiche gerarchiche. +* **Rimozione del rumore**, ovvero eliminare il rumore dall'immagine. Poiché il rumore trasporta molte informazioni inutili, l'autoencoder non può inserirle tutte nello spazio latente relativamente piccolo e quindi cattura solo la parte importante dell'immagine. Quando si addestrano denoiser, si parte dalle immagini originali e si utilizzano immagini con rumore artificiale aggiunto come input per l'autoencoder. +* **Super-risoluzione**, ovvero aumentare la risoluzione delle immagini. Si parte da immagini ad alta risoluzione e si utilizza l'immagine a risoluzione inferiore come input per l'autoencoder. +* **Modelli generativi**. Una volta addestrato l'autoencoder, la parte decoder può essere utilizzata per creare nuovi oggetti partendo da vettori latenti casuali. -## Autoencoders Variacionales (VAE) +## Autoencoder Variazionali (VAE) -Los autoencoders tradicionales reducen la dimensión de los datos de entrada de alguna manera, identificando las características importantes de las imágenes de entrada. Sin embargo, los vectores latentes a menudo no tienen mucho sentido. En otras palabras, tomando como ejemplo el conjunto de datos MNIST, identificar qué dígitos corresponden a diferentes vectores latentes no es una tarea fácil, ya que vectores latentes cercanos no necesariamente corresponden a los mismos dígitos. +Gli autoencoder tradizionali riducono la dimensione dei dati di input in qualche modo, individuando le caratteristiche importanti delle immagini di input. Tuttavia, i vettori latenti spesso non hanno molto senso. In altre parole, prendendo come esempio il dataset MNIST, capire quali cifre corrispondono ai diversi vettori latenti non è un compito facile, perché vettori latenti vicini non corrispondono necessariamente alle stesse cifre. -Por otro lado, para entrenar modelos *generativos*, es mejor tener cierta comprensión del espacio latente. Esta idea nos lleva a los **autoencoders variacionales** (VAE). +D'altra parte, per addestrare modelli *generativi* è meglio avere una certa comprensione dello spazio latente. Questa idea ci porta agli **autoencoder variazionali** (VAE). -El VAE es el autoencoder que aprende a predecir la *distribución estadística* de los parámetros latentes, denominada **distribución latente**. Por ejemplo, podemos querer que los vectores latentes se distribuyan normalmente con una media zmean y una desviación estándar zsigma (tanto la media como la desviación estándar son vectores de alguna dimensionalidad d). El codificador en el VAE aprende a predecir esos parámetros, y luego el decodificador toma un vector aleatorio de esta distribución para reconstruir el objeto. +Il VAE è un autoencoder che apprende a prevedere una *distribuzione statistica* dei parametri latenti, la cosiddetta **distribuzione latente**. Ad esempio, potremmo voler che i vettori latenti siano distribuiti normalmente con una certa media zmean e deviazione standard zsigma (sia la media che la deviazione standard sono vettori di una certa dimensionalità d). L'encoder nel VAE apprende a prevedere questi parametri, e poi il decoder prende un vettore casuale da questa distribuzione per ricostruire l'oggetto. -Para resumir: +Per riassumere: - * Desde el vector de entrada, predecimos `z_mean` y `z_log_sigma` (en lugar de predecir la desviación estándar en sí, predecimos su logaritmo) - * Muestreamos un vector `sample` de la distribución N(zmean,exp(zlog\_sigma)) - * El decodificador intenta decodificar la imagen original utilizando `sample` como vector de entrada + * Dal vettore di input, prevediamo `z_mean` e `z_log_sigma` (invece di prevedere direttamente la deviazione standard, prevediamo il suo logaritmo) + * Campioniamo un vettore `sample` dalla distribuzione N(zmean,exp(zlog\_sigma)) + * Il decoder cerca di decodificare l'immagine originale utilizzando `sample` come vettore di input -> Imagen de [este post del blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) de Isaak Dykeman +> Immagine da [questo post sul blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) di Isaak Dykeman -Los autoencoders variacionales utilizan una función de pérdida compleja que consiste en dos partes: +Gli autoencoder variazionali utilizzano una funzione di perdita complessa composta da due parti: -* **Pérdida de reconstrucción** es la función de pérdida que muestra cuán cerca está una imagen reconstruida del objetivo (puede ser el Error Cuadrático Medio, o MSE). Es la misma función de pérdida que en los autoencoders normales. -* **Pérdida KL**, que asegura que las distribuciones de variables latentes se mantengan cerca de la distribución normal. Se basa en la noción de [divergencia de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - una métrica para estimar cuán similares son dos distribuciones estadísticas. +* **Perdita di ricostruzione**, ovvero la funzione di perdita che mostra quanto l'immagine ricostruita sia vicina al target (può essere l'Errore Quadratico Medio, o MSE). È la stessa funzione di perdita degli autoencoder normali. +* **Perdita KL**, che garantisce che le distribuzioni delle variabili latenti rimangano vicine alla distribuzione normale. Si basa sul concetto di [divergenza di Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - una metrica per stimare quanto siano simili due distribuzioni statistiche. -Una ventaja importante de los VAE es que nos permiten generar nuevas imágenes de manera relativamente fácil, porque sabemos de qué distribución muestrear vectores latentes. Por ejemplo, si entrenamos un VAE con un vector latente 2D en MNIST, podemos variar los componentes del vector latente para obtener diferentes dígitos: +Un vantaggio importante dei VAE è che ci permettono di generare nuove immagini relativamente facilmente, perché sappiamo da quale distribuzione campionare i vettori latenti. Ad esempio, se addestriamo un VAE con un vettore latente 2D su MNIST, possiamo poi variare i componenti del vettore latente per ottenere cifre diverse: vaemnist -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -Observa cómo las imágenes se fusionan entre sí, a medida que comenzamos a obtener vectores latentes de diferentes porciones del espacio de parámetros latentes. También podemos visualizar este espacio en 2D: +Osserva come le immagini si fondono l'una nell'altra, mentre iniziamo a ottenere vettori latenti da diverse porzioni dello spazio dei parametri latenti. Possiamo anche visualizzare questo spazio in 2D: vaemnist cluster -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -## ✍️ Ejercicios: Autoencoders +## ✍️ Esercizi: Autoencoder -Aprende más sobre autoencoders en estos cuadernos correspondientes: +Scopri di più sugli autoencoder in questi notebook corrispondenti: -* [Autoencoders en TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) -* [Autoencoders en PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) +* [Autoencoder in TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoder in PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) -## Propiedades de los Autoencoders +## Proprietà degli Autoencoder -* **Específicos para datos** - solo funcionan bien con el tipo de imágenes en las que han sido entrenados. Por ejemplo, si entrenamos una red de super-resolución en flores, no funcionará bien en retratos. Esto se debe a que la red puede producir una imagen de mayor resolución tomando detalles finos de las características aprendidas del conjunto de datos de entrenamiento. -* **Con pérdida** - la imagen reconstruida no es la misma que la imagen original. La naturaleza de la pérdida está definida por la *función de pérdida* utilizada durante el entrenamiento. -* Funciona con **datos no etiquetados**. +* **Specifici per i dati** - funzionano bene solo con il tipo di immagini su cui sono stati addestrati. Ad esempio, se addestriamo una rete di super-risoluzione sui fiori, non funzionerà bene sui ritratti. Questo perché la rete può produrre immagini ad alta risoluzione prendendo dettagli fini dalle caratteristiche apprese dal dataset di addestramento. +* **Con perdita** - l'immagine ricostruita non è identica all'immagine originale. La natura della perdita è definita dalla *funzione di perdita* utilizzata durante l'addestramento. +* Funziona su **dati non etichettati** -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) -## Conclusión +## Conclusione -En esta lección, aprendiste sobre los diversos tipos de autoencoders disponibles para el científico de IA. Aprendiste cómo construirlos y cómo usarlos para reconstruir imágenes. También aprendiste sobre el VAE y cómo utilizarlo para generar nuevas imágenes. +In questa lezione, hai imparato i vari tipi di autoencoder disponibili per lo scienziato AI. Hai imparato come costruirli e come usarli per ricostruire immagini. Hai anche imparato il VAE e come usarlo per generare nuove immagini. -## 🚀 Desafío +## 🚀 Sfida -En esta lección, aprendiste sobre el uso de autoencoders para imágenes. ¡Pero también pueden ser utilizados para música! Echa un vistazo al proyecto [MusicVAE](https://magenta.tensorflow.org/music-vae) del proyecto Magenta, que utiliza autoencoders para aprender a reconstruir música. Realiza algunos [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) con esta biblioteca para ver qué puedes crear. +In questa lezione, hai imparato a utilizzare gli autoencoder per le immagini. Ma possono essere utilizzati anche per la musica! Dai un'occhiata al progetto [MusicVAE](https://magenta.tensorflow.org/music-vae) del progetto Magenta, che utilizza gli autoencoder per imparare a ricostruire la musica. Fai alcuni [esperimenti](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) con questa libreria per vedere cosa puoi creare. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Revisión y Autoestudio +## Revisione & Studio Autonomo -Para referencia, lee más sobre autoencoders en estos recursos: +Per riferimento, leggi di più sugli autoencoder in queste risorse: -* [Construyendo Autoencoders en Keras](https://blog.keras.io/building-autoencoders-in-keras.html) -* [Publicación en el blog sobre NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) -* [Autoencoders Variacionales Explicados](https://kvfrans.com/variational-autoencoders-explained/) -* [Autoencoders Variacionales Condicionales](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) +* [Costruire Autoencoder in Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Post sul blog di NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencoder Variazionali Spiegati](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencoder Variazionali Condizionali](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) -## Asignación +## Compito -Al final de [este cuaderno usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), encontrarás una 'tarea' - utiliza esto como tu asignación. +Alla fine di [questo notebook usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), troverai un 'task' - usalo come tuo compito. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di tenere presente che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/10-GANs/README.md b/translations/it/lessons/4-ComputerVision/10-GANs/README.md index fe023211..02d8f910 100644 --- a/translations/it/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/it/lessons/4-ComputerVision/10-GANs/README.md @@ -1,101 +1,110 @@ -# Redes Generativas Antagónicas + +# Reti Generative Avversarie -En la sección anterior, aprendimos sobre **modelos generativos**: modelos que pueden generar nuevas imágenes similares a las que están en el conjunto de datos de entrenamiento. VAE fue un buen ejemplo de un modelo generativo. +Nella sezione precedente, abbiamo imparato a conoscere i **modelli generativi**: modelli in grado di generare nuove immagini simili a quelle presenti nel dataset di addestramento. Un esempio di modello generativo è il VAE. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -Sin embargo, si intentamos generar algo realmente significativo, como una pintura a una resolución razonable, con VAE, veremos que el entrenamiento no converge bien. Para este caso de uso, debemos aprender sobre otra arquitectura específicamente dirigida a modelos generativos: **Redes Generativas Antagónicas**, o GANs. +Tuttavia, se proviamo a generare qualcosa di veramente significativo, come un dipinto ad alta risoluzione, utilizzando un VAE, noteremo che l'addestramento non converge bene. Per questo caso d'uso, dobbiamo imparare un'altra architettura specificamente progettata per i modelli generativi: le **Reti Generative Avversarie**, o GAN. -La idea principal de una GAN es tener dos redes neuronales que se entrenarán entre sí: +L'idea principale di una GAN è avere due reti neurali che vengono addestrate l'una contro l'altra: -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -> ✅ Un poco de vocabulario: -> * **Generador** es una red que toma un vector aleatorio y produce la imagen como resultado. -> * **Discriminador** es una red que toma una imagen y debe determinar si es una imagen real (del conjunto de datos de entrenamiento) o si fue generada por un generador. Es esencialmente un clasificador de imágenes. +> ✅ Un po' di vocabolario: +> * **Generatore**: una rete che prende un vettore casuale e produce un'immagine come risultato. +> * **Discriminatore**: una rete che prende un'immagine e deve determinare se è un'immagine reale (proveniente dal dataset di addestramento) o se è stata generata dal generatore. Essenzialmente, è un classificatore di immagini. -### Discriminador +### Discriminatore -La arquitectura del discriminador no difiere de una red de clasificación de imágenes ordinaria. En el caso más simple, puede ser un clasificador totalmente conectado, pero lo más probable es que sea una [red convolucional](../07-ConvNets/README.md). +L'architettura del discriminatore non differisce da quella di una normale rete di classificazione delle immagini. Nel caso più semplice, può essere un classificatore completamente connesso, ma molto probabilmente sarà una [rete convoluzionale](../07-ConvNets/README.md). -> ✅ Una GAN basada en redes convolucionales se llama [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) +> ✅ Una GAN basata su reti convoluzionali è chiamata [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) -Un discriminador CNN consta de las siguientes capas: varias convoluciones+poolings (con tamaño espacial decreciente) y, una o más capas totalmente conectadas para obtener un "vector de características", el clasificador binario final. +Un discriminatore CNN è composto dai seguenti strati: diverse convoluzioni+pooling (con dimensioni spaziali decrescenti) e uno o più strati completamente connessi per ottenere un "feature vector", seguito da un classificatore binario finale. -> ✅ Un 'pooling' en este contexto es una técnica que reduce el tamaño de la imagen. "Las capas de pooling reducen las dimensiones de los datos combinando las salidas de grupos de neuronas en una capa en una sola neurona en la siguiente capa." - [fuente](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ Il 'pooling' in questo contesto è una tecnica che riduce la dimensione dell'immagine. "I livelli di pooling riducono le dimensioni dei dati combinando le uscite di cluster di neuroni in un livello in un singolo neurone nel livello successivo." - [fonte](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) -### Generador +### Generatore -Un generador es un poco más complicado. Se puede considerar como un discriminador invertido. Comenzando desde un vector latente (en lugar de un vector de características), tiene una capa totalmente conectada para convertirlo en el tamaño/forma requerida, seguida de deconvoluciones+escalado. Esto es similar a la parte *decodificadora* de un [autoencoder](../09-Autoencoders/README.md). +Un generatore è leggermente più complesso. Può essere considerato come un discriminatore al contrario. Partendo da un vettore latente (al posto di un feature vector), ha uno strato completamente connesso per convertirlo nella dimensione/forma richiesta, seguito da deconvoluzioni+upscaling. Questo è simile alla parte di *decoder* di un [autoencoder](../09-Autoencoders/README.md). -> ✅ Dado que la capa de convolución se implementa como un filtro lineal que recorre la imagen, la deconvolución es esencialmente similar a la convolución y se puede implementar utilizando la misma lógica de capa. +> ✅ Poiché il livello di convoluzione è implementato come un filtro lineare che attraversa l'immagine, la deconvoluzione è essenzialmente simile alla convoluzione e può essere implementata utilizzando la stessa logica di livello. -> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +> Immagine di [Dmitry Soshnikov](http://soshnikov.com) -### Entrenando la GAN +### Addestramento della GAN -Las GANs se llaman **antagónicas** porque hay una competencia constante entre el generador y el discriminador. Durante esta competencia, tanto el generador como el discriminador mejoran, por lo que la red aprende a producir imágenes cada vez mejores. +Le GAN sono chiamate **avversarie** perché c'è una competizione costante tra il generatore e il discriminatore. Durante questa competizione, sia il generatore che il discriminatore migliorano, e la rete impara a produrre immagini sempre migliori. -El entrenamiento ocurre en dos etapas: +L'addestramento avviene in due fasi: -* **Entrenamiento del discriminador**. Esta tarea es bastante directa: generamos un lote de imágenes por el generador, etiquetándolas como 0, que representa una imagen falsa, y tomamos un lote de imágenes del conjunto de datos de entrada (con etiqueta 1, imagen real). Obtenemos alguna *pérdida del discriminador* y realizamos retropropagación. -* **Entrenamiento del generador**. Esto es un poco más complicado, porque no conocemos la salida esperada para el generador directamente. Tomamos toda la red GAN que consiste en un generador seguido de un discriminador, le proporcionamos algunos vectores aleatorios y esperamos que el resultado sea 1 (correspondiente a imágenes reales). Luego congelamos los parámetros del discriminador (no queremos que se entrene en este paso) y realizamos la retropropagación. +* **Addestramento del discriminatore**. Questo compito è piuttosto semplice: generiamo un batch di immagini con il generatore, etichettandole come 0 (immagini false), e prendiamo un batch di immagini dal dataset di input (etichettate come 1, immagini reali). Otteniamo una *discriminator loss* e applichiamo il backpropagation. +* **Addestramento del generatore**. Questo è un po' più complesso, perché non conosciamo direttamente l'output atteso per il generatore. Prendiamo l'intera rete GAN composta da un generatore seguito da un discriminatore, la alimentiamo con vettori casuali e ci aspettiamo che il risultato sia 1 (corrispondente a immagini reali). Congeliamo quindi i parametri del discriminatore (non vogliamo che venga addestrato in questo passaggio) e applichiamo il backpropagation. -Durante este proceso, tanto las pérdidas del generador como las del discriminador no disminuyen significativamente. En la situación ideal, deberían oscilar, correspondiendo a ambas redes mejorando su rendimiento. +Durante questo processo, le perdite del generatore e del discriminatore non diminuiscono significativamente. Nella situazione ideale, dovrebbero oscillare, corrispondendo al miglioramento delle prestazioni di entrambe le reti. -## ✍️ Ejercicios: GANs +## ✍️ Esercizi: GAN -* [Cuaderno de GAN en TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) -* [Cuaderno de GAN en PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) +* [Notebook GAN in TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook GAN in PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### Problemas con el entrenamiento de GAN +### Problemi con l'addestramento delle GAN -Se sabe que las GANs son especialmente difíciles de entrenar. Aquí hay algunos problemas: +Le GAN sono note per essere particolarmente difficili da addestrare. Ecco alcuni problemi: -* **Colapso de modo**. Con este término nos referimos a que el generador aprende a producir una imagen exitosa que engaña al discriminador, y no una variedad de imágenes diferentes. -* **Sensibilidad a los hiperparámetros**. A menudo se puede observar que una GAN no converge en absoluto, y luego de repente disminuye en la tasa de aprendizaje, lo que lleva a la convergencia. -* Mantener un **equilibrio** entre el generador y el discriminador. En muchos casos, la pérdida del discriminador puede caer a cero relativamente rápido, lo que resulta en que el generador no pueda entrenarse más. Para superar esto, podemos intentar establecer diferentes tasas de aprendizaje para el generador y el discriminador, o saltar el entrenamiento del discriminador si la pérdida ya es demasiado baja. -* Entrenamiento para **alta resolución**. Reflejando el mismo problema que con los autoencoders, este problema se desencadena porque reconstruir demasiadas capas de la red convolucional conduce a artefactos. Este problema se suele resolver con el llamado **crecimiento progresivo**, cuando primero se entrenan unas pocas capas en imágenes de baja resolución, y luego se "desbloquean" o añaden capas. Otra solución sería agregar conexiones adicionales entre capas y entrenar varias resoluciones a la vez: consulte este [artículo sobre Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) para más detalles. +* **Mode Collapse**. Con questo termine si intende che il generatore impara a produrre una sola immagine di successo che inganna il discriminatore, invece di una varietà di immagini diverse. +* **Sensibilità agli iperparametri**. Spesso si nota che una GAN non converge affatto, per poi improvvisamente convergere con una riduzione del tasso di apprendimento. +* Mantenere un **equilibrio** tra il generatore e il discriminatore. In molti casi, la perdita del discriminatore può scendere a zero relativamente in fretta, rendendo impossibile l'addestramento del generatore. Per superare questo problema, si possono provare tassi di apprendimento diversi per il generatore e il discriminatore, o saltare l'addestramento del discriminatore se la perdita è già troppo bassa. +* Addestramento per **alta risoluzione**. Riflettendo lo stesso problema degli autoencoder, questo problema si verifica perché ricostruire troppi livelli di rete convoluzionale porta ad artefatti. Questo problema viene tipicamente risolto con il cosiddetto **progressive growing**, in cui i primi livelli vengono addestrati su immagini a bassa risoluzione, e poi i livelli vengono "sbloccati" o aggiunti. Un'altra soluzione consiste nell'aggiungere connessioni extra tra i livelli e addestrare diverse risoluzioni contemporaneamente - vedi questo [articolo sulle Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) per i dettagli. -## Transferencia de Estilo +## Trasferimento di Stile -Las GANs son una excelente manera de generar imágenes artísticas. Otra técnica interesante es la llamada **transferencia de estilo**, que toma una **imagen de contenido** y la redibuja en un estilo diferente, aplicando filtros de una **imagen de estilo**. +Le GAN sono un ottimo modo per generare immagini artistiche. Un'altra tecnica interessante è il cosiddetto **trasferimento di stile**, che prende un'immagine di **contenuto** e la ridisegna in uno stile diverso, applicando filtri da un'immagine di **stile**. -La forma en que funciona es la siguiente: -* Comenzamos con una imagen de ruido aleatorio (o con una imagen de contenido, pero para facilitar la comprensión es más fácil comenzar desde ruido aleatorio). -* Nuestro objetivo sería crear una imagen que esté cerca tanto de la imagen de contenido como de la imagen de estilo. Esto se determinaría mediante dos funciones de pérdida: - - **Pérdida de contenido** se calcula en función de las características extraídas por la CNN en algunas capas de la imagen actual y la imagen de contenido. - - **Pérdida de estilo** se calcula entre la imagen actual y la imagen de estilo de manera ingeniosa utilizando matrices de Gram (más detalles en el [cuaderno de ejemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). -* Para hacer que la imagen sea más suave y eliminar el ruido, también introducimos **pérdida de variación**, que calcula la distancia promedio entre píxeles vecinos. -* El bucle principal de optimización ajusta la imagen actual utilizando descenso de gradiente (o algún otro algoritmo de optimización) para minimizar la pérdida total, que es una suma ponderada de las tres pérdidas. +Il funzionamento è il seguente: +* Si parte da un'immagine casuale di rumore (o da un'immagine di contenuto, ma per semplicità è più facile partire da rumore casuale). +* L'obiettivo è creare un'immagine che sia vicina sia all'immagine di contenuto che a quella di stile. Questo viene determinato da due funzioni di perdita: + - **Perdita di contenuto**, calcolata in base alle caratteristiche estratte dalla CNN a determinati livelli dall'immagine corrente e dall'immagine di contenuto. + - **Perdita di stile**, calcolata tra l'immagine corrente e quella di stile in modo intelligente utilizzando le matrici di Gram (maggiori dettagli nel [notebook di esempio](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Per rendere l'immagine più fluida e rimuovere il rumore, si introduce anche una **Perdita di variazione**, che calcola la distanza media tra pixel vicini. +* Il ciclo di ottimizzazione principale regola l'immagine corrente utilizzando la discesa del gradiente (o un altro algoritmo di ottimizzazione) per minimizzare la perdita totale, che è una somma ponderata di tutte e tre le perdite. -## ✍️ Ejemplo: [Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) +## ✍️ Esempio: [Trasferimento di Stile](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) -## Conclusión +## Conclusione -En esta lección, aprendiste sobre las GANs y cómo entrenarlas. También aprendiste sobre los desafíos especiales que este tipo de red neuronal puede enfrentar, y algunas estrategias sobre cómo superarlos. +In questa lezione, hai imparato cosa sono le GAN e come addestrarle. Hai anche appreso le sfide specifiche che questo tipo di rete neurale può affrontare e alcune strategie per superarle. -## 🚀 Desafío +## 🚀 Sfida -Revisa el [cuaderno de Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) utilizando tus propias imágenes. +Esegui il [notebook sul Trasferimento di Stile](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) utilizzando le tue immagini. -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Para referencia, lee más sobre las GANs en estos recursos: +Per approfondire, leggi di più sulle GAN in queste risorse: -* Marco Pasini, [10 Lecciones que Aprendí Entrenando GANs durante un Año](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), una arquitectura GAN *de facto* a considerar. -* [Creando Arte Generativo usando GANs en Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) +* Marco Pasini, [10 lezioni che ho imparato addestrando GAN per un anno](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), un'architettura GAN *de facto* da considerare +* [Creare arte generativa usando GAN su Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) -## Asignación +## Compito -Revisa uno de los dos cuadernos asociados a esta lección y vuelve a entrenar la GAN con tus propias imágenes. ¿Qué puedes crear? +Rivedi uno dei due notebook associati a questa lezione e riaddestra la GAN utilizzando le tue immagini. Cosa riesci a creare? **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md index 26e73f83..15f44dba 100644 --- a/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,69 +1,188 @@ -YOLO es un algoritmo en tiempo real de una sola pasada. La idea principal es la siguiente: + +# Rilevamento degli Oggetti -* La imagen se divide en regiones de $S\times S$. -* Para cada región, **CNN** predice $n$ objetos posibles, las coordenadas del *bounding box* y la *confianza* = *probabilidad* * IoU. +I modelli di classificazione delle immagini che abbiamo trattato finora prendevano un'immagine e producevano un risultato categorico, come la classe 'numero' in un problema MNIST. Tuttavia, in molti casi non vogliamo solo sapere che un'immagine ritrae degli oggetti, ma desideriamo anche determinare la loro posizione precisa. Questo è esattamente l'obiettivo del **rilevamento degli oggetti**. -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.it.png) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) -### SSD - Single Shot MultiBox Detector +![Rilevamento degli Oggetti](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.it.png) -SSD es otro método de detección de objetos en una sola pasada. La idea es similar a YOLO, pero en lugar de dividir la imagen en regiones, se utiliza una serie de capas de detección que producen predicciones de *bounding boxes* y clases en diferentes escalas. +> Immagine dal [sito web di YOLO v2](https://pjreddie.com/darknet/yolov2/) -![SSD](../../../../../translated_images/ssd.8f409ceb7ad470415f8995994dd89282b57541bff09ecde650902217c84f4c0d.it.png) +## Un Approccio Naïve al Rilevamento degli Oggetti -> *Imagen de [Este artículo](https://arxiv.org/pdf/1512.02325.pdf)* +Supponiamo di voler trovare un gatto in un'immagine. Un approccio molto semplice al rilevamento degli oggetti potrebbe essere il seguente: -### RetinaNet +1. Suddividere l'immagine in un certo numero di riquadri. +2. Eseguire la classificazione delle immagini su ciascun riquadro. +3. I riquadri che producono un'attivazione sufficientemente alta possono essere considerati contenenti l'oggetto in questione. -RetinaNet es un enfoque que combina la velocidad de los métodos de una sola pasada con la precisión de los métodos de propuesta de región. Utiliza una función de pérdida llamada *Focal Loss* para abordar el problema del desbalanceo de clases en la detección de objetos. +![Rilevamento Naïve](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.it.png) -![RetinaNet](../../../../../translated_images/retinanet.cfd3ebd2e5c63692a1c543b868134b66e4b0789230c22679b07eebd0e69d7cbc.it.png) +> *Immagine dal [Notebook di Esercizi](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* -> *Imagen de [Este artículo](https://arxiv.org/pdf/1708.02002.pdf)* +Tuttavia, questo approccio è tutt'altro che ideale, poiché consente all'algoritmo di individuare il riquadro di delimitazione dell'oggetto in modo molto impreciso. Per una localizzazione più precisa, dobbiamo eseguire una sorta di **regressione** per prevedere le coordinate dei riquadri di delimitazione, e per farlo abbiamo bisogno di dataset specifici. -## Conclusión +## Regressione per il Rilevamento degli Oggetti -La detección de objetos es un campo emocionante en la visión por computadora que ha visto un progreso significativo en los últimos años. Desde métodos simples y naïve hasta enfoques avanzados como YOLO, SSD y RetinaNet, hay una variedad de técnicas disponibles para abordar diferentes desafíos en la detección de objetos. A medida que la tecnología avanza, podemos esperar ver aún más innovaciones en este campo. -> Image from [official paper](https://arxiv.org/abs/1506.02640) +[Questo articolo](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) offre un'ottima introduzione al rilevamento delle forme. -### Other Algorithms +## Dataset per il Rilevamento degli Oggetti -* RetinaNet: [official paper](https://arxiv.org/abs/1708.02002) - - [PyTorch Implementation in Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - - [Keras Implementation](https://github.com/fizyr/keras-retinanet) - - [Object Detection with RetinaNet](https://keras.io/examples/vision/retinanet/) in Keras Samples -* SSD (Single Shot Detector): [official paper](https://arxiv.org/abs/1512.02325) +Potresti imbatterti nei seguenti dataset per questo compito: -## ✍️ Exercises: Object Detection +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 classi +* [COCO](http://cocodataset.org/#home) - Common Objects in Context. 80 classi, riquadri di delimitazione e maschere di segmentazione -Continue your learning with the following notebook: +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.it.jpg) + +## Metriche per il Rilevamento degli Oggetti + +### Intersezione su Unione + +Mentre per la classificazione delle immagini è facile misurare quanto bene l'algoritmo si comporta, per il rilevamento degli oggetti dobbiamo misurare sia la correttezza della classe che la precisione della posizione del riquadro di delimitazione inferito. Per quest'ultimo, utilizziamo la cosiddetta **Intersezione su Unione** (IoU), che misura quanto bene due riquadri (o due aree arbitrarie) si sovrappongono. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.it.png) + +> *Figura 2 da [questo eccellente articolo su IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +L'idea è semplice: dividiamo l'area di intersezione tra due figure per l'area della loro unione. Per due aree identiche, IoU sarà 1, mentre per aree completamente disgiunte sarà 0. Altrimenti varierà da 0 a 1. Consideriamo tipicamente solo quei riquadri di delimitazione per cui IoU supera un certo valore. + +### Precisione Media + +Supponiamo di voler misurare quanto bene una determinata classe di oggetti $C$ viene riconosciuta. Per misurarlo, utilizziamo la metrica della **Precisione Media** (AP), calcolata come segue: + +1. Consideriamo la curva Precisione-Richiamo, che mostra l'accuratezza in base a un valore di soglia di rilevamento (da 0 a 1). +2. A seconda della soglia, rileveremo più o meno oggetti nell'immagine, con valori diversi di precisione e richiamo. +3. La curva avrà questo aspetto: + + + +> *Immagine da [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +La Precisione Media per una data classe $C$ è l'area sotto questa curva. Più precisamente, l'asse del Richiamo è tipicamente diviso in 10 parti, e la Precisione è mediata su tutti questi punti: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP e IoU + +Considereremo solo quei rilevamenti per cui IoU supera un certo valore. Ad esempio, nel dataset PASCAL VOC tipicamente $\mbox{IoU Threshold} = 0.5$, mentre in COCO AP viene misurato per diversi valori di $\mbox{IoU Threshold}$. + + + +> *Immagine da [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Precisione Media Media - mAP + +La metrica principale per il Rilevamento degli Oggetti è chiamata **Precisione Media Media**, o **mAP**. È il valore della Precisione Media, mediato su tutte le classi di oggetti, e talvolta anche su $\mbox{IoU Threshold}$. Il processo di calcolo della **mAP** è descritto in dettaglio +[in questo articolo](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3), e anche [qui con esempi di codice](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Diversi Approcci al Rilevamento degli Oggetti + +Esistono due grandi categorie di algoritmi di rilevamento degli oggetti: + +* **Reti di Proposta di Regione** (R-CNN, Fast R-CNN, Faster R-CNN). L'idea principale è generare **Regioni di Interesse** (ROI) ed eseguire CNN su di esse, cercando l'attivazione massima. È un po' simile all'approccio naïve, con l'eccezione che le ROI vengono generate in modo più intelligente. Uno dei principali svantaggi di tali metodi è che sono lenti, poiché richiedono molti passaggi del classificatore CNN sull'immagine. +* Metodi **a passaggio unico** (YOLO, SSD, RetinaNet). In queste architetture, la rete è progettata per prevedere sia le classi che le ROI in un unico passaggio. + +### R-CNN: CNN Basata su Regione + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) utilizza [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) per generare una struttura gerarchica di regioni ROI, che vengono poi passate attraverso estrattori di caratteristiche CNN e classificatori SVM per determinare la classe dell'oggetto, e una regressione lineare per determinare le coordinate del *riquadro di delimitazione*. [Articolo ufficiale](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.it.png) + +> *Immagine da van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.it.png) + +> *Immagini da [questo articolo](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Questo approccio è simile a R-CNN, ma le regioni vengono definite dopo che i livelli convoluzionali sono stati applicati. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.it.png) + +> Immagine dall'[articolo ufficiale](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +L'idea principale di questo approccio è utilizzare una rete neurale per prevedere le ROI - la cosiddetta *Rete di Proposta di Regione*. [Articolo](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.it.png) + +> Immagine dall'[articolo ufficiale](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Rete Completamente Convoluzionale Basata su Regione + +Questo algoritmo è ancora più veloce di Faster R-CNN. L'idea principale è la seguente: + +1. Estraiamo caratteristiche utilizzando ResNet-101. +2. Le caratteristiche vengono elaborate da una **Mappa di Punteggio Sensibile alla Posizione**. Ogni oggetto delle classi $C$ viene suddiviso in regioni $k\times k$, e addestriamo la rete a prevedere parti degli oggetti. +3. Per ogni parte delle regioni $k\times k$, tutte le reti votano per le classi degli oggetti, e viene selezionata la classe con il massimo voto. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.it.png) + +> Immagine dall'[articolo ufficiale](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO è un algoritmo in tempo reale a passaggio unico. L'idea principale è la seguente: + + * L'immagine viene suddivisa in regioni $S\times S$. + * Per ogni regione, **CNN** prevede $n$ oggetti possibili, le coordinate del *riquadro di delimitazione* e la *confidenza* = *probabilità* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.it.png) + +> Immagine dall'[articolo ufficiale](https://arxiv.org/abs/1506.02640) + +### Altri Algoritmi + +* RetinaNet: [articolo ufficiale](https://arxiv.org/abs/1708.02002) + - [Implementazione PyTorch in Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementazione Keras](https://github.com/fizyr/keras-retinanet) + - [Rilevamento degli Oggetti con RetinaNet](https://keras.io/examples/vision/retinanet/) nei campioni Keras +* SSD (Single Shot Detector): [articolo ufficiale](https://arxiv.org/abs/1512.02325) + +## ✍️ Esercizi: Rilevamento degli Oggetti + +Continua il tuo apprendimento nel seguente notebook: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) -## Conclusion +## Conclusione -In this lesson, you explored the different methods available for object detection! +In questa lezione hai fatto un rapido tour di tutti i vari modi in cui il rilevamento degli oggetti può essere realizzato! -## 🚀 Challenge +## 🚀 Sfida -Go through these articles and notebooks on YOLO and try them out for yourself: +Leggi questi articoli e notebook su YOLO e prova a utilizzarli tu stesso: -* [Good blog post](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) discussing YOLO - * [Official site](https://pjreddie.com/darknet/yolo/) - * Yolo: [Keras implementation](https://github.com/experiencor/keras-yolo2), [step-by-step notebook](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [Keras implementation](https://github.com/experiencor/keras-yolo2), [step-by-step notebook](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) +* [Ottimo articolo](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) che descrive YOLO + * [Sito ufficiale](https://pjreddie.com/darknet/yolo/) + * YOLO: [Implementazione Keras](https://github.com/experiencor/keras-yolo2), [notebook passo-passo](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Implementazione Keras](https://github.com/experiencor/keras-yolo2), [notebook passo-passo](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) -## Review & Self Study +## Revisione e Studio Autonomo -* [Object Detection](https://tjmachinelearning.com/lectures/1718/obj/) by Nikhil Sardana -* [A good comparison of object detection algorithms](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [Review of Deep Learning Algorithms for Object Detection](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [A Step-by-Step Introduction to the Basic Object Detection Algorithms](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [Implementation of Faster R-CNN in Python for Object Detection](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [Rilevamento degli Oggetti](https://tjmachinelearning.com/lectures/1718/obj/) di Nikhil Sardana +* [Un buon confronto tra algoritmi di rilevamento degli oggetti](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Revisione degli Algoritmi di Deep Learning per il Rilevamento degli Oggetti](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Introduzione passo-passo agli Algoritmi di Rilevamento degli Oggetti di Base](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementazione di Faster R-CNN in Python per il Rilevamento degli Oggetti](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) -## [Assignment: Object Detection](lab/README.md) +## [Compito: Rilevamento degli Oggetti](lab/README.md) -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index 4ea63af8..b92f255b 100644 --- a/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Detección de Cabezas utilizando el Conjunto de Datos de Hollywood + +# Rilevamento delle teste usando il dataset Hollywood Heads -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -Contar el número de personas en la transmisión de cámaras de vigilancia es una tarea importante que nos permitirá estimar el número de visitantes en tiendas, horas pico en restaurantes, etc. Para abordar esta tarea, necesitamos ser capaces de detectar cabezas humanas desde diferentes ángulos. Para entrenar un modelo de detección de objetos que identifique cabezas humanas, podemos utilizar el [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/). +Contare il numero di persone in un flusso video di una telecamera di sorveglianza è un compito importante che ci permette di stimare il numero di visitatori in negozi, le ore di punta in un ristorante, ecc. Per risolvere questo compito, dobbiamo essere in grado di rilevare le teste umane da diverse angolazioni. Per addestrare un modello di rilevamento degli oggetti per identificare le teste umane, possiamo utilizzare il [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). -## El Conjunto de Datos +## Il Dataset -El [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contiene 369,846 cabezas humanas anotadas en 224,740 fotogramas de películas de Hollywood. Se proporciona en formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), donde para cada imagen también hay un archivo de descripción en XML que se ve así: +Il [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contiene 369.846 teste umane annotate in 224.740 fotogrammi di film di Hollywood. È fornito nel formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), dove per ogni immagine c'è anche un file di descrizione XML che appare così: ```xml @@ -48,19 +57,19 @@ El [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headde ``` -En este conjunto de datos, solo hay una clase de objetos `head`, y para cada cabeza, obtienes las coordenadas de la caja delimitadora. Puedes analizar XML utilizando bibliotecas de Python, o usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para trabajar directamente con el formato PASCAL VOC. +In questo dataset, c'è solo una classe di oggetti `head`, e per ogni testa vengono forniti i coordinati della bounding box. Puoi analizzare i file XML usando librerie Python, oppure utilizzare [questa libreria](https://pypi.org/project/pascal-voc/) per gestire direttamente il formato PASCAL VOC. -## Entrenamiento de Detección de Objetos +## Addestramento del modello di rilevamento degli oggetti -Puedes entrenar un modelo de detección de objetos utilizando una de las siguientes opciones: +Puoi addestrare un modello di rilevamento degli oggetti utilizzando uno dei seguenti metodi: -* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) y su API de Python para entrenar el modelo programáticamente en la nube. La visión personalizada no podrá utilizar más de unas pocas cientos de imágenes para entrenar el modelo, por lo que es posible que debas limitar el conjunto de datos. -* Usando el ejemplo del [tutorial de Keras](https://keras.io/examples/vision/retinanet/) para entrenar el modelo RetinaNet. -* Usando el módulo incorporado [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) en torchvision. +* Utilizzando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) e la sua API Python per addestrare il modello nel cloud in modo programmatico. Custom Vision non sarà in grado di utilizzare più di qualche centinaio di immagini per addestrare il modello, quindi potrebbe essere necessario limitare il dataset. +* Utilizzando l'esempio del [tutorial di Keras](https://keras.io/examples/vision/retinanet/) per addestrare il modello RetunaNet. +* Utilizzando il modulo integrato [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) in torchvision. -## Conclusión +## Conclusione -La detección de objetos es una tarea que se requiere frecuentemente en la industria. Aunque existen algunos servicios que pueden utilizarse para realizar la detección de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), es importante entender cómo funciona la detección de objetos y ser capaz de entrenar tus propios modelos. +Il rilevamento degli oggetti è un compito frequentemente richiesto nell'industria. Sebbene esistano alcuni servizi che possono essere utilizzati per eseguire il rilevamento degli oggetti (come [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), è importante comprendere come funziona il rilevamento degli oggetti e saper addestrare i propri modelli. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md index 0a6240e8..a842f580 100644 --- a/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,69 +1,78 @@ -# Segmentación + +# Segmentazione -Anteriormente aprendimos sobre la Detección de Objetos, que nos permite localizar objetos en la imagen prediciendo sus *cajas delimitadoras*. Sin embargo, para algunas tareas no solo necesitamos cajas delimitadoras, sino también una localización de objetos más precisa. Esta tarea se llama **segmentación**. +Abbiamo già imparato a conoscere il Rilevamento degli Oggetti, che ci permette di individuare gli oggetti in un'immagine prevedendo i loro *bounding box*. Tuttavia, per alcuni compiti non ci bastano solo i bounding box, ma abbiamo bisogno di una localizzazione più precisa degli oggetti. Questo compito si chiama **segmentazione**. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -La segmentación puede verse como **clasificación de píxeles**, donde para **cada** píxel de la imagen debemos predecir su clase (*fondo* siendo una de las clases). Hay dos algoritmos principales de segmentación: +La segmentazione può essere vista come una **classificazione dei pixel**, in cui per **ogni** pixel dell'immagine dobbiamo prevedere la sua classe (*sfondo* essendo una delle classi). Esistono due principali algoritmi di segmentazione: -* La **segmentación semántica** solo indica la clase del píxel y no hace distinción entre diferentes objetos de la misma clase. -* La **segmentación por instancias** divide las clases en diferentes instancias. +* La **segmentazione semantica** indica solo la classe del pixel, senza distinguere tra diversi oggetti della stessa classe. +* La **segmentazione per istanza** divide le classi in istanze diverse. -Por ejemplo, en la segmentación por instancias, estas ovejas son objetos diferentes, pero en la segmentación semántica todas las ovejas están representadas por una sola clase. +Ad esempio, nella segmentazione per istanza, queste pecore sono oggetti diversi, mentre nella segmentazione semantica tutte le pecore sono rappresentate da una sola classe. -> Imagen de [esta publicación en el blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) +> Immagine tratta da [questo post sul blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) -Existen diferentes arquitecturas neuronales para la segmentación, pero todas tienen la misma estructura. De alguna manera, es similar al autoencoder que aprendiste anteriormente, pero en lugar de descomponer la imagen original, nuestro objetivo es descomponer una **máscara**. Así, una red de segmentación tiene las siguientes partes: +Esistono diverse architetture neurali per la segmentazione, ma tutte hanno la stessa struttura. In un certo senso, è simile all'autoencoder di cui hai già appreso, ma invece di decostruire l'immagine originale, il nostro obiettivo è decostruire una **maschera**. Pertanto, una rete di segmentazione ha le seguenti parti: -* **Codificador** extrae características de la imagen de entrada. -* **Decodificador** transforma esas características en la **imagen de máscara**, con el mismo tamaño y número de canales correspondiente al número de clases. +* **Encoder**: estrae le caratteristiche dall'immagine di input. +* **Decoder**: trasforma queste caratteristiche nell'**immagine maschera**, con la stessa dimensione e un numero di canali corrispondente al numero di classi. -> Imagen de [esta publicación](https://arxiv.org/pdf/2001.05566.pdf) +> Immagine tratta da [questa pubblicazione](https://arxiv.org/pdf/2001.05566.pdf) -Debemos mencionar especialmente la función de pérdida que se utiliza para la segmentación. Al usar autoencoders clásicos, necesitamos medir la similitud entre dos imágenes, y podemos usar el error cuadrático medio (MSE) para hacerlo. En la segmentación, cada píxel en la imagen de máscara objetivo representa el número de clase (codificado en one-hot a lo largo de la tercera dimensión), por lo que necesitamos usar funciones de pérdida específicas para la clasificación: pérdida de entropía cruzada, promediada sobre todos los píxeles. Si la máscara es binaria, se utiliza **pérdida de entropía cruzada binaria** (BCE). +Dobbiamo menzionare in particolare la funzione di perdita utilizzata per la segmentazione. Quando si utilizzano autoencoder classici, dobbiamo misurare la somiglianza tra due immagini, e possiamo utilizzare l'errore quadratico medio (MSE) per farlo. Nella segmentazione, ogni pixel nell'immagine maschera target rappresenta il numero della classe (one-hot-encoded lungo la terza dimensione), quindi dobbiamo utilizzare funzioni di perdita specifiche per la classificazione - la cross-entropy loss, mediata su tutti i pixel. Se la maschera è binaria, si utilizza la **binary cross-entropy loss** (BCE). -> ✅ La codificación one-hot es una forma de codificar una etiqueta de clase en un vector de longitud igual al número de clases. Echa un vistazo a [este artículo](https://datagy.io/sklearn-one-hot-encode/) sobre esta técnica. +> ✅ La codifica one-hot è un modo per codificare un'etichetta di classe in un vettore di lunghezza pari al numero di classi. Dai un'occhiata a [questo articolo](https://datagy.io/sklearn-one-hot-encode/) su questa tecnica. -## Segmentación para Imágenes Médicas +## Segmentazione per Immagini Mediche -En esta lección, veremos la segmentación en acción entrenando la red para reconocer nevos humanos (también conocidos como lunares) en imágenes médicas. Usaremos la Base de Datos PH2 de imágenes de dermatoscopia como fuente de imágenes. Este conjunto de datos contiene 200 imágenes de tres clases: nevus típico, nevus atípico y melanoma. Todas las imágenes también contienen una **máscara** correspondiente que delimita el nevus. +In questa lezione, vedremo la segmentazione in azione addestrando una rete a riconoscere i nevi umani (noti anche come nei) nelle immagini mediche. Utilizzeremo il Database PH2 di immagini dermoscopiche come fonte di immagini. Questo dataset contiene 200 immagini di tre classi: nevo tipico, nevo atipico e melanoma. Tutte le immagini contengono anche una corrispondente **maschera** che delinea il nevo. -> ✅ Esta técnica es particularmente adecuada para este tipo de imágenes médicas, pero ¿qué otras aplicaciones en el mundo real podrías imaginar? +> ✅ Questa tecnica è particolarmente adatta per questo tipo di immagini mediche, ma quali altre applicazioni nel mondo reale potresti immaginare? navi -> Imagen de la Base de Datos PH2 +> Immagine tratta dal Database PH2 -Entrenaremos un modelo para segmentar cualquier nevus de su fondo. +Addestreremo un modello per segmentare qualsiasi nevo dal suo sfondo. -## ✍️ Ejercicios: Segmentación Semántica +## ✍️ Esercizi: Segmentazione Semantica -Abre los cuadernos a continuación para aprender más sobre diferentes arquitecturas de segmentación semántica, practicar trabajando con ellas y verlas en acción. +Apri i notebook qui sotto per saperne di più sulle diverse architetture di segmentazione semantica, esercitarti a lavorare con esse e vederle in azione. -* [Segmentación Semántica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) -* [Segmentación Semántica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) +* [Segmentazione Semantica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentazione Semantica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) -## Conclusión +## Conclusione -La segmentación es una técnica muy poderosa para la clasificación de imágenes, que va más allá de las cajas delimitadoras hacia la clasificación a nivel de píxel. Es una técnica utilizada en imágenes médicas, entre otras aplicaciones. +La segmentazione è una tecnica molto potente per la classificazione delle immagini, andando oltre i bounding box fino alla classificazione a livello di pixel. È una tecnica utilizzata nell'imaging medico, tra le altre applicazioni. -## 🚀 Desafío +## 🚀 Sfida -La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Prueba la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se puede utilizar la detección de poses. +La segmentazione del corpo è solo uno dei compiti comuni che possiamo svolgere con le immagini delle persone. Altri compiti importanti includono il **rilevamento dello scheletro** e il **rilevamento della posa**. Prova la libreria [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) per vedere come può essere utilizzato il rilevamento della posa. -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Este [artículo de Wikipedia](https://wikipedia.org/wiki/Image_segmentation) ofrece una buena visión general de las diversas aplicaciones de esta técnica. Aprende más por tu cuenta sobre los subdominios de la segmentación por instancias y la segmentación panóptica en este campo de investigación. +Questo [articolo di Wikipedia](https://wikipedia.org/wiki/Image_segmentation) offre una buona panoramica delle varie applicazioni di questa tecnica. Approfondisci autonomamente i sottodomini della segmentazione per istanza e della segmentazione panottica in questo campo di studio. -## [Tarea](lab/README.md) +## [Compito](lab/README.md) -En este laboratorio, intenta **segmentación del cuerpo humano** utilizando el [Conjunto de Datos de Segmentación del Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. +In questo laboratorio, prova la **segmentazione del corpo umano** utilizzando il [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) da Kaggle. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 2476f32f..c2c619dd 100644 --- a/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ -# Segmentación del Cuerpo Humano + +# Segmentazione del Corpo Umano -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito di laboratorio dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -En la producción de video, por ejemplo, en pronósticos del tiempo, a menudo necesitamos recortar una imagen humana de la cámara y colocarla sobre otro metraje. Esto se hace típicamente utilizando técnicas de **chroma key**, cuando una persona es filmada frente a un fondo de color uniforme, que luego se elimina. En este laboratorio, entrenaremos un modelo de red neuronal para recortar la silueta humana. +Nella produzione video, ad esempio nelle previsioni del tempo, spesso è necessario ritagliare l'immagine di una persona dalla telecamera e posizionarla sopra un altro filmato. Questo viene tipicamente fatto utilizzando tecniche di **chroma key**, in cui una persona viene filmata davanti a uno sfondo di colore uniforme, che viene poi rimosso. In questo laboratorio, alleneremo un modello di rete neurale per ritagliare la silhouette umana. -## El Conjunto de Datos +## Il Dataset -Utilizaremos el [Conjunto de Datos de Segmentación de Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. Descarga el conjunto de datos manualmente desde Kaggle. +Utilizzeremo il [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) da Kaggle. Scarica manualmente il dataset da Kaggle. -## Iniciando el Cuaderno +## Notebook di Partenza -Comienza el laboratorio abriendo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) +Inizia il laboratorio aprendo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) -## Conclusiones +## Conclusione -La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Consulta la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se pueden implementar esas tareas. +La segmentazione del corpo è solo uno dei compiti comuni che possiamo svolgere con immagini di persone. Altri compiti importanti includono **rilevamento dello scheletro** e **rilevamento della postura**. Esplora la libreria [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) per vedere come possono essere implementati questi compiti. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/README.md b/translations/it/lessons/4-ComputerVision/README.md index 0ce9fb24..be47cc8c 100644 --- a/translations/it/lessons/4-ComputerVision/README.md +++ b/translations/it/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ -# Computer Vision + +# Visione Artificiale -![Résumé du contenu de la vision par ordinateur dans un doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.it.png) +![Riassunto dei contenuti sulla Visione Artificiale in uno schizzo](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.it.png) -Dans cette section, nous allons apprendre sur : +In questa sezione impareremo: -* [Introduction à la vision par ordinateur et OpenCV](06-IntroCV/README.md) -* [Réseaux de neurones convolutionnels](07-ConvNets/README.md) -* [Réseaux pré-entraînés et apprentissage par transfert](08-TransferLearning/README.md) -* [Autoencodeurs](09-Autoencoders/README.md) -* [Réseaux antagonistes génératifs](10-GANs/README.md) -* [Détection d'objets](11-ObjectDetection/README.md) -* [Segmentation sémantique](12-Segmentation/README.md) +* [Introduzione alla Visione Artificiale e OpenCV](06-IntroCV/README.md) +* [Reti Neurali Convoluzionali](07-ConvNets/README.md) +* [Reti Pre-addestrate e Apprendimento per Trasferimento](08-TransferLearning/README.md) +* [Autoencoder](09-Autoencoders/README.md) +* [Reti Generative Avversarie](10-GANs/README.md) +* [Rilevamento degli Oggetti](11-ObjectDetection/README.md) +* [Segmentazione Semantica](12-Segmentation/README.md) -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer (Avvertenza)**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di tenere presente che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/13-TextRep/README.md b/translations/it/lessons/5-NLP/13-TextRep/README.md index 40b7132d..a7c76923 100644 --- a/translations/it/lessons/5-NLP/13-TextRep/README.md +++ b/translations/it/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# Representación de Texto como Tensores + +# Rappresentare il Testo come Tensors -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) -## Clasificación de Texto +## Classificazione del Testo -A lo largo de la primera parte de esta sección, nos enfocaremos en la tarea de **clasificación de texto**. Utilizaremos el conjunto de datos [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contiene artículos de noticias como los siguientes: +Nella prima parte di questa sezione, ci concentreremo sul compito di **classificazione del testo**. Utilizzeremo il Dataset [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), che contiene articoli di notizie come il seguente: -* Categoría: Sci/Tech -* Título: La empresa de Ky. gana una subvención para estudiar péptidos (AP) -* Cuerpo: AP - Una empresa fundada por un investigador en química de la Universidad de Louisville ganó una subvención para desarrollar... +* Categoria: Sci/Tech +* Titolo: Ky. Company Wins Grant to Study Peptides (AP) +* Corpo: AP - Una compagnia fondata da un ricercatore di chimica dell'Università di Louisville ha vinto un finanziamento per sviluppare... -Nuestro objetivo será clasificar el artículo de noticias en una de las categorías basándonos en el texto. +Il nostro obiettivo sarà classificare l'articolo di notizie in una delle categorie basandoci sul testo. -## Representación de texto +## Rappresentare il testo -Si queremos resolver tareas de Procesamiento de Lenguaje Natural (NLP) con redes neuronales, necesitamos alguna forma de representar el texto como tensores. Las computadoras ya representan los caracteres textuales como números que se mapean a fuentes en tu pantalla utilizando codificaciones como ASCII o UTF-8. +Se vogliamo risolvere compiti di Elaborazione del Linguaggio Naturale (NLP) con reti neurali, dobbiamo trovare un modo per rappresentare il testo come tensors. I computer rappresentano già i caratteri testuali come numeri che mappano i font sullo schermo utilizzando codifiche come ASCII o UTF-8. -Imagen que muestra un diagrama que mapea un carácter a una representación ASCII y binaria +Immagine che mostra un diagramma che mappa un carattere a una rappresentazione ASCII e binaria -> [Fuente de la imagen](https://www.seobility.net/en/wiki/ASCII) +> [Fonte immagine](https://www.seobility.net/en/wiki/ASCII) -Como humanos, entendemos lo que cada letra **representa** y cómo todos los caracteres se combinan para formar las palabras de una oración. Sin embargo, las computadoras por sí solas no tienen tal comprensión, y la red neuronal tiene que aprender el significado durante el entrenamiento. +Come esseri umani, comprendiamo cosa **rappresenta** ogni lettera e come tutti i caratteri si uniscono per formare le parole di una frase. Tuttavia, i computer da soli non hanno questa comprensione, e la rete neurale deve apprendere il significato durante l'addestramento. -Por lo tanto, podemos usar diferentes enfoques al representar texto: +Pertanto, possiamo utilizzare diversi approcci per rappresentare il testo: -* **Representación a nivel de carácter**, cuando representamos el texto tratando cada carácter como un número. Dado que tenemos *C* caracteres diferentes en nuestro corpus de texto, la palabra *Hola* se representaría mediante un tensor de 5x*C*. Cada letra correspondería a una columna de tensor en codificación one-hot. -* **Representación a nivel de palabra**, en la que creamos un **vocabulario** de todas las palabras en nuestro texto, y luego representamos las palabras utilizando codificación one-hot. Este enfoque es algo mejor, porque cada letra por sí sola no tiene mucho significado, y así al usar conceptos semánticos de mayor nivel - palabras - simplificamos la tarea para la red neuronal. Sin embargo, dado el gran tamaño del diccionario, necesitamos lidiar con tensores dispersos de alta dimensión. +* **Rappresentazione a livello di carattere**, in cui rappresentiamo il testo trattando ogni carattere come un numero. Dato che abbiamo *C* caratteri diversi nel nostro corpus di testo, la parola *Hello* sarebbe rappresentata da un tensor 5x*C*. Ogni lettera corrisponderebbe a una colonna del tensor in codifica one-hot. +* **Rappresentazione a livello di parola**, in cui creiamo un **vocabolario** di tutte le parole nel nostro testo e poi rappresentiamo le parole usando la codifica one-hot. Questo approccio è in qualche modo migliore, poiché ogni lettera da sola non ha molto significato, e quindi utilizzando concetti semantici di livello superiore - le parole - semplifichiamo il compito per la rete neurale. Tuttavia, data la grande dimensione del dizionario, dobbiamo gestire tensors sparsi ad alta dimensionalità. -Independientemente de la representación, primero necesitamos convertir el texto en una secuencia de **tokens**, siendo un token ya sea un carácter, una palabra, o a veces incluso parte de una palabra. Luego, convertimos el token en un número, típicamente usando un **vocabulario**, y este número puede ser alimentado a una red neuronal usando codificación one-hot. +Indipendentemente dalla rappresentazione, dobbiamo prima convertire il testo in una sequenza di **token**, dove un token può essere un carattere, una parola o talvolta anche una parte di una parola. Successivamente, convertiamo il token in un numero, tipicamente utilizzando un **vocabolario**, e questo numero può essere fornito a una rete neurale utilizzando la codifica one-hot. ## N-Grams -En el lenguaje natural, el significado preciso de las palabras solo puede determinarse en contexto. Por ejemplo, los significados de *red neuronal* y *red de pesca* son completamente diferentes. Una de las formas de tener esto en cuenta es construir nuestro modelo en pares de palabras, considerando los pares de palabras como tokens de vocabulario separados. De esta manera, la oración *Me gusta ir a pescar* se representará mediante la siguiente secuencia de tokens: *Me gusta*, *gusta ir*, *ir a*, *a pescar*. El problema con este enfoque es que el tamaño del diccionario crece significativamente, y combinaciones como *ir a pescar* y *ir de compras* se presentan con diferentes tokens, que no comparten ninguna similitud semántica a pesar de tener el mismo verbo. +Nel linguaggio naturale, il significato preciso delle parole può essere determinato solo nel contesto. Ad esempio, i significati di *rete neurale* e *rete da pesca* sono completamente diversi. Uno dei modi per tenerne conto è costruire il nostro modello su coppie di parole, considerando le coppie di parole come token separati del vocabolario. In questo modo, la frase *Mi piace andare a pescare* sarà rappresentata dalla seguente sequenza di token: *Mi piace*, *piace andare*, *andare a*, *a pescare*. Il problema con questo approccio è che la dimensione del dizionario cresce significativamente, e combinazioni come *andare a pescare* e *andare a fare shopping* sono rappresentate da token diversi, che non condividono alcuna somiglianza semantica nonostante lo stesso verbo. -En algunos casos, también podemos considerar usar tri-gramas -- combinaciones de tres palabras --. Por lo tanto, este enfoque se conoce a menudo como **n-grams**. También tiene sentido usar n-grams con representación a nivel de carácter, en cuyo caso los n-grams corresponderán aproximadamente a diferentes sílabas. +In alcuni casi, possiamo considerare l'uso di tri-grammi -- combinazioni di tre parole -- o anche di n-grammi più lunghi. Questo approccio è spesso chiamato **n-grams**. Inoltre, ha senso utilizzare n-grams con rappresentazioni a livello di carattere, nel qual caso gli n-grams corrisponderanno approssimativamente a diverse sillabe. -## Bolsa de Palabras y TF/IDF +## Bag-of-Words e TF/IDF -Al resolver tareas como la clasificación de texto, necesitamos ser capaces de representar el texto mediante un vector de tamaño fijo, que utilizaremos como entrada para el clasificador denso final. Una de las formas más simples de hacerlo es combinar todas las representaciones individuales de palabras, por ejemplo, sumándolas. Si sumamos las codificaciones one-hot de cada palabra, terminaremos con un vector de frecuencias, que muestra cuántas veces aparece cada palabra dentro del texto. Tal representación de texto se llama **bolsa de palabras** (BoW). +Quando affrontiamo compiti come la classificazione del testo, dobbiamo essere in grado di rappresentare il testo con un vettore di dimensione fissa, che utilizzeremo come input per il classificatore denso finale. Uno dei modi più semplici per farlo è combinare tutte le rappresentazioni delle singole parole, ad esempio sommando. Se sommiamo le codifiche one-hot di ogni parola, otterremo un vettore di frequenze, che mostra quante volte ogni parola appare nel testo. Tale rappresentazione del testo è chiamata **bag of words** (BoW). -> Imagen del autor +> Immagine dell'autore -Un BoW representa esencialmente qué palabras aparecen en el texto y en qué cantidades, lo que puede ser una buena indicación de sobre qué trata el texto. Por ejemplo, un artículo de noticias sobre política probablemente contendrá palabras como *presidente* y *país*, mientras que una publicación científica tendría algo como *colisionador*, *descubierto*, etc. Por lo tanto, las frecuencias de palabras pueden ser en muchos casos un buen indicador del contenido del texto. +Un BoW rappresenta essenzialmente quali parole appaiono nel testo e in quali quantità, il che può effettivamente essere un buon indicatore di cosa tratta il testo. Ad esempio, un articolo di notizie sulla politica è probabile che contenga parole come *presidente* e *paese*, mentre una pubblicazione scientifica potrebbe avere termini come *collisore*, *scoperto*, ecc. Pertanto, le frequenze delle parole possono in molti casi essere un buon indicatore del contenuto del testo. -El problema con BoW es que ciertas palabras comunes, como *y*, *es*, etc., aparecen en la mayoría de los textos, y tienen las frecuencias más altas, ocultando las palabras que realmente son importantes. Podemos disminuir la importancia de esas palabras al tener en cuenta la frecuencia con la que ocurren las palabras en toda la colección de documentos. Esta es la idea principal detrás del enfoque TF/IDF, que se cubre con más detalle en los cuadernos adjuntos a esta lección. +Il problema con BoW è che alcune parole comuni, come *e*, *è*, ecc., appaiono nella maggior parte dei testi e hanno le frequenze più alte, oscurando le parole che sono realmente importanti. Possiamo ridurre l'importanza di queste parole tenendo conto della frequenza con cui appaiono nell'intera collezione di documenti. Questa è l'idea principale dietro l'approccio TF/IDF, che è trattato in maggior dettaglio nei notebook allegati a questa lezione. -Sin embargo, ninguno de estos enfoques puede tener en cuenta completamente la **semántica** del texto. Necesitamos modelos de redes neuronales más poderosos para hacer esto, que discutiremos más adelante en esta sección. +Tuttavia, nessuno di questi approcci può tenere pienamente conto della **semantica** del testo. Abbiamo bisogno di modelli di reti neurali più potenti per farlo, che discuteremo più avanti in questa sezione. -## ✍️ Ejercicios: Representación de Texto +## ✍️ Esercizi: Rappresentazione del Testo -Continúa tu aprendizaje en los siguientes cuadernos: +Continua il tuo apprendimento nei seguenti notebook: -* [Representación de Texto con PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) -* [Representación de Texto con TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) +* [Rappresentazione del Testo con PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Rappresentazione del Testo con TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) -## Conclusión +## Conclusione -Hasta ahora, hemos estudiado técnicas que pueden agregar peso de frecuencia a diferentes palabras. Sin embargo, no son capaces de representar el significado o el orden. Como dijo el famoso lingüista J. R. Firth en 1935, "El significado completo de una palabra siempre es contextual, y ningún estudio del significado separado del contexto puede tomarse en serio." Aprenderemos más adelante en el curso cómo capturar información contextual del texto utilizando modelado de lenguaje. +Finora, abbiamo studiato tecniche che possono aggiungere peso di frequenza a diverse parole. Tuttavia, non sono in grado di rappresentare il significato o l'ordine. Come disse il famoso linguista J. R. Firth nel 1935, "Il significato completo di una parola è sempre contestuale, e nessuno studio del significato al di fuori del contesto può essere preso sul serio." Impareremo più avanti nel corso come catturare informazioni contestuali dal testo utilizzando il linguaggio modellato. -## 🚀 Desafío +## 🚀 Sfida -Intenta algunos otros ejercicios utilizando bolsa de palabras y diferentes modelos de datos. Podrías inspirarte en esta [competencia en Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) +Prova altri esercizi utilizzando bag-of-words e diversi modelli di dati. Potresti trovare ispirazione in questa [competizione su Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Revisión y Autoestudio +## Revisione & Studio Autonomo -Practica tus habilidades con técnicas de embeddings de texto y bolsa de palabras en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) +Esercitati con le tecniche di embedding del testo e bag-of-words su [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) -## [Asignación: Cuadernos](assignment.md) +## [Compito: Notebook](assignment.md) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/13-TextRep/assignment.md b/translations/it/lessons/5-NLP/13-TextRep/assignment.md index 4dd93c2c..b5bd11a7 100644 --- a/translations/it/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/it/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ -# Tarea: Cuadernos + +# Compito: Notebook -Utilizando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente con tu propio conjunto de datos, tal vez uno de Kaggle, utilizado con la debida atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba algunos conjuntos de datos innovadores que podrían resultar sorprendentes, como [este sobre avistamientos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de NUFORC. +Utilizzando i notebook associati a questa lezione (sia la versione PyTorch che quella TensorFlow), eseguili nuovamente utilizzando il tuo dataset, magari uno preso da Kaggle, utilizzato con attribuzione. Riscrivi il notebook per evidenziare le tue scoperte. Prova alcuni dataset innovativi che potrebbero risultare sorprendenti, come [questo sui avvistamenti di UFO](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) di NUFORC. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/14-Embeddings/README.md b/translations/it/lessons/5-NLP/14-Embeddings/README.md index a4473e79..aaa01dfa 100644 --- a/translations/it/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/it/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ -# Embeddings + +# Incorporazioni -## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -Cuando entrenamos clasificadores basados en BoW o TF/IDF, trabajamos con vectores de bolsa de palabras de alta dimensión con una longitud de `vocab_size`, y estábamos convirtiendo explícitamente vectores de representación posicional de baja dimensión en una representación dispersa de one-hot. Sin embargo, esta representación one-hot no es eficiente en términos de memoria. Además, cada palabra se trata de manera independiente, es decir, los vectores codificados one-hot no expresan ninguna similitud semántica entre las palabras. +Quando si addestrano classificatori basati su BoW o TF/IDF, lavoravamo su vettori sparsi ad alta dimensionalità con lunghezza `vocab_size`, convertendo esplicitamente da vettori di rappresentazione posizionale a bassa dimensionalità a rappresentazioni one-hot sparse. Tuttavia, questa rappresentazione one-hot non è efficiente in termini di memoria. Inoltre, ogni parola viene trattata in modo indipendente dalle altre, cioè i vettori one-hot codificati non esprimono alcuna somiglianza semantica tra le parole. -La idea de **embedding** es representar palabras mediante vectores densos de menor dimensión, que de alguna manera reflejan el significado semántico de una palabra. Más adelante discutiremos cómo construir embeddings significativos, pero por ahora pensemos en los embeddings como una forma de reducir la dimensionalidad de un vector de palabras. +L'idea delle **incorporazioni** è rappresentare le parole con vettori densi a bassa dimensionalità, che in qualche modo riflettano il significato semantico di una parola. Più avanti discuteremo come costruire incorporazioni di parole significative, ma per ora pensiamo alle incorporazioni come un modo per ridurre la dimensionalità di un vettore di parole. -Así que, la capa de embedding tomaría una palabra como entrada y produciría un vector de salida de tamaño especificado `embedding_size`. En cierto sentido, es muy similar a una capa `Linear`, pero en lugar de tomar un vector codificado one-hot, podrá tomar un número de palabra como entrada, lo que nos permite evitar la creación de grandes vectores codificados one-hot. +Quindi, il livello di incorporazione prenderebbe una parola come input e produrrebbe un vettore di output di dimensione specificata `embedding_size`. In un certo senso, è molto simile a un livello `Linear`, ma invece di prendere un vettore one-hot codificato, sarà in grado di prendere un numero di parola come input, permettendoci di evitare di creare grandi vettori one-hot codificati. -Al usar una capa de embedding como primera capa en nuestra red de clasificador, podemos cambiar de un modelo de bolsa de palabras a un modelo de **embedding bag**, donde primero convertimos cada palabra en nuestro texto en su correspondiente embedding y luego calculamos alguna función agregada sobre todos esos embeddings, como `sum`, `average` o `max`. +Utilizzando un livello di incorporazione come primo livello nella nostra rete di classificazione, possiamo passare da un modello bag-of-words a un modello **embedding bag**, dove prima convertiamo ogni parola nel nostro testo nella corrispondente incorporazione, e poi calcoliamo una funzione aggregata su tutte queste incorporazioni, come `sum`, `average` o `max`. -![Imagen que muestra un clasificador de embedding para cinco palabras en secuencia.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.it.png) +![Immagine che mostra un classificatore con incorporazioni per cinque parole in sequenza.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.it.png) -> Imagen del autor +> Immagine dell'autore -## ✍️ Ejercicios: Embeddings +## ✍️ Esercizi: Incorporazioni -Continúa tu aprendizaje en los siguientes cuadernos: -* [Embeddings con PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +Continua il tuo apprendimento nei seguenti notebook: +* [Incorporazioni con PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Incorporazioni con TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) -## Embeddings Semánticos: Word2Vec +## Incorporazioni Semantiche: Word2Vec -Mientras que la capa de embedding aprendió a mapear palabras a representaciones vectoriales, esta representación no necesariamente tenía mucho significado semántico. Sería ideal aprender una representación vectorial de tal manera que palabras similares o sinónimos correspondan a vectores que están cerca unos de otros en términos de alguna distancia vectorial (por ejemplo, distancia euclidiana). +Mentre il livello di incorporazione ha imparato a mappare le parole in rappresentazioni vettoriali, questa rappresentazione non aveva necessariamente un significato semantico rilevante. Sarebbe utile imparare una rappresentazione vettoriale tale che parole simili o sinonimi corrispondano a vettori vicini tra loro in termini di una certa distanza vettoriale (ad esempio, distanza euclidea). -Para lograrlo, necesitamos preentrenar nuestro modelo de embedding en una gran colección de texto de una manera específica. Una forma de entrenar embeddings semánticos se llama [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Se basa en dos arquitecturas principales que se utilizan para producir una representación distribuida de palabras: +Per fare ciò, dobbiamo pre-addestrare il nostro modello di incorporazione su una grande collezione di testi in un modo specifico. Un metodo per addestrare incorporazioni semantiche è chiamato [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Si basa su due principali architetture utilizzate per produrre una rappresentazione distribuita delle parole: - - **Bolsa de palabras continua** (CBoW) — en esta arquitectura, entrenamos el modelo para predecir una palabra a partir del contexto circundante. Dado el ngrama $(W_{-2},W_{-1},W_0,W_1,W_2)$, el objetivo del modelo es predecir $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. - - **Skip-gram continuo** es lo opuesto a CBoW. El modelo utiliza una ventana de palabras de contexto circundante para predecir la palabra actual. + - **Continuous bag-of-words** (CBoW) — in questa architettura, addestriamo il modello a prevedere una parola dal contesto circostante. Dato l'ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, l'obiettivo del modello è prevedere $W_0$ da $(W_{-2},W_{-1},W_1,W_2)$. + - **Continuous skip-gram** è l'opposto del CBoW. Il modello utilizza la finestra di parole di contesto circostanti per prevedere la parola corrente. -CBoW es más rápido, mientras que skip-gram es más lento, pero hace un mejor trabajo representando palabras poco frecuentes. +CBoW è più veloce, mentre skip-gram è più lento, ma rappresenta meglio le parole meno frequenti. -![Imagen que muestra ambos algoritmos CBoW y Skip-Gram para convertir palabras en vectores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png) +![Immagine che mostra gli algoritmi CBoW e Skip-Gram per convertire parole in vettori.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png) -> Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) +> Immagine tratta da [questo articolo](https://arxiv.org/pdf/1301.3781.pdf) -Los embeddings preentrenados de Word2Vec (así como otros modelos similares, como GloVe) también se pueden usar en lugar de la capa de embedding en redes neuronales. Sin embargo, necesitamos lidiar con los vocabularios, porque el vocabulario utilizado para preentrenar Word2Vec/GloVe probablemente difiera del vocabulario en nuestro corpus de texto. Echa un vistazo a los cuadernos anteriores para ver cómo se puede resolver este problema. +Le incorporazioni pre-addestrate di Word2Vec (così come altri modelli simili, come GloVe) possono anche essere utilizzate al posto del livello di incorporazione nelle reti neurali. Tuttavia, dobbiamo gestire i vocabolari, poiché il vocabolario utilizzato per pre-addestrare Word2Vec/GloVe probabilmente differisce dal vocabolario nel nostro corpus di testo. Dai un'occhiata ai notebook sopra per vedere come risolvere questo problema. -## Embeddings Contextuales +## Incorporazioni Contestuali -Una limitación clave de las representaciones de embedding preentrenadas tradicionales como Word2Vec es el problema de la desambiguación del sentido de la palabra. Aunque los embeddings preentrenados pueden capturar parte del significado de las palabras en contexto, cada posible significado de una palabra se codifica en el mismo embedding. Esto puede causar problemas en modelos posteriores, ya que muchas palabras, como la palabra 'play', tienen diferentes significados dependiendo del contexto en el que se utilizan. +Una limitazione chiave delle rappresentazioni tradizionali di incorporazioni pre-addestrate come Word2Vec è il problema della disambiguazione del significato delle parole. Sebbene le incorporazioni pre-addestrate possano catturare parte del significato delle parole nel contesto, ogni possibile significato di una parola è codificato nella stessa incorporazione. Questo può causare problemi nei modelli a valle, poiché molte parole, come la parola 'play', hanno significati diversi a seconda del contesto in cui vengono utilizzate. -Por ejemplo, la palabra 'play' en estas dos oraciones diferentes tiene un significado bastante distinto: +Ad esempio, la parola 'play' in queste due frasi ha significati piuttosto diversi: -- Fui a una **obra** en el teatro. -- John quiere **jugar** con sus amigos. +- Sono andato a vedere una **commedia** a teatro. +- John vuole **giocare** con i suoi amici. -Los embeddings preentrenados anteriores representan ambos significados de la palabra 'play' en el mismo embedding. Para superar esta limitación, necesitamos construir embeddings basados en un **modelo de lenguaje**, que se entrena en un gran corpus de texto y *sabe* cómo se pueden combinar las palabras en diferentes contextos. Discutir los embeddings contextuales está fuera del alcance de este tutorial, pero volveremos a ellos al hablar sobre modelos de lenguaje más adelante en el curso. +Le incorporazioni pre-addestrate sopra rappresentano entrambi i significati della parola 'play' nella stessa incorporazione. Per superare questa limitazione, dobbiamo costruire incorporazioni basate sul **modello linguistico**, che è addestrato su un ampio corpus di testi e *sa* come le parole possono essere messe insieme in diversi contesti. Discutere le incorporazioni contestuali è fuori dal campo di questa lezione, ma ne parleremo quando affronteremo i modelli linguistici più avanti nel corso. -## Conclusión +## Conclusione -En esta lección, descubriste cómo construir y usar capas de embedding en TensorFlow y Pytorch para reflejar mejor los significados semánticos de las palabras. +In questa lezione, hai scoperto come costruire e utilizzare i livelli di incorporazione in TensorFlow e PyTorch per riflettere meglio i significati semantici delle parole. -## 🚀 Desafío +## 🚀 Sfida -Word2Vec se ha utilizado para algunas aplicaciones interesantes, incluyendo la generación de letras de canciones y poesía. Echa un vistazo a [este artículo](https://www.politetype.com/blog/word2vec-color-poems) que explica cómo el autor utilizó Word2Vec para generar poesía. También mira [este video de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descubrir una explicación diferente de esta técnica. Luego intenta aplicar estas técnicas a tu propio corpus de texto, quizás obtenido de Kaggle. +Word2Vec è stato utilizzato per alcune applicazioni interessanti, tra cui la generazione di testi poetici e di canzoni. Dai un'occhiata a [questo articolo](https://www.politetype.com/blog/word2vec-color-poems) che spiega come l'autore ha utilizzato Word2Vec per generare poesie. Guarda anche [questo video di Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) per scoprire un'altra spiegazione di questa tecnica. Poi prova ad applicare queste tecniche al tuo corpus di testo, magari preso da Kaggle. -## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Lee este artículo sobre Word2Vec: [Estimación Eficiente de Representaciones de Palabras en Espacio Vectorial](https://arxiv.org/pdf/1301.3781.pdf) +Leggi questo articolo su Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) -## [Asignación: Cuadernos](assignment.md) +## [Compito: Notebook](assignment.md) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/14-Embeddings/assignment.md b/translations/it/lessons/5-NLP/14-Embeddings/assignment.md index 081ba80e..f82a993a 100644 --- a/translations/it/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/it/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ -# Tarea: Cuadernos + +# Compito: Notebook -Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, asegurándote de dar la atribución correspondiente. Reescribe el cuaderno para resaltar tus propios hallazgos. Intenta con un tipo diferente de conjunto de datos y documenta tus descubrimientos, utilizando textos como [estas letras de los Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). +Utilizzando i notebook associati a questa lezione (sia la versione PyTorch che quella TensorFlow), eseguili nuovamente utilizzando il tuo dataset, magari uno preso da Kaggle, utilizzato con attribuzione. Riscrivi il notebook per evidenziare le tue scoperte. Prova un tipo diverso di dataset e documenta le tue osservazioni, utilizzando testi come [questi testi dei Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/15-LanguageModeling/README.md b/translations/it/lessons/5-NLP/15-LanguageModeling/README.md index d9a68b66..9dc29bcb 100644 --- a/translations/it/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/it/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ -# Modelado de Lenguaje + +# Modellazione del linguaggio -Las incrustaciones semánticas, como Word2Vec y GloVe, son en realidad un primer paso hacia el **modelado de lenguaje**: la creación de modelos que de alguna manera *entienden* (o *representan*) la naturaleza del lenguaje. +Gli embedding semantici, come Word2Vec e GloVe, rappresentano in realtà un primo passo verso la **modellazione del linguaggio** - la creazione di modelli che in qualche modo *comprendono* (o *rappresentano*) la natura del linguaggio. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -La idea principal detrás del modelado de lenguaje es entrenarlos en conjuntos de datos no etiquetados de manera no supervisada. Esto es importante porque tenemos enormes cantidades de texto no etiquetado disponible, mientras que la cantidad de texto etiquetado siempre estará limitada por el esfuerzo que podemos dedicar a la etiquetación. A menudo, podemos construir modelos de lenguaje que pueden **predecir palabras faltantes** en el texto, porque es fácil enmascarar una palabra aleatoria en el texto y usarla como muestra de entrenamiento. +L'idea principale della modellazione del linguaggio è allenare i modelli su dataset non etichettati in modo non supervisionato. Questo è importante perché abbiamo a disposizione enormi quantità di testo non etichettato, mentre la quantità di testo etichettato sarà sempre limitata dall'impegno necessario per etichettarlo. Molto spesso, possiamo costruire modelli di linguaggio che possono **predire parole mancanti** nel testo, poiché è facile oscurare una parola casuale nel testo e usarla come campione di allenamento. -## Entrenamiento de Incrustaciones +## Allenamento degli embedding -En nuestros ejemplos anteriores, utilizamos incrustaciones semánticas preentrenadas, pero es interesante ver cómo se pueden entrenar esas incrustaciones. Hay varias ideas posibles que se pueden utilizar: +Nei nostri esempi precedenti, abbiamo utilizzato embedding semantici pre-addestrati, ma è interessante vedere come questi embedding possano essere allenati. Ci sono diverse idee che possono essere utilizzate: -* Modelado de lenguaje **N-Gram**, cuando predecimos un token al observar N tokens anteriores (N-gram) -* **Continuous Bag-of-Words** (CBoW), cuando predecimos el token del medio $W_0$ en una secuencia de tokens $W_{-N}$, ..., $W_N$. -* **Skip-gram**, donde predecimos un conjunto de tokens vecinos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir del token del medio $W_0$. +* **Modellazione del linguaggio N-Gram**, in cui si predice un token osservando i N token precedenti (N-gram). +* **Continuous Bag-of-Words** (CBoW), in cui si predice il token centrale $W_0$ in una sequenza di token $W_{-N}$, ..., $W_N$. +* **Skip-gram**, dove si predice un insieme di token vicini {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partire dal token centrale $W_0$. -![imagen del artículo sobre la conversión de palabras a vectores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png) +![immagine tratta da un articolo sulla conversione di parole in vettori](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png) -> Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) +> Immagine tratta da [questo articolo](https://arxiv.org/pdf/1301.3781.pdf) -## ✍️ Notebooks de Ejemplo: Entrenando el modelo CBoW +## ✍️ Notebook di esempio: Allenamento del modello CBoW -Continúa tu aprendizaje en los siguientes notebooks: +Continua il tuo apprendimento nei seguenti notebook: -* [Entrenando CBoW Word2Vec con TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) -* [Entrenando CBoW Word2Vec con PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) +* [Allenamento di CBoW Word2Vec con TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Allenamento di CBoW Word2Vec con PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) -## Conclusión +## Conclusione -En la lección anterior hemos visto que las incrustaciones de palabras funcionan como por arte de magia. Ahora sabemos que entrenar incrustaciones de palabras no es una tarea muy compleja, y deberíamos ser capaces de entrenar nuestras propias incrustaciones de palabras para texto específico de un dominio si es necesario. +Nella lezione precedente abbiamo visto che gli embedding delle parole funzionano come per magia! Ora sappiamo che allenare gli embedding delle parole non è un compito molto complesso e dovremmo essere in grado di allenare i nostri embedding per testi specifici di dominio, se necessario. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## Revisión y Autoestudio +## Revisione e studio autonomo -* [Tutorial oficial de PyTorch sobre Modelado de Lenguaje](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -* [Tutorial oficial de TensorFlow sobre el entrenamiento del modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). -* Usar el marco **gensim** para entrenar las incrustaciones más comúnmente utilizadas en unas pocas líneas de código se describe [en esta documentación](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial ufficiale di PyTorch sulla modellazione del linguaggio](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial ufficiale di TensorFlow sull'allenamento del modello Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Utilizzare il framework **gensim** per allenare gli embedding più comunemente usati in poche righe di codice è descritto [in questa documentazione](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -## 🚀 [Tarea: Entrenar el Modelo Skip-Gram](lab/README.md) +## 🚀 [Compito: Allenare il modello Skip-Gram](lab/README.md) -En el laboratorio, te desafiamos a modificar el código de esta lección para entrenar el modelo skip-gram en lugar de CBoW. [Lee los detalles](lab/README.md) +Nel laboratorio, ti sfidiamo a modificare il codice di questa lezione per allenare un modello Skip-Gram invece di CBoW. [Leggi i dettagli](lab/README.md) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md index d0ebbfaa..228daf4b 100644 --- a/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# Entrenamiento del Modelo Skip-Gram + +# Addestramento del Modello Skip-Gram -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -En este laboratorio, te desafiamos a entrenar un modelo Word2Vec utilizando la técnica Skip-Gram. Entrena una red con incrustaciones para predecir palabras vecinas en una ventana Skip-Gram de $N$ tokens de ancho. Puedes usar el [código de esta lección](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) y modificarlo ligeramente. +In questo laboratorio, ti sfidiamo a addestrare un modello Word2Vec utilizzando la tecnica Skip-Gram. Addestra una rete con embedding per prevedere le parole vicine in una finestra Skip-Gram di $N$ token. Puoi utilizzare il [codice di questa lezione](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) e modificarlo leggermente. -## El Conjunto de Datos +## Il Dataset -Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/); por ejemplo, aquí tienes un enlace directo a [Las Aventuras de Alicia en el País de las Maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. O, puedes utilizar las obras de Shakespeare, que puedes obtener utilizando el siguiente código: +Puoi utilizzare qualsiasi libro. Puoi trovare molti testi gratuiti su [Project Gutenberg](https://www.gutenberg.org/), ad esempio, ecco un link diretto a [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) di Lewis Carroll. Oppure, puoi utilizzare le opere di Shakespeare, che puoi ottenere con il seguente codice: ```python path_to_file = tf.keras.utils.get_file( @@ -17,13 +26,13 @@ path_to_file = tf.keras.utils.get_file( text = open(path_to_file, 'rb').read().decode(encoding='utf-8') ``` -## ¡Explora! +## Esplora! -Si tienes tiempo y quieres profundizar en el tema, intenta explorar varias cosas: +Se hai tempo e vuoi approfondire l'argomento, prova a esplorare diversi aspetti: -* ¿Cómo afecta el tamaño de la incrustación a los resultados? -* ¿Cómo afectan los diferentes estilos de texto al resultado? -* Toma varios tipos de palabras muy diferentes y sus sinónimos, obtén sus representaciones vectoriales, aplica PCA para reducir las dimensiones a 2 y plótalas en un espacio 2D. ¿Ves algún patrón? +* Come influisce la dimensione dell'embedding sui risultati? +* Come influiscono gli stili di testo diversi sui risultati? +* Prendi diversi tipi di parole molto differenti e i loro sinonimi, ottieni le loro rappresentazioni vettoriali, applica PCA per ridurre le dimensioni a 2 e tracciale in uno spazio 2D. Riesci a vedere qualche schema? -**Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/16-RNN/README.md b/translations/it/lessons/5-NLP/16-RNN/README.md index 3c00b791..5fddf200 100644 --- a/translations/it/lessons/5-NLP/16-RNN/README.md +++ b/translations/it/lessons/5-NLP/16-RNN/README.md @@ -1,86 +1,96 @@ -# Redes Neurais Recorrentes + +# Reti Neurali Ricorrenti -## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -Nas seções anteriores, temos utilizado representações semânticas ricas de texto e um classificador linear simples sobre as incorporações. O que essa arquitetura faz é capturar o significado agregado das palavras em uma frase, mas não leva em consideração a **ordem** das palavras, pois a operação de agregação sobre as incorporações removeu essa informação do texto original. Como esses modelos não conseguem modelar a ordem das palavras, eles não conseguem resolver tarefas mais complexas ou ambíguas, como geração de texto ou resposta a perguntas. +Nelle sezioni precedenti, abbiamo utilizzato rappresentazioni semantiche ricche del testo e un semplice classificatore lineare sopra gli embeddings. Questa architettura cattura il significato aggregato delle parole in una frase, ma non tiene conto dell'**ordine** delle parole, poiché l'operazione di aggregazione sugli embeddings elimina questa informazione dal testo originale. Poiché questi modelli non sono in grado di modellare l'ordine delle parole, non possono risolvere compiti più complessi o ambigui come la generazione di testo o la risposta a domande. -Para capturar o significado de uma sequência de texto, precisamos usar outra arquitetura de rede neural, chamada de **rede neural recorrente**, ou RNN. Na RNN, passamos nossa frase pela rede um símbolo de cada vez, e a rede produz um **estado**, que então passamos para a rede novamente com o próximo símbolo. +Per catturare il significato di una sequenza di testo, dobbiamo utilizzare un'altra architettura di rete neurale, chiamata **rete neurale ricorrente**, o RNN. Nelle RNN, passiamo la nostra frase attraverso la rete un simbolo alla volta, e la rete produce uno **stato**, che poi passiamo nuovamente alla rete insieme al simbolo successivo. ![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.it.png) -> Imagem do autor +> Immagine dell'autore -Dada a sequência de entrada de tokens X0,...,Xn, a RNN cria uma sequência de blocos de rede neural e treina essa sequência de ponta a ponta usando retropropagação. Cada bloco da rede recebe um par (Xi,Si) como entrada e produz Si+1 como resultado. O estado final Sn ou (saída Yn) vai para um classificador linear para produzir o resultado. Todos os blocos da rede compartilham os mesmos pesos e são treinados de ponta a ponta usando uma única passagem de retropropagação. +Data la sequenza di input di token X0,...,Xn, l'RNN crea una sequenza di blocchi di rete neurale e allena questa sequenza end-to-end utilizzando la retropropagazione. Ogni blocco di rete prende come input una coppia (Xi,Si) e produce Si+1 come risultato. Lo stato finale Sn (o l'output Yn) viene inviato a un classificatore lineare per produrre il risultato. Tutti i blocchi di rete condividono gli stessi pesi e vengono allenati end-to-end con un unico passaggio di retropropagazione. -Como os vetores de estado S0,...,Sn são passados pela rede, ela consegue aprender as dependências sequenciais entre as palavras. Por exemplo, quando a palavra *não* aparece em algum lugar na sequência, ela pode aprender a negar certos elementos dentro do vetor de estado, resultando em negação. +Poiché i vettori di stato S0,...,Sn vengono passati attraverso la rete, essa è in grado di apprendere le dipendenze sequenziali tra le parole. Ad esempio, quando la parola *non* appare da qualche parte nella sequenza, può imparare a negare determinati elementi all'interno del vettore di stato, risultando in una negazione. -> ✅ Como os pesos de todos os blocos RNN na imagem acima são compartilhados, a mesma imagem pode ser representada como um único bloco (à direita) com um loop de feedback recorrente, que passa o estado de saída da rede de volta para a entrada. +> ✅ Poiché i pesi di tutti i blocchi RNN nell'immagine sopra sono condivisi, la stessa immagine può essere rappresentata come un unico blocco (a destra) con un ciclo di feedback ricorrente, che passa lo stato di output della rete nuovamente all'input. -## Anatomia de uma Célula RNN +## Anatomia di una cella RNN -Vamos ver como uma célula RNN simples é organizada. Ela aceita o estado anterior Si-1 e o símbolo atual Xi como entradas e precisa produzir o estado de saída Si (e, às vezes, também estamos interessados em alguma outra saída Yi, como no caso de redes generativas). +Vediamo come è organizzata una semplice cella RNN. Accetta lo stato precedente Si-1 e il simbolo corrente Xi come input, e deve produrre lo stato di output Si (e, a volte, siamo anche interessati a un altro output Yi, come nel caso delle reti generative). -Uma célula RNN simples possui duas matrizes de pesos internas: uma transforma um símbolo de entrada (vamos chamá-la de W) e a outra transforma um estado de entrada (H). Nesse caso, a saída da rede é calculada como σ(W×Xi+H×Si-1+b), onde σ é a função de ativação e b é um viés adicional. +Una semplice cella RNN ha due matrici di peso al suo interno: una trasforma un simbolo di input (chiamiamola W) e un'altra trasforma uno stato di input (H). In questo caso, l'output della rete è calcolato come σ(W×Xi+H×Si-1+b), dove σ è la funzione di attivazione e b è un bias aggiuntivo. -Anatomia da Célula RNN +Anatomia di una cella RNN -> Imagem do autor +> Immagine dell'autore -Em muitos casos, os tokens de entrada são passados pela camada de incorporação antes de entrar na RNN para reduzir a dimensionalidade. Nesse caso, se a dimensão dos vetores de entrada é *emb_size*, e o vetor de estado é *hid_size* - o tamanho de W é *emb_size*×*hid_size*, e o tamanho de H é *hid_size*×*hid_size*. +In molti casi, i token di input vengono passati attraverso il livello di embedding prima di entrare nell'RNN per ridurre la dimensionalità. In questo caso, se la dimensione dei vettori di input è *emb_size* e il vettore di stato è *hid_size*, la dimensione di W è *emb_size*×*hid_size* e la dimensione di H è *hid_size*×*hid_size*. -## Memória de Longo e Curto Prazo (LSTM) +## Long Short Term Memory (LSTM) -Um dos principais problemas das RNNs clássicas é o chamado problema dos **gradientes que desaparecem**. Como as RNNs são treinadas de ponta a ponta em uma única passagem de retropropagação, elas têm dificuldade em propagar o erro para as primeiras camadas da rede, e assim a rede não consegue aprender relacionamentos entre tokens distantes. Uma das maneiras de evitar esse problema é introduzir **gerenciamento de estado explícito** usando os chamados **portões**. Existem duas arquiteturas bem conhecidas desse tipo: **Memória de Longo e Curto Prazo** (LSTM) e **Unidade de Relé Gated** (GRU). +Uno dei principali problemi delle RNN classiche è il cosiddetto problema dei **gradienti che svaniscono**. Poiché le RNN vengono allenate end-to-end in un unico passaggio di retropropagazione, hanno difficoltà a propagare l'errore ai primi strati della rete, e quindi la rete non riesce ad apprendere le relazioni tra token distanti. Uno dei modi per evitare questo problema è introdurre una **gestione esplicita dello stato** utilizzando i cosiddetti **gate**. Esistono due architetture ben note di questo tipo: **Long Short Term Memory** (LSTM) e **Gated Relay Unit** (GRU). -![Imagem mostrando um exemplo de célula de memória de longo e curto prazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Immagine che mostra un esempio di cella LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) -> Fonte da imagem TBD +> Fonte immagine TBD -A Rede LSTM é organizada de maneira semelhante à RNN, mas há dois estados que estão sendo passados de camada para camada: o estado real C e o vetor oculto H. Em cada unidade, o vetor oculto Hi é concatenado com a entrada Xi, e eles controlam o que acontece com o estado C através dos **portões**. Cada portão é uma rede neural com ativação sigmoide (saída na faixa [0,1]), que pode ser pensada como uma máscara bit a bit quando multiplicada pelo vetor de estado. Existem os seguintes portões (da esquerda para a direita na imagem acima): +La rete LSTM è organizzata in modo simile all'RNN, ma ci sono due stati che vengono passati da uno strato all'altro: lo stato effettivo C e il vettore nascosto H. In ogni unità, il vettore nascosto Hi viene concatenato con l'input Xi, e insieme controllano cosa accade allo stato C tramite i **gate**. Ogni gate è una rete neurale con attivazione sigmoide (output nell'intervallo [0,1]), che può essere considerata come una maschera bitwise quando moltiplicata per il vettore di stato. I gate sono i seguenti (da sinistra a destra nell'immagine sopra): -* O **portão de esquecimento** recebe um vetor oculto e determina quais componentes do vetor C devemos esquecer e quais devemos passar adiante. -* O **portão de entrada** pega algumas informações dos vetores de entrada e ocultos e as insere no estado. -* O **portão de saída** transforma o estado através de uma camada linear com ativação *tanh*, e então seleciona alguns de seus componentes usando um vetor oculto Hi para produzir um novo estado Ci+1. +* Il **forget gate** prende un vettore nascosto e determina quali componenti del vettore C dobbiamo dimenticare e quali passare. +* L'**input gate** prende alcune informazioni dai vettori di input e nascosti e le inserisce nello stato. +* L'**output gate** trasforma lo stato tramite un livello lineare con attivazione *tanh*, quindi seleziona alcune delle sue componenti utilizzando un vettore nascosto Hi per produrre un nuovo stato Ci+1. -Os componentes do estado C podem ser pensados como algumas bandeiras que podem ser ativadas ou desativadas. Por exemplo, quando encontramos um nome *Alice* na sequência, podemos querer assumir que se refere a um personagem feminino e ativar a bandeira no estado que temos um substantivo feminino na frase. Quando encontramos mais adiante as frases *e Tom*, elevamos a bandeira de que temos um substantivo plural. Assim, manipulando o estado, podemos supostamente acompanhar as propriedades gramaticais das partes da frase. +Le componenti dello stato C possono essere considerate come flag che possono essere attivati o disattivati. Ad esempio, quando incontriamo un nome *Alice* nella sequenza, potremmo voler assumere che si riferisca a un personaggio femminile e attivare il flag nello stato che indica un sostantivo femminile nella frase. Quando successivamente incontriamo la frase *e Tom*, attiveremo il flag che indica un sostantivo plurale. Così, manipolando lo stato, possiamo teoricamente tenere traccia delle proprietà grammaticali delle parti della frase. -> ✅ Um excelente recurso para entender os detalhes do LSTM é este ótimo artigo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. +> ✅ Una risorsa eccellente per comprendere i dettagli interni delle LSTM è questo ottimo articolo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) di Christopher Olah. -## RNNs Bidirecionais e Multicamadas +## RNN Bidirezionali e Multistrato -Discutimos redes recorrentes que operam em uma direção, do início de uma sequência até o final. Isso parece natural, pois se assemelha à maneira como lemos e ouvimos a fala. No entanto, como em muitos casos práticos temos acesso aleatório à sequência de entrada, pode fazer sentido executar o cálculo recorrente em ambas as direções. Essas redes são chamadas de RNNs **bidirecionais**. Ao lidar com uma rede bidirecional, precisaríamos de dois vetores de estado oculto, um para cada direção. +Abbiamo discusso di reti ricorrenti che operano in una direzione, dall'inizio di una sequenza alla fine. Sembra naturale, poiché ricorda il modo in cui leggiamo e ascoltiamo il discorso. Tuttavia, poiché in molti casi pratici abbiamo accesso casuale alla sequenza di input, potrebbe avere senso eseguire il calcolo ricorrente in entrambe le direzioni. Tali reti sono chiamate **RNN bidirezionali**. Quando si lavora con una rete bidirezionale, avremo bisogno di due vettori di stato nascosto, uno per ciascuna direzione. -Uma rede recorrente, seja unidirecional ou bidirecional, captura certos padrões dentro de uma sequência e pode armazená-los em um vetor de estado ou passá-los para a saída. Assim como nas redes convolucionais, podemos construir outra camada recorrente sobre a primeira para capturar padrões de nível superior e construir a partir de padrões de baixo nível extraídos pela primeira camada. Isso nos leva à noção de uma **RNN de múltiplas camadas**, que consiste em duas ou mais redes recorrentes, onde a saída da camada anterior é passada para a próxima camada como entrada. +Una rete ricorrente, sia unidirezionale che bidirezionale, cattura determinati schemi all'interno di una sequenza e può memorizzarli in un vettore di stato o passarli all'output. Come con le reti convoluzionali, possiamo costruire un altro livello ricorrente sopra il primo per catturare schemi di livello superiore e costruire a partire dagli schemi di basso livello estratti dal primo livello. Questo ci porta al concetto di **RNN multistrato**, che consiste in due o più reti ricorrenti, dove l'output del livello precedente viene passato al livello successivo come input. -![Imagem mostrando uma RNN de memória de longo e curto prazo multicamada](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.it.jpg) +![Immagine che mostra un RNN LSTM multistrato](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.it.jpg) -*Imagem de [este maravilhoso post](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* +*Immagine tratta da [questo fantastico post](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) di Fernando López* -## ✍️ Exercícios: Incorporações +## ✍️ Esercizi: Embeddings -Continue seu aprendizado nos seguintes notebooks: +Continua il tuo apprendimento nei seguenti notebook: -* [RNNs com PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) -* [RNNs com TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) +* [RNNs con PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs con TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) -## Conclusão +## Conclusione -Nesta unidade, vimos que as RNNs podem ser usadas para classificação de sequências, mas na verdade, elas podem lidar com muitas outras tarefas, como geração de texto, tradução automática e mais. Consideraremos essas tarefas na próxima unidade. +In questa unità, abbiamo visto che le RNN possono essere utilizzate per la classificazione di sequenze, ma in realtà possono gestire molti altri compiti, come la generazione di testo, la traduzione automatica e altro. Considereremo questi compiti nell'unità successiva. -## 🚀 Desafio +## 🚀 Sfida -Leia um pouco sobre LSTMs e considere suas aplicações: +Leggi alcune pubblicazioni sulle LSTM e considera le loro applicazioni: - [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) -- [Show, Attend and Tell: Geração de Legendas de Imagens Neurais com Atenção Visual](https://arxiv.org/pdf/1502.03044v2.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) -## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## Revisão e Autoestudo +## Revisione e Studio Autonomo -- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) di Christopher Olah. -## [Tarefa: Notebooks](assignment.md) +## [Compito: Notebook](assignment.md) -**Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +**Disclaimer (Avvertenza)**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di tenere presente che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/16-RNN/assignment.md b/translations/it/lessons/5-NLP/16-RNN/assignment.md index 19fc65ac..0b87e6c4 100644 --- a/translations/it/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/it/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ -# Tarea: Cuadernos + +# Compito: Notebook -Utilizando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, tal vez uno de Kaggle, siempre con la debida atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba con un tipo diferente de conjunto de datos y documenta tus descubrimientos, usando texto como [este conjunto de datos de competición de Kaggle sobre tweets del clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). +Utilizzando i notebook associati a questa lezione (sia la versione PyTorch che quella TensorFlow), eseguili nuovamente utilizzando il tuo dataset, magari uno preso da Kaggle, utilizzato con attribuzione. Riscrivi il notebook per evidenziare le tue scoperte. Prova un tipo diverso di dataset e documenta le tue osservazioni, utilizzando un testo come [questo dataset di una competizione Kaggle sui tweet meteo](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md index 3e1b6e13..66940033 100644 --- a/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,79 +1,88 @@ -# Redes Generativas + +# Reti generative -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Las Redes Neuronales Recurrentes (RNN) y sus variantes con celdas de compuerta, como las Celdas de Memoria a Largo Plazo (LSTM) y las Unidades Recurrentes con Compuerta (GRU), proporcionan un mecanismo para el modelado del lenguaje, ya que pueden aprender el orden de las palabras y ofrecer predicciones para la siguiente palabra en una secuencia. Esto nos permite utilizar RNN para **tareas generativas**, como la generación de texto ordinario, la traducción automática e incluso la creación de subtítulos para imágenes. +Le Reti Neurali Ricorrenti (RNN) e le loro varianti con celle gated, come le celle Long Short Term Memory (LSTM) e le Gated Recurrent Units (GRU), offrono un meccanismo per il modellamento del linguaggio, poiché possono apprendere l'ordine delle parole e fornire previsioni per la parola successiva in una sequenza. Questo ci permette di utilizzare le RNN per **compiti generativi**, come la generazione di testo ordinario, la traduzione automatica e persino la descrizione di immagini. -> ✅ Piensa en todas las veces que te has beneficiado de tareas generativas, como la finalización de texto mientras escribes. Investiga en tus aplicaciones favoritas para ver si han aprovechado las RNN. +> ✅ Pensa a tutte le volte in cui hai beneficiato di compiti generativi, come il completamento del testo mentre scrivi. Fai una ricerca sulle tue applicazioni preferite per vedere se hanno utilizzato le RNN. -En la arquitectura de RNN que discutimos en la unidad anterior, cada unidad RNN producía el siguiente estado oculto como salida. Sin embargo, también podemos agregar otra salida a cada unidad recurrente, lo que nos permitiría generar una **secuencia** (que tiene la misma longitud que la secuencia original). Además, podemos utilizar unidades RNN que no aceptan una entrada en cada paso, y solo toman un vector de estado inicial, para luego producir una secuencia de salidas. +Nell'architettura RNN discussa nell'unità precedente, ogni unità RNN produceva il prossimo stato nascosto come output. Tuttavia, possiamo anche aggiungere un altro output a ogni unità ricorrente, che ci permetterebbe di generare una **sequenza** (di lunghezza uguale alla sequenza originale). Inoltre, possiamo utilizzare unità RNN che non accettano un input a ogni passo, ma prendono solo un vettore di stato iniziale e producono una sequenza di output. -Esto permite diferentes arquitecturas neuronales que se muestran en la imagen a continuación: +Questo consente diverse architetture neurali, come mostrato nell'immagine seguente: -![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg) +![Immagine che mostra i modelli comuni di reti neurali ricorrenti.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg) -> Imagen del artículo [Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) +> Immagine tratta dal post del blog [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) di [Andrej Karpaty](http://karpathy.github.io/) -* **Uno a uno** es una red neuronal tradicional con una entrada y una salida. -* **Uno a muchos** es una arquitectura generativa que acepta un valor de entrada y genera una secuencia de valores de salida. Por ejemplo, si queremos entrenar una red de **subtitulación de imágenes** que produzca una descripción textual de una imagen, podemos usar una imagen como entrada, pasarla a través de una CNN para obtener su estado oculto, y luego tener una cadena recurrente que genere el subtítulo palabra por palabra. -* **Muchos a uno** corresponde a las arquitecturas RNN que describimos en la unidad anterior, como la clasificación de texto. -* **Muchos a muchos**, o **secuencia a secuencia**, corresponde a tareas como la **traducción automática**, donde una primera RNN recopila toda la información de la secuencia de entrada en el estado oculto, y otra cadena RNN despliega este estado en la secuencia de salida. +* **One-to-one** è una rete neurale tradizionale con un input e un output +* **One-to-many** è un'architettura generativa che accetta un valore di input e genera una sequenza di valori di output. Ad esempio, se vogliamo addestrare una rete di **descrizione immagini** che produca una descrizione testuale di un'immagine, possiamo fornire un'immagine come input, passarla attraverso una CNN per ottenere il suo stato nascosto e poi utilizzare una catena ricorrente per generare la descrizione parola per parola +* **Many-to-one** corrisponde alle architetture RNN descritte nell'unità precedente, come la classificazione del testo +* **Many-to-many**, o **sequence-to-sequence**, corrisponde a compiti come la **traduzione automatica**, dove una prima RNN raccoglie tutte le informazioni dalla sequenza di input nel suo stato nascosto, e un'altra catena RNN espande questo stato nella sequenza di output. -En esta unidad, nos enfocaremos en modelos generativos simples que nos ayuden a generar texto. Para simplificar, utilizaremos la tokenización a nivel de caracteres. +In questa unità, ci concentreremo su modelli generativi semplici che ci aiutano a generare testo. Per semplicità, utilizzeremo la tokenizzazione a livello di carattere. -Entrenaremos esta RNN para generar texto paso a paso. En cada paso, tomaremos una secuencia de caracteres de longitud `nchars` y pediremos a la red que genere el siguiente carácter de salida para cada carácter de entrada: +Addestreremo questa RNN per generare testo passo dopo passo. A ogni passo, prenderemo una sequenza di caratteri di lunghezza `nchars` e chiederemo alla rete di generare il prossimo carattere di output per ogni carattere di input: -![Imagen que muestra un ejemplo de generación de la palabra 'HELLO' por una RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.it.png) +![Immagine che mostra un esempio di generazione RNN della parola 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.it.png) -Al generar texto (durante la inferencia), comenzamos con algún **prompter**, que se pasa a través de las celdas RNN para generar su estado intermedio, y luego desde este estado comienza la generación. Generamos un carácter a la vez y pasamos el estado y el carácter generado a otra celda RNN para generar el siguiente, hasta que generemos suficientes caracteres. +Durante la generazione del testo (in fase di inferenza), iniziamo con un **prompt**, che viene passato attraverso le celle RNN per generare il suo stato intermedio, e da questo stato inizia la generazione. Generiamo un carattere alla volta e passiamo lo stato e il carattere generato a un'altra cella RNN per generare il successivo, fino a generare un numero sufficiente di caratteri. -> Imagen del autor +> Immagine dell'autore -## ✍️ Ejercicios: Redes Generativas +## ✍️ Esercizi: Reti generative -Continúa tu aprendizaje en los siguientes cuadernos: +Continua il tuo apprendimento nei seguenti notebook: -* [Redes Generativas con PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) -* [Redes Generativas con TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) +* [Reti generative con PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Reti generative con TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) -## Generación de texto suave y temperatura +## Generazione di testo soft e temperatura -La salida de cada celda RNN es una distribución de probabilidad de caracteres. Si siempre tomamos el carácter con la probabilidad más alta como el siguiente carácter en el texto generado, el texto a menudo puede volverse "cíclico" entre las mismas secuencias de caracteres una y otra vez, como en este ejemplo: +L'output di ogni cella RNN è una distribuzione di probabilità dei caratteri. Se prendiamo sempre il carattere con la probabilità più alta come prossimo carattere nel testo generato, il testo può spesso diventare "ciclico", ripetendo le stesse sequenze di caratteri più e più volte, come in questo esempio: ``` today of the second the company and a second the company ... ``` -Sin embargo, si miramos la distribución de probabilidad para el siguiente carácter, podría ser que la diferencia entre algunas de las probabilidades más altas no sea enorme, por ejemplo, un carácter puede tener una probabilidad de 0.2, otro - 0.19, etc. Por ejemplo, al buscar el siguiente carácter en la secuencia '*play*', el siguiente carácter podría ser igualmente un espacio o **e** (como en la palabra *player*). +Tuttavia, se osserviamo la distribuzione di probabilità per il prossimo carattere, potrebbe accadere che la differenza tra alcune delle probabilità più alte non sia enorme, ad esempio un carattere può avere una probabilità di 0.2, un altro di 0.19, ecc. Ad esempio, quando cerchiamo il prossimo carattere nella sequenza '*play*', il prossimo carattere potrebbe essere ugualmente uno spazio o **e** (come nella parola *player*). -Esto nos lleva a la conclusión de que no siempre es "justo" seleccionar el carácter con una probabilidad más alta, porque elegir el segundo más alto podría aún llevarnos a un texto significativo. Es más sabio **muestrear** caracteres de la distribución de probabilidad dada por la salida de la red. También podemos utilizar un parámetro, **temperatura**, que aplanará la distribución de probabilidad, en caso de que queramos añadir más aleatoriedad, o hacerla más pronunciada, si queremos ceñirnos más a los caracteres de mayor probabilidad. +Questo ci porta alla conclusione che non è sempre "giusto" selezionare il carattere con la probabilità più alta, perché scegliere il secondo più alto potrebbe comunque portare a un testo significativo. È più saggio **campionare** i caratteri dalla distribuzione di probabilità fornita dall'output della rete. Possiamo anche utilizzare un parametro, **temperatura**, che appiattisce la distribuzione di probabilità, nel caso in cui vogliamo aggiungere più casualità, o la rende più ripida, se vogliamo attenerci maggiormente ai caratteri con probabilità più alta. -Explora cómo se implementa esta generación de texto suave en los cuadernos enlazados anteriormente. +Esplora come questa generazione di testo soft è implementata nei notebook collegati sopra. -## Conclusión +## Conclusione -Aunque la generación de texto puede ser útil por sí misma, los principales beneficios provienen de la capacidad de generar texto utilizando RNN a partir de algún vector de características inicial. Por ejemplo, la generación de texto se utiliza como parte de la traducción automática (secuencia a secuencia, en este caso el vector de estado del *encoder* se utiliza para generar o *decodificar* el mensaje traducido), o para generar una descripción textual de una imagen (en cuyo caso el vector de características provendría de un extractor CNN). +Sebbene la generazione di testo possa essere utile di per sé, i principali vantaggi derivano dalla capacità di generare testo utilizzando le RNN a partire da un vettore di caratteristiche iniziale. Ad esempio, la generazione di testo viene utilizzata come parte della traduzione automatica (sequence-to-sequence, in questo caso il vettore di stato dell'*encoder* viene utilizzato per generare o *decodificare* il messaggio tradotto), o per generare una descrizione testuale di un'immagine (in questo caso il vettore di caratteristiche proviene dall'estrattore CNN). -## 🚀 Desafío +## 🚀 Sfida -Toma algunas lecciones en Microsoft Learn sobre este tema. +Segui alcune lezioni su Microsoft Learn su questo argomento -* Generación de Texto con [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) +* Generazione di testo con [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## Revisión y Autoestudio +## Revisione e studio autonomo -Aquí hay algunos artículos para ampliar tus conocimientos: +Ecco alcuni articoli per ampliare le tue conoscenze -* Diferentes enfoques para la generación de texto con Cadenas de Markov, LSTM y GPT-2: [artículo del blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) -* Ejemplo de generación de texto en la [documentación de Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) +* Approcci diversi alla generazione di testo con Catena di Markov, LSTM e GPT-2: [post del blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Esempio di generazione di testo nella [documentazione Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) -## [Asignación](lab/README.md) +## [Compito](lab/README.md) -Hemos visto cómo generar texto carácter por carácter. En el laboratorio, explorarás la generación de texto a nivel de palabras. +Abbiamo visto come generare testo carattere per carattere. Nel laboratorio, esplorerai la generazione di testo a livello di parola. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 45707c1a..ea17a694 100644 --- a/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ -# Generación de Texto a Nivel de Palabra usando RNNs + +# Generazione di Testo a Livello di Parola con RNN -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -En este laboratorio, debes elegir un libro y utilizarlo como conjunto de datos para entrenar un generador de texto a nivel de palabra. +In questo laboratorio, devi scegliere un libro qualsiasi e utilizzarlo come dataset per addestrare un generatore di testo a livello di parola. -## El Conjunto de Datos +## Il Dataset -Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/); por ejemplo, aquí tienes un enlace directo a [Las Aventuras de Alicia en el País de las Maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. +Puoi utilizzare qualsiasi libro. Puoi trovare molti testi gratuiti su [Project Gutenberg](https://www.gutenberg.org/), ad esempio, ecco un link diretto a [Le avventure di Alice nel Paese delle Meraviglie](https://www.gutenberg.org/files/11/11-0.txt)) di Lewis Carroll. -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/18-Transformers/README.md b/translations/it/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..5656380e --- /dev/null +++ b/translations/it/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Meccanismi di Attenzione e Trasformatori + +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Uno dei problemi più importanti nel campo dell'elaborazione del linguaggio naturale (NLP) è la **traduzione automatica**, un compito essenziale alla base di strumenti come Google Translate. In questa sezione ci concentreremo sulla traduzione automatica o, più in generale, su qualsiasi compito di *sequence-to-sequence* (chiamato anche **trasduzione di frasi**). + +Con le RNN, il sequence-to-sequence viene implementato da due reti ricorrenti, dove una rete, l'**encoder**, comprime una sequenza di input in uno stato nascosto, mentre un'altra rete, il **decoder**, espande questo stato nascosto in un risultato tradotto. Ci sono alcuni problemi con questo approccio: + +* Lo stato finale della rete encoder ha difficoltà a ricordare l'inizio di una frase, causando una scarsa qualità del modello per frasi lunghe. +* Tutte le parole in una sequenza hanno lo stesso impatto sul risultato. In realtà, però, alcune parole nella sequenza di input hanno spesso un impatto maggiore sugli output sequenziali rispetto ad altre. + +I **Meccanismi di Attenzione** forniscono un mezzo per pesare l'impatto contestuale di ciascun vettore di input su ciascuna previsione di output della RNN. Questo viene implementato creando collegamenti diretti tra gli stati intermedi della RNN di input e la RNN di output. In questo modo, quando si genera il simbolo di output yt, si tengono in considerazione tutti gli stati nascosti di input hi, con diversi coefficienti di peso αt,i. + +![Immagine che mostra un modello encoder/decoder con uno strato di attenzione additiva](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.it.png) + +> Modello encoder-decoder con meccanismo di attenzione additiva in [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citato da [questo blog post](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +La matrice di attenzione {αi,j} rappresenta il grado in cui determinate parole di input influenzano la generazione di una determinata parola nella sequenza di output. Di seguito è riportato un esempio di tale matrice: + +![Immagine che mostra un allineamento campione trovato da RNNsearch-50, tratto da Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.it.png) + +> Figura da [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +I meccanismi di attenzione sono responsabili di gran parte dello stato dell'arte attuale o quasi attuale nell'NLP. Tuttavia, aggiungere l'attenzione aumenta notevolmente il numero di parametri del modello, il che ha portato a problemi di scalabilità con le RNN. Una delle principali limitazioni nello scalare le RNN è che la natura ricorrente dei modelli rende difficile il batch e la parallelizzazione dell'addestramento. In una RNN, ogni elemento di una sequenza deve essere elaborato in ordine sequenziale, il che significa che non può essere facilmente parallelizzato. + +![Encoder Decoder con Attenzione](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figura dal [Blog di Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +L'adozione dei meccanismi di attenzione combinata con questa limitazione ha portato alla creazione dei modelli Transformer, ora lo stato dell'arte, che conosciamo e utilizziamo oggi, come BERT e Open-GPT3. + +## Modelli Transformer + +Una delle idee principali dietro i transformer è evitare la natura sequenziale delle RNN e creare un modello parallelizzabile durante l'addestramento. Questo viene ottenuto implementando due idee: + +* codifica posizionale +* utilizzo del meccanismo di auto-attenzione per catturare i pattern invece delle RNN (o CNN) (ecco perché l'articolo che introduce i transformer si chiama *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codifica/Embedding Posizionale + +L'idea della codifica posizionale è la seguente. +1. Quando si utilizzano le RNN, la posizione relativa dei token è rappresentata dal numero di passi, e quindi non deve essere rappresentata esplicitamente. +2. Tuttavia, passando all'attenzione, è necessario conoscere le posizioni relative dei token all'interno di una sequenza. +3. Per ottenere la codifica posizionale, si arricchisce la sequenza di token con una sequenza di posizioni dei token nella sequenza (cioè una sequenza di numeri 0,1, ...). +4. Si mescola quindi la posizione del token con un vettore di embedding del token. Per trasformare la posizione (intero) in un vettore, si possono utilizzare diversi approcci: + +* Embedding addestrabile, simile all'embedding dei token. Questo è l'approccio considerato qui. Si applicano livelli di embedding sia ai token che alle loro posizioni, ottenendo vettori di embedding delle stesse dimensioni, che vengono poi sommati. +* Funzione di codifica posizionale fissa, come proposto nell'articolo originale. + + + +> Immagine dell'autore + +Il risultato ottenuto con l'embedding posizionale incorpora sia il token originale che la sua posizione all'interno di una sequenza. + +### Auto-Attenzione Multi-Testa + +Successivamente, è necessario catturare alcuni pattern all'interno della sequenza. Per fare ciò, i transformer utilizzano un meccanismo di **auto-attenzione**, che è essenzialmente l'attenzione applicata alla stessa sequenza sia come input che come output. Applicare l'auto-attenzione consente di tenere conto del **contesto** all'interno della frase e di vedere quali parole sono interconnesse. Ad esempio, permette di vedere a quali parole si riferiscono i coreferenti, come *esso*, e di considerare il contesto: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.it.png) + +> Immagine dal [Blog di Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Nei transformer, si utilizza l'**attenzione multi-testa** per dare alla rete la capacità di catturare diversi tipi di dipendenze, ad esempio relazioni tra parole a lungo termine vs. breve termine, coreferenze vs. altro, ecc. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contiene maggiori dettagli sull'implementazione dei livelli transformer. + +### Attenzione Encoder-Decoder + +Nei transformer, l'attenzione viene utilizzata in due punti: + +* Per catturare i pattern all'interno del testo di input utilizzando l'auto-attenzione. +* Per eseguire la traduzione di sequenze - è il livello di attenzione tra encoder e decoder. + +L'attenzione encoder-decoder è molto simile al meccanismo di attenzione utilizzato nelle RNN, come descritto all'inizio di questa sezione. Questo diagramma animato spiega il ruolo dell'attenzione encoder-decoder. + +![GIF animata che mostra come vengono eseguite le valutazioni nei modelli transformer.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Poiché ogni posizione di input viene mappata indipendentemente a ciascuna posizione di output, i transformer possono parallelizzare meglio rispetto alle RNN, il che consente modelli linguistici molto più grandi ed espressivi. Ogni testa di attenzione può essere utilizzata per apprendere diverse relazioni tra parole, migliorando i compiti di elaborazione del linguaggio naturale a valle. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) è una rete transformer multi-strato molto grande con 12 livelli per *BERT-base* e 24 per *BERT-large*. Il modello viene prima pre-addestrato su un ampio corpus di dati testuali (Wikipedia + libri) utilizzando un addestramento non supervisionato (predizione di parole mascherate in una frase). Durante il pre-addestramento, il modello acquisisce livelli significativi di comprensione del linguaggio che possono poi essere sfruttati con altri dataset tramite il fine tuning. Questo processo è chiamato **transfer learning**. + +![immagine da http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.it.png) + +> Immagine [fonte](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Esercizi: Transformer + +Continua il tuo apprendimento nei seguenti notebook: + +* [Transformer in PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformer in TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusione + +In questa lezione hai appreso dei Transformer e dei Meccanismi di Attenzione, strumenti essenziali nella cassetta degli attrezzi dell'NLP. Esistono molte varianti delle architetture Transformer, tra cui BERT, DistilBERT, BigBird, OpenGPT3 e altre, che possono essere ottimizzate. Il pacchetto [HuggingFace](https://github.com/huggingface/) fornisce un repository per l'addestramento di molte di queste architetture sia con PyTorch che con TensorFlow. + +## 🚀 Sfida + +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revisione e Studio Autonomo + +* [Blog post](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), che spiega il classico articolo [Attention is all you need](https://arxiv.org/abs/1706.03762) sui transformer. +* [Una serie di blog post](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sui transformer, che spiegano l'architettura in dettaglio. + +## [Compito](assignment.md) + +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatizzate potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/18-Transformers/assignment.md b/translations/it/lessons/5-NLP/18-Transformers/assignment.md index 2cb8fd0c..54f79588 100644 --- a/translations/it/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/it/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# Tarea: Transformadores + +# Compito: Transformers -¡Experimenta con Transformadores en HuggingFace! Prueba algunos de los scripts que proporcionan para trabajar con los diversos modelos disponibles en su sitio: https://huggingface.co/docs/transformers/run_scripts. Intenta con uno de sus conjuntos de datos, luego importa uno de los tuyos de este currículo o de Kaggle y verifica si puedes generar textos interesantes. Elabora un cuaderno con tus hallazgos. +Sperimenta con i Transformers su HuggingFace! Prova alcuni degli script che forniscono per lavorare con i vari modelli disponibili sul loro sito: https://huggingface.co/docs/transformers/run_scripts. Prova uno dei loro dataset, poi importa uno dei tuoi da questo curriculum o da Kaggle e verifica se riesci a generare testi interessanti. Produci un notebook con le tue scoperte. -**Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di tenere presente che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/19-NER/README.md b/translations/it/lessons/5-NLP/19-NER/README.md index 14b39bb7..a703ada5 100644 --- a/translations/it/lessons/5-NLP/19-NER/README.md +++ b/translations/it/lessons/5-NLP/19-NER/README.md @@ -1,85 +1,95 @@ -# Reconocimiento de Entidades Nombradas + +# Riconoscimento delle Entità Nominate -Hasta ahora, hemos estado concentrándonos principalmente en una tarea de NLP: la clasificación. Sin embargo, también existen otras tareas de NLP que se pueden llevar a cabo con redes neuronales. Una de esas tareas es el **[Reconocimiento de Entidades Nombradas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que se ocupa de reconocer entidades específicas dentro del texto, como lugares, nombres de personas, intervalos de fecha y hora, fórmulas químicas, entre otros. +Fino ad ora, ci siamo concentrati principalmente su un compito di elaborazione del linguaggio naturale (NLP) - la classificazione. Tuttavia, ci sono anche altri compiti NLP che possono essere affrontati con le reti neurali. Uno di questi compiti è il **[Riconoscimento delle Entità Nominate](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), che si occupa di riconoscere entità specifiche all'interno di un testo, come luoghi, nomi di persone, intervalli di date e orari, formule chimiche e così via. -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) -## Ejemplo de Uso de NER +## Esempio di utilizzo del NER -Supongamos que deseas desarrollar un chatbot de lenguaje natural, similar a Amazon Alexa o Google Assistant. La forma en que funcionan los chatbots inteligentes es *entendiendo* lo que el usuario quiere al realizar una clasificación de texto en la frase de entrada. El resultado de esta clasificación es lo que se llama **intención**, que determina lo que debe hacer un chatbot. +Supponiamo che tu voglia sviluppare un chatbot di linguaggio naturale, simile ad Amazon Alexa o Google Assistant. Il modo in cui funzionano i chatbot intelligenti è *comprendere* ciò che l'utente desidera facendo una classificazione del testo sulla frase di input. Il risultato di questa classificazione è il cosiddetto **intent**, che determina cosa dovrebbe fare il chatbot. Bot NER -> Imagen del autor +> Immagine dell'autore -Sin embargo, un usuario puede proporcionar algunos parámetros como parte de la frase. Por ejemplo, al preguntar por el clima, puede especificar una ubicación o una fecha. Un bot debería ser capaz de entender esas entidades y llenar los espacios de parámetros correspondientes antes de realizar la acción. Aquí es exactamente donde entra en juego el NER. +Tuttavia, un utente potrebbe fornire alcuni parametri come parte della frase. Ad esempio, quando chiede informazioni sul meteo, potrebbe specificare una località o una data. Un bot dovrebbe essere in grado di comprendere queste entità e riempire di conseguenza gli spazi dei parametri prima di eseguire l'azione. Ed è proprio qui che entra in gioco il NER. -> ✅ Otro ejemplo sería [analizar artículos científicos médicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Una de las principales cosas que necesitamos buscar son términos médicos específicos, como enfermedades y sustancias médicas. Si bien un pequeño número de enfermedades probablemente se puede extraer utilizando búsqueda de subcadenas, entidades más complejas, como compuestos químicos y nombres de medicamentos, requieren un enfoque más complicado. +> ✅ Un altro esempio potrebbe essere [l'analisi di articoli scientifici medici](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Una delle principali cose da cercare sono termini medici specifici, come malattie e sostanze mediche. Mentre un piccolo numero di malattie può probabilmente essere estratto utilizzando una ricerca per sottostringhe, entità più complesse, come composti chimici e nomi di farmaci, richiedono un approccio più sofisticato. -## NER como Clasificación de Tokens +## NER come classificazione dei token -Los modelos de NER son esencialmente **modelos de clasificación de tokens**, porque para cada uno de los tokens de entrada necesitamos decidir si pertenece a una entidad o no, y si lo hace, a qué clase de entidad. +I modelli NER sono essenzialmente **modelli di classificazione dei token**, perché per ciascuno dei token di input dobbiamo decidere se appartiene a un'entità o meno, e se sì - a quale classe di entità. -Considera el siguiente título de un artículo: +Consideriamo il seguente titolo di un articolo: -**Regurgitación de la válvula tricúspide** y **toxicidad de carbonato de litio** en un recién nacido. +**Rigurgito della valvola tricuspide** e **carbonato di litio** **tossicità** in un neonato. -Las entidades aquí son: +Le entità qui sono: -* Regurgitación de la válvula tricúspide es una enfermedad (`DIS`) -* Carbonato de litio es una sustancia química (`CHEM`) -* Toxicidad también es una enfermedad (`DIS`) +* Rigurgito della valvola tricuspide è una malattia (`DIS`) +* Carbonato di litio è una sostanza chimica (`CHEM`) +* Tossicità è anch'essa una malattia (`DIS`) -Observa que una entidad puede abarcar varios tokens. Y, como en este caso, necesitamos distinguir entre dos entidades consecutivas. Por lo tanto, es común usar dos clases para cada entidad: una que especifica el primer token de la entidad (a menudo se utiliza el prefijo `B-`, para **b**eginning), y otra - la continuación de una entidad (`I-`, para **i**nner token). También usamos `O` como una clase para representar todos los **o**tros tokens. Este etiquetado de tokens se llama [etiquetado BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (o IOB). Cuando se etiqueta, nuestro título se verá así: +Nota che un'entità può estendersi su più token. E, come in questo caso, dobbiamo distinguere tra due entità consecutive. Pertanto, è comune utilizzare due classi per ciascuna entità - una che specifica il primo token dell'entità (spesso si utilizza il prefisso `B-`, per **b**eginning), e un'altra per la continuazione di un'entità (`I-`, per **i**nner token). Usiamo anche `O` come classe per rappresentare tutti gli altri token (**o**ther). Questo tipo di etichettatura dei token è chiamato [etichettatura BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (o IOB). Quando etichettato, il nostro titolo apparirà così: -Token | Etiqueta +Token | Tag ------|----- -Tricuspid | B-DIS -valve | I-DIS -regurgitation | I-DIS -and | O -lithium | B-CHEM -carbonate | I-CHEM -toxicity | B-DIS +Rigurgito | B-DIS +della | I-DIS +valvola | I-DIS +tricuspide | I-DIS +e | O +carbonato | B-CHEM +di | I-CHEM +litio | I-CHEM +tossicità | B-DIS in | O -a | O -newborn | O -infant | O +un | O +neonato | O . | O -Dado que necesitamos construir una correspondencia uno a uno entre tokens y clases, podemos entrenar un modelo de red neuronal **muchos a muchos** a partir de esta imagen: +Poiché dobbiamo costruire una corrispondenza uno-a-uno tra token e classi, possiamo addestrare un modello neurale **many-to-many** come mostrato in questa immagine: -![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg) +![Immagine che mostra i modelli comuni di reti neurali ricorrenti.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg) -> *Imagen de [esta entrada de blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Los modelos de clasificación de tokens NER corresponden a la arquitectura de red más a la derecha en esta imagen.* +> *Immagine tratta da [questo post sul blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) di [Andrej Karpathy](http://karpathy.github.io/). I modelli di classificazione dei token NER corrispondono all'architettura di rete più a destra in questa immagine.* -## Entrenamiento de Modelos NER +## Addestramento dei modelli NER -Dado que un modelo de NER es esencialmente un modelo de clasificación de tokens, podemos utilizar RNNs con los que ya estamos familiarizados para esta tarea. En este caso, cada bloque de la red recurrente devolverá el ID del token. El siguiente cuaderno de ejemplo muestra cómo entrenar un LSTM para la clasificación de tokens. +Poiché un modello NER è essenzialmente un modello di classificazione dei token, possiamo utilizzare le RNN che già conosciamo per questo compito. In questo caso, ogni blocco della rete ricorrente restituirà l'ID del token. Il seguente notebook di esempio mostra come addestrare un LSTM per la classificazione dei token. -## ✍️ Cuadernos de Ejemplo: NER +## ✍️ Notebook di esempio: NER -Continúa tu aprendizaje en el siguiente cuaderno: +Continua il tuo apprendimento con il seguente notebook: * [NER con TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) -## Conclusión +## Conclusione -Un modelo de NER es un **modelo de clasificación de tokens**, lo que significa que puede ser utilizado para realizar clasificación de tokens. Esta es una tarea muy común en NLP, ayudando a reconocer entidades específicas dentro del texto, incluyendo lugares, nombres, fechas y más. +Un modello NER è un **modello di classificazione dei token**, il che significa che può essere utilizzato per eseguire la classificazione dei token. Questo è un compito molto comune nell'NLP, utile per riconoscere entità specifiche all'interno di un testo, inclusi luoghi, nomi, date e altro. -## 🚀 Desafío +## 🚀 Sfida -Completa la tarea vinculada a continuación para entrenar un modelo de reconocimiento de entidades nombradas para términos médicos, y luego pruébalo en un conjunto de datos diferente. +Completa l'esercizio collegato qui sotto per addestrare un modello di riconoscimento delle entità nominate per termini medici, quindi provalo su un dataset diverso. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) -## Revisión y Autoestudio +## Revisione e studio autonomo -Lee el blog [La Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) y sigue la sección de Lectura Adicional en ese artículo para profundizar tu conocimiento. +Leggi il blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) e segui la sezione di letture aggiuntive in quell'articolo per approfondire le tue conoscenze. -## [Tarea](lab/README.md) +## [Esercizio](lab/README.md) -En la tarea para esta lección, tendrás que entrenar un modelo de reconocimiento de entidades médicas. Puedes comenzar entrenando un modelo LSTM como se describe en esta lección y luego proceder a utilizar el modelo transformador BERT. Lee [las instrucciones](lab/README.md) para obtener todos los detalles. +Nell'esercizio di questa lezione, dovrai addestrare un modello di riconoscimento delle entità mediche. Puoi iniziare con l'addestramento di un modello LSTM come descritto in questa lezione, e poi passare all'utilizzo del modello transformer BERT. Leggi [le istruzioni](lab/README.md) per ottenere tutti i dettagli. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/19-NER/lab/README.md b/translations/it/lessons/5-NLP/19-NER/lab/README.md index 24b3d1db..23c2b163 100644 --- a/translations/it/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/it/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -Laboratorio de Asignación del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto dal [Curriculum AI for Beginners](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Compito -En este laboratorio, necesitas entrenar un modelo de reconocimiento de entidades nombradas para términos médicos. +In questo laboratorio, devi addestrare un modello di riconoscimento di entità nominate (NER) per termini medici. -## El Conjunto de Datos +## Il Dataset -Para entrenar el modelo NER, necesitamos un conjunto de datos debidamente etiquetado con entidades médicas. El [conjunto de datos BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contiene enfermedades y entidades químicas etiquetadas de más de 1500 artículos. Puedes descargar el conjunto de datos después de registrarte en su sitio web. +Per addestrare un modello NER, abbiamo bisogno di un dataset etichettato correttamente con entità mediche. Il [dataset BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contiene entità etichettate di malattie e sostanze chimiche tratte da oltre 1500 articoli. Puoi scaricare il dataset registrandoti sul loro sito web. -El conjunto de datos BC5CDR se ve así: +Il dataset BC5CDR si presenta così: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ El conjunto de datos BC5CDR se ve así: ... ``` -En este conjunto de datos, hay un título de artículo y un resumen en las dos primeras líneas, y luego hay entidades individuales, con posiciones de inicio y fin dentro del bloque de título + resumen. Además del tipo de entidad, obtienes el ID de ontología de esta entidad dentro de alguna ontología médica. +In questo dataset, ci sono il titolo e l'abstract dell'articolo nelle prime due righe, seguiti dalle singole entità con le posizioni di inizio e fine all'interno del blocco titolo+abstract. Oltre al tipo di entità, viene fornito l'ID ontologico di questa entità all'interno di una specifica ontologia medica. -Necesitarás escribir algo de código en Python para convertir esto en codificación BIO. +Dovrai scrivere del codice Python per convertire questi dati nel formato BIO. -## La Red +## La Rete -El primer intento de NER se puede realizar utilizando una red LSTM, como en nuestro ejemplo que viste durante la lección. Sin embargo, en tareas de PLN, la [arquitectura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), y específicamente los [modelos de lenguaje BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), muestran resultados mucho mejores. Los modelos BERT preentrenados comprenden la estructura general de un idioma y pueden ser ajustados para tareas específicas con conjuntos de datos relativamente pequeños y costos computacionales bajos. +Un primo tentativo di NER può essere fatto utilizzando una rete LSTM, come nell'esempio che hai visto durante la lezione. Tuttavia, nei compiti di NLP, l'[architettura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), e in particolare i [modelli linguistici BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), mostrano risultati molto migliori. I modelli BERT pre-addestrati comprendono la struttura generale di una lingua e possono essere ottimizzati per compiti specifici con dataset relativamente piccoli e costi computazionali contenuti. -Dado que planeamos aplicar NER a un escenario médico, tiene sentido usar un modelo BERT entrenado en textos médicos. Microsoft Research ha lanzado un modelo preentrenado llamado [PubMedBERT][PubMedBERT] ([publicación][PubMedBERT-Pub]), que fue ajustado utilizando textos del repositorio de [PubMed](https://pubmed.ncbi.nlm.nih.gov/). +Poiché intendiamo applicare il NER a uno scenario medico, ha senso utilizzare un modello BERT addestrato su testi medici. Microsoft Research ha rilasciato un modello pre-addestrato chiamato [PubMedBERT][PubMedBERT] ([pubblicazione][PubMedBERT-Pub]), ottimizzato utilizzando testi dal repository [PubMed](https://pubmed.ncbi.nlm.nih.gov/). -El estándar *de facto* para entrenar modelos transformer es la biblioteca [Hugging Face Transformers](https://huggingface.co/). También contiene un repositorio de modelos preentrenados mantenidos por la comunidad, incluyendo PubMedBERT. Para cargar y usar este modelo, solo necesitamos un par de líneas de código: +Lo standard *de facto* per l'addestramento di modelli transformer è la libreria [Hugging Face Transformers](https://huggingface.co/). Contiene anche un repository di modelli pre-addestrati mantenuti dalla comunità, incluso PubMedBERT. Per caricare e utilizzare questo modello, bastano poche righe di codice: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -Esto nos proporciona el objeto `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` que puede dividir el texto de entrada en tokens. Necesitarás convertir el conjunto de datos al formato BIO, teniendo en cuenta la tokenización de PubMedBERT. Puedes usar [este fragmento de código en Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiración. +Questo ci fornisce il `model` stesso, costruito per il compito di classificazione dei token utilizzando un numero di `classes` classi, oltre all'oggetto `tokenizer` che può suddividere il testo di input in token. Dovrai convertire il dataset nel formato BIO, tenendo conto della tokenizzazione di PubMedBERT. Puoi utilizzare [questo frammento di codice Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) come ispirazione. -## Conclusión +## Conclusione -Esta tarea está muy cerca de la tarea real que probablemente tendrás si deseas obtener más información sobre grandes volúmenes de textos en lenguaje natural. En nuestro caso, podemos aplicar nuestro modelo entrenado al [conjunto de datos de artículos relacionados con COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) y ver qué información podremos obtener. [Esta publicación en el blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) y [este artículo](https://www.mdpi.com/2504-2289/6/1/4) describen la investigación que se puede realizar sobre este corpus de artículos utilizando NER. +Questo compito è molto vicino a quello reale che potresti affrontare se desideri ottenere maggiori informazioni da grandi volumi di testi in linguaggio naturale. Nel nostro caso, possiamo applicare il nostro modello addestrato al [dataset di articoli relativi al COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) e vedere quali informazioni possiamo ricavare. [Questo post sul blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) e [questo articolo](https://www.mdpi.com/2504-2289/6/1/4) descrivono le ricerche che possono essere condotte su questo corpus di articoli utilizzando il NER. -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/20-LangModels/README.md b/translations/it/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..0b1b2b1d --- /dev/null +++ b/translations/it/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Modelli di Linguaggio Pre-Addestrati di Grandi Dimensioni + +In tutti i nostri compiti precedenti, abbiamo addestrato una rete neurale per svolgere un determinato compito utilizzando un dataset etichettato. Con i grandi modelli transformer, come BERT, utilizziamo il modellamento del linguaggio in modalità auto-supervisionata per costruire un modello di linguaggio, che viene poi specializzato per compiti specifici downstream con ulteriore addestramento specifico per il dominio. Tuttavia, è stato dimostrato che i grandi modelli di linguaggio possono anche risolvere molti compiti senza ALCUN addestramento specifico per il dominio. Una famiglia di modelli in grado di fare ciò è chiamata **GPT**: Generative Pre-Trained Transformer. + +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generazione di Testo e Perplessità + +L'idea di una rete neurale in grado di svolgere compiti generali senza addestramento downstream è presentata nel documento [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). L'idea principale è che molti altri compiti possono essere modellati utilizzando la **generazione di testo**, poiché comprendere il testo significa essenzialmente essere in grado di produrlo. Poiché il modello è addestrato su una quantità enorme di testo che racchiude la conoscenza umana, diventa anche esperto su una vasta gamma di argomenti. + +> Comprendere e essere in grado di produrre testo implica anche conoscere qualcosa sul mondo che ci circonda. Anche le persone imparano in gran parte leggendo, e la rete GPT è simile in questo senso. + +Le reti di generazione di testo funzionano prevedendo la probabilità della parola successiva $$P(w_N)$$. Tuttavia, la probabilità incondizionata della parola successiva è uguale alla frequenza di questa parola nel corpus di testo. GPT è in grado di fornire la **probabilità condizionale** della parola successiva, date le precedenti: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Puoi leggere di più sulle probabilità nel nostro [Curriculum di Data Science per Principianti](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +La qualità di un modello di generazione di linguaggio può essere definita utilizzando la **perplessità**. È una metrica intrinseca che ci permette di misurare la qualità del modello senza alcun dataset specifico per il compito. Si basa sulla nozione di *probabilità di una frase* - il modello assegna alta probabilità a una frase che è probabilmente reale (cioè il modello non è **perplesso** da essa), e bassa probabilità a frasi che hanno meno senso (es. *Può esso fare cosa?*). Quando forniamo al nostro modello frasi da un corpus di testo reale, ci aspettiamo che abbiano alta probabilità e bassa **perplessità**. Matematicamente, è definita come la probabilità inversa normalizzata del set di test: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Puoi sperimentare con la generazione di testo utilizzando [l'editor di testo alimentato da GPT di Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. In questo editor, inizi a scrivere il tuo testo e premendo **[TAB]** ti verranno offerte diverse opzioni di completamento. Se sono troppo brevi o non ti soddisfano, premi [TAB] di nuovo e avrai più opzioni, inclusi pezzi di testo più lunghi. + +## GPT è una Famiglia + +GPT non è un singolo modello, ma piuttosto una collezione di modelli sviluppati e addestrati da [OpenAI](https://openai.com). + +Tra i modelli GPT, abbiamo: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| Modello di linguaggio con fino a 1,5 miliardi di parametri. | Modello di linguaggio con fino a 175 miliardi di parametri. | 100T parametri e accetta sia input di immagini che di testo, producendo output testuali. | + +I modelli GPT-3 e GPT-4 sono disponibili [come servizio cognitivo da Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) e come [API di OpenAI](https://openai.com/api/). + +## Prompt Engineering + +Poiché GPT è stato addestrato su vasti volumi di dati per comprendere linguaggio e codice, fornisce output in risposta agli input (prompt). I prompt sono input o query per GPT in cui si forniscono istruzioni ai modelli sui compiti da completare successivamente. Per ottenere un risultato desiderato, è necessario il prompt più efficace, che implica la selezione delle parole, dei formati, delle frasi o persino dei simboli giusti. Questo approccio è chiamato [Prompt Engineering](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Questa documentazione](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) ti fornisce ulteriori informazioni sul prompt engineering. + +## ✍️ Notebook di Esempio: [Giocare con OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continua il tuo apprendimento nei seguenti notebook: + +* [Generazione di testo con OpenAI-GPT e Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusione + +I nuovi modelli di linguaggio pre-addestrati generali non solo modellano la struttura del linguaggio, ma contengono anche una vasta quantità di linguaggio naturale. Pertanto, possono essere utilizzati efficacemente per risolvere alcuni compiti di NLP in modalità zero-shot o few-shot. + +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Disclaimer (Avvertenza)**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di tenere presente che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/README.md b/translations/it/lessons/5-NLP/README.md index 25f07348..46361893 100644 --- a/translations/it/lessons/5-NLP/README.md +++ b/translations/it/lessons/5-NLP/README.md @@ -1,51 +1,60 @@ -# Procesamiento de Lenguaje Natural + +# Elaborazione del Linguaggio Naturale -![Resumen de tareas de PLN en un garabato](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.it.png) +![Riepilogo dei compiti NLP in uno schizzo](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.it.png) -En esta sección, nos centraremos en el uso de Redes Neuronales para abordar tareas relacionadas con el **Procesamiento de Lenguaje Natural (PLN)**. Existen muchos problemas de PLN que queremos que las computadoras sean capaces de resolver: +In questa sezione ci concentreremo sull'utilizzo delle reti neurali per gestire compiti legati all'**Elaborazione del Linguaggio Naturale (NLP)**. Ci sono molti problemi di NLP che vogliamo che i computer siano in grado di risolvere: -* **Clasificación de texto** es un problema típico de clasificación que se refiere a secuencias de texto. Ejemplos incluyen clasificar mensajes de correo electrónico como spam o no spam, o categorizar artículos como deportes, negocios, política, etc. Además, al desarrollar chatbots, a menudo necesitamos entender lo que un usuario quería decir; en este caso, estamos tratando con **clasificación de intenciones**. A menudo, en la clasificación de intenciones, necesitamos manejar muchas categorías. -* **Análisis de sentimientos** es un problema típico de regresión, donde necesitamos atribuir un número (un sentimiento) que corresponda a cuán positivo o negativo es el significado de una oración. Una versión más avanzada del análisis de sentimientos es el **análisis de sentimientos basado en aspectos** (ABSA), donde atribuimos el sentimiento no a toda la oración, sino a diferentes partes de la misma (aspectos), por ejemplo, *En este restaurante, me gustó la cocina, pero la atmósfera era horrible*. -* **Reconocimiento de Entidades Nombradas** (NER) se refiere al problema de extraer ciertas entidades del texto. Por ejemplo, podríamos necesitar entender que en la frase *Necesito volar a París mañana*, la palabra *mañana* se refiere a FECHA, y *París* es una UBICACIÓN. -* **Extracción de palabras clave** es similar a NER, pero necesitamos extraer automáticamente palabras importantes para el significado de la oración, sin preentrenamiento para tipos de entidades específicos. -* **Agrupamiento de texto** puede ser útil cuando queremos agrupar oraciones similares, por ejemplo, solicitudes similares en conversaciones de soporte técnico. -* **Respuesta a preguntas** se refiere a la capacidad de un modelo para responder a una pregunta específica. El modelo recibe un pasaje de texto y una pregunta como entradas, y necesita proporcionar un lugar en el texto donde se encuentra la respuesta a la pregunta (o, a veces, generar el texto de la respuesta). -* **Generación de texto** es la capacidad de un modelo para generar nuevo texto. Puede considerarse como una tarea de clasificación que predice la siguiente letra/palabra basada en algún *texto de entrada*. Modelos avanzados de generación de texto, como GPT-3, son capaces de resolver otras tareas de PLN como clasificación utilizando una técnica llamada [programación de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [ingeniería de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Resumen de texto** es una técnica en la que queremos que una computadora "lea" un texto largo y lo resuma en unas pocas oraciones. -* **Traducción automática** puede verse como una combinación de comprensión de texto en un idioma y generación de texto en otro. +* **Classificazione del testo** è un tipico problema di classificazione relativo alle sequenze di testo. Gli esempi includono la classificazione di e-mail come spam o non-spam, o la categorizzazione di articoli come sport, economia, politica, ecc. Inoltre, nello sviluppo di chatbot, spesso dobbiamo capire cosa l'utente vuole dire -- in questo caso ci occupiamo della **classificazione dell'intento**. Spesso, nella classificazione dell'intento, dobbiamo gestire molte categorie. +* **Analisi del sentiment** è un tipico problema di regressione, dove dobbiamo attribuire un numero (un sentiment) che corrisponde a quanto positivo/negativo è il significato di una frase. Una versione più avanzata dell'analisi del sentiment è l'**analisi del sentiment basata sugli aspetti** (ABSA), dove attribuiamo il sentiment non all'intera frase, ma a diverse parti di essa (aspetti), ad esempio: *In questo ristorante, mi è piaciuta la cucina, ma l'atmosfera era terribile*. +* **Riconoscimento delle entità nominate** (NER) si riferisce al problema di estrarre determinate entità dal testo. Ad esempio, potremmo dover capire che nella frase *Devo volare a Parigi domani* la parola *domani* si riferisce a una DATA, e *Parigi* è una LOCALITÀ. +* **Estrazione di parole chiave** è simile al NER, ma dobbiamo estrarre automaticamente le parole importanti per il significato della frase, senza pre-addestramento per tipi specifici di entità. +* **Clustering del testo** può essere utile quando vogliamo raggruppare insieme frasi simili, ad esempio, richieste simili nelle conversazioni di supporto tecnico. +* **Risposta alle domande** si riferisce alla capacità di un modello di rispondere a una domanda specifica. Il modello riceve un passaggio di testo e una domanda come input, e deve fornire un punto nel testo dove si trova la risposta alla domanda (o, a volte, generare il testo della risposta). +* **Generazione di testo** è la capacità di un modello di generare nuovo testo. Può essere considerato un compito di classificazione che prevede la prossima lettera/parola basandosi su un *prompt di testo*. Modelli avanzati di generazione di testo, come GPT-3, sono in grado di risolvere altri compiti NLP utilizzando una tecnica chiamata [programmazione tramite prompt](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [ingegneria dei prompt](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Riassunto del testo** è una tecnica in cui vogliamo che un computer "legga" un testo lungo e lo riassuma in poche frasi. +* **Traduzione automatica** può essere vista come una combinazione di comprensione del testo in una lingua e generazione di testo in un'altra. -Inicialmente, la mayoría de las tareas de PLN se resolvían utilizando métodos tradicionales como gramáticas. Por ejemplo, en la traducción automática se utilizaban analizadores para transformar la oración inicial en un árbol sintáctico, luego se extraían estructuras semánticas de nivel superior para representar el significado de la oración, y con base en este significado y la gramática del idioma objetivo se generaba el resultado. Hoy en día, muchas tareas de PLN se resuelven de manera más efectiva utilizando redes neuronales. +Inizialmente, la maggior parte dei compiti NLP veniva risolta utilizzando metodi tradizionali come le grammatiche. Ad esempio, nella traduzione automatica venivano utilizzati parser per trasformare la frase iniziale in un albero sintattico, poi venivano estratte strutture semantiche di livello superiore per rappresentare il significato della frase, e basandosi su questo significato e sulla grammatica della lingua di destinazione veniva generato il risultato. Oggi, molti compiti NLP vengono risolti in modo più efficace utilizzando reti neurali. -> Muchos métodos clásicos de PLN están implementados en la biblioteca de Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Hay un excelente [Libro de NLTK](https://www.nltk.org/book/) disponible en línea que cubre cómo se pueden resolver diferentes tareas de PLN utilizando NLTK. +> Molti metodi classici di NLP sono implementati nella libreria Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). È disponibile online un ottimo [Libro NLTK](https://www.nltk.org/book/) che copre come diversi compiti NLP possono essere risolti utilizzando NLTK. -En nuestro curso, nos enfocaremos principalmente en el uso de Redes Neuronales para PLN, y utilizaremos NLTK cuando sea necesario. +Nel nostro corso, ci concentreremo principalmente sull'utilizzo delle reti neurali per il NLP, e utilizzeremo NLTK dove necessario. -Ya hemos aprendido sobre el uso de redes neuronales para tratar con datos tabulares y con imágenes. La principal diferencia entre esos tipos de datos y el texto es que el texto es una secuencia de longitud variable, mientras que el tamaño de entrada en el caso de las imágenes es conocido de antemano. Si bien las redes convolucionales pueden extraer patrones de los datos de entrada, los patrones en el texto son más complejos. Por ejemplo, podemos tener la negación separada del sujeto que puede ser arbitraria para muchas palabras (por ejemplo, *No me gustan las naranjas*, frente a *No me gustan esas grandes naranjas coloridas y sabrosas*), y eso debería seguir siendo interpretado como un patrón. Así, para manejar el lenguaje, necesitamos introducir nuevos tipos de redes neuronales, como *redes recurrentes* y *transformadores*. +Abbiamo già imparato a utilizzare le reti neurali per gestire dati tabulari e immagini. La principale differenza tra questi tipi di dati e il testo è che il testo è una sequenza di lunghezza variabile, mentre la dimensione dell'input nel caso delle immagini è nota in anticipo. Mentre le reti convoluzionali possono estrarre schemi dai dati di input, gli schemi nel testo sono più complessi. Ad esempio, possiamo avere una negazione separata dal soggetto da molte parole (ad esempio: *Non mi piacciono le arance*, vs. *Non mi piacciono quelle grandi arance colorate e gustose*), e ciò dovrebbe comunque essere interpretato come un unico schema. Pertanto, per gestire il linguaggio dobbiamo introdurre nuovi tipi di reti neurali, come le *reti ricorrenti* e i *transformer*. -## Instalar Bibliotecas +## Installare le librerie -Si estás utilizando una instalación local de Python para ejecutar este curso, es posible que necesites instalar todas las bibliotecas necesarias para PLN utilizando los siguientes comandos: +Se stai utilizzando un'installazione locale di Python per eseguire questo corso, potresti dover installare tutte le librerie necessarie per il NLP utilizzando i seguenti comandi: -**Para PyTorch** +**Per PyTorch** ```bash pip install -r requirements-torch.txt ``` -**Para TensorFlow** +**Per TensorFlow** ```bash pip install -r requirements-tf.txt ``` -> Puedes probar PLN con TensorFlow en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) +> Puoi provare il NLP con TensorFlow su [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) -## Advertencia sobre GPU +## Avviso GPU -En esta sección, en algunos de los ejemplos estaremos entrenando modelos bastante grandes. -* **Usar una computadora con GPU habilitada**: Es recomendable ejecutar tus notebooks en una computadora habilitada para GPU para reducir los tiempos de espera al trabajar con modelos grandes. -* **Restricciones de memoria GPU**: Ejecutar en una GPU puede llevar a situaciones en las que te quedes sin memoria GPU, especialmente al entrenar modelos grandes. -* **Consumo de memoria GPU**: La cantidad de memoria GPU consumida durante el entrenamiento depende de varios factores, incluyendo el tamaño del minibatch. -* **Minimizar el tamaño del minibatch**: Si encuentras problemas de memoria GPU, considera reducir el tamaño del minibatch en tu código como una solución potencial. -* **Liberación de memoria GPU en TensorFlow**: Las versiones más antiguas de TensorFlow pueden no liberar la memoria GPU correctamente al entrenar múltiples modelos dentro de un mismo núcleo de Python. Para gestionar el uso de memoria GPU de manera efectiva, puedes configurar TensorFlow para que asigne memoria GPU solo según sea necesario. -* **Inclusión de código**: Para configurar TensorFlow para que crezca la asignación de memoria GPU solo cuando sea necesario, incluye el siguiente código en tus notebooks: +In questa sezione, in alcuni esempi alleneremo modelli piuttosto grandi. +* **Usa un computer con GPU**: È consigliabile eseguire i tuoi notebook su un computer con GPU per ridurre i tempi di attesa quando lavori con modelli grandi. +* **Vincoli di memoria GPU**: L'esecuzione su GPU può portare a situazioni in cui esaurisci la memoria GPU, specialmente durante l'addestramento di modelli grandi. +* **Consumo di memoria GPU**: La quantità di memoria GPU consumata durante l'addestramento dipende da vari fattori, inclusa la dimensione del minibatch. +* **Riduci la dimensione del minibatch**: Se riscontri problemi di memoria GPU, considera di ridurre la dimensione del minibatch nel tuo codice come possibile soluzione. +* **Rilascio della memoria GPU in TensorFlow**: Le versioni più vecchie di TensorFlow potrebbero non rilasciare correttamente la memoria GPU durante l'addestramento di più modelli all'interno di un kernel Python. Per gestire efficacemente l'uso della memoria GPU, puoi configurare TensorFlow per allocare memoria GPU solo quando necessario. +* **Inclusione del codice**: Per impostare TensorFlow affinché cresca l'allocazione della memoria GPU solo quando richiesto, includi il seguente codice nei tuoi notebook: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +62,17 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Si estás interesado en aprender sobre PLN desde una perspectiva clásica de ML, visita [este conjunto de lecciones](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). +Se sei interessato a imparare il NLP da una prospettiva di ML classico, visita [questa suite di lezioni](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## En esta Sección -En esta sección aprenderemos sobre: +## In questa sezione +In questa sezione impareremo: -* [Representación de texto como tensores](13-TextRep/README.md) -* [Embeddings de palabras](14-Emdeddings/README.md) -* [Modelado del lenguaje](15-LanguageModeling/README.md) -* [Redes Neuronales Recurrentes](16-RNN/README.md) -* [Redes Generativas](17-GenerativeNetworks/README.md) -* [Transformadores](18-Transformers/README.md) +* [Rappresentare il testo come tensori](13-TextRep/README.md) +* [Word Embeddings](14-Emdeddings/README.md) +* [Modellazione del linguaggio](15-LanguageModeling/README.md) +* [Reti neurali ricorrenti](16-RNN/README.md) +* [Reti generative](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md index 3ff8b356..199d594b 100644 --- a/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ -# Algoritmos Genéticos + +# Algoritmi Genetici -## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -Los **Algoritmos Genéticos** (GA) se basan en un **enfoque evolutivo** para la IA, en el que se utilizan métodos de evolución de una población para obtener una solución óptima a un problema dado. Fueron propuestos en 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). +Gli **Algoritmi Genetici** (GA) si basano su un **approccio evolutivo** all'IA, in cui vengono utilizzati metodi di evoluzione di una popolazione per ottenere una soluzione ottimale a un determinato problema. Furono proposti nel 1975 da [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). -Los Algoritmos Genéticos se fundamentan en las siguientes ideas: +Gli Algoritmi Genetici si basano sulle seguenti idee: -* Las soluciones válidas al problema pueden ser representadas como **genes** -* El **crossover** nos permite combinar dos soluciones para obtener una nueva solución válida -* La **selección** se utiliza para elegir soluciones más óptimas utilizando alguna **función de aptitud** -* Se introducen **mutaciones** para desestabilizar la optimización y sacarnos del mínimo local +* Le soluzioni valide al problema possono essere rappresentate come **geni** +* Il **crossover** ci permette di combinare due soluzioni per ottenere una nuova soluzione valida +* La **selezione** viene utilizzata per scegliere soluzioni più ottimali usando una **funzione di fitness** +* Vengono introdotte **mutazioni** per destabilizzare l'ottimizzazione e uscire da un minimo locale -Si deseas implementar un Algoritmo Genético, necesitas lo siguiente: +Per implementare un Algoritmo Genetico, è necessario: - * Encontrar un método para codificar nuestras soluciones al problema usando **genes** g∈Γ - * En el conjunto de genes Γ necesitamos definir una **función de aptitud** fit: Γ→**R**. Los valores más pequeños de la función corresponden a mejores soluciones. - * Definir un mecanismo de **crossover** para combinar dos genes y obtener una nueva solución válida crossover: Γ2→Γ. - * Definir un mecanismo de **mutación** mutate: Γ→Γ. + * Trovare un metodo per codificare le soluzioni del problema usando i **geni** g∈Γ + * Sul set di geni Γ, è necessario definire una **funzione di fitness** fit: Γ→**R**. Valori più piccoli della funzione corrispondono a soluzioni migliori. + * Definire un meccanismo di **crossover** per combinare due geni e ottenere una nuova soluzione valida crossover: Γ2→Γ. + * Definire un meccanismo di **mutazione** mutate: Γ→Γ. -En muchos casos, el crossover y la mutación son algoritmos bastante simples para manipular genes como secuencias numéricas o vectores de bits. +In molti casi, il crossover e la mutazione sono algoritmi piuttosto semplici per manipolare i geni come sequenze numeriche o vettori di bit. -La implementación específica de un algoritmo genético puede variar de un caso a otro, pero la estructura general es la siguiente: +L'implementazione specifica di un algoritmo genetico può variare da caso a caso, ma la struttura generale è la seguente: -1. Seleccionar una población inicial G⊂Γ -2. Seleccionar aleatoriamente una de las operaciones que se realizarán en este paso: crossover o mutación +1. Selezionare una popolazione iniziale G⊂Γ +2. Selezionare casualmente una delle operazioni da eseguire in questo passaggio: crossover o mutazione 3. **Crossover**: - * Seleccionar aleatoriamente dos genes g1, g2 ∈ G - * Calcular el crossover g=crossover(g1,g2) - * Si fit(g)1) o fit(g)2) - reemplazar el gen correspondiente en la población por g. -4. **Mutación** - seleccionar un gen aleatorio g∈G y reemplazarlo por mutate(g) -5. Repetir desde el paso 2, hasta que obtengamos un valor de fit suficientemente pequeño, o hasta que se alcance el límite en el número de pasos. + * Selezionare casualmente due geni g1, g2 ∈ G + * Calcolare il crossover g=crossover(g1,g2) + * Se fit(g)1) o fit(g)2) - sostituire il gene corrispondente nella popolazione con g. +4. **Mutazione** - selezionare un gene casuale g∈G e sostituirlo con mutate(g) +5. Ripetere dal passaggio 2, fino a ottenere un valore sufficientemente piccolo di fit, o fino a raggiungere il limite sul numero di passaggi. -## Tareas Típicas +## Compiti Tipici -Las tareas que típicamente se resuelven con Algoritmos Genéticos incluyen: +I compiti tipicamente risolti dagli Algoritmi Genetici includono: -1. Optimización de horarios -1. Empaque óptimo -1. Corte óptimo -1. Aceleración de búsqueda exhaustiva +1. Ottimizzazione dei programmi +1. Imballaggio ottimale +1. Taglio ottimale +1. Accelerazione della ricerca esaustiva -## ✍️ Ejercicios: Algoritmos Genéticos +## ✍️ Esercizi: Algoritmi Genetici -Continúa tu aprendizaje en los siguientes cuadernos: +Continua il tuo apprendimento nei seguenti notebook: -Ve a [este cuaderno](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dos ejemplos de uso de Algoritmos Genéticos: +Vai a [questo notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) per vedere due esempi di utilizzo degli Algoritmi Genetici: -1. División justa del tesoro -1. Problema de las 8 reinas +1. Divisione equa di un tesoro +1. Problema delle 8 Regine -## Conclusión +## Conclusione -Los Algoritmos Genéticos se utilizan para resolver muchos problemas, incluidos problemas de logística y búsqueda. Este campo se inspira en investigaciones que fusionaron temas de Psicología y Ciencias de la Computación. +Gli Algoritmi Genetici vengono utilizzati per risolvere molti problemi, inclusi problemi di logistica e ricerca. Il campo è ispirato da ricerche che hanno unito argomenti di Psicologia e Informatica. -## 🚀 Desafío +## 🚀 Sfida -"Los algoritmos genéticos son simples de implementar, pero su comportamiento es difícil de entender." [fuente](https://wikipedia.org/wiki/Genetic_algorithm) Realiza una investigación para encontrar una implementación de un algoritmo genético, como la resolución de un rompecabezas de Sudoku, y explica cómo funciona en un esquema o diagrama de flujo. +"Gli algoritmi genetici sono semplici da implementare, ma il loro comportamento è difficile da comprendere." [fonte](https://wikipedia.org/wiki/Genetic_algorithm) Fai una ricerca per trovare un'implementazione di un algoritmo genetico, come la risoluzione di un puzzle di Sudoku, e spiega come funziona attraverso uno schema o un diagramma di flusso. -## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Mira [este gran video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo una computadora puede aprender a jugar Super Mario utilizando redes neuronales entrenadas por algoritmos genéticos. Aprenderemos más sobre cómo las computadoras aprenden a jugar juegos como ese [en la próxima sección](../22-DeepRL/README.md). +Guarda [questo fantastico video](https://www.youtube.com/watch?v=qv6UVOQ0F44) che parla di come un computer possa imparare a giocare a Super Mario utilizzando reti neurali addestrate con algoritmi genetici. Impareremo di più su come i computer imparano a giocare a giochi simili [nella prossima sezione](../22-DeepRL/README.md). -## [Tarea: Ecuación Diofántica](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) +## [Compito: Equazione Diofantea](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Tu objetivo es resolver la llamada **ecuación diofántica** - una ecuación con raíces enteras. Por ejemplo, considera la ecuación a+2b+3c+4d=30. Necesitas encontrar las raíces enteras que satisfacen esta ecuación. +Il tuo obiettivo è risolvere la cosiddetta **equazione diofantea** - un'equazione con radici intere. Ad esempio, considera l'equazione a+2b+3c+4d=30. Devi trovare le radici intere che soddisfano questa equazione. -*Esta tarea está inspirada en [esta publicación](https://habr.com/post/128704/).* +*Questo compito è ispirato da [questo post](https://habr.com/post/128704/).* -Sugerencias: +Suggerimenti: -1. Puedes considerar que las raíces están en el intervalo [0;30] -1. Como gen, considera usar la lista de valores de raíz +1. Puoi considerare le radici nell'intervallo [0;30] +1. Come gene, considera di utilizzare l'elenco dei valori delle radici -Usa [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como punto de partida. +Usa [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) come punto di partenza. -**Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/22-DeepRL/README.md b/translations/it/lessons/6-Other/22-DeepRL/README.md index 531321ed..58bbbaae 100644 --- a/translations/it/lessons/6-Other/22-DeepRL/README.md +++ b/translations/it/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ -# Apprentissage par Renforcement Profond + +# Apprendimento per Rinforzo Profondo -L'apprentissage par renforcement (RL) est considéré comme l'un des paradigmes fondamentaux de l'apprentissage machine, aux côtés de l'apprentissage supervisé et non supervisé. Alors que dans l'apprentissage supervisé, nous nous appuyons sur un ensemble de données avec des résultats connus, le RL repose sur **l'apprentissage par l'action**. Par exemple, lorsque nous découvrons un nouveau jeu vidéo, nous commençons à jouer, même sans connaître les règles, et rapidement, nous parvenons à améliorer nos compétences simplement en jouant et en ajustant notre comportement. +L'apprendimento per rinforzo (RL) è considerato uno dei paradigmi fondamentali del machine learning, accanto all'apprendimento supervisionato e non supervisionato. Mentre nell'apprendimento supervisionato ci basiamo su un dataset con risultati noti, l'RL si basa sull'**imparare facendo**. Ad esempio, quando vediamo per la prima volta un videogioco, iniziamo a giocare anche senza conoscere le regole, e presto miglioriamo le nostre abilità semplicemente giocando e adattando il nostro comportamento. -## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) -Pour effectuer du RL, nous avons besoin de : +Per eseguire l'RL, abbiamo bisogno di: -* Un **environnement** ou **simulateur** qui définit les règles du jeu. Nous devrions être capables de réaliser des expériences dans le simulateur et d'observer les résultats. -* Une **fonction de récompense**, qui indique à quel point notre expérience a été réussie. Dans le cas de l'apprentissage d'un jeu vidéo, la récompense serait notre score final. +* Un **ambiente** o **simulatore** che definisca le regole del gioco. Dovremmo essere in grado di eseguire esperimenti nel simulatore e osservare i risultati. +* Una **funzione di ricompensa**, che indichi quanto è stato efficace il nostro esperimento. Nel caso di apprendimento per giocare a un videogioco, la ricompensa potrebbe essere il nostro punteggio finale. -Sur la base de la fonction de récompense, nous devrions être en mesure d'ajuster notre comportement et d'améliorer nos compétences, de sorte qu'à la prochaine partie, nous jouions mieux. La principale différence entre les autres types d'apprentissage machine et le RL est qu'en RL, nous ne savons généralement pas si nous gagnons ou perdons avant d'avoir terminé le jeu. Ainsi, nous ne pouvons pas dire si un mouvement particulier est bon ou non - nous ne recevons une récompense qu'à la fin du jeu. +Basandoci sulla funzione di ricompensa, dovremmo essere in grado di adattare il nostro comportamento e migliorare le nostre abilità, così da giocare meglio la volta successiva. La principale differenza tra l'RL e altri tipi di machine learning è che nell'RL tipicamente non sappiamo se abbiamo vinto o perso fino alla fine del gioco. Pertanto, non possiamo dire se una singola mossa sia buona o meno - riceviamo una ricompensa solo alla fine del gioco. -Lors de l'apprentissage par renforcement, nous réalisons généralement de nombreuses expériences. Au cours de chaque expérience, nous devons équilibrer entre le suivi de la stratégie optimale que nous avons apprise jusqu'à présent (**exploitation**) et l'exploration de nouveaux états possibles (**exploration**). +Durante l'RL, eseguiamo tipicamente molti esperimenti. In ciascun esperimento, dobbiamo bilanciare tra il seguire la strategia ottimale appresa fino a quel momento (**sfruttamento**) e l'esplorazione di nuovi stati possibili (**esplorazione**). ## OpenAI Gym -Un excellent outil pour le RL est l'[OpenAI Gym](https://gym.openai.com/) - un **environnement de simulation**, capable de simuler de nombreux environnements différents, allant des jeux Atari à la physique derrière l'équilibre d'un poteau. C'est l'un des environnements de simulation les plus populaires pour former des algorithmes d'apprentissage par renforcement, et il est maintenu par [OpenAI](https://openai.com/). +Uno strumento eccellente per l'RL è [OpenAI Gym](https://gym.openai.com/) - un **ambiente di simulazione**, che può simulare molti ambienti diversi, dai giochi Atari alla fisica dietro l'equilibrio di un'asta. È uno degli ambienti di simulazione più popolari per l'addestramento di algoritmi di apprendimento per rinforzo, ed è mantenuto da [OpenAI](https://openai.com/). -> **Note** : Vous pouvez voir tous les environnements disponibles dans OpenAI Gym [ici](https://gym.openai.com/envs/#classic_control). +> **Nota**: Puoi vedere tutti gli ambienti disponibili in OpenAI Gym [qui](https://gym.openai.com/envs/#classic_control). -## Équilibre CartPole +## Equilibrio del CartPole -Vous avez probablement tous vu des dispositifs d'équilibre modernes tels que le *Segway* ou les *Gyroscooters*. Ils parviennent à s'équilibrer automatiquement en ajustant leurs roues en réponse à un signal provenant d'un accéléromètre ou d'un gyroscope. Dans cette section, nous allons apprendre à résoudre un problème similaire - l'équilibre d'un poteau. C'est comparable à une situation où un artiste de cirque doit équilibrer un poteau sur sa main - mais cet équilibre ne se produit que dans une dimension. +Avrete probabilmente visto dispositivi moderni di bilanciamento come il *Segway* o i *Gyroscooter*. Sono in grado di bilanciarsi automaticamente regolando le ruote in risposta a un segnale proveniente da un accelerometro o giroscopio. In questa sezione, impareremo a risolvere un problema simile: bilanciare un'asta. È simile alla situazione in cui un artista circense deve bilanciare un'asta sulla mano - ma in questo caso il bilanciamento avviene solo in 1D. -Une version simplifiée de l'équilibre est connue sous le nom de problème **CartPole**. Dans le monde du cartpole, nous avons un curseur horizontal qui peut se déplacer à gauche ou à droite, et l'objectif est de maintenir un poteau vertical au sommet du curseur pendant qu'il se déplace. +Una versione semplificata del bilanciamento è nota come problema del **CartPole**. Nel mondo del CartPole, abbiamo uno slider orizzontale che può muoversi a sinistra o a destra, e l'obiettivo è bilanciare un'asta verticale sopra lo slider mentre si muove. un cartpole -Pour créer et utiliser cet environnement, nous avons besoin de quelques lignes de code Python : +Per creare e utilizzare questo ambiente, servono poche righe di codice Python: ```python import gym @@ -45,73 +54,73 @@ while not done: print(f"Total reward: {total_reward}") ``` -Chaque environnement peut être accessible de la même manière : -* `env.reset` starts a new experiment -* `env.step` effectue une étape de simulation. Il reçoit une **action** de l'**espace d'actions** et renvoie une **observation** (de l'espace d'observation), ainsi qu'une récompense et un indicateur de terminaison. +Ogni ambiente può essere utilizzato esattamente nello stesso modo: +* `env.reset` avvia un nuovo esperimento +* `env.step` esegue un passo di simulazione. Riceve un'**azione** dallo **spazio delle azioni** e restituisce un'**osservazione** (dallo spazio delle osservazioni), oltre a una ricompensa e un flag di terminazione. -Dans l'exemple ci-dessus, nous effectuons une action aléatoire à chaque étape, ce qui explique pourquoi la durée de vie de l'expérience est très courte : +Nell'esempio sopra, eseguiamo un'azione casuale a ogni passo, motivo per cui la durata dell'esperimento è molto breve: -![cartpole non équilibré](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) +![cartpole senza bilanciamento](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -L'objectif d'un algorithme de RL est de former un modèle - la soi-disant **politique** π - qui renverra l'action en réponse à un état donné. Nous pouvons également considérer la politique comme étant probabiliste, par exemple, pour tout état *s* et action *a*, elle renverra la probabilité π(*a*|*s*) que nous devrions prendre *a* dans l'état *s*. +L'obiettivo di un algoritmo di RL è addestrare un modello - la cosiddetta **policy** π - che restituisca l'azione in risposta a uno stato dato. Possiamo anche considerare la policy come probabilistica, ad esempio per ogni stato *s* e azione *a* restituirà la probabilità π(*a*|*s*) che dovremmo eseguire *a* nello stato *s*. -## Algorithme des Gradients de Politique +## Algoritmo dei Gradienti di Policy -La manière la plus évidente de modéliser une politique est de créer un réseau de neurones qui prendra des états en entrée et renverra les actions correspondantes (ou plutôt les probabilités de toutes les actions). En un sens, cela serait similaire à une tâche de classification normale, avec une différence majeure - nous ne savons pas à l'avance quelles actions nous devrions prendre à chacune des étapes. +Il modo più ovvio per modellare una policy è creare una rete neurale che prenda gli stati come input e restituisca le azioni corrispondenti (o piuttosto le probabilità di tutte le azioni). In un certo senso, sarebbe simile a un normale compito di classificazione, con una differenza fondamentale: non sappiamo in anticipo quali azioni dovremmo eseguire a ciascun passo. -L'idée ici est d'estimer ces probabilités. Nous construisons un vecteur de **récompenses cumulées** qui montre notre récompense totale à chaque étape de l'expérience. Nous appliquons également un **escompte de récompense** en multipliant les récompenses antérieures par un coefficient γ=0.99, afin de diminuer le rôle des récompenses antérieures. Ensuite, nous renforçons ces étapes le long du chemin de l'expérience qui produisent des récompenses plus importantes. +L'idea qui è stimare quelle probabilità. Costruiamo un vettore di **ricompense cumulative** che mostra la nostra ricompensa totale a ciascun passo dell'esperimento. Applichiamo anche uno **sconto sulle ricompense** moltiplicando le ricompense precedenti per un coefficiente γ=0.99, al fine di ridurre l'importanza delle ricompense più lontane nel tempo. Successivamente, rafforziamo quei passi lungo il percorso dell'esperimento che producono ricompense maggiori. -> En savoir plus sur l'algorithme de Gradient de Politique et le voir en action dans le [carnet d'exemples](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). +> Scopri di più sull'algoritmo dei Gradienti di Policy e guardalo in azione nel [notebook di esempio](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). -## Algorithme Acteur-Critique +## Algoritmo Actor-Critic -Une version améliorée de l'approche des Gradients de Politique est appelée **Acteur-Critique**. L'idée principale est que le réseau de neurones serait entraîné pour renvoyer deux choses : +Una versione migliorata dell'approccio dei Gradienti di Policy è chiamata **Actor-Critic**. L'idea principale è che la rete neurale venga addestrata per restituire due cose: -* La politique, qui détermine quelle action prendre. Cette partie est appelée **acteur**. -* L'estimation de la récompense totale que nous pouvons espérer obtenir dans cet état - cette partie est appelée **critique**. +* La policy, che determina quale azione intraprendere. Questa parte è chiamata **actor**. +* La stima della ricompensa totale che possiamo aspettarci di ottenere in questo stato - questa parte è chiamata **critic**. -En un sens, cette architecture ressemble à un [GAN](../../4-ComputerVision/10-GANs/README.md), où nous avons deux réseaux qui sont entraînés l'un contre l'autre. Dans le modèle acteur-critique, l'acteur propose l'action que nous devons prendre, et le critique essaie d'être critique et d'estimer le résultat. Cependant, notre objectif est d'entraîner ces réseaux de manière conjointe. +In un certo senso, questa architettura ricorda un [GAN](../../4-ComputerVision/10-GANs/README.md), dove abbiamo due reti che vengono addestrate l'una contro l'altra. Nel modello actor-critic, l'actor propone l'azione da intraprendere, e il critic cerca di essere critico e stimare il risultato. Tuttavia, il nostro obiettivo è addestrare queste reti in sincronia. -Comme nous connaissons à la fois les vraies récompenses cumulées et les résultats renvoyés par le critique pendant l'expérience, il est relativement facile de construire une fonction de perte qui minimisera la différence entre elles. Cela nous donnerait la **perte du critique**. Nous pouvons calculer la **perte de l'acteur** en utilisant la même approche que dans l'algorithme de gradient de politique. +Poiché conosciamo sia le ricompense cumulative reali sia i risultati restituiti dal critic durante l'esperimento, è relativamente facile costruire una funzione di perdita che minimizzi la differenza tra di essi. Questo ci darà la **perdita del critic**. Possiamo calcolare la **perdita dell'actor** utilizzando lo stesso approccio dell'algoritmo dei gradienti di policy. -Après avoir exécuté l'un de ces algorithmes, nous pouvons nous attendre à ce que notre CartPole se comporte comme ceci : +Dopo aver eseguito uno di questi algoritmi, possiamo aspettarci che il nostro CartPole si comporti così: -![un cartpole équilibré](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) +![cartpole in equilibrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) -## ✍️ Exercices : Gradients de Politique et RL Acteur-Critique +## ✍️ Esercizi: Gradienti di Policy e Actor-Critic RL -Poursuivez votre apprentissage dans les carnets suivants : +Continua il tuo apprendimento nei seguenti notebook: -* [RL dans TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) -* [RL dans PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) +* [RL in TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL in PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) -## Autres Tâches de RL +## Altri Compiti di RL -L'apprentissage par renforcement est aujourd'hui un domaine de recherche en pleine expansion. Voici quelques exemples intéressants d'apprentissage par renforcement : +L'apprendimento per rinforzo è oggi un campo di ricerca in rapida crescita. Alcuni esempi interessanti di apprendimento per rinforzo sono: -* Apprendre à un ordinateur à jouer à des **jeux Atari**. La difficulté dans ce problème est que nous n'avons pas d'état simple représenté sous forme de vecteur, mais plutôt une capture d'écran - et nous devons utiliser le CNN pour convertir cette image d'écran en un vecteur de caractéristiques, ou pour extraire des informations de récompense. Les jeux Atari sont disponibles dans le Gym. -* Apprendre à un ordinateur à jouer à des jeux de société, tels que les échecs et le Go. Récemment, des programmes à la pointe de la technologie comme **Alpha Zero** ont été entraînés à partir de zéro par deux agents jouant l'un contre l'autre, s'améliorant à chaque étape. -* Dans l'industrie, le RL est utilisé pour créer des systèmes de contrôle à partir de simulations. Un service appelé [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) est spécifiquement conçu pour cela. +* Insegnare a un computer a giocare ai **giochi Atari**. La parte impegnativa di questo problema è che non abbiamo uno stato semplice rappresentato come un vettore, ma piuttosto uno screenshot - e dobbiamo usare una CNN per convertire questa immagine dello schermo in un vettore di caratteristiche o per estrarre informazioni sulla ricompensa. I giochi Atari sono disponibili in Gym. +* Insegnare a un computer a giocare a giochi da tavolo, come gli scacchi e il Go. Recentemente, programmi all'avanguardia come **Alpha Zero** sono stati addestrati da zero facendo giocare due agenti l'uno contro l'altro, migliorando a ogni passo. +* Nell'industria, l'RL viene utilizzato per creare sistemi di controllo a partire da simulazioni. Un servizio chiamato [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) è specificamente progettato per questo. -## Conclusion +## Conclusione -Nous avons maintenant appris comment former des agents pour obtenir de bons résultats simplement en leur fournissant une fonction de récompense qui définit l'état souhaité du jeu, et en leur offrant la possibilité d'explorer intelligemment l'espace de recherche. Nous avons essayé avec succès deux algorithmes et obtenu un bon résultat dans un délai relativement court. Cependant, ce n'est que le début de votre voyage dans le RL, et vous devriez certainement envisager de suivre un cours séparé si vous souhaitez approfondir vos connaissances. +Abbiamo ora imparato come addestrare agenti per ottenere buoni risultati semplicemente fornendo loro una funzione di ricompensa che definisce lo stato desiderato del gioco e dando loro l'opportunità di esplorare intelligentemente lo spazio di ricerca. Abbiamo provato con successo due algoritmi e ottenuto un buon risultato in un periodo di tempo relativamente breve. Tuttavia, questo è solo l'inizio del tuo viaggio nell'RL, e dovresti sicuramente considerare di seguire un corso specifico se vuoi approfondire. -## 🚀 Défi +## 🚀 Sfida -Explorez les applications énumérées dans la section 'Autres Tâches de RL' et essayez d'en implémenter une ! +Esplora le applicazioni elencate nella sezione "Altri Compiti di RL" e prova a implementarne una! -## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) -## Revue et Auto-étude +## Revisione e Studio Autonomo -En savoir plus sur l'apprentissage par renforcement classique dans notre [Curriculum d'Apprentissage Machine pour Débutants](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). +Scopri di più sull'apprendimento per rinforzo classico nel nostro [Curriculum di Machine Learning per Principianti](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). -Regardez [cette excellente vidéo](https://www.youtube.com/watch?v=qv6UVOQ0F44) qui parle de la façon dont un ordinateur peut apprendre à jouer à Super Mario. +Guarda [questo fantastico video](https://www.youtube.com/watch?v=qv6UVOQ0F44) che spiega come un computer può imparare a giocare a Super Mario. -## Devoir : [Entraîner une Voiture de Montagne](lab/README.md) +## Compito: [Addestra una Mountain Car](lab/README.md) -Votre objectif lors de ce devoir serait d'entraîner un environnement Gym différent - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). +Il tuo obiettivo durante questo compito sarà addestrare un ambiente Gym diverso - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/22-DeepRL/lab/README.md b/translations/it/lessons/6-Other/22-DeepRL/lab/README.md index 717d86ab..5cfe97bf 100644 --- a/translations/it/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/it/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,31 @@ -# Entrenando a Mountain Car para Escapar + +# Addestrare Mountain Car a Fuggire -Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). +Compito del laboratorio tratto da [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). -## Tarea +## Obiettivo -Tu objetivo es entrenar al agente de RL para controlar [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) en el Entorno de OpenAI. Estás entrenado con datos hasta octubre de 2023. +Il tuo obiettivo è addestrare l'agente RL a controllare [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) nell'ambiente OpenAI. -## El Entorno +## L'Ambiente -El entorno de Mountain Car consiste en un coche atrapado dentro de un valle. Tu meta es saltar fuera del valle y llegar a la bandera. Las acciones que puedes realizar son acelerar a la izquierda, a la derecha, o no hacer nada. Puedes observar la posición del coche a lo largo del eje x y la velocidad. +L'ambiente Mountain Car consiste in un'auto intrappolata in una valle. Il tuo obiettivo è saltare fuori dalla valle e raggiungere la bandiera. Le azioni che puoi compiere sono accelerare a sinistra, a destra o non fare nulla. Puoi osservare la posizione dell'auto lungo l'asse x e la velocità. -## Iniciando el Notebook +## Notebook di Partenza -Comienza el laboratorio abriendo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb). +Inizia il laboratorio aprendo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) -## Conclusión +## Conclusione -Deberías aprender a lo largo de este laboratorio que adoptar algoritmos de RL a un nuevo entorno es a menudo bastante sencillo, porque OpenAI Gym tiene la misma interfaz para todos los entornos, y los algoritmos no dependen en gran medida de la naturaleza del entorno. Incluso puedes reestructurar el código de Python de tal manera que se pase cualquier entorno al algoritmo de RL como un parámetro. +Durante questo laboratorio dovresti imparare che adattare gli algoritmi RL a un nuovo ambiente è spesso piuttosto semplice, poiché OpenAI Gym ha la stessa interfaccia per tutti gli ambienti, e gli algoritmi in quanto tali non dipendono in gran parte dalla natura dell'ambiente. Puoi persino ristrutturare il codice Python in modo da passare qualsiasi ambiente all'algoritmo RL come parametro. **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/23-MultiagentSystems/README.md b/translations/it/lessons/6-Other/23-MultiagentSystems/README.md index b2ad1444..e933a77b 100644 --- a/translations/it/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/it/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ -# Systèmes Multi-Agents + +# Sistemi Multi-Agente -L'une des manières possibles d'atteindre l'intelligence est l'approche dite **émergente** (ou **synergétique**), qui repose sur le fait que le comportement combiné de nombreux agents relativement simples peut donner lieu à un comportement global plus complexe (ou intelligent) du système dans son ensemble. Théoriquement, cela repose sur les principes de [l'Intelligence Collective](https://en.wikipedia.org/wiki/Collective_intelligence), de [l'Émergentisme](https://en.wikipedia.org/wiki/Global_brain) et de [la Cybernétique Évolutionnaire](https://en.wikipedia.org/wiki/Global_brain), qui affirment que les systèmes de niveau supérieur obtiennent une sorte de valeur ajoutée lorsqu'ils sont correctement combinés à partir de systèmes de niveau inférieur (le soi-disant *principe de transition de méta-système*). +Uno dei modi possibili per raggiungere l'intelligenza è il cosiddetto approccio **emergente** (o **sinergico**), basato sul fatto che il comportamento combinato di molti agenti relativamente semplici può portare a un comportamento complessivo più complesso (o intelligente) del sistema nel suo insieme. Teoricamente, ciò si basa sui principi dell'[Intelligenza Collettiva](https://en.wikipedia.org/wiki/Collective_intelligence), dell'[Emergentismo](https://en.wikipedia.org/wiki/Global_brain) e della [Cibernetica Evolutiva](https://en.wikipedia.org/wiki/Global_brain), che affermano che i sistemi di livello superiore acquisiscono un certo valore aggiunto quando vengono opportunamente combinati da sistemi di livello inferiore (il cosiddetto *principio della transizione del metasistema*). -## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [Quiz pre-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -Le domaine des **Systèmes Multi-Agents** a émergé dans l'IA dans les années 1990 en réponse à la croissance d'Internet et des systèmes distribués. L'un des manuels classiques de l'IA, [Intelligence Artificielle : Une Approche Moderne](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se concentre sur la vision de l'IA classique du point de vue des systèmes multi-agents. +La direzione dei **Sistemi Multi-Agente** è emersa nell'IA negli anni '90 come risposta alla crescita di Internet e dei sistemi distribuiti. Uno dei classici libri di testo sull'IA, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), si concentra sulla visione dell'IA classica dal punto di vista dei sistemi multi-agente. -Au cœur de l'approche multi-agents se trouve la notion d'**Agent** - une entité qui évolue dans un **environnement**, qu'elle peut percevoir et sur lequel elle peut agir. C'est une définition très large, et il peut y avoir de nombreux types et classifications d'agents : +Centrale nell'approccio multi-agente è il concetto di **Agente** - un'entità che vive in un certo **ambiente**, che può percepire e su cui può agire. Questa è una definizione molto ampia, e ci possono essere molti tipi e classificazioni di agenti: -* Par leur capacité à raisonner : - - Les agents **Réactifs** ont généralement un comportement simple de type demande-réponse - - Les agents **Délibératifs** utilisent une sorte de raisonnement logique et/ou de capacités de planification -* Par l'endroit où l'agent exécute son code : - - Les agents **Statiques** fonctionnent sur un nœud de réseau dédié - - Les agents **Mobiles** peuvent déplacer leur code entre les nœuds de réseau -* Par leur comportement : - - Les **agents passifs** n'ont pas d'objectifs spécifiques. Ces agents peuvent réagir à des stimuli externes, mais n'initieront aucune action eux-mêmes. - - Les **agents actifs** ont des objectifs qu'ils poursuivent - - Les **agents cognitifs** impliquent une planification et un raisonnement complexes +* In base alla loro capacità di ragionare: + - Gli agenti **reattivi** di solito hanno un comportamento semplice di tipo richiesta-risposta + - Gli agenti **deliberativi** utilizzano una qualche forma di ragionamento logico e/o capacità di pianificazione +* In base al luogo in cui l'agente esegue il proprio codice: + - Gli agenti **statici** operano su un nodo di rete dedicato + - Gli agenti **mobili** possono spostare il proprio codice tra i nodi di rete +* In base al loro comportamento: + - Gli agenti **passivi** non hanno obiettivi specifici. Tali agenti possono reagire a stimoli esterni, ma non inizieranno alcuna azione da soli. + - Gli agenti **attivi** hanno degli obiettivi che perseguono + - Gli agenti **cognitivi** coinvolgono pianificazione e ragionamento complessi -Les systèmes multi-agents sont aujourd'hui utilisés dans un certain nombre d'applications : +I sistemi multi-agente sono oggi utilizzati in numerose applicazioni: -* Dans les jeux, de nombreux personnages non-joueurs utilisent une forme d'IA et peuvent être considérés comme des agents intelligents -* Dans la production vidéo, le rendu de scènes 3D complexes impliquant des foules est généralement réalisé à l'aide de simulations multi-agents -* Dans la modélisation de systèmes, l'approche multi-agents est utilisée pour simuler le comportement d'un modèle complexe. Par exemple, cette approche a été utilisée avec succès pour prédire la propagation de la maladie COVID-19 dans le monde entier. Une approche similaire peut être utilisée pour modéliser le trafic dans la ville et observer comment il réagit aux changements des règles de circulation. -* Dans les systèmes d'automatisation complexes, chaque appareil peut agir comme un agent indépendant, ce qui rend l'ensemble du système moins monolithique et plus robuste. +* Nei giochi, molti personaggi non giocanti utilizzano una qualche forma di IA e possono essere considerati agenti intelligenti +* Nella produzione video, il rendering di scene 3D complesse che coinvolgono folle viene tipicamente eseguito utilizzando simulazioni multi-agente +* Nella modellazione di sistemi, l'approccio multi-agente viene utilizzato per simulare il comportamento di un modello complesso. Ad esempio, l'approccio multi-agente è stato utilizzato con successo per prevedere la diffusione della malattia COVID-19 a livello mondiale. Un approccio simile può essere utilizzato per modellare il traffico in una città e vedere come reagisce ai cambiamenti nelle regole del traffico. +* Nei sistemi di automazione complessi, ogni dispositivo può agire come un agente indipendente, rendendo l'intero sistema meno monolitico e più robusto. -Nous ne passerons pas beaucoup de temps à approfondir les systèmes multi-agents, mais considérons un exemple de **Modélisation Multi-Agent**. +Non dedicheremo molto tempo ad approfondire i sistemi multi-agente, ma considereremo un esempio di **Modellazione Multi-Agente**. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) est un environnement de modélisation multi-agent basé sur une version modifiée du langage de programmation [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Ce langage a été développé pour enseigner les concepts de programmation aux enfants, et il vous permet de contrôler un agent appelé **tortue**, qui peut se déplacer en laissant une trace derrière elle. Cela permet de créer des figures géométriques complexes, ce qui est une manière très visuelle de comprendre le comportement d'un agent. +[NetLogo](https://ccl.northwestern.edu/netlogo/) è un ambiente di modellazione multi-agente basato su una versione modificata del linguaggio di programmazione [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Questo linguaggio è stato sviluppato per insegnare i concetti di programmazione ai bambini e consente di controllare un agente chiamato **tartaruga**, che può muoversi lasciando una traccia dietro di sé. Questo permette di creare figure geometriche complesse, un modo molto visivo per comprendere il comportamento di un agente. -Dans NetLogo, nous pouvons créer de nombreuses tortues en utilisant la commande `create-turtles`. Nous pouvons ensuite ordonner à toutes les tortues d'effectuer certaines actions (dans l'exemple ci-dessous - avancer de 10 points) : +In NetLogo, possiamo creare molte tartarughe utilizzando il comando `create-turtles`. Possiamo quindi comandare a tutte le tartarughe di eseguire alcune azioni (nell'esempio seguente - avanzare di 10 punti): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Bien sûr, il n'est pas intéressant que toutes les tortues fassent la même chose, donc nous pouvons `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` est le nom d'une race, et nous devons spécifier à la fois le mot au singulier et au pluriel, car différentes commandes utilisent différentes formes pour plus de clarté. +Ovviamente, non è interessante quando tutte le tartarughe fanno la stessa cosa, quindi possiamo `ask` a gruppi di tartarughe, ad esempio quelle che si trovano nelle vicinanze di un determinato punto. Possiamo anche creare tartarughe di diverse *razze* utilizzando il comando `breed [cats cat]`. Qui `cat` è il nome di una razza, e dobbiamo specificare sia la parola al singolare che al plurale, poiché diversi comandi utilizzano forme diverse per chiarezza. -> ✅ Nous n'allons pas approfondir l'apprentissage du langage NetLogo lui-même - vous pouvez visiter le brillant [Dictionnaire Interactif pour Débutants de NetLogo](https://ccl.northwestern.edu/netlogo/bind/) si vous souhaitez en savoir plus. +> ✅ Non approfondiremo l'apprendimento del linguaggio NetLogo - puoi visitare l'eccellente risorsa [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) se sei interessato a saperne di più. -Vous pouvez [télécharger](https://ccl.northwestern.edu/netlogo/download.shtml) et installer NetLogo pour l'essayer. +Puoi [scaricare](https://ccl.northwestern.edu/netlogo/download.shtml) e installare NetLogo per provarlo. -### Bibliothèque de Modèles +### Libreria di Modelli -Une grande chose à propos de NetLogo est qu'il contient une bibliothèque de modèles fonctionnels que vous pouvez essayer. Allez dans **Fichier → Bibliothèque de Modèles**, et vous aurez de nombreuses catégories de modèles parmi lesquelles choisir. +Una grande caratteristica di NetLogo è che contiene una libreria di modelli funzionanti che puoi provare. Vai su **File → Models Library**, e avrai molte categorie di modelli tra cui scegliere. -Bibliothèque de Modèles NetLogo +NetLogo Models Library -> Une capture d'écran de la bibliothèque de modèles par Dmitry Soshnikov +> Uno screenshot della libreria di modelli di Dmitry Soshnikov -Vous pouvez ouvrir l'un des modèles, par exemple **Biologie → Flocking**. +Puoi aprire uno dei modelli, ad esempio **Biology → Flocking**. -### Principes Principaux +### Principi Fondamentali -Après avoir ouvert le modèle, vous êtes dirigé vers l'écran principal de NetLogo. Voici un modèle d'exemple qui décrit la population de loups et de moutons, compte tenu des ressources finies (herbe). +Dopo aver aperto il modello, verrai portato alla schermata principale di NetLogo. Ecco un esempio di modello che descrive la popolazione di lupi e pecore, date risorse finite (erba). -![Écran Principal de NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.it.png) +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.it.png) -> Capture d'écran par Dmitry Soshnikov +> Screenshot di Dmitry Soshnikov -Sur cet écran, vous pouvez voir : +In questa schermata, puoi vedere: -* La section **Interface** qui contient : - - Le champ principal, où vivent tous les agents - - Différents contrôles : boutons, curseurs, etc. - - Des graphiques que vous pouvez utiliser pour afficher les paramètres de la simulation -* L'onglet **Code** qui contient l'éditeur, où vous pouvez taper le programme NetLogo +* La sezione **Interfaccia** che contiene: + - Il campo principale, dove vivono tutti gli agenti + - Diversi controlli: pulsanti, cursori, ecc. + - Grafici che puoi utilizzare per visualizzare i parametri della simulazione +* La scheda **Codice** che contiene l'editor, dove puoi scrivere il programma NetLogo -Dans la plupart des cas, l'interface aura un bouton **Setup**, qui initialise l'état de la simulation, et un bouton **Go** qui démarre l'exécution. Ceux-ci sont gérés par les gestionnaires correspondants dans le code qui ressemblent à ceci : +Nella maggior parte dei casi, l'interfaccia avrà un pulsante **Setup**, che inizializza lo stato della simulazione, e un pulsante **Go** che avvia l'esecuzione. Questi sono gestiti da gestori corrispondenti nel codice che appaiono così: ``` to go [ @@ -81,74 +90,75 @@ to go [ ] ``` -Le monde de NetLogo se compose des objets suivants : +Il mondo di NetLogo è composto dai seguenti oggetti: -* **Agents** (tortues) qui peuvent se déplacer sur le champ et faire quelque chose. Vous commandez les agents en utilisant `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` pour faire quelque chose. -* **Observer** est un agent unique qui contrôle le monde. Tous les gestionnaires de boutons sont exécutés en *mode observateur*. +* **Agenti** (tartarughe) che possono muoversi sul campo e fare qualcosa. Comandi gli agenti utilizzando la sintassi `ask turtles [...]`, e il codice tra parentesi viene eseguito da tutti gli agenti in *modalità tartaruga*. +* **Patch** sono aree quadrate del campo, su cui vivono gli agenti. Puoi fare riferimento a tutti gli agenti sulla stessa patch, oppure puoi cambiare i colori delle patch e alcune altre proprietà. Puoi anche `ask patches` di fare qualcosa. +* **Osservatore** è un agente unico che controlla il mondo. Tutti i gestori dei pulsanti vengono eseguiti in *modalità osservatore*. -> ✅ La beauté d'un environnement multi-agent est que le code qui s'exécute en mode tortue ou en mode patch est exécuté en même temps par tous les agents en parallèle. Ainsi, en écrivant un peu de code et en programmant le comportement d'un agent individuel, vous pouvez créer un comportement complexe du système de simulation dans son ensemble. +> ✅ La bellezza di un ambiente multi-agente è che il codice che gira in modalità tartaruga o in modalità patch viene eseguito contemporaneamente da tutti gli agenti in parallelo. Così, scrivendo poco codice e programmando il comportamento di un singolo agente, puoi creare un comportamento complesso del sistema di simulazione nel suo insieme. ### Flocking -Comme exemple de comportement multi-agent, considérons le **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Le flocking est un modèle complexe qui ressemble beaucoup à la façon dont les volées d'oiseaux volent. En les observant voler, vous pourriez penser qu'ils suivent une sorte d'algorithme collectif, ou qu'ils possèdent une forme d'*intelligence collective*. Cependant, ce comportement complexe émerge lorsque chaque agent individuel (dans ce cas, un *oiseau*) n'observe que quelques autres agents à une courte distance de lui, et suit trois règles simples : +Come esempio di comportamento multi-agente, consideriamo il **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Il Flocking è un modello complesso molto simile al modo in cui volano gli stormi di uccelli. Osservandoli volare, potresti pensare che seguano una sorta di algoritmo collettivo o che possiedano una forma di *intelligenza collettiva*. Tuttavia, questo comportamento complesso emerge quando ogni singolo agente (in questo caso, un *uccello*) osserva solo alcuni altri agenti a breve distanza da sé e segue tre semplici regole: -* **Alignement** - il s'oriente vers la direction moyenne des agents voisins -* **Cohésion** - il essaie de s'orienter vers la position moyenne des voisins (*attraction à long terme*) -* **Séparation** - lorsqu'il s'approche trop des autres oiseaux, il essaie de s'éloigner (*répulsion à courte portée*) +* **Allineamento** - si orienta verso la direzione media degli agenti vicini +* **Coesione** - cerca di orientarsi verso la posizione media dei vicini (*attrazione a lungo raggio*) +* **Separazione** - quando si avvicina troppo ad altri uccelli, cerca di allontanarsi (*repulsione a corto raggio*) -Vous pouvez exécuter l'exemple de flocking et observer le comportement. Vous pouvez également ajuster des paramètres, tels que le *degré de séparation* ou le *champ de vision*, qui définit jusqu'où chaque oiseau peut voir. Notez que si vous réduisez le champ de vision à 0, tous les oiseaux deviennent aveugles et le flocking s'arrête. Si vous réduisez la séparation à 0, tous les oiseaux se regroupent en une ligne droite. +Puoi eseguire l'esempio di flocking e osservare il comportamento. Puoi anche regolare i parametri, come il *grado di separazione* o il *raggio visivo*, che definisce quanto lontano ogni uccello può vedere. Nota che se riduci il raggio visivo a 0, tutti gli uccelli diventano ciechi e il flocking si interrompe. Se riduci la separazione a 0, tutti gli uccelli si raggruppano in una linea retta. -> ✅ Passez à l'onglet **Code** et voyez où les trois règles du flocking (alignement, cohésion et séparation) sont mises en œuvre dans le code. Notez comment nous ne faisons référence qu'aux agents qui sont en vue. +> ✅ Passa alla scheda **Codice** e osserva dove sono implementate nel codice le tre regole del flocking (allineamento, coesione e separazione). Nota come ci riferiamo solo agli agenti che sono in vista. -### Autres Modèles à Explorer +### Altri Modelli da Vedere -Il y a quelques modèles intéressants supplémentaires avec lesquels vous pouvez expérimenter : +Ci sono alcuni altri modelli interessanti con cui puoi sperimentare: -* **Art → Feux d'Artifice** montre comment un feu d'artifice peut être considéré comme un comportement collectif de flux de feu individuels -* **Sciences Sociales → Trafic de Base** et **Sciences Sociales → Grille de Trafic** montrent le modèle du trafic urbain en 1D et en 2D avec ou sans feux de circulation. Chaque voiture dans la simulation suit les règles suivantes : - - Si l'espace devant elle est vide - accélérer (jusqu'à une certaine vitesse maximale) - - Si elle voit un obstacle devant - freiner (et vous pouvez ajuster jusqu'où un conducteur peut voir) -* **Sciences Sociales → Fête** montre comment les gens se regroupent lors d'une fête. Vous pouvez trouver la combinaison de paramètres qui conduit à la plus rapide augmentation du bonheur du groupe. +* **Art → Fireworks** mostra come un fuoco d'artificio possa essere considerato un comportamento collettivo di singoli flussi di fuoco +* **Social Science → Traffic Basic** e **Social Science → Traffic Grid** mostrano il modello del traffico cittadino in una griglia 1D e 2D con o senza semafori. Ogni auto nella simulazione segue le seguenti regole: + - Se lo spazio davanti è vuoto - accelera (fino a una certa velocità massima) + - Se vede un ostacolo davanti - frena (e puoi regolare quanto lontano un conducente può vedere) +* **Social Science → Party** mostra come le persone si raggruppano durante una festa. Puoi trovare la combinazione di parametri che porta al più rapido aumento della felicità del gruppo. -Comme vous pouvez le constater à partir de ces exemples, les simulations multi-agents peuvent être un moyen très utile de comprendre le comportement d'un système complexe composé d'individus qui suivent la même logique ou une logique similaire. Cela peut également être utilisé pour contrôler des agents virtuels, tels que les [PNJ](https://en.wikipedia.org/wiki/NPC) dans les jeux vidéo, ou des agents dans des mondes animés en 3D. +Come puoi vedere da questi esempi, le simulazioni multi-agente possono essere un modo molto utile per comprendere il comportamento di un sistema complesso composto da individui che seguono la stessa o simile logica. Può anche essere utilizzato per controllare agenti virtuali, come [NPC](https://en.wikipedia.org/wiki/NPC) nei videogiochi o agenti in mondi animati 3D. -## Agents Délibératifs +## Agenti Deliberativi -Les agents décrits ci-dessus sont très simples, réagissant aux changements dans l'environnement à l'aide d'un certain type d'algorithme. En tant que tels, ils sont des **agents réactifs**. Cependant, parfois, les agents peuvent raisonner et planifier leurs actions, auquel cas on les appelle **délibératifs**. +Gli agenti descritti sopra sono molto semplici, reagendo ai cambiamenti nell'ambiente utilizzando una sorta di algoritmo. In quanto tali, sono **agenti reattivi**. Tuttavia, a volte gli agenti possono ragionare e pianificare le loro azioni, nel qual caso vengono chiamati **deliberativi**. -Un exemple typique serait un agent personnel qui reçoit une instruction d'un humain pour réserver un voyage. Supposons qu'il existe de nombreux agents qui vivent sur Internet, qui peuvent l'aider. Il devrait alors contacter d'autres agents pour voir quels vols sont disponibles, quels sont les prix des hôtels pour différentes dates, et essayer de négocier le meilleur prix. Lorsque le plan de vacances est complet et confirmé par le propriétaire, il peut procéder à la réservation. +Un esempio tipico potrebbe essere un agente personale che riceve un'istruzione da un umano per prenotare un viaggio. Supponiamo che ci siano molti agenti che vivono su Internet e che possono aiutarlo. Dovrebbe quindi contattare altri agenti per vedere quali voli sono disponibili, quali sono i prezzi degli hotel per diverse date e cercare di negoziare il miglior prezzo. Quando il piano di viaggio è completo e confermato dal proprietario, può procedere con la prenotazione. -Pour cela, les agents doivent **communiquer**. Pour une communication réussie, ils ont besoin de : +Per fare ciò, gli agenti devono **comunicare**. Per una comunicazione efficace, hanno bisogno di: -* De **langages standard pour échanger des connaissances**, tels que le [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) et le [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Ces langages sont conçus sur la base de la [théorie des actes de langage](https://en.wikipedia.org/wiki/Speech_act). -* Ces langages devraient également inclure certains **protocoles de négociation**, basés sur différents **types d'enchères**. -* Une **ontologie commune** à utiliser, afin qu'ils fassent référence aux mêmes concepts en connaissant leur sémantique -* Un moyen de **découvrir** ce que différents agents peuvent faire, également basé sur une sorte d'ontologie +* Alcuni **linguaggi standard per scambiare conoscenze**, come [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) e [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Questi linguaggi sono progettati sulla base della [teoria degli atti linguistici](https://en.wikipedia.org/wiki/Speech_act). +* Questi linguaggi dovrebbero includere anche alcuni **protocolli per le negoziazioni**, basati su diversi **tipi di aste**. +* Una **ontologia comune** da utilizzare, in modo che si riferiscano agli stessi concetti conoscendone la semantica +* Un modo per **scoprire** cosa possono fare i diversi agenti, basato anch'esso su una sorta di ontologia -Les agents délibératifs sont beaucoup plus complexes que les réactifs, car ils ne réagissent pas seulement aux changements dans l'environnement, mais doivent également être capables d'*initier* des actions. L'une des architectures proposées pour les agents délibératifs est celle des agents de type Croyance-Désir-Intention (BDI) : +Gli agenti deliberativi sono molto più complessi di quelli reattivi, perché non solo reagiscono ai cambiamenti nell'ambiente, ma devono anche essere in grado di *iniziare* azioni. Una delle architetture proposte per gli agenti deliberativi è il cosiddetto agente Belief-Desire-Intention (BDI): -* Les **Croyances** forment un ensemble de connaissances sur l'environnement d'un agent. Cela peut être structuré sous la forme d'une base de connaissances ou d'un ensemble de règles qu'un agent peut appliquer à une situation spécifique dans l'environnement. -* Les **Désirs** définissent ce qu'un agent souhaite faire, c'est-à-dire ses objectifs. Par exemple, l'objectif de l'agent assistant personnel ci-dessus est de réserver un voyage, et l'objectif d'un agent hôtelier est de maximiser le profit. -* Les **Intentions** sont des actions spécifiques qu'un agent prévoit d'accomplir pour atteindre ses objectifs. Les actions modifient généralement l'environnement et entraînent une communication avec d'autres agents. +* **Beliefs** formano un insieme di conoscenze sull'ambiente di un agente. Può essere strutturato come una base di conoscenza o un insieme di regole che un agente può applicare a una situazione specifica nell'ambiente. +* **Desires** definiscono ciò che un agente vuole fare, cioè i suoi obiettivi. Ad esempio, l'obiettivo dell'agente assistente personale sopra è prenotare un viaggio, e l'obiettivo di un agente di un hotel è massimizzare il profitto. +* **Intentions** sono azioni specifiche che un agente pianifica per raggiungere i suoi obiettivi. Le azioni tipicamente cambiano l'ambiente e causano comunicazione con altri agenti. -Il existe des plateformes disponibles pour construire des systèmes multi-agents, telles que [JADE](https://jade.tilab.com/). [Cet article](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contient une revue des plateformes multi-agents, ainsi qu'une brève histoire des systèmes multi-agents et de leurs différents scénarios d'utilisation. +Esistono alcune piattaforme disponibili per costruire sistemi multi-agente, come [JADE](https://jade.tilab.com/). [Questo articolo](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contiene una panoramica delle piattaforme multi-agente, insieme a una breve storia dei sistemi multi-agente e ai loro diversi scenari di utilizzo. -## Conclusion +## Conclusione -Les systèmes multi-agents peuvent prendre des formes très différentes et être utilisés dans de nombreuses applications variées. Ils ont tous tendance à se concentrer sur le comportement plus simple d'un agent individuel, et à atteindre un comportement plus complexe de l'ensemble du système grâce à l'effet **synergétique**. +I sistemi Multi-Agente possono assumere forme molto diverse ed essere utilizzati in molte applicazioni differenti. +Tendono tutti a concentrarsi sul comportamento più semplice di un singolo agente, ottenendo un comportamento più complesso del sistema complessivo grazie all'**effetto sinergico**. -## 🚀 Défi +## 🚀 Sfida -Prenez cette leçon dans le monde réel et essayez de conceptualiser un système multi-agent capable de résoudre un problème. Que devrait faire un système multi-agent pour optimiser un itinéraire de bus scolaire, par exemple ? Comment cela pourrait-il fonctionner dans une boulangerie ? +Porta questa lezione nel mondo reale e prova a concettualizzare un sistema multi-agente che possa risolvere un problema. Cosa, ad esempio, dovrebbe fare un sistema multi-agente per ottimizzare il percorso di uno scuolabus? Come potrebbe funzionare in una panetteria? -## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [Quiz post-lezione](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) -## Revue et Auto-Étude +## Revisione e Studio Autonomo -Examinez l'utilisation de ce type de système dans l'industrie. Choisissez un domaine tel que la fabrication ou l'industrie du jeu vidéo et découvrez comment les systèmes multi-agents peuvent être utilisés pour résoudre des problèmes uniques. +Esamina l'uso di questo tipo di sistema nell'industria. Scegli un dominio come la produzione o l'industria dei videogiochi e scopri come i sistemi multi-agente possono essere utilizzati per risolvere problemi unici. -## [Devoir NetLogo](assignment.md) +## [Compito NetLogo](assignment.md) **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md index ac80acc7..eaa88b57 100644 --- a/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ -# NetLogo Aufgabe + +# Compito NetLogo -Wählen Sie eines der Modelle aus der NetLogo-Bibliothek aus und verwenden Sie es, um eine reale Situation so genau wie möglich zu simulieren. Ein gutes Beispiel wäre, das Virus-Modell im Ordner Alternative Visualisierungen anzupassen, um zu zeigen, wie es verwendet werden kann, um die Ausbreitung von COVID-19 zu modellieren. Können Sie ein Modell erstellen, das eine reale virale Ausbreitung nachahmt? +Prendi uno dei modelli presenti nella libreria di NetLogo e usalo per simulare una situazione reale nel modo più accurato possibile. Un buon esempio potrebbe essere modificare il modello Virus nella cartella Alternative Visualizations per mostrare come possa essere utilizzato per modellare la diffusione del COVID-19. Riesci a creare un modello che imiti la diffusione virale nella vita reale? -Zeigen Sie Ihre Arbeit, indem Sie eine Kopie speichern und ein Video-Demo erstellen, das erklärt, wie das Modell mit einer realen Situation verbunden ist. +Mostra il tuo lavoro salvando una copia e creando una demo video che spieghi come il modello sia collegato a una situazione reale. **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/7-Ethics/README.md b/translations/it/lessons/7-Ethics/README.md index 1a6c8f07..9fafa9c1 100644 --- a/translations/it/lessons/7-Ethics/README.md +++ b/translations/it/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ -# IA Ética y Responsable + +# AI Etica e Responsabile -Has casi terminado este curso, y espero que ahora veas claramente que la IA se basa en una serie de métodos matemáticos formales que nos permiten encontrar relaciones en los datos y entrenar modelos para replicar algunos aspectos del comportamiento humano. En este momento de la historia, consideramos que la IA es una herramienta muy poderosa para extraer patrones de los datos y aplicar esos patrones para resolver nuevos problemas. +Hai quasi terminato questo corso e spero che ormai tu abbia chiaramente compreso che l'AI si basa su una serie di metodi matematici formali che ci permettono di trovare relazioni nei dati e di addestrare modelli per replicare alcuni aspetti del comportamento umano. In questo momento storico, consideriamo l'AI uno strumento molto potente per estrarre schemi dai dati e applicarli per risolvere nuovi problemi. -## [Cuestionario previo a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) +## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -Sin embargo, en la ciencia ficción a menudo vemos historias donde la IA presenta un peligro para la humanidad. Generalmente, estas historias giran en torno a algún tipo de rebelión de la IA, cuando esta decide confrontar a los seres humanos. Esto implica que la IA tiene algún tipo de emoción o puede tomar decisiones imprevistas por sus desarrolladores. +Tuttavia, nella fantascienza spesso vediamo storie in cui l'AI rappresenta un pericolo per l'umanità. Di solito queste storie ruotano attorno a una sorta di ribellione dell'AI, quando l'AI decide di confrontarsi con gli esseri umani. Questo implica che l'AI abbia una sorta di emozione o possa prendere decisioni impreviste dai suoi sviluppatori. -El tipo de IA que hemos aprendido en este curso no es más que una aritmética de matrices grande. Es una herramienta muy poderosa que nos ayuda a resolver nuestros problemas, y como cualquier otra herramienta poderosa, puede ser utilizada para fines buenos y malos. Es importante destacar que puede ser *mal utilizada*. +Il tipo di AI che abbiamo studiato in questo corso non è altro che una grande aritmetica matriciale. È uno strumento molto potente per aiutarci a risolvere i nostri problemi e, come qualsiasi altro strumento potente, può essere usato per scopi buoni o cattivi. È importante sottolineare che può essere *mal utilizzato*. -## Principios de la IA Responsable +## Principi di AI Responsabile -Para evitar este uso accidental o intencionado de la IA, Microsoft establece los importantes [Principios de la IA Responsable](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Los siguientes conceptos sustentan estos principios: +Per evitare questo uso improprio, accidentale o intenzionale, Microsoft stabilisce i [Principi di AI Responsabile](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). I seguenti concetti sono alla base di questi principi: -* **Equidad** está relacionada con el importante problema de los *sesgos en los modelos*, que pueden ser causados por el uso de datos sesgados para el entrenamiento. Por ejemplo, cuando intentamos predecir la probabilidad de conseguir un trabajo como desarrollador de software para una persona, es probable que el modelo dé mayor preferencia a los hombres, simplemente porque el conjunto de datos de entrenamiento probablemente estaba sesgado hacia una audiencia masculina. Necesitamos equilibrar cuidadosamente los datos de entrenamiento e investigar el modelo para evitar sesgos, y asegurarnos de que el modelo tenga en cuenta características más relevantes. -* **Fiabilidad y Seguridad**. Por su naturaleza, los modelos de IA pueden cometer errores. Una red neuronal devuelve probabilidades, y debemos tenerlo en cuenta al tomar decisiones. Cada modelo tiene una cierta precisión y recuperación, y necesitamos entender eso para prevenir el daño que puede causar un consejo erróneo. -* **Privacidad y Seguridad** tienen algunas implicaciones específicas de la IA. Por ejemplo, cuando usamos algunos datos para entrenar un modelo, esos datos se integran de alguna manera en el modelo. Por un lado, eso aumenta la seguridad y la privacidad; por otro, debemos recordar sobre qué datos se entrenó el modelo. -* **Inclusividad** significa que no estamos construyendo IA para reemplazar a las personas, sino para aumentar a las personas y hacer nuestro trabajo más creativo. También está relacionado con la equidad, porque al tratar con comunidades subrepresentadas, la mayoría de los conjuntos de datos que recopilamos probablemente estén sesgados, y debemos asegurarnos de que esas comunidades estén incluidas y manejadas correctamente por la IA. -* **Transparencia**. Esto incluye asegurarnos de que siempre seamos claros sobre el uso de la IA. Además, siempre que sea posible, queremos utilizar sistemas de IA que sean *interpretables*. -* **Responsabilidad**. Cuando los modelos de IA toman decisiones, no siempre está claro quién es responsable de esas decisiones. Necesitamos asegurarnos de que entendemos dónde radica la responsabilidad de las decisiones de la IA. En la mayoría de los casos, querríamos incluir a seres humanos en el proceso de toma de decisiones importantes, para que las personas reales sean responsables. +* **Equità** è legata al problema importante dei *bias nei modelli*, che possono essere causati dall'uso di dati di addestramento distorti. Ad esempio, quando cerchiamo di prevedere la probabilità che una persona ottenga un lavoro come sviluppatore software, il modello potrebbe dare una preferenza maggiore ai maschi, semplicemente perché il dataset di addestramento era probabilmente orientato verso un pubblico maschile. Dobbiamo bilanciare attentamente i dati di addestramento e investigare il modello per evitare bias e assicurarci che il modello prenda in considerazione caratteristiche più rilevanti. +* **Affidabilità e Sicurezza**. Per loro natura, i modelli di AI possono commettere errori. Una rete neurale restituisce probabilità, e dobbiamo tenerne conto quando prendiamo decisioni. Ogni modello ha una certa precisione e richiamo, e dobbiamo comprenderlo per prevenire i danni che un consiglio errato può causare. +* **Privacy e Sicurezza** hanno alcune implicazioni specifiche per l'AI. Ad esempio, quando utilizziamo alcuni dati per addestrare un modello, questi dati diventano in qualche modo "integrati" nel modello. Da un lato, ciò aumenta la sicurezza e la privacy, dall'altro dobbiamo ricordare quali dati sono stati utilizzati per l'addestramento del modello. +* **Inclusività** significa che non stiamo costruendo AI per sostituire le persone, ma piuttosto per potenziarle e rendere il nostro lavoro più creativo. È anche legata all'equità, perché quando si tratta di comunità sottorappresentate, la maggior parte dei dataset che raccogliamo tende ad essere distorta, e dobbiamo assicurarci che queste comunità siano incluse e gestite correttamente dall'AI. +* **Trasparenza**. Questo include assicurarsi che sia sempre chiaro quando viene utilizzata l'AI. Inoltre, ove possibile, vogliamo utilizzare sistemi di AI che siano *interpretabili*. +* **Responsabilità**. Quando i modelli di AI prendono delle decisioni, non è sempre chiaro chi sia responsabile di quelle decisioni. Dobbiamo assicurarci di comprendere dove risiede la responsabilità delle decisioni dell'AI. Nella maggior parte dei casi, vorremmo includere esseri umani nel processo decisionale per le decisioni importanti, in modo che siano le persone a essere ritenute responsabili. -## Herramientas para la IA Responsable +## Strumenti per AI Responsabile -Microsoft ha desarrollado la [Caja de Herramientas de IA Responsable](https://github.com/microsoft/responsible-ai-toolbox) que contiene un conjunto de herramientas: +Microsoft ha sviluppato il [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) che contiene una serie di strumenti: -* Panel de Interpretabilidad (InterpretML) -* Panel de Equidad (FairLearn) -* Panel de Análisis de Errores -* Panel de IA Responsable que incluye +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard che include: - - EconML - herramienta para Análisis Causal, que se centra en preguntas hipotéticas - - DiCE - herramienta para Análisis Contrafactual que te permite ver qué características deben cambiarse para afectar la decisión del modelo + - EconML - uno strumento per l'Analisi Causale, che si concentra sulle domande "cosa succederebbe se" + - DiCE - uno strumento per l'Analisi Controfattuale che ti permette di vedere quali caratteristiche devono essere modificate per influenzare la decisione del modello -Para más información sobre Ética de la IA, visita [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) en el Currículo de Aprendizaje Automático que incluye tareas. +Per ulteriori informazioni sull'etica dell'AI, visita [questa lezione](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) nel curriculum di Machine Learning che include esercizi. -## Revisión y Autoestudio +## Revisione e Studio Autonomo -Realiza este [Ruta de Aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender más sobre la IA responsable. +Segui questo [Percorso di Apprendimento](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) per approfondire i principi di AI responsabile. -## [Cuestionario posterior a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) +## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un esperto umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/README.md b/translations/it/lessons/README.md index e6405bc2..b57c91ba 100644 --- a/translations/it/lessons/README.md +++ b/translations/it/lessons/README.md @@ -1,8 +1,17 @@ -# Resumen + +# Panoramica -![Resumen en un garabato](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.it.png) +![Panoramica in uno schizzo](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.it.png) -> Garabato por [Tomomi Imura](https://twitter.com/girlie_mac) +> Schizzo di [Tomomi Imura](https://twitter.com/girlie_mac) **Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/X-Extras/X1-MultiModal/README.md b/translations/it/lessons/X-Extras/X1-MultiModal/README.md index 91877bed..6f6c6343 100644 --- a/translations/it/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/it/lessons/X-Extras/X1-MultiModal/README.md @@ -1,79 +1,88 @@ -# Réseaux Multi-Modal + +# Reti Multi-Modali -Après le succès des modèles transformer pour résoudre des tâches de traitement du langage naturel, des architectures similaires ont été appliquées aux tâches de vision par ordinateur. Il y a un intérêt croissant à construire des modèles qui *combinent* les capacités de vision et de langage naturel. L'une de ces tentatives a été réalisée par OpenAI, et elle s'appelle CLIP et DALL.E. +Dopo il successo dei modelli transformer per risolvere compiti di NLP, le stesse o simili architetture sono state applicate ai compiti di visione artificiale. C'è un crescente interesse nel costruire modelli che *combinino* capacità di visione e linguaggio naturale. Uno di questi tentativi è stato fatto da OpenAI, ed è chiamato CLIP e DALL.E. -## Pré-Formation d'Image Contrastive (CLIP) +## Contrastive Image Pre-Training (CLIP) -L'idée principale de CLIP est de pouvoir comparer des invites textuelles avec une image et de déterminer à quel point l'image correspond à l'invite. +L'idea principale di CLIP è quella di confrontare i prompt testuali con un'immagine e determinare quanto bene l'immagine corrisponda al prompt. -![Architecture CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.it.png) +![Architettura CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.it.png) -> *Image provenant de [cet article de blog](https://openai.com/blog/clip/)* +> *Immagine tratta da [questo post sul blog](https://openai.com/blog/clip/)* -Le modèle est entraîné sur des images obtenues sur Internet et leurs légendes. Pour chaque lot, nous prenons N paires de (image, texte) et les convertissons en certaines représentations vectorielles I et T. Ces représentations sont ensuite appariées. La fonction de perte est définie pour maximiser la similarité cosinus entre les vecteurs correspondant à une paire (par exemple, I et T), et minimiser la similarité cosinus entre toutes les autres paires. C'est la raison pour laquelle cette approche est appelée **contrastive**. +Il modello è addestrato su immagini ottenute da Internet e sulle loro didascalie. Per ogni batch, prendiamo N coppie di (immagine, testo) e le convertiamo in rappresentazioni vettoriali I, ..., T. Queste rappresentazioni vengono poi abbinate tra loro. La funzione di perdita è definita per massimizzare la similarità coseno tra i vettori corrispondenti a una coppia (es. I e T) e minimizzare la similarità coseno tra tutte le altre coppie. Questo è il motivo per cui questo approccio è chiamato **contrastivo**. -Le modèle/bibliothèque CLIP est disponible sur [OpenAI GitHub](https://github.com/openai/CLIP). L'approche est décrite dans [cet article de blog](https://openai.com/blog/clip/), et plus en détail dans [ce document](https://arxiv.org/pdf/2103.00020.pdf). +Il modello/libreria CLIP è disponibile su [GitHub di OpenAI](https://github.com/openai/CLIP). L'approccio è descritto in [questo post sul blog](https://openai.com/blog/clip/) e in modo più dettagliato in [questo articolo](https://arxiv.org/pdf/2103.00020.pdf). -Une fois que ce modèle est pré-entraîné, nous pouvons lui donner un lot d'images et un lot d'invites textuelles, et il retournera un tenseur avec des probabilités. CLIP peut être utilisé pour plusieurs tâches : +Una volta che questo modello è stato pre-addestrato, possiamo fornire un batch di immagini e un batch di prompt testuali, e il risultato sarà un tensore con probabilità. CLIP può essere utilizzato per diversi compiti: -**Classification d'Image** +**Classificazione delle Immagini** -Supposons que nous devions classer des images entre, disons, des chats, des chiens et des humains. Dans ce cas, nous pouvons donner au modèle une image et une série d'invites textuelles : "*une image d'un chat*", "*une image d'un chien*", "*une image d'un humain*". Dans le vecteur résultant de 3 probabilités, nous devons simplement sélectionner l'index avec la valeur la plus élevée. +Supponiamo di dover classificare immagini tra, ad esempio, gatti, cani e esseri umani. In questo caso, possiamo fornire al modello un'immagine e una serie di prompt testuali: "*una foto di un gatto*", "*una foto di un cane*", "*una foto di un essere umano*". Nel vettore risultante di 3 probabilità, dobbiamo semplicemente selezionare l'indice con il valore più alto. -![CLIP pour la Classification d'Image](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.it.png) +![CLIP per la Classificazione delle Immagini](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.it.png) -> *Image provenant de [cet article de blog](https://openai.com/blog/clip/)* +> *Immagine tratta da [questo post sul blog](https://openai.com/blog/clip/)* -**Recherche d'Image Basée sur du Texte** +**Ricerca di Immagini Basata su Testo** -Nous pouvons également faire l'inverse. Si nous avons une collection d'images, nous pouvons passer cette collection au modèle, et une invite textuelle - cela nous donnera l'image qui est la plus similaire à l'invite donnée. +Possiamo anche fare il contrario. Se abbiamo una collezione di immagini, possiamo passarla al modello insieme a un prompt testuale: questo ci darà l'immagine più simile al prompt fornito. -## ✍️ Exemple : [Utilisation de CLIP pour la Classification d'Image et la Recherche d'Image](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) +## ✍️ Esempio: [Utilizzo di CLIP per la Classificazione delle Immagini e la Ricerca di Immagini](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -Ouvrez le notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) pour voir CLIP en action. +Apri il notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) per vedere CLIP in azione. -## Génération d'Image avec VQGAN+ CLIP +## Generazione di Immagini con VQGAN+CLIP -CLIP peut également être utilisé pour la **génération d'images** à partir d'une invite textuelle. Pour ce faire, nous avons besoin d'un **modèle générateur** qui sera capable de générer des images basées sur une certaine entrée vectorielle. L'un de ces modèles s'appelle [VQGAN](https://compvis.github.io/taming-transformers/) (GAN à Quantification Vectorielle). +CLIP può essere utilizzato anche per la **generazione di immagini** a partire da un prompt testuale. Per fare ciò, abbiamo bisogno di un **modello generatore** che sia in grado di generare immagini basate su un input vettoriale. Uno di questi modelli è chiamato [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). -Les principales idées de VQGAN qui le différencient d'un GAN ordinaire sont les suivantes : -* Utiliser une architecture transformer autoregressive pour générer une séquence de parties visuelles riches en contexte qui composent l'image. Ces parties visuelles sont à leur tour apprises par un [CNN](../../4-ComputerVision/07-ConvNets/README.md). -* Utiliser un discriminateur de sous-image qui détecte si des parties de l'image sont "réelles" ou "fausses" (contrairement à l'approche "tout ou rien" dans un GAN traditionnel). +Le idee principali di VQGAN che lo differenziano dai tradizionali [GAN](../../4-ComputerVision/10-GANs/README.md) sono le seguenti: +* Utilizzo di un'architettura transformer autoregressiva per generare una sequenza di parti visive ricche di contesto che compongono l'immagine. Queste parti visive sono a loro volta apprese da [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Uso di un discriminatore di sotto-immagini che rileva se le parti dell'immagine sono "reali" o "false" (a differenza dell'approccio "tutto o niente" nei GAN tradizionali). -En savoir plus sur VQGAN sur le site [Taming Transformers](https://compvis.github.io/taming-transformers/). +Scopri di più su VQGAN sul sito web [Taming Transformers](https://compvis.github.io/taming-transformers/). -Une des différences importantes entre VQGAN et un GAN traditionnel est que ce dernier peut produire une image décente à partir de n'importe quel vecteur d'entrée, tandis que VQGAN est susceptible de produire une image qui ne serait pas cohérente. Ainsi, nous devons guider davantage le processus de création d'image, et cela peut être fait en utilisant CLIP. +Una delle differenze importanti tra VQGAN e i GAN tradizionali è che questi ultimi possono produrre un'immagine decente da qualsiasi vettore di input, mentre VQGAN è più propenso a produrre un'immagine incoerente. Pertanto, è necessario guidare ulteriormente il processo di creazione dell'immagine, e questo può essere fatto utilizzando CLIP. -![Architecture VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.it.png) +![Architettura VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.it.png) -Pour générer une image correspondant à une invite textuelle, nous commençons avec un vecteur d'encodage aléatoire qui est passé à travers VQGAN pour produire une image. Ensuite, CLIP est utilisé pour produire une fonction de perte qui montre à quel point l'image correspond à l'invite textuelle. L'objectif est alors de minimiser cette perte, en utilisant la rétropropagation pour ajuster les paramètres du vecteur d'entrée. +Per generare un'immagine corrispondente a un prompt testuale, iniziamo con un vettore di codifica casuale che viene passato attraverso VQGAN per produrre un'immagine. Successivamente, CLIP viene utilizzato per produrre una funzione di perdita che mostra quanto bene l'immagine corrisponda al prompt testuale. L'obiettivo è quindi minimizzare questa perdita, utilizzando la retropropagazione per regolare i parametri del vettore di input. -Une excellente bibliothèque qui implémente VQGAN+CLIP est [Pixray](http://github.com/pixray/pixray). +Una grande libreria che implementa VQGAN+CLIP è [Pixray](http://github.com/pixray/pixray). -![Image produite par Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.it.png) | ![Image produite par pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.it.png) | ![Image produite par Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.it.png) +![Immagine prodotta da Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.it.png) | ![Immagine prodotta da Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.it.png) | ![Immagine prodotta da Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.it.png) ----|----|---- -Image générée à partir de l'invite *un gros plan d'un portrait aquarelle d'un jeune enseignant de littérature avec un livre* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'une jeune enseignante de sciences informatiques avec un ordinateur* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'un vieux professeur de mathématiques devant un tableau noir* +Immagine generata dal prompt *un ritratto ravvicinato ad acquerello di un giovane insegnante di letteratura con un libro* | Immagine generata dal prompt *un ritratto ravvicinato a olio di una giovane insegnante di informatica con un computer* | Immagine generata dal prompt *un ritratto ravvicinato a olio di un anziano insegnante di matematica davanti a una lavagna* -> Images de la collection **Enseignants Artificiels** par [Dmitry Soshnikov](http://soshnikov.com) +> Immagini dalla collezione **Artificial Teachers** di [Dmitry Soshnikov](http://soshnikov.com) ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E est une version de GPT-3 entraînée pour générer des images à partir d'invites. Il a été entraîné avec 12 milliards de paramètres. +DALL-E è una versione di GPT-3 addestrata per generare immagini a partire da prompt. È stato addestrato con 12 miliardi di parametri. -Contrairement à CLIP, DALL-E reçoit à la fois le texte et l'image comme un seul flux de jetons pour les images et le texte. Par conséquent, à partir de plusieurs invites, vous pouvez générer des images basées sur le texte. +A differenza di CLIP, DALL-E riceve sia testo che immagine come un unico flusso di token per entrambi. Pertanto, da più prompt, è possibile generare immagini basate sul testo. ### [DALL-E 2](https://openai.com/dall-e-2) -La principale différence entre DALL-E 1 et 2 est qu'il génère des images et des œuvres d'art plus réalistes. +La principale differenza tra DALL-E 1 e 2 è che quest'ultimo genera immagini e arte più realistiche. -Exemples de générations d'images avec DALL-E : -![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.it.png) | ![Image produite par pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.it.png) | ![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.it.png) +Esempi di generazione di immagini con DALL-E: +![Immagine prodotta da Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.it.png) | ![Immagine prodotta da Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.it.png) | ![Immagine prodotta da Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.it.png) ----|----|---- -Image générée à partir de l'invite *un gros plan d'un portrait aquarelle d'un jeune enseignant de littérature avec un livre* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'une jeune enseignante de sciences informatiques avec un ordinateur* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'un vieux professeur de mathématiques devant un tableau noir* +Immagine generata dal prompt *un ritratto ravvicinato ad acquerello di un giovane insegnante di letteratura con un libro* | Immagine generata dal prompt *un ritratto ravvicinato a olio di una giovane insegnante di informatica con un computer* | Immagine generata dal prompt *un ritratto ravvicinato a olio di un anziano insegnante di matematica davanti a una lavagna* -## Références +## Riferimenti -* Document VQGAN : [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* Document CLIP : [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) +* Articolo su VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Articolo su CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) **Disclaimer**: -Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/sketchnotes/LICENSE.md b/translations/it/lessons/sketchnotes/LICENSE.md index cd80b6f8..9ff47e93 100644 --- a/translations/it/lessons/sketchnotes/LICENSE.md +++ b/translations/it/lessons/sketchnotes/LICENSE.md @@ -1,181 +1,196 @@ -Attribution-ShareAlike 4.0 International + +Attribution-ShareAlike 4.0 Internazionale ======================================================================= -Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. The distribution of Creative Commons public licenses does not establish a lawyer-client or any other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons provides no warranties regarding its licenses, any materials licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. +Creative Commons Corporation ("Creative Commons") non è uno studio legale e non fornisce servizi o consulenza legale. La distribuzione delle licenze pubbliche Creative Commons non crea un rapporto avvocato-cliente o altro tipo di relazione. Creative Commons rende disponibili le sue licenze e le informazioni correlate "così come sono". Creative Commons non offre garanzie riguardo alle sue licenze, ai materiali concessi in licenza secondo i loro termini e condizioni, o alle informazioni correlate. Creative Commons declina ogni responsabilità per danni derivanti dal loro utilizzo nella misura massima consentita. -Using Creative Commons Public Licenses +Utilizzo delle Licenze Pubbliche Creative Commons -Creative Commons public licenses offer a standard set of terms and conditions that creators and other rights holders may utilize to share original works of authorship and other materials subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. +Le licenze pubbliche Creative Commons forniscono un insieme standard di termini e condizioni che i creatori e altri titolari di diritti possono utilizzare per condividere opere originali soggette a copyright e altri diritti specificati nella licenza pubblica sottostante. Le seguenti considerazioni sono solo a scopo informativo, non sono esaustive e non fanno parte delle nostre licenze. - Considerations for licensors: Our public licenses are intended for those authorized to grant the public permission to use materials in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and comprehend the terms and conditions of the license they select before applying it. Licensors should also secure all necessary rights before applying our licenses so that the public can reuse the material as intended. Licensors should clearly indicate any material not subject to the license. This includes other CC-licensed materials or materials used under an exception or limitation to copyright. More considerations for licensors: wiki.creativecommons.org/Considerations_for_licensors + Considerazioni per i licenzianti: Le nostre licenze pubbliche sono + destinate a essere utilizzate da coloro che sono autorizzati a + concedere al pubblico il permesso di utilizzare materiali in modi + altrimenti limitati dal copyright e da altri diritti. Le nostre + licenze sono irrevocabili. I licenzianti dovrebbero leggere e + comprendere i termini e le condizioni della licenza scelta prima + di applicarla. I licenzianti dovrebbero anche assicurarsi di + possedere tutti i diritti necessari prima di applicare le nostre + licenze, in modo che il pubblico possa riutilizzare il materiale + come previsto. I licenzianti dovrebbero chiaramente indicare + qualsiasi materiale non soggetto alla licenza. Questo include + altri materiali concessi in licenza CC o materiali utilizzati + secondo un'eccezione o limitazione al copyright. Ulteriori + considerazioni per i licenzianti: + wiki.creativecommons.org/Considerations_for_licensors - Considerations for the public: By utilizing one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is unnecessary for any reason—such as due to any applicable exception or limitation to copyright—then that use is not governed by the license. Our licenses only grant permissions under copyright and certain other rights that a licensor has the authority to grant. The use of the licensed material may still be restricted for other reasons, including because others hold copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not mandated by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public: wiki.creativecommons.org/Considerations_for_licensees + Considerazioni per il pubblico: Utilizzando una delle nostre + licenze pubbliche, un licenziante concede al pubblico il permesso + di utilizzare il materiale concesso in licenza secondo i termini e + le condizioni specificati. Se il permesso del licenziante non è + necessario per qualsiasi motivo, ad esempio a causa di un'eccezione + o limitazione applicabile al copyright, allora tale utilizzo non è + regolato dalla licenza. Le nostre licenze concedono solo permessi + relativi al copyright e ad altri diritti che un licenziante ha + l'autorità di concedere. L'uso del materiale concesso in licenza + potrebbe comunque essere limitato per altri motivi, inclusi i + diritti di copyright o altri diritti detenuti da terzi sul + materiale. Un licenziante potrebbe fare richieste speciali, come + chiedere che tutte le modifiche siano segnalate o descritte. + Sebbene non richiesto dalle nostre licenze, si consiglia di + rispettare tali richieste quando ragionevoli. Ulteriori + considerazioni per il pubblico: + wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Creative Commons Attribution-ShareAlike 4.0 International Public License +Licenza Pubblica Creative Commons Attribution-ShareAlike 4.0 Internazionale -By exercising the Licensed Rights (defined below), you accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, you are granted the Licensed Rights in consideration of your acceptance of these terms and conditions, and the Licensor grants you such rights in consideration of the benefits the Licensor receives from making the Licensed Material available under these terms and conditions. +Esercitando i Diritti Concessi (definiti di seguito), accetti e ti impegni a rispettare i termini e le condizioni di questa Licenza Pubblica Creative Commons Attribution-ShareAlike 4.0 Internazionale ("Licenza Pubblica"). Nella misura in cui questa Licenza Pubblica possa essere interpretata come un contratto, ti vengono concessi i Diritti Concessi in considerazione della tua accettazione di questi termini e condizioni, e il Licenziante ti concede tali diritti in considerazione dei benefici che il Licenziante riceve rendendo disponibile il Materiale Concesso in Licenza secondo questi termini e condizioni. -Section 1 -- Definitions. +Sezione 1 -- Definizioni. - a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced when the Licensed Material is synchronized in timed relation with a moving image. + a. Materiale Adattato indica materiale soggetto a Copyright e Diritti + Simili derivato o basato sul Materiale Concesso in Licenza e in cui + il Materiale Concesso in Licenza è tradotto, alterato, arrangiato, + trasformato o altrimenti modificato in un modo che richiede + permesso ai sensi del Copyright e Diritti Simili detenuti dal + Licenziante. Ai fini di questa Licenza Pubblica, quando il + Materiale Concesso in Licenza è un'opera musicale, una + performance o una registrazione sonora, il Materiale Adattato è + sempre prodotto quando il Materiale Concesso in Licenza è + sincronizzato in relazione temporale con un'immagine in movimento. - b. Adapter's License means the license you apply to your Copyright and Similar Rights in your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + b. Licenza dell'Adattatore indica la licenza che applichi ai tuoi + Copyright e Diritti Simili nei tuoi contributi al Materiale + Adattato in conformità ai termini e alle condizioni di questa + Licenza Pubblica. - c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially equivalent to this Public License. + c. Licenza Compatibile BY-SA indica una licenza elencata su + creativecommons.org/compatiblelicenses, approvata da Creative + Commons come essenzialmente equivalente a questa Licenza Pubblica. - d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, regardless of how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + d. Copyright e Diritti Simili indica il copyright e/o diritti simili + strettamente correlati al copyright, inclusi, senza limitazioni, + performance, trasmissione, registrazione sonora e Diritti sui + Database Sui Generis, indipendentemente da come i diritti siano + etichettati o categorizzati. Ai fini di questa Licenza Pubblica, i + diritti specificati nella Sezione 2(b)(1)-(2) non sono Copyright e + Diritti Simili. - e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + e. Misure Tecnologiche Efficaci indica quelle misure che, in assenza + di adeguata autorizzazione, non possono essere aggirate ai sensi + delle leggi che soddisfano gli obblighi previsti dall'Articolo 11 + del Trattato sul Copyright WIPO adottato il 20 dicembre 1996, + e/o accordi internazionali simili. - f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to your use of the Licensed Material. + f. Eccezioni e Limitazioni indica l'uso leale, il trattamento leale + e/o qualsiasi altra eccezione o limitazione al Copyright e Diritti + Simili che si applica al tuo utilizzo del Materiale Concesso in + Licenza. - g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. + g. Elementi della Licenza indica gli attributi della licenza elencati + nel nome di una Licenza Pubblica Creative Commons. Gli Elementi + della Licenza di questa Licenza Pubblica sono Attribuzione e + Condividi allo stesso modo. - h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + h. Materiale Concesso in Licenza indica l'opera artistica o letteraria, + il database o altro materiale a cui il Licenziante ha applicato + questa Licenza Pubblica. - i. Licensed Rights means the rights granted to you subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to your use of the Licensed Material and that the Licensor has authority to license. + i. Diritti Concessi indica i diritti concessi a te soggetti ai termini + e alle condizioni di questa Licenza Pubblica, che sono limitati a + tutti i Copyright e Diritti Simili che si applicano al tuo utilizzo + del Materiale Concesso in Licenza e che il Licenziante ha + l'autorità di concedere. - j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + j. Licenziante indica l'individuo o gli individui o l'entità o le + entità che concedono diritti ai sensi di questa Licenza Pubblica. - k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + k. Condividere indica fornire materiale al pubblico con qualsiasi + mezzo o processo che richiede permesso ai sensi dei Diritti + Concessi, come la riproduzione, l'esposizione pubblica, la + performance pubblica, la distribuzione, la diffusione, la + comunicazione o l'importazione, e rendere disponibile il materiale + al pubblico anche in modi che i membri del pubblico possano + accedere al materiale da un luogo e in un momento scelti + individualmente da loro. - l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + l. Diritti sui Database Sui Generis indica diritti diversi dal + copyright derivanti dalla Direttiva 96/9/CE del Parlamento Europeo + e del Consiglio dell'11 marzo 1996 sulla protezione giuridica dei + database, come modificata e/o sostituita, così come altri diritti + essenzialmente equivalenti in qualsiasi parte del mondo. - m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + m. Tu indica l'individuo o l'entità che esercita i Diritti Concessi + ai sensi di questa Licenza Pubblica. Tuo ha un significato + corrispondente. +Diritti, quindi il database in cui hai Diritti Sui Generis sul Database (ma non sui suoi singoli contenuti) è Materiale Adattato, -Section 2 -- Scope. +incluso ai fini della Sezione 3(b); e +c. Devi rispettare le condizioni della Sezione 3(a) se Condividi tutto o una parte sostanziale dei contenuti del database. - a. License grant. +Per evitare dubbi, questa Sezione 4 integra e non sostituisce i tuoi obblighi ai sensi di questa Licenza Pubblica laddove i Diritti Concessi includano altri Diritti d'Autore e Diritti Simili. - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants you a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - a. reproduce and Share the Licensed Material, in whole or in part; and +Sezione 5 -- Esclusione di Garanzie e Limitazione di Responsabilità. - b. produce, reproduce, and Share Adapted Material. +a. SALVO DIVERSA DISPOSIZIONE SEPARATA DA PARTE DEL LICENZIANTE, NELLA MISURA POSSIBILE, IL LICENZIANTE OFFRE IL MATERIALE CONCESSO IN LICENZA "COSÌ COM'È" E "COME DISPONIBILE", E NON FORNISCE DICHIARAZIONI O GARANZIE DI ALCUN TIPO RIGUARDO AL MATERIALE CONCESSO IN LICENZA, SIA ESPRESSE, IMPLICITE, LEGALI O ALTRE. QUESTO INCLUDE, SENZA LIMITAZIONE, GARANZIE DI TITOLARITÀ, COMMERCIABILITÀ, IDONEITÀ A UNO SCOPO PARTICOLARE, NON VIOLAZIONE, ASSENZA DI DIFETTI LATENTI O ALTRI DIFETTI, ACCURATEZZA, O PRESENZA O ASSENZA DI ERRORI, SIA CHE SIANO NOTI O SCOPRIBILI. LADDOVE LE ESCLUSIONI DI GARANZIE NON SONO CONSENTITE IN TUTTO O IN PARTE, QUESTA ESCLUSIONE POTREBBE NON APPLICARSI A TE. - 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to your use, this Public License does not apply, and you do not need to comply with its terms and conditions. +b. NELLA MISURA POSSIBILE, IN NESSUN CASO IL LICENZIANTE SARÀ RESPONSABILE NEI TUOI CONFRONTI SU QUALSIASI BASE LEGALE (INCLUSO, SENZA LIMITAZIONE, NEGLIGENZA) O ALTRO PER QUALSIASI PERDITA DIRETTA, SPECIALE, INDIRETTA, INCIDENTALE, CONSEQUENZIALE, PUNITIVA, ESEMPLARE O ALTRE PERDITE, COSTI, SPESE O DANNI DERIVANTI DA QUESTA LICENZA PUBBLICA O DALL'USO DEL MATERIALE CONCESSO IN LICENZA, ANCHE SE IL LICENZIANTE È STATO AVVISATO DELLA POSSIBILITÀ DI TALI PERDITE, COSTI, SPESE O DANNI. LADDOVE UNA LIMITAZIONE DI RESPONSABILITÀ NON È CONSENTITA IN TUTTO O IN PARTE, QUESTA LIMITAZIONE POTREBBE NON APPLICARSI A TE. - 3. Term. The term of this Public License is specified in Section 6(a). +c. L'esclusione di garanzie e la limitazione di responsabilità sopra indicate devono essere interpretate in modo che, nella misura possibile, si avvicinino il più possibile a un'esclusione assoluta e a una rinuncia a ogni responsabilità. - 4. Media and formats; technical modifications allowed. The Licensor authorizes you to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid you from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - 5. Downstream recipients. +Sezione 6 -- Durata e Risoluzione. - a. Offer from the Licensor -- Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. +a. Questa Licenza Pubblica si applica per la durata dei Diritti d'Autore e Diritti Simili concessi in licenza qui. Tuttavia, se non rispetti questa Licenza Pubblica, i tuoi diritti ai sensi di questa Licenza Pubblica si risolvono automaticamente. - b. Additional offer from the Licensor -- Adapted Material. Every recipient of Adapted Material from you automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter's License you apply. +b. Laddove il tuo diritto di utilizzare il Materiale Concesso in Licenza sia terminato ai sensi della Sezione 6(a), esso si ripristina: - c. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. +1. automaticamente alla data in cui la violazione viene sanata, a condizione che venga sanata entro 30 giorni dalla tua scoperta della violazione; oppure - 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that you are, or that your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). +2. su espressa reintegrazione da parte del Licenziante. - b. Other rights. +Per evitare dubbi, questa Sezione 6(b) non influisce su alcun diritto che il Licenziante potrebbe avere di cercare rimedi per le tue violazioni di questa Licenza Pubblica. - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow you to exercise the Licensed Rights, but not otherwise. +c. Per evitare dubbi, il Licenziante può anche offrire il Materiale Concesso in Licenza sotto termini o condizioni separati o interrompere la distribuzione del Materiale Concesso in Licenza in qualsiasi momento; tuttavia, ciò non terminerà questa Licenza Pubblica. - 2. Patent and trademark rights are not licensed under this Public License. +d. Le Sezioni 1, 5, 6, 7 e 8 sopravvivono alla risoluzione di questa Licenza Pubblica. - 3. To the extent possible, the Licensor waives any right to collect royalties from you for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases, the Licensor expressly reserves any right to collect such royalties. -Section 3 -- License Conditions. +Sezione 7 -- Altri Termini e Condizioni. -Your exercise of the Licensed Rights is expressly made subject to the following conditions. +a. Il Licenziante non sarà vincolato da termini o condizioni aggiuntivi o diversi comunicati da te a meno che non siano espressamente concordati. - a. Attribution. +b. Qualsiasi accordo, intesa o intesa riguardante il Materiale Concesso in Licenza non dichiarato qui è separato e indipendente dai termini e condizioni di questa Licenza Pubblica. - 1. If you Share the Licensed Material (including in modified form), you must: - a. retain the following if it is supplied by the Licensor with the Licensed Material: +Sezione 8 -- Interpretazione. - i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); +a. Per evitare dubbi, questa Licenza Pubblica non riduce, limita, restringe o impone condizioni su alcun uso del Materiale Concesso in Licenza che potrebbe essere legalmente effettuato senza autorizzazione ai sensi di questa Licenza Pubblica. - ii. a copyright notice; +b. Nella misura possibile, se una qualsiasi disposizione di questa Licenza Pubblica è considerata inapplicabile, sarà automaticamente riformata nella misura minima necessaria per renderla applicabile. Se la disposizione non può essere riformata, sarà separata da questa Licenza Pubblica senza influire sull'applicabilità dei termini e delle condizioni rimanenti. - iii. a notice that refers to this Public License; +c. Nessun termine o condizione di questa Licenza Pubblica sarà rinunciato e nessun mancato rispetto sarà consentito a meno che non sia espressamente concordato dal Licenziante. - iv. a notice that refers to the disclaimer of warranties; +d. Nulla in questa Licenza Pubblica costituisce o può essere interpretato come una limitazione o rinuncia a qualsiasi privilegio e immunità che si applicano al Licenziante o a te, inclusi quelli derivanti dai procedimenti legali di qualsiasi giurisdizione o autorità. - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - b. indicate if you modified the Licensed Material and retain an indication of any previous modifications; and +======================================================================= - c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. +Creative Commons non è parte delle sue licenze pubbliche. Tuttavia, Creative Commons può scegliere di applicare una delle sue licenze pubbliche al materiale che pubblica e in tali casi sarà considerato il "Licenziante". Il testo delle licenze pubbliche Creative Commons è dedicato al pubblico dominio ai sensi della Dedica di Dominio Pubblico CC0. Salvo per il limitato scopo di indicare che il materiale è condiviso sotto una licenza pubblica Creative Commons o come altrimenti consentito dalle politiche di Creative Commons pubblicate su creativecommons.org/policies, Creative Commons non autorizza l'uso del marchio "Creative Commons" o di qualsiasi altro marchio o logo di Creative Commons senza il suo previo consenso scritto, incluso, senza limitazione, in relazione a qualsiasi modifica non autorizzata delle sue licenze pubbliche o qualsiasi altro accordo, intesa o accordo riguardante l'uso del materiale concesso in licenza. Per evitare dubbi, questo paragrafo non fa parte delle licenze pubbliche. - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which you Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. +Creative Commons può essere contattato su creativecommons.org. - 3. If requested by the Licensor, you must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if you Share Adapted Material you produce, the following conditions also apply. - - 1. The Adapter's License you apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the Adapter's License you apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which you Share Adapted Material. - - 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License you apply. - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that apply to your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants you the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; - - b. if you include all or a substantial portion of the database contents in a database in which you have Sui Generis Database Rights, then the database in which you have Sui Generis Database Rights (but not its individual contents) is Adapted Material, - - including for purposes of Section 3(b); and - c. you must comply with the conditions in Section 3(a) if you Share all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not replace your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if you fail to comply with this Public License, then your rights under this Public License terminate automatically. - - b. Where your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of your discovery of the violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for your violations of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different terms or conditions communicated by you unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - - c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - - d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or you, including from the legal processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may choose to apply one of its public licenses to material it publishes, and in those instances will be considered the “Licensor.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent, including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning the use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. - -Creative Commons may be contacted at creativecommons.org. - -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/it/lessons/sketchnotes/README.md b/translations/it/lessons/sketchnotes/README.md index faf46853..ea8802ce 100644 --- a/translations/it/lessons/sketchnotes/README.md +++ b/translations/it/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -All the curriculum's sketchnotes can be downloaded here. + +Tutti gli sketchnote del curriculum possono essere scaricati qui. -🎨 Created by: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) +🎨 Creato da: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) -**Disclaimer**: -This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file +**Disclaimer**: +Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione. \ No newline at end of file diff --git a/translations/mo/README.md b/translations/mo/README.md new file mode 100644 index 00000000..5b79b036 --- /dev/null +++ b/translations/mo/README.md @@ -0,0 +1,156 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# 人工智慧入門課程 - 課程大綱 + +|![由 [(@girlie_mac)](https://twitter.com/girlie_mac) 繪製的速寫筆記 ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| 人工智慧入門 - _速寫筆記由 [@girlie_mac](https://twitter.com/girlie_mac)_ | + +探索 **人工智慧** (AI) 的世界,透過我們為期 12 週、共 24 節課的課程!課程包含實作教學、測驗及實驗室練習。這是一個適合初學者的課程,涵蓋 TensorFlow 和 PyTorch 等工具,以及人工智慧的倫理議題。 + +## 您將學到什麼 + +**[課程心智圖](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +在這門課程中,您將學到: + +* 不同的人工智慧方法,包括「經典」的符號方法,透過 **知識表示** 和推理 ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))。 +* **神經網路** 和 **深度學習**,這是現代人工智慧的核心。我們將使用兩個最受歡迎的框架 [TensorFlow](http://Tensorflow.org) 和 [PyTorch](http://pytorch.org) 的程式碼來說明這些重要主題的概念。 +* **神經架構**,用於處理影像和文字。我們將涵蓋近期的模型,但可能不包括最新的技術。 +* 不太常見的人工智慧方法,例如 **遺傳演算法** 和 **多代理系統**。 + +我們不會在這門課程中涵蓋: + +> [在 Microsoft Learn 的課程資源集合中找到所有額外資源](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **人工智慧在商業中的應用案例**。建議參加 [商業用戶的人工智慧入門](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) 學習路徑,或由 [INSEAD](https://www.insead.edu/) 合作開發的 [AI 商業學院](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)。 +* **經典機器學習**,這部分已在我們的 [機器學習入門課程](http://github.com/Microsoft/ML-for-Beginners) 中詳細描述。 +* 使用 **[認知服務](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** 建立的人工智慧應用。建議從 Microsoft Learn 的模組開始,例如 [影像](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum)、[自然語言處理](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum)、**[Azure OpenAI Service 的生成式人工智慧](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** 等。 +* 特定的機器學習 **雲端框架**,例如 [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum)、[Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) 或 [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)。建議參加 [使用 Azure Machine Learning 建立和操作機器學習解決方案](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) 和 [使用 Azure Databricks 建立和操作機器學習解決方案](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) 學習路徑。 +* **對話式人工智慧** 和 **聊天機器人**。有一個單獨的 [建立對話式人工智慧解決方案](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) 學習路徑,您也可以參考 [這篇部落格文章](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) 了解更多細節。 +* **深度學習的數學基礎**。建議參考 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 所著的 [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618),也可在線上取得:[https://www.deeplearningbook.org/](https://www.deeplearningbook.org/)。 + +若想輕鬆入門 _雲端人工智慧_ 主題,建議參加 [在 Azure 上開始人工智慧學習](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) 學習路徑。 + +# 課程內容 + +| | 課程連結 | PyTorch/Keras/TensorFlow | 實驗室 | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [課程設定](./lessons/0-course-setup/setup.md) | [設定您的開發環境](./lessons/0-course-setup/how-to-run.md) | | +| I | [**人工智慧簡介**](./lessons/1-Intro/README.md) | | | +| 01 | [人工智慧的簡介與歷史](./lessons/1-Intro/README.md) | - | - | +| II | **符號人工智慧** | +| 02 | [知識表示與專家系統](./lessons/2-Symbolic/README.md) | [專家系統](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [本體論](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[概念圖](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**神經網路簡介**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [感知器](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [筆記本](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [實驗室](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [多層感知器與建立我們自己的框架](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [筆記本](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [實驗室](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [框架簡介 (PyTorch/TensorFlow) 與過度擬合](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [實驗室](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**電腦視覺**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [探索 Microsoft Azure 上的電腦視覺](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [電腦視覺簡介. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [筆記本](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [實驗室](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [卷積神經網路](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN 架構](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [實驗室](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [預訓練網絡與遷移學習](./lessons/4-ComputerVision/08-TransferLearning/README.md) 和 [訓練技巧](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [實驗](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [自編碼器與變分自編碼器 (VAEs)](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [生成對抗網絡 (GANs) 與藝術風格遷移](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [物體檢測](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [實驗](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [語義分割. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**自然語言處理**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [在 Microsoft Azure 上探索自然語言處理](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [文本表示. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [語義詞嵌入. Word2Vec 和 GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [語言建模. 訓練自己的嵌入](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [實驗](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [循環神經網絡 (RNN)](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [生成式循環網絡](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [實驗](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformer. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [命名實體識別 (NER)](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [實驗](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [大型語言模型、提示編程與少樣本任務](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **其他 AI 技術** || | +| 21 | [遺傳算法](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [深度強化學習](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [實驗](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [多智能體系統](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI 倫理** | | | +| 24 | [AI 倫理與負責任的 AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: 負責任的 AI 原則](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **附加內容** | | | +| 25 | [多模態網絡、CLIP 和 VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## 每節課包含 + +* 預讀材料 +* 可執行的 Jupyter Notebook,通常針對特定框架(**PyTorch** 或 **TensorFlow**)。這些 Notebook 包含大量理論內容,因此為了理解主題,您需要至少閱讀一個版本的 Notebook(PyTorch 或 TensorFlow)。 +* **實驗**(部分主題提供),讓您有機會將所學應用於具體問題。 +* 某些章節包含指向 [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) 模組的鏈接,涵蓋相關主題。 + +## 開始學習 + +- 我們已經創建了一個 [設置課程](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md),幫助您設置開發環境。 +- 對於教育者,我們還創建了一個 [課程設置指南](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- 如何 [在 VSCode 或 Codepace 中運行代碼](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +請按照以下步驟操作: + +Fork 此倉庫:點擊頁面右上角的 "Fork" 按鈕。 + +克隆倉庫:`git clone https://github.com/microsoft/AI-For-Beginners.git` + +別忘了給這個倉庫加星標 (🌟),以便日後更容易找到。 + +## 與其他學習者交流 + +加入我們的 [官方 AI Discord 伺服器](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum),與其他學習者交流並獲得支持。 + +如果您在構建過程中有產品反饋或問題,請訪問我們的 [Azure AI Foundry 開發者論壇](https://aka.ms/foundry/forum) + +## 測驗 +> **關於測驗的注意事項**:所有測驗都存放在 etc\quiz-app 的 Quiz-app 資料夾中,並從課程中進行連結。測驗應用程式可以在本地執行或部署到 Azure;請按照 `quiz-app` 資料夾中的指示進行操作。測驗正在逐步進行本地化。 +## 幫助徵求 + +您有任何建議或發現拼寫或程式碼錯誤嗎?請提交一個問題或建立一個拉取請求。 + +## 特別感謝 + +* **✍️ 主要作者:** [Dmitry Soshnikov](http://soshnikov.com),博士 +* **🔥 編輯:** [Jen Looper](https://twitter.com/jenlooper),博士 +* **🎨 手繪筆記插畫師:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ 測驗創作者:** [Lateefah Bello](https://github.com/CinnamonXI),[MLSA](https://studentambassadors.microsoft.com/) +* **🙏 核心貢獻者:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## 其他課程 + +我們的團隊還製作了其他課程!請查看以下內容: + +- [生成式 AI 初學者課程](https://aka.ms/genai-beginners) +- [生成式 AI 初學者課程 .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [使用 JavaScript 的生成式 AI](https://github.com/microsoft/generative-ai-with-javascript) +- [使用 Java 的生成式 AI](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI 初學者課程](https://aka.ms/ai-beginners) +- [資料科學初學者課程](https://aka.ms/datascience-beginners) +- [機器學習初學者課程](https://aka.ms/ml-beginners) +- [網路安全初學者課程](https://github.com/microsoft/Security-101) +- [網頁開發初學者課程](https://aka.ms/webdev-beginners) +- [物聯網初學者課程](https://aka.ms/iot-beginners) +- [XR 開發初學者課程](https://github.com/microsoft/xr-development-for-beginners) +- [精通 GitHub Copilot 的智能應用](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [精通 GitHub Copilot 的 C#/.NET 開發者課程](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [選擇你的 Copilot 冒險](https://github.com/microsoft/CopilotAdventures) + +**免責聲明**: +本文檔使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/SECURITY.md b/translations/mo/SECURITY.md new file mode 100644 index 00000000..0b782a84 --- /dev/null +++ b/translations/mo/SECURITY.md @@ -0,0 +1,49 @@ + +## 安全性 + +Microsoft 非常重視我們軟體產品與服務的安全性,這包括透過我們的 GitHub 組織管理的所有原始碼庫,這些組織包括 [Microsoft](https://github.com/Microsoft)、[Azure](https://github.com/Azure)、[DotNet](https://github.com/dotnet)、[AspNet](https://github.com/aspnet)、[Xamarin](https://github.com/xamarin) 和 [我們的 GitHub 組織](https://opensource.microsoft.com/)。 + +如果您認為在任何 Microsoft 擁有的原始碼庫中發現了符合 [Microsoft 對安全性漏洞的定義](https://aka.ms/opensource/security/definition) 的安全性漏洞,請按照以下說明向我們報告。 + +## 回報安全性問題 + +**請勿透過公開的 GitHub 問題回報安全性漏洞。** + +相反地,請透過 Microsoft Security Response Center (MSRC) 回報,網址為 [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report)。 + +如果您希望在不登入的情況下提交,請發送電子郵件至 [secure@microsoft.com](mailto:secure@microsoft.com)。如果可能,請使用我們的 PGP 金鑰加密您的訊息;您可以從 [Microsoft Security Response Center PGP Key 頁面](https://aka.ms/opensource/security/pgpkey) 下載。 + +您應該會在 24 小時內收到回應。如果因某些原因未收到回應,請透過電子郵件跟進,以確保我們已收到您的原始訊息。更多資訊請參閱 [microsoft.com/msrc](https://aka.ms/opensource/security/msrc)。 + +請盡可能提供以下所列的資訊,以幫助我們更好地理解問題的性質與範圍: + + * 問題類型(例如:緩衝區溢位、SQL 注入、跨網站腳本攻擊等) + * 與問題相關的原始檔案完整路徑 + * 受影響原始碼的位置(標籤/分支/提交或直接 URL) + * 重現問題所需的任何特殊配置 + * 重現問題的逐步指導 + * 概念驗證或利用程式碼(如果可能) + * 問題的影響,包括攻擊者可能如何利用該問題 + +這些資訊將幫助我們更快速地處理您的回報。 + +如果您是為了漏洞賞金計畫而回報,提供更完整的報告可能有助於獲得更高的賞金獎勵。請造訪我們的 [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) 頁面,了解更多關於我們現行計畫的詳情。 + +## 偏好語言 + +我們偏好所有的溝通以英文進行。 + +## 政策 + +Microsoft 遵循 [協調式漏洞揭露原則](https://aka.ms/opensource/security/cvd)。 + +**免責聲明**: +本文檔已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/etc/CODE_OF_CONDUCT.md b/translations/mo/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..ef8e1ea0 --- /dev/null +++ b/translations/mo/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Microsoft 開源行為準則 + +此專案已採用 [Microsoft 開源行為準則](https://opensource.microsoft.com/codeofconduct/)。 + +資源: + +- [Microsoft 開源行為準則](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft 行為準則常見問題](https://opensource.microsoft.com/codeofconduct/faq/) +- 如有任何問題或疑慮,請聯絡 [opencode@microsoft.com](mailto:opencode@microsoft.com) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/etc/CONTRIBUTING.md b/translations/mo/etc/CONTRIBUTING.md new file mode 100644 index 00000000..232492e9 --- /dev/null +++ b/translations/mo/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# 貢獻指南 + +此專案歡迎各種貢獻與建議。大多數的貢獻需要您同意一份貢獻者授權協議 (CLA),以聲明您擁有權利並實際授予我們使用您的貢獻的權利。詳細資訊請參閱 https://cla.microsoft.com。 + +當您提交拉取請求 (pull request) 時,CLA 機器人會自動判斷您是否需要提供 CLA,並適當地標記 PR(例如,添加標籤或評論)。只需按照機器人提供的指示操作即可。您只需在所有使用我們 CLA 的存儲庫中完成一次此操作。 + +此專案已採用 [Microsoft 開源行為準則](https://opensource.microsoft.com/codeofconduct/)。如需更多資訊,請參閱 [行為準則常見問題](https://opensource.microsoft.com/codeofconduct/faq/) 或聯絡 [opencode@microsoft.com](mailto:opencode@microsoft.com) 提出其他問題或意見。 + +# 尋求貢獻 + +我們目前正在積極尋求以下主題的貢獻: + +- [ ] 撰寫深度強化學習的章節 +- [ ] 改善物件偵測的章節與筆記本 +- [ ] PyTorch Lightning(針對[此章節](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] 撰寫命名實體識別的章節與範例 +- [ ] 為[此章節](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling)建立訓練自有嵌入的範例 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/etc/Mindmap.md b/translations/mo/etc/Mindmap.md new file mode 100644 index 00000000..69eb34d4 --- /dev/null +++ b/translations/mo/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# 人工智慧 (AI) + +## [人工智慧簡介](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - 人工智慧的定義 + - 人工智慧的歷史 + - 人工智慧的方法 + - 自上而下/符號式 + - 自下而上/神經網路 + - 演化式 + - 協同/湧現式人工智慧 + - [微軟人工智慧商業學院](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [符號式人工智慧](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - 知識表示 + - [專家系統](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [本體論](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - 語意網 + +## [神經網路](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [感知器](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [多層網路](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [框架簡介](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [過擬合](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [電腦視覺](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - 在微軟學習平台上 + - [人工智慧基礎:探索電腦視覺](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [使用 PyTorch 的電腦視覺](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [使用 TensorFlow 的電腦視覺](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [電腦視覺簡介:OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [卷積網路](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [卷積神經網路架構](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [遷移學習](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [訓練技巧](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [自編碼器與變分自編碼器 (VAEs)](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [生成對抗網路 (GANs)](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [風格遷移](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [物件偵測](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [影像分割](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [自然語言處理](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - 在微軟學習平台上 + - [人工智慧基礎:探索自然語言處理](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [使用 PyTorch 的自然語言處理](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [使用 TensorFlow 的自然語言處理](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [文本表示](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - 詞袋模型 (Bag of Words) + - TF/IDF + - [語意嵌入](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [語言建模](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [循環神經網路 (RNN)](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - 長短期記憶網路 (LSTM) + - 閘控循環單元 (GRU) + - [生成式循環網路](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformer 和 BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [命名實體識別 (NER)](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [文本生成與 GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## 其他技術 + - [遺傳演算法](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [深度強化學習](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [多代理系統](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [人工智慧倫理](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [微軟學習平台上的負責任人工智慧](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## 附加內容 + - [多模態網路](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**免責聲明**: +本文檔使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/etc/SUPPORT.md b/translations/mo/etc/SUPPORT.md new file mode 100644 index 00000000..3eca8aa0 --- /dev/null +++ b/translations/mo/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# 支援 + +## 如何提交問題並獲得幫助 + +此專案使用 GitHub Issues 來追蹤錯誤和功能請求。在提交新問題之前,請先搜尋現有的問題以避免重複。對於新問題,請將您的錯誤或功能請求提交為一個新的 Issue。 + +若需幫助或對使用此專案有任何疑問,請使用討論板。 + +## Microsoft 支援政策 + +此專案的支援僅限於上述列出的資源。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/etc/TRANSLATIONS.md b/translations/mo/etc/TRANSLATIONS.md new file mode 100644 index 00000000..a9397fa4 --- /dev/null +++ b/translations/mo/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# 透過翻譯課程內容來貢獻 + +我們歡迎您為本課程的內容進行翻譯! + +## 指導方針 + +在每個課程資料夾和課程介紹資料夾中,都有包含翻譯後的 Markdown 文件的資料夾。 + +> 注意,請勿翻譯任何程式碼範例文件中的程式碼;唯一需要翻譯的部分是 README、作業和測驗。謝謝! + +翻譯後的文件應遵循以下命名規則: + +**README._[language]_.md** + +其中 _[language]_ 是遵循 ISO 639-1 標準的兩位字母語言縮寫(例如,西班牙文為 `README.es.md`,荷蘭文為 `README.nl.md`)。 + +**assignment._[language]_.md** + +與 README 文件類似,請翻譯作業文件。 + +**測驗** + +1. 將您的翻譯添加到測驗應用程式中,方法是將文件添加到以下位置:https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations,並遵循正確的命名規則(例如,en.json、fr.json)。**請不要翻譯 "true" 或 "false" 這些詞語,謝謝!** + +2. 將您的語言代碼添加到測驗應用程式的 App.vue 文件中的下拉選單。 + +3. 編輯測驗應用程式的 [translations index.js 文件](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js),以添加您的語言。 + +4. 最後,編輯您翻譯後的 README.md 文件中的所有測驗連結,直接指向您的翻譯後測驗:https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 改為 https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**感謝您** + +我們真心感謝您的努力! + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/etc/quiz-app/README.md b/translations/mo/etc/quiz-app/README.md new file mode 100644 index 00000000..973be7bd --- /dev/null +++ b/translations/mo/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# 測驗 + +這些測驗是 AI 課程的課前和課後測驗,課程網址為:https://aka.ms/ai-beginners + +## 新增翻譯的測驗集 + +要新增測驗翻譯,請在 `assets/translations` 資料夾中建立對應的測驗結構。原始的測驗位於 `assets/translations/en`。測驗依據課程分為多個部分,請確保編號與正確的測驗部分對齊。整個課程共有 40 個測驗,編號從 0 開始。 + +完成翻譯後,請編輯翻譯資料夾中的 `index.js` 檔案,按照 `en` 資料夾中的慣例匯入所有檔案。 + +接著,編輯 `assets/translations` 資料夾中的 `index.js` 檔案,匯入新的翻譯檔案。 + +然後,編輯此應用程式中的 `App.vue` 檔案中的下拉選單,新增您的語言。請確保本地化的縮寫與您的語言資料夾名稱一致。 + +最後,如果翻譯課程中已存在測驗連結,請編輯所有測驗連結,將本地化參數加入查詢字串中,例如:`?loc=fr`。 + +## 專案設定 + +``` +npm install +``` + +### 編譯並啟用開發模式的即時重新載入 + +``` +npm run serve +``` + +### 編譯並壓縮以進行生產部署 + +``` +npm run build +``` + +### 檢查並修復檔案 + +``` +npm run lint +``` + +### 自訂設定 + +請參閱 [設定參考](https://cli.vuejs.org/config/)。 + +致謝:感謝此測驗應用程式的原始版本:https://github.com/arpan45/simple-quiz-vue + +## 部署到 Azure + +以下是幫助您開始的逐步指南: + +1. **Fork GitHub 儲存庫** +確保您的靜態網站應用程式程式碼位於您的 GitHub 儲存庫中。Fork 此儲存庫。 + +2. **建立 Azure 靜態網站應用程式** +- 建立並登入 [Azure 帳戶](http://azure.microsoft.com) +- 前往 [Azure 入口網站](https://portal.azure.com) +- 點擊「建立資源」,搜尋「靜態網站應用程式」。 +- 點擊「建立」。 + +3. **設定靜態網站應用程式** +- **基本設定**: + - 訂閱:選擇您的 Azure 訂閱。 + - 資源群組:建立新的資源群組或使用現有的。 + - 名稱:為您的靜態網站應用程式提供一個名稱。 + - 區域:選擇最接近使用者的區域。 + +- **部署詳細資訊**: + - 原始碼:選擇「GitHub」。 + - GitHub 帳戶:授權 Azure 存取您的 GitHub 帳戶。 + - 組織:選擇您的 GitHub 組織。 + - 儲存庫:選擇包含靜態網站應用程式的儲存庫。 + - 分支:選擇您要部署的分支。 + +- **建置詳細資訊**: + - 建置預設值:選擇應用程式使用的框架(例如 React、Angular、Vue 等)。 + - 應用程式位置:指定應用程式程式碼所在的資料夾(例如,如果在根目錄,則為 `/`)。 + - API 位置:如果有 API,請指定其位置(可選)。 + - 輸出位置:指定建置輸出生成的資料夾(例如 build 或 dist)。 + +4. **檢查並建立** +檢查您的設定,然後點擊「建立」。Azure 會設置必要的資源,並在您的儲存庫中建立 GitHub Actions 工作流程。 + +5. **GitHub Actions 工作流程** +Azure 會自動在您的儲存庫中建立 GitHub Actions 工作流程檔案(.github/workflows/azure-static-web-apps-.yml)。此工作流程將處理建置和部署過程。 + +6. **監控部署** +前往 GitHub 儲存庫中的「Actions」標籤。 +您應該會看到一個正在運行的工作流程。此工作流程將建置並部署您的靜態網站應用程式到 Azure。 +工作流程完成後,您的應用程式將在提供的 Azure URL 上線。 + +### 範例工作流程檔案 + +以下是 GitHub Actions 工作流程檔案的範例: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### 其他資源 +- [Azure 靜態網站應用程式文件](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions 文件](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/0-course-setup/for-teachers.md b/translations/mo/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..8b33106c --- /dev/null +++ b/translations/mo/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# 給教育工作者 + +您是否希望在課堂上使用這份課程?請隨意使用! + +事實上,您可以直接在 GitHub 上使用 GitHub Classroom 來進行。 + +要做到這一點,請先 fork 此 repo。您需要為每一課建立一個 repo,因此需要將每個文件夾提取到單獨的 repo 中。這樣,[GitHub Classroom](https://classroom.github.com/classrooms) 就能分別處理每一課。 + +這些[完整的指導說明](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/)可以幫助您了解如何設置您的課堂。 + +## 直接使用此 repo + +如果您希望直接使用目前的 repo,而不使用 GitHub Classroom,也可以這樣做。您需要與您的學生溝通,告訴他們一起學習哪一課。 + +在線上教學形式(例如 Zoom、Teams 或其他平台)中,您可以為測驗設置分組討論室,並指導學生做好學習準備。然後邀請學生參加測驗,並在指定時間以 "issues" 的形式提交答案。如果您希望學生公開合作,也可以用相同方式進行作業。 + +如果您更喜歡較為私密的形式,可以要求學生逐課 fork 此課程到他們自己的 GitHub 私人 repo,並授予您訪問權限。這樣他們可以私下完成測驗和作業,並通過 classroom repo 的 issues 提交給您。 + +在線課堂有許多不同的運作方式。請告訴我們哪種方式最適合您! + +## 請提供您的意見 + +我們希望這份課程能真正幫助到您和您的學生。請在討論區提供您的反饋意見! + +**免責聲明**: +本文檔使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/0-course-setup/how-to-run.md b/translations/mo/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..bde767d6 --- /dev/null +++ b/translations/mo/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,77 @@ + +# 如何執行程式碼 + +這份課程包含許多可執行的範例和實驗室,您可能會想要執行它們。為了做到這一點,您需要能夠在這份課程提供的 Jupyter Notebooks 中執行 Python 程式碼。以下是幾種執行程式碼的選項: + +## 在本地電腦上執行 + +若要在本地電腦上執行程式碼,您需要安裝某個版本的 Python。我個人推薦安裝 **[miniconda](https://conda.io/en/latest/miniconda.html)**,這是一個輕量級的安裝包,支援使用 `conda` 套件管理器來建立不同的 Python **虛擬環境**。 + +安裝 miniconda 後,您需要克隆這個儲存庫並建立一個虛擬環境來用於這門課程: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### 使用 Visual Studio Code 和 Python 擴展 + +最好的方式可能是使用 [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) 搭配 [Python 擴展](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste)來開啟這份課程。 + +> **注意**:當您克隆並在 VS Code 中開啟目錄時,系統會自動建議您安裝 Python 擴展。您還需要按照上述步驟安裝 miniconda。 + +> **注意**:如果 VS Code 建議您在容器中重新開啟儲存庫,請拒絕此建議,改用本地的 Python 安裝。 + +### 在瀏覽器中使用 Jupyter + +您也可以直接在自己的電腦瀏覽器中使用 Jupyter 環境。事實上,無論是傳統的 Jupyter 還是 Jupyter Hub,都提供了相當方便的開發環境,包括自動補全、程式碼高亮等功能。 + +若要在本地啟動 Jupyter,請進入課程的目錄,然後執行以下指令: + +```bash +jupyter notebook +``` +或 +```bash +jupyterhub +``` +接著,您可以瀏覽任何 `.ipynb` 檔案,開啟並開始工作。 + +### 在容器中執行 + +另一種替代安裝 Python 的方式是使用容器來執行程式碼。由於我們的儲存庫包含一個特殊的 `.devcontainer` 資料夾,指示如何為此儲存庫建立容器,VS Code 會提示您在容器中重新開啟程式碼。這需要安裝 Docker,並且操作會更為複雜,因此我們建議有經驗的使用者採用此方法。 + +## 在雲端執行 + +如果您不想在本地安裝 Python,並且有一些雲端資源可用,那麼在雲端執行程式碼是一個不錯的選擇。以下是幾種方法: + +* 使用 **[GitHub Codespaces](https://github.com/features/codespaces)**,這是一個在 GitHub 上為您建立的虛擬環境,可透過 VS Code 的瀏覽器介面訪問。如果您有 Codespaces 的存取權,只需點擊儲存庫中的 **Code** 按鈕,啟動一個 Codespace,即可快速開始。 + +* 使用 **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**。[Binder](https://mybinder.org) 是一個免費的雲端計算資源,供像您這樣的使用者在 GitHub 上測試一些程式碼。首頁上有一個按鈕可以將儲存庫開啟於 Binder,這會快速將您帶到 Binder 網站,該網站會建立底層容器並無縫啟動 Jupyter 網頁介面。 + +> **注意**:為了防止濫用,Binder 對某些網路資源的存取是受限的。這可能會導致某些需要從公共網路下載模型或數據集的程式碼無法正常運行,您可能需要尋找替代方案。此外,Binder 提供的計算資源相對基礎,因此在後續更複雜的課程中,訓練速度可能會較慢。 + +## 在雲端使用 GPU 執行 + +課程中的某些後續章節會因為需要大量計算而非常適合使用 GPU,否則訓練過程可能會非常緩慢。如果您有雲端資源的存取權,例如透過 [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) 或您的機構,以下是幾個選項: + +* 建立 [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste),並透過 Jupyter 連接到它。您可以直接將儲存庫克隆到該機器上,然後開始學習。NC 系列的虛擬機器支援 GPU。 + +> **注意**:某些訂閱(包括 Azure for Students)並未預設提供 GPU 支援。您可能需要透過技術支援請求額外的 GPU 核心。 + +* 建立 [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste),然後使用其中的 Notebook 功能。[這段影片](https://azure-for-academics.github.io/quickstart/azureml-papers/)展示了如何將儲存庫克隆到 Azure ML Notebook 並開始使用。 + +您也可以使用 Google Colab,它提供一些免費的 GPU 支援,並將 Jupyter Notebooks 上傳到那裡,逐一執行。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/0-course-setup/setup.md b/translations/mo/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..4f0b97b3 --- /dev/null +++ b/translations/mo/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# 開始使用這份課程 + +## 你是學生嗎? + +可以從以下資源開始: + +* [學生中心頁面](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) 在這個頁面,你可以找到入門資源、學生套件,甚至是獲取免費認證券的方法。這是一個值得收藏並定期查看的頁面,因為我們至少每月更新一次內容。 +* [Microsoft 學生大使](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) 加入一個全球性的學生大使社群,這可能是你進入 Microsoft 的途徑。 + +**學生們**,有幾種方式可以使用這份課程。首先,你可以直接在 GitHub 上閱讀文本並查看程式碼。如果你想在任何筆記本中執行程式碼,請[閱讀我們的說明](./etc/how-to-run.md),並在[這篇部落格文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)中找到更多建議。 + +> **注意**: [如何執行這份課程中的程式碼的說明](./how-to-run.md) + +## 自學 + +然而,如果你想將這門課程作為自學專案,我們建議你將整個倉庫分叉到自己的 GitHub 帳戶,並自行或與小組一起完成練習: + +* 從課前測驗開始。 +* 閱讀課程的介紹文本。 +* 如果課程有額外的筆記本,請閱讀並執行其中的程式碼。如果同時提供了 TensorFlow 和 PyTorch 的筆記本,你可以專注於其中一個,選擇你喜歡的框架。 +* 筆記本中通常包含一些挑戰,這些挑戰需要你稍微調整程式碼來進行實驗。 +* 完成課後測驗。 +* 如果模組附有實驗室,請完成相關作業。 +* 參觀[討論區](https://github.com/microsoft/AI-For-Beginners/discussions)來「大聲學習」。 + +> 對於進一步的學習,我們建議你參考這些 [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) 模組和學習路徑。 + +**教師們**,我們[提供了一些建議](/for-teachers.md)來幫助你使用這份課程。 + +--- + +## 教學法 + +在設計這份課程時,我們選擇了兩個教學原則:確保它是**基於專案的實作**,並且包含**頻繁的測驗**。 + +透過確保內容與專案相符,學習過程對學生來說會更具吸引力,並且能增強概念的記憶。此外,課前的低壓測驗可以幫助學生專注於學習主題,而課後的第二次測驗則能進一步鞏固記憶。這份課程的設計靈活且有趣,可以完整學習,也可以部分選修。專案從簡單開始,並在 12 週的學習週期中逐漸變得更具挑戰性。 + +> **關於測驗的說明**: 所有測驗都包含在[這個應用程式](https://red-field-0a6ddfd03.1.azurestaticapps.net/)中,共有 50 個測驗,每個測驗包含三個問題。測驗在課程中有連結,但也可以在本地執行;請按照 `etc/quiz-app` 資料夾中的說明進行操作。 + +## 離線使用 + +你可以使用 [Docsify](https://docsify.js.org/#/) 離線運行這份文件。將這個倉庫分叉,[在本地機器上安裝 Docsify](https://docsify.js.org/#/quickstart),然後在這個倉庫的根目錄中輸入 `docsify serve`。網站將在本地的 3000 埠上運行:`localhost:3000`。課程的 PDF 版本可在[此連結](../../../../../../../../../etc/pdf/readme.pdf)中獲取。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/1-Intro/README.md b/translations/mo/lessons/1-Intro/README.md new file mode 100644 index 00000000..be98b980 --- /dev/null +++ b/translations/mo/lessons/1-Intro/README.md @@ -0,0 +1,163 @@ + +# 人工智慧簡介 + +![AI 簡介內容的手繪圖](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mo.png) + +> 手繪筆記由 [Tomomi Imura](https://twitter.com/girlie_mac) 提供 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**人工智慧**是一門令人興奮的科學學科,研究如何讓電腦展現出智能行為,例如執行人類擅長的事情。 + +最初,電腦是由[查爾斯·巴貝奇](https://en.wikipedia.org/wiki/Charles_Babbage)發明的,用於按照明確定義的程序(即算法)處理數字。現代電腦雖然比19世紀提出的原始模型先進得多,但仍然遵循受控計算的基本理念。因此,如果我們知道實現目標所需的確切步驟序列,就可以編程讓電腦執行某些任務。 + +![一個人的照片](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mo.png) + +> 照片由 [Vickie Soshnikova](http://twitter.com/vickievalerie) 提供 + +> ✅ 從一張照片中判斷一個人的年齡是一項無法明確編程的任務,因為我們無法解釋當我們做出判斷時,腦海中是如何得出這個數字的。 + +--- + +然而,有些任務我們並不知道如何明確解決。例如,從一張照片中判斷一個人的年齡。我們能夠學會這樣做,是因為我們見過許多年齡不同的人的例子,但我們無法明確解釋我們是如何做到的,也無法編程讓電腦完成這項任務。這正是**人工智慧**(簡稱 AI)感興趣的任務類型。 + +✅ 想一想有哪些任務可以交給電腦處理,並且能從 AI 中受益。考慮金融、醫療和藝術領域——這些領域今天是如何從 AI 中受益的? + +## 弱人工智慧與強人工智慧 + +弱人工智慧 | 強人工智慧 +---------------------------------------|------------------------------------- +弱人工智慧指的是為特定任務或一組狹窄任務設計和訓練的 AI 系統。|強人工智慧,或稱人工通用智慧(AGI),指的是具有與人類相當的智能和理解能力的 AI 系統。 +這些 AI 系統並非通用智能;它們在執行預定義任務方面表現出色,但缺乏真正的理解或意識。|這些 AI 系統能夠執行人類可以完成的任何智力任務,適應不同的領域,並擁有某種形式的意識或自我認知。 +弱人工智慧的例子包括虛擬助手(如 Siri 或 Alexa)、流媒體服務使用的推薦算法,以及專為特定客戶服務任務設計的聊天機器人。|實現強人工智慧是 AI 研究的長期目標,這需要開發能夠在廣泛任務和情境中進行推理、學習、理解和適應的 AI 系統。 +弱人工智慧高度專業化,缺乏人類般的認知能力或超出其狹窄領域的通用問題解決能力。|強人工智慧目前仍是一個理論概念,尚無 AI 系統達到這種通用智能的水平。 + +更多資訊請參考 **[人工通用智慧](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI)。 + +## 智能的定義與圖靈測試 + +在討論**[智能](https://en.wikipedia.org/wiki/Intelligence)**這個術語時,問題之一是我們對這個術語沒有明確的定義。有人認為智能與**抽象思維**或**自我意識**有關,但我們無法準確地定義它。 + +![一隻貓的照片](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mo.jpg) + +> [照片](https://unsplash.com/photos/75715CVEJhI)由 [Amber Kipp](https://unsplash.com/@sadmax) 提供,來自 Unsplash + +為了體會“智能”這個術語的模糊性,試著回答這個問題:“貓是智能的嗎?”不同的人往往會給出不同的答案,因為沒有普遍接受的測試來證明這一說法的真偽。如果你認為有,那就試著讓你的貓參加智商測試吧…… + +✅ 想一分鐘,如何定義智能。一隻能解迷宮並獲得食物的烏鴉算智能嗎?一個小孩算智能嗎? + +--- + +在討論 AGI 時,我們需要某種方法來判斷我們是否創造了一個真正智能的系統。[艾倫·圖靈](https://en.wikipedia.org/wiki/Alan_Turing)提出了一種方法,稱為**[圖靈測試](https://en.wikipedia.org/wiki/Turing_test)**,這也可以作為智能的定義。該測試將給定系統與某種固有智能的東西(即真人)進行比較,並且由於任何自動化比較都可能被電腦程序繞過,我們使用人類審查員。因此,如果一個人無法在基於文本的對話中區分真人和電腦系統,那麼該系統就被認為是智能的。 + +> 一個名為 [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) 的聊天機器人在 2014 年接近通過圖靈測試,該機器人由聖彼得堡的團隊開發,並使用了一個巧妙的個性設計。它一開始就聲稱自己是一個 13 歲的烏克蘭男孩,這解釋了知識的缺乏和文本中的一些不一致性。該機器人在 5 分鐘的對話後說服了 30% 的評審員相信它是人類,這是一個圖靈認為機器應該在 2000 年之前能夠通過的指標。然而,我們應該明白,這並不意味著我們創造了一個智能系統,或者電腦系統欺騙了人類審查員——實際上是機器人的創作者欺騙了人類! + +✅ 你是否曾經被聊天機器人誤導,以為自己在與真人對話?它是如何說服你的? + +## 不同的 AI 方法 + +如果我們希望電腦像人類一樣行為,我們需要以某種方式在電腦中模擬我們的思維方式。因此,我們需要試圖理解是什麼讓人類具有智能。 + +> 為了能夠將智能編程到機器中,我們需要理解我們自己的決策過程是如何運作的。如果你進行一些自我反思,你會意識到有些過程是潛意識進行的——例如,我們可以在不經思考的情況下區分貓和狗——而另一些則涉及推理。 + +解決這個問題有兩種可能的方法: + +自上而下方法(符號推理) | 自下而上方法(神經網絡) +---------------------------------------|------------------------------------- +自上而下的方法模擬人類解決問題的推理方式。它涉及從人類中提取**知識**,並以電腦可讀的形式表示。我們還需要開發一種方法來在電腦中模擬**推理**。| 自下而上的方法模擬人腦的結構,由大量簡單單元(稱為**神經元**)組成。每個神經元的作用類似於其輸入的加權平均值,我們可以通過提供**訓練數據**來訓練神經網絡解決有用的問題。 + +此外,還有一些其他可能的智能方法: + +* **湧現式**、**協同式**或**多代理方法**基於這樣一個事實,即通過大量簡單代理的交互可以獲得複雜的智能行為。根據[進化控制論](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics),智能可以在*元系統轉變*的過程中從更簡單的反應行為中*湧現*。 + +* **進化方法**或**遺傳算法**是一種基於進化原則的優化過程。 + +我們將在課程後續部分探討這些方法,但現在我們將重點放在兩個主要方向:自上而下和自下而上。 + +### 自上而下方法 + +在**自上而下方法**中,我們試圖模擬我們的推理過程。由於我們在推理時可以跟隨自己的思路,我們可以嘗試將這一過程形式化並編程到電腦中。這被稱為**符號推理**。 + +人們往往在頭腦中有一些指導決策過程的規則。例如,當醫生診斷病人時,他或她可能意識到病人有發燒症狀,因此可能存在某種炎症。通過將大量規則應用於特定問題,醫生可能最終得出診斷結論。 + +這種方法在很大程度上依賴於**知識表示**和**推理**。從人類專家那裡提取知識可能是最困難的部分,因為醫生在許多情況下可能不知道自己為什麼得出某個診斷。有時解決方案只是突然出現在他的腦海中,沒有經過明確的思考。有些任務,例如從照片中判斷一個人的年齡,根本無法簡化為知識操作。 + +### 自下而上方法 + +或者,我們可以嘗試模擬我們大腦中的最簡單元素——神經元。我們可以在電腦中構建所謂的**人工神經網絡**,然後通過提供示例來教它解決問題。這個過程類似於新生兒通過觀察學習周圍環境的方式。 + +✅ 做一些研究,了解嬰兒是如何學習的。嬰兒大腦的基本元素是什麼? + +> | 那麼機器學習呢? | | +> |--------------|-----------| +> | 基於電腦通過數據學習解決問題的人工智慧部分被稱為**機器學習**。我們不會在本課程中討論傳統的機器學習——我們建議參考單獨的[機器學習初學者課程](http://aka.ms/ml-beginners)。 | ![機器學習初學者課程](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mo.png) | + +## AI 的簡史 + +人工智慧作為一個領域始於20世紀中期。最初,符號推理是一種流行的方法,並且它帶來了一些重要的成功,例如專家系統——能夠在某些有限問題領域中充當專家的電腦程序。然而,很快就發現這種方法的可擴展性不佳。從專家那裡提取知識、將其表示為電腦可讀形式並保持知識庫的準確性,事實證明這是一項非常複雜的任務,在許多情況下成本過高而不切實際。這導致了1970年代所謂的[AI 冬天](https://en.wikipedia.org/wiki/AI_winter)。 + +> 圖片由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +隨著時間的推移,計算資源變得更便宜,數據也變得更加豐富,神經網絡方法開始在許多領域(如計算機視覺或語音理解)中展現出與人類競爭的卓越性能。在過去十年中,“人工智慧”這個術語大多被用作神經網絡的同義詞,因為我們聽到的大多數 AI 成功案例都基於神經網絡。 + +我們可以觀察到這些方法的變化,例如在創建下棋電腦程序時: + +* 早期的下棋程序基於搜索——程序明確嘗試估計對手在給定數步內的可能走法,並根據幾步內可以達到的最佳位置選擇最佳走法。這導致了所謂的[alpha-beta 剪枝](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning)搜索算法的發展。 +* 搜索策略在遊戲結束時效果很好,因為搜索空間受到少量可能走法的限制。然而,在遊戲開始時,搜索空間非常龐大,算法可以通過學習人類玩家之間的現有對局來改進。隨後的實驗採用了所謂的[基於案例的推理](https://en.wikipedia.org/wiki/Case-based_reasoning),程序在知識庫中尋找與當前棋局非常相似的案例。 +* 現代能夠擊敗人類玩家的程序基於神經網絡和[強化學習](https://en.wikipedia.org/wiki/Reinforcement_learning),程序通過長時間與自己對弈並從自己的錯誤中學習來學會下棋——這與人類學習下棋的方式非常相似。然而,電腦程序可以在更短的時間內進行更多的對局,因此學習速度更快。 + +✅ 做一些研究,了解其他由 AI 玩過的遊戲。 + +同樣,我們可以看到創建“會說話的程序”(可能通過圖靈測試)的方法如何改變: + +* 這類早期程序(如 [Eliza](https://en.wikipedia.org/wiki/ELIZA))基於非常簡單的語法規則,並將輸入句子重新表述為問題。 +* 現代助手(如 Cortana、Siri 或 Google Assistant)都是混合系統,使用神經網絡將語音轉換為文本並識別我們的意圖,然後使用一些推理或明確的算法執行所需操作。 +* 未來,我們可能會期待一個完全基於神經網絡的模型能夠自行處理對話。最近的 GPT 和 [Turing-NLG](https://turing.microsoft.com/) 系列神經網絡在這方面表現出色。 + +> 圖片由 Dmitry Soshnikov 提供,[照片](https://unsplash.com/photos/r8LmVbUKgns) 由 [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) 提供,Unsplash + +## 最近的人工智慧研究 + +神經網路研究的快速增長始於 2010 年左右,當時大型公共數據集開始變得可用。一個名為 [ImageNet](https://en.wikipedia.org/wiki/ImageNet) 的龐大圖像集合包含約 1400 萬張帶註解的圖像,催生了 [ImageNet 大規模視覺識別挑戰賽](https://image-net.org/challenges/LSVRC/)。 + +![ILSVRC 準確率](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> 圖片由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +2012 年,[卷積神經網路](../4-ComputerVision/07-ConvNets/README.md) 首次被用於圖像分類,這導致分類錯誤率顯著下降(從接近 30% 降至 16.4%)。2015 年,微軟研究院的 ResNet 架構[達到了人類級別的準確率](https://doi.org/10.1109/ICCV.2015.123)。 + +自那時以來,神經網路在許多任務中展現了非常成功的表現: + +--- + +年份 | 達成人類水平 +-----|-------- +2015 | [圖像分類](https://doi.org/10.1109/ICCV.2015.123) +2016 | [對話式語音識別](https://arxiv.org/abs/1610.05256) +2018 | [自動機器翻譯](https://arxiv.org/abs/1803.05567)(中譯英) +2020 | [圖像描述生成](https://arxiv.org/abs/2009.13682) + +在過去幾年中,我們見證了大型語言模型的巨大成功,例如 BERT 和 GPT-3。這主要是因為有大量的通用文本數據可用,這使得我們能夠訓練模型來捕捉文本的結構和意義,先在通用文本集合上進行預訓練,然後再將這些模型專門化用於更具體的任務。我們將在本課程稍後學習更多關於[自然語言處理](../5-NLP/README.md)的內容。 + +## 🚀 挑戰 + +瀏覽互聯網,找出你認為人工智慧最有效的應用場景。是地圖應用程式、語音轉文字服務還是某款電子遊戲?研究該系統是如何構建的。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## 回顧與自學 + +通過閱讀[這一課程](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML)來回顧人工智慧和機器學習的歷史。從該課程或本課程頂部的手繪筆記中選取一個元素,深入研究以了解其演變背後的文化背景。 + +**作業**:[遊戲開發馬拉松](assignment.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/1-Intro/assignment.md b/translations/mo/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..89c9739f --- /dev/null +++ b/translations/mo/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# 遊戲創作馬拉松 + +遊戲是一個深受人工智慧(AI)和機器學習(ML)發展影響的領域。在這次作業中,請撰寫一篇短文,介紹一款你喜歡的遊戲,並說明它如何受到AI演進的影響。這款遊戲應該有足夠的歷史,能反映出多種類型的計算處理系統對其的影響。一個不錯的例子是象棋或圍棋,但你也可以考慮像乒乓球(Pong)或吃豆人(Pac-Man)這樣的電子遊戲。撰寫一篇文章,討論該遊戲的過去、現在以及AI的未來發展。 + +**免責聲明**: +此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/2-Symbolic/README.md b/translations/mo/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..2c54871f --- /dev/null +++ b/translations/mo/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# 知識表示與專家系統 + +![符號 AI 內容摘要](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mo.png) + +> 由 [Tomomi Imura](https://twitter.com/girlie_mac) 繪製的手繪筆記 + +人工智慧的追求基於對知識的探索,試圖像人類一樣理解世界。但該如何實現這一目標呢? + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +在人工智慧的早期,創建智能系統的自上而下方法(在上一課中討論過)非常流行。這種方法的核心思想是將人類的知識提取為機器可讀的形式,然後用它來自動解決問題。這種方法基於兩個重要的概念: + +* 知識表示 +* 推理 + +## 知識表示 + +符號 AI 的一個重要概念是**知識**。需要將知識與*信息*或*數據*區分開。例如,人們常說書籍包含知識,因為通過學習書籍可以成為專家。然而,書籍實際上包含的是*數據*,通過閱讀書籍並將這些數據整合到我們的世界模型中,我們將數據轉化為知識。 + +> ✅ **知識**是我們頭腦中包含的內容,代表我們對世界的理解。它是通過主動的**學習**過程獲得的,這個過程將我們接收到的信息片段整合到我們的世界模型中。 + +通常,我們不會嚴格定義知識,而是通過 [DIKW 金字塔](https://en.wikipedia.org/wiki/DIKW_pyramid) 與其他相關概念對齊。該金字塔包含以下概念: + +* **數據**是以物理媒介表示的內容,例如書面文本或口頭語言。數據獨立於人類存在,可以在人與人之間傳遞。 +* **信息**是我們在頭腦中對數據的解釋。例如,當我們聽到“電腦”這個詞時,我們對它有一定的理解。 +* **知識**是信息被整合到我們的世界模型中。例如,一旦我們了解了什麼是電腦,我們就會對它的工作原理、價格以及用途有一些想法。這些相互關聯的概念網絡構成了我們的知識。 +* **智慧**是我們對世界理解的更高層次,代表著*元知識*,例如關於如何以及何時使用知識的某種概念。 + +*圖片來源:[維基百科](https://commons.wikimedia.org/w/index.php?curid=37705247),作者 Longlivetheux - 自製,CC BY-SA 4.0* + +因此,**知識表示**的問題在於找到某種有效的方法,將知識以數據的形式表示在計算機中,使其能夠自動使用。這可以被視為一個光譜: + +![知識表示光譜](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mo.png) + +> 圖片由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +* 在左側,有非常簡單的知識表示類型,計算機可以有效地使用。最簡單的是算法式,當知識以計算機程序的形式表示時。然而,這並不是表示知識的最佳方式,因為它缺乏靈活性。我們頭腦中的知識通常不是算法式的。 +* 在右側,有像自然文本這樣的表示形式。這是最強大的,但無法用於自動推理。 + +> ✅ 想一想你是如何在頭腦中表示知識並將其轉化為筆記的。是否有某種特定的格式能幫助你更好地記住? + +## 計算機知識表示的分類 + +我們可以將不同的計算機知識表示方法分為以下幾類: + +* **網絡表示**基於我們頭腦中有一個相互關聯的概念網絡。我們可以嘗試在計算機中以圖的形式再現這些網絡,這被稱為**語義網絡**。 + +1. **對象-屬性-值三元組**或**屬性-值對**。由於圖可以在計算機中表示為節點和邊的列表,我們可以用三元組列表來表示語義網絡,包含對象、屬性和值。例如,我們可以構建以下關於編程語言的三元組: + +對象 | 屬性 | 值 +-----|------|---- +Python | 是 | 無類型語言 +Python | 發明者 | Guido van Rossum +Python | 區塊語法 | 縮排 +無類型語言 | 沒有 | 類型定義 + +> ✅ 想一想三元組如何用於表示其他類型的知識。 + +2. **層次結構表示**強調我們經常在頭腦中創建對象的層次結構。例如,我們知道金絲雀是一種鳥類,所有鳥類都有翅膀。我們還知道金絲雀通常是什麼顏色,以及它們的飛行速度。 + + - **框架表示**基於將每個對象或對象類表示為一個**框架**,框架包含**槽**。槽可以有默認值、值限制或存儲的程序,這些程序可以被調用以獲取槽的值。所有框架形成一個類似於面向對象編程語言中的對象層次結構。 + - **場景**是一種特殊的框架,表示可以隨時間展開的複雜情境。 + +**Python** + +槽 | 值 | 默認值 | 範圍 +---|----|--------|---- +名稱 | Python | | +是 | 無類型語言 | | +變量命名 | | 駝峰式命名 | +程序長度 | | | 5-5000 行 +區塊語法 | 縮排 | | + +3. **程序表示**基於通過一系列動作來表示知識,當某些條件發生時可以執行這些動作。 + - 產生式規則是 if-then 語句,允許我們得出結論。例如,醫生可以有一條規則說明:**如果**患者有高燒**或**血液檢測中 C 反應蛋白水平高,**那麼**他有炎症。一旦我們遇到其中一個條件,就可以得出關於炎症的結論,然後在進一步推理中使用它。 + - 算法可以被認為是另一種程序表示形式,儘管它們幾乎從未直接用於基於知識的系統。 + +4. **邏輯**最早由亞里士多德提出,作為表示普遍人類知識的一種方式。 + - 謂詞邏輯作為一種數學理論過於豐富而無法計算,因此通常使用它的一些子集,例如 Prolog 中使用的霍恩子句。 + - 描述邏輯是一系列邏輯系統,用於表示和推理對象層次結構以及分佈式知識表示,例如*語義網*。 + +## 專家系統 + +符號 AI 的早期成功之一是所謂的**專家系統**——設計用於在某些有限問題領域中充當專家的計算機系統。它們基於從一位或多位人類專家中提取的**知識庫**,並包含一個在其上執行推理的**推理引擎**。 + +![人類架構](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mo.png) | ![基於知識的系統架構](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mo.png) +----------------------------------|----------------------------------------- +人類神經系統的簡化結構 | 基於知識的系統架構 + +專家系統的構建類似於人類的推理系統,其中包含**短期記憶**和**長期記憶**。同樣,在基於知識的系統中,我們區分以下組件: + +* **問題記憶**:包含當前正在解決的問題的知識,例如患者的體溫或血壓、是否有炎症等。這些知識也稱為**靜態知識**,因為它包含了我們目前對問題的了解——所謂的*問題狀態*。 +* **知識庫**:表示關於問題領域的長期知識。它是從人類專家手動提取的,並且不會因諮詢而改變。由於它允許我們從一個問題狀態導航到另一個問題狀態,因此也稱為**動態知識**。 +* **推理引擎**:協調整個搜索問題狀態空間的過程,必要時向用戶提問。它還負責為每個狀態找到應用的正確規則。 + +例如,讓我們考慮以下基於動物物理特徵的專家系統: + +![AND-OR 樹](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mo.png) + +> 圖片由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +此圖稱為**AND-OR 樹**,它是產生式規則集的圖形表示。在從專家提取知識的初期,繪製樹是有用的。要在計算機內部表示知識,使用規則會更方便: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +你會注意到,規則左側的每個條件和動作本質上都是對象-屬性-值(OAV)三元組。**工作記憶**包含與當前正在解決的問題對應的一組 OAV 三元組。**規則引擎**尋找條件滿足的規則並應用它們,將另一個三元組添加到工作記憶中。 + +> ✅ 試著畫一個你感興趣主題的 AND-OR 樹! + +### 前向推理與後向推理 + +上述過程稱為**前向推理**。它從工作記憶中可用的初始數據開始,然後執行以下推理循環: + +1. 如果目標屬性已存在於工作記憶中——停止並給出結果 +2. 查找所有條件當前滿足的規則——獲得**衝突集**規則 +3. 執行**衝突解決**——選擇一條將在此步驟中執行的規則。可能的衝突解決策略包括: + - 選擇知識庫中第一條適用的規則 + - 隨機選擇一條規則 + - 選擇*更具體的*規則,即左側條件(LHS)滿足最多的規則 +4. 應用選定的規則並將新知識插入問題狀態 +5. 從第 1 步重複。 + +然而,在某些情況下,我們可能希望從對問題的空白知識開始,並通過提問來幫助我們得出結論。例如,在進行醫學診斷時,我們通常不會在診斷患者之前提前進行所有醫學分析。我們更希望在需要做出決定時進行分析。 + +這一過程可以用**後向推理**建模。它由**目標**驅動——即我們希望找到的屬性值: + +1. 選擇所有可以給出目標值的規則(即目標在右側(RHS))——形成衝突集 +2. 如果該屬性沒有規則,或者有規則說明我們應該向用戶詢問該值——詢問用戶,否則: +3. 使用衝突解決策略選擇一條規則作為*假設*——我們將嘗試證明它 +4. 對規則左側的所有屬性遞歸重複該過程,嘗試將它們作為目標證明 +5. 如果過程在任何時候失敗——在第 3 步使用另一條規則。 + +> ✅ 在哪些情況下前向推理更合適?後向推理又適用於哪些情況? + +### 實現專家系統 + +專家系統可以使用不同的工具實現: + +* 直接用某種高級編程語言編寫程序。這不是最好的方法,因為基於知識的系統的主要優勢在於知識與推理的分離,理論上問題領域的專家應該能夠在不了解推理過程細節的情況下編寫規則。 +* 使用**專家系統外殼**,即專門設計用於使用某種知識表示語言填充知識的系統。 + +## ✍️ 練習:動物推理 + +參見 [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb),了解實現前向和後向推理專家系統的示例。 +> **注意**:這個範例相對簡單,只是用來說明專家系統的概念。一旦你開始建立這樣的系統,當規則數量達到一定程度(大約 200 條以上)時,你才會開始注意到一些*智能化*的行為。在某個階段,規則會變得過於複雜,難以全部記住,而在這個時候,你可能會開始疑惑為什麼系統會做出某些決策。然而,知識型系統的一個重要特徵是,你總是可以*解釋*清楚任何一個決策是如何做出的。 +## 本體論與語義網 + +在 20 世紀末,有一項倡議試圖使用知識表示來標註互聯網資源,以便能夠找到符合非常特定查詢的資源。這項運動被稱為 **語義網**,它依賴於以下幾個概念: + +- 基於 **[描述邏輯](https://en.wikipedia.org/wiki/Description_logic)** (DL) 的特殊知識表示。它類似於框架知識表示,因為它構建了一個具有屬性的對象層次結構,但它具有形式邏輯語義和推理能力。描述邏輯有一整個家族,它們在表達能力和推理的算法複雜性之間取得平衡。 +- 分佈式知識表示,其中所有概念都由全局 URI 標識符表示,使得能夠創建跨越互聯網的知識層次結構。 +- 一系列基於 XML 的知識描述語言:RDF(資源描述框架)、RDFS(RDF 架構)、OWL(本體網絡語言)。 + +語義網中的核心概念是 **本體論**。它指的是使用某種形式化知識表示對問題領域進行明確的規範。最簡單的本體論可以僅僅是問題領域中的對象層次結構,但更複雜的本體論將包括可用於推理的規則。 + +在語義網中,所有的表示都基於三元組。每個對象和每個關係都由 URI 唯一標識。例如,如果我們想陳述這個 AI 課程是由 Dmitry Soshnikov 在 2022 年 1 月 1 日開發的事實,我們可以使用以下三元組: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ 這裡的 `http://www.example.com/terms/creation-date` 和 `http://purl.org/dc/elements/1.1/creator` 是一些公認的、普遍接受的 URI,用於表達 *創建者* 和 *創建日期* 的概念。 + +在更複雜的情況下,如果我們想定義一個創建者列表,我們可以使用 RDF 中定義的一些數據結構。 + + + +> 上圖由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +語義網的發展因搜索引擎和自然語言處理技術的成功而有所放緩,這些技術能夠從文本中提取結構化數據。然而,在某些領域,仍然有重要的努力來維護本體論和知識庫。以下是一些值得注意的項目: + +* [WikiData](https://wikidata.org/) 是與維基百科相關的機器可讀知識庫集合。大多數數據來自維基百科的 *信息框*,即維基百科頁面中的結構化內容片段。你可以使用 SPARQL(一種語義網的特殊查詢語言)[查詢](https://query.wikidata.org/) WikiData。以下是一個顯示人類中最常見眼睛顏色的示例查詢: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) 是另一個類似於 WikiData 的努力。 + +> ✅ 如果你想嘗試構建自己的本體論,或打開現有的本體論,有一個很棒的可視化本體論編輯器叫 [Protégé](https://protege.stanford.edu/)。你可以下載它,或者在線使用。 + + + +*Web Protégé 編輯器打開了 Romanov 家族的本體論。截圖由 Dmitry Soshnikov 提供* + +## ✍️ 練習:家庭本體論 + +參見 [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb),了解如何使用語義網技術推理家庭關係的示例。我們將採用以常見 GEDCOM 格式表示的家譜和家庭關係的本體論,並為給定的一組個體構建所有家庭關係的圖。 + +## 微軟概念圖譜 + +在大多數情況下,本體論是由人工精心創建的。然而,也可以從非結構化數據中 **挖掘** 本體論,例如來自自然語言文本。 + +微軟研究院曾進行過這樣的一次嘗試,並產生了 [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste)。 + +這是一個使用 `is-a` 繼承關係將實體分組的大型集合。它可以回答像「什麼是微軟?」這樣的問題——答案可能是「一家公司,概率為 0.87;一個品牌,概率為 0.75」。 + +該圖譜可以通過 REST API 獲取,也可以作為一個大型可下載的文本文件,列出所有實體對。 + +## ✍️ 練習:概念圖譜 + +試試 [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) 筆記本,看看我們如何使用微軟概念圖譜將新聞文章分組到幾個類別中。 + +## 結論 + +如今,AI 通常被認為是 *機器學習* 或 *神經網絡* 的同義詞。然而,人類也表現出明確的推理能力,而這是目前神經網絡無法處理的。在現實世界的項目中,明確的推理仍然被用來執行需要解釋的任務,或者在受控方式下修改系統行為。 + +## 🚀 挑戰 + +在與本課程相關的家庭本體論筆記本中,有機會嘗試其他家庭關係。試著發現家譜中人與人之間的新聯繫。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## 回顧與自學 + +在互聯網上進行一些研究,了解人類試圖量化和編碼知識的領域。看看布魯姆的分類法,回顧歷史,了解人類如何試圖理解他們的世界。探索林奈斯創建生物分類法的工作,觀察德米特里·門捷列夫如何創建描述和分組化學元素的方法。你還能找到哪些有趣的例子? + +**作業**: [構建一個本體論](assignment.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/2-Symbolic/assignment.md b/translations/mo/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..de16a3b2 --- /dev/null +++ b/translations/mo/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# 建立本體 + +建立知識庫的核心在於對某個主題的事實進行分類並建構模型。選擇一個主題——例如一個人、一個地方或一件事物——然後為該主題建立模型。使用本課中描述的一些技術和模型構建策略。一個例子是建立一個包含家具、燈光等的客廳本體。客廳與廚房有什麼不同?與浴室呢?你如何判斷這是一個客廳而不是餐廳?使用 [Protégé](https://protege.stanford.edu/) 來構建你的本體。 + +**免責聲明**: +此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/mo/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..44113b57 --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# 神經網路簡介:感知器 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +1957 年,康奈爾航空實驗室的 Frank Rosenblatt 首次嘗試實現類似現代神經網路的模型。他設計了一個名為 "Mark-1" 的硬體裝置,用於識別基本幾何圖形,例如三角形、正方形和圓形。 + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> 圖片來源:[維基百科](https://en.wikipedia.org/wiki/Perceptron) + +輸入圖像由 20x20 的光電池陣列表示,因此神經網路有 400 個輸入和一個二元輸出。一個簡單的網路包含一個神經元,也被稱為 **閾值邏輯單元**。神經網路的權重類似於電位器,在訓練階段需要手動調整。 + +> ✅ 電位器是一種允許用戶調整電路電阻的裝置。 + +> 《紐約時報》當時這樣描述感知器:*一種電子計算機的胚胎,[海軍] 預計它將能夠行走、說話、看見、書寫、自我複製,並意識到自己的存在。* + +## 感知器模型 + +假設我們的模型有 N 個特徵,此時輸入向量將是一個大小為 N 的向量。感知器是一種 **二元分類** 模型,也就是說,它可以區分兩類輸入數據。我們假設對於每個輸入向量 x,感知器的輸出將是 +1 或 -1,具體取決於其所屬的類別。輸出通過以下公式計算: + +y(x) = f(wTx) + +其中 f 是一個階躍激活函數 + + + + +## 訓練感知器 + +為了訓練感知器,我們需要找到一個權重向量 w,使得大多數數據能夠被正確分類,也就是說,結果的 **誤差** 最小化。這個誤差 E 通過 **感知器準則** 定義如下: + +E(w) = -∑wTxiti + +其中: + +* 求和針對那些分類錯誤的訓練數據點 i +* xi 是輸入數據,ti 對於負例和正例分別為 -1 和 +1。 + +這個準則被視為權重 w 的函數,我們需要最小化它。通常使用一種稱為 **梯度下降** 的方法,我們從一些初始權重 w(0) 開始,然後在每一步根據以下公式更新權重: + +w(t+1) = w(t) - η∇E(w) + +其中 η 是所謂的 **學習率**,∇E(w) 表示 E 的 **梯度**。計算梯度後,我們得到: + +w(t+1) = w(t) + ∑ηxiti + +Python 中的算法如下所示: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## 結論 + +在本課中,你學習了感知器這一二元分類模型,以及如何通過使用權重向量來訓練它。 + +## 🚀 挑戰 + +如果你想嘗試構建自己的感知器,可以試試 [Microsoft Learn 的這個實驗](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste),它使用了 [Azure ML 設計器](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste)。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## 回顧與自學 + +想了解如何使用感知器解決簡單問題以及實際應用,並繼續學習,請參考 [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) 筆記本。 + +這裡還有一篇有趣的[關於感知器的文章](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590)。 + +## [作業](lab/README.md) + +在本課中,我們實現了一個用於二元分類任務的感知器,並使用它來區分兩個手寫數字。在這個實驗中,你需要完全解決數字分類問題,也就是說,確定給定圖像最有可能對應的數字。 + +* [說明](lab/README.md) +* [筆記本](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/mo/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..fd2d61b6 --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# 使用感知器進行多類別分類 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +使用我們在本課程中開發的 MNIST 手寫數字二元分類程式碼,建立一個多類別分類器,能夠辨識任意數字。計算訓練集和測試集的分類準確率,並列印混淆矩陣。 + +## 提示 + +1. 對於每個數字,建立一個二元分類器的資料集,將「該數字」與「所有其他數字」進行分類。 +1. 訓練 10 個不同的感知器進行二元分類(每個數字一個感知器)。 +1. 定義一個函數,用於分類輸入的數字。 + +> **提示**:如果我們將所有 10 個感知器的權重合併成一個矩陣,我們應該能夠透過一次矩陣乘法將所有 10 個感知器應用於輸入數字。最可能的數字可以透過對輸出進行 `argmax` 操作來找到。 + +## 起始筆記本 + +開啟 [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) 開始實驗。 + +**免責聲明**: +本文檔已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/mo/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..cd9857fe --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# 神經網路簡介:多層感知器 + +在上一節中,你學習了最簡單的神經網路模型——單層感知器,一種線性二分類模型。 + +在本節中,我們將擴展這個模型,構建一個更靈活的框架,使我們能夠: + +* 除了二分類之外,還能執行**多分類** +* 除了分類問題之外,還能解決**迴歸問題** +* 區分那些無法線性分離的類別 + +我們還將在 Python 中開發自己的模組化框架,讓我們能夠構建不同的神經網路架構。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## 機器學習的形式化 + +讓我們從形式化機器學習問題開始。假設我們有一個訓練數據集 **X** 和標籤 **Y**,我們需要構建一個模型 *f*,以便做出最準確的預測。預測的質量由**損失函數** ℒ 來衡量。以下是常用的損失函數: + +* 對於迴歸問題,當我們需要預測一個數值時,可以使用**絕對誤差** ∑i|f(x(i))-y(i)|,或**平方誤差** ∑i(f(x(i))-y(i))2 +* 對於分類問題,我們使用**0-1損失**(本質上與模型的**準確率**相同),或者**邏輯損失**。 + +對於單層感知器,函數 *f* 被定義為線性函數 *f(x)=wx+b*(其中 *w* 是權重矩陣,*x* 是輸入特徵向量,*b* 是偏置向量)。對於不同的神經網路架構,這個函數可以採用更複雜的形式。 + +> 在分類問題中,通常希望將網路輸出轉換為對應類別的概率。為了將任意數字轉換為概率(例如對輸出進行正規化),我們通常使用**softmax**函數 σ,這樣函數 *f* 就變為 *f(x)=σ(wx+b)* + +在上述 *f* 的定義中,*w* 和 *b* 被稱為**參數** θ=⟨*w,b*⟩。給定數據集 ⟨**X**,**Y**⟩,我們可以將整個數據集上的總誤差表示為參數 θ 的函數。 + +> ✅ **神經網路訓練的目標是通過調整參數 θ 來最小化誤差** + +## 梯度下降優化 + +梯度下降是一種著名的函數優化方法。其核心思想是,我們可以計算損失函數相對於參數的導數(在多維情況下稱為**梯度**),並調整參數以減少誤差。這可以形式化為以下步驟: + +* 用隨機值初始化參數 w(0), b(0) +* 重複以下步驟多次: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +在訓練過程中,優化步驟應基於整個數據集計算(記住損失是通過所有訓練樣本的總和計算的)。然而,在實際操作中,我們通常取數據集的小部分,稱為**小批量(minibatches)**,並基於數據子集計算梯度。由於每次隨機選取子集,這種方法被稱為**隨機梯度下降(SGD)**。 + +## 多層感知器與反向傳播 + +如上所述,單層網路能夠分類線性可分的類別。為了構建更豐富的模型,我們可以將多層網路結合起來。數學上,這意味著函數 *f* 將具有更複雜的形式,並通過以下多個步驟計算: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +這裡,α 是**非線性激活函數**,σ 是 softmax 函數,參數 θ=<*w1,b1,w2,b2*>。 + +梯度下降算法保持不變,但計算梯度會更加困難。根據鏈式法則,我們可以計算導數如下: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ 鏈式法則用於計算損失函數相對於參數的導數。 + +注意,所有這些表達式的最左部分是相同的,因此我們可以從損失函數開始,沿著計算圖“向後”計算導數。因此,多層感知器的訓練方法被稱為**反向傳播(backpropagation)**,簡稱“backprop”。 + +計算圖 + +> TODO: 圖片來源 + +> ✅ 我們將在筆記本範例中更詳細地介紹反向傳播。 + +## 結論 + +在本課中,我們構建了自己的神經網路庫,並將其用於一個簡單的二維分類任務。 + +## 🚀 挑戰 + +在隨附的筆記本中,你將實現自己的框架來構建和訓練多層感知器。你將能夠詳細了解現代神經網路的運作方式。 + +請前往 [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) 筆記本並完成相關內容。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## 複習與自學 + +反向傳播是人工智慧和機器學習中常用的算法,值得[深入研究](https://wikipedia.org/wiki/Backpropagation) + +## [作業](lab/README.md) + +在本次實驗中,你需要使用本課中構建的框架來解決 MNIST 手寫數字分類問題。 + +* [說明](lab/README.md) +* [筆記本](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/mo/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..a1b55ea6 --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# 使用我們自己的框架進行 MNIST 分類 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +使用 1 層、2 層和 3 層的感知器解決 MNIST 手寫數字分類問題。使用我們在課程中開發的神經網路框架。 + +## 啟動筆記本 + +通過打開 [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) 開始實驗。 + +## 問題 + +完成此實驗後,嘗試回答以下問題: + +- 層間的激活函數是否會影響網路性能? +- 這個任務是否需要 2 層或 3 層的網路? +- 在訓練網路時是否遇到任何問題?尤其是當層數增加時。 +- 網路的權重在訓練過程中如何變化?您可以繪製權重的最大絕對值與訓練輪次的關係圖來理解它們的關聯性。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/mo/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..96b9158f --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# 神經網路框架 + +正如我們已經學到的,要有效地訓練神經網路,我們需要做到以下兩件事: + +* 操作張量,例如進行乘法、加法,以及計算一些函數如 sigmoid 或 softmax +* 計算所有表達式的梯度,以便進行梯度下降優化 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +雖然 `numpy` 庫可以完成第一部分,但我們需要某種機制來計算梯度。在[我們的框架](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb)中,我們在上一節中開發的框架需要手動在 `backward` 方法中編程所有的導數函數,該方法負責反向傳播。理想情況下,一個框架應該能讓我們計算*任何表達式*的梯度。 + +另一個重要的事情是能夠在 GPU 或其他專用計算單元(例如 [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit))上進行計算。深度神經網路的訓練需要*大量*的計算,能夠在 GPU 上並行化這些計算非常重要。 + +> ✅ 「並行化」的意思是將計算分配到多個設備上。 + +目前,最流行的兩個神經網路框架是:[TensorFlow](http://TensorFlow.org) 和 [PyTorch](https://pytorch.org/)。這兩者都提供了低階 API,用於在 CPU 和 GPU 上操作張量。在低階 API 之上,還有高階 API,分別是 [Keras](https://keras.io/) 和 [PyTorch Lightning](https://pytorchlightning.ai/)。 + +低階 API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +---------|-------------------------------------|-------------------------------- +高階 API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**低階 API** 在這兩個框架中允許構建所謂的**計算圖**。這個圖定義了如何使用給定的輸入參數計算輸出(通常是損失函數),並且可以在 GPU 上進行計算(如果可用)。框架提供了函數來對這個計算圖進行微分並計算梯度,這些梯度可以用於優化模型參數。 + +**高階 API** 將神經網路視為**層的序列**,使得構建大多數神經網路變得更加容易。訓練模型通常需要準備數據,然後調用 `fit` 函數來完成工作。 + +高階 API 允許快速構建典型的神經網路,而不需要擔心太多細節。同時,低階 API 提供了對訓練過程的更多控制,因此在研究新型神經網路架構時經常使用。 + +需要理解的是,這兩種 API 可以一起使用。例如,你可以使用低階 API 開發自己的網路層架構,然後將其用於使用高階 API 構建和訓練的更大網路中。或者,你可以使用高階 API 定義一個由層組成的網路,然後使用自己的低階訓練循環進行優化。這兩種 API 使用相同的基本概念,並且設計上能很好地協同工作。 + +## 學習 + +在本課程中,我們提供了針對 PyTorch 和 TensorFlow 的大部分內容。你可以選擇自己偏好的框架,並僅學習相應的筆記本。如果你不確定選擇哪個框架,可以在網上閱讀一些關於 **PyTorch vs. TensorFlow** 的討論。你也可以查看這兩個框架以加深理解。 + +在可能的情況下,我們將使用高階 API 以簡化操作。然而,我們認為理解神經網路的基礎非常重要,因此在開始時,我們將從低階 API 和張量開始學習。然而,如果你希望快速入門,不想花太多時間學習這些細節,你可以跳過這些部分,直接進入高階 API 的筆記本。 + +## ✍️ 練習:框架 + +在以下筆記本中繼續學習: + +低階 API | [TensorFlow+Keras 筆記本](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +---------|-------------------------------------|-------------------------------- +高階 API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +掌握框架後,讓我們回顧過擬合的概念。 + +# 過擬合 + +過擬合是機器學習中一個非常重要的概念,理解它至關重要! + +考慮以下近似 5 個點(圖中的 `x`)的問題: + +![線性模型](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mo.jpg) | ![過擬合模型](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mo.jpg) +-------------------------|-------------------------- +**線性模型,2 個參數** | **非線性模型,7 個參數** +訓練誤差 = 5.3 | 訓練誤差 = 0 +驗證誤差 = 5.1 | 驗證誤差 = 20 + +* 左邊的圖是一個良好的直線近似。由於參數數量適當,模型正確地理解了點的分佈。 +* 右邊的模型過於強大。由於我們只有 5 個點,而模型有 7 個參數,它可以調整到通過所有點,使得訓練誤差為 0。然而,這阻止了模型理解數據背後的正確模式,因此驗證誤差非常高。 + +在模型的豐富性(參數數量)和訓練樣本數量之間找到正確的平衡非常重要。 + +## 為什麼會發生過擬合 + + * 訓練數據不足 + * 模型過於強大 + * 輸入數據中噪聲過多 + +## 如何檢測過擬合 + +如上圖所示,過擬合可以通過非常低的訓練誤差和非常高的驗證誤差來檢測。通常在訓練過程中,我們會看到訓練和驗證誤差都開始下降,然後在某個時候驗證誤差可能停止下降並開始上升。這將是過擬合的跡象,表明我們可能需要停止訓練(或者至少保存模型的快照)。 + +![過擬合](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mo.png) + +## 如何防止過擬合 + +如果你發現過擬合發生,可以採取以下措施: + + * 增加訓練數據量 + * 降低模型的複雜性 + * 使用一些[正則化技術](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md),例如 [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout),我們稍後會討論。 + +## 過擬合與偏差-方差權衡 + +過擬合實際上是統計學中一個更通用的問題,稱為[偏差-方差權衡](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff)。如果我們考慮模型中的可能誤差來源,可以看到兩種類型的誤差: + +* **偏差誤差**是由於我們的算法無法正確捕捉訓練數據之間的關係而引起的。這可能是因為模型不夠強大(**欠擬合**)。 +* **方差誤差**是由於模型近似輸入數據中的噪聲而不是有意義的關係引起的(**過擬合**)。 + +在訓練過程中,偏差誤差會減少(因為模型學會了近似數據),而方差誤差會增加。重要的是要停止訓練——可以手動(當我們檢測到過擬合時)或自動(通過引入正則化)——以防止過擬合。 + +## 結論 + +在本課中,你學到了兩個最流行的 AI 框架 TensorFlow 和 PyTorch 的不同 API。此外,你還學到了非常重要的主題——過擬合。 + +## 🚀 挑戰 + +在配套的筆記本中,你會在底部找到「任務」;請完成筆記本中的任務。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## 回顧與自學 + +研究以下主題: + +- TensorFlow +- PyTorch +- 過擬合 + +問自己以下問題: + +- TensorFlow 和 PyTorch 有什麼區別? +- 過擬合和欠擬合有什麼區別? + +## [作業](lab/README.md) + +在本次實驗中,你需要使用 PyTorch 或 TensorFlow 解決兩個分類問題,分別使用單層和多層全連接網路。 + +* [說明](lab/README.md) +* [筆記本](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/mo/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..e08bb519 --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# 使用 PyTorch/TensorFlow 進行分類 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +使用 PyTorch 或 TensorFlow 解決兩個分類問題,分別使用單層和多層全連接網路: + +1. **[Iris 分類](https://en.wikipedia.org/wiki/Iris_flower_data_set)** 問題 - 這是一個以表格輸入數據為基礎的問題,可以用傳統機器學習方法處理。你的目標是根據 4 個數值參數將鳶尾花分類為 3 個類別。 +2. **MNIST** 手寫數字分類問題,我們之前已經見過。 + +嘗試不同的網路架構,以獲得最佳的準確率。 + +## 起始 Notebook + +通過打開 [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) 開始實驗。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/3-NeuralNetworks/README.md b/translations/mo/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..2b27774b --- /dev/null +++ b/translations/mo/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# 神經網路簡介 + +![神經網路簡介內容摘要手繪圖](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mo.png) + +如我們在介紹中所討論的,實現智能的一種方法是訓練一個**電腦模型**或一個**人工大腦**。自20世紀中期以來,研究人員嘗試了各種數學模型,直到最近,這一方向取得了巨大的成功。這些模仿大腦的數學模型被稱為**神經網路**。 + +> 有時神經網路被稱為*人工神經網路*(Artificial Neural Networks, ANNs),以表明我們討論的是模型,而非真實的神經網路。 + +## 機器學習 + +神經網路屬於一個更大的學科,稱為**機器學習**,其目標是利用數據訓練能夠解決問題的電腦模型。機器學習是人工智能的重要組成部分,但我們在這份課程中不會涵蓋傳統的機器學習。 + +> 請參考我們的獨立課程 **[機器學習入門](http://github.com/microsoft/ml-for-beginners)**,以了解更多關於傳統機器學習的內容。 + +在機器學習中,我們假設擁有一些範例數據集 **X**,以及對應的輸出值 **Y**。範例通常是由**特徵**組成的N維向量,而輸出則被稱為**標籤**。 + +我們將探討兩種最常見的機器學習問題: + +* **分類**:我們需要將輸入對象分類到兩個或多個類別中。 +* **回歸**:我們需要為每個輸入樣本預測一個數值。 + +> 當以張量表示輸入和輸出時,輸入數據集是一個大小為 M×N 的矩陣,其中 M 是樣本數,N 是特徵數。輸出標籤 Y 是大小為 M 的向量。 + +在這份課程中,我們將專注於神經網路模型。 + +## 神經元的模型 + +從生物學中我們知道,大腦由神經細胞組成,每個神經細胞有多個“輸入”(軸突)和一個輸出(樹突)。軸突和樹突可以傳導電信號,而軸突與樹突之間的連接可以表現出不同程度的導電性(由神經遞質控制)。 + +![神經元模型](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mo.jpg) | ![神經元模型](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mo.png) +----|---- +真實神經元 *([圖片](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) 來自維基百科)* | 人工神經元 *(圖片由作者提供)* + +因此,神經元的最簡單數學模型包含若干輸入 X1, ..., XN 和一個輸出 Y,以及一系列權重 W1, ..., WN。輸出計算公式為: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +其中 f 是某種非線性的**激活函數**。 + +> 最早的神經元模型在 Warren McCullock 和 Walter Pitts 於1943年發表的經典論文 [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) 中被描述。Donald Hebb 在他的著作《[行為的組織:一種神經心理學理論](https://books.google.com/books?id=VNetYrB8EBoC)》中提出了訓練這些網路的方法。 + +## 本節內容 + +在本節中,我們將學習以下內容: +* [感知器](03-Perceptron/README.md):最早的二分類神經網路模型之一 +* [多層網路](04-OwnFramework/README.md) 及其配套筆記本 [如何構建我們自己的框架](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [神經網路框架](05-Frameworks/README.md),包括以下筆記本:[PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) 和 [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [過擬合](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**免責聲明**: +本文檔已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/mo/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..88b190da --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# 電腦視覺簡介 + +[電腦視覺](https://wikipedia.org/wiki/Computer_vision)是一個旨在讓電腦能夠高層次理解數位影像的學科。這是一個相當廣泛的定義,因為*理解*可以有許多不同的含義,包括在圖片中找到物件(**物件偵測**)、理解正在發生的事情(**事件偵測**)、用文字描述圖片,或是以3D重建場景。此外,還有一些與人類影像相關的特殊任務,例如年齡和情緒估算、臉部偵測與識別,以及3D姿態估算等。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +電腦視覺最簡單的任務之一是**影像分類**。 + +電腦視覺通常被認為是人工智慧的一個分支。如今,大多數的電腦視覺任務都是使用神經網路來解決的。我們將在本章節中深入了解用於電腦視覺的特殊神經網路類型,[卷積神經網路](../07-ConvNets/README.md)。 + +然而,在將影像傳遞給神經網路之前,許多情況下使用一些演算法技術來增強影像是有意義的。 + +以下是幾個可用於影像處理的 Python 函式庫: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** 可用於讀取/寫入不同的影像格式。它還支援 ffmpeg,一個將影片幀轉換為影像的有用工具。 +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)**(也稱為 PIL)功能更強大,並支援一些影像操作,例如形態變化、調整調色板等。 +* **[OpenCV](https://opencv.org/)** 是一個用 C++ 編寫的強大影像處理函式庫,已成為影像處理的*事實標準*。它有一個方便的 Python 介面。 +* **[dlib](http://dlib.net/)** 是一個 C++ 函式庫,實現了許多機器學習演算法,包括一些電腦視覺演算法。它也有 Python 介面,可用於挑戰性任務,例如臉部和臉部特徵點偵測。 + +## OpenCV + +[OpenCV](https://opencv.org/) 被認為是影像處理的*事實標準*。它包含許多有用的演算法,並以 C++ 實現。你也可以從 Python 調用 OpenCV。 + +學習 OpenCV 的好地方是[這門 Learn OpenCV 課程](https://learnopencv.com/getting-started-with-opencv/)。在我們的課程中,我們的目標不是學習 OpenCV,而是展示一些它的使用範例以及如何使用它。 + +### 加載影像 + +在 Python 中,影像可以方便地表示為 NumPy 陣列。例如,大小為 320x200 像素的灰度影像將存儲在一個 200x320 的陣列中,而相同尺寸的彩色影像則具有 200x320x3 的形狀(代表三個色彩通道)。要加載影像,可以使用以下程式碼: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +傳統上,OpenCV 使用 BGR(藍-綠-紅)編碼來表示彩色影像,而其他 Python 工具則使用更傳統的 RGB(紅-綠-藍)。為了使影像顯示正確,你需要將其轉換為 RGB 色彩空間,可以通過在 NumPy 陣列中交換維度,或者調用 OpenCV 函數來完成: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +同樣的 `cvtColor` 函數也可以用於執行其他色彩空間轉換,例如將影像轉換為灰度或 HSV(色相-飽和度-亮度)色彩空間。 + +你還可以使用 OpenCV 逐幀加載影片——範例可在練習[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)中找到。 + +### 影像處理 + +在將影像傳遞給神經網路之前,你可能需要應用幾個預處理步驟。OpenCV 可以執行許多操作,包括: + +* 使用 `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` **調整影像大小** +* 使用 `im = cv2.medianBlur(im,3)` 或 `im = cv2.GaussianBlur(im, (3,3), 0)` **模糊影像** +* 改變影像的**亮度和對比度**可以通過 NumPy 陣列操作完成,詳情請參考[這篇 Stackoverflow 筆記](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv)。 +* 使用[閾值處理](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html),通過調用 `cv2.threshold` 或 `cv2.adaptiveThreshold` 函數,這通常比調整亮度或對比度更可取。 +* 對影像應用不同的[變換](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html): + - **[仿射變換](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** 如果你需要結合旋轉、調整大小和傾斜影像,並且知道影像中三個點的來源和目標位置,仿射變換會保持平行線平行。 + - **[透視變換](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** 如果你知道影像中四個點的來源和目標位置,透視變換會很有用。例如,如果你用智能手機相機從某個角度拍攝矩形文件,並希望生成該文件本身的矩形影像。 +* 使用**[光流](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**來理解影像內的運動。 + +## 使用電腦視覺的範例 + +在我們的[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)中,我們提供了一些範例,展示了電腦視覺如何用於執行特定任務: + +* **預處理盲文書籍的照片**。我們專注於如何使用閾值處理、特徵偵測、透視變換和 NumPy 操作來分離單個盲文符號,以便進一步由神經網路進行分類。 + +![盲文影像](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mo.jpeg) | ![盲文影像預處理結果](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mo.png) | ![盲文符號](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mo.png) +----|-----|----- + +> 圖片來源:[OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **使用幀差分偵測影片中的運動**。如果相機固定,則相機畫面中的幀應該彼此非常相似。由於幀以陣列表示,只需減去兩個連續幀的陣列即可獲得像素差異,靜態幀的差異應該很低,而當影像中有顯著運動時,差異會變高。 + +![影片幀和幀差分的影像](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mo.png) + +> 圖片來源:[OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **使用光流偵測運動**。[光流](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html)使我們能夠理解影片幀中每個像素的移動方式。光流有兩種類型: + + - **密集光流**計算顯示每個像素移動方向的向量場 + - **稀疏光流**基於影像中的一些顯著特徵(例如邊緣),並從幀到幀建立它們的軌跡。 + +![光流影像](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mo.png) + +> 圖片來源:[OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ 範例筆記本:OpenCV [嘗試 OpenCV 實作](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +讓我們通過探索[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)來進行一些 OpenCV 的實驗。 + +## 結論 + +有時,像運動偵測或指尖偵測這樣相對複雜的任務可以純粹通過電腦視覺來解決。因此,了解電腦視覺的基本技術以及像 OpenCV 這樣的函式庫能做什麼是非常有幫助的。 + +## 🚀 挑戰 + +觀看[這段影片](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste),了解 Cortic Tigers 項目以及他們如何構建基於模塊的解決方案來通過機器人普及電腦視覺任務。研究其他類似項目,了解它們如何幫助新學習者進入這個領域。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## 回顧與自學 + +閱讀更多關於光流的內容,[這篇精彩的教程](https://learnopencv.com/optical-flow-in-opencv/)是個好地方。 + +## [作業](lab/README.md) + +在這次實驗中,你將拍攝一段包含簡單手勢的影片,你的目標是使用光流提取上下左右的移動。 + +手掌移動幀 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/mo/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..77597d60 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# 使用光流檢測移動 + +來自 [AI 初學者課程](https://aka.ms/ai-beginners) 的實驗作業。 + +## 任務 + +請參考[這段影片](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4),影片中一個人的手掌在穩定的背景上向左/右/上/下移動。 + +**你的目標**是使用光流技術來判斷影片中哪些部分包含向上/向下/向左/向右的移動。 + +**進階目標**是實際追蹤手掌/手指的移動,使用膚色檢測,如[這篇部落格文章](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m)或[這裡](http://www.benmeline.com/finger-tracking-with-opencv-and-python/)所描述。 + +## 起始筆記本 + +開啟 [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) 開始實驗。 + +## 收穫 + +有時候,像移動檢測或指尖檢測這樣相對複雜的任務,可以純粹透過電腦視覺來解決。因此,了解像 OpenCV 這樣的函式庫能做什麼是非常有幫助的。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/mo/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..8a8918f1 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# 常見的 CNN 架構 + +### VGG-16 + +VGG-16 是一個在 2014 年 ImageNet top-5 分類中達到 92.7% 準確率的網路。它的層結構如下: + +![ImageNet 層結構](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mo.jpg) + +如你所見,VGG 採用了傳統的金字塔架構,也就是一系列的卷積-池化層。 + +![ImageNet 金字塔](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mo.jpg) + +> 圖片來源:[Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet 是由微軟研究院在 2015 年提出的一系列模型。ResNet 的核心概念是使用 **殘差塊**: + + + +> 圖片來源:[這篇論文](https://arxiv.org/pdf/1512.03385.pdf) + +使用身份傳遞的原因是讓我們的層預測 **前一層結果與殘差塊輸出之間的差異**,因此得名為 *殘差*。這些塊更容易訓練,並且可以構建包含數百個這樣的塊的網路(最常見的變體有 ResNet-52、ResNet-101 和 ResNet-152)。 + +你也可以將這個網路理解為能根據數據集調整其複雜度的模型。最初在訓練網路時,權重值較小,大部分信號通過身份傳遞層。隨著訓練進行,權重變大,網路參數的重要性增強,網路會調整以適應所需的表達能力,從而正確分類訓練圖像。 + +### Google Inception + +Google Inception 架構將這個概念更進一步,將每一層構建為多條不同路徑的組合: + + + +> 圖片來源:[Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +在這裡,我們需要強調 1x1 卷積的作用,因為一開始它看起來似乎沒有意義。為什麼我們需要用 1x1 的濾波器掃描圖像?然而,你需要記住,卷積濾波器也會處理多個深度通道(最初是 RGB 顏色,在後續層中是不同濾波器的通道),而 1x1 卷積用於通過不同的可訓練權重混合這些輸入通道。它也可以被視為在通道維度上的降採樣(池化)。 + +這裡有一篇[關於 1x1 卷積的好文章](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578),以及[原始論文](https://arxiv.org/pdf/1312.4400.pdf)。 + +### MobileNet + +MobileNet 是一系列縮小尺寸的模型,適合用於移動設備。如果你的資源有限,並且可以接受一些準確率的犧牲,可以考慮使用它們。其核心概念是所謂的 **深度可分離卷積**,它將卷積濾波器表示為空間卷積與深度通道上的 1x1 卷積的組合。這大大減少了參數數量,使網路尺寸更小,也更容易用較少的數據進行訓練。 + +這裡有一篇[關於 MobileNet 的好文章](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470)。 + +## 結論 + +在這一單元中,你學習了計算機視覺神經網路的主要概念——卷積神經網路。現實中的架構(如圖像分類、物體檢測,甚至圖像生成網路)都是基於 CNN 的,只是增加了更多的層數以及一些額外的訓練技巧。 + +## 🚀 挑戰 + +在隨附的筆記本中,底部有關於如何獲得更高準確率的筆記。進行一些實驗,看看你是否能達到更高的準確率。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## 複習與自學 + +雖然 CNN 最常用於計算機視覺任務,但它們通常也適合用於提取固定大小的模式。例如,如果我們處理的是聲音,我們也可能希望使用 CNN 來尋找音頻信號中的某些特定模式——在這種情況下,濾波器將是一維的(這樣的 CNN 被稱為 1D-CNN)。此外,有時也會使用 3D-CNN 來提取多維空間中的特徵,例如視頻中發生的某些事件——CNN 可以捕捉隨時間變化的某些特徵模式。進行一些複習和自學,了解 CNN 還能完成哪些其他任務。 + +## [作業](lab/README.md) + +在這個實驗中,你的任務是分類不同的貓和狗品種。這些圖像比 MNIST 數據集更複雜,維度更高,並且類別數超過 10。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/mo/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..578a23c8 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# 卷積神經網路 + +我們之前已經看到,神經網路在處理影像方面表現得相當不錯,即使是單層感知器也能以合理的準確率識別 MNIST 資料集中的手寫數字。然而,MNIST 資料集非常特殊,所有的數字都被置中於影像中,這使得任務變得相對簡單。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +在現實生活中,我們希望能夠在圖片中識別物體,而不需要在意它們在影像中的確切位置。電腦視覺與一般的分類任務不同,因為當我們試圖在圖片中找到某個特定物體時,我們是在掃描影像,尋找一些特定的**模式**及其組合。例如,當尋找一隻貓時,我們可能會先尋找水平線條,這些線條可能構成鬍鬚,然後某些鬍鬚的組合可以告訴我們這是一隻貓的圖片。某些模式的相對位置和存在性很重要,而不是它們在影像中的確切位置。 + +為了提取這些模式,我們將使用**卷積濾波器**的概念。如你所知,影像可以用一個二維矩陣或帶有色彩深度的三維張量來表示。應用濾波器的意思是,我們取一個相對較小的**濾波核**矩陣,並對原始影像中的每個像素與其鄰近點進行加權平均。我們可以將這視為一個小窗口在整個影像上滑動,並根據濾波核矩陣中的權重對所有像素進行平均。 + +![垂直邊緣濾波器](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mo.png) | ![水平邊緣濾波器](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mo.png) +----|---- + +> 圖片來源:Dmitry Soshnikov + +例如,如果我們對 MNIST 數字應用 3x3 的垂直邊緣和水平邊緣濾波器,我們可以在原始影像中有垂直和水平邊緣的地方得到高亮(例如高值)。因此,這兩個濾波器可以用來「尋找」邊緣。同樣,我們可以設計不同的濾波器來尋找其他低層次的模式: + +> [Leung-Malik 濾波器組](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html)的圖片 + +然而,雖然我們可以手動設計濾波器來提取某些模式,但我們也可以設計網路,使其能夠自動學習這些模式。這正是 CNN 背後的主要理念之一。 + +## CNN 的主要理念 + +CNN 的運作方式基於以下幾個重要理念: + +* 卷積濾波器可以提取模式 +* 我們可以設計網路,使濾波器能夠自動訓練 +* 我們可以使用相同的方法來尋找高層次特徵中的模式,而不僅僅是原始影像中的模式。因此,CNN 的特徵提取是基於特徵的層次結構,從低層次的像素組合開始,一直到高層次的圖片部分組合。 + +![層次特徵提取](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mo.png) + +> 圖片來源:[Hislop-Lynch 的論文](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d),基於[他們的研究](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ 練習:卷積神經網路 + +讓我們繼續探索卷積神經網路的運作方式,以及如何通過相關的筆記本實現可訓練的濾波器: + +* [卷積神經網路 - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [卷積神經網路 - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## 金字塔架構 + +大多數用於影像處理的 CNN 都遵循所謂的金字塔架構。第一個應用於原始影像的卷積層通常具有相對較少的濾波器(8-16 個),這些濾波器對應於不同的像素組合,例如水平/垂直線條或筆劃。在下一層,我們減少網路的空間維度,並增加濾波器的數量,這對應於更多簡單特徵的可能組合。隨著每一層的進展,當我們接近最終分類器時,影像的空間維度減小,而濾波器的數量增加。 + +舉例來說,讓我們看看 VGG-16 的架構,這是一個在 2014 年 ImageNet 的 top-5 分類中達到 92.7% 準確率的網路: + +![ImageNet 層級](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mo.jpg) + +![ImageNet 金字塔](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mo.jpg) + +> 圖片來源:[Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## 最知名的 CNN 架構 + +[繼續學習最知名的 CNN 架構](CNN_Architectures.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/mo/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..8b649a5e --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# 寵物臉部分類 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +想像一下,你需要為寵物托育中心開發一個應用程式,用來記錄所有的寵物。這樣的應用程式其中一個很棒的功能就是能夠自動從照片中辨識寵物的品種。這可以透過神經網路成功實現。 + +你需要訓練一個卷積神經網路,使用 **Pet Faces** 資料集來分類不同品種的貓和狗。 + +## 資料集 + +我們將使用 **Pet Faces** 資料集,這是從 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 寵物資料集中衍生出來的。該資料集包含 35 種不同品種的狗和貓。 + +![我們將處理的資料集](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mo.png) + +要下載資料集,請使用以下程式碼片段: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## 開始使用 Notebook + +通過打開 [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) 開始這次實驗。 + +## 收穫 + +你已經從零開始解決了一個相對複雜的影像分類問題!雖然有相當多的分類,但你仍然能夠獲得合理的準確率!此外,測量 top-k 準確率也是有意義的,因為有些分類即使對人類來說也不容易區分清楚。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/mo/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..70816b76 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# 預訓練網路與遷移學習 + +訓練 CNN 需要花費大量時間,並且需要大量數據。然而,大部分時間都花在學習網路用來從圖像中提取模式的最佳低層過濾器上。一個自然的問題是:我們是否可以使用在一個數據集上訓練好的神經網路,並將其適應於分類不同的圖像,而不需要完整的訓練過程? + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +這種方法被稱為**遷移學習**,因為我們將某些知識從一個神經網路模型轉移到另一個模型。在遷移學習中,我們通常從一個預訓練模型開始,該模型已經在一些大型圖像數據集(例如 **ImageNet**)上進行過訓練。這些模型已經能夠很好地從通用圖像中提取不同的特徵,在許多情況下,只需在這些提取的特徵上構建一個分類器就能取得不錯的結果。 + +> ✅ 遷移學習這個術語在其他學術領域(例如教育學)中也能找到,它指的是將一個領域的知識應用到另一個領域的過程。 + +## 預訓練模型作為特徵提取器 + +我們在上一節中討論的卷積網路包含多層,每一層都應該從圖像中提取一些特徵,從低層次的像素組合(例如水平/垂直線條或筆劃)開始,到更高層次的特徵組合,對應於像火焰的眼睛這樣的東西。如果我們在足夠大的通用和多樣化的圖像數據集上訓練 CNN,網路應該能夠學習提取這些常見特徵。 + +Keras 和 PyTorch 都包含了方便的函數,可以輕鬆加載一些常見架構的預訓練神經網路權重,這些模型大多數是在 ImageNet 圖像上訓練的。最常用的模型在之前課程的 [CNN 架構](../07-ConvNets/CNN_Architectures.md) 頁面中有描述。特別是,你可能會考慮使用以下模型之一: + +* **VGG-16/VGG-19**:這些是相對簡單但仍能提供良好準確性的模型。通常使用 VGG 作為首次嘗試是一個不錯的選擇,可以看看遷移學習的效果如何。 +* **ResNet**:這是一組由微軟研究院在 2015 年提出的模型。它們有更多的層,因此需要更多資源。 +* **MobileNet**:這是一組縮小版的模型,適合移動設備。如果資源有限且可以接受稍微降低的準確性,可以使用它們。 + +以下是 VGG-16 網路從一張貓的圖片中提取的特徵示例: + +![VGG-16 提取的特徵](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mo.png) + +## 貓與狗數據集 + +在這個例子中,我們將使用 [貓與狗](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) 數據集,這非常接近於真實的圖像分類場景。 + +## ✍️ 練習:遷移學習 + +讓我們在相應的筆記本中看看遷移學習的實際應用: + +* [遷移學習 - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [遷移學習 - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## 可視化對抗性貓 + +預訓練的神經網路在其「大腦」中包含了不同的模式,包括**理想的貓**(以及理想的狗、理想的斑馬等)。我們可以嘗試以某種方式**可視化這些圖像**。然而,這並不簡單,因為模式分散在網路的權重中,並且以層次結構組織。 + +我們可以採取的一種方法是從一張隨機圖像開始,然後嘗試使用**梯度下降優化**技術調整該圖像,使得網路認為它是一隻貓。 + +![圖像優化循環](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mo.png) + +然而,如果我們這樣做,最終會得到一些非常類似於隨機噪聲的東西。這是因為*有很多方法可以讓網路認為輸入圖像是一隻貓*,其中包括一些在視覺上沒有意義的方式。雖然這些圖像包含了許多典型的貓的模式,但它們並沒有被約束為視覺上有辨識度的圖像。 + +為了改善結果,我們可以在損失函數中添加另一個項,稱為**變異損失**。這是一個衡量圖像相鄰像素相似程度的指標。最小化變異損失可以使圖像更平滑,並消除噪聲,從而顯示出更具視覺吸引力的模式。以下是一些這樣的「理想」圖像的示例,它們被高概率分類為貓和斑馬: + +![理想的貓](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mo.png) | ![理想的斑馬](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mo.png) +-----|----- +*理想的貓* | *理想的斑馬* + +類似的方法可以用來對神經網路進行所謂的**對抗性攻擊**。假設我們想要欺騙神經網路,讓一隻狗看起來像一隻貓。如果我們拿一張被網路識別為狗的狗的圖片,然後稍微調整它,使用梯度下降優化,直到網路開始將其分類為貓: + +![狗的圖片](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mo.png) | ![被分類為貓的狗的圖片](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mo.png) +-----|----- +*原始狗的圖片* | *被分類為貓的狗的圖片* + +查看以下筆記本中的代碼以重現上述結果: + +* [理想與對抗性貓 - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## 結論 + +通過遷移學習,你可以快速組建一個自定義對象分類任務的分類器,並實現高準確性。你可以看到,我們現在解決的更複雜的任務需要更高的計算能力,並且無法輕易在 CPU 上完成。在下一單元中,我們將嘗試使用更輕量化的實現來訓練相同的模型,使用較低的計算資源,並僅稍微降低準確性。 + +## 🚀 挑戰 + +在附帶的筆記本中,底部有關於遷移知識如何在某些相似的訓練數據(例如新的動物類型)上表現最佳的筆記。嘗試使用完全新類型的圖像進行實驗,看看你的遷移知識模型表現得如何。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## 回顧與自學 + +閱讀 [TrainingTricks.md](TrainingTricks.md),以加深對其他訓練模型方法的了解。 + +## [作業](lab/README.md) + +在這個實驗中,我們將使用真實的 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 寵物數據集,其中包含 35 種貓和狗的品種,並構建一個遷移學習分類器。 + +**免責聲明**: +本文檔已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/mo/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..1a8d7b26 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# 深度學習訓練技巧 + +隨著神經網絡的深度增加,訓練過程變得越來越困難。一個主要問題是所謂的[梯度消失](https://en.wikipedia.org/wiki/Vanishing_gradient_problem)或[梯度爆炸](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled)。[這篇文章](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11)對這些問題有很好的介紹。 + +為了使深度網絡的訓練更高效,可以使用一些技巧。 + +## 保持數值在合理範圍內 + +為了使數值計算更穩定,我們希望確保神經網絡中的所有數值都在合理的範圍內,通常是 [-1..1] 或 [0..1]。這並不是一個非常嚴格的要求,但浮點數計算的特性是不同量級的數值無法準確地一起操作。例如,如果我們將 10-10 和 1010 相加,結果可能是 1010,因為較小的數值會被“轉換”到與較大的數值相同的量級,從而導致尾數丟失。 + +大多數激活函數在 [-1..1] 範圍內具有非線性特性,因此將所有輸入數據縮放到 [-1..1] 或 [0..1] 範圍是合理的。 + +## 初始權重初始化 + +理想情況下,我們希望數值在通過網絡層後仍保持在相同的範圍內。因此,初始化權重時需要以某種方式保留數值的分佈。 + +正態分佈 **N(0,1)** 不是一個好選擇,因為如果我們有 *n* 個輸入,輸出的標準差將是 *n*,數值可能會跳出 [0..1] 範圍。 + +以下是常用的初始化方法: + +- 均勻分佈 -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** 保證對於均值為零且標準差為 1 的輸入,輸出仍保持相同的均值和標準差 +- **N(0,√2/(n_in+n_out))** -- 所謂的 **Xavier 初始化** (`glorot`),有助於在前向和後向傳播中保持信號在合理範圍內 + +## 批量正規化 + +即使有適當的權重初始化,訓練過程中權重可能會變得非常大或非常小,導致信號超出合理範圍。我們可以通過使用某些**正規化**技術將信號拉回合理範圍。雖然有多種正規化技術(如權重正規化、層正規化),但最常用的是批量正規化。 + +**批量正規化**的核心思想是考慮小批量中的所有數值,並基於這些數值進行正規化(即減去均值並除以標準差)。它被實現為一個網絡層,在應用權重後但在激活函數之前進行正規化。結果通常是更高的最終準確性和更快的訓練速度。 + +以下是批量正規化的[原始論文](https://arxiv.org/pdf/1502.03167.pdf)、[維基百科上的解釋](https://en.wikipedia.org/wiki/Batch_normalization),以及[一篇很好的入門博客文章](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338)(還有[俄文版](https://habrahabr.ru/post/309302/))。 + +## Dropout + +**Dropout** 是一種有趣的技術,在訓練過程中隨機移除一定比例的神經元。它也被實現為一個層,具有一個參數(移除神經元的百分比,通常是 10%-50%),在訓練過程中,它會將輸入向量的隨機元素設為零,然後再傳遞到下一層。 + +雖然這聽起來可能有些奇怪,但你可以在 [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) 筆記本中看到 Dropout 對訓練 MNIST 數字分類器的影響。它加速了訓練,並使我們能在更少的訓練迭代中達到更高的準確性。 + +這種效果可以從以下幾個方面解釋: + +- 它可以被認為是對模型的一種隨機衝擊,將優化過程從局部最小值中拉出 +- 它可以被認為是*隱式模型平均化*,因為我們可以說在 Dropout 過程中,我們正在訓練稍微不同的模型 + +> *有人說,當一個醉酒的人試圖學習某些東西時,第二天早上相比清醒的人,他會記得更牢,因為大腦中一些功能失常的神經元會更努力地適應以抓住意義。我們自己從未測試過這是否是真的。* + +## 防止過擬合 + +深度學習的一個非常重要的方面是能夠防止[過擬合](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)。雖然使用非常強大的神經網絡模型可能很有吸引力,但我們應該始終平衡模型參數的數量與訓練樣本的數量。 + +> 確保你理解我們之前介紹的[過擬合](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)概念! + +有幾種方法可以防止過擬合: + +- 提早停止 -- 持續監控驗證集上的錯誤,當驗證錯誤開始增加時停止訓練。 +- 顯式權重衰減 / 正則化 -- 在損失函數中添加額外的懲罰項,用於高絕對值的權重,防止模型產生非常不穩定的結果 +- 模型平均化 -- 訓練多個模型,然後平均結果。這有助於最小化方差。 +- Dropout(隱式模型平均化) + +## 優化器 / 訓練算法 + +訓練的另一個重要方面是選擇好的訓練算法。雖然經典的**梯度下降**是一個合理的選擇,但有時它可能太慢,或者導致其他問題。 + +在深度學習中,我們使用**隨機梯度下降**(SGD),它是應用於隨機選擇的小批量的梯度下降。權重使用以下公式進行調整: + +wt+1 = wt - η∇ℒ + +### 動量 + +在**動量 SGD**中,我們保留了前幾步的部分梯度。這類似於當我們以慣性移動時,受到一個不同方向的衝擊,我們的軌跡不會立即改變,而是保留了一部分原始運動。這裡我們引入另一個向量 v 來表示*速度*: + +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt+vt+1 + +這裡參數 γ 表示我們考慮慣性程度的大小:γ=0 對應於經典 SGD;γ=1 是純粹的運動方程。 + +### Adam、Adagrad 等 + +由於在每一層中我們將信號乘以某個矩陣 Wi,根據 ||Wi||,梯度可能會減小接近 0,或者無限增大。這是梯度爆炸/消失問題的本質。 + +解決這個問題的一種方法是僅使用梯度的方向,而忽略其絕對值,即: + +wt+1 = wt - η(∇ℒ/||∇ℒ||),其中 ||∇ℒ|| = √∑(∇ℒ)2 + +這種算法被稱為 **Adagrad**。其他使用相同思想的算法包括:**RMSProp**、**Adam** + +> **Adam** 被認為是許多應用中非常高效的算法,因此如果你不確定使用哪個算法,可以選擇 Adam。 + +### 梯度裁剪 + +梯度裁剪是上述思想的擴展。當 ||∇ℒ|| ≤ θ 時,我們在權重優化中使用原始梯度;而當 ||∇ℒ|| > θ 時,我們將梯度除以其範數。這裡 θ 是一個參數,在大多數情況下可以取 θ=1 或 θ=10。 + +### 學習率衰減 + +訓練的成功通常取決於學習率參數 η。邏輯上,較大的 η 值會導致更快的訓練,這是我們通常在訓練初期希望的,而較小的 η 值則允許我們對網絡進行微調。因此,在大多數情況下,我們希望在訓練過程中逐漸減小 η。 + +這可以通過在每次訓練迭代後將 η 乘以某個數字(例如 0.98)來實現,或者使用更複雜的**學習率計劃**。 + +## 不同的網絡架構 + +為你的問題選擇合適的網絡架構可能很棘手。通常,我們會選擇一個已被證明適用於我們特定任務(或類似任務)的架構。這裡有一篇[很好的概述](https://www.topbots.com/a-brief-history-of-neural-network-architectures/)關於計算機視覺中的神經網絡架構。 + +> 選擇一個足夠強大的架構來匹配我們擁有的訓練樣本數量非常重要。選擇過於強大的模型可能會導致[過擬合](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)。 + +另一個好的方法是使用能夠自動調整到所需複雜度的架構。在某種程度上,**ResNet** 架構和 **Inception** 是自我調整的。[更多關於計算機視覺架構的信息](../07-ConvNets/CNN_Architectures.md)。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/mo/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..1b311ff8 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# 使用遷移學習對牛津寵物進行分類 + +來自 [AI 初學者課程](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +假設你需要開發一個寵物托育應用程式,用來記錄所有的寵物。這樣的應用程式其中一個很棒的功能就是能夠透過照片自動辨識寵物的品種。在這次作業中,我們將使用遷移學習來對 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 寵物數據集中的真實寵物圖片進行分類。 + +## 數據集 + +我們將使用原始的 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 寵物數據集,該數據集包含 35 種不同品種的狗和貓。 + +要下載數據集,請使用以下程式碼片段: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## 啟動筆記本 + +開始實驗,打開 [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## 重點 + +遷移學習和預訓練網絡使我們能夠相對輕鬆地解決現實世界中的圖像分類問題。然而,預訓練網絡在處理相似類型的圖像時效果很好,但如果我們開始分類非常不同的圖像(例如醫學影像),結果可能會大幅下降。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/mo/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..1c4c9b12 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# 自動編碼器 + +在訓練 CNN 時,其中一個問題是我們需要大量的標記數據。以圖像分類為例,我們需要將圖像分成不同的類別,這是一項手動工作。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +然而,我們可能希望使用原始(未標記)數據來訓練 CNN 特徵提取器,這被稱為**自監督學習**。取代標籤,我們將使用訓練圖像作為網絡的輸入和輸出。**自動編碼器**的主要概念是,我們將有一個**編碼器網絡**,將輸入圖像轉換為某種**潛在空間**(通常只是某種較小尺寸的向量),然後是**解碼器網絡**,其目標是重建原始圖像。 + +> ✅ [自動編碼器](https://wikipedia.org/wiki/Autoencoder) 是一種“用於學習未標記數據的高效編碼的人工神經網絡”。 + +由於我們訓練自動編碼器以捕捉原始圖像中的盡可能多的信息以進行準確重建,網絡試圖找到最佳的**嵌入**來捕捉輸入圖像的含義。 + +![自動編碼器示意圖](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mo.jpg) + +> 圖片來源:[Keras 博客](https://blog.keras.io/building-autoencoders-in-keras.html) + +## 使用自動編碼器的場景 + +雖然重建原始圖像本身似乎並不有用,但有一些場景自動編碼器特別有用: + +* **降低圖像的維度以進行可視化**或**訓練圖像嵌入**。通常自動編碼器比 PCA 效果更好,因為它考慮了圖像的空間特性和層次特徵。 +* **去噪**,即去除圖像中的噪點。由於噪點攜帶了大量無用信息,自動編碼器無法將所有噪點都壓縮到相對較小的潛在空間,因此它僅捕捉圖像的重要部分。在訓練去噪器時,我們以原始圖像開始,並使用人工添加噪點的圖像作為自動編碼器的輸入。 +* **超分辨率**,即提高圖像分辨率。我們以高分辨率圖像開始,並使用低分辨率圖像作為自動編碼器的輸入。 +* **生成模型**。一旦我們訓練了自動編碼器,解碼器部分可以用來從隨機潛在向量開始創建新物件。 + +## 變分自動編碼器 (VAE) + +傳統的自動編碼器以某種方式降低輸入數據的維度,找出輸入圖像的重要特徵。然而,潛在向量通常沒有太多意義。換句話說,以 MNIST 數據集為例,找出哪些數字對應於不同的潛在向量並不容易,因為相近的潛在向量不一定對應於相同的數字。 + +另一方面,為了訓練*生成*模型,了解潛在空間會更好。這一想法引導我們到**變分自動編碼器** (VAE)。 + +VAE 是一種自動編碼器,它學習預測潛在參數的*統計分佈*,即所謂的**潛在分佈**。例如,我們可能希望潛在向量呈正態分佈,具有某些均值 zmean 和標準差 zsigma(均值和標準差都是某種維度 d 的向量)。VAE 的編碼器學習預測這些參數,然後解碼器從該分佈中取隨機向量以重建物件。 + +總結如下: + +* 從輸入向量,我們預測 `z_mean` 和 `z_log_sigma`(而不是直接預測標準差,我們預測其對數) +* 我們從分佈 N(zmean,exp(zlog_sigma)) 中抽樣一個向量 `sample` +* 解碼器嘗試使用 `sample` 作為輸入向量解碼原始圖像 + + + +> 圖片來源:[這篇博客文章](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) 作者 Isaak Dykeman + +變分自動編碼器使用一個由兩部分組成的複雜損失函數: + +* **重建損失**是顯示重建圖像與目標圖像有多接近的損失函數(可以是均方誤差,或 MSE)。它與普通自動編碼器的損失函數相同。 +* **KL 損失**,確保潛在變量分佈接近正態分佈。它基於 [Kullback-Leibler 散度](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) 的概念——一種估算兩個統計分佈相似程度的度量。 + +VAE 的一個重要優勢是它使生成新圖像變得相對容易,因為我們知道從哪個分佈中抽樣潛在向量。例如,如果我們在 MNIST 上使用 2D 潛在向量訓練 VAE,我們可以改變潛在向量的組件以獲得不同的數字: + +vaemnist + +> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com) + +觀察圖像如何相互融合,當我們開始從潛在參數空間的不同部分獲取潛在向量時。我們還可以在 2D 中可視化此空間: + +vaemnist cluster + +> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ 練習:自動編碼器 + +在以下筆記本中了解更多關於自動編碼器的內容: + +* [TensorFlow 中的自動編碼器](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch 中的自動編碼器](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## 自動編碼器的特性 + +* **數據特定** - 它們僅適用於訓練時使用的圖像類型。例如,如果我們在花卉上訓練超分辨率網絡,它在肖像上效果不佳。這是因為網絡可以通過從訓練數據集中學到的特徵中提取細節來生成高分辨率圖像。 +* **有損** - 重建的圖像與原始圖像並不完全相同。損失的性質由訓練期間使用的*損失函數*定義。 +* 適用於**未標記數據** + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## 結論 + +在本課中,您了解了 AI 科學家可用的各種自動編碼器類型。您學習了如何構建它們,以及如何使用它們重建圖像。您還了解了 VAE 以及如何使用它生成新圖像。 + +## 🚀 挑戰 + +在本課中,您學習了如何將自動編碼器應用於圖像。但它們也可以用於音樂!查看 Magenta 項目的 [MusicVAE](https://magenta.tensorflow.org/music-vae) 項目,它使用自動編碼器學習重建音樂。使用此庫進行一些[實驗](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb),看看您能創造出什麼。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## 回顧與自學 + +作為參考,您可以在以下資源中了解更多關於自動編碼器的內容: + +* [在 Keras 中構建自動編碼器](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive 博客文章](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [變分自動編碼器解析](https://kvfrans.com/variational-autoencoders-explained/) +* [條件變分自動編碼器](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## 作業 + +在 [使用 TensorFlow 的筆記本](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) 的末尾,您會找到一個“任務”——將其作為您的作業。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/10-GANs/README.md b/translations/mo/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..35120306 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# 生成對抗網絡 + +在上一節中,我們學習了**生成模型**:這些模型可以生成與訓練數據集中的圖像相似的新圖像。VAE 是生成模型的一個很好的例子。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +然而,如果我們嘗試生成一些真正有意義的東西,比如一幅具有合理解析度的畫作,使用 VAE 可能會發現訓練效果不佳。針對這種情況,我們需要學習另一種專門用於生成模型的架構——**生成對抗網絡**,簡稱 GAN。 + +GAN 的主要思想是使用兩個神經網絡,並讓它們相互對抗進行訓練: + + + +> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com) + +> ✅ 一些術語: +> * **生成器(Generator)** 是一個網絡,它接收一個隨機向量,並生成一幅圖像作為結果。 +> * **判別器(Discriminator)** 是一個網絡,它接收一幅圖像,並判斷該圖像是真實圖像(來自訓練數據集)還是由生成器生成的。它本質上是一個圖像分類器。 + +### 判別器 + +判別器的架構與普通的圖像分類網絡並無不同。在最簡單的情況下,它可以是一個全連接分類器,但更可能是一個[卷積網絡](../07-ConvNets/README.md)。 + +> ✅ 基於卷積網絡的 GAN 被稱為 [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +一個 CNN 判別器由以下層組成:幾個卷積+池化層(空間尺寸逐漸減小),以及一個或多個全連接層以獲得“特徵向量”,最後是一個二元分類器。 + +> ✅ 在這裡,“池化”是一種減小圖像尺寸的技術。“池化層通過將一層中神經元簇的輸出合併為下一層中的單個神經元來減少數據的維度。”——[來源](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### 生成器 + +生成器稍微複雜一些。你可以將其視為一個反向的判別器。從一個潛在向量(類似於特徵向量)開始,它通過一個全連接層轉換為所需的尺寸/形狀,然後是反卷積+上採樣。這與[自編碼器](../09-Autoencoders/README.md)的*解碼器*部分類似。 + +> ✅ 由於卷積層是通過線性濾波器遍歷圖像來實現的,反卷積本質上與卷積類似,可以使用相同的層邏輯來實現。 + + + +> 圖片來源:[Dmitry Soshnikov](http://soshnikov.com) + +### 訓練 GAN + +GAN 被稱為**對抗性**,因為生成器和判別器之間存在持續的競爭。在這種競爭中,生成器和判別器都會不斷改進,從而使網絡學會生成越來越好的圖像。 + +訓練分為兩個階段: + +* **訓練判別器**。這個任務相對簡單:我們生成一批由生成器生成的圖像,標記為 0(代表假圖像),並從輸入數據集中取一批圖像(標記為 1,真實圖像)。我們計算出一些*判別器損失*,然後進行反向傳播。 +* **訓練生成器**。這稍微複雜一些,因為我們無法直接知道生成器的期望輸出。我們將整個 GAN 網絡(由生成器和判別器組成)輸入一些隨機向量,並期望結果為 1(對應於真實圖像)。然後我們凍結判別器的參數(此步驟不希望訓練判別器),並進行反向傳播。 + +在這個過程中,生成器和判別器的損失不會顯著下降。在理想情況下,它們應該呈現振盪,這表明兩個網絡的性能都在提高。 + +## ✍️ 練習:GANs + +* [TensorFlow/Keras 的 GAN Notebook](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch 的 GAN Notebook](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN 訓練的問題 + +GAN 以訓練困難著稱。以下是一些常見問題: + +* **模式崩潰(Mode Collapse)**。這是指生成器學會生成一個成功欺騙判別器的圖像,而不是生成多樣化的圖像。 +* **對超參數的敏感性**。經常會看到 GAN 完全無法收斂,然後突然因學習率的減小而收斂。 +* **生成器與判別器之間的平衡**。在許多情況下,判別器的損失可能會迅速降為零,導致生成器無法進一步訓練。為了解決這個問題,我們可以嘗試為生成器和判別器設置不同的學習率,或者在判別器損失已經很低時跳過其訓練。 +* **高解析度訓練**。與自編碼器的問題類似,重建過多層的卷積網絡會導致伪影。這個問題通常通過所謂的**漸進式增長**來解決,首先在低解析度圖像上訓練幾層,然後“解鎖”或添加更多層。另一種解決方案是增加層之間的額外連接,並同時訓練多個解析度——詳情請參考這篇[多尺度梯度 GAN 論文](https://arxiv.org/abs/1903.06048)。 + +## 風格遷移 + +GAN 是生成藝術圖像的一種好方法。另一種有趣的技術是所謂的**風格遷移**,它將一幅**內容圖像**重新繪製為另一種風格,應用來自**風格圖像**的濾鏡。 + +其工作原理如下: +* 我們從一幅隨機噪聲圖像開始(或者從內容圖像開始,但為了便於理解,從隨機噪聲開始更簡單)。 +* 我們的目標是創建一幅圖像,使其同時接近內容圖像和風格圖像。這由兩個損失函數決定: + - **內容損失**基於 CNN 在某些層提取的當前圖像與內容圖像的特徵計算。 + - **風格損失**通過使用 Gram 矩陣以巧妙的方式計算當前圖像與風格圖像之間的差異(更多細節請參考[示例 Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb))。 +* 為了使圖像更平滑並去除噪聲,我們還引入了**變異損失**,它計算相鄰像素之間的平均距離。 +* 主優化循環使用梯度下降(或其他優化算法)調整當前圖像,以最小化總損失,這是所有三個損失的加權和。 + +## ✍️ 示例:[風格遷移](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## 總結 + +在本課中,你學習了 GAN 的基本概念以及如何訓練它們。你還了解了這種類型的神經網絡可能面臨的特殊挑戰,以及一些解決這些挑戰的策略。 + +## 🚀 挑戰 + +使用你自己的圖像運行[風格遷移 Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)。 + +## 複習與自學 + +參考以下資源,進一步了解 GAN: + +* Marco Pasini,[我在訓練 GAN 一年中學到的 10 個教訓](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN),一個值得考慮的 GAN 標準架構 +* [在 Azure ML 上使用 GAN 創建生成藝術](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## 作業 + +重溫本課程相關的兩個 Notebook 中的一個,並使用你自己的圖像重新訓練 GAN。你能創造出什麼? + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/mo/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..6c74d63d --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,187 @@ + +# 物件偵測 + +我們之前討論的影像分類模型,會接收一張圖片並產生一個分類結果,例如在 MNIST 問題中辨識出「數字」這個類別。然而,在許多情況下,我們不僅僅想知道圖片中有什麼物件,還希望能夠確定它們的精確位置。這正是**物件偵測**的核心目標。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![物件偵測](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mo.png) + +> 圖片來源:[YOLO v2 官方網站](https://pjreddie.com/darknet/yolov2/) + +## 一個簡單的物件偵測方法 + +假設我們想在一張圖片中找到一隻貓,一個非常簡單的物件偵測方法可能如下: + +1. 將圖片分割成多個小區塊。 +2. 對每個區塊進行影像分類。 +3. 對於分類結果中激活值足夠高的區塊,認為該區塊包含目標物件。 + +![簡單的物件偵測](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mo.png) + +> *圖片來源:[練習筆記本](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +然而,這種方法遠非理想,因為它只能非常粗略地定位物件的邊界框。若要更精確地定位,我們需要進行某種**回歸分析**來預測邊界框的座標,而這需要特定的數據集。 + +## 用回歸進行物件偵測 + +[這篇部落格文章](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491)對於偵測形狀提供了一個很好的入門介紹。 + +## 物件偵測的數據集 + +在進行物件偵測時,你可能會遇到以下數據集: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 包含 20 個類別 +* [COCO](http://cocodataset.org/#home) - 常見物件上下文數據集,包含 80 個類別、邊界框和分割遮罩 + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mo.jpg) + +## 物件偵測的評估指標 + +### 交集比聯集 (Intersection over Union, IoU) + +在影像分類中,衡量演算法表現相對簡單;但在物件偵測中,我們需要同時衡量類別的正確性以及推測邊界框位置的精確性。後者使用所謂的**交集比聯集 (IoU)** 來衡量,這是一種用來評估兩個框(或任意兩個區域)重疊程度的指標。 + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mo.png) + +> *圖片來源:[這篇優秀的 IoU 部落格文章](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +概念很簡單:將兩個區域的交集面積除以它們的聯集面積。對於完全相同的區域,IoU 值為 1;對於完全不相交的區域,IoU 值為 0;其他情況下,IoU 值介於 0 到 1 之間。我們通常只考慮 IoU 超過某個閾值的邊界框。 + +### 平均準確率 (Average Precision, AP) + +假設我們想衡量某個類別 $C$ 的物件被識別的效果。為此,我們使用**平均準確率 (AP)** 指標,其計算方式如下: + +1. 繪製準確率-召回率曲線,顯示準確率隨檢測閾值(從 0 到 1)的變化。 +2. 根據閾值,我們會在圖片中檢測到更多或更少的物件,並得到不同的準確率和召回率值。 +3. 曲線看起來如下: + + + +> *圖片來源:[NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +對於給定類別 $C$ 的平均準確率是該曲線下的面積。更精確地說,召回率軸通常被分成 10 個部分,並對這些點的準確率取平均值: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP 與 IoU + +我們只考慮那些 IoU 超過某個閾值的檢測結果。例如,在 PASCAL VOC 數據集中,通常假設 $\mbox{IoU Threshold} = 0.5$;而在 COCO 數據集中,AP 是針對不同的 $\mbox{IoU Threshold}$ 值進行測量的。 + + + +> *圖片來源:[NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### 平均平均準確率 (Mean Average Precision, mAP) + +物件偵測的主要評估指標是**平均平均準確率 (Mean Average Precision, mAP)**。它是所有物件類別的平均準確率,有時也包括不同 $\mbox{IoU Threshold}$ 的平均值。更詳細的 mAP 計算過程可以參考[這篇部落格文章](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)),以及[這裡的程式碼範例](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734)。 + +## 不同的物件偵測方法 + +物件偵測演算法大致可分為兩大類: + +* **區域提議網路 (Region Proposal Networks)**(如 R-CNN、Fast R-CNN、Faster R-CNN)。主要思想是生成**感興趣區域 (ROI)**,並對其執行 CNN,尋找最大激活值。這與簡單方法有些類似,但 ROI 是以更聰明的方式生成的。這類方法的主要缺點是速度較慢,因為需要對圖片進行多次 CNN 分類。 +* **單次通過 (One-pass)** 方法(如 YOLO、SSD、RetinaNet)。這些架構設計成在一次通過中同時預測類別和 ROI。 + +### R-CNN: 基於區域的 CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) 使用[選擇性搜索 (Selective Search)](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf)生成 ROI 區域的層次結構,然後通過 CNN 特徵提取器和 SVM 分類器來確定物件類別,並使用線性回歸確定*邊界框*座標。[官方論文](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mo.png) + +> *圖片來源:van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mo.png) + +> *圖片來源:[這篇部落格](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - 快速 R-CNN + +這種方法與 R-CNN 類似,但區域是在卷積層應用後定義的。 + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mo.png) + +> 圖片來源:[官方論文](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf),[arXiv](https://arxiv.org/pdf/1504.08083.pdf),2015 + +### Faster R-CNN + +這種方法的主要思想是使用神經網路來預測 ROI,即所謂的*區域提議網路 (Region Proposal Network)*。[論文](https://arxiv.org/pdf/1506.01497.pdf),2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mo.png) + +> 圖片來源:[官方論文](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: 基於區域的全卷積網路 + +這種演算法比 Faster R-CNN 更快。主要思想如下: + +1. 使用 ResNet-101 提取特徵。 +2. 特徵經過**位置敏感分數圖 (Position-Sensitive Score Map)** 處理。每個來自 $C$ 類別的物件被劃分為 $k\times k$ 區域,並訓練網路預測物件的各部分。 +3. 對於 $k\times k$ 區域中的每個部分,所有網路對物件類別進行投票,選擇得票最多的類別。 + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mo.png) + +> 圖片來源:[官方論文](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO 是一種實時單次通過演算法。主要思想如下: + + * 將圖片劃分為 $S\times S$ 區域。 + * 對於每個區域,**CNN** 預測 $n$ 個可能的物件、*邊界框*座標以及*置信度*=*概率* * IoU。 + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mo.png) + +> 圖片來源:[官方論文](https://arxiv.org/abs/1506.02640) + +### 其他演算法 + +* RetinaNet: [官方論文](https://arxiv.org/abs/1708.02002) + - [PyTorch 實現](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras 實現](https://github.com/fizyr/keras-retinanet) + - [Keras 範例中的 RetinaNet](https://keras.io/examples/vision/retinanet/) +* SSD (單次檢測器): [官方論文](https://arxiv.org/abs/1512.02325) + +## ✍️ 練習:物件偵測 + +繼續學習以下筆記本: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## 結論 + +在這節課中,你快速瀏覽了各種實現物件偵測的方法! + +## 🚀 挑戰 + +閱讀以下文章和筆記本,並嘗試實作 YOLO: + +* [優秀的部落格文章](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) 描述 YOLO + * [官方網站](https://pjreddie.com/darknet/yolo/) + * YOLO: [Keras 實現](https://github.com/experiencor/keras-yolo2),[逐步筆記本](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Keras 實現](https://github.com/experiencor/keras-yolo2),[逐步筆記本](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## 複習與自學 + +* [物件偵測](https://tjmachinelearning.com/lectures/1718/obj/) by Nikhil Sardana +* [物件偵測演算法的良好比較](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [深度學習物件偵測演算法回顧](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [基本物件偵測演算法的逐步介紹](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [用 Python 實現 Faster R-CNN 進行物件偵測](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [作業:物件偵測](lab/README.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對於因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/mo/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..803ab307 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# 使用 Hollywood Heads 資料集進行頭部檢測 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +在監控攝影機的影片流中計算人數是一項重要的任務,這可以幫助我們估算商店的訪客數量、餐廳的繁忙時段等。為了解決這個任務,我們需要能夠從不同角度檢測人類的頭部。為了訓練物件檢測模型來檢測人類頭部,我們可以使用 [Hollywood Heads 資料集](https://www.di.ens.fr/willow/research/headdetection/)。 + +## 資料集 + +[Hollywood Heads 資料集](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) 包含 369,846 個人類頭部,這些頭部標註於 224,740 幅來自好萊塢電影的畫面中。資料集以 [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) 格式提供,其中每張圖片都有一個 XML 描述檔案,格式如下: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +在這個資料集中,只有一種類別的物件 `head`,對於每個頭部,您可以獲取其邊界框的座標。您可以使用 Python 的函式庫來解析 XML,或者使用 [這個函式庫](https://pypi.org/project/pascal-voc/) 直接處理 PASCAL VOC 格式。 + +## 訓練物件檢測模型 + +您可以使用以下方法之一來訓練物件檢測模型: + +* 使用 [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) 及其 Python API,在雲端以程式化方式訓練模型。Custom Vision 無法使用超過幾百張圖片來訓練模型,因此您可能需要限制資料集的大小。 +* 使用 [Keras 教學範例](https://keras.io/examples/vision/retinanet/) 來訓練 RetunaNet 模型。 +* 使用 [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) 中的內建模組。 + +## 重點 + +物件檢測是業界中經常需要的任務。雖然有一些服務可以用來執行物件檢測(例如 [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)),但了解物件檢測的運作方式並能夠訓練自己的模型是非常重要的。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/mo/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..d184898e --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# 分割 + +我們之前學過物件偵測,它可以透過預測物件的*邊界框*來定位影像中的物件。然而,對於某些任務,我們不僅需要邊界框,還需要更精確的物件定位。這項任務被稱為**分割**。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +分割可以被視為**像素分類**,即對影像中的**每個**像素進行分類(*背景*也是其中一個類別)。主要有兩種分割演算法: + +* **語義分割**僅告訴像素的類別,並不區分同一類別的不同物件。 +* **實例分割**將類別分成不同的實例。 + +例如,在實例分割中,這些羊是不同的物件;但在語義分割中,所有的羊都被表示為同一類別。 + + + +> 圖片來源:[這篇部落格文章](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +有許多不同的神經網路架構可用於分割,但它們的結構都相同。在某種程度上,它類似於你之前學過的自編碼器,但我們的目標不是解構原始影像,而是解構**遮罩**。因此,分割網路包含以下部分: + +* **編碼器**從輸入影像中提取特徵。 +* **解碼器**將這些特徵轉換為**遮罩影像**,其大小與通道數對應於類別數。 + + + +> 圖片來源:[這篇出版物](https://arxiv.org/pdf/2001.05566.pdf) + +我們特別需要提到分割中使用的損失函數。在使用傳統自編碼器時,我們需要測量兩個影像之間的相似性,可以使用均方誤差(MSE)來完成。在分割中,目標遮罩影像中的每個像素表示類別編號(在第三維度上進行獨熱編碼),因此我們需要使用特定於分類的損失函數——交叉熵損失,並對所有像素進行平均。如果遮罩是二元的,則使用**二元交叉熵損失**(BCE)。 + +> ✅ 獨熱編碼是一種將類別標籤編碼為向量的方法,其長度等於類別數。可以參考[這篇文章](https://datagy.io/sklearn-one-hot-encode/)了解這項技術。 + +## 醫學影像中的分割 + +在本課中,我們將通過訓練網路來識別醫學影像中的人類痣(也稱為痣),以實際應用分割技術。我們將使用PH2資料庫的皮膚鏡影像作為影像來源。該資料集包含200張影像,分為三個類別:典型痣、不典型痣和黑色素瘤。所有影像也包含相應的**遮罩**,用於勾勒痣的輪廓。 + +> ✅ 這項技術特別適合這類醫學影像,但你能想到其他現實世界中的應用嗎? + +navi + +> 圖片來源:PH2資料庫 + +我們將訓練一個模型來分割痣與背景。 + +## ✍️ 練習:語義分割 + +打開以下筆記本,了解不同的語義分割架構,練習使用它們,並觀察它們的實際效果。 + +* [語義分割 Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [語義分割 TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## 結論 + +分割是一種非常強大的影像分類技術,超越了邊界框,實現了像素級分類。它在醫學影像等領域有著廣泛的應用。 + +## 🚀 挑戰 + +人體分割只是我們可以對人物影像進行的常見任務之一。其他重要任務包括**骨架偵測**和**姿態偵測**。試試[OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)庫,看看姿態偵測的應用。 + +## 回顧與自學 + +這篇[維基百科文章](https://wikipedia.org/wiki/Image_segmentation)提供了該技術各種應用的良好概述。自行了解該領域中的實例分割和全景分割的子領域。 + +## [作業](lab/README.md) + +在本次實驗中,使用來自 Kaggle 的[Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)進行**人體分割**。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/mo/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..fcfc50aa --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# 人體分割 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +在影片製作中,例如天氣預報,我們經常需要將攝像機拍攝的人像剪裁出來,並將其放置在其他畫面之上。這通常是通過 **色度鍵** 技術來完成的,當人像在一個統一顏色的背景前拍攝時,背景會被移除。在這個實驗中,我們將訓練一個神經網路模型來剪裁出人像輪廓。 + +## 數據集 + +我們將使用來自 Kaggle 的 [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)。請從 Kaggle 手動下載該數據集。 + +## 起始筆記本 + +通過打開 [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) 開始這個實驗。 + +## 收穫 + +人體分割只是我們可以對人物圖像進行的常見任務之一。其他重要的任務還包括 **骨架檢測** 和 **姿態檢測**。可以查看 [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) 庫,了解如何實現這些任務。 + +**免責聲明**: +本文檔已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始語言的文件應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/4-ComputerVision/README.md b/translations/mo/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..2d4489f9 --- /dev/null +++ b/translations/mo/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# 電腦視覺 + +![電腦視覺內容摘要的手繪圖](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mo.png) + +在本章節中,我們將學習以下內容: + +* [電腦視覺與 OpenCV 入門](06-IntroCV/README.md) +* [卷積神經網絡](07-ConvNets/README.md) +* [預訓練網絡與遷移學習](08-TransferLearning/README.md) +* [自編碼器](09-Autoencoders/README.md) +* [生成對抗網絡](10-GANs/README.md) +* [物件偵測](11-ObjectDetection/README.md) +* [語義分割](12-Segmentation/README.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/13-TextRep/README.md b/translations/mo/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..f5f71908 --- /dev/null +++ b/translations/mo/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# 將文本表示為張量 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## 文本分類 + +在本節的第一部分,我們將專注於**文本分類**任務。我們將使用 [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) 數據集,該數據集包含如下的新聞文章: + +* 類別:科學/技術 +* 標題:Ky. 公司獲得研究肽的資助 (AP) +* 內容:AP - 一家由路易斯維爾大學化學研究員創立的公司獲得了一筆資助,用於開發... + +我們的目標是根據文本將新聞項目分類到其中一個類別中。 + +## 表示文本 + +如果我們希望使用神經網絡解決自然語言處理 (NLP) 任務,我們需要某種方式將文本表示為張量。計算機已經使用如 ASCII 或 UTF-8 等編碼將文本字符表示為對應屏幕字體的數字。 + +顯示字符映射到 ASCII 和二進制表示的圖表 + +> [圖片來源](https://www.seobility.net/en/wiki/ASCII) + +作為人類,我們理解每個字母**代表**什麼,以及所有字符如何組合形成句子的單詞。然而,計算機本身並不具備這種理解能力,神經網絡必須在訓練過程中學習其含義。 + +因此,我們可以使用不同的方法來表示文本: + +* **字符級表示**:將文本表示為每個字符對應一個數字。假設文本語料庫中有 *C* 個不同的字符,單詞 *Hello* 將被表示為 5x*C* 的張量。每個字母對應於單熱編碼中的一列張量。 +* **單詞級表示**:我們創建一個包含文本中所有單詞的**詞彙表**,然後使用單熱編碼表示單詞。這種方法更好一些,因為單個字母本身意義不大,因此使用更高層次的語義概念(單詞)可以簡化神經網絡的任務。然而,由於詞典的規模很大,我們需要處理高維稀疏張量。 + +無論使用哪種表示方法,我們首先需要將文本轉換為**標記**序列,每個標記可以是字符、單詞,甚至是單詞的一部分。接著,我們使用**詞彙表**將標記轉換為數字,然後可以使用單熱編碼將這些數字輸入到神經網絡中。 + +## N-Grams + +在自然語言中,單詞的準確含義只能在上下文中確定。例如,*neural network* 和 *fishing network* 的含義完全不同。為了解決這個問題,我們可以基於單詞對構建模型,並將單詞對視為單獨的詞彙標記。這樣,句子 *I like to go fishing* 將被表示為以下標記序列:*I like*、*like to*、*to go*、*go fishing*。然而,這種方法的問題在於詞典規模會顯著增長,並且像 *go fishing* 和 *go shopping* 這樣的組合會被表示為不同的標記,儘管它們具有相同的動詞,但並不共享任何語義相似性。 + +在某些情況下,我們還可以考慮使用三元語法(tri-grams)——即三個單詞的組合。因此,這種方法通常被稱為 **n-grams**。此外,使用字符級表示時,n-grams 大致對應於不同的音節。 + +## 詞袋模型 (Bag-of-Words) 和 TF/IDF + +在解決文本分類等任務時,我們需要能夠用一個固定大小的向量表示文本,這樣我們就可以將其作為最終密集分類器的輸入。最簡單的方法之一是將所有單詞的表示結合起來,例如通過相加。如果我們將每個單詞的單熱編碼相加,最終會得到一個頻率向量,顯示每個單詞在文本中出現的次數。這種文本表示方法稱為**詞袋模型** (BoW)。 + + + +> 圖片由作者提供 + +詞袋模型本質上表示了文本中出現了哪些單詞以及它們的數量,這確實可以很好地反映文本的主題。例如,關於政治的新聞文章可能包含 *president* 和 *country* 等單詞,而科學出版物可能包含 *collider*、*discovered* 等單詞。因此,單詞頻率在許多情況下可以很好地指示文本內容。 + +詞袋模型的問題在於某些常見單詞(如 *and*、*is* 等)在大多數文本中都會出現,並且它們的頻率最高,從而掩蓋了真正重要的單詞。我們可以通過考慮單詞在整個文檔集合中出現的頻率來降低這些單詞的重要性。這就是 TF/IDF 方法的主要思想,相關內容在本課程附帶的筆記本中有更詳細的介紹。 + +然而,這些方法都無法完全考慮文本的**語義**。我們需要更強大的神經網絡模型來實現這一點,我們將在本節後續內容中進一步討論。 + +## ✍️ 練習:文本表示 + +在以下筆記本中繼續學習: + +* [使用 PyTorch 進行文本表示](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [使用 TensorFlow 進行文本表示](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## 總結 + +到目前為止,我們學習了可以為不同單詞添加頻率權重的技術。然而,這些技術無法表示單詞的含義或順序。正如著名語言學家 J. R. Firth 在 1935 年所說:“單詞的完整含義總是與上下文相關,任何脫離上下文的意義研究都不應被認真對待。”我們將在課程後續內容中學習如何通過語言建模從文本中捕捉上下文信息。 + +## 🚀 挑戰 + +嘗試使用詞袋模型和不同的數據模型進行其他練習。你可能會從這個 [Kaggle 比賽](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) 中獲得靈感。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## 回顧與自學 + +在 [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) 上練習文本嵌入和詞袋模型技術。 + +## [作業:筆記本](assignment.md) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/13-TextRep/assignment.md b/translations/mo/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..7a14bc1f --- /dev/null +++ b/translations/mo/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# 作業:筆記本 + +使用與本課程相關的筆記本(無論是 PyTorch 或 TensorFlow 版本),使用您自己的數據集重新執行,或許可以使用 Kaggle 上的數據集,並註明來源。重新編寫筆記本以強調您自己的發現。嘗試一些可能令人驚訝的創新數據集,例如 [這個關於 UFO 目擊事件的數據集](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) 來自 NUFORC。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/14-Embeddings/README.md b/translations/mo/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..55c50137 --- /dev/null +++ b/translations/mo/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# 嵌入 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +在基於 BoW 或 TF/IDF 訓練分類器時,我們操作的是高維度的詞袋向量,其長度為 `vocab_size`,並且我們明確地將低維度的位置信息向量轉換為稀疏的獨熱表示。然而,這種獨熱表示並不具備記憶效率。此外,每個詞都被獨立對待,也就是說,獨熱編碼的向量無法表達詞與詞之間的語義相似性。 + +**嵌入**的概念是用低維度的密集向量來表示詞,這些向量能夠在某種程度上反映詞的語義。我們稍後會討論如何構建有意義的詞嵌入,但現在先將嵌入理解為降低詞向量維度的一種方法。 + +嵌入層會將一個詞作為輸入,並生成指定 `embedding_size` 的輸出向量。從某種意義上說,它與 `Linear` 層非常相似,但嵌入層不需要獨熱編碼向量作為輸入,而是可以直接接受詞的編號作為輸入,從而避免創建大型的獨熱編碼向量。 + +通過在分類器網絡中使用嵌入層作為第一層,我們可以從詞袋模型切換到 **嵌入袋** 模型。在嵌入袋模型中,我們首先將文本中的每個詞轉換為相應的嵌入,然後對所有嵌入計算某種聚合函數,例如 `sum`、`average` 或 `max`。 + +![嵌入分類器處理五個序列詞的示例圖。](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mo.png) + +> 圖片由作者提供 + +## ✍️ 練習:嵌入 + +繼續學習以下筆記本: +* [使用 PyTorch 的嵌入](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [使用 TensorFlow 的嵌入](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## 語義嵌入:Word2Vec + +嵌入層學會了將詞映射到向量表示,但這種表示不一定具有語義上的意義。我們希望學習一種向量表示,使得相似詞或同義詞在某種向量距離(例如歐幾里得距離)上彼此接近。 + +為了實現這一點,我們需要以特定方式在大量文本集合上預訓練嵌入模型。一種訓練語義嵌入的方法叫做 [Word2Vec](https://en.wikipedia.org/wiki/Word2vec)。它基於兩種主要架構來生成詞的分佈式表示: + + - **連續詞袋** (CBoW) —— 在這種架構中,我們訓練模型根據上下文預測一個詞。給定 ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$,模型的目標是根據 $(W_{-2},W_{-1},W_1,W_2)$ 預測 $W_0$。 + - **連續跳元** (Skip-Gram) —— 與 CBoW 相反,模型使用上下文窗口中的詞來預測當前詞。 + +CBoW 的速度更快,而 Skip-Gram 的速度較慢,但在表示不常見詞方面表現更好。 + +![展示 CBoW 和 Skip-Gram 將詞轉換為向量的算法示例圖。](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mo.png) + +> 圖片來源:[這篇論文](https://arxiv.org/pdf/1301.3781.pdf) + +Word2Vec 預訓練嵌入(以及其他類似模型,例如 GloVe)也可以用於神經網絡中的嵌入層。然而,我們需要處理詞彙表,因為用於預訓練 Word2Vec/GloVe 的詞彙表可能與我們文本語料庫中的詞彙表不同。查看上述筆記本,了解如何解決這個問題。 + +## 上下文嵌入 + +傳統的預訓練嵌入表示(例如 Word2Vec)的一個主要限制是詞義消歧問題。雖然預訓練嵌入可以捕捉詞在上下文中的部分含義,但每個詞的所有可能含義都被編碼到同一嵌入中。這可能會在下游模型中引發問題,因為許多詞(例如 "play")的含義會根據使用的上下文而有所不同。 + +例如,詞 "play" 在以下兩個句子中的含義完全不同: + +- 我去劇院看了一場 **戲劇**。 +- John 想和朋友一起 **玩**。 + +上述預訓練嵌入將 "play" 的這兩種含義表示為同一嵌入。為了解決這一限制,我們需要基於 **語言模型** 構建嵌入,該模型在大量文本語料庫上訓練,並且*了解*詞如何在不同上下文中組合。討論上下文嵌入超出了本教程的範圍,但我們會在課程後續討論語言模型時回到這個話題。 + +## 結論 + +在本課中,你學習了如何在 TensorFlow 和 PyTorch 中構建和使用嵌入層,以更好地反映詞的語義。 + +## 🚀 挑戰 + +Word2Vec 已被用於一些有趣的應用,包括生成歌曲歌詞和詩歌。看看[這篇文章](https://www.politetype.com/blog/word2vec-color-poems),作者介紹了如何使用 Word2Vec 生成詩歌。還可以觀看 [Dan Shiffmann 的這段視頻](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain),了解這種技術的另一種解釋。然後嘗試將這些技術應用到你自己的文本語料庫中,或許可以從 Kaggle 獲取數據。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## 回顧與自學 + +閱讀這篇關於 Word2Vec 的論文:[Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [作業:筆記本](assignment.md) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/14-Embeddings/assignment.md b/translations/mo/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..acd08ae2 --- /dev/null +++ b/translations/mo/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# 作業:筆記本 + +使用與本課程相關的筆記本(無論是 PyTorch 或 TensorFlow 版本),使用您自己的數據集重新執行,或許可以使用 Kaggle 上的數據集,並註明來源。重新編寫筆記本以強調您自己的發現。嘗試使用不同類型的數據集並記錄您的發現,例如使用[這些 Beatles 歌詞](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics)。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/15-LanguageModeling/README.md b/translations/mo/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..94c835f8 --- /dev/null +++ b/translations/mo/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# 語言建模 + +語意嵌入(如 Word2Vec 和 GloVe)實際上是邁向**語言建模**的第一步——建立某種程度上能*理解*(或*表示*)語言本質的模型。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +語言建模的核心理念是以無監督的方式在未標註的數據集上進行訓練。這點非常重要,因為我們擁有大量未標註的文本,而標註文本的數量則始終受限於我們能投入的標註工作量。通常,我們可以構建能夠**預測文本中缺失單詞**的語言模型,因為隨機遮蔽文本中的某個單詞並將其作為訓練樣本是一件相對簡單的事情。 + +## 訓練嵌入 + +在之前的例子中,我們使用了預訓練的語意嵌入,但了解這些嵌入是如何訓練的也很有趣。有幾種可能的想法可以用來訓練嵌入: + +* **N-Gram** 語言建模:通過觀察前 N 個詞元(N-gram)來預測當前詞元。 +* **連續詞袋模型**(CBoW):在詞元序列 $W_{-N}$, ..., $W_N$ 中,預測中間的詞元 $W_0$。 +* **Skip-gram**:從中間詞元 $W_0$ 預測一組相鄰的詞元 {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$}。 + +![來自於將單詞轉換為向量的論文中的圖片](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mo.png) + +> 圖片來源:[這篇論文](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ 範例筆記本:訓練 CBoW 模型 + +繼續學習以下筆記本中的內容: + +* [使用 TensorFlow 訓練 CBoW Word2Vec](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [使用 PyTorch 訓練 CBoW Word2Vec](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## 結論 + +在上一課中,我們看到詞嵌入的效果就像魔法一樣!現在我們知道,訓練詞嵌入並不是一件非常複雜的事情,如果需要,我們應該能夠為特定領域的文本訓練自己的詞嵌入。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## 回顧與自學 + +* [PyTorch 官方語言建模教學](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)。 +* [TensorFlow 官方訓練 Word2Vec 模型教學](https://www.TensorFlow.org/tutorials/text/word2vec)。 +* 使用 **gensim** 框架僅需幾行代碼即可訓練最常用的嵌入,詳情請參考[此文檔](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)。 + +## 🚀 [作業:訓練 Skip-Gram 模型](lab/README.md) + +在實驗中,我們挑戰你修改本課的代碼,將 CBoW 模型改為 Skip-Gram 模型進行訓練。[閱讀詳情](lab/README.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/mo/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..0e457a33 --- /dev/null +++ b/translations/mo/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# 訓練 Skip-Gram 模型 + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +在這個實驗中,我們挑戰你使用 Skip-Gram 技術訓練 Word2Vec 模型。訓練一個帶有嵌入層的網絡,來預測 $N$ 個詞組寬度的 Skip-Gram 窗口中的相鄰詞。你可以使用[本課程的代碼](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb),稍作修改即可。 + +## 數據集 + +你可以使用任何一本書作為數據集。在 [Project Gutenberg](https://www.gutenberg.org/) 上可以找到許多免費的文本,例如,這裡有 Lewis Carroll 的《愛麗絲夢遊仙境》的[直接鏈接](https://www.gutenberg.org/files/11/11-0.txt)。或者,你也可以使用莎士比亞的戲劇,以下代碼可以幫助你獲取: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## 探索! + +如果你有時間並且想更深入地研究這個主題,可以嘗試探索以下幾個問題: + +* 嵌入層的大小如何影響結果? +* 不同的文本風格如何影響結果? +* 選擇幾個非常不同類型的詞及其同義詞,獲取它們的向量表示,應用 PCA 將維度降到 2,並將它們繪製在 2D 空間中。你能看到任何模式嗎? + +**免責聲明**: +此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/16-RNN/README.md b/translations/mo/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..e86a68fd --- /dev/null +++ b/translations/mo/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# 循環神經網路 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +在之前的章節中,我們使用了豐富的文本語義表示以及嵌入層之上的簡單線性分類器。這種架構的作用是捕捉句子中單詞的整體意義,但它並未考慮單詞的**順序**,因為嵌入層上的聚合操作移除了原始文本中的這種信息。由於這些模型無法建模單詞的順序,因此無法解決更複雜或更具歧義的任務,例如文本生成或問題回答。 + +為了捕捉文本序列的意義,我們需要使用另一種神經網路架構,稱為**循環神經網路**(Recurrent Neural Network,簡稱 RNN)。在 RNN 中,我們將句子逐個符號地傳遞給網路,網路會生成某種**狀態**,然後將該狀態與下一個符號一起再次傳遞給網路。 + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mo.png) + +> 圖片由作者提供 + +給定輸入的符號序列 X0,...,Xn,RNN 會創建一系列神經網路模塊,並通過反向傳播對這個序列進行端到端的訓練。每個網路模塊接受一對輸入 (Xi,Si),並生成 Si+1 作為結果。最終的狀態 Sn 或輸出 Yn 會進入線性分類器以生成結果。所有的網路模塊共享相同的權重,並通過一次反向傳播進行端到端訓練。 + +由於狀態向量 S0,...,Sn 在網路中傳遞,RNN 能夠學習單詞之間的順序依賴性。例如,當單詞 *not* 出現在序列中的某處時,網路可以學會在狀態向量中否定某些元素,從而實現否定的效果。 + +> ✅ 由於上圖中所有 RNN 模塊的權重是共享的,因此可以將該圖表示為一個具有循環反饋迴路的單一模塊(如右圖所示),該迴路將網路的輸出狀態傳回輸入。 + +## RNN 單元的結構 + +讓我們來看看一個簡單的 RNN 單元是如何組織的。它接受前一個狀態 Si-1 和當前符號 Xi 作為輸入,並生成輸出狀態 Si(有時我們也對其他輸出 Yi 感興趣,例如在生成式網路的情況下)。 + +一個簡單的 RNN 單元內部有兩個權重矩陣:一個用於轉換輸入符號(我們稱之為 W),另一個用於轉換輸入狀態(H)。在這種情況下,網路的輸出計算公式為 σ(W×Xi+H×Si-1+b),其中 σ 是激活函數,b 是額外的偏置。 + +RNN 單元結構 + +> 圖片由作者提供 + +在許多情況下,輸入符號會在進入 RNN 之前通過嵌入層以降低維度。在這種情況下,如果輸入向量的維度為 *emb_size*,狀態向量的維度為 *hid_size*,則 W 的大小為 *emb_size*×*hid_size*,H 的大小為 *hid_size*×*hid_size*。 + +## 長短期記憶網路(LSTM) + +經典 RNN 的主要問題之一是所謂的**梯度消失**問題。由於 RNN 是通過一次反向傳播進行端到端訓練的,因此很難將誤差傳遞到網路的前幾層,從而無法學習遠距離符號之間的關係。解決這個問題的一種方法是通過使用所謂的**門控機制**來引入**顯式的狀態管理**。有兩種著名的架構:**長短期記憶網路**(Long Short Term Memory,簡稱 LSTM)和**門控循環單元**(Gated Relay Unit,簡稱 GRU)。 + +![顯示長短期記憶單元的示例圖片](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> 圖片來源待定 + +LSTM 網路的組織方式與 RNN 類似,但有兩個狀態在層與層之間傳遞:實際狀態 C 和隱藏向量 H。在每個單元中,隱藏向量 Hi 與輸入 Xi 連接在一起,並通過**門控機制**控制狀態 C 的變化。每個門控機制都是一個帶有 sigmoid 激活函數(輸出範圍為 [0,1])的神經網路,可以被視為在與狀態向量相乘時的位掩碼。以下是這些門控機制(從左到右對應上圖): + +* **遺忘門**:接收隱藏向量,決定狀態向量 C 的哪些部分需要遺忘,哪些需要保留。 +* **輸入門**:從輸入和隱藏向量中提取一些信息,並插入到狀態中。 +* **輸出門**:通過帶有 *tanh* 激活函數的線性層轉換狀態,然後使用隱藏向量 Hi 選擇其部分組件以生成新狀態 Ci+1。 + +狀態 C 的組件可以被視為某些標誌,可以開啟或關閉。例如,當我們在序列中遇到名字 *Alice* 時,我們可能會假設它指的是一個女性角色,並在狀態中設置一個標誌,表示句子中有一個女性名詞。當我們進一步遇到短語 *and Tom* 時,我們會設置一個標誌,表示句子中有一個複數名詞。因此,通過操作狀態,我們可以追蹤句子部分的語法屬性。 + +> ✅ 理解 LSTM 內部結構的一個極佳資源是 Christopher Olah 的這篇精彩文章 [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)。 + +## 雙向與多層 RNN + +我們已經討論了單向運行的循環網路,從序列的開始到結束。這看起來很自然,因為它類似於我們閱讀和聽取語音的方式。然而,在許多實際情況下,我們可以隨機訪問輸入序列,因此在兩個方向上運行循環計算可能更有意義。這樣的網路稱為**雙向 RNN**。在處理雙向網路時,我們需要兩個隱藏狀態向量,每個方向一個。 + +無論是單向還是雙向的循環網路,都能捕捉序列中的某些模式,並將其存儲到狀態向量中或傳遞到輸出中。與卷積網路類似,我們可以在第一層之上構建另一個循環層,以捕捉更高層次的模式,並基於第一層提取的低層次模式進行構建。這引出了**多層 RNN** 的概念,它由兩層或更多的循環網路組成,其中前一層的輸出作為下一層的輸入。 + +![顯示多層長短期記憶 RNN 的圖片](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mo.jpg) + +*圖片來自 Fernando López 的[這篇精彩文章](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3)* + +## ✍️ 練習:嵌入 + +通過以下筆記本繼續學習: + +* [使用 PyTorch 的 RNN](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [使用 TensorFlow 的 RNN](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## 總結 + +在本單元中,我們了解到 RNN 可用於序列分類,但事實上,它們還可以處理許多其他任務,例如文本生成、機器翻譯等。我們將在下一單元中探討這些任務。 + +## 🚀 挑戰 + +閱讀一些關於 LSTM 的文獻並考慮其應用: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## 回顧與自學 + +- Christopher Olah 的 [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)。 + +## [作業:筆記本](assignment.md) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/16-RNN/assignment.md b/translations/mo/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..e1bbc15d --- /dev/null +++ b/translations/mo/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# 作業:筆記本 + +使用與本課程相關的筆記本(無論是 PyTorch 還是 TensorFlow 版本),嘗試使用您自己的數據集重新運行它們,例如從 Kaggle 獲取的數據集,並確保標註來源。重新編寫筆記本以強調您自己的發現。嘗試使用不同類型的數據集,並記錄您的發現,例如使用像[這個關於天氣推文的 Kaggle 比賽數據集](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)這樣的文本內容。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/mo/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..becf98d4 --- /dev/null +++ b/translations/mo/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# 生成式網絡 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +循環神經網絡(RNN)及其門控單元變體,例如長短期記憶單元(LSTM)和門控循環單元(GRU),提供了一種語言建模的機制,能夠學習詞語的排列順序並預測序列中的下一個詞語。這使得我們可以使用 RNN 進行**生成式任務**,例如普通文本生成、機器翻譯,甚至是圖像描述。 + +> ✅ 想想你在輸入時受益於文本補全等生成式任務的所有情況。研究一下你喜愛的應用程式,看看它們是否使用了 RNN。 + +在上一單元中討論的 RNN 架構中,每個 RNN 單元都生成下一個隱藏狀態作為輸出。然而,我們也可以為每個循環單元添加另一個輸出,這樣就可以輸出一個**序列**(其長度等於原始序列)。此外,我們可以使用不在每一步接受輸入的 RNN 單元,只需一些初始狀態向量,然後生成一系列輸出。 + +這使得不同的神經網絡架構成為可能,如下圖所示: + +![展示常見循環神經網絡模式的圖片。](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mo.jpg) + +> 圖片來源:[Andrej Karpaty](http://karpathy.github.io/) 的部落格文章 [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) + +* **一對一**是傳統的神經網絡,具有一個輸入和一個輸出 +* **一對多**是一種生成式架構,接受一個輸入值並生成一系列輸出值。例如,如果我們想訓練一個**圖像描述**網絡來生成圖片的文字描述,我們可以將圖片作為輸入,通過 CNN 獲得其隱藏狀態,然後使用循環鏈逐字生成描述 +* **多對一**對應於我們在上一單元中描述的 RNN 架構,例如文本分類 +* **多對多**或**序列對序列**對應於例如**機器翻譯**的任務,其中第一個 RNN 收集輸入序列中的所有信息到隱藏狀態,另一個 RNN 鏈將該狀態展開為輸出序列。 + +在本單元中,我們將專注於幫助生成文本的簡單生成式模型。為了簡化,我們將使用字符級標記化。 + +我們將訓練這個 RNN 逐步生成文本。在每一步中,我們將取一個長度為 `nchars` 的字符序列,並要求網絡為每個輸入字符生成下一個輸出字符: + +![展示 RNN 生成單詞 'HELLO' 的示例圖片。](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mo.png) + +在生成文本(推理過程)時,我們從某個**提示**開始,將其通過 RNN 單元生成中間狀態,然後從該狀態開始生成。我們一次生成一個字符,並將狀態和生成的字符傳遞給另一個 RNN 單元以生成下一個字符,直到生成足夠的字符。 + + + +> 圖片由作者提供 + +## ✍️ 練習:生成式網絡 + +在以下筆記本中繼續學習: + +* [使用 PyTorch 的生成式網絡](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [使用 TensorFlow 的生成式網絡](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## 軟文本生成與溫度 + +每個 RNN 單元的輸出是一個字符的概率分佈。如果我們總是選擇概率最高的字符作為生成文本的下一個字符,文本可能會出現重複的字符序列,如以下示例: + +``` +today of the second the company and a second the company ... +``` + +然而,如果我們查看下一個字符的概率分佈,可能幾個最高概率之間的差距並不大,例如一個字符的概率可能是 0.2,另一個是 0.19,等等。例如,在尋找序列 '*play*' 的下一個字符時,下一個字符可能是空格,也可能是 **e**(如單詞 *player*)。 + +這使我們得出結論,選擇概率最高的字符並不總是“公平”的,因為選擇第二高的字符仍然可能生成有意義的文本。更明智的做法是從網絡輸出的概率分佈中**抽樣**字符。我們還可以使用一個參數,**溫度**,來平滑概率分佈,以增加隨機性,或者使分佈更陡峭,以更傾向於選擇最高概率的字符。 + +探索上述筆記本中如何實現這種軟文本生成。 + +## 結論 + +雖然文本生成本身可能很有用,但主要的好處來自於能夠使用 RNN 從某些初始特徵向量生成文本。例如,文本生成是機器翻譯的一部分(序列對序列,在此情況下,*編碼器*的狀態向量用於生成或*解碼*翻譯的消息),或者生成圖像的文字描述(在此情況下,特徵向量來自 CNN 提取器)。 + +## 🚀 挑戰 + +在 Microsoft Learn 上學習相關主題的課程 + +* 使用 [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) 進行文本生成 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## 回顧與自學 + +以下文章可擴展您的知識: + +* 使用馬爾可夫鏈、LSTM 和 GPT-2 進行文本生成的不同方法:[部落格文章](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Keras 文檔中的文本生成示例:[Keras 文檔](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [作業](lab/README.md) + +我們已經了解了如何逐字符生成文本。在實驗中,您將探索逐詞文本生成。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/mo/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..9ff392d0 --- /dev/null +++ b/translations/mo/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# 使用 RNN 進行詞級文本生成 + +來自 [AI 初學者課程](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +在這次實驗中,你需要選擇一本書,並使用它作為數據集來訓練詞級文本生成器。 + +## 數據集 + +你可以選擇任何一本書作為數據集。你可以在 [Project Gutenberg](https://www.gutenberg.org/) 找到許多免費文本,例如,這裡是 Lewis Carroll 的《愛麗絲夢遊仙境》的直接連結:[Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/18-Transformers/README.md b/translations/mo/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..5c1c0dc6 --- /dev/null +++ b/translations/mo/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# 注意力機制與Transformer + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +在自然語言處理(NLP)領域中,**機器翻譯**是最重要的問題之一,這是一項支撐工具(如Google翻譯)的基本任務。在本節中,我們將專注於機器翻譯,或者更廣泛地說,任何*序列到序列*的任務(也稱為**句子轉換**)。 + +使用RNN時,序列到序列的實現方式是通過兩個循環神經網絡,其中一個網絡(**編碼器**)將輸入序列壓縮為隱藏狀態,而另一個網絡(**解碼器**)將隱藏狀態展開為翻譯結果。然而,這種方法存在一些問題: + +* 編碼器網絡的最終狀態難以記住句子的開頭,導致模型在處理長句子時質量較差。 +* 序列中的所有詞對結果的影響相同。然而,實際情況中,輸入序列中的某些特定詞對輸出序列的影響更大。 + +**注意力機制**提供了一種方法,能夠對每個輸入向量對RNN輸出預測的上下文影響進行加權。其實現方式是創建輸入RNN的中間狀態與輸出RNN之間的捷徑。這樣,在生成輸出符號yt時,我們會考慮所有輸入隱藏狀態hi,並賦予不同的權重係數αt,i。 + +![顯示具有加性注意力層的編碼器/解碼器模型的圖片](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mo.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)中的加性注意力機制編碼器-解碼器模型,引用自[這篇博客文章](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +注意力矩陣 {αi,j} 表示某些輸入詞在生成輸出序列中的某個詞時所起的作用程度。以下是一個這樣的矩陣示例: + +![顯示Bahdanau - arviz.org中RNNsearch-50找到的示例對齊的圖片](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mo.png) + +> 圖片來自 [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (圖3) + +注意力機制是目前或接近目前NLP領域的最先進技術的核心。然而,添加注意力機制會大幅增加模型參數的數量,導致RNN的擴展問題。RNN擴展的一個關鍵限制是模型的循環特性使得批量處理和並行化訓練變得困難。在RNN中,序列的每個元素都需要按順序處理,這意味著它無法輕易並行化。 + +![具有注意力的編碼器解碼器](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> 圖片來自 [Google的博客](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +注意力機制的採用結合了這一限制,促成了如今我們所知的最先進的Transformer模型的誕生,例如BERT和Open-GPT3。 + +## Transformer模型 + +Transformer的主要理念之一是避免RNN的序列特性,並創建一個在訓練過程中可並行化的模型。這是通過實現以下兩個想法來完成的: + +* 位置編碼 +* 使用自注意力機制來捕捉模式,而不是使用RNN(或CNN)(這也是為什麼介紹Transformer的論文被稱為*[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### 位置編碼/嵌入 + +位置編碼的理念如下: +1. 使用RNN時,詞元的相對位置由步數表示,因此不需要顯式表示。 +2. 然而,一旦我們切換到注意力機制,我們需要知道詞元在序列中的相對位置。 +3. 為了獲得位置編碼,我們將詞元序列與序列中的詞元位置序列(即數字序列0,1, ...)結合。 +4. 然後,我們將詞元位置與詞元嵌入向量混合。為了將位置(整數)轉換為向量,我們可以使用不同的方法: + +* 可訓練嵌入,類似於詞元嵌入。我們在此考慮這種方法。我們在詞元及其位置上應用嵌入層,生成相同維度的嵌入向量,然後將它們相加。 +* 固定位置編碼函數,如原始論文中所提出。 + + + +> 圖片由作者提供 + +通過位置嵌入,我們可以同時嵌入原始詞元及其在序列中的位置。 + +### 多頭自注意力 + +接下來,我們需要捕捉序列中的一些模式。為此,Transformer使用了**自注意力**機制,這本質上是將注意力應用於相同的輸入和輸出序列。應用自注意力使我們能夠考慮句子中的**上下文**,並查看哪些詞是相互關聯的。例如,它使我們能夠看到哪些詞由指代詞(如*它*)指代,並考慮上下文: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mo.png) + +> 圖片來自 [Google的博客](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +在Transformer中,我們使用**多頭注意力**,以賦予網絡捕捉多種依賴關係的能力,例如長期與短期詞關係、指代關係與其他關係等。 + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) 包含有關Transformer層實現的更多細節。 + +### 編碼器-解碼器注意力 + +在Transformer中,注意力機制用於兩個地方: + +* 捕捉輸入文本中的模式,使用自注意力。 +* 執行序列翻譯——這是編碼器和解碼器之間的注意力層。 + +編碼器-解碼器注意力與RNN中使用的注意力機制非常相似,如本節開頭所述。以下動畫圖解釋了編碼器-解碼器注意力的作用。 + +![動畫GIF顯示Transformer模型中的評估如何進行。](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +由於每個輸入位置獨立映射到每個輸出位置,Transformer比RNN更能進行並行化,這使得更大、更具表達力的語言模型成為可能。每個注意力頭可以用於學習詞之間的不同關係,從而改善下游的自然語言處理任務。 + +## BERT + +**BERT**(Bidirectional Encoder Representations from Transformers)是一個非常大的多層Transformer網絡,*BERT-base*有12層,*BERT-large*有24層。該模型首先在大規模文本數據(維基百科+書籍)上進行無監督訓練(預測句子中的被遮蔽詞)。在預訓練過程中,模型吸收了大量的語言理解能力,隨後可以通過微調其他數據集來利用這些能力。這個過程被稱為**遷移學習**。 + +![圖片來自 http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mo.png) + +> 圖片 [來源](http://jalammar.github.io/illustrated-bert/) + +## ✍️ 練習:Transformer + +在以下筆記本中繼續學習: + +* [PyTorch中的Transformer](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow中的Transformer](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## 結論 + +在本課中,你學習了Transformer和注意力機制,這些都是NLP工具箱中的重要工具。Transformer架構有許多變體,包括BERT、DistilBERT、BigBird、OpenGPT3等,可以進行微調。[HuggingFace包](https://github.com/huggingface/)提供了用PyTorch和TensorFlow訓練這些架構的資源庫。 + +## 🚀 挑戰 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## 回顧與自學 + +* [博客文章](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/),解釋了Transformer的經典論文[Attention is all you need](https://arxiv.org/abs/1706.03762)。 +* [一系列博客文章](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452),詳細解釋了Transformer的架構。 + +## [作業](assignment.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/18-Transformers/assignment.md b/translations/mo/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..b98a9d12 --- /dev/null +++ b/translations/mo/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# 作業:Transformers + +在 HuggingFace 上嘗試使用 Transformers!試試他們提供的腳本,來操作網站上各種可用的模型:https://huggingface.co/docs/transformers/run_scripts。嘗試使用他們的一個數據集,然後從本課程或 Kaggle 匯入你自己的數據集,看看是否能生成有趣的文本。製作一個筆記本來記錄你的發現。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對於因使用此翻譯而引起的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/19-NER/README.md b/translations/mo/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..6de87b4f --- /dev/null +++ b/translations/mo/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,93 @@ + +# 命名實體識別 + +到目前為止,我們主要集中在一個 NLP 任務——分類。然而,還有其他 NLP 任務可以通過神經網絡完成。其中一個任務是 **[命名實體識別](https://wikipedia.org/wiki/Named-entity_recognition)** (NER),它負責識別文本中的特定實體,例如地點、人物姓名、日期時間範圍、化學公式等等。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## 使用 NER 的範例 + +假設你想開發一個自然語言聊天機器人,類似於 Amazon Alexa 或 Google Assistant。智能聊天機器人的工作方式是通過對輸入句子進行文本分類來*理解*使用者的需求。分類的結果是所謂的 **意圖**,它決定了聊天機器人應該執行的操作。 + +Bot NER + +> 圖片由作者提供 + +然而,使用者可能會在短語中提供一些參數。例如,當詢問天氣時,她可能會指定地點或日期。機器人應該能夠理解這些實體,並相應地填充參數槽,然後執行操作。而這正是 NER 的作用所在。 + +> ✅ 另一個例子是 [分析科學醫學論文](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)。我們需要尋找的主要內容是特定的醫學術語,例如疾病和醫學物質。雖然少量疾病可能可以通過子字串搜索提取,但更複雜的實體,例如化學化合物和藥物名稱,則需要更複雜的方法。 + +## NER 作為標記分類 + +NER 模型本質上是 **標記分類模型**,因為對於每個輸入標記,我們需要決定它是否屬於某個實體,如果屬於——屬於哪個實體類別。 + +考慮以下論文標題: + +**三尖瓣反流** 和 **碳酸鋰** **毒性** 在一名新生兒中。 + +這裡的實體是: + +* 三尖瓣反流是一種疾病 (`DIS`) +* 碳酸鋰是一種化學物質 (`CHEM`) +* 毒性也是一種疾病 (`DIS`) + +注意,一個實體可能跨越多個標記。而且,如本例所示,我們需要區分兩個連續的實體。因此,通常為每個實體使用兩個類別——一個指定實體的第一個標記(通常使用 `B-` 前綴,表示 **b**eginning),另一個表示實體的延續部分(`I-`,表示 **i**nner token)。我們還使用 `O` 作為類別來表示所有 **o**ther 標記。這種標記標籤方法稱為 [BIO 標籤](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging))(或 IOB)。標記後,我們的標題將如下所示: + +標記 | 標籤 +------|----- +三尖瓣 | B-DIS +反流 | I-DIS +和 | O +碳酸 | B-CHEM +鋰 | I-CHEM +毒性 | B-DIS +在 | O +一名 | O +新生兒 | O +中 | O +。 | O + +由於我們需要在標記和類別之間建立一對一的對應關係,我們可以從這張圖中訓練一個最右側的 **多對多** 神經網絡模型: + +![顯示常見循環神經網絡模式的圖片。](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mo.jpg) + +> *圖片來自 [這篇部落格文章](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) 作者 [Andrej Karpathy](http://karpathy.github.io/)。NER 標記分類模型對應於此圖片中的最右側網絡架構。* + +## 訓練 NER 模型 + +由於 NER 模型本質上是標記分類模型,我們可以使用我們已經熟悉的 RNN 來完成這項任務。在這種情況下,每個循環網絡的區塊都會返回標記 ID。以下範例筆記本展示了如何訓練 LSTM 進行標記分類。 + +## ✍️ 範例筆記本:NER + +繼續學習以下筆記本: + +* [使用 TensorFlow 的 NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## 結論 + +NER 模型是一種 **標記分類模型**,這意味著它可以用來執行標記分類。這是一個 NLP 中非常常見的任務,有助於識別文本中的特定實體,包括地點、姓名、日期等。 + +## 🚀 挑戰 + +完成以下連結的作業,訓練一個醫學術語的命名實體識別模型,然後嘗試在不同的數據集上進行測試。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## 回顧與自學 + +閱讀部落格文章 [循環神經網絡的非凡效能](http://karpathy.github.io/2015/05/21/rnn-effectiveness/),並按照文章中的進一步閱讀部分加深你的知識。 + +## [作業](lab/README.md) + +在本課的作業中,你需要訓練一個醫學實體識別模型。你可以從本課描述的 LSTM 模型訓練開始,然後使用 BERT 轉換器模型。閱讀 [指導說明](lab/README.md) 以獲取所有細節。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/19-NER/lab/README.md b/translations/mo/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..f53e5ccb --- /dev/null +++ b/translations/mo/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# 命名實體識別 (NER) + +來自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的實驗作業。 + +## 任務 + +在這個實驗中,你需要訓練一個針對醫學術語的命名實體識別模型。 + +## 數據集 + +為了訓練 NER 模型,我們需要一個正確標註了醫學實體的數據集。[BC5CDR 數據集](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) 包含了來自超過 1500 篇論文的疾病和化學物質實體標註。你可以在其網站註冊後下載該數據集。 + +BC5CDR 數據集的格式如下: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +在這個數據集中,第一行和第二行分別是論文的標題和摘要,接下來是各個實體的標註,包括它們在標題+摘要區塊中的起始和結束位置。除了實體類型外,你還可以獲得該實體在某些醫學本體中的本體 ID。 + +你需要撰寫一些 Python 程式碼,將這些數據轉換為 BIO 編碼格式。 + +## 網絡架構 + +第一次嘗試 NER 時,可以使用 LSTM 網絡,就像我們在課堂中看到的範例一樣。然而,在 NLP 任務中,[Transformer 架構](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)),特別是 [BERT 語言模型](https://en.wikipedia.org/wiki/BERT_(language_model)),通常能夠取得更好的效果。預訓練的 BERT 模型能夠理解語言的基本結構,並且可以用相對較小的數據集和計算成本進行特定任務的微調。 + +由於我們計劃將 NER 應用於醫學場景,因此使用基於醫學文本訓練的 BERT 模型是合理的。微軟研究院發布了一個名為 [PubMedBERT][PubMedBERT] 的預訓練模型([相關論文][PubMedBERT-Pub]),該模型使用 [PubMed](https://pubmed.ncbi.nlm.nih.gov/) 資料庫中的文本進行了微調。 + +訓練 Transformer 模型的業界標準是 [Hugging Face Transformers](https://huggingface.co/) 庫。該庫還包含了一個社群維護的預訓練模型倉庫,其中包括 PubMedBERT。要加載並使用這個模型,我們只需要幾行程式碼: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +這段程式碼為我們提供了 `model`(用於基於 `classes` 類別數進行標記分類的模型)以及 `tokenizer`(可以將輸入文本分割為標記的工具)。你需要將數據集轉換為 BIO 格式,並考慮到 PubMedBERT 的標記化方式。你可以參考 [這段 Python 程式碼](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) 作為靈感。 + +## 收穫 + +這個任務非常接近於你在實際工作中可能遇到的任務,特別是當你希望從大量自然語言文本中獲取更多洞察時。在我們的案例中,我們可以將訓練好的模型應用於 [COVID 相關論文數據集](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge),看看能夠獲得哪些洞察。[這篇部落格文章](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) 和 [這篇論文](https://www.mdpi.com/2504-2289/6/1/4) 描述了可以使用 NER 在這些論文資料上進行的研究。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/20-LangModels/README.md b/translations/mo/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..30b10ffa --- /dev/null +++ b/translations/mo/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# 預訓練大型語言模型 + +在我們之前的所有任務中,我們都使用標註數據集訓練神經網絡來執行特定任務。對於大型的 Transformer 模型,例如 BERT,我們使用自監督的方式進行語言建模來構建語言模型,然後通過進一步的特定領域訓練使其專門化於特定的下游任務。然而,研究表明,大型語言模型也能在沒有任何特定領域訓練的情況下解決許多任務。能夠做到這一點的一系列模型被稱為 **GPT**:生成式預訓練 Transformer。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## 文本生成與困惑度 + +神經網絡能夠在沒有下游訓練的情況下執行一般任務的概念在 [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) 論文中提出。主要思想是許多其他任務可以通過 **文本生成** 來建模,因為理解文本本質上意味著能夠生成文本。由於模型是在包含人類知識的大量文本上進行訓練,它也因此對各種主題有廣泛的了解。 + +> 理解並能夠生成文本也意味著對周圍世界有所了解。人類在很大程度上也是通過閱讀來學習,而 GPT 網絡在這方面與人類相似。 + +文本生成網絡通過預測下一個詞的概率 $$P(w_N)$$ 來工作。然而,下一個詞的無條件概率等於該詞在文本語料庫中的出現頻率。GPT 能夠給出基於前面詞的下一個詞的 **條件概率**:$$P(w_N | w_{n-1}, ..., w_0)$$ + +> 您可以在我們的 [初學者數據科學課程](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) 中了解更多關於概率的內容。 + +語言生成模型的質量可以通過 **困惑度** 來定義。這是一種內在的度量,允許我們在沒有任何特定任務數據集的情況下衡量模型的質量。它基於 *句子的概率* 的概念——模型對可能是真實的句子賦予高概率(即模型對其不 **困惑**),而對那些不太合理的句子(例如 *Can it does what?*)賦予低概率。當我們給模型提供來自真實文本語料庫的句子時,我們期望它們具有高概率和低 **困惑度**。數學上,它被定義為測試集的歸一化逆概率: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**您可以使用 [Hugging Face 的 GPT 驅動文本編輯器](https://transformer.huggingface.co/doc/gpt2-large)** 來嘗試文本生成。在這個編輯器中,您開始撰寫文本,按下 **[TAB]** 鍵後會提供幾個完成選項。如果選項太短或您不滿意,可以再次按下 [TAB] 鍵,您將獲得更多選項,包括更長的文本片段。 + +## GPT 是一個家族 + +GPT 不是單一模型,而是一系列由 [OpenAI](https://openai.com) 開發和訓練的模型。 + +在 GPT 模型家族中,我們有: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT-3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|擁有最多 15 億參數的語言模型。 | 擁有最多 175 億參數的語言模型 | 擁有 100 萬億參數,接受圖像和文本輸入並輸出文本。 | + +GPT-3 和 GPT-4 模型可通過 [Microsoft Azure 的認知服務](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) 和 [OpenAI API](https://openai.com/api/) 使用。 + +## 提示工程 + +由於 GPT 已經在大量數據上進行訓練以理解語言和代碼,它能根據輸入(提示)提供輸出。提示是 GPT 的輸入或查詢,通過提示用戶向模型提供指令以完成下一個任務。為了獲得期望的結果,您需要最有效的提示,這涉及選擇合適的詞語、格式、短語甚至符號。這種方法被稱為 [提示工程](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum)。 + +[此文檔](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) 提供了更多關於提示工程的信息。 + +## ✍️ 範例筆記本:[使用 OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +繼續學習以下筆記本: + +* [使用 OpenAI-GPT 和 Hugging Face Transformers 生成文本](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## 結論 + +新的通用預訓練語言模型不僅建模語言結構,還包含大量自然語言。因此,它們可以在零樣本或少樣本設置中有效地解決一些 NLP 任務。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對於因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/5-NLP/README.md b/translations/mo/lessons/5-NLP/README.md new file mode 100644 index 00000000..a17a531a --- /dev/null +++ b/translations/mo/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# 自然語言處理 + +![NLP 任務的手繪摘要](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mo.png) + +在本節中,我們將專注於使用神經網絡來處理與**自然語言處理 (NLP)** 相關的任務。我們希望計算機能夠解決許多 NLP 問題: + +* **文本分類** 是一種典型的文本序列分類問題。例如,將電子郵件分類為垃圾郵件或非垃圾郵件,或者將文章分類為體育、商業、政治等。此外,在開發聊天機器人時,我們經常需要理解用戶的意圖——這種情況下,我們處理的是**意圖分類**。在意圖分類中,我們通常需要處理許多類別。 +* **情感分析** 是一種典型的回歸問題,我們需要為句子的正面/負面情感程度賦予一個數值。一種更高級的情感分析是**基於方面的情感分析** (ABSA),它不是為整個句子賦予情感,而是為句子的不同部分(方面)賦予情感,例如:*在這家餐廳,我喜歡菜餚,但氣氛糟透了*。 +* **命名實體識別** (NER) 是從文本中提取特定實體的問題。例如,我們需要理解在短語 *我需要明天飛往巴黎* 中,*明天* 指的是日期 (DATE),而 *巴黎* 是地點 (LOCATION)。 +* **關鍵詞提取** 與 NER 類似,但我們需要自動提取對句子含義重要的詞,而不需要針對特定實體類型進行預訓練。 +* **文本聚類** 在我們希望將相似的句子分組時非常有用,例如,在技術支持對話中將相似的請求分組。 +* **問答系統** 是指模型回答特定問題的能力。模型接收一段文本和一個問題作為輸入,並需要提供文本中包含答案的位置(有時需要生成答案文本)。 +* **文本生成** 是指模型生成新文本的能力。這可以被視為一種分類任務,根據某些*文本提示*預測下一個字母/單詞。高級文本生成模型(如 GPT-3)能夠通過一種稱為[提示編程](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0)或[提示工程](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29)的技術解決其他 NLP 任務,例如分類。 +* **文本摘要** 是一種技術,我們希望計算機能夠“閱讀”長文本並將其總結為幾句話。 +* **機器翻譯** 可以被視為一種將一種語言的文本理解與另一種語言的文本生成相結合的任務。 + +最初,大多數 NLP 任務是通過傳統方法(如語法)解決的。例如,在機器翻譯中,解析器被用來將初始句子轉換為語法樹,然後提取高層語義結構來表示句子的含義,基於這些含義和目標語言的語法生成結果。如今,許多 NLP 任務使用神經網絡更有效地解決。 + +> 許多經典的 NLP 方法已在 [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python 庫中實現。網上有一本很棒的 [NLTK 書](https://www.nltk.org/book/),涵蓋了如何使用 NLTK 解決不同的 NLP 任務。 + +在我們的課程中,我們將主要專注於使用神經網絡進行 NLP,並在需要時使用 NLTK。 + +我們已經學習了如何使用神經網絡處理表格數據和圖像。這些數據類型與文本的主要區別在於,文本是可變長度的序列,而圖像的輸入大小是預先確定的。雖然卷積網絡可以從輸入數據中提取模式,但文本中的模式更為複雜。例如,否定可能與主語之間隔著許多單詞(例如:*我不喜歡橙子*,與 *我不喜歡那些又大又多彩又美味的橙子*),但仍應被解釋為一種模式。因此,為了處理語言,我們需要引入新的神經網絡類型,例如*循環網絡*和*Transformer*。 + +## 安裝庫 + +如果您使用本地 Python 安裝來運行本課程,您可能需要使用以下命令安裝 NLP 所需的所有庫: + +**對於 PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**對於 TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> 您可以在 [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) 上嘗試使用 TensorFlow 進行 NLP。 + +## GPU 警告 + +在本節中,我們的一些示例將訓練相當大的模型。 +* **使用支持 GPU 的計算機**:建議在支持 GPU 的計算機上運行筆記本,以減少處理大型模型時的等待時間。 +* **GPU 記憶體限制**:在 GPU 上運行可能會導致 GPU 記憶體不足的情況,特別是在訓練大型模型時。 +* **GPU 記憶體消耗**:訓練過程中消耗的 GPU 記憶體量取決於多種因素,包括小批量大小。 +* **減小小批量大小**:如果遇到 GPU 記憶體問題,請考慮在代碼中減小小批量大小作為潛在解決方案。 +* **TensorFlow GPU 記憶體釋放**:舊版本的 TensorFlow 在一個 Python 內核中訓練多個模型時可能無法正確釋放 GPU 記憶體。為了有效管理 GPU 記憶體使用,您可以配置 TensorFlow 僅在需要時分配 GPU 記憶體。 +* **代碼包含**:要設置 TensorFlow 僅在需要時增長 GPU 記憶體分配,請在筆記本中包含以下代碼: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +如果您對從經典機器學習的角度學習 NLP 感興趣,請訪問[這套課程](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP)。 + +## 本節內容 +在本節中,我們將學習: + +* [將文本表示為張量](13-TextRep/README.md) +* [詞嵌入](14-Emdeddings/README.md) +* [語言建模](15-LanguageModeling/README.md) +* [循環神經網絡](16-RNN/README.md) +* [生成網絡](17-GenerativeNetworks/README.md) +* [Transformer](18-Transformers/README.md) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用本翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/mo/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..5114b74e --- /dev/null +++ b/translations/mo/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,90 @@ + +# 基因演算法 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**基因演算法** (GA) 是基於**演化方法**的人工智慧技術,透過模仿族群演化的方式來尋求特定問題的最佳解。此方法由 [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) 在1975年提出。 + +基因演算法的核心概念包括: + +* 問題的有效解可以用**基因**來表示 +* **交叉**允許我們結合兩個解,生成新的有效解 +* **選擇**透過某種**適應度函數**來挑選更優的解 +* **突變**用於打破局部最小值的限制,促進全域最佳化 + +若要實現基因演算法,您需要以下步驟: + +* 找到一種方法,使用**基因** g∈Γ 來編碼問題的解 +* 在基因集合 Γ 上定義**適應度函數** fit: Γ→**R**,函數值越小表示解越好 +* 定義**交叉**機制,結合兩個基因以生成新的有效解 crossover: Γ2→Γ +* 定義**突變**機制 mutate: Γ→Γ + +在許多情況下,交叉和突變是相對簡單的算法,用於操作基因作為數字序列或位元向量。 + +基因演算法的具體實現可能因案例而異,但其整體結構如下: + +1. 選擇初始族群 G⊂Γ +2. 隨機選擇本步驟要執行的操作:交叉或突變 +3. **交叉**: + * 隨機選擇兩個基因 g1, g2 ∈ G + * 計算交叉結果 g=crossover(g1,g2) + * 如果 fit(g)1) 或 fit(g)2),則用 g 替換族群中的相應基因 +4. **突變** - 隨機選擇基因 g∈G,並用 mutate(g) 替換 +5. 重複步驟2,直到適應度函數值足夠小,或達到步驟數限制為止 + +## 常見任務 + +基因演算法通常用於解決以下任務: + +1. 排程最佳化 +1. 最佳化物品打包 +1. 最佳化切割 +1. 加速窮舉搜索 + +## ✍️ 練習:基因演算法 + +繼續學習以下筆記本中的內容: + +前往 [此筆記本](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb),查看基因演算法的兩個應用範例: + +1. 公平分配寶藏 +1. 八皇后問題 + +## 結論 + +基因演算法被廣泛用於解決許多問題,包括物流和搜索問題。這個領域的靈感來自心理學與計算機科學的交叉研究。 + +## 🚀 挑戰 + +「基因演算法易於實現,但其行為難以理解。」[來源](https://wikipedia.org/wiki/Genetic_algorithm) +進行一些研究,找到基因演算法的實現範例,例如解數獨問題,並以草圖或流程圖的形式解釋其工作原理。 + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## 回顧與自學 + +觀看 [這部精彩影片](https://www.youtube.com/watch?v=qv6UVOQ0F44),了解電腦如何透過基因演算法訓練的神經網路學習玩《超級瑪利歐》。我們將在[下一節](../22-DeepRL/README.md)中深入探討電腦學習玩遊戲的相關內容。 + +## [作業:丟番圖方程](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +您的目標是解決所謂的**丟番圖方程**——一種具有整數根的方程。例如,考慮方程 a+2b+3c+4d=30,您需要找到滿足此方程的整數根。 + +*此作業的靈感來自 [這篇文章](https://habr.com/post/128704/)。* + +提示: + +1. 您可以將根值限制在區間 [0;30] +1. 作為基因,考慮使用根值列表 + +使用 [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) 作為起點。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/6-Other/22-DeepRL/README.md b/translations/mo/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..ba0f6137 --- /dev/null +++ b/translations/mo/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# 深度強化學習 + +強化學習(Reinforcement Learning, RL)被視為與監督學習(Supervised Learning)和非監督學習(Unsupervised Learning)並列的基本機器學習範式之一。在監督學習中,我們依賴於已知結果的數據集,而強化學習則是基於**透過實踐學習**。例如,當我們第一次接觸一款電腦遊戲時,即使不知道規則,我們也會開始嘗試遊玩,並通過遊玩的過程和調整行為來逐漸提升技能。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +進行強化學習需要以下幾個要素: + +* 一個**環境**或**模擬器**,用來設定遊戲規則。我們應該能夠在模擬器中運行實驗並觀察結果。 +* 一個**獎勵函數**,用來指示實驗的成功程度。例如,在學習玩電腦遊戲的情況下,獎勵可以是我們的最終得分。 + +基於獎勵函數,我們應該能夠調整自己的行為並提升技能,以便下次表現得更好。強化學習與其他類型的機器學習的主要區別在於,強化學習通常要等到遊戲結束後才能知道是贏還是輸。因此,我們無法單獨判斷某一步是否是好的行為——我們只能在遊戲結束時收到獎勵。 + +在強化學習過程中,我們通常會進行許多實驗。在每次實驗中,我們需要在遵循目前學到的最佳策略(**利用**)和探索新的可能狀態(**探索**)之間取得平衡。 + +## OpenAI Gym + +一個非常適合強化學習的工具是 [OpenAI Gym](https://gym.openai.com/)——一個**模擬環境**,可以模擬從 Atari 遊戲到平衡桿物理學等多種不同的環境。它是訓練強化學習算法最受歡迎的模擬環境之一,由 [OpenAI](https://openai.com/) 維護。 + +> **注意**:你可以在 [這裡](https://gym.openai.com/envs/#classic_control) 查看 OpenAI Gym 提供的所有環境。 + +## CartPole 平衡 + +你可能都見過現代的平衡裝置,例如 *Segway* 或 *Gyroscooters*。它們能夠通過接收來自加速度計或陀螺儀的信號並調整輪子的運動來自動保持平衡。在本節中,我們將學習如何解決一個類似的問題——平衡一根桿子。這類似於馬戲團表演者需要在手上平衡一根桿子的情況——但這裡的桿子平衡僅發生在一維空間中。 + +一個簡化的平衡問題被稱為 **CartPole** 問題。在 CartPole 世界中,我們有一個可以左右移動的水平滑塊,目標是讓滑塊上的垂直桿子保持平衡。 + +a cartpole + +要創建並使用這個環境,我們需要幾行 Python 代碼: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +每個環境都可以通過以下方式訪問: +* `env.reset` 開始一個新的實驗 +* `env.step` 執行一個模擬步驟。它接收來自**動作空間**的一個**動作**,並返回一個**觀測值**(來自觀測空間),以及一個獎勵和一個終止標誌。 + +在上面的例子中,我們在每一步執行隨機動作,因此實驗的壽命非常短: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +強化學習算法的目標是訓練一個模型——所謂的**策略** π——它能根據給定的狀態返回相應的動作。我們也可以將策略視為概率性的,例如,對於任何狀態 *s* 和動作 *a*,它會返回 π(*a*|*s*) 的概率,表示我們應該在狀態 *s* 下採取動作 *a*。 + +## 策略梯度算法 + +建模策略最明顯的方法是創建一個神經網絡,該網絡以狀態作為輸入,並返回相應的動作(或者更準確地說是所有動作的概率)。在某種意義上,這類似於普通的分類任務,但有一個主要區別——我們事先並不知道每一步應該採取哪些動作。 + +這裡的想法是估計這些概率。我們構建一個**累積獎勵**向量,顯示實驗中每一步的總獎勵。我們還通過將早期的獎勵乘以某個係數 γ=0.99 來應用**獎勵折扣**,以減少早期獎勵的影響。然後,我們強化實驗路徑中帶來更大獎勵的那些步驟。 + +> 想了解更多關於策略梯度算法的內容並查看其實際應用,請參考[示例筆記本](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb)。 + +## Actor-Critic 算法 + +策略梯度方法的一個改進版本被稱為 **Actor-Critic**。其主要思想是神經網絡將被訓練來返回兩個結果: + +* 策略,決定應該採取的動作。這部分被稱為 **actor**。 +* 對於當前狀態下可以預期獲得的總獎勵的估計——這部分被稱為 **critic**。 + +在某種意義上,這種架構類似於 [GAN](../../4-ComputerVision/10-GANs/README.md),其中有兩個網絡相互對抗進行訓練。在 Actor-Critic 模型中,actor 提出我們需要採取的動作,而 critic 則進行批判並估計結果。然而,我們的目標是讓這兩個網絡協同訓練。 + +由於我們在實驗中同時知道真實的累積獎勵和 critic 返回的結果,因此構建一個損失函數來最小化它們之間的差異相對容易。這將給我們**critic 損失**。我們可以使用與策略梯度算法相同的方法計算**actor 損失**。 + +運行這些算法之一後,我們可以期望 CartPole 表現如下: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ 練習:策略梯度和 Actor-Critic 強化學習 + +繼續學習以下筆記本中的內容: + +* [TensorFlow 中的強化學習](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch 中的強化學習](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## 其他強化學習任務 + +如今,強化學習是一個快速增長的研究領域。一些有趣的強化學習應用包括: + +* 教電腦玩 **Atari 遊戲**。這個問題的挑戰在於,我們沒有簡單的向量形式的狀態,而是截圖——我們需要使用 CNN 將屏幕圖像轉換為特徵向量,或者提取獎勵信息。Atari 遊戲可以在 Gym 中找到。 +* 教電腦下棋,例如國際象棋和圍棋。最近,像 **Alpha Zero** 這樣的最先進程序是通過兩個代理相互對弈並在每一步中不斷改進來從零開始訓練的。 +* 在工業中,強化學習被用於從模擬中創建控制系統。一個名為 [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) 的服務專門為此設計。 + +## 總結 + +我們現在已經學會了如何通過提供定義遊戲期望狀態的獎勵函數,並讓代理智能地探索搜索空間,來訓練代理以獲得良好的結果。我們成功嘗試了兩種算法,並在相對較短的時間內取得了良好的結果。然而,這只是你強化學習旅程的開始,如果你想深入研究,應該考慮參加一門專門的課程。 + +## 🚀 挑戰 + +探索「其他強化學習任務」部分列出的應用,並嘗試實現其中一個! + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## 回顧與自學 + +在我們的 [機器學習初學者課程](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) 中了解更多關於經典強化學習的內容。 + +觀看[這個精彩的影片](https://www.youtube.com/watch?v=qv6UVOQ0F44),了解電腦如何學會玩超級瑪利歐。 + +## 作業:[訓練一輛山地車](lab/README.md) + +在這次作業中,你的目標是訓練一個不同的 Gym 環境——[Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/)。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/6-Other/22-DeepRL/lab/README.md b/translations/mo/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..05991853 --- /dev/null +++ b/translations/mo/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## 環境介紹 + +Mountain Car 環境包含一輛被困在山谷中的車子。你的目標是跳出山谷並到達旗幟的位置。你可以執行的動作包括向左加速、向右加速,或者什麼都不做。你可以觀察車子在 x 軸上的位置以及速度。 + +## 啟動筆記本 + +通過打開 [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) 開始這個實驗。 + +## 收穫 + +在這個實驗中,你應該學到將強化學習 (RL) 演算法應用到一個新環境通常是相當直接的,因為 OpenAI Gym 為所有環境提供了相同的介面,而演算法本身並不會過多依賴於環境的特性。你甚至可以重新結構化 Python 程式碼,以便將任何環境作為參數傳遞給 RL 演算法。 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/6-Other/23-MultiagentSystems/README.md b/translations/mo/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..32eb4d3a --- /dev/null +++ b/translations/mo/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# 多代理系統 + +實現智慧的一種可能方式是所謂的**湧現式**(或**協同式**)方法,這種方法基於一個事實,即許多相對簡單的代理的組合行為可以導致整個系統表現出更複雜(或更智慧)的行為。理論上,這種方法基於[集體智慧](https://en.wikipedia.org/wiki/Collective_intelligence)、[湧現主義](https://en.wikipedia.org/wiki/Global_brain)和[進化控制論](https://en.wikipedia.org/wiki/Global_brain)的原則,這些原則認為,高層次的系統在適當地由低層次系統組合時,會獲得某種附加價值(即所謂的*超系統轉換原則*)。 + +## [課前測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**多代理系統**的方向在1990年代隨著互聯網和分散式系統的發展而在人工智慧領域中興起。經典的人工智慧教科書之一[《人工智慧:現代方法》](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach)從多代理系統的角度探討了經典人工智慧的觀點。 + +多代理方法的核心是**代理**的概念——一個生活在某個**環境**中的實體,它可以感知並對環境進行操作。這是一個非常廣泛的定義,代理可以有許多不同的類型和分類方式: + +* 根據推理能力: + - **反應型**代理通常具有簡單的請求-回應行為 + - **推理型**代理使用某種邏輯推理和/或規劃能力 +* 根據代理執行代碼的位置: + - **靜態**代理在專用的網路節點上運行 + - **移動**代理可以在網路節點之間移動其代碼 +* 根據行為: + - **被動代理**沒有特定的目標。這類代理可以對外部刺激作出反應,但不會主動採取行動 + - **主動代理**有一些目標需要追求 + - **認知型代理**涉及複雜的規劃和推理 + +如今,多代理系統被應用於許多領域: + +* 在遊戲中,許多非玩家角色(NPC)使用某種人工智慧,並可被視為智慧代理 +* 在影片製作中,渲染涉及人群的複雜3D場景通常使用多代理模擬 +* 在系統建模中,多代理方法被用來模擬複雜模型的行為。例如,多代理方法已成功用於預測COVID-19疾病在全球的傳播。類似的方法也可用於模擬城市交通,並觀察交通規則的變化對交通的影響 +* 在複雜的自動化系統中,每個設備可以作為一個獨立的代理,這使得整個系統不那麼單一化,並且更加穩健 + +我們不會深入探討多代理系統,但會考慮一個**多代理建模**的例子。 + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) 是一個基於修改版 [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) 程式語言的多代理建模環境。這種語言最初是為了教導兒童程式設計概念而開發的,它允許你控制一個稱為**烏龜**的代理,該代理可以移動並留下痕跡。這使得創建複雜的幾何圖形成為可能,這是一種非常直觀的方式來理解代理的行為。 + +在 NetLogo 中,我們可以使用 `create-turtles` 指令創建許多烏龜。然後我們可以命令所有烏龜執行一些動作(例如,以下範例中向前移動10個單位): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +當然,如果所有烏龜都做相同的事情,那就沒什麼趣味了,因此我們可以使用 `ask` 指令來命令某些烏龜群體,例如那些位於某個點附近的烏龜。我們還可以使用 `breed [cats cat]` 指令創建不同*品種*的烏龜。這裡 `cat` 是品種的名稱,我們需要指定單數和複數形式,因為不同的指令會使用不同的形式以保持清晰。 + +> ✅ 我們不會深入學習 NetLogo 語言本身——如果你有興趣學習更多,可以參考出色的[初學者互動式 NetLogo 字典](https://ccl.northwestern.edu/netlogo/bind/)資源。 + +你可以[下載](https://ccl.northwestern.edu/netlogo/download.shtml)並安裝 NetLogo 來試用。 + +### 模型庫 + +NetLogo 的一大優點是它包含一個可供試用的工作模型庫。進入 **File → Models Library**,你會發現許多模型分類可供選擇。 + +NetLogo 模型庫 + +> Dmitry Soshnikov 提供的模型庫截圖 + +你可以打開其中一個模型,例如 **Biology → Flocking**。 + +### 主要原則 + +打開模型後,你會進入 NetLogo 的主畫面。以下是一個描述狼和羊在有限資源(草地)條件下的種群模型範例。 + +![NetLogo 主畫面](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mo.png) + +> Dmitry Soshnikov 提供的截圖 + +在這個畫面上,你可以看到: + +* **介面**部分,包含: + - 所有代理生活的主要場地 + - 各種控制項:按鈕、滑桿等 + - 用於顯示模擬參數的圖表 +* **代碼**標籤,包含編輯器,你可以在其中輸入 NetLogo 程式 + +在大多數情況下,介面會有一個 **Setup** 按鈕,用於初始化模擬狀態,還有一個 **Go** 按鈕,用於啟動執行。這些按鈕由代碼中的相應處理程序處理,如下所示: + +``` +to go [ +... +] +``` + +NetLogo 的世界由以下對象組成: + +* **代理**(烏龜),可以在場地上移動並執行操作。你可以使用 `ask turtles [...]` 語法命令代理,括號中的代碼會以*烏龜模式*由所有代理同時執行 +* **補丁**是場地上的方形區域,代理生活在其上。你可以引用同一補丁上的所有代理,或者更改補丁的顏色和其他屬性。你也可以 `ask patches` 執行操作 +* **觀察者**是一個控制世界的獨特代理。所有按鈕處理程序都在*觀察者模式*下執行 + +> ✅ 多代理環境的美妙之處在於,烏龜模式或補丁模式下運行的代碼會由所有代理同時並行執行。因此,通過編寫少量代碼並編程個體代理的行為,你可以創建整個模擬系統的複雜行為。 + +### 群聚行為 + +作為多代理行為的一個範例,我們來看看**[群聚行為](https://en.wikipedia.org/wiki/Flocking_(behavior))**。群聚是一種複雜的模式,非常類似於鳥群的飛行方式。觀察它們飛行時,你可能會認為它們遵循某種集體演算法,或者擁有某種形式的*集體智慧*。然而,這種複雜行為的產生是因為每個個體代理(在這裡是一隻*鳥*)僅觀察短距離內的其他代理,並遵循三個簡單規則: + +* **對齊** - 朝著鄰近代理的平均方向移動 +* **凝聚** - 朝著鄰居的平均位置移動(*長距離吸引*) +* **分離** - 當與其他鳥靠得太近時,試圖遠離(*短距離排斥*) + +你可以運行群聚範例並觀察行為。你還可以調整參數,例如*分離程度*或*視距範圍*,這定義了每隻鳥能看到的距離。注意,如果你將視距範圍減少到0,所有鳥都變得盲目,群聚行為就會停止。如果你將分離減少到0,所有鳥會聚集成一條直線。 + +> ✅ 切換到 **代碼** 標籤,查看群聚的三個規則(對齊、凝聚和分離)如何在代碼中實現。注意我們僅引用視距範圍內的代理。 + +### 其他可觀察的模型 + +還有一些有趣的模型可以供你實驗: + +* **Art → Fireworks** 展示了如何將煙火視為個別火流的集體行為 +* **Social Science → Traffic Basic** 和 **Social Science → Traffic Grid** 展示了城市交通在1D和2D網格中的模型,有或沒有交通信號燈。模擬中的每輛車遵循以下規則: + - 如果前方空間是空的——加速(直到某個最大速度) + - 如果看到前方有障礙物——剎車(你可以調整駕駛員的視距) +* **Social Science → Party** 展示了人們在雞尾酒會上如何聚集。你可以找到能最快提升群體幸福感的參數組合。 + +從這些範例中可以看出,多代理模擬是一種非常有用的方法,可以用來理解由遵循相同或相似邏輯的個體組成的複雜系統的行為。它還可以用於控制虛擬代理,例如電腦遊戲中的[非玩家角色(NPC)](https://en.wikipedia.org/wiki/NPC),或3D動畫世界中的代理。 + +## 推理型代理 + +上述代理非常簡單,通過某種演算法對環境變化作出反應。因此,它們是**反應型代理**。然而,有時代理可以進行推理並規劃其行動,這種情況下它們被稱為**推理型代理**。 + +一個典型的例子是個人代理接收到人類的指令去預訂一個度假行程。假設網路上有許多代理可以幫助它。它需要聯繫其他代理,查看有哪些航班可用,不同日期的酒店價格是多少,並嘗試談判出最優惠的價格。當度假計劃完成並得到主人確認後,它可以進行預訂。 + +為了做到這一點,代理需要**溝通**。為了成功溝通,它們需要: + +* 一些用於交換知識的**標準語言**,例如[知識交換格式](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format)(KIF)和[知識查詢與操作語言](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language)(KQML)。這些語言基於[言語行為理論](https://en.wikipedia.org/wiki/Speech_act)設計 +* 這些語言還應包括一些基於不同**拍賣類型**的**談判協議** +* 一個**通用本體**,以便它們能參考相同的概念並理解其語義 +* 一種**發現**不同代理功能的方法,也基於某種本體 + +推理型代理比反應型代理複雜得多,因為它們不僅需要對環境變化作出反應,還需要能夠*主動*採取行動。一種被提出的推理型代理架構是所謂的信念-願望-意圖(BDI)代理: + +* **信念**構成了代理對其環境的知識集合。它可以被結構化為知識庫或一組代理可以應用於環境中特定情況的規則 +* **願望**定義了代理想要做什麼,即它的目標。例如,上述個人助理代理的目標是預訂行程,而酒店代理的目標是最大化利潤 +* **意圖**是代理為實現其目標而計劃的具體行動。行動通常會改變環境並導致與其他代理的溝通 + +目前有一些可用於構建多代理系統的平台,例如 [JADE](https://jade.tilab.com/)。[這篇論文](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf)包含了多代理平台的回顧,以及多代理系統的簡史及其不同的使用場景。 + +## 結論 + +多代理系統可以採取非常不同的形式,並應用於許多不同的領域。 +它們通常專注於個體代理的簡單行為,並通過**協同效應**實現整個系統的更複雜行為。 + +## 🚀 挑戰 + +將這節課的內容應用到現實世界,嘗試構思一個可以解決問題的多代理系統。例如,多代理系統需要做什麼來優化校車路線?它如何在麵包店中運作? + +## [課後測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## 複習與自學 + +複習此類系統在工業中的應用。選擇一個領域,例如製造業或電玩產業,探索多代理系統如何用於解決獨特的問題。 + +## [NetLogo 作業](assignment.md) + +**免責聲明**: +此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/mo/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..9aaec863 --- /dev/null +++ b/translations/mo/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# NetLogo 作業 + +選擇 NetLogo 資料庫中的一個模型,並使用它來盡可能模擬一個真實生活中的情境。一個不錯的例子是調整「替代視覺化」資料夾中的病毒模型,展示它如何用於模擬 COVID-19 的傳播。你能否建立一個模仿真實病毒傳播的模型? + +透過保存副本並製作一段影片示範,解釋該模型如何與真實世界情境相關,來展示你的成果。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/7-Ethics/README.md b/translations/mo/lessons/7-Ethics/README.md new file mode 100644 index 00000000..5698c6d3 --- /dev/null +++ b/translations/mo/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# 倫理與負責任的人工智慧 + +你即將完成這門課程,希望到目前為止,你已經清楚了解到人工智慧是基於一系列正式的數學方法,這些方法讓我們能夠在數據中找到關聯,並訓練模型來模仿人類行為的某些方面。在這個歷史時刻,我們認為人工智慧是一個非常強大的工具,可以從數據中提取模式,並將這些模式應用於解決新問題。 + +## [課前測驗](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +然而,在科幻小說中,我們經常看到人工智慧對人類構成威脅的故事。這些故事通常圍繞某種人工智慧的反叛展開,當人工智慧決定與人類對抗時,這暗示人工智慧具有某種情感或能做出開發者無法預見的決策。 + +在這門課程中,我們學到的人工智慧無非是大型矩陣運算。它是一個非常強大的工具,可以幫助我們解決問題,但就像任何其他強大的工具一樣——它既可以被用於好的目的,也可以被用於壞的目的。重要的是,它可能會被*濫用*。 + +## 負責任的人工智慧原則 + +為了避免人工智慧的意外或故意濫用,微軟提出了重要的[負責任的人工智慧原則](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste)。以下概念是這些原則的基礎: + +* **公平性**與*模型偏差*這一重要問題相關,偏差可能是由於使用了有偏差的數據進行訓練。例如,當我們試圖預測某人獲得軟體開發工作機會的可能性時,模型可能會更偏向男性,這只是因為訓練數據集可能偏向於男性受眾。我們需要仔細平衡訓練數據並調查模型,以避免偏差,並確保模型考慮到更多相關特徵。 +* **可靠性與安全性**。由於其本質,人工智慧模型可能會犯錯。神經網絡返回的是概率,我們在做決策時需要考慮到這一點。每個模型都有一定的精確度和召回率,我們需要理解這些指標,以防止錯誤建議可能帶來的傷害。 +* **隱私與安全性**具有一些人工智慧特有的影響。例如,當我們使用某些數據來訓練模型時,這些數據會以某種方式“整合”到模型中。一方面,這提高了安全性和隱私性;另一方面,我們需要記住模型是基於哪些數據進行訓練的。 +* **包容性**意味著我們不是在構建人工智慧來取代人類,而是為了增強人類的能力,使我們的工作更具創造性。這也與公平性相關,因為在處理代表性不足的社群時,我們收集的大多數數據集可能存在偏差,我們需要確保這些社群被納入考量並得到人工智慧的正確處理。 +* **透明性**。這包括確保我們始終清楚地表明人工智慧正在被使用。此外,在可能的情況下,我們希望使用*可解釋*的人工智慧系統。 +* **問責性**。當人工智慧模型做出某些決策時,並不總是清楚誰應該對這些決策負責。我們需要確保我們理解人工智慧決策的責任所在。在大多數情況下,我們希望將人類納入重要決策的過程中,確保實際的人對決策負責。 + +## 負責任的人工智慧工具 + +微軟開發了[負責任的人工智慧工具箱](https://github.com/microsoft/responsible-ai-toolbox),其中包含一系列工具: + +* 解釋性儀表板 (InterpretML) +* 公平性儀表板 (FairLearn) +* 錯誤分析儀表板 +* 負責任的人工智慧儀表板,包括: + + - EconML - 用於因果分析的工具,專注於假設性問題 + - DiCE - 用於反事實分析的工具,讓你了解需要改變哪些特徵才能影響模型的決策 + +想了解更多關於人工智慧倫理的資訊,請參考[這一課程](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste),該課程屬於機器學習課程大綱,並包含作業。 + +## 回顧與自學 + +參加這個[學習路徑](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste),深入了解負責任的人工智慧。 + +## [課後測驗](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/README.md b/translations/mo/lessons/README.md new file mode 100644 index 00000000..69664907 --- /dev/null +++ b/translations/mo/lessons/README.md @@ -0,0 +1,17 @@ + +# 概述 + +![概述的手繪圖](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mo.png) + +> 手繪筆記由 [Tomomi Imura](https://twitter.com/girlie_mac) 提供 + +**免責聲明**: +本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/X-Extras/X1-MultiModal/README.md b/translations/mo/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..732625e7 --- /dev/null +++ b/translations/mo/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# 多模態網絡 + +在 Transformer 模型成功解決 NLP 任務後,相同或類似的架構也被應用於計算機視覺任務。如今,越來越多的研究致力於構建能夠**結合**視覺和自然語言能力的模型。其中一個嘗試是由 OpenAI 開發的 CLIP 和 DALL.E。 + +## 對比式圖像預訓練(CLIP) + +CLIP 的核心思想是能夠比較文本提示與圖像,並判斷圖像與提示的匹配程度。 + +![CLIP 架構](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mo.png) + +> *圖片來源於[這篇博客](https://openai.com/blog/clip/)* + +該模型基於從互聯網獲取的圖像及其標題進行訓練。對於每個批次,我們取 N 對 (圖像, 文本),並將它們轉換為一些向量表示 I 和 T。這些表示隨後會進行匹配。損失函數的定義是最大化同一對(例如 I 和 T)之間向量的餘弦相似度,同時最小化所有其他對之間的餘弦相似度。因此,這種方法被稱為**對比式**。 + +CLIP 模型/庫可以從 [OpenAI GitHub](https://github.com/openai/CLIP) 獲取。該方法的介紹可以參考[這篇博客](https://openai.com/blog/clip/),更詳細的描述則在[這篇論文](https://arxiv.org/pdf/2103.00020.pdf)中。 + +在模型預訓練完成後,我們可以提供一批圖像和一批文本提示,模型會返回一個概率張量。CLIP 可以用於多種任務: + +**圖像分類** + +假設我們需要在貓、狗和人之間對圖像進行分類。在這種情況下,我們可以將圖像和一系列文本提示輸入模型,例如:“*一張貓的照片*”、“*一張狗的照片*”、“*一張人的照片*”。在結果的 3 個概率向量中,我們只需選擇值最大的索引。 + +![CLIP 用於圖像分類](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mo.png) + +> *圖片來源於[這篇博客](https://openai.com/blog/clip/)* + +**基於文本的圖像搜索** + +我們也可以反過來操作。如果我們有一組圖像,可以將這組圖像和一個文本提示輸入模型,模型會返回與該提示最相似的圖像。 + +## ✍️ 範例:[使用 CLIP 進行圖像分類和圖像搜索](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +打開 [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) 筆記本,查看 CLIP 的實際應用。 + +## 使用 VQGAN+CLIP 進行圖像生成 + +CLIP 還可以用於從文本提示生成圖像。為此,我們需要一個**生成器模型**,該模型能夠基於某些向量輸入生成圖像。其中一個生成器模型是 [VQGAN](https://compvis.github.io/taming-transformers/)(向量量化生成對抗網絡)。 + +VQGAN 與普通 [GAN](../../4-ComputerVision/10-GANs/README.md) 的主要區別在於: +* 使用自回歸 Transformer 架構生成一系列具有上下文的視覺部分,這些部分構成了圖像。這些視覺部分由 [CNN](../../4-ComputerVision/07-ConvNets/README.md) 學習。 +* 使用子圖像鑑別器來檢測圖像的部分是否為“真實”或“偽造”(與傳統 GAN 的“全有或全無”方法不同)。 + +可以在 [Taming Transformers](https://compvis.github.io/taming-transformers/) 網站上了解更多關於 VQGAN 的信息。 + +VQGAN 與傳統 GAN 的一個重要區別是,後者可以從任何輸入向量生成一個體面的圖像,而 VQGAN 可能生成不連貫的圖像。因此,我們需要進一步引導圖像創建過程,這可以通過 CLIP 完成。 + +![VQGAN+CLIP 架構](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mo.png) + +為了生成與文本提示相符的圖像,我們從一些隨機編碼向量開始,將其通過 VQGAN 生成圖像。然後使用 CLIP 生成一個損失函數,該函數顯示圖像與文本提示的匹配程度。接下來的目標是最小化這個損失,通過反向傳播調整輸入向量參數。 + +一個實現 VQGAN+CLIP 的優秀庫是 [Pixray](http://github.com/pixray/pixray)。 + +![Pixray 生成的圖片](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mo.png) | ![Pixray 生成的圖片](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mo.png) | ![Pixray 生成的圖片](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mo.png) +----|----|---- +根據提示 *一幅年輕男性文學教師手持書本的水彩特寫肖像* 生成的圖片 | 根據提示 *一幅年輕女性計算機科學教師手持電腦的油畫特寫肖像* 生成的圖片 | 根據提示 *一幅年長男性數學教師站在黑板前的油畫特寫肖像* 生成的圖片 + +> 圖片來自 [Dmitry Soshnikov](http://soshnikov.com) 的 **人工教師** 系列 + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E 是一個基於 GPT-3 的模型,專門用於從文本提示生成圖像。該模型擁有 120 億個參數。 + +與 CLIP 不同,DALL-E 將文本和圖像作為單一的 token 流處理。因此,通過多個提示,可以基於文本生成圖像。 + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 和 DALL-E 2 的主要區別在於,後者能生成更真實的圖像和藝術作品。 + +以下是使用 DALL-E 生成圖像的示例: +![DALL-E 生成的圖片](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.mo.png) | ![DALL-E 生成的圖片](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.mo.png) | ![DALL-E 生成的圖片](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.mo.png) +----|----|---- +根據提示 *一幅年輕男性文學教師手持書本的水彩特寫肖像* 生成的圖片 | 根據提示 *一幅年輕女性計算機科學教師手持電腦的油畫特寫肖像* 生成的圖片 | 根據提示 *一幅年長男性數學教師站在黑板前的油畫特寫肖像* 生成的圖片 + +## 參考資料 + +* VQGAN 論文:[Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP 論文:[Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。 \ No newline at end of file diff --git a/translations/mo/lessons/sketchnotes/LICENSE.md b/translations/mo/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..ff13f1f8 --- /dev/null +++ b/translations/mo/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,101 @@ + +歐盟數據庫權利,則您必須根據與本公共許可協議相同的條件授予該數據庫的權利;以及 + + c. 您不得對數據庫或其內容施加任何額外或不同的條款或條件,或應用任何有效的技術措施,從而限制根據本公共許可協議授予的權利的行使。 + +第 5 節 -- 保證和責任免除。 + + a. 除非法律要求或書面同意,授權方以“現狀”提供授權材料,不作任何形式的明示或暗示保證,包括但不限於對適銷性、特定用途的適用性、權利的非侵權性、準確性或存在隱藏缺陷的保證。無論是否已知或可發現。 + + b. 在適用法律允許的最大範圍內,授權方不對您因使用授權材料而產生的任何直接、間接、特殊、附帶、後果性、懲罰性或其他損害承擔責任,即使授權方已被告知可能發生此類損害。 + +第 6 節 -- 有效期和終止。 + + a. 有效期。本公共許可協議授予的權利在版權和類似權利的有效期內有效,除非根據以下條款終止。 + + b. 終止。如果您未能遵守本公共許可協議的條款和條件,則您的許可將自動終止。 + + c. 重新授權。根據第 6(b) 節終止後,如果您糾正違規行為,則您的許可將自動恢復,除非授權方明確且最終終止您的許可。 + + d. 第 1、5、6、7 節的條款在本公共許可協議終止後仍然有效。 + +第 7 節 -- 其他條款和條件。 + + a. 附加條款和條件。授權方不得對授權材料施加任何額外或不同的條款或條件,或應用任何有效的技術措施,從而限制根據本公共許可協議授予的權利的行使。 + + b. 適用法律和爭議解決。本公共許可協議不限制任何適用法律下的權利,包括任何版權例外或限制。如果本公共許可協議的任何條款被認定為無效或不可執行,則根據適用法律,該條款應在必要的最低範圍內進行解釋、修改或分離,以使其有效和可執行,且不影響其他條款的有效性或可執行性。 + + c. 無放棄。除非授權方以書面形式明確同意,否則授權方未能執行或行使本公共許可協議的任何條款或條件不構成對該條款或條件的放棄。 + + d. 解釋。本公共許可協議不得解釋為減少、限制或限制任何適用法律下的權利,包括任何版權例外或限制。 + + e. 無代理關係。本公共許可協議不創建任何代理、合夥、合資或雇傭關係。 + +感謝您選擇 Creative Commons 許可協議。 +權利,然後您擁有「特殊資料庫權利」的資料庫(但不包括其個別內容)屬於改編素材, + +包括為了第 3(b) 節的目的;以及 +c. 如果您分享資料庫的全部或大部分內容,您必須遵守第 3(a) 節中的條件。 + +為免疑義,本第 4 節是補充而非取代您在本公共授權下的義務,當授權權利包括其他版權及類似權利時。 + + +第 5 節 —— 免責聲明與責任限制。 + +a. 除非授權人另有單獨承諾,在可能的範圍內,授權人以「現狀」及「可用」的方式提供授權素材,並且不對授權素材作出任何形式的陳述或保證,無論是明示、默示、法定或其他形式的保證。這包括但不限於所有權保證、適銷性、特定用途的適用性、不侵權、無潛在或其他缺陷、準確性,或是否存在錯誤(無論是否已知或可發現)。如果法律不允許完全或部分免除保證,則此免責聲明可能不適用於您。 + +b. 在可能的範圍內,授權人無論基於任何法律理論(包括但不限於過失)或其他原因,均不對您因本公共授權或使用授權素材而產生的任何直接、特殊、間接、附帶、後果性、懲罰性、示範性或其他損失、成本、費用或損害承擔責任,即使授權人已被告知可能發生此類損失、成本、費用或損害。如果法律不允許完全或部分限制責任,則此限制可能不適用於您。 + +c. 上述免責聲明與責任限制應以最接近於完全免責和放棄所有責任的方式解釋,在可能的範圍內適用。 + + +第 6 節 —— 有效期與終止。 + +a. 本公共授權適用於此處授權的版權及類似權利的有效期。然而,如果您未能遵守本公共授權,則您在本公共授權下的權利將自動終止。 + +b. 當您根據第 6(a) 節失去使用授權素材的權利時,該權利可恢復: + +1. 如果在您發現違規後的 30 天內糾正了違規行為,則自糾正之日起自動恢復;或 +2. 經授權人明確恢復。 + +為免疑義,本第 6(b) 節不影響授權人對您違反本公共授權的行為尋求補救的任何權利。 + +c. 為免疑義,授權人也可以根據其他條款或條件提供授權素材,或隨時停止分發授權素材;然而,這不會終止本公共授權。 + +d. 第 1 節、第 5 節、第 6 節、第 7 節和第 8 節在本公共授權終止後仍然有效。 + + +第 7 節 —— 其他條款與條件。 + +a. 除非授權人明確同意,授權人不受您傳達的任何額外或不同條款或條件的約束。 + +b. 關於授權素材的任何未在此處陳述的安排、理解或協議,均與本公共授權的條款和條件分開且獨立。 + + +第 8 節 —— 解釋。 + +a. 為免疑義,本公共授權不會且不應被解釋為減少、限制、約束或對任何在未經本公共授權許可的情況下合法使用授權素材的行為施加條件。 + +b. 在可能的範圍內,如果本公共授權的任何條款被認為不可執行,則應自動以最低限度的方式進行修改以使其可執行。如果該條款無法修改,則應從本公共授權中刪除,而不影響其餘條款和條件的可執行性。 + +c. 除非授權人明確同意,否則本公共授權的任何條款或條件均不會被放棄,也不會因未遵守而被視為同意。 + +d. 本公共授權中的任何內容均不構成或可被解釋為對授權人或您適用的任何司法管轄區或權威的法律程序的特權和豁免的限制或放棄。 + + +======================================================================= + +Creative Commons 並非其公共授權的當事方。然而,Creative Commons 可以選擇將其公共授權應用於其發布的素材,在這些情況下,Creative Commons 將被視為「授權人」。Creative Commons 公共授權的文本已根據 CC0 公共領域貢獻聲明捐贈給公共領域。除非為了表明素材是根據 Creative Commons 公共授權共享或根據 Creative Commons 在 creativecommons.org/policies 發布的政策另行允許,Creative Commons 不授權使用「Creative Commons」商標或任何其他 Creative Commons 的商標或標誌,除非事先獲得書面同意,包括但不限於對其公共授權的任何未經授權的修改或任何其他安排、理解或協議中使用授權素材的情況。為免疑義,本段不構成本公共授權的一部分。 + +您可以通過 creativecommons.org 聯繫 Creative Commons。 + +**免責聲明**: +本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。 \ No newline at end of file diff --git a/translations/mo/lessons/sketchnotes/README.md b/translations/mo/lessons/sketchnotes/README.md new file mode 100644 index 00000000..cb52145b --- /dev/null +++ b/translations/mo/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +所有課程的手繪筆記可以在這裡下載。 + +🎨 創作者:Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**免責聲明**: +本文檔已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。 \ No newline at end of file diff --git a/translations/mr/README.md b/translations/mr/README.md new file mode 100644 index 00000000..ab11fd81 --- /dev/null +++ b/translations/mr/README.md @@ -0,0 +1,155 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# नवशिक्यांसाठी कृत्रिम बुद्धिमत्ता - अभ्यासक्रम + +|![ [(@girlie_mac)](https://twitter.com/girlie_mac) यांनी तयार केलेले स्केच] (./lessons/sketchnotes/ai-overview.png)| +|:---:| +| नवशिक्यांसाठी AI - _[@girlie_mac](https://twitter.com/girlie_mac) यांनी तयार केलेले स्केच_ | + +**कृत्रिम बुद्धिमत्ता** (AI) च्या जगात आमच्या 12 आठवड्यांच्या, 24 धड्यांच्या अभ्यासक्रमासह प्रवास करा! यात प्रात्यक्षिक धडे, प्रश्नमंजुषा आणि प्रयोगशाळा समाविष्ट आहेत. हा अभ्यासक्रम नवशिक्यांसाठी अनुकूल आहे आणि TensorFlow आणि PyTorch यांसारख्या साधनांसह AI मधील नैतिकतेचा समावेश करतो. + +## तुम्ही काय शिकाल + +**[अभ्यासक्रमाचा मनननकाशा](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +या अभ्यासक्रमात, तुम्ही शिकाल: + +* कृत्रिम बुद्धिमत्तेचे विविध दृष्टिकोन, ज्यामध्ये **ज्ञान सादरीकरण** आणि तर्क यांसह "जुना चांगला" प्रतीकात्मक दृष्टिकोन ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)) समाविष्ट आहे. +* **न्यूरल नेटवर्क्स** आणि **डीप लर्निंग**, जे आधुनिक AI च्या केंद्रस्थानी आहेत. आम्ही या महत्त्वाच्या विषयांमागील संकल्पना दोन लोकप्रिय फ्रेमवर्क्स - [TensorFlow](http://Tensorflow.org) आणि [PyTorch](http://pytorch.org) च्या कोडसह स्पष्ट करू. +* प्रतिमा आणि मजकूरावर काम करण्यासाठी **न्यूरल आर्किटेक्चर्स**. आम्ही अलीकडील मॉडेल्स कव्हर करू, परंतु अत्याधुनिकतेत थोडी कमतरता असू शकते. +* कमी लोकप्रिय AI दृष्टिकोन, जसे की **जेनेटिक अल्गोरिदम्स** आणि **मल्टी-एजंट सिस्टीम्स**. + +या अभ्यासक्रमात आम्ही काय कव्हर करणार नाही: + +> [या अभ्यासक्रमासाठी सर्व अतिरिक्त संसाधने आमच्या Microsoft Learn संग्रहात शोधा](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **व्यवसायातील AI चा उपयोग** याचे व्यवसाय प्रकरणे. [व्यवसाय वापरकर्त्यांसाठी AI ची ओळख](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) शिकण्याचा मार्ग किंवा [AI बिझनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), [INSEAD](https://www.insead.edu/) सह सहकार्याने विकसित केलेला अभ्यासक्रम घ्या. +* **क्लासिक मशीन लर्निंग**, जे आमच्या [नवशिक्यांसाठी मशीन लर्निंग अभ्यासक्रम](http://github.com/Microsoft/ML-for-Beginners) मध्ये चांगल्या प्रकारे वर्णन केले आहे. +* **[कॉग्निटिव्ह सर्व्हिसेस](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** वापरून तयार केलेल्या व्यावहारिक AI अनुप्रयोगांसाठी, [दृष्टी](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [नैसर्गिक भाषा प्रक्रिया](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI सेवा](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** आणि इतरांसाठी Microsoft Learn वर प्रारंभ करा. +* **विशिष्ट क्लाउड फ्रेमवर्क्स**, जसे की [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), किंवा [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). [Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) आणि [Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) शिकण्याचे मार्ग वापरण्याचा विचार करा. +* **संवादी AI** आणि **चॅट बॉट्स**. [संवादी AI सोल्यूशन्स तयार करा](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) शिकण्याचा मार्ग स्वतंत्रपणे उपलब्ध आहे, तसेच [हा ब्लॉग पोस्ट](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) तपासा. +* **डीप लर्निंगमागील गहन गणित**. यासाठी, आम्ही Ian Goodfellow, Yoshua Bengio आणि Aaron Courville यांचे [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) वाचण्याची शिफारस करतो, जे [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) येथे ऑनलाइन उपलब्ध आहे. + +_क्लाउडमधील AI_ विषयांची सौम्य ओळख हवी असल्यास, [Azure वर कृत्रिम बुद्धिमत्तेसह प्रारंभ करा](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) शिकण्याचा मार्ग घ्या. + +# सामग्री + +| | धड्याचा दुवा | PyTorch/Keras/TensorFlow | प्रयोगशाळा | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [अभ्यासक्रम सेटअप](./lessons/0-course-setup/setup.md) | [तुमचे विकास वातावरण सेट करा](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI ची ओळख**](./lessons/1-Intro/README.md) | | | +| 01 | [AI ची ओळख आणि इतिहास](./lessons/1-Intro/README.md) | - | - | +| II | **प्रतीकात्मक AI** | +| 02 | [ज्ञान सादरीकरण आणि तज्ज्ञ प्रणाली](./lessons/2-Symbolic/README.md) | [तज्ज्ञ प्रणाली](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [ऑन्टोलॉजी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[संकल्प ग्राफ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**न्यूरल नेटवर्क्सची ओळख**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [परसेप्ट्रॉन](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [प्रयोगशाळा](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [मल्टी-लेयर्ड परसेप्ट्रॉन आणि आपले स्वतःचे फ्रेमवर्क तयार करणे](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [प्रयोगशाळा](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [फ्रेमवर्क्सची ओळख (PyTorch/TensorFlow) आणि ओव्हरफिटिंग](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [प्रयोगशाळा](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**कंप्युटर व्हिजन**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure वर कंप्युटर व्हिजन एक्सप्लोर करा](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [कंप्युटर व्हिजनची ओळख. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [प्रयोगशाळा](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [कन्फोल्यूशनल न्यूरल नेटवर्क्स](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN आर्किटेक्चर्स](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [प्रयोगशाळा](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [पूर्व-प्रशिक्षित नेटवर्क्स आणि ट्रान्सफर लर्निंग](./lessons/4-ComputerVision/08-TransferLearning/README.md) आणि [प्रशिक्षण युक्त्या](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [प्रयोगशाळा](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [ऑटोएनकोडर्स आणि VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [जनरेटिव्ह अड्व्हर्सेरियल नेटवर्क्स आणि कलात्मक शैली हस्तांतरण](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [ऑब्जेक्ट डिटेक्शन](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [प्रयोगशाळा](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [सिमॅंटिक सेगमेंटेशन. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**नॅचरल लँग्वेज प्रोसेसिंग**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azure वर नॅचरल लँग्वेज प्रोसेसिंग एक्सप्लोर करा](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [टेक्स्ट रिप्रेझेंटेशन. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [सिमॅंटिक वर्ड एम्बेडिंग्स. Word2Vec आणि GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [लँग्वेज मॉडेलिंग. स्वतःचे एम्बेडिंग्स प्रशिक्षण द्या](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [प्रयोगशाळा](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [रीकरंट न्यूरल नेटवर्क्स](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [जनरेटिव्ह रीकरंट नेटवर्क्स](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [प्रयोगशाळा](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ट्रान्सफॉर्मर्स. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [नेम्ड एंटिटी रिकग्निशन](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [प्रयोगशाळा](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [मोठे भाषा मॉडेल्स, प्रॉम्प्ट प्रोग्रामिंग आणि फ्यू-शॉट टास्क्स](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **इतर AI तंत्रज्ञान** || | +| 21 | [जेनेटिक अल्गोरिदम्स](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [डीप रिइन्फोर्समेंट लर्निंग](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [प्रयोगशाळा](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [मल्टी-एजंट सिस्टीम्स](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI नीतिशास्त्र** | | | +| 24 | [AI नीतिशास्त्र आणि जबाबदार AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: जबाबदार AI तत्त्वे](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **अतिरिक्त** | | | +| 25 | [मल्टी-मोडल नेटवर्क्स, CLIP आणि VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## प्रत्येक धड्यात समाविष्ट आहे + +* पूर्व-वाचन साहित्य +* कार्यक्षम जुपिटर नोटबुक्स, जे अनेकदा फ्रेमवर्कसाठी विशिष्ट असतात (**PyTorch** किंवा **TensorFlow**). कार्यक्षम नोटबुकमध्ये भरपूर सैद्धांतिक साहित्य असते, त्यामुळे विषय समजून घेण्यासाठी तुम्हाला किमान एक नोटबुक आवृत्ती (PyTorch किंवा TensorFlow) वाचणे आवश्यक आहे. +* **प्रयोगशाळा** काही विषयांसाठी उपलब्ध आहेत, ज्यामुळे तुम्हाला शिकलेल्या साहित्याचा विशिष्ट समस्येवर उपयोग करण्याची संधी मिळते. +* काही विभागांमध्ये संबंधित विषयांवर [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) मॉड्यूल्सचे दुवे आहेत. + +## सुरुवात कशी करावी + +- तुमच्या विकास वातावरणाची सेटअप करण्यासाठी आम्ही एक [सेटअप धडा](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) तयार केला आहे. - शिक्षकांसाठी, आम्ही एक [शिक्षणक्रम सेटअप धडा](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) देखील तयार केला आहे! +- [VSCode किंवा Codepace मध्ये कोड कसा चालवायचा](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) याबद्दल जाणून घ्या. + +या चरणांचे अनुसरण करा: + +रेपॉझिटरी फोर्क करा: या पृष्ठाच्या वरच्या उजव्या कोपऱ्यातील "Fork" बटणावर क्लिक करा. + +रेपॉझिटरी क्लोन करा: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +या रेपोला नंतर सोपे सापडण्यासाठी स्टार (🌟) देण्यास विसरू नका. + +## इतर शिकणाऱ्यांना भेटा + +आमच्या [अधिकृत AI Discord सर्व्हर](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) मध्ये सामील व्हा, या कोर्समध्ये सहभागी होणाऱ्या इतर शिकणाऱ्यांना भेटा आणि नेटवर्क करा तसेच समर्थन मिळवा. + +जर तुम्हाला उत्पादन अभिप्राय किंवा प्रश्न असतील तर आमच्या [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) ला भेट द्या. + +## क्विझेस +> **क्विझेसबद्दल एक टीप**: सर्व क्विझेस Quiz-app फोल्डरमध्ये etc\quiz-app मध्ये आहेत. त्या धड्यांमधून लिंक केल्या जातात. क्विझ अॅप स्थानिक पातळीवर चालवले जाऊ शकते किंवा Azure वर डिप्लॉय केले जाऊ शकते; `quiz-app` फोल्डरमधील सूचनांचे पालन करा. त्या हळूहळू स्थानिक भाषेत अनुवादित केल्या जात आहेत. +## मदतीची आवश्यकता + +तुमच्याकडे काही सूचना आहेत का किंवा तुम्हाला शब्दलेखन किंवा कोडमध्ये चुका सापडल्या आहेत का? कृपया एक समस्या उघडा किंवा एक पुल रिक्वेस्ट तयार करा. + +## विशेष आभार + +* **✍️ मुख्य लेखक:** [Dmitry Soshnikov](http://soshnikov.com), पीएचडी +* **🔥 संपादक:** [Jen Looper](https://twitter.com/jenlooper), पीएचडी +* **🎨 स्केच नोट चित्रकार:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ क्विझ तयार करणारे:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 मुख्य योगदानकर्ते:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## इतर अभ्यासक्रम + +आमची टीम इतर अभ्यासक्रम देखील तयार करते! खालील अभ्यासक्रम पहा: + +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Agentic use](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/SECURITY.md b/translations/mr/SECURITY.md new file mode 100644 index 00000000..3ca5a781 --- /dev/null +++ b/translations/mr/SECURITY.md @@ -0,0 +1,49 @@ + +## सुरक्षा + +मायक्रोसॉफ्ट आपल्या सॉफ्टवेअर उत्पादने आणि सेवांच्या सुरक्षेला प्राधान्य देते, ज्यामध्ये आमच्या GitHub संस्थांद्वारे व्यवस्थापित केलेल्या सर्व स्रोत कोड रिपॉझिटरीजचा समावेश होतो. यामध्ये [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), आणि [आमच्या GitHub संस्थांचा](https://opensource.microsoft.com/) समावेश आहे. + +जर तुम्हाला मायक्रोसॉफ्टच्या मालकीच्या कोणत्याही रिपॉझिटरीमध्ये [मायक्रोसॉफ्टच्या सुरक्षा असुरक्षिततेच्या व्याख्येनुसार](https://aka.ms/opensource/security/definition) सुरक्षा असुरक्षितता आढळली असेल, तर कृपया खाली दिलेल्या सूचनांनुसार आम्हाला कळवा. + +## सुरक्षा समस्या कळवणे + +**कृपया सार्वजनिक GitHub इश्यूजद्वारे सुरक्षा असुरक्षितता कळवू नका.** + +त्याऐवजी, कृपया मायक्रोसॉफ्ट सिक्युरिटी रिस्पॉन्स सेंटर (MSRC) ला [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) येथे कळवा. + +जर तुम्हाला लॉगिन न करता सबमिट करायचे असेल, तर [secure@microsoft.com](mailto:secure@microsoft.com) या ईमेलवर पाठवा. शक्य असल्यास, तुमचा संदेश आमच्या PGP कीने एन्क्रिप्ट करा; कृपया ती [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey) वरून डाउनलोड करा. + +तुम्हाला 24 तासांच्या आत उत्तर मिळेल. काही कारणास्तव जर उत्तर मिळाले नाही, तर कृपया ईमेलद्वारे फॉलो अप करा, जेणेकरून आम्हाला तुमचा मूळ संदेश मिळाला आहे याची खात्री होईल. अधिक माहिती [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) येथे मिळू शकते. + +कृपया शक्य तितकी खालील माहिती समाविष्ट करा, ज्यामुळे आम्हाला संभाव्य समस्येचे स्वरूप आणि व्याप्ती अधिक चांगल्या प्रकारे समजण्यास मदत होईल: + + * समस्येचा प्रकार (उदा. बफर ओव्हरफ्लो, SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, इ.) + * समस्येच्या प्रकटीकरणाशी संबंधित स्रोत फाइल(स)चे पूर्ण पथ + * प्रभावित स्रोत कोडचे स्थान (टॅग/ब्रँच/कमिट किंवा थेट URL) + * समस्या पुनरुत्पादित करण्यासाठी आवश्यक असलेली कोणतीही विशेष कॉन्फिगरेशन + * समस्या पुनरुत्पादित करण्यासाठी चरण-दर-चरण सूचना + * प्रूफ-ऑफ-कॉन्सेप्ट किंवा एक्सप्लॉइट कोड (शक्य असल्यास) + * समस्येचा परिणाम, ज्यामध्ये हल्लेखोराने समस्या कशी शोषण केली जाऊ शकते याचा समावेश आहे + +ही माहिती आम्हाला तुमचा अहवाल अधिक जलद प्रक्रियेसाठी मदत करेल. + +जर तुम्ही बग बाऊंटी साठी अहवाल देत असाल, तर अधिक संपूर्ण अहवाल उच्च बाऊंटी पुरस्कारासाठी योगदान देऊ शकतात. कृपया आमच्या [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) पृष्ठाला भेट द्या, जिथे आमच्या सक्रिय कार्यक्रमांबद्दल अधिक तपशील दिले आहेत. + +## प्राधान्यकृत भाषा + +आम्हाला सर्व संवाद इंग्रजीत असणे प्राधान्य आहे. + +## धोरण + +मायक्रोसॉफ्ट [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd) या तत्त्वाचे पालन करते. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/etc/CODE_OF_CONDUCT.md b/translations/mr/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..5fdfd5ff --- /dev/null +++ b/translations/mr/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Microsoft ओपन सोर्स आचारसंहिता + +या प्रकल्पाने [Microsoft ओपन सोर्स आचारसंहिता](https://opensource.microsoft.com/codeofconduct/) स्वीकारली आहे. + +स्रोत: + +- [Microsoft ओपन सोर्स आचारसंहिता](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft आचारसंहिता FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- प्रश्न किंवा चिंता असल्यास [opencode@microsoft.com](mailto:opencode@microsoft.com) वर संपर्क साधा + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/etc/CONTRIBUTING.md b/translations/mr/etc/CONTRIBUTING.md new file mode 100644 index 00000000..b43099e2 --- /dev/null +++ b/translations/mr/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# योगदान देणे + +या प्रकल्पात योगदान आणि सूचना स्वागतार्ह आहेत. बहुतेक योगदानांसाठी तुम्हाला Contributor License Agreement (CLA) सहमत होणे आवश्यक आहे, ज्यामध्ये तुम्ही जाहीर करता की तुम्हाला तुमचे योगदान वापरण्याचे अधिकार आहेत आणि तुम्ही आम्हाला ते अधिकार प्रत्यक्षात देत आहात. अधिक माहितीसाठी, https://cla.microsoft.com ला भेट द्या. + +जेव्हा तुम्ही एक pull request सबमिट करता, तेव्हा CLA-bot आपोआप ठरवेल की तुम्हाला CLA प्रदान करणे आवश्यक आहे का आणि PR योग्य प्रकारे सजवेल (उदा., लेबल, टिप्पणी). फक्त बॉटद्वारे दिलेल्या सूचनांचे अनुसरण करा. तुम्हाला हे फक्त एकदाच करावे लागेल, सर्व रिपॉझिटरीजसाठी जे आमच्या CLA वापरतात. + +या प्रकल्पाने [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) स्वीकारले आहे. अधिक माहितीसाठी [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) पहा किंवा [opencode@microsoft.com](mailto:opencode@microsoft.com) वर कोणतेही अतिरिक्त प्रश्न किंवा टिप्पण्या पाठवा. + +# योगदानासाठी शोधत आहोत + +आम्ही सध्या खालील विषयांवर सक्रियपणे योगदान शोधत आहोत: + +- [ ] डीप रिइन्फोर्समेंट लर्निंगवर विभाग लिहा +- [ ] ऑब्जेक्ट डिटेक्शनवरील विभाग + नोटबुक सुधारित करा +- [ ] PyTorch Lightning (या विभागासाठी [येथे](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Named Entity Recognition वर विभाग + नमुने लिहा +- [ ] [या विभागासाठी](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) आमच्या स्वतःच्या एम्बेडिंग्ज प्रशिक्षणासाठी नमुने तयार करा + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/etc/Mindmap.md b/translations/mr/etc/Mindmap.md new file mode 100644 index 00000000..f1a9c9c4 --- /dev/null +++ b/translations/mr/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# एआय (AI) + +## [एआयची ओळख](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - एआयची व्याख्या + - एआयचा इतिहास + - एआयकडे पाहण्याचे दृष्टिकोन + - टॉप-डाउन/सिंबॉलिक + - बॉटम-अप/न्यूरल + - उत्क्रांतीवादी + - सायनेर्जेटिक / उद्भवणारी एआय + - [मायक्रोसॉफ्ट एआय बिझनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [सिंबॉलिक एआय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - ज्ञानाचे प्रतिनिधित्व + - [एक्स्पर्ट सिस्टीम्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [ऑन्टोलॉजीज](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - सिमॅंटिक वेब + +## [न्यूरल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [पर्सेप्ट्रॉन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [मल्टी-लेयर्ड नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [फ्रेमवर्क्सची ओळख](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [ओव्हरफिटिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [कंप्युटर व्हिजन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - मायक्रोसॉफ्ट लर्नवर + - [एआय फंडामेंटल्स: कंप्युटर व्हिजन एक्सप्लोर करा](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [PyTorch सह कंप्युटर व्हिजन](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow सह कंप्युटर व्हिजन](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [कंप्युटर व्हिजनची ओळख. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [कन्फ्युलेशनल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [CNN आर्किटेक्चर्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [ट्रान्स्फर लर्निंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [ट्रेनिंग ट्रिक्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [ऑटोएन्कोडर्स आणि VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [जनरेटिव्ह अॅडव्हर्सेरियल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [स्टाइल ट्रान्स्फर](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [ऑब्जेक्ट डिटेक्शन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [सेगमेंटेशन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [नॅचरल लँग्वेज प्रोसेसिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - मायक्रोसॉफ्ट लर्नवर + - [एआय फंडामेंटल्स: NLP एक्सप्लोर करा](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorch सह NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow सह NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [टेक्स्टचे प्रतिनिधित्व](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - बॅग ऑफ वर्ड्स + - TF/IDF + - [सिमॅंटिक एम्बेडिंग्ज](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [भाषा मॉडेलिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [रिकरंट न्यूरल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [जनरेटिव्ह रिक्ररंट नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ट्रान्स्फॉर्मर्स आणि BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [नेम्ड एंटिटी रिकग्निशन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [टेक्स्ट जनरेशन आणि GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## इतर तंत्रज्ञान + - [जेनेटिक अल्गोरिदम्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [डीप रिइन्फोर्समेंट लर्निंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [मल्टी-एजंट सिस्टीम्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [एआय नीतिशास्त्र](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [जबाबदार एआयबद्दल मायक्रोसॉफ्ट लर्न](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## अतिरिक्त + - [मल्टीमोडल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/etc/SUPPORT.md b/translations/mr/etc/SUPPORT.md new file mode 100644 index 00000000..84862cb3 --- /dev/null +++ b/translations/mr/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# समर्थन + +## समस्या नोंदविणे आणि मदत कशी मिळवायची + +या प्रकल्पासाठी बग्स आणि फिचर विनंत्या ट्रॅक करण्यासाठी GitHub Issues चा वापर केला जातो. डुप्लिकेट्स टाळण्यासाठी नवीन समस्या नोंदविण्यापूर्वी विद्यमान समस्यांचा शोध घ्या. नवीन समस्यांसाठी, तुमचा बग किंवा फिचर विनंती नवीन Issue म्हणून नोंदवा. + +या प्रकल्पाचा वापर करण्याबद्दल मदत आणि प्रश्नांसाठी, कृपया Discussion Boards चा वापर करा. + +## Microsoft समर्थन धोरण + +या प्रकल्पासाठी समर्थन वरील सूचीबद्ध संसाधनांपुरते मर्यादित आहे. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/etc/TRANSLATIONS.md b/translations/mr/etc/TRANSLATIONS.md new file mode 100644 index 00000000..0398a0f0 --- /dev/null +++ b/translations/mr/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# पाठांचे भाषांतर करून योगदान द्या + +आम्ही या अभ्यासक्रमातील पाठांसाठी भाषांतरांचे स्वागत करतो! + +## मार्गदर्शक तत्त्वे + +प्रत्येक पाठाच्या फोल्डरमध्ये आणि पाठ परिचयाच्या फोल्डरमध्ये भाषांतरित markdown फाइल्स असतात. + +> लक्षात ठेवा, कृपया कोड नमुन्यांच्या फाइल्समधील कोडचे भाषांतर करू नका; फक्त README, assignments, आणि quizzes चे भाषांतर करा. धन्यवाद! + +भाषांतरित फाइल्स खालील नामकरण पद्धतीचे पालन कराव्यात: + +**README._[language]_.md** + +जिथे _[language]_ ही ISO 639-1 मानकानुसार दोन अक्षरांची भाषा संक्षेप आहे (उदा. `README.es.md` स्पॅनिशसाठी आणि `README.nl.md` डचसाठी). + +**assignment._[language]_.md** + +README प्रमाणेच, कृपया assignments चेही भाषांतर करा. + +**Quizzes** + +1. quiz-app मध्ये आपले भाषांतर जोडण्यासाठी येथे फाइल जोडा: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, योग्य नामकरण पद्धतीसह (उदा. en.json, fr.json). **कृपया 'true' किंवा 'false' शब्दांचे स्थानिकीकरण करू नका. धन्यवाद!** + +2. quiz-app च्या App.vue फाइलमध्ये dropdown मध्ये आपली भाषा कोड जोडा. + +3. quiz-app च्या [translations index.js file](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) संपादित करून आपली भाषा जोडा. + +4. शेवटी, आपल्या भाषांतरित README.md फाइल्समधील सर्व quiz लिंक संपादित करा जेणेकरून त्या थेट आपल्या भाषांतरित quiz कडे निर्देशित होतील: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 हे https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id असे करा. + +**धन्यवाद** + +आम्ही आपल्या प्रयत्नांचे खरोखरच कौतुक करतो! + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/etc/quiz-app/README.md b/translations/mr/etc/quiz-app/README.md new file mode 100644 index 00000000..097fab13 --- /dev/null +++ b/translations/mr/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# क्विझेस + +ही क्विझेस AI अभ्यासक्रमासाठीच्या पूर्व आणि पश्चात व्याख्यानांसाठी आहेत: https://aka.ms/ai-beginners + +## भाषांतरित क्विझ सेट जोडणे + +भाषांतरित क्विझ जोडण्यासाठी, `assets/translations` फोल्डरमध्ये संबंधित क्विझ संरचना तयार करा. मूळ क्विझेस `assets/translations/en` मध्ये आहेत. क्विझेस धड्यांनुसार वेगवेगळ्या गटांमध्ये विभागलेल्या आहेत. योग्य क्विझ विभागाशी क्रमांक जुळवणे सुनिश्चित करा. या अभ्यासक्रमात एकूण 40 क्विझेस आहेत, ज्यांची क्रमांकवारी 0 पासून सुरू होते. + +भाषांतर संपादित केल्यानंतर, भाषांतर फोल्डरमधील `index.js` फाइल संपादित करा आणि `en` मधील पद्धतींचे अनुसरण करून सर्व फाइल्स आयात करा. + +`assets/translations` मधील `index.js` फाइल संपादित करा आणि नवीन भाषांतरित फाइल्स आयात करा. + +यानंतर, या अॅपमधील `App.vue` मधील ड्रॉपडाउन संपादित करा आणि तुमची भाषा जोडा. स्थानिक संक्षेप फोल्डरच्या नावाशी जुळवा. + +शेवटी, भाषांतरित धड्यांमधील सर्व क्विझ लिंक्स संपादित करा (जर त्या अस्तित्वात असतील) आणि त्यामध्ये स्थानिकीकरण क्वेरी पॅरामीटर जोडा: उदाहरणार्थ, `?loc=fr`. + +## प्रकल्प सेटअप + +``` +npm install +``` + +### विकासासाठी संकलन आणि हॉट-रीलोड + +``` +npm run serve +``` + +### उत्पादनासाठी संकलन आणि संक्षेप + +``` +npm run build +``` + +### फाइल्स तपासा आणि दुरुस्त्या करा + +``` +npm run lint +``` + +### कॉन्फिगरेशन सानुकूलित करा + +[कॉन्फिगरेशन संदर्भ](https://cli.vuejs.org/config/) पहा. + +क्रेडिट्स: या क्विझ अॅपच्या मूळ आवृत्तीसाठी धन्यवाद: https://github.com/arpan45/simple-quiz-vue + +## Azure वर डिप्लॉय करणे + +येथे सुरुवात करण्यासाठी चरण-दर-चरण मार्गदर्शिका दिली आहे: + +1. GitHub रेपॉजिटरी फोर्क करा +तुमचा स्थिर वेब अॅप कोड तुमच्या GitHub रेपॉजिटरीमध्ये आहे याची खात्री करा. ही रेपॉजिटरी फोर्क करा. + +2. Azure Static Web App तयार करा +- [Azure खाते](http://azure.microsoft.com) तयार करा +- [Azure पोर्टल](https://portal.azure.com) वर जा +- “Create a resource” वर क्लिक करा आणि “Static Web App” शोधा. +- “Create” वर क्लिक करा. + +3. Static Web App कॉन्फिगर करा +- #### मूलभूत: + - Subscription: तुमची Azure सदस्यता निवडा. + - Resource Group: नवीन संसाधन गट तयार करा किंवा विद्यमान गट वापरा. + - Name: तुमच्या स्थिर वेब अॅपसाठी नाव द्या. + - Region: तुमच्या वापरकर्त्यांच्या जवळचा प्रदेश निवडा. + +- #### डिप्लॉयमेंट तपशील: + - Source: “GitHub” निवडा. + - GitHub Account: Azure ला तुमच्या GitHub खात्याचा प्रवेश अधिकृत करा. + - Organization: तुमची GitHub संस्था निवडा. + - Repository: तुमचा स्थिर वेब अॅप असलेली रेपॉजिटरी निवडा. + - Branch: ज्या शाखेतून तुम्हाला डिप्लॉय करायचे आहे ती निवडा. + +- #### बिल्ड तपशील: + - Build Presets: तुमचा अॅप ज्या फ्रेमवर्कसह तयार केला आहे ते निवडा (उदा., React, Angular, Vue, इ.). + - App Location: तुमच्या अॅप कोड असलेल्या फोल्डरचे स्थान निर्दिष्ट करा (उदा., / जर तो मूळ फोल्डरमध्ये असेल). + - API Location: जर तुमच्याकडे API असेल, तर त्याचे स्थान निर्दिष्ट करा (पर्यायी). + - Output Location: बिल्ड आउटपुट जिथे तयार होतो तो फोल्डर निर्दिष्ट करा (उदा., build किंवा dist). + +4. पुनरावलोकन आणि तयार करा +तुमच्या सेटिंग्ज पुनरावलोकन करा आणि “Create” वर क्लिक करा. Azure आवश्यक संसाधने सेटअप करेल आणि तुमच्या रेपॉजिटरीमध्ये GitHub Actions वर्कफ्लो तयार करेल. + +5. GitHub Actions वर्कफ्लो +Azure तुमच्या रेपॉजिटरीमध्ये GitHub Actions वर्कफ्लो फाइल आपोआप तयार करेल (.github/workflows/azure-static-web-apps-.yml). हा वर्कफ्लो बिल्ड आणि डिप्लॉयमेंट प्रक्रिया हाताळेल. + +6. डिप्लॉयमेंट मॉनिटर करा +तुमच्या GitHub रेपॉजिटरीमधील “Actions” टॅबवर जा. +तुम्हाला वर्कफ्लो चालू असल्याचे दिसेल. हा वर्कफ्लो तुमचा स्थिर वेब अॅप Azure वर बिल्ड आणि डिप्लॉय करेल. +वर्कफ्लो पूर्ण झाल्यावर, तुमचा अॅप प्रदान केलेल्या Azure URL वर लाइव्ह असेल. + +### वर्कफ्लो फाइलचे उदाहरण + +GitHub Actions वर्कफ्लो फाइल कशी दिसू शकते याचे उदाहरण येथे आहे: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### अतिरिक्त संसाधने +- [Azure Static Web Apps दस्तऐवज](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions दस्तऐवज](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने ग्रस्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/0-course-setup/for-teachers.md b/translations/mr/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..820b6407 --- /dev/null +++ b/translations/mr/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# शिक्षकांसाठी + +तुम्हाला हा अभ्यासक्रम तुमच्या वर्गात वापरायचा आहे का? कृपया जरूर वापरा! + +खरं तर, तुम्ही GitHub Classroom वापरून GitHub वरच हा अभ्यासक्रम वापरू शकता. + +त्यासाठी, या रेपोला फोर्क करा. तुम्हाला प्रत्येक धड्यासाठी एक रेपो तयार करावा लागेल, त्यामुळे तुम्हाला प्रत्येक फोल्डर वेगळ्या रेपोमध्ये काढावा लागेल. अशा प्रकारे, [GitHub Classroom](https://classroom.github.com/classrooms) प्रत्येक धडा स्वतंत्रपणे उचलू शकेल. + +या [संपूर्ण सूचना](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) तुम्हाला तुमचा वर्ग कसा सेटअप करायचा याची कल्पना देतील. + +## रेपो तसाच वापरणे + +जर तुम्हाला GitHub Classroom न वापरता हा रेपो सध्याच्या स्वरूपात वापरायचा असेल, तर तेही शक्य आहे. तुम्हाला तुमच्या विद्यार्थ्यांशी संवाद साधून कोणता धडा एकत्रितपणे शिकायचा आहे ते सांगावे लागेल. + +ऑनलाइन स्वरूपात (Zoom, Teams किंवा इतर) तुम्ही क्विझसाठी ब्रेकआउट रूम तयार करू शकता आणि विद्यार्थ्यांना शिकण्यासाठी तयार होण्यासाठी मार्गदर्शन करू शकता. त्यानंतर विद्यार्थ्यांना क्विझसाठी आमंत्रित करा आणि ठरलेल्या वेळेत त्यांची उत्तरे 'issues' म्हणून सबमिट करण्यास सांगा. जर तुम्हाला विद्यार्थ्यांनी सार्वजनिकपणे एकत्रितपणे काम करावे असे वाटत असेल, तर तुम्ही असाइनमेंटसाठीही हेच करू शकता. + +जर तुम्हाला अधिक खाजगी स्वरूप आवडत असेल, तर विद्यार्थ्यांना अभ्यासक्रम, धडा दर धडा, त्यांच्या स्वतःच्या GitHub रेपोमध्ये खाजगी रेपो म्हणून फोर्क करण्यास सांगा आणि तुम्हाला प्रवेश द्या. त्यानंतर ते क्विझ आणि असाइनमेंट खाजगीपणे पूर्ण करू शकतात आणि तुमच्या वर्गाच्या रेपोवर issues द्वारे तुम्हाला सबमिट करू शकतात. + +ऑनलाइन वर्गाच्या स्वरूपात हे कार्य करण्याचे अनेक मार्ग आहेत. कृपया आम्हाला तुमच्यासाठी काय सर्वोत्तम कार्य करते ते सांगा! + +## कृपया तुमचे विचार सांगा + +आम्हाला हा अभ्यासक्रम तुमच्यासाठी आणि तुमच्या विद्यार्थ्यांसाठी उपयुक्त बनवायचा आहे. कृपया चर्चासत्रांमध्ये आम्हाला अभिप्राय द्या! + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/0-course-setup/how-to-run.md b/translations/mr/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..dfa1f24e --- /dev/null +++ b/translations/mr/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# कोड कसा चालवायचा + +या अभ्यासक्रमामध्ये तुम्हाला चालवता येतील असे अनेक उदाहरणे आणि प्रयोगशाळा आहेत, जे तुम्हाला चालवायचे असतील. हे करण्यासाठी, तुम्हाला या अभ्यासक्रमाचा भाग म्हणून दिलेले Jupyter Notebooks मध्ये Python कोड चालवण्याची क्षमता असणे आवश्यक आहे. कोड चालवण्यासाठी तुम्हाला काही पर्याय उपलब्ध आहेत: + +## तुमच्या संगणकावर स्थानिकरित्या चालवा + +कोड तुमच्या संगणकावर स्थानिकरित्या चालवण्यासाठी, तुमच्याकडे Python ची काही आवृत्ती स्थापित असणे आवश्यक आहे. मी वैयक्तिकरित्या **[miniconda](https://conda.io/en/latest/miniconda.html)** स्थापित करण्याची शिफारस करतो - हे एक हलके इंस्टॉलेशन आहे जे `conda` पॅकेज मॅनेजरला विविध Python **virtual environments** साठी समर्थन देते. + +miniconda स्थापित केल्यानंतर, तुम्हाला रेपॉजिटरी क्लोन करावी लागेल आणि या अभ्यासक्रमासाठी वापरण्यासाठी एक virtual environment तयार करावी लागेल: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Visual Studio Code आणि Python Extension वापरणे + +अभ्यासक्रमाचा सर्वोत्तम उपयोग करण्याचा मार्ग म्हणजे [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) आणि [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) वापरून तो उघडणे. + +> **Note**: एकदा तुम्ही रेपॉजिटरी क्लोन करून VS Code मध्ये उघडल्यावर, ते तुम्हाला Python extensions स्थापित करण्याची सूचना देईल. तुम्हाला वर वर्णन केल्याप्रमाणे miniconda देखील स्थापित करावे लागेल. + +> **Note**: जर VS Code तुम्हाला रेपॉजिटरी कंटेनरमध्ये पुन्हा उघडण्याची सूचना देत असेल, तर तुम्हाला स्थानिक Python इंस्टॉलेशन वापरण्यासाठी हे नाकारावे लागेल. + +### ब्राउझरमध्ये Jupyter वापरणे + +तुमच्या संगणकावरून थेट ब्राउझरमध्ये Jupyter environment वापरू शकता. प्रत्यक्षात, classical Jupyter आणि Jupyter Hub दोन्ही ऑटो-कम्प्लिशन, कोड हायलाइटिंग इत्यादीसह सोयीस्कर विकास वातावरण प्रदान करतात. + +Jupyter स्थानिकरित्या सुरू करण्यासाठी, अभ्यासक्रमाच्या डिरेक्टरीमध्ये जा आणि खालीलप्रमाणे चालवा: + +```bash +jupyter notebook +``` +किंवा +```bash +jupyterhub +``` +यानंतर तुम्ही कोणत्याही `.ipynb` फाइल्सकडे जाऊ शकता, ती उघडू शकता आणि काम सुरू करू शकता. + +### कंटेनरमध्ये चालवणे + +Python इंस्टॉलेशनचा एक पर्याय म्हणजे कोड कंटेनरमध्ये चालवणे. आमच्या रेपॉजिटरीमध्ये `.devcontainer` फोल्डर आहे जो या रेपॉजिटरीसाठी कंटेनर कसा तयार करायचा याचे निर्देश देतो, त्यामुळे VS Code तुम्हाला कोड कंटेनरमध्ये पुन्हा उघडण्याची ऑफर देईल. यासाठी Docker इंस्टॉलेशन आवश्यक आहे आणि हे अधिक क्लिष्ट असेल, त्यामुळे आम्ही हे अधिक अनुभवी वापरकर्त्यांसाठी शिफारस करतो. + +## क्लाउडमध्ये चालवणे + +जर तुम्हाला Python स्थानिकरित्या स्थापित करायचे नसेल आणि काही क्लाउड संसाधनांमध्ये प्रवेश असेल - तर कोड क्लाउडमध्ये चालवणे हा एक चांगला पर्याय असेल. तुम्ही हे करण्यासाठी काही मार्ग वापरू शकता: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** वापरणे, जे GitHub वर तुमच्यासाठी तयार केलेले virtual environment आहे, जे VS Code ब्राउझर इंटरफेसद्वारे प्रवेशयोग्य आहे. जर तुम्हाला Codespaces मध्ये प्रवेश असेल, तर तुम्ही रेपॉजिटरीवरील **Code** बटणावर क्लिक करू शकता, Codespace सुरू करू शकता आणि लगेच चालवू शकता. +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** वापरणे. [Binder](https://mybinder.org) हे क्लाउडमध्ये विनामूल्य संगणकीय संसाधने प्रदान करते, जे तुम्हाला GitHub वर काही कोड चाचणीसाठी वापरता येतील. मुख्य पृष्ठावर रेपॉजिटरी Binder मध्ये उघडण्यासाठी एक बटण आहे - हे तुम्हाला Binder साइटवर जलदपणे नेईल, जे अंतर्गत कंटेनर तयार करेल आणि Jupyter वेब इंटरफेस सुरळीतपणे सुरू करेल. + +> **Note**: गैरवापर टाळण्यासाठी, Binder काही वेब संसाधनांमध्ये प्रवेश अवरोधित करते. यामुळे काही कोड कार्य करणे थांबू शकते, जे सार्वजनिक इंटरनेटवरून मॉडेल्स आणि/किंवा डेटासेट आणते. तुम्हाला काही पर्याय शोधावे लागतील. तसेच, Binder द्वारे प्रदान केलेले संगणकीय संसाधने खूप मूलभूत आहेत, त्यामुळे प्रशिक्षण हळू होईल, विशेषतः नंतरच्या अधिक जटिल धड्यांमध्ये. + +## GPU सह क्लाउडमध्ये चालवणे + +या अभ्यासक्रमातील काही नंतरचे धडे GPU समर्थनाचा मोठ्या प्रमाणावर फायदा घेतील, कारण अन्यथा प्रशिक्षण खूपच संथ होईल. तुम्ही काही पर्याय अनुसरू शकता, विशेषतः जर तुम्हाला [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) किंवा तुमच्या संस्थेद्वारे क्लाउडमध्ये प्रवेश असेल: + +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) तयार करा आणि Jupyter द्वारे त्याला कनेक्ट करा. तुम्ही नंतर रेपॉजिटरी थेट मशीनवर क्लोन करू शकता आणि शिकणे सुरू करू शकता. NC-series VMs मध्ये GPU समर्थन आहे. + +> **Note**: काही सबस्क्रिप्शन, ज्यामध्ये Azure for Students समाविष्ट आहे, GPU समर्थन डिफॉल्टने प्रदान करत नाहीत. तुम्हाला तांत्रिक समर्थन विनंतीद्वारे अतिरिक्त GPU कोरची विनंती करावी लागेल. + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) तयार करा आणि तेथील Notebook फीचर वापरा. [हा व्हिडिओ](https://azure-for-academics.github.io/quickstart/azureml-papers/) Azure ML Notebook मध्ये रेपॉजिटरी कसे क्लोन करायचे आणि वापरण्यास सुरुवात कशी करायची हे दाखवतो. + +तुम्ही Google Colab देखील वापरू शकता, ज्यामध्ये काही विनामूल्य GPU समर्थन आहे, आणि Jupyter Notebooks तेथे अपलोड करून एक-एक करून चालवू शकता. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने ग्रस्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/0-course-setup/setup.md b/translations/mr/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..0037c88c --- /dev/null +++ b/translations/mr/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# या अभ्यासक्रमासह सुरुवात करा + +## तुम्ही विद्यार्थी आहात का? + +खालील संसाधनांसह सुरुवात करा: + +* [विद्यार्थी हब पृष्ठ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) या पृष्ठावर तुम्हाला सुरुवातीच्या स्तरावरील संसाधने, विद्यार्थी पॅक्स, आणि अगदी मोफत प्रमाणपत्र वाउचर मिळवण्याचे मार्ग सापडतील. हे पृष्ठ बुकमार्क करा आणि वेळोवेळी तपासा कारण आम्ही दर महिन्याला सामग्री बदलतो. +* [Microsoft Student Learn ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) जागतिक विद्यार्थी अॅम्बेसेडर समुदायात सामील व्हा, हे Microsoft मध्ये प्रवेश करण्याचा तुमचा मार्ग असू शकतो. + +**विद्यार्थ्यांनो**, अभ्यासक्रमाचा वापर करण्याचे काही मार्ग आहेत. सर्वप्रथम, तुम्ही GitHub वर थेट मजकूर व कोड पाहू शकता. जर तुम्हाला नोटबुकमधील कोड चालवायचा असेल - [आमच्या सूचना वाचा](./etc/how-to-run.md), आणि ते कसे करायचे याबद्दल अधिक सल्ला [या ब्लॉग पोस्टमध्ये](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) मिळवा. + +> **Note**: [या अभ्यासक्रमातील कोड कसा चालवायचा यावरील सूचना](./how-to-run.md) + +## स्व-अभ्यास + +तथापि, जर तुम्हाला हा अभ्यासक्रम स्व-अभ्यास प्रकल्प म्हणून घ्यायचा असेल, तर आम्ही सुचवतो की तुम्ही संपूर्ण रेपो तुमच्या स्वतःच्या GitHub खात्यावर फोर्क करा आणि स्वतः किंवा गटासह सराव करा: + +* व्याख्यानापूर्वीचा क्विझ सुरू करा. +* व्याख्यानासाठी परिचय मजकूर वाचा. +* जर व्याख्यानामध्ये अतिरिक्त नोटबुक्स असतील, तर ते वाचा आणि कोड चालवा. TensorFlow आणि PyTorch दोन्ही नोटबुक्स दिले असतील, तर तुम्ही तुमच्या आवडत्या फ्रेमवर्कवर लक्ष केंद्रित करू शकता. +* नोटबुक्समध्ये अनेकदा काही आव्हाने असतात ज्यामध्ये तुम्हाला कोड थोडासा बदलून प्रयोग करावा लागतो. +* व्याख्यानानंतरचा क्विझ घ्या. +* जर मॉड्यूलसह प्रयोगशाळा जोडलेली असेल - तर असाइनमेंट पूर्ण करा. +* [चर्चा फोरम](https://github.com/microsoft/AI-For-Beginners/discussions) ला भेट द्या आणि "शिकण्याचा अनुभव सामायिक करा". + +> पुढील अभ्यासासाठी, आम्ही [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) मधील मॉड्यूल्स आणि शिकण्याचे मार्ग अनुसरण करण्याची शिफारस करतो. + +**शिक्षकांनो**, आम्ही [काही सूचना दिल्या आहेत](/for-teachers.md) की हा अभ्यासक्रम कसा वापरायचा. + +--- + +## अध्यापन पद्धती + +हा अभ्यासक्रम तयार करताना आम्ही दोन अध्यापन तत्त्वे निवडली आहेत: हे **प्रकल्प-आधारित** आणि **वारंवार क्विझेस** समाविष्ट करणारे असल्याची खात्री करणे. + +सामग्री प्रकल्पांशी संरेखित असल्याने, प्रक्रिया विद्यार्थ्यांसाठी अधिक आकर्षक बनते आणि संकल्पनांची आठवण अधिक चांगली राहते. याशिवाय, वर्गापूर्वीचा कमी दबावाचा क्विझ विद्यार्थ्याला विषय शिकण्याच्या दिशेने प्रेरित करतो, तर वर्गानंतरचा क्विझ अधिक चांगल्या आठवणीसाठी मदत करतो. हा अभ्यासक्रम लवचिक आणि मजेदार बनविण्यासाठी डिझाइन केला गेला आहे आणि तो पूर्ण किंवा अंशतः घेतला जाऊ शकतो. प्रकल्प लहान स्वरूपात सुरू होतात आणि 12 आठवड्यांच्या चक्राच्या शेवटी अधिकाधिक गुंतागुंतीचे होतात. + +> **क्विझेसबद्दल एक टीप**: सर्व क्विझेस [या अॅपमध्ये](https://red-field-0a6ddfd03.1.azurestaticapps.net/) समाविष्ट आहेत, ज्यामध्ये प्रत्येकी तीन प्रश्नांसह एकूण 50 क्विझेस आहेत. ते धड्यांमधून लिंक केलेले आहेत, परंतु क्विझ अॅप स्थानिक पातळीवर चालवले जाऊ शकते; `etc/quiz-app` फोल्डरमधील सूचनांचे अनुसरण करा. + +## ऑफलाइन प्रवेश + +तुम्ही [Docsify](https://docsify.js.org/#/) वापरून ही दस्तऐवज ऑफलाइन चालवू शकता. हा रेपो फोर्क करा, तुमच्या स्थानिक मशीनवर [Docsify स्थापित करा](https://docsify.js.org/#/quickstart), आणि नंतर या रेपोच्या मूळ फोल्डरमध्ये `docsify serve` टाइप करा. वेबसाइट तुमच्या लोकलहोस्टवर पोर्ट 3000 वर चालवली जाईल: `localhost:3000`. अभ्यासक्रमाचा पीडीएफ [या लिंकवर](../../../../lessons/0-course-setup/etc/pdf/readme.pdf) उपलब्ध आहे. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/1-Intro/README.md b/translations/mr/lessons/1-Intro/README.md new file mode 100644 index 00000000..ab572f26 --- /dev/null +++ b/translations/mr/lessons/1-Intro/README.md @@ -0,0 +1,162 @@ + +# AI ची ओळख + +![AI ची ओळख यावरील मजकूराचा डूडल सारांश](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.mr.png) + +> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) यांच्याकडून + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**कृत्रिम बुद्धिमत्ता** ही एक रोमांचक वैज्ञानिक शाखा आहे जी संगणकांना बुद्धिमान वर्तन दाखविण्यासाठी कसे तयार करता येईल याचा अभ्यास करते, जसे की माणसांना सहज करता येणाऱ्या गोष्टी. + +मुळात, संगणकांची निर्मिती [चार्ल्स बॅबेज](https://en.wikipedia.org/wiki/Charles_Babbage) यांनी विशिष्ट पद्धतीने - म्हणजेच अल्गोरिदमच्या आधारे - संख्यांवर प्रक्रिया करण्यासाठी केली होती. आधुनिक संगणक, जरी 19व्या शतकातील मूळ मॉडेलपेक्षा खूप प्रगत असले तरी, अजूनही नियंत्रित गणनांच्या त्याच कल्पनेचे अनुसरण करतात. त्यामुळे, जर आपल्याला एखादे कार्य साध्य करण्यासाठी आवश्यक असलेल्या अचूक पायऱ्यांची मालिका माहित असेल, तर संगणकाला ते कार्य करण्यासाठी प्रोग्राम करता येते. + +![एका व्यक्तीचा फोटो](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.mr.png) + +> फोटो [Vickie Soshnikova](http://twitter.com/vickievalerie) यांच्याकडून + +> ✅ एखाद्या व्यक्तीच्या छायाचित्रावरून त्याचे वय निश्चित करणे हे असे कार्य आहे जे स्पष्टपणे प्रोग्राम केले जाऊ शकत नाही, कारण आपण ते कसे करतो हे आपल्याला माहित नसते. + +--- + +काही कार्ये अशी असतात जी सोडवायची पद्धत आपल्याला स्पष्टपणे माहित नसते. उदाहरणार्थ, एखाद्या व्यक्तीच्या छायाचित्रावरून त्याचे वय निश्चित करणे. आपण हे कसे करतो हे स्पष्टपणे सांगू शकत नाही, परंतु आपण अनेक वयोगटातील लोकांचे उदाहरण पाहून ते शिकतो. संगणकाला हे कार्य प्रोग्राम करणे शक्य नाही. हीच ती कार्ये आहेत ज्यामध्ये **कृत्रिम बुद्धिमत्ता** (AI) रस घेते. + +✅ अशा काही कार्यांचा विचार करा जे संगणकावर सोपवले जाऊ शकतात आणि ज्यामुळे AI चा फायदा होईल. वित्त, वैद्यकीय क्षेत्र आणि कला यांसारख्या क्षेत्रांमध्ये AI चा आज कसा फायदा होत आहे? + +## कमजोर AI विरुद्ध मजबूत AI + +कमजोर AI | मजबूत AI +---------------------------------------|------------------------------------- +कमजोर AI म्हणजे विशिष्ट कार्य किंवा मर्यादित कार्यांसाठी डिझाइन आणि प्रशिक्षित केलेली AI प्रणाली. | मजबूत AI, किंवा कृत्रिम सामान्य बुद्धिमत्ता (AGI), म्हणजे मानवी-स्तरीय बुद्धिमत्ता आणि समज असलेली AI प्रणाली. +या AI प्रणाली सामान्यतः बुद्धिमान नसतात; त्या पूर्वनिर्धारित कार्यात उत्कृष्ट असतात परंतु त्यांना खऱ्या अर्थाने समज किंवा जाणीव नसते. | या AI प्रणालींमध्ये मानवी बुद्धिमत्तेप्रमाणे कोणतेही बौद्धिक कार्य करण्याची, वेगवेगळ्या क्षेत्रांमध्ये जुळवून घेण्याची आणि जाणीव किंवा आत्म-जाणीव असण्याची क्षमता असते. +कमजोर AI चे उदाहरण म्हणजे Siri किंवा Alexa सारखे आभासी सहाय्यक, स्ट्रीमिंग सेवांद्वारे वापरले जाणारे शिफारस अल्गोरिदम, आणि विशिष्ट ग्राहक सेवा कार्यांसाठी डिझाइन केलेले चॅटबॉट्स. | मजबूत AI साध्य करणे हे AI संशोधनाचे दीर्घकालीन उद्दिष्ट आहे आणि यासाठी अशा AI प्रणालींच्या विकासाची आवश्यकता आहे ज्या विविध कार्ये आणि संदर्भांमध्ये तर्क, शिकणे, समजणे आणि जुळवून घेऊ शकतात. +कमजोर AI अत्यंत विशिष्ट असते आणि त्यात मानवी-प्रमाणे संज्ञानात्मक क्षमता किंवा मर्यादित क्षेत्राच्या पलीकडे सामान्य समस्या सोडवण्याची क्षमता नसते. | मजबूत AI सध्या एक सैद्धांतिक संकल्पना आहे आणि कोणतीही AI प्रणाली या सामान्य बुद्धिमत्तेच्या पातळीवर पोहोचलेली नाही. + +अधिक माहितीसाठी **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) पहा. + +## बुद्धिमत्तेची व्याख्या आणि ट्यूरिंग चाचणी + +**[बुद्धिमत्ता](https://en.wikipedia.org/wiki/Intelligence)** या संज्ञेशी संबंधित एक समस्या म्हणजे या संज्ञेची स्पष्ट व्याख्या नाही. काहीजण म्हणू शकतात की बुद्धिमत्ता **सार्वत्रिक विचारांशी** किंवा **स्वतःच्या जाणीवेशी** संबंधित आहे, परंतु आपण याची योग्य व्याख्या करू शकत नाही. + +![मांजरीचा फोटो](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.mr.jpg) + +> [फोटो](https://unsplash.com/photos/75715CVEJhI) [Amber Kipp](https://unsplash.com/@sadmax) यांच्याकडून Unsplash वरून + +*बुद्धिमत्ता* या संज्ञेच्या अस्पष्टतेचे उदाहरण पाहण्यासाठी, "मांजर बुद्धिमान आहे का?" या प्रश्नाचे उत्तर द्या. वेगवेगळ्या लोकांकडून वेगवेगळी उत्तरे मिळू शकतात, कारण हे सत्य आहे की नाही हे सिद्ध करण्यासाठी कोणतीही सार्वत्रिक चाचणी नाही. आणि जर तुम्हाला वाटत असेल की आहे - तर तुमच्या मांजराला IQ चाचणी देऊन पहा... + +✅ एक मिनिट विचार करा की तुम्ही बुद्धिमत्तेची व्याख्या कशी करता. एक कावळा जो भुलभुलैयातून मार्ग काढून अन्न मिळवतो तो बुद्धिमान आहे का? एक मूल बुद्धिमान आहे का? + +--- + +AGI बद्दल बोलताना, आपल्याला काहीतरी खरोखर बुद्धिमान प्रणाली तयार केली आहे की नाही हे सांगण्याचा काही मार्ग असणे आवश्यक आहे. [अलन ट्यूरिंग](https://en.wikipedia.org/wiki/Alan_Turing) यांनी **[ट्यूरिंग चाचणी](https://en.wikipedia.org/wiki/Turing_test)** नावाचा एक मार्ग सुचवला, जो बुद्धिमत्तेची व्याख्या म्हणूनही काम करतो. चाचणी दिलेल्या प्रणालीची तुलना काहीतरी मूळ बुद्धिमान गोष्टीशी - म्हणजेच खऱ्या माणसाशी करते. कारण कोणतीही स्वयंचलित तुलना संगणक प्रोग्रामद्वारे बायपास केली जाऊ शकते, म्हणून आपण मानवी परीक्षकाचा वापर करतो. जर एखाद्या व्यक्तीला मजकूर-आधारित संवादात खऱ्या व्यक्ती आणि संगणक प्रणाली यामध्ये फरक करता आला नाही, तर ती प्रणाली बुद्धिमान मानली जाते. + +> [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) नावाच्या एका चॅटबॉटने, जो सेंट पीटर्सबर्गमध्ये विकसित करण्यात आला, 2014 मध्ये ट्यूरिंग चाचणी जवळपास पास केली. त्याने स्वतःला 13 वर्षांचा युक्रेनियन मुलगा असल्याचे सांगितले, ज्यामुळे ज्ञानाच्या अभावाचे आणि मजकूरातील विसंगतींचे स्पष्टीकरण मिळाले. या बॉटने 30% परीक्षकांना 5 मिनिटांच्या संवादानंतर तो माणूस असल्याचे पटवून दिले, ही एक अशी मेट्रिक आहे जी ट्यूरिंगने 2000 पर्यंत संगणक प्रणालीने साध्य करावी अशी अपेक्षा केली होती. तथापि, याचा अर्थ असा नाही की आपण बुद्धिमान प्रणाली तयार केली आहे किंवा संगणक प्रणालीने मानवी परीक्षकाला फसवले आहे - प्रणालीने माणसांना फसवले नाही, तर बॉट निर्मात्यांनी फसवले! + +✅ तुम्हाला कधी चॅटबॉटने माणसाशी बोलत असल्याचा भास झाला आहे का? त्याने तुम्हाला कसे पटवले? + +## AI कडे जाण्याचे वेगवेगळे दृष्टिकोन + +जर आपल्याला संगणकाला माणसासारखे वागवायचे असेल, तर आपल्याला संगणकामध्ये आपल्या विचार करण्याच्या पद्धतीचे काहीसे मॉडेल तयार करावे लागेल. परिणामी, आपल्याला हे समजून घेण्याचा प्रयत्न करावा लागेल की माणूस बुद्धिमान कसा बनतो. + +> मशीनमध्ये बुद्धिमत्ता प्रोग्राम करण्यासाठी, आपल्याला आपल्या स्वतःच्या निर्णय घेण्याच्या प्रक्रियेचे कार्य कसे चालते हे समजून घ्यावे लागेल. जर तुम्ही स्वतःचा थोडा विचार केला, तर तुम्हाला लक्षात येईल की काही प्रक्रिया उपसचेतनपणे घडतात – उदा. आपण मांजर आणि कुत्र्याला विचार न करता वेगळे करू शकतो - तर काही इतर प्रक्रिया तर्कावर आधारित असतात. + +या समस्येचे दोन संभाव्य दृष्टिकोन आहेत: + +टॉप-डाउन दृष्टिकोन (प्रतीकात्मक तर्क) | बॉटम-अप दृष्टिकोन (न्यूरल नेटवर्क्स) +---------------------------------------|------------------------------------- +टॉप-डाउन दृष्टिकोन समस्येचे निराकरण करण्यासाठी व्यक्ती कसा विचार करतो याचे मॉडेल तयार करतो. यामध्ये मानवीकडून **ज्ञान** काढणे आणि ते संगणक-वाचनीय स्वरूपात सादर करणे समाविष्ट आहे. आपल्याला संगणकामध्ये **तर्क** मॉडेल करण्याचा मार्ग देखील विकसित करावा लागेल. | बॉटम-अप दृष्टिकोन मानवी मेंदूच्या संरचनेचे मॉडेल तयार करतो, ज्यामध्ये **न्यूरॉन्स** नावाच्या साध्या घटकांचा समावेश असतो. प्रत्येक न्यूरॉन त्याच्या इनपुट्सचा भारित सरासरीसारखा कार्य करतो आणि आम्ही **प्रशिक्षण डेटा** प्रदान करून न्यूरॉन्सच्या नेटवर्कला उपयुक्त समस्या सोडवण्यासाठी प्रशिक्षित करू शकतो. + +बुद्धिमत्तेसाठी इतर काही दृष्टिकोन देखील आहेत: + +* **उत्पन्न**, **सिनर्जेटिक** किंवा **मल्टी-एजंट दृष्टिकोन** यावर आधारित आहे की अनेक साध्या घटकांच्या परस्परसंवादामुळे जटिल बुद्धिमान वर्तन प्राप्त होऊ शकते. [Evolutionary Cybernetics](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) नुसार, बुद्धिमत्ता अधिक साध्या, प्रतिक्रियात्मक वर्तनातून *मेटासिस्टम ट्रांझिशन* प्रक्रियेतून *उत्पन्न* होऊ शकते. + +* **उत्क्रांतीवादी दृष्टिकोन**, किंवा **जेनेटिक अल्गोरिदम** हा उत्क्रांतीच्या तत्त्वांवर आधारित एक ऑप्टिमायझेशन प्रक्रिया आहे. + +या दृष्टिकोनांचा आपण नंतर अभ्यास करू, परंतु सध्या आपण दोन मुख्य दिशांवर लक्ष केंद्रित करू: टॉप-डाउन आणि बॉटम-अप. + +### टॉप-डाउन दृष्टिकोन + +**टॉप-डाउन दृष्टिकोनात**, आपण आपल्या तर्कशक्तीचे मॉडेल तयार करण्याचा प्रयत्न करतो. कारण आपण तर्क करताना आपल्या विचारांचे अनुसरण करू शकतो, त्यामुळे आपण या प्रक्रियेचे औपचारिककरण करून ते संगणकामध्ये प्रोग्राम करण्याचा प्रयत्न करू शकतो. याला **प्रतीकात्मक तर्क** म्हणतात. + +लोकांच्या डोक्यात काही नियम असतात जे त्यांच्या निर्णय प्रक्रियांचे मार्गदर्शन करतात. उदाहरणार्थ, जेव्हा डॉक्टर एखाद्या रुग्णाचे निदान करत असतो, तेव्हा त्याला कदाचित लक्षात येते की व्यक्तीला ताप आहे, त्यामुळे शरीरात काहीतरी जळजळ होत असावी. विशिष्ट समस्येवर मोठ्या प्रमाणात नियम लागू करून डॉक्टर अंतिम निदान करू शकतो. + +हा दृष्टिकोन **ज्ञान सादरीकरण** आणि **तर्क** यावर खूप अवलंबून असतो. मानवी तज्ज्ञाकडून ज्ञान काढणे हे सर्वात कठीण भाग असू शकते, कारण डॉक्टर बर्‍याच प्रकरणांमध्ये त्याला किंवा तिला विशिष्ट निदान का सुचते हे अचूकपणे माहित नसते. कधी कधी उत्तर त्याच्या किंवा तिच्या डोक्यात स्पष्ट विचार न करता येते. काही कार्ये, जसे की छायाचित्रावरून व्यक्तीचे वय निश्चित करणे, ज्ञान हाताळण्यावर आधारित असू शकत नाहीत. + +### बॉटम-अप दृष्टिकोन + +याउलट, आपण आपल्या मेंदूमधील सर्वात सोप्या घटकांचे – न्यूरॉनचे मॉडेल तयार करण्याचा प्रयत्न करू शकतो. आपण संगणकामध्ये **कृत्रिम न्यूरल नेटवर्क** तयार करू शकतो आणि नंतर त्याला उदाहरणे देऊन समस्या सोडवण्यासाठी शिकवू शकतो. ही प्रक्रिया नवजात बाळ त्याच्या सभोवतालच्या गोष्टींचे निरीक्षण करून शिकतो यासारखी आहे. + +✅ बाळ कसे शिकतात यावर थोडे संशोधन करा. बाळाच्या मेंदूचे मूलभूत घटक कोणते आहेत? + +> | ML बद्दल काय? | | +> |--------------|-----------| +> | कृत्रिम बुद्धिमत्तेचा तो भाग जो काही डेटाच्या आधारे समस्या सोडवण्यासाठी संगणक शिकतो त्याला **मशीन लर्निंग** म्हणतात. या अभ्यासक्रमात आपण पारंपरिक मशीन लर्निंगचा विचार करणार नाही - यासाठी आम्ही तुम्हाला स्वतंत्र [Machine Learning for Beginners](http://aka.ms/ml-beginners) अभ्यासक्रमाकडे पाठवतो. | ![ML for Beginners](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.mr.png) | + +## AI चा संक्षिप्त इतिहास + +कृत्रिम बुद्धिमत्तेची सुरुवात विसाव्या शतकाच्या मध्यात एक क्षेत्र म्हणून झाली. सुरुवातीला, प्रतीकात्मक तर्क हा एक प्रचलित दृष्टिकोन होता, आणि यामुळे काही महत्त्वाच्या यशांना चालना मिळाली, जसे की तज्ज्ञ प्रणाली – मर्यादित समस्या क्षेत्रांमध्ये तज्ज्ञ म्हणून कार्य करू शकणारे संगणक प्रोग्राम. तथापि, लवकरच हे स्पष्ट झाले की असा दृष्टिकोन चांगल्या प्रकारे स्केल होत नाही. तज्ज्ञाकडून ज्ञान काढणे, ते संगणकामध्ये सादर करणे आणि त्या ज्ञानाच्या आधारावर अचूकता राखणे ही एक अत्यंत जटिल आणि अनेक प्रकरणांमध्ये अव्यवहार्य प्रक्रिया आहे. यामुळे 1970 च्या दशकात तथाकथित [AI हिवाळा](https://en.wikipedia.org/wiki/AI_winter) आला. + +> प्रतिमा [Dmitry Soshnikov](http://soshnikov.com) यांच्याकडून + +जसा काळ गेला, संगणकीय संसाधने स्वस्त झाली आणि अधिक डेटा उपलब्ध झाला, त्यामुळे न्यूरल नेटवर्क दृष्टिकोनांनी संगणकीय दृष्टिकोन किंवा भाषेच्या समजुतीसारख्या अनेक क्षेत्रांमध्ये मानवी क्षमतेशी स्पर्धा करताना उत्कृष्ट कामगिरी दाखवली. गेल्या दशकात, कृत्रिम बुद्धिमत्ता हा शब्द प्रामुख्याने न्यूरल नेटवर्क्सचा समानार्थी म्हणून वापरला जातो, कारण आपण ऐकतो ती बहुतेक AI यशे त्यांच्यावर आधारित आहेत. + +आपण पाहू शकतो की दृष्टिकोन कसे बदलले, उदाहरणार्थ, बुद्धिबळ खेळणारा संगणक प्रोग्राम तयार करताना: + +* सुरुवातीचे बुद्धिबळ प्रोग्राम शोधावर आधारित होते – प्रोग्रामने दिलेल्या संख्येच्या पुढील चालींसाठी प्रतिस्पर्ध्याच्या संभाव्य चालींचा अंदाज घेण्याचा स्पष्ट प्रयत्न केला आणि काही चालींमध्ये साध्य करता येणाऱ्या सर्वोत्तम स्थितीच्या आधारे एक इष्टतम चाल निवडली. यामुळे तथाकथित [अल्फा-बेटा प्रूनिंग](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) शोध अल्गोरिदमचा विकास झाला. +* शोध धोरणे खेळाच्या शेवटी चांगले कार्य करतात, जिथे शोध जागा मर्यादित संख्येने चालींनी मर्यादित असते. तथापि, खेळाच्या सुरुवातीला, शोध जागा खूप मोठी असते आणि मानवी खेळाडूंमधील विद्यमान सामन्यांमधून शिकून अल्गोरिदम सुधारित केला जाऊ शकतो. त्यानंतरच्या प्रयोगांमध्ये तथाकथित [केस-आधारित तर्क](https://en.wikipedia.org/wiki/Case-based_reasoning) वापरला गेला, जिथे प्रोग्रामने ज्ञानाच्या आधारावर सध्याच्या स्थितीशी खूपच समान असलेल्या प्रकरणांचा शोध घेतला. +* मानवी खेळाडूंवर विजय मिळवणारे आधुनिक प्रोग्राम न्यूरल नेटवर्क्स आणि [रिइन्फोर्समेंट लर्निंग](https://en.wikipedia.org/wiki/Reinforcement_learning) वर आधारित आहेत, जिथे प्रोग्राम स्वतःशीच दीर्घकाळ खेळून आणि स्वतःच्या चुका शिकून खेळायला शिकतात – जसे की माणसे बुद्धिबळ खेळायला शिकतात. तथापि, संगणक प्रोग्राम खूप कमी वेळात खूप जास्त खेळ खेळू शकतो आणि त्यामुळे खूप जलद शिकतो. + +✅ AI ने खेळलेले इतर खेळ यावर थोडे संशोधन करा. + +त्याचप्रमाणे, "बोलणारे प्रोग्राम" (जे ट्यूरिंग चाचणी पास करू शकतात) तयार करण्याच्या दृष्टिकोनात बदल कसा झाला हे आपण पाहू शकतो: + +* या प्रकारच्या सुरुवातीच्या प्रोग्राम्स, जसे की [Eliza](https://en.wikipedia.org/wiki/ELIZA), खूप सोप्या व्याकरणाच्या नियमांवर आणि इनपुट वाक्याचे प्रश्नात पुनर्रचना करण्यावर आधारित होते. +* आधुनिक सहाय्यक, जसे की Cortana, Siri किंवा Google Assistant हे सर्व हायब्रिड प्रणाली आहेत ज्या भाषणाला मजकूरात रूपांतरित करण्यासाठी आणि आपला हेतू ओळखण्यासाठी + +> चित्र: दिमित्री सोश्निकोव्ह, [फोटो](https://unsplash.com/photos/r8LmVbUKgns) मारिना अब्रोसिमोव्हा यांनी Unsplash वर घेतलेले [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) + +## अलीकडील AI संशोधन + +न्यूरल नेटवर्क संशोधनामध्ये अलीकडील मोठी वाढ सुमारे 2010 च्या सुमारास सुरू झाली, जेव्हा मोठ्या सार्वजनिक डेटासेट्स उपलब्ध होऊ लागल्या. [ImageNet](https://en.wikipedia.org/wiki/ImageNet) नावाच्या सुमारे 14 दशलक्ष अॅनोटेटेड प्रतिमांचा मोठा संग्रह, ज्यामुळे [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) ची सुरुवात झाली. + +![ILSVRC अचूकता](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> चित्र: [दिमित्री सोश्निकोव्ह](http://soshnikov.com) + +2012 मध्ये, प्रतिमेचे वर्गीकरण करण्यासाठी प्रथम [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) वापरण्यात आले, ज्यामुळे वर्गीकरणातील त्रुटींच्या प्रमाणात लक्षणीय घट झाली (सुमारे 30% वरून 16.4% पर्यंत). 2015 मध्ये, Microsoft Research च्या ResNet आर्किटेक्चरने [मानवी-स्तरीय अचूकता प्राप्त केली](https://doi.org/10.1109/ICCV.2015.123). + +त्यानंतर, न्यूरल नेटवर्क्सने अनेक कार्यांमध्ये अत्यंत यशस्वी वर्तन दाखवले: + +--- + +वर्ष | मानवी समानता प्राप्त +-----|-------- +2015 | [प्रतिमा वर्गीकरण](https://doi.org/10.1109/ICCV.2015.123) +2016 | [संवादी भाषण ओळख](https://arxiv.org/abs/1610.05256) +2018 | [स्वयंचलित मशीन अनुवाद](https://arxiv.org/abs/1803.05567) (चिनी ते इंग्रजी) +2020 | [प्रतिमा कॅप्शनिंग](https://arxiv.org/abs/2009.13682) + +गेल्या काही वर्षांत, BERT आणि GPT-3 सारख्या मोठ्या भाषा मॉडेल्ससह मोठ्या यशाचा अनुभव घेतला आहे. हे मुख्यतः यामुळे घडले की सामान्य मजकूर डेटा मोठ्या प्रमाणात उपलब्ध आहे, ज्यामुळे मॉडेल्सना मजकूराची रचना आणि अर्थ समजून घेण्यासाठी प्रशिक्षण देता येते, त्यांना सामान्य मजकूर संग्रहांवर प्री-ट्रेन करता येते आणि नंतर विशिष्ट कार्यांसाठी त्या मॉडेल्सला विशेष बनवता येते. आपण या कोर्समध्ये नंतर [नैसर्गिक भाषा प्रक्रिया](../5-NLP/README.md) याबद्दल अधिक शिकू. + +## 🚀 आव्हान + +इंटरनेटवर फेरफटका मारा आणि तुमच्या मते AI सर्वात प्रभावीपणे कुठे वापरले जाते ते ठरवा. ते मॅपिंग अॅपमध्ये आहे का, काही भाषण-ते-मजकूर सेवा आहे का किंवा व्हिडिओ गेममध्ये आहे का? प्रणाली कशी तयार केली गेली याचा शोध घ्या. + +## [पोस्ट-लेक्चर क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## पुनरावलोकन आणि स्व-अभ्यास + +AI आणि ML चा इतिहास [या धड्याचा](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) अभ्यास करून पुनरावलोकन करा. त्या धड्याच्या शीर्षस्थानी असलेल्या स्केच नोटमधून किंवा या धड्याच्या एखाद्या घटकाचा अभ्यास करा आणि त्याच्या उत्क्रांतीला सूचित करणाऱ्या सांस्कृतिक संदर्भाचा अधिक सखोल अभ्यास करा. + +**असाइनमेंट**: [गेम जॅम](assignment.md) + +**अस्वीकृती**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/1-Intro/assignment.md b/translations/mr/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..7318e33c --- /dev/null +++ b/translations/mr/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# गेम जॅम + +गेम्स हा असा एक क्षेत्र आहे ज्यावर AI आणि ML च्या प्रगतीचा मोठा प्रभाव पडला आहे. या असाइनमेंटमध्ये, तुम्हाला आवडणाऱ्या अशा एका गेमवर एक लहान निबंध लिहा, ज्यावर AI च्या प्रगतीचा प्रभाव पडलेला आहे. हा गेम इतका जुना असावा की त्यावर विविध प्रकारच्या संगणकीय प्रक्रिया प्रणालींचा प्रभाव पडलेला असेल. चेस किंवा गो हे चांगले उदाहरण आहे, पण पोंग किंवा पॅक-मॅन सारख्या व्हिडिओ गेम्सकडेही लक्ष द्या. या निबंधात गेमचा भूतकाळ, वर्तमान आणि AI चा भविष्यातील प्रभाव यावर चर्चा करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/2-Symbolic/README.md b/translations/mr/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..3c284b6f --- /dev/null +++ b/translations/mr/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# ज्ञानाचे प्रतिनिधित्व आणि तज्ज्ञ प्रणाली + +![सिंबॉलिक AI चा सारांश](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.mr.png) + +> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) यांच्याकडून + +कृत्रिम बुद्धिमत्तेचा शोध हा ज्ञानाच्या शोधावर आधारित आहे, ज्याद्वारे जगाला समजून घेता येईल, जसे मानव करतो. पण हे कसे साध्य करायचे? + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI च्या सुरुवातीच्या काळात, बुद्धिमान प्रणाली तयार करण्यासाठी टॉप-डाउन दृष्टिकोन (मागील धड्यात चर्चा केली) लोकप्रिय होता. कल्पना अशी होती की लोकांकडून ज्ञान काढून ते मशीन-रीडेबल स्वरूपात साठवायचे आणि नंतर त्याचा वापर करून आपोआप समस्या सोडवायच्या. या दृष्टिकोनावर दोन मोठ्या कल्पनांवर आधारित होते: + +* ज्ञानाचे प्रतिनिधित्व +* तर्कशक्ती + +## ज्ञानाचे प्रतिनिधित्व + +सिंबॉलिक AI मधील एक महत्त्वाची संकल्पना म्हणजे **ज्ञान**. *माहिती* किंवा *डेटा* यापासून ज्ञान वेगळे करणे महत्त्वाचे आहे. उदाहरणार्थ, कोणी म्हणू शकतो की पुस्तके ज्ञानाने भरलेली आहेत, कारण पुस्तके अभ्यासून एखादा तज्ज्ञ होऊ शकतो. परंतु, पुस्तके जे साठवतात ते प्रत्यक्षात *डेटा* असतो, आणि पुस्तके वाचून आणि हा डेटा आपल्या जगाच्या मॉडेलमध्ये समाकलित करून आपण त्याला ज्ञानात रूपांतरित करतो. + +> ✅ **ज्ञान** हे आपल्या डोक्यात असते आणि ते आपल्या जगाच्या समजुतीचे प्रतिनिधित्व करते. हे सक्रिय **शिकण्याच्या** प्रक्रियेद्वारे प्राप्त होते, ज्यामध्ये आपण मिळालेली माहिती आपल्या सक्रिय जगाच्या मॉडेलमध्ये समाकलित करतो. + +बहुतेक वेळा, आपण ज्ञानाचे कठोरपणे परिभाषित करत नाही, परंतु [DIKW पिरॅमिड](https://en.wikipedia.org/wiki/DIKW_pyramid) चा वापर करून त्याला इतर संबंधित संकल्पनांशी संरेखित करतो. यात खालील संकल्पना समाविष्ट आहेत: + +* **डेटा** हे भौतिक माध्यमात सादर केलेले काहीतरी आहे, जसे की लिहिलेला मजकूर किंवा बोललेले शब्द. डेटा मानवांपासून स्वतंत्रपणे अस्तित्वात असतो आणि लोकांमध्ये हस्तांतरित केला जाऊ शकतो. +* **माहिती** म्हणजे आपण आपल्या डोक्यात डेटा कसा समजतो. उदाहरणार्थ, जेव्हा आपण *संगणक* हा शब्द ऐकतो, तेव्हा आपल्याला त्याबद्दल काहीतरी समज असते. +* **ज्ञान** म्हणजे माहिती आपल्या जगाच्या मॉडेलमध्ये समाकलित करणे. उदाहरणार्थ, एकदा आपण संगणक काय आहे हे शिकल्यावर, आपल्याला त्याचे कार्य कसे होते, त्याची किंमत किती आहे आणि त्याचा उपयोग कशासाठी होतो याबद्दल काही कल्पना येते. या परस्पर संबंधित संकल्पनांचे जाळे आपले ज्ञान तयार करते. +* **शहाणपण** हे आपल्या जगाच्या समजुतीचे आणखी एक पातळी आहे, आणि ते *मेटा-ज्ञान* चे प्रतिनिधित्व करते, उदा. ज्ञान कसे आणि केव्हा वापरावे याबद्दल काही कल्पना. + +*Image [from Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* + +म्हणून, **ज्ञानाचे प्रतिनिधित्व** करण्याचा प्रश्न म्हणजे संगणकात डेटा स्वरूपात ज्ञानाचे प्रभावीपणे प्रतिनिधित्व करण्याचा मार्ग शोधणे, जेणेकरून ते आपोआप वापरता येईल. याला एका स्पेक्ट्रमप्रमाणे पाहिले जाऊ शकते: + +![ज्ञानाचे प्रतिनिधित्व स्पेक्ट्रम](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.mr.png) + +> प्रतिमा [Dmitry Soshnikov](http://soshnikov.com) यांच्याकडून + +* डावीकडे, खूप सोप्या प्रकारचे ज्ञानाचे प्रतिनिधित्व आहे जे संगणकाद्वारे प्रभावीपणे वापरले जाऊ शकते. सर्वात सोपे म्हणजे अल्गोरिदमिक, जेव्हा ज्ञान संगणक प्रोग्रामद्वारे सादर केले जाते. तथापि, हे ज्ञानाचे प्रतिनिधित्व करण्याचा सर्वोत्तम मार्ग नाही, कारण ते लवचिक नाही. आपल्या डोक्यातील ज्ञान अनेकदा अल्गोरिदमिक नसते. +* उजवीकडे, नैसर्गिक मजकूरासारखी प्रतिनिधित्वे आहेत. ती सर्वात शक्तिशाली आहेत, परंतु स्वयंचलित तर्कासाठी वापरता येत नाहीत. + +> ✅ विचार करा की तुम्ही तुमच्या डोक्यातील ज्ञान कसे साठवता आणि ते नोंदींमध्ये रूपांतरित करता. तुमच्यासाठी स्मरणशक्ती सुधारण्यासाठी कोणता विशिष्ट स्वरूप उपयुक्त आहे का? + +## संगणकीय ज्ञानाचे प्रतिनिधित्व वर्गीकरण + +संगणकीय ज्ञानाचे प्रतिनिधित्व करण्याच्या विविध पद्धती खालील प्रकारांमध्ये वर्गीकृत केल्या जाऊ शकतात: + +* **नेटवर्क प्रतिनिधित्व** हे आपल्या डोक्यात परस्पर संबंधित संकल्पनांचे नेटवर्क असल्याच्या तथ्यावर आधारित आहे. आपण संगणकात समान नेटवर्क ग्राफच्या स्वरूपात पुनरुत्पादित करू शकतो - ज्याला **सामान्य नेटवर्क** म्हणतात. + +1. **ऑब्जेक्ट-अॅट्रिब्युट-वॅल्यू ट्रिपलेट्स** किंवा **अॅट्रिब्युट-वॅल्यू जोड्या**. कारण संगणकात ग्राफ नोड्स आणि एजेसच्या यादीप्रमाणे सादर केला जाऊ शकतो, आपण सामान्य नेटवर्क ऑब्जेक्ट्स, अॅट्रिब्युट्स आणि व्हॅल्यूज असलेल्या ट्रिपलेट्सच्या यादीद्वारे सादर करू शकतो. उदाहरणार्थ, प्रोग्रामिंग भाषांबद्दल खालील ट्रिपलेट्स तयार करू: + +ऑब्जेक्ट | अॅट्रिब्युट | व्हॅल्यू +---------|-------------|------- +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ विचार करा की ट्रिपलेट्स इतर प्रकारचे ज्ञान कसे सादर करू शकतात. + +2. **हायरार्किकल प्रतिनिधित्व** हे आपल्या डोक्यात वस्तूंचे पदानुक्रम तयार करण्याच्या तथ्यावर भर देतात. उदाहरणार्थ, आपल्याला माहित आहे की कॅनरी हा एक पक्षी आहे, आणि सर्व पक्ष्यांना पंख असतात. आपल्याला कॅनरीचा रंग आणि त्यांचा उड्डाणाचा वेग याबद्दलही काही कल्पना आहे. + + - **फ्रेम प्रतिनिधित्व** हे प्रत्येक वस्तू किंवा वस्तूंच्या वर्गाचे प्रतिनिधित्व **फ्रेम** म्हणून करते, ज्यामध्ये **स्लॉट्स** असतात. स्लॉट्समध्ये संभाव्य डीफॉल्ट मूल्ये, मूल्य निर्बंध किंवा साठवलेली प्रक्रिया असते जी स्लॉटचे मूल्य मिळवण्यासाठी कॉल केली जाऊ शकते. सर्व फ्रेम्स ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषांमधील ऑब्जेक्ट हायरार्कीप्रमाणे हायरार्की तयार करतात. + - **दृश्ये (Scenarios)** ही फ्रेम्सची एक विशेष प्रकार आहे जी वेळेनुसार उलगडणाऱ्या जटिल परिस्थितींचे प्रतिनिधित्व करते. + +**Python** + +स्लॉट | मूल्य | डीफॉल्ट मूल्य | अंतराल +------|-------|---------------|-------- +नाव | Python | | +Is-A | Untyped-Language | | +व्हेरिएबल केस | | CamelCase | +प्रोग्राम लांबी | | 5-5000 ओळी | +ब्लॉक सिंटॅक्स | Indent | | + +3. **प्रोसीजरल प्रतिनिधित्व** हे ज्ञानाचे प्रतिनिधित्व अटी घडल्यावर अंमलात आणल्या जाणाऱ्या क्रियांच्या यादीद्वारे करते. + - उत्पादन नियम (Production rules) हे if-then विधानांवर आधारित असतात, जे निष्कर्ष काढण्यास परवानगी देतात. उदाहरणार्थ, डॉक्टरकडे असा नियम असू शकतो की **जर** रुग्णाला उच्च तापमान **किंवा** रक्त चाचणीत C-रिऍक्टिव्ह प्रथिनाची उच्च पातळी असेल **तर** त्याला दाह आहे. एकदा अटींपैकी एक पूर्ण झाली की, आपण दाहाबद्दल निष्कर्ष काढू शकतो आणि नंतर पुढील तर्कासाठी त्याचा वापर करू शकतो. + - अल्गोरिदम हे प्रोसीजरल प्रतिनिधित्वाचा आणखी एक प्रकार मानले जाऊ शकतात, जरी ते ज्ञान-आधारित प्रणालींमध्ये थेट वापरले जात नाहीत. + +4. **तर्कशास्त्र (Logic)** हे मूळतः अ‍ॅरिस्टॉटलने सार्वत्रिक मानवी ज्ञानाचे प्रतिनिधित्व करण्याच्या पद्धती म्हणून प्रस्तावित केले होते. + - प्रेडिकेट लॉजिक (Predicate Logic) ही एक गणितीय सिद्धांत आहे, जी संगणकीयदृष्ट्या समृद्ध आहे, त्यामुळे सामान्यतः त्याचा काही उपसंच वापरला जातो, जसे की Prolog मध्ये वापरलेले Horn क्लॉजेस. + - वर्णनात्मक तर्कशास्त्र (Descriptive Logic) ही तर्कशास्त्र प्रणालींची एक कुटुंब आहे, जी वस्तूंच्या हायरार्कीजचे प्रतिनिधित्व करण्यासाठी आणि त्यावर तर्क करण्यासाठी वापरली जाते, जसे की *सामान्य वेब* सारख्या वितरित ज्ञान प्रतिनिधित्वांमध्ये. + +## तज्ज्ञ प्रणाली + +सिंबॉलिक AI च्या सुरुवातीच्या यशांपैकी एक म्हणजे **तज्ज्ञ प्रणाली** - संगणकीय प्रणाली जी मर्यादित समस्या क्षेत्रात तज्ज्ञ म्हणून कार्य करण्यासाठी डिझाइन केली गेली होती. त्या **ज्ञान तळ** (knowledge base) वर आधारित होत्या, जे एका किंवा अधिक मानवी तज्ज्ञांकडून काढले गेले होते, आणि त्यामध्ये **तर्क इंजिन** (inference engine) होते, जे त्यावर काही तर्क करत असे. + +![मानवी आर्किटेक्चर](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.mr.png) | ![ज्ञान-आधारित प्रणाली](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.mr.png) +---------------------------------------------|------------------------------------------------ +मानवी न्यूरल प्रणालीची साधी रचना | ज्ञान-आधारित प्रणालीचे आर्किटेक्चर + +तज्ज्ञ प्रणाली मानवी तर्क प्रणालीप्रमाणे तयार केल्या जातात, ज्यामध्ये **अल्पकालीन स्मृती** आणि **दीर्घकालीन स्मृती** असते. त्याचप्रमाणे, ज्ञान-आधारित प्रणालींमध्ये खालील घटक वेगळे केले जातात: + +* **समस्या स्मृती**: सध्या सोडवण्यात आलेल्या समस्येबद्दलचे ज्ञान साठवते, उदा. रुग्णाचे तापमान किंवा रक्तदाब, त्याला दाह आहे की नाही इ. हे ज्ञान **स्थिर ज्ञान** म्हणूनही ओळखले जाते, कारण यामध्ये सध्या माहित असलेल्या समस्येचे स्नॅपशॉट असते - ज्याला *समस्या स्थिती* म्हणतात. +* **ज्ञान तळ**: समस्या क्षेत्राबद्दलचे दीर्घकालीन ज्ञान सादर करते. हे मानवी तज्ज्ञांकडून मॅन्युअली काढले जाते आणि सल्लामसलतीतून बदलत नाही. कारण यामुळे आपल्याला एका समस्या स्थितीतून दुसऱ्या स्थितीकडे नेण्यास परवानगी मिळते, याला **गतिशील ज्ञान** असेही म्हणतात. +* **तर्क इंजिन**: समस्या स्थिती जागेत शोध प्रक्रिया समन्वयित करते, आवश्यकतेनुसार वापरकर्त्याला प्रश्न विचारते. हे प्रत्येक स्थितीसाठी योग्य नियम शोधण्यास जबाबदार आहे. + +उदाहरण म्हणून, प्राण्याच्या शारीरिक वैशिष्ट्यांवर आधारित प्राणी ओळखण्यासाठी खालील तज्ज्ञ प्रणाली विचारात घ्या: + +![AND-OR ट्री](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.mr.png) + +> प्रतिमा [Dmitry Soshnikov](http://soshnikov.com) यांच्याकडून + +हा आकृती **AND-OR ट्री** म्हणून ओळखला जातो, आणि तो उत्पादन नियमांच्या संचाचे ग्राफिकल प्रतिनिधित्व आहे. तज्ज्ञांकडून ज्ञान काढण्याच्या सुरुवातीला ट्री काढणे उपयुक्त ठरते. संगणकात ज्ञानाचे प्रतिनिधित्व करण्यासाठी नियमांचा वापर करणे अधिक सोयीचे आहे: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +तुम्ही लक्षात घेऊ शकता की नियमाच्या डाव्या बाजूला असलेली प्रत्येक अट आणि कृती ही वस्तू-अॅट्रिब्युट-वॅल्यू (OAV) ट्रिपलेट्स आहेत. **कार्यरत स्मृती** सध्या सोडवण्यात आलेल्या समस्येशी संबंधित OAV ट्रिपलेट्सचा संच साठवते. **नियम इंजिन** अशा नियमांसाठी शोध करते ज्यासाठी अट पूर्ण होते आणि त्यांची अंमलबजावणी करते, कार्यरत स्मृतीमध्ये आणखी एक ट्रिपलेट जोडते. + +> ✅ तुम्हाला आवडणाऱ्या विषयावर स्वतःचा AND-OR ट्री तयार करा! + +### फॉरवर्ड वि. बॅकवर्ड तर्क + +वरील वर्णन केलेली प्रक्रिया **फॉरवर्ड तर्क** म्हणून ओळखली जाते. ती कार्यरत स्मृतीमध्ये समस्येबद्दल काही प्रारंभिक डेटा असण्यापासून सुरू होते आणि नंतर खालील तर्क लूप अंमलात आणते: + +1. जर लक्ष्य अॅट्रिब्युट कार्यरत स्मृतीमध्ये उपस्थित असेल - थांबा आणि निकाल द्या +2. ज्या सर्व नियमांची अट सध्या पूर्ण होते त्यांचा शोध घ्या - **संघर्ष संच** (conflict set) मिळवा +3. **संघर्ष निराकरण** करा - या टप्प्यावर अंमलात आणला जाणारा एक नियम निवडा. संघर्ष निराकरणासाठी वेगवेगळ्या रणनीती असू शकतात: + - ज्ञान तळातील पहिला लागू नियम निवडा + - एखादा यादृच्छिक नियम निवडा + - *अधिक विशिष्ट* नियम निवडा, म्हणजे डाव्या बाजूला (LHS) सर्वाधिक अटी पूर्ण करणारा नियम +4. निवडलेला नियम लागू करा आणि समस्या स्थितीत नवीन ज्ञानाचा तुकडा घाला +5. चरण 1 पासून पुन्हा सुरू करा. + +तथापि, काही प्रकरणांमध्ये आपण समस्येबद्दल रिक्त ज्ञानाने सुरुवात करू इच्छितो आणि आपल्याला निष्कर्षापर्यंत पोहोचण्यास मदत करणारे प्रश्न विचारू इच्छितो. उदाहरणार्थ, वैद्यकीय निदान करताना, रुग्णाचे निदान सुरू करण्यापूर्वी सर्व वैद्यकीय चाचण्या आधीच केल्या जात नाहीत. निर्णय घेण्याची गरज असताना चाचण्या केल्या जातात. + +ही प्रक्रिया **बॅकवर्ड तर्क** वापरून मॉडेल केली जाऊ शकते. ती **लक्ष्य** (goal) द्वारे चालवली जाते - आपण शोधत असलेल्या अॅट्रिब्युटचे मूल्य: + +1. लक्ष्याचे मूल्य देऊ शकणारे सर्व नियम निवडा (म्हणजे RHS ("राईट-हँड-साइड") वर लक्ष्य असलेले) - संघर्ष संच +2. जर या अॅट्रिब्युटसाठी कोणतेही नियम नसतील, किंवा असा नियम असेल की वापरकर्त्याला मूल्य विचारावे लागेल - विचार करा, अन्यथा: +3. संघर्ष निराकरण रणनीती वापरून एक नियम निवडा जो आपण *गृहीत* म्हणून वापरू - आपण त्याला सिद्ध करण्याचा प्रयत्न करू +4. नियमाच्या LHS मधील सर्व अॅट्रिब्युट्ससाठी प्रक्रिया पुनरावृत्ती करा, त्यांना लक्ष्य म्हणून सिद्ध करण्याचा प्रयत्न करा +5. जर कोणत्याही टप्प्यावर प्रक्रिया अयशस्वी झाली - चरण 3 वर दुसरा नियम वापरा. + +> ✅ कोणत्या परिस्थितीत फॉरवर्ड तर्क अधिक योग्य आहे? बॅकवर्ड तर्काबद्दल काय? + +### तज्ज्ञ प्रणालींची अंमलबजावणी + +तज्ज्ञ प्रणाली विविध साधनांचा वापर करून अंमलात आणल्या जाऊ शकतात: + +* त्यांना थेट उच्च-स्तरीय प्रोग्रामिंग भाषेत प्रोग्राम करणे. ही सर्वोत्तम कल्पना नाही, कारण ज्ञान-आधारित प्रणालीचा मुख्य फायदा म्हणजे ज्ञान तर्कशक्तीपासून वेगळे आहे, आणि संभाव्यतः समस्या क्षेत्रातील तज्ज्ञाला तर्क प्रक्रियेच्या तपशीलांशिवाय नियम लिहिता यायला हवेत. +* **तज्ज्ञ प्रणाली शेल** वापरणे, म्हणजेच, काही ज्ञान प्रतिनिधित्व भाषा वापरून ज्ञानाने भरले जाण्यासाठी विशेषतः डिझाइन केलेली प्रणाली. + +## ✍️ व्यायाम: प्राणी तर्क + +फॉरवर्ड आणि बॅकवर्ड तर्क तज्ज्ञ प्रणाली अंमलात आणण्याचे उदाहरण पाहण्यासाठी [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) पहा. +> **टीप**: हा उदाहरण अगदी सोपा आहे आणि तज्ज्ञ प्रणाली कशी दिसते याची कल्पना देतो. जेव्हा तुम्ही अशी प्रणाली तयार करायला सुरुवात करता, तेव्हा तुम्हाला तिच्या *बुद्धिमान* वर्तनाची जाणीव होईल, जेव्हा नियमांची संख्या २००+ च्या आसपास पोहोचेल. एका टप्प्यावर, नियम इतके गुंतागुंतीचे होतात की सर्व नियम लक्षात ठेवणे कठीण होते, आणि याच वेळी तुम्हाला कदाचित प्रश्न पडेल की प्रणालीने विशिष्ट निर्णय का घेतले. मात्र, ज्ञान-आधारित प्रणालींचे महत्त्वाचे वैशिष्ट्य म्हणजे तुम्ही नेहमी *समजावून* सांगू शकता की कोणताही निर्णय कसा घेतला गेला. +## ऑंटोलॉजी आणि सेमॅंटिक वेब + +20व्या शतकाच्या शेवटी, इंटरनेट संसाधनांचे ज्ञान प्रतिनिधित्व वापरून वर्णन करण्याची एक पुढाकार होती, ज्यामुळे विशिष्ट प्रश्नांसाठी संसाधने शोधणे शक्य होईल. या पुढाकाराला **सेमॅंटिक वेब** म्हणतात, आणि ते काही संकल्पनांवर आधारित होते: + +- **[डिस्क्रिप्शन लॉजिक](https://en.wikipedia.org/wiki/Description_logic)** (DL) वर आधारित एक विशेष ज्ञान प्रतिनिधित्व. हे फ्रेम ज्ञान प्रतिनिधित्वासारखे आहे, कारण ते गुणधर्मांसह वस्तूंचे श्रेणी तयार करते, परंतु त्यात औपचारिक तर्कशास्त्रीय अर्थ आणि अनुमान आहे. DL च्या संपूर्ण कुटुंबात अभिव्यक्ती आणि अनुमानाच्या अल्गोरिदमिक गुंतागुंतीमध्ये संतुलन साधले जाते. +- वितरित ज्ञान प्रतिनिधित्व, जिथे सर्व संकल्पना जागतिक URI ओळखकर्ता वापरून दर्शविल्या जातात, ज्यामुळे इंटरनेटवर ज्ञान श्रेणी तयार करणे शक्य होते. +- ज्ञान वर्णनासाठी XML-आधारित भाषांचा एक कुटुंब: RDF (रिसोर्स डिस्क्रिप्शन फ्रेमवर्क), RDFS (RDF स्कीमा), OWL (ऑंटोलॉजी वेब भाषा). + +सेमॅंटिक वेबमधील मुख्य संकल्पना म्हणजे **ऑंटोलॉजी**. याचा अर्थ काही औपचारिक ज्ञान प्रतिनिधित्व वापरून समस्या क्षेत्राचे स्पष्ट वर्णन करणे. सर्वात सोपी ऑंटोलॉजी फक्त समस्या क्षेत्रातील वस्तूंची श्रेणी असू शकते, परंतु अधिक जटिल ऑंटोलॉजीमध्ये अनुमानासाठी वापरता येणारे नियम असतात. + +सेमॅंटिक वेबमध्ये, सर्व प्रतिनिधित्व त्रिकुटांवर आधारित असतात. प्रत्येक वस्तू आणि प्रत्येक संबंध URI द्वारे अद्वितीयपणे ओळखले जातात. उदाहरणार्थ, जर आपण असे सांगायचे असेल की हे AI अभ्यासक्रम दिमित्री सोश्निकोव्ह यांनी 1 जानेवारी 2022 रोजी विकसित केले आहे - येथे आपण वापरू शकणारे त्रिकुट आहेत: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ येथे `http://www.example.com/terms/creation-date` आणि `http://purl.org/dc/elements/1.1/creator` हे *निर्माता* आणि *निर्मिती तारीख* या संकल्पनांचे व्यक्त करण्यासाठी काही सुप्रसिद्ध आणि सार्वत्रिकपणे स्वीकारलेले URI आहेत. + +अधिक जटिल प्रकरणात, जर आपल्याला निर्मात्यांची यादी परिभाषित करायची असेल, तर आपण RDF मध्ये परिभाषित केलेल्या काही डेटा संरचना वापरू शकतो. + + + +> वरील आकृत्या [दिमित्री सोश्निकोव्ह](http://soshnikov.com) यांनी तयार केल्या आहेत. + +सेमॅंटिक वेब तयार करण्याच्या प्रगतीला शोध इंजिन आणि नैसर्गिक भाषा प्रक्रिया तंत्रांच्या यशामुळे काही प्रमाणात मंदी आली, ज्यामुळे मजकुरातून संरचित डेटा काढणे शक्य झाले. तथापि, काही क्षेत्रांमध्ये ऑंटोलॉजी आणि ज्ञान तळे टिकवून ठेवण्यासाठी अजूनही महत्त्वपूर्ण प्रयत्न केले जात आहेत. काही उल्लेखनीय प्रकल्प: + +* [WikiData](https://wikidata.org/) हे विकिपीडियाशी संबंधित मशीन वाचण्यायोग्य ज्ञान तळांचा संग्रह आहे. बहुतेक डेटा विकिपीडियाच्या *InfoBoxes* मधून, म्हणजे विकिपीडिया पृष्ठांतील संरचित सामग्रीच्या तुकड्यांमधून काढला जातो. तुम्ही [SPARQL](https://query.wikidata.org/) वापरून विकिडेटा क्वेरी करू शकता, जो सेमॅंटिक वेबसाठी एक विशेष क्वेरी भाषा आहे. येथे एक नमुना क्वेरी आहे जी मानवांमध्ये सर्वात लोकप्रिय डोळ्यांच्या रंगांचे प्रदर्शन करते: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) हा विकिडेटासारखाच आणखी एक प्रयत्न आहे. + +> ✅ जर तुम्हाला स्वतःच्या ऑंटोलॉजी तयार करण्याचा किंवा विद्यमान ऑंटोलॉजी उघडण्याचा प्रयोग करायचा असेल, तर [Protégé](https://protege.stanford.edu/) नावाचा एक उत्कृष्ट दृश्य ऑंटोलॉजी संपादक आहे. ते डाउनलोड करा किंवा ऑनलाइन वापरा. + + + +*वेब प्रोटेगे संपादक रोमानोव्ह कुटुंबाच्या ऑंटोलॉजीसह उघडलेला. स्क्रीनशॉट दिमित्री सोश्निकोव्ह यांनी.* + +## ✍️ व्यायाम: एक कुटुंब ऑंटोलॉजी + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) पहा, जिथे सेमॅंटिक वेब तंत्रांचा वापर करून कुटुंबातील नातेसंबंधांबद्दल विचार करण्याचे उदाहरण दिले आहे. आपण सामान्य GEDCOM स्वरूपात दर्शविलेल्या कुटुंब वृक्षाचा आणि कुटुंब नातेसंबंधांच्या ऑंटोलॉजीचा वापर करून दिलेल्या व्यक्तींच्या संचासाठी सर्व कुटुंब नातेसंबंधांचा ग्राफ तयार करू. + +## मायक्रोसॉफ्ट कॉन्सेप्ट ग्राफ + +बहुतेक प्रकरणांमध्ये, ऑंटोलॉजी काळजीपूर्वक हाताने तयार केल्या जातात. तथापि, नैसर्गिक भाषा मजकुरासारख्या असंरचित डेटामधून ऑंटोलॉजी **मायन** करणे देखील शक्य आहे. + +मायक्रोसॉफ्ट रिसर्चने केलेला एक प्रयत्न [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) म्हणून ओळखला जातो. + +हे `is-a` वारसा संबंध वापरून एकत्रित केलेल्या घटकांचा मोठा संग्रह आहे. हे "मायक्रोसॉफ्ट म्हणजे काय?" यासारख्या प्रश्नांची उत्तरे देण्यास अनुमती देते - उत्तर असे काहीतरी असते "एक कंपनी 0.87 संभाव्यतेसह, आणि एक ब्रँड 0.75 संभाव्यतेसह". + +ग्राफ REST API म्हणून किंवा सर्व घटक जोड्या सूचीबद्ध करणाऱ्या मोठ्या डाउनलोड करण्यायोग्य मजकूर फाइल म्हणून उपलब्ध आहे. + +## ✍️ व्यायाम: एक कॉन्सेप्ट ग्राफ + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) नोटबुक वापरून पहा, जिथे आपण मायक्रोसॉफ्ट कॉन्सेप्ट ग्राफ वापरून बातम्यांच्या लेखांना विविध श्रेणींमध्ये गटबद्ध करू शकतो. + +## निष्कर्ष + +आजकाल, AI ला अनेकदा *मशीन लर्निंग* किंवा *न्यूरल नेटवर्क्स* चे समानार्थी मानले जाते. तथापि, मानव देखील स्पष्ट विचार प्रदर्शित करतो, जे सध्या न्यूरल नेटवर्क्सद्वारे हाताळले जात नाही. वास्तविक जगातील प्रकल्पांमध्ये, स्पष्ट विचार अजूनही स्पष्टीकरण देण्याची आवश्यकता असलेल्या कार्ये करण्यासाठी किंवा प्रणालीच्या वर्तनाला नियंत्रित पद्धतीने बदलण्यास सक्षम होण्यासाठी वापरला जातो. + +## 🚀 आव्हान + +या धड्याशी संबंधित कुटुंब ऑंटोलॉजी नोटबुकमध्ये, कुटुंब वृक्षातील इतर नातेसंबंधांसह प्रयोग करण्याची संधी आहे. कुटुंबातील लोकांमधील नवीन संबंध शोधण्याचा प्रयत्न करा. + +## [पश्चात-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## पुनरावलोकन आणि स्व-अभ्यास + +इंटरनेटवर संशोधन करा आणि अशा क्षेत्रांचा शोध घ्या जिथे मानवांनी ज्ञानाचे प्रमाण आणि कोडिफिकेशन करण्याचा प्रयत्न केला आहे. ब्लूमच्या वर्गीकरणाचा अभ्यास करा आणि इतिहासात परत जा, जिथे मानवांनी त्यांच्या जगाचा अर्थ लावण्याचा प्रयत्न केला. लिनिअसने जीवसृष्टींचे वर्गीकरण तयार करण्यासाठी केलेल्या कार्याचा अभ्यास करा आणि दिमित्री मेंडेलीवने रासायनिक घटकांचे वर्णन आणि गटबद्ध करण्याचा मार्ग कसा तयार केला हे पाहा. तुम्हाला आणखी कोणते मनोरंजक उदाहरणे सापडतात? + +**असाइनमेंट**: [ऑंटोलॉजी तयार करा](assignment.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/2-Symbolic/assignment.md b/translations/mr/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..bc9a55bf --- /dev/null +++ b/translations/mr/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# ऑंटोलॉजी तयार करा + +ज्ञानाचा आधार तयार करणे म्हणजे एखाद्या विषयाबद्दल तथ्यांचे प्रतिनिधित्व करणाऱ्या मॉडेलचे वर्गीकरण करणे होय. एखादा विषय निवडा - जसे की व्यक्ती, स्थान किंवा वस्तू - आणि त्या विषयाचा मॉडेल तयार करा. या धड्यात वर्णन केलेल्या काही तंत्र आणि मॉडेल तयार करण्याच्या रणनीतींचा वापर करा. उदाहरणार्थ, फर्निचर, दिवे वगैरे असलेल्या लिव्हिंग रूमची ऑंटोलॉजी तयार करणे. लिव्हिंग रूम किचनपासून कशी वेगळी आहे? बाथरूमपासून कशी वेगळी आहे? तुम्हाला कसे कळते की ती लिव्हिंग रूम आहे आणि डायनिंग रूम नाही? तुमची ऑंटोलॉजी तयार करण्यासाठी [Protégé](https://protege.stanford.edu/) वापरा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/mr/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..8fe0d318 --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# न्यूरल नेटवर्क्सची ओळख: परसेप्ट्रॉन + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +आधुनिक न्यूरल नेटवर्कसारखे काहीतरी तयार करण्याचा पहिला प्रयत्न 1957 मध्ये कॉर्नेल एरोनॉटिकल लॅबोरेटरीचे फ्रँक रोझनब्लाट यांनी केला. हे हार्डवेअर आधारित मॉडेल होते ज्याला "मार्क-1" असे नाव देण्यात आले होते, ज्याचा उद्देश त्रिकोण, चौकोन आणि वर्तुळ यांसारख्या प्राथमिक भूमितीय आकृत्या ओळखणे होता. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> प्रतिमा [विकिपीडियावरून](https://en.wikipedia.org/wiki/Perceptron) + +इनपुट प्रतिमा 20x20 फोटोसेल अ‍ॅरेद्वारे दर्शवली जात होती, त्यामुळे न्यूरल नेटवर्कमध्ये 400 इनपुट्स आणि एक बायनरी आउटपुट होते. साध्या नेटवर्कमध्ये एक न्यूरॉन असतो, ज्याला **थ्रेशोल्ड लॉजिक युनिट** असेही म्हणतात. न्यूरल नेटवर्कचे वजन पोटेंशिओमीटरसारखे कार्य करत होते, ज्याला प्रशिक्षणाच्या टप्प्यात मॅन्युअली समायोजित करावे लागायचे. + +> ✅ पोटेंशिओमीटर हे एक उपकरण आहे जे सर्किटचा प्रतिकार समायोजित करण्यास अनुमती देते. + +> त्या काळात न्यूयॉर्क टाइम्सने परसेप्ट्रॉनबद्दल लिहिले: *एक इलेक्ट्रॉनिक संगणकाचे भ्रूण ज्याची [नेव्ही] अपेक्षा आहे की तो चालेल, बोलेल, पाहील, लिहील, स्वतःची पुनरुत्पत्ती करेल आणि त्याच्या अस्तित्वाची जाणीव ठेवेल.* + +## परसेप्ट्रॉन मॉडेल + +समजा आपल्या मॉडेलमध्ये N वैशिष्ट्ये आहेत, अशा परिस्थितीत इनपुट व्हेक्टर N आकाराचा व्हेक्टर असेल. परसेप्ट्रॉन हा **बायनरी वर्गीकरण** मॉडेल आहे, म्हणजेच तो इनपुट डेटाच्या दोन वर्गांमध्ये फरक करू शकतो. आपण गृहीत धरू की प्रत्येक इनपुट व्हेक्टर x साठी आमच्या परसेप्ट्रॉनचा आउटपुट +1 किंवा -1 असेल, वर्गावर अवलंबून. आउटपुट खालील सूत्राद्वारे गणना केली जाईल: + +y(x) = f(wTx) + +जिथे f ही एक स्टेप अ‍ॅक्टिवेशन फंक्शन आहे + + + + +## परसेप्ट्रॉनचे प्रशिक्षण + +परसेप्ट्रॉनचे प्रशिक्षण देण्यासाठी आपल्याला असे वजन व्हेक्टर w शोधावे लागेल जे बहुतेक मूल्ये योग्यरित्या वर्गीकृत करते, म्हणजेच सर्वात कमी **त्रुटी** निर्माण करते. ही त्रुटी E खालीलप्रमाणे **परसेप्ट्रॉन निकष**द्वारे परिभाषित केली जाते: + +E(w) = -∑wTxiti + +जिथे: + +* योग त्या प्रशिक्षण डेटा पॉइंट्स i वर घेतला जातो ज्यामुळे चुकीचे वर्गीकरण होते +* xi म्हणजे इनपुट डेटा, आणि ti हे नकारात्मक आणि सकारात्मक उदाहरणांसाठी अनुक्रमे -1 किंवा +1 असते. + +हा निकष वजन w च्या कार्यासारखा मानला जातो आणि आपल्याला त्याचे कमीकरण करायचे आहे. अनेकदा, **ग्रेडियंट डिसेंट** नावाची पद्धत वापरली जाते, ज्यामध्ये आपण काही प्रारंभिक वजन w(0) सह सुरुवात करतो आणि नंतर प्रत्येक टप्प्यावर खालील सूत्रानुसार वजन अद्यतनित करतो: + +w(t+1) = w(t) - η∇E(w) + +इथे η म्हणजे **लर्निंग रेट**, आणि ∇E(w) म्हणजे E चा **ग्रेडियंट**. ग्रेडियंटची गणना केल्यानंतर, आपल्याला मिळते: + +w(t+1) = w(t) + ∑ηxiti + +पायथनमधील अल्गोरिदम असे दिसते: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## निष्कर्ष + +या धड्यात, तुम्ही परसेप्ट्रॉनबद्दल शिकले, जो एक बायनरी वर्गीकरण मॉडेल आहे, आणि वजन व्हेक्टर वापरून त्याला कसे प्रशिक्षण द्यायचे ते शिकले. + +## 🚀 आव्हान + +जर तुम्हाला स्वतःचा परसेप्ट्रॉन तयार करण्याचा प्रयत्न करायचा असेल, तर [Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) वरील [या प्रयोगशाळेचा](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) प्रयत्न करा, ज्यामध्ये [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) वापरला जातो. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## पुनरावलोकन आणि स्व-अभ्यास + +परसेप्ट्रॉनचा वापर करून खेळण्याच्या समस्यांचे तसेच वास्तविक जीवनातील समस्यांचे निराकरण कसे करता येईल हे पाहण्यासाठी आणि शिकणे सुरू ठेवण्यासाठी [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) नोटबुककडे जा. + +परसेप्ट्रॉनबद्दल एक मनोरंजक [लेख](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) देखील आहे. + +## [असाइनमेंट](lab/README.md) + +या धड्यात, आपण बायनरी वर्गीकरण कार्यासाठी परसेप्ट्रॉन लागू केला आहे आणि दोन हस्तलिखित अंकांमध्ये वर्गीकरण करण्यासाठी त्याचा वापर केला आहे. या प्रयोगशाळेत, तुम्हाला अंक वर्गीकरणाची समस्या पूर्णपणे सोडवायची आहे, म्हणजे दिलेल्या प्रतिमेसाठी कोणता अंक सर्वात जास्त शक्यता आहे ते ठरवायचे आहे. + +* [सूचना](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/mr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..f676ade6 --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# मल्टी-क्लास वर्गीकरण परसेप्ट्रॉनसह + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +या धड्यात आपण विकसित केलेल्या MNIST हस्तलिखित अंकांच्या बायनरी वर्गीकरणासाठीच्या कोडचा वापर करून, एक मल्टी-क्लास वर्गीकृत तयार करा जो कोणताही अंक ओळखू शकेल. ट्रेन आणि टेस्ट डेटासेटवरील वर्गीकरण अचूकता मोजा आणि गोंधळ मॅट्रिक्स प्रिंट करा. + +## सूचना + +1. प्रत्येक अंकासाठी, "हा अंक विरुद्ध इतर सर्व अंक" अशा बायनरी वर्गीकृतसाठी डेटासेट तयार करा. +1. बायनरी वर्गीकरणासाठी 10 वेगवेगळे परसेप्ट्रॉन ट्रेन करा (प्रत्येक अंकासाठी एक). +1. इनपुट अंक वर्गीकृत करणारे एक फंक्शन परिभाषित करा. + +> **सूचना**: जर आपण सर्व 10 परसेप्ट्रॉनचे वजन एका मॅट्रिक्समध्ये एकत्र केले, तर आपण एका मॅट्रिक्स गुणाकाराद्वारे इनपुट अंकांवर सर्व 10 परसेप्ट्रॉन लागू करू शकतो. सर्वात संभाव्य अंक फक्त `argmax` ऑपरेशन लागू करून शोधला जाऊ शकतो. + +## प्रारंभिक नोटबुक + +[PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) उघडून प्रयोगशाळा सुरू करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/mr/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..93e8f7b6 --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# न्यूरल नेटवर्क्सची ओळख. मल्टी-लेयर्ड परसेप्ट्रॉन + +मागील विभागात, तुम्ही सर्वात सोप्या न्यूरल नेटवर्क मॉडेलबद्दल शिकलात - एक-स्तरीय परसेप्ट्रॉन, जो एक रेषीय दोन-वर्ग वर्गीकरण मॉडेल आहे. + +या विभागात आपण या मॉडेलला अधिक लवचिक फ्रेमवर्कमध्ये विस्तारित करू, ज्यामुळे आपल्याला खालील गोष्टी करता येतील: + +* दोन-वर्ग वर्गीकरणाशिवाय **बहु-वर्ग वर्गीकरण** करणे +* वर्गीकरणाशिवाय **प्रत्यावर्तन समस्या** सोडवणे +* रेषीयदृष्ट्या विभाज्य नसलेल्या वर्गांना विभक्त करणे + +आपण पायथनमध्ये आपले स्वतःचे मॉड्युलर फ्रेमवर्क देखील विकसित करू, जे आपल्याला वेगवेगळ्या न्यूरल नेटवर्क आर्किटेक्चर तयार करण्यास अनुमती देईल. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## मशीन लर्निंगचे औपचारिकरण + +चला मशीन लर्निंग समस्येचे औपचारिकरण करून सुरुवात करूया. समजा आपल्याकडे **X** नावाचा प्रशिक्षण डेटासेट आहे, ज्यामध्ये **Y** लेबल्स आहेत, आणि आपल्याला *f* नावाचे मॉडेल तयार करायचे आहे, जे सर्वात अचूक अंदाज करेल. अंदाजांची गुणवत्ता **हानी फंक्शन** ℒ ने मोजली जाते. खालील हानी फंक्शन्स सामान्यतः वापरली जातात: + +* प्रत्यावर्तन समस्येसाठी, जेव्हा आपल्याला एखादा आकडा भाकीत करायचा असतो, तेव्हा आपण **संपूर्ण त्रुटी** ∑i|f(x(i))-y(i)| किंवा **वर्गीय त्रुटी** ∑i(f(x(i))-y(i))2 वापरू शकतो. +* वर्गीकरणासाठी, आपण **0-1 हानी** (जी मूलत: मॉडेलची **अचूकता** आहे) किंवा **लॉजिस्टिक हानी** वापरतो. + +एक-स्तरीय परसेप्ट्रॉनसाठी, फंक्शन *f* हे रेषीय फंक्शन *f(x)=wx+b* म्हणून परिभाषित केले गेले होते (इथे *w* हे वजन मॅट्रिक्स आहे, *x* हे इनपुट वैशिष्ट्यांचे वेक्टर आहे, आणि *b* हे बायस वेक्टर आहे). वेगवेगळ्या न्यूरल नेटवर्क आर्किटेक्चरमध्ये, हे फंक्शन अधिक जटिल स्वरूप घेऊ शकते. + +> वर्गीकरणाच्या बाबतीत, संबंधित वर्गांचे संभाव्यते मिळवणे अनेकदा योग्य असते. नेटवर्क आउटपुट सामान्यीकृत करण्यासाठी, आपण **सॉफ्टमॅक्स** फंक्शन σ वापरतो, आणि फंक्शन *f* असे होते: *f(x)=σ(wx+b)* + +वरील *f* च्या परिभाषेत, *w* आणि *b* यांना **पॅरामीटर्स** θ=⟨*w,b*⟩ म्हणतात. दिलेल्या डेटासेट ⟨**X**,**Y**⟩ वर, आपण संपूर्ण डेटासेटवरील एकूण त्रुटी पॅरामीटर्स θ च्या फंक्शन म्हणून मोजू शकतो. + +> ✅ **न्यूरल नेटवर्क प्रशिक्षणाचे उद्दिष्ट म्हणजे पॅरामीटर्स θ बदलून त्रुटी कमी करणे आहे** + +## ग्रेडियंट डिसेंट ऑप्टिमायझेशन + +फंक्शन ऑप्टिमायझेशनसाठी एक प्रसिद्ध पद्धत म्हणजे **ग्रेडियंट डिसेंट**. यामध्ये कल्पना अशी आहे की आपण हानी फंक्शनचा पॅरामीटर्सच्या संदर्भात व्युत्पन्न (बहु-आयामी प्रकरणात **ग्रेडियंट** म्हणतात) काढू शकतो, आणि पॅरामीटर्स अशा प्रकारे बदलू शकतो की त्रुटी कमी होईल. हे पुढीलप्रमाणे औपचारिक केले जाऊ शकते: + +* पॅरामीटर्स काही यादृच्छिक मूल्यांनी प्रारंभ करा w(0), b(0) +* खालील चरण अनेक वेळा पुन्हा करा: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +प्रशिक्षणादरम्यान, ऑप्टिमायझेशन चरण संपूर्ण डेटासेट विचारात घेऊन गणना केली जातात (लक्षात ठेवा की हानी सर्व प्रशिक्षण नमुन्यांमधून एकूण म्हणून मोजली जाते). तथापि, प्रत्यक्षात आपण डेटासेटचे लहान भाग घेतो, ज्यांना **मिनीबॅचेस** म्हणतात, आणि डेटा उपसंचाच्या आधारे ग्रेडियंट्सची गणना करतो. कारण प्रत्येक वेळी उपसंच यादृच्छिकपणे घेतला जातो, अशा पद्धतीला **स्टोकॅस्टिक ग्रेडियंट डिसेंट** (SGD) म्हणतात. + +## मल्टी-लेयर्ड परसेप्ट्रॉन आणि बॅकप्रॉपगेशन + +एक-स्तरीय नेटवर्क, जसे आपण वर पाहिले, रेषीयदृष्ट्या विभाज्य वर्गांचे वर्गीकरण करण्यास सक्षम आहे. अधिक समृद्ध मॉडेल तयार करण्यासाठी, आपण नेटवर्कच्या अनेक स्तरांचे संयोजन करू शकतो. गणितीयदृष्ट्या याचा अर्थ असा होईल की फंक्शन *f* अधिक जटिल स्वरूप घेईल, आणि ते अनेक टप्प्यांमध्ये गणना केले जाईल: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +इथे, α ही **गैर-रेषीय सक्रियता फंक्शन** आहे, σ ही सॉफ्टमॅक्स फंक्शन आहे, आणि पॅरामीटर्स θ=<*w1,b1,w2,b2*> आहेत. + +ग्रेडियंट डिसेंट अल्गोरिदम तोच राहील, परंतु ग्रेडियंट्सची गणना करणे अधिक कठीण होईल. चेन डिफरेंशिएशन नियमाचा विचार करता, आपण व्युत्पन्ने खालीलप्रमाणे काढू शकतो: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ चेन डिफरेंशिएशन नियमाचा वापर हानी फंक्शनच्या पॅरामीटर्सच्या संदर्भातील व्युत्पन्ने काढण्यासाठी केला जातो. + +लक्षात घ्या की या सर्व अभिव्यक्तींचा डावीकडील भाग समान आहे, आणि म्हणूनच आपण प्रभावीपणे हानी फंक्शनपासून व्युत्पन्ने "मागे" संगणकीय ग्राफद्वारे जाऊन काढू शकतो. म्हणूनच मल्टी-लेयर्ड परसेप्ट्रॉन प्रशिक्षणाची पद्धत **बॅकप्रॉपगेशन**, किंवा 'बॅकप्रॉप' म्हणून ओळखली जाते. + +compute graph + +> TODO: प्रतिमेचा संदर्भ + +> ✅ आपण बॅकप्रॉपचा अधिक तपशीलवार अभ्यास आपल्या नोटबुक उदाहरणात करू. + +## निष्कर्ष + +या धड्यात, आपण आपले स्वतःचे न्यूरल नेटवर्क लायब्ररी तयार केले, आणि ते एका साध्या दोन-आयामी वर्गीकरण कार्यासाठी वापरले. + +## 🚀 आव्हान + +सोबतच्या नोटबुकमध्ये, तुम्ही मल्टी-लेयर्ड परसेप्ट्रॉन तयार करण्यासाठी आणि प्रशिक्षणासाठी स्वतःचे फ्रेमवर्क अंमलात आणाल. आधुनिक न्यूरल नेटवर्क्स कसे कार्य करतात हे तुम्हाला तपशीलवार पाहता येईल. + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) नोटबुककडे जा आणि त्यावर काम करा. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## पुनरावलोकन आणि स्व-अभ्यास + +बॅकप्रॉपगेशन हा AI आणि ML मध्ये वापरला जाणारा एक सामान्य अल्गोरिदम आहे, जो [अधिक तपशीलवार](https://wikipedia.org/wiki/Backpropagation) अभ्यास करण्यासारखा आहे. + +## [प्रकल्प](lab/README.md) + +या प्रयोगशाळेत, तुम्हाला या धड्यात तयार केलेल्या फ्रेमवर्कचा वापर करून MNIST हस्तलिखित अंक वर्गीकरण समस्या सोडवायची आहे. + +* [सूचना](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/mr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..b43136b8 --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# आमच्या स्वतःच्या फ्रेमवर्कसह MNIST वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +1-, 2- आणि 3-स्तरीय परसेप्ट्रॉन वापरून MNIST हस्तलिखित अंक वर्गीकरण समस्या सोडवा. आपण धड्यात विकसित केलेल्या न्यूरल नेटवर्क फ्रेमवर्कचा वापर करा. + +## प्रारंभिक नोटबुक + +[MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) उघडून प्रयोगशाळा सुरू करा. + +## प्रश्न + +या प्रयोगशाळेच्या परिणामी, खालील प्रश्नांची उत्तरे देण्याचा प्रयत्न करा: + +- इंटर-लेयर अॅक्टिवेशन फंक्शन नेटवर्कच्या कार्यक्षमतेवर परिणाम करते का? +- या कार्यासाठी आपल्याला 2- किंवा 3-स्तरीय नेटवर्कची आवश्यकता आहे का? +- नेटवर्क प्रशिक्षण देताना तुम्हाला काही समस्या आल्या का? विशेषतः जेव्हा स्तरांची संख्या वाढली. +- प्रशिक्षणादरम्यान नेटवर्कचे वजन कसे वागतात? वजनांचा कमाल abs मूल्य विरुद्ध epoch प्लॉट करून संबंध समजून घेऊ शकता. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/mr/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..cd7899c5 --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# न्यूरल नेटवर्क फ्रेमवर्क्स + +आम्ही आधीच शिकले आहे की, न्यूरल नेटवर्क्स प्रभावीपणे प्रशिक्षण देण्यासाठी आपल्याला दोन गोष्टी कराव्या लागतात: + +* टेन्सर्सवर ऑपरेट करणे, उदा. गुणाकार, बेरीज, आणि काही फंक्शन्स जसे की सिग्मॉइड किंवा सॉफ्टमॅक्सची गणना करणे +* सर्व अभिव्यक्तींचे ग्रेडियंट्स गणना करणे, जेणेकरून ग्रेडियंट डिसेंट ऑप्टिमायझेशन करता येईल + +## [पूर्व-व्याख्यान क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +`numpy` लायब्ररी पहिल्या भागासाठी उपयुक्त असली तरी, ग्रेडियंट्स गणना करण्यासाठी आपल्याला काही यंत्रणा आवश्यक आहे. [आमच्या फ्रेमवर्कमध्ये](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) जे आम्ही मागील विभागात विकसित केले आहे, आम्हाला `backward` पद्धतीमध्ये सर्व डेरिव्हेटिव्ह फंक्शन्स मॅन्युअली प्रोग्राम करावे लागले, जे बॅकप्रोपागेशन करते. आदर्शतः, फ्रेमवर्कने आपल्याला *कोणत्याही अभिव्यक्तीचे* ग्रेडियंट्स गणना करण्याची संधी द्यायला हवी. + +आणखी एक महत्त्वाची गोष्ट म्हणजे GPU किंवा इतर विशेषीकृत गणना युनिट्स, जसे की [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) वर गणना करण्याची क्षमता असणे. डीप न्यूरल नेटवर्क प्रशिक्षणासाठी *खूप* गणना आवश्यक असते, आणि GPU वर त्या गणनांना पॅरललाइज करणे खूप महत्त्वाचे आहे. + +> ✅ 'पॅरललाइज' म्हणजे गणनांना अनेक उपकरणांवर वितरित करणे. + +सध्या, दोन सर्वात लोकप्रिय न्यूरल फ्रेमवर्क्स आहेत: [TensorFlow](http://TensorFlow.org) आणि [PyTorch](https://pytorch.org/). दोन्ही CPU आणि GPU वर टेन्सर्ससह ऑपरेट करण्यासाठी लो-लेव्हल API प्रदान करतात. लो-लेव्हल API व्यतिरिक्त, उच्च-स्तरीय API देखील आहे, ज्याला [Keras](https://keras.io/) आणि [PyTorch Lightning](https://pytorchlightning.ai/) म्हणतात. + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**लो-लेव्हल APIs** दोन्ही फ्रेमवर्क्समध्ये तथाकथित **कंप्युटेशनल ग्राफ्स** तयार करण्याची क्षमता असते. हा ग्राफ दिलेल्या इनपुट पॅरामीटर्ससह आउटपुट (सामान्यतः लॉस फंक्शन) कसे गणना करायचे हे परिभाषित करतो आणि GPU वर गणना करण्यासाठी पुश केला जाऊ शकतो, जर तो उपलब्ध असेल. या ग्राफचे डिफरेंशिएशन करण्यासाठी आणि ग्रेडियंट्स गणना करण्यासाठी फंक्शन्स असतात, जे नंतर मॉडेल पॅरामीटर्स ऑप्टिमाइझ करण्यासाठी वापरले जाऊ शकतात. + +**हाय-लेव्हल APIs** न्यूरल नेटवर्क्सला **लेयर्सच्या अनुक्रम** म्हणून विचार करतात आणि बहुतेक न्यूरल नेटवर्क्स तयार करणे खूप सोपे करतात. मॉडेल प्रशिक्षण सामान्यतः डेटा तयार करणे आणि नंतर `fit` फंक्शन कॉल करणे आवश्यक असते. + +हाय-लेव्हल API आपल्याला सामान्य न्यूरल नेटवर्क्स खूप वेगाने तयार करण्याची परवानगी देते, अनेक तपशीलांबद्दल चिंता न करता. त्याच वेळी, लो-लेव्हल API प्रशिक्षण प्रक्रियेवर अधिक नियंत्रण देते, आणि म्हणूनच ते संशोधनात मोठ्या प्रमाणावर वापरले जाते, जेव्हा आपण नवीन न्यूरल नेटवर्क आर्किटेक्चरशी व्यवहार करत असतो. + +हे समजून घेणे देखील महत्त्वाचे आहे की आपण दोन्ही APIs एकत्र वापरू शकतो, उदा. आपण लो-लेव्हल API वापरून आपले स्वतःचे नेटवर्क लेयर आर्किटेक्चर विकसित करू शकतो आणि नंतर ते मोठ्या नेटवर्कमध्ये वापरू शकतो जे हाय-लेव्हल API वापरून तयार केले आणि प्रशिक्षित केले जाते. किंवा आपण हाय-लेव्हल API वापरून लेयर्सच्या अनुक्रमात नेटवर्क परिभाषित करू शकतो आणि नंतर आपला स्वतःचा लो-लेव्हल प्रशिक्षण लूप वापरून ऑप्टिमायझेशन करू शकतो. दोन्ही APIs समान मूलभूत संकल्पना वापरतात आणि ते एकत्र चांगले काम करण्यासाठी डिझाइन केलेले आहेत. + +## शिक्षण + +या कोर्समध्ये, आम्ही बहुतेक सामग्री PyTorch आणि TensorFlow साठी ऑफर करतो. आपण आपले पसंतीचे फ्रेमवर्क निवडू शकता आणि फक्त संबंधित नोटबुक्समधून जाऊ शकता. जर आपल्याला कोणते फ्रेमवर्क निवडायचे याची खात्री नसेल, तर **PyTorch vs. TensorFlow** बद्दल इंटरनेटवरील काही चर्चा वाचा. आपण दोन्ही फ्रेमवर्क्सकडे पाहून चांगले समजून घेऊ शकता. + +जिथे शक्य असेल तिथे, सोपेपणासाठी आम्ही हाय-लेव्हल APIs वापरू. तथापि, आम्हाला विश्वास आहे की न्यूरल नेटवर्क्स कसे कार्य करतात हे मूलभूत पातळीवरून समजून घेणे महत्त्वाचे आहे, म्हणून सुरुवातीला आम्ही लो-लेव्हल API आणि टेन्सर्ससह काम करून सुरुवात करतो. तथापि, जर आपल्याला वेगाने सुरुवात करायची असेल आणि या तपशीलांवर वेळ घालवायचा नसेल, तर आपण ते वगळू शकता आणि थेट हाय-लेव्हल API नोटबुक्समध्ये जाऊ शकता. + +## ✍️ सराव: फ्रेमवर्क्स + +पुढील नोटबुक्समध्ये आपले शिक्षण सुरू ठेवा: + +Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +फ्रेमवर्क्समध्ये प्राविण्य मिळवल्यानंतर, ओव्हरफिटिंगची संकल्पना पुन्हा समजून घेऊया. + +# ओव्हरफिटिंग + +ओव्हरफिटिंग ही मशीन लर्निंगमधील एक अत्यंत महत्त्वाची संकल्पना आहे, आणि ती योग्य प्रकारे समजून घेणे खूप महत्त्वाचे आहे! + +पाच डॉट्स (ग्राफवर `x` ने दर्शविलेले) अंदाज करण्याच्या खालील समस्येचा विचार करा: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.mr.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.mr.jpg) +-------------------------|-------------------------- +**रेखीय मॉडेल, 2 पॅरामीटर्स** | **नॉन-रेखीय मॉडेल, 7 पॅरामीटर्स** +प्रशिक्षण त्रुटी = 5.3 | प्रशिक्षण त्रुटी = 0 +व्हॅलिडेशन त्रुटी = 5.1 | व्हॅलिडेशन त्रुटी = 20 + +* डावीकडे, आपल्याला चांगली सरळ रेषा अंदाज दिसतो. कारण पॅरामीटर्सची संख्या योग्य आहे, मॉडेल पॉइंट वितरणामागील कल्पना योग्य प्रकारे समजते. +* उजवीकडे, मॉडेल खूप शक्तिशाली आहे. कारण आपल्याकडे फक्त 5 पॉइंट्स आहेत आणि मॉडेलमध्ये 7 पॅरामीटर्स आहेत, ते अशा प्रकारे समायोजित करू शकते की सर्व पॉइंट्समधून जाऊ शकते, ज्यामुळे प्रशिक्षण त्रुटी 0 होते. तथापि, यामुळे मॉडेलला डेटामागील योग्य पॅटर्न समजण्यापासून रोखले जाते, त्यामुळे व्हॅलिडेशन त्रुटी खूप जास्त आहे. + +मॉडेलची समृद्धता (पॅरामीटर्सची संख्या) आणि प्रशिक्षण नमुन्यांची संख्या यामध्ये योग्य संतुलन साधणे खूप महत्त्वाचे आहे. + +## ओव्हरफिटिंग का होते + + * प्रशिक्षण डेटा पुरेसा नसणे + * मॉडेल खूप शक्तिशाली असणे + * इनपुट डेटामध्ये खूप जास्त आवाज असणे + +## ओव्हरफिटिंग कसे ओळखावे + +वरील ग्राफवरून आपण पाहू शकतो की, ओव्हरफिटिंग खूप कमी प्रशिक्षण त्रुटी आणि खूप जास्त व्हॅलिडेशन त्रुटीने ओळखले जाऊ शकते. सामान्यतः प्रशिक्षणादरम्यान आपण पाहतो की प्रशिक्षण आणि व्हॅलिडेशन त्रुटी कमी होऊ लागतात, आणि नंतर काही वेळाने व्हॅलिडेशन त्रुटी कमी होणे थांबते आणि वाढू लागते. हे ओव्हरफिटिंगचे चिन्ह असेल, आणि आपण या टप्प्यावर प्रशिक्षण थांबवावे (किंवा किमान मॉडेलचे स्नॅपशॉट घ्यावे) याचा संकेत असेल. + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.mr.png) + +## ओव्हरफिटिंग कसे टाळावे + +जर आपल्याला दिसत असेल की ओव्हरफिटिंग होत आहे, तर आपण खालीलपैकी एक करू शकता: + + * प्रशिक्षण डेटाची मात्रा वाढवा + * मॉडेलची जटिलता कमी करा + * काही [रेग्युलरायझेशन तंत्र](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) वापरा, जसे की [ड्रॉपआउट](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), ज्याचा आपण नंतर विचार करू. + +## ओव्हरफिटिंग आणि बायस-व्हेरियन्स ट्रेडऑफ + +ओव्हरफिटिंग हा आकडेवारीतील [बायस-व्हेरियन्स ट्रेडऑफ](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) नावाच्या अधिक सामान्य समस्येचा एक प्रकार आहे. जर आपण आपल्या मॉडेलमधील त्रुटीचे संभाव्य स्रोत विचारात घेतले, तर आपल्याला दोन प्रकारच्या त्रुटी दिसतात: + +* **बायस त्रुटी** आमच्या अल्गोरिदमला प्रशिक्षण डेटामधील संबंध योग्य प्रकारे कॅप्चर करण्यात अक्षम असल्यामुळे होतात. हे आमचे मॉडेल पुरेसे शक्तिशाली नसल्यामुळे होऊ शकते (**अंडरफिटिंग**). +* **व्हेरियन्स त्रुटी**, जे मॉडेल इनपुट डेटामधील आवाजाचा अंदाज घेत आहे, त्याऐवजी अर्थपूर्ण संबंध (**ओव्हरफिटिंग**) कॅप्चर करत आहे. + +प्रशिक्षणादरम्यान, बायस त्रुटी कमी होते (कारण आमचे मॉडेल डेटा अंदाज घेण्यास शिकते), आणि व्हेरियन्स त्रुटी वाढते. ओव्हरफिटिंग टाळण्यासाठी प्रशिक्षण थांबवणे - मॅन्युअली (जेव्हा आम्ही ओव्हरफिटिंग ओळखतो) किंवा स्वयंचलितपणे (रेग्युलरायझेशनचा परिचय करून) - महत्त्वाचे आहे. + +## निष्कर्ष + +या धड्यात, आपण दोन सर्वात लोकप्रिय AI फ्रेमवर्क्स, TensorFlow आणि PyTorch साठी विविध APIs मधील फरक शिकला. याशिवाय, आपण एक अत्यंत महत्त्वाचा विषय, ओव्हरफिटिंग, याबद्दल शिकला. + +## 🚀 आव्हान + +संबंधित नोटबुक्समध्ये, आपल्याला 'कार्य' तळाशी सापडतील; नोटबुक्समधून काम करा आणि कार्ये पूर्ण करा. + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## पुनरावलोकन आणि स्व-अभ्यास + +खालील विषयांवर काही संशोधन करा: + +- TensorFlow +- PyTorch +- ओव्हरफिटिंग + +खालील प्रश्न स्वतःला विचारा: + +- TensorFlow आणि PyTorch यामध्ये काय फरक आहे? +- ओव्हरफिटिंग आणि अंडरफिटिंग यामध्ये काय फरक आहे? + +## [असाइनमेंट](lab/README.md) + +या लॅबमध्ये, आपल्याला PyTorch किंवा TensorFlow वापरून सिंगल- आणि मल्टी-लेयर्ड पूर्णपणे कनेक्टेड नेटवर्क्ससह दोन वर्गीकरण समस्या सोडवण्यास सांगितले आहे. + +* [सूचना](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/mr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..a206ced7 --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# PyTorch/TensorFlow सह वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +PyTorch किंवा TensorFlow वापरून सिंगल आणि मल्टी-लेयर्ड फुली-कनेक्टेड नेटवर्क्ससह दोन वर्गीकरण समस्या सोडवा: + +1. **[आयरिस वर्गीकरण](https://en.wikipedia.org/wiki/Iris_flower_data_set)** समस्या - टॅब्युलर इनपुट डेटासह समस्या, जी पारंपरिक मशीन लर्निंगद्वारे हाताळली जाऊ शकते, याचे एक उदाहरण. तुमचे उद्दिष्ट 4 संख्यात्मक पॅरामीटर्सच्या आधारे आयरिसेसना 3 वर्गांमध्ये वर्गीकृत करणे आहे. +1. **MNIST** हस्तलिखित अंक वर्गीकरण समस्या, जी आपण यापूर्वी पाहिली आहे. + +सर्वोत्तम अचूकता मिळवण्यासाठी विविध नेटवर्क आर्किटेक्चर्स वापरून पहा. + +## प्रारंभिक नोटबुक + +[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) उघडून प्रयोगशाळा सुरू करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/3-NeuralNetworks/README.md b/translations/mr/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..788db90f --- /dev/null +++ b/translations/mr/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# न्यूरल नेटवर्क्सची ओळख + +![न्यूरल नेटवर्क्सच्या ओळखीचा सारांश एका चित्रात](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.mr.png) + +जसे आपण प्रस्तावनेत चर्चा केली, बुद्धिमत्ता साध्य करण्याच्या मार्गांपैकी एक म्हणजे **कंप्युटर मॉडेल** किंवा **कृत्रिम मेंदू** तयार करणे. विसाव्या शतकाच्या मध्यापासून संशोधकांनी विविध गणितीय मॉडेल्सचा प्रयत्न केला, आणि अलीकडच्या वर्षांत हा दृष्टिकोन अत्यंत यशस्वी ठरला. मेंदूच्या अशा गणितीय मॉडेल्सना **न्यूरल नेटवर्क्स** म्हणतात. + +> कधी कधी न्यूरल नेटवर्क्सना *कृत्रिम न्यूरल नेटवर्क्स* (Artificial Neural Networks), ANNs असेही म्हणतात, जेणेकरून आपण खऱ्या न्यूरॉन्सच्या नेटवर्क्सबद्दल नव्हे तर मॉडेल्सबद्दल बोलत आहोत हे स्पष्ट होईल. + +## मशीन लर्निंग + +न्यूरल नेटवर्क्स ही **मशीन लर्निंग** नावाच्या मोठ्या शाखेचा एक भाग आहे, ज्याचा उद्देश डेटाचा वापर करून समस्यांचे निराकरण करणारी संगणकीय मॉडेल्स तयार करणे आहे. मशीन लर्निंग हा कृत्रिम बुद्धिमत्तेचा एक महत्त्वाचा भाग आहे, परंतु या अभ्यासक्रमात आपण पारंपरिक मशीन लर्निंग कव्हर करणार नाही. + +> पारंपरिक मशीन लर्निंगबद्दल अधिक जाणून घेण्यासाठी आमचा स्वतंत्र **[मशीन लर्निंग फॉर बिगिनर्स](http://github.com/microsoft/ml-for-beginners)** अभ्यासक्रम पहा. + +मशीन लर्निंगमध्ये, आपण गृहीत धरतो की आपल्याकडे काही उदाहरणांचा डेटासेट **X** आणि त्यास अनुरूप आउटपुट मूल्ये **Y** आहेत. उदाहरणे ही सहसा **वैशिष्ट्ये** असलेल्या N-आयामी वेक्टर असतात, आणि आउटपुट्सना **लेबल्स** म्हणतात. + +आपण मशीन लर्निंगमधील दोन सर्वसामान्य समस्या विचारात घेऊ: + +* **वर्गीकरण (Classification)**, जिथे आपल्याला इनपुट ऑब्जेक्टला दोन किंवा अधिक वर्गांमध्ये वर्गीकृत करायचे आहे. +* **प्रत्यावर्तन (Regression)**, जिथे आपल्याला प्रत्येक इनपुट नमुन्यासाठी एक संख्यात्मक मूल्य भाकीत करायचे आहे. + +> जेव्हा इनपुट्स आणि आउटपुट्सना टेन्सर्स म्हणून दर्शवले जाते, तेव्हा इनपुट डेटासेट M×N आकाराच्या मॅट्रिक्समध्ये असते, जिथे M म्हणजे नमुन्यांची संख्या आणि N म्हणजे वैशिष्ट्यांची संख्या. आउटपुट लेबल्स Y हा M आकाराचा वेक्टर असतो. + +या अभ्यासक्रमात, आपण केवळ न्यूरल नेटवर्क मॉडेल्सवर लक्ष केंद्रित करू. + +## न्यूरॉनचे मॉडेल + +जीवशास्त्रातून आपल्याला माहित आहे की आपला मेंदू न्यूरल पेशींनी बनलेला आहे, ज्यामध्ये प्रत्येक पेशीला अनेक "इनपुट्स" (अॅक्सॉन्स) आणि एक आउटपुट (डेंड्राइट) असतो. अॅक्सॉन्स आणि डेंड्राइट्स विद्युत संकेत वाहून नेऊ शकतात, आणि अॅक्सॉन्स व डेंड्राइट्समधील जोडणी वेगवेगळ्या प्रवाहक्षमतेचे प्रदर्शन करू शकते (न्यूरोमेडिएटर्सद्वारे नियंत्रित). + +![न्यूरॉनचे मॉडेल](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.mr.jpg) | ![न्यूरॉनचे मॉडेल](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.mr.png) +----|---- +खरा न्यूरॉन *([Wikipedia](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) मधील प्रतिमा)* | कृत्रिम न्यूरॉन *(लेखकाने तयार केलेली प्रतिमा)* + +त्यामुळे, न्यूरॉनचे सर्वात सोपे गणितीय मॉडेल अनेक इनपुट्स X1, ..., XN आणि एक आउटपुट Y, तसेच W1, ..., WN नावाच्या वजनांच्या मालिकेचा समावेश करते. आउटपुटची गणना खालीलप्रमाणे केली जाते: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +जिथे f ही काही नॉन-लिनिअर **सक्रियता फंक्शन** आहे. + +> न्यूरॉनचे सुरुवातीचे मॉडेल्स वॉरेन मॅककुलॉक आणि वॉल्टर पिट्स यांनी 1943 मध्ये लिहिलेल्या [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) या क्लासिकल पेपरमध्ये वर्णन केले होते. डोनाल्ड हेब यांनी त्यांच्या "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" या पुस्तकात या नेटवर्क्सना प्रशिक्षण देण्याचा मार्ग सुचवला. + +## या विभागात + +या विभागात आपण शिकू: +* [परसेप्ट्रॉन](03-Perceptron/README.md), दोन-वर्ग वर्गीकरणासाठी सर्वात जुने न्यूरल नेटवर्क मॉडेल्सपैकी एक +* [मल्टि-लेयर्ड नेटवर्क्स](04-OwnFramework/README.md) आणि त्यासोबतचा नोटबुक [आपले स्वतःचे फ्रेमवर्क तयार करणे](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [न्यूरल नेटवर्क फ्रेमवर्क्स](05-Frameworks/README.md), यासह नोटबुक्स: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) आणि [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [ओव्हरफिटिंग](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/mr/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..c0af88f9 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# संगणकीय दृष्टिकोनाची ओळख + +[संगणकीय दृष्टिकोन](https://wikipedia.org/wiki/Computer_vision) हा एक शास्त्रशाखा आहे ज्याचा उद्देश संगणकांना डिजिटल प्रतिमांचे उच्च-स्तरीय आकलन मिळवून देणे आहे. ही व्याख्या खूप व्यापक आहे, कारण *आकलन* याचा अर्थ अनेक गोष्टींमध्ये होऊ शकतो, जसे की प्रतिमेत एखादी वस्तू शोधणे (**वस्तू शोधणे**), काय घडत आहे हे समजणे (**घटना शोधणे**), प्रतिमेचे वर्णन मजकुरात करणे, किंवा दृश्याचे 3D पुनर्रचना करणे. मानवी प्रतिमांशी संबंधित काही विशेष कार्ये देखील आहेत: वय आणि भावना अंदाज, चेहरा शोधणे आणि ओळखणे, आणि 3D पोझ अंदाज, इत्यादी. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +संगणकीय दृष्टिकोनातील सर्वात सोप्या कार्यांपैकी एक म्हणजे **प्रतिमा वर्गीकरण**. + +संगणकीय दृष्टिकोनाला अनेकदा AI चा एक भाग मानले जाते. आजकाल, संगणकीय दृष्टिकोनातील बहुतेक कार्ये न्यूरल नेटवर्क्सचा वापर करून सोडवली जातात. या विभागात, संगणकीय दृष्टिकोनासाठी वापरल्या जाणाऱ्या [कन्व्होल्यूशनल न्यूरल नेटवर्क्स](../07-ConvNets/README.md) बद्दल अधिक जाणून घेऊ. + +तथापि, प्रतिमा न्यूरल नेटवर्कला पाठवण्यापूर्वी, अनेकदा प्रतिमेची गुणवत्ता सुधारण्यासाठी काही अल्गोरिदमिक तंत्रांचा वापर करणे उपयुक्त ठरते. + +प्रतिमा प्रक्रिया करण्यासाठी अनेक Python लायब्ररी उपलब्ध आहेत: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** विविध प्रतिमा स्वरूप वाचण्यासाठी/लिहिण्यासाठी वापरले जाऊ शकते. हे ffmpeg ला देखील समर्थन देते, जे व्हिडिओ फ्रेम्सना प्रतिमांमध्ये रूपांतरित करण्यासाठी उपयुक्त साधन आहे. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL म्हणूनही ओळखले जाते) अधिक शक्तिशाली आहे आणि प्रतिमेचे रूपांतर, रंगसंगती समायोजन, इत्यादीसारख्या प्रतिमा हाताळणीला समर्थन देते. +* **[OpenCV](https://opencv.org/)** ही C++ मध्ये लिहिलेली एक शक्तिशाली प्रतिमा प्रक्रिया लायब्ररी आहे, जी प्रतिमा प्रक्रियेसाठी *डी फॅक्टो* मानक बनली आहे. याला Python इंटरफेस देखील आहे. +* **[dlib](http://dlib.net/)** ही C++ लायब्ररी आहे जी अनेक मशीन लर्निंग अल्गोरिदम अंमलात आणते, ज्यामध्ये काही संगणकीय दृष्टिकोन अल्गोरिदम देखील समाविष्ट आहेत. याला Python इंटरफेस आहे आणि चेहरा व चेहऱ्याच्या वैशिष्ट्यांचा शोध घेण्यासारख्या आव्हानात्मक कार्यांसाठी वापरले जाऊ शकते. + +## OpenCV + +[OpenCV](https://opencv.org/) ला प्रतिमा प्रक्रियेसाठी *डी फॅक्टो* मानक मानले जाते. यात C++ मध्ये अंमलात आणलेले अनेक उपयुक्त अल्गोरिदम आहेत. तुम्ही OpenCV ला Python मधून देखील कॉल करू शकता. + +OpenCV शिकण्यासाठी एक चांगले ठिकाण म्हणजे [हे Learn OpenCV कोर्स](https://learnopencv.com/getting-started-with-opencv/). आमच्या अभ्यासक्रमात, आमचे उद्दिष्ट OpenCV शिकणे नाही, तर तुम्हाला काही उदाहरणे दाखवणे आहे की ते कधी आणि कसे वापरले जाऊ शकते. + +### प्रतिमा लोड करणे + +Python मध्ये प्रतिमा सोयीस्करपणे NumPy ऍरेद्वारे दर्शविल्या जाऊ शकतात. उदाहरणार्थ, 320x200 पिक्सेल आकाराच्या ग्रेस्केल प्रतिमा 200x320 ऍरेमध्ये संग्रहित केल्या जातील, आणि त्याच परिमाणाच्या रंगीत प्रतिमांचे स्वरूप 200x320x3 असेल (3 रंग चॅनेलसाठी). प्रतिमा लोड करण्यासाठी, तुम्ही खालील कोड वापरू शकता: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +परंपरेने, OpenCV रंगीत प्रतिमांसाठी BGR (ब्लू-ग्रीन-रेड) एन्कोडिंग वापरते, तर Python मधील इतर साधने अधिक पारंपरिक RGB (रेड-ग्रीन-ब्लू) वापरतात. प्रतिमा योग्य दिसण्यासाठी, तुम्हाला ती RGB रंग जागेत रूपांतरित करणे आवश्यक आहे, NumPy ऍरेमधील परिमाणे अदलाबदल करून किंवा OpenCV फंक्शन कॉल करून: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +`cvtColor` फंक्शनचा वापर इतर रंग जागा रूपांतरणांसाठी देखील केला जाऊ शकतो, जसे की प्रतिमेला ग्रेस्केलमध्ये किंवा HSV (ह्यू-सॅच्युरेशन-वॅल्यू) रंग जागेत रूपांतरित करणे. + +तुम्ही OpenCV चा वापर करून व्हिडिओ फ्रेम-बाय-फ्रेम देखील लोड करू शकता - याचे उदाहरण [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मध्ये दिले आहे. + +### प्रतिमा प्रक्रिया + +प्रतिमा न्यूरल नेटवर्कला पाठवण्यापूर्वी, तुम्हाला काही पूर्व-प्रक्रिया चरण लागू करायचे असतील. OpenCV अनेक गोष्टी करू शकते, जसे की: + +* `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` वापरून प्रतिमेचे **आकार बदलणे** +* `im = cv2.medianBlur(im,3)` किंवा `im = cv2.GaussianBlur(im, (3,3), 0)` वापरून प्रतिमेचे **ब्लरिंग** +* प्रतिमेचा **तेजस्विता आणि कॉन्ट्रास्ट** बदलणे, जे [या Stackoverflow नोट](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) मध्ये वर्णन केल्याप्रमाणे NumPy ऍरे मॅनिप्युलेशनद्वारे केले जाऊ शकते. +* [थ्रेशोल्डिंग](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) वापरणे, `cv2.threshold`/`cv2.adaptiveThreshold` फंक्शन्स कॉल करून, जे तेजस्विता किंवा कॉन्ट्रास्ट समायोजनापेक्षा अधिक उपयुक्त ठरते. +* प्रतिमेवर विविध [रूपांतरणे](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) लागू करणे: + - **[अफाइन रूपांतरणे](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)**, जेव्हा तुम्हाला प्रतिमेतील तीन बिंदूंच्या स्त्रोत आणि गंतव्य स्थान माहित असते आणि तुम्हाला रोटेशन, आकार बदलणे आणि तिरकस करणे एकत्र करायचे असते. अफाइन रूपांतरणे समांतर रेषा समांतर ठेवतात. + - **[परिप्रेक्ष्य रूपांतरणे](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)**, जेव्हा तुम्हाला प्रतिमेतील चार बिंदूंच्या स्त्रोत आणि गंतव्य स्थान माहित असते. उदाहरणार्थ, जर तुम्ही स्मार्टफोन कॅमेराद्वारे कोणत्यातरी कोनातून आयताकृती दस्तऐवजाचे चित्र घेतले, आणि तुम्हाला दस्तऐवजाचे आयताकृती प्रतिमाच हवी असेल. +* **[ऑप्टिकल फ्लो](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** वापरून प्रतिमेमध्ये हालचाल समजून घेणे. + +## संगणकीय दृष्टिकोनाचा वापर करण्याची उदाहरणे + +आमच्या [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मध्ये, आम्ही संगणकीय दृष्टिकोनाचा वापर करून विशिष्ट कार्ये कशी केली जाऊ शकतात याची काही उदाहरणे दिली आहेत: + +* **ब्रेल पुस्तकाच्या छायाचित्राची पूर्व-प्रक्रिया करणे**. आम्ही थ्रेशोल्डिंग, वैशिष्ट्य शोधणे, परिप्रेक्ष्य रूपांतरण आणि NumPy मॅनिप्युलेशनचा वापर करून ब्रेल चिन्हे वेगळी कशी करता येतील यावर लक्ष केंद्रित करतो, जेणेकरून ती पुढे न्यूरल नेटवर्कद्वारे वर्गीकृत केली जाऊ शकतील. + +![ब्रेल प्रतिमा](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.mr.jpeg) | ![पूर्व-प्रक्रिया केलेली ब्रेल प्रतिमा](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.mr.png) | ![ब्रेल चिन्हे](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.mr.png) +----|-----|----- + +> प्रतिमा [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मधून + +* **फ्रेम फरक वापरून व्हिडिओमध्ये हालचाल शोधणे**. जर कॅमेरा स्थिर असेल, तर कॅमेरा फीडमधील फ्रेम्स एकमेकांसारख्या असाव्यात. फ्रेम्स ऍरे म्हणून दर्शविल्या जात असल्याने, दोन सलग फ्रेम्ससाठी ऍरे वजा केल्याने पिक्सेल फरक मिळतो, जो स्थिर फ्रेम्ससाठी कमी असतो, आणि प्रतिमेमध्ये लक्षणीय हालचाल झाल्यास जास्त होतो. + +![व्हिडिओ फ्रेम्स आणि फ्रेम फरकांची प्रतिमा](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.mr.png) + +> प्रतिमा [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मधून + +* **ऑप्टिकल फ्लो वापरून हालचाल शोधणे**. [ऑप्टिकल फ्लो](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) आम्हाला व्हिडिओ फ्रेम्सवरील वैयक्तिक पिक्सेल कसे हलतात हे समजून घेण्यास अनुमती देते. ऑप्टिकल फ्लोचे दोन प्रकार आहेत: + + - **डेंस ऑप्टिकल फ्लो** प्रत्येक पिक्सेलसाठी तो कुठे हलतो याचा वेक्टर फील्ड तयार करतो. + - **स्पार्स ऑप्टिकल फ्लो** प्रतिमेतील काही ठळक वैशिष्ट्ये (उदा. कडा) घेऊन, फ्रेम-टू-फ्रेम त्यांचा मार्ग तयार करतो. + +![ऑप्टिकल फ्लोची प्रतिमा](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.mr.png) + +> प्रतिमा [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मधून + +## ✍️ उदाहरण नोटबुक्स: OpenCV [OpenCV अॅक्शनमध्ये वापरून पहा](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +चला [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) एक्सप्लोर करून OpenCV सह काही प्रयोग करूया. + +## निष्कर्ष + +कधी कधी, हालचाल शोधणे किंवा बोटांच्या टोकांचा शोध घेणे यासारखी तुलनेने क्लिष्ट कार्ये केवळ संगणकीय दृष्टिकोनाने सोडवली जाऊ शकतात. त्यामुळे, संगणकीय दृष्टिकोनाच्या मूलभूत तंत्रांची आणि OpenCV सारख्या लायब्ररी काय करू शकतात याची माहिती असणे खूप उपयुक्त आहे. + +## 🚀 आव्हान + +AI शोमधील [हा व्हिडिओ](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) पाहा, ज्यामध्ये Cortic Tigers प्रकल्पाबद्दल आणि त्यांनी संगणकीय दृष्टिकोन कार्ये लोकांसाठी सुलभ करण्यासाठी रोबोटद्वारे ब्लॉक-आधारित उपाय कसा तयार केला याबद्दल जाणून घ्या. या क्षेत्रात नवीन शिकणाऱ्यांना मदत करणाऱ्या अशा इतर प्रकल्पांवर संशोधन करा. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## पुनरावलोकन आणि स्व-अभ्यास + +ऑप्टिकल फ्लोबद्दल अधिक वाचा [या उत्कृष्ट ट्युटोरियलमध्ये](https://learnopencv.com/optical-flow-in-opencv/). + +## [असाइनमेंट](lab/README.md) + +या प्रयोगशाळेत, तुम्ही साध्या हालचालींसह एक व्हिडिओ घ्याल, आणि तुमचे उद्दिष्ट ऑप्टिकल फ्लो वापरून वर/खाली/डावीकडे/उजवीकडे हालचाली काढणे असेल. + +पाम मूव्हमेंट फ्रेम + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/mr/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..201a4758 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# ऑप्टिकल फ्लो वापरून हालचाली शोधणे + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) मधील प्रयोग. + +## कार्य + +[हा व्हिडिओ](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) विचारात घ्या, ज्यामध्ये एका व्यक्तीचा तळहात स्थिर पार्श्वभूमीवर डावीकडे/उजवीकडे/वर/खाली हलतो. + +**तुमचे उद्दिष्ट** ऑप्टिकल फ्लो वापरून व्हिडिओच्या कोणत्या भागांमध्ये वर/खाली/डावीकडे/उजवीकडे हालचाली आहेत हे शोधणे असेल. + +**अतिरिक्त उद्दिष्ट** त्वचेच्या रंगाचा वापर करून तळहात/बोटांची हालचाल ट्रॅक करणे असेल, जसे [या ब्लॉग पोस्टमध्ये](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) किंवा [येथे](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) वर्णन केले आहे. + +## सुरुवातीचा नोटबुक + +[MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) उघडून प्रयोग सुरू करा. + +## महत्त्वाचे मुद्दे + +कधी कधी, हालचाल शोधणे किंवा बोटांच्या टोकांचा शोध घेणे यासारखी तुलनेने क्लिष्ट कामे फक्त संगणकीय दृष्टिकोन वापरून सोडवता येतात. त्यामुळे OpenCV सारखी लायब्ररी काय करू शकते हे जाणून घेणे खूप उपयुक्त ठरते. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/mr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..1d62c006 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# प्रसिद्ध CNN आर्किटेक्चर्स + +### VGG-16 + +VGG-16 हा एक नेटवर्क आहे ज्याने 2014 मध्ये ImageNet टॉप-5 वर्गीकरणात 92.7% अचूकता मिळवली. यामध्ये खालील स्तर रचना आहे: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mr.jpg) + +जसे तुम्ही पाहू शकता, VGG पारंपरिक पिरॅमिड आर्किटेक्चरचे अनुसरण करते, जे कॉनव्होल्यूशन-पूलिंग स्तरांचा क्रम आहे. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mr.jpg) + +> [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) मधील प्रतिमा + +### ResNet + +ResNet ही मॉडेल्सची एक श्रेणी आहे जी Microsoft Research ने 2015 मध्ये प्रस्तावित केली. ResNet चा मुख्य विचार **रेसिड्युअल ब्लॉक्स** वापरण्याचा आहे: + + + +> [या पेपर](https://arxiv.org/pdf/1512.03385.pdf) मधील प्रतिमा + +ओळख पास-थ्रू वापरण्याचे कारण म्हणजे आपला स्तर **मागील स्तराच्या निकाल आणि रेसिड्युअल ब्लॉकच्या आउटपुटमधील फरक** अंदाज करतो - म्हणूनच नाव *रेसिड्युअल*. हे ब्लॉक्स प्रशिक्षणासाठी खूप सोपे आहेत, आणि अशा शेकडो ब्लॉक्ससह नेटवर्क तयार करता येते (सर्वात सामान्य प्रकार म्हणजे ResNet-52, ResNet-101 आणि ResNet-152). + +तुम्ही या नेटवर्कला डेटासेटच्या जटिलतेनुसार समायोजित करण्यास सक्षम असल्याचे देखील विचार करू शकता. सुरुवातीला, जेव्हा तुम्ही नेटवर्क प्रशिक्षण सुरू करता, तेव्हा वजनाचे मूल्य लहान असते, आणि बहुतेक सिग्नल पास-थ्रू ओळख स्तरांमधून जातो. प्रशिक्षण जसजसे पुढे जाते आणि वजन मोठे होते, तसतसे नेटवर्क पॅरामीटर्सचे महत्त्व वाढते, आणि नेटवर्क आवश्यक अभिव्यक्ती शक्ती समायोजित करते जेणेकरून प्रशिक्षण प्रतिमा योग्यरित्या वर्गीकृत करता येतील. + +### Google Inception + +Google Inception आर्किटेक्चर या कल्पनेला पुढे नेते आणि प्रत्येक नेटवर्क स्तराला अनेक वेगवेगळ्या मार्गांच्या संयोजनाने तयार करते: + + + +> [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) मधील प्रतिमा + +येथे, 1x1 कॉनव्होल्यूशन्सची भूमिका अधोरेखित करणे आवश्यक आहे, कारण सुरुवातीला त्याचा अर्थ लागत नाही. 1x1 फिल्टरसह प्रतिमेवर का चालवावे लागेल? परंतु, तुम्हाला लक्षात ठेवावे लागेल की कॉनव्होल्यूशन फिल्टर्स अनेक खोली चॅनेल्ससह कार्य करतात (मूळतः - RGB रंग, नंतरच्या स्तरांमध्ये - वेगवेगळ्या फिल्टर्ससाठी चॅनेल्स), आणि 1x1 कॉनव्होल्यूशन वेगवेगळ्या ट्रेन करण्यायोग्य वजनांचा वापर करून इनपुट चॅनेल्स एकत्र मिसळण्यासाठी वापरले जाते. याकडे चॅनेल डायमेंशनवर डाउनसॅम्पलिंग (पूलिंग) म्हणून देखील पाहिले जाऊ शकते. + +यावर [एक चांगला ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) आहे, आणि [मूळ पेपर](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet ही कमी आकाराची मॉडेल्सची श्रेणी आहे, जी मोबाइल डिव्हाइससाठी योग्य आहे. जर तुमच्याकडे संसाधने कमी असतील आणि थोडी अचूकता गमावण्याची तयारी असेल तर त्यांचा वापर करा. यामागील मुख्य कल्पना म्हणजे **डेप्थवाइज सेपरेबल कॉनव्होल्यूशन**, ज्यामुळे कॉनव्होल्यूशन फिल्टर्सचे प्रतिनिधित्व स्पॅशियल कॉनव्होल्यूशन्स आणि खोली चॅनेल्सवर 1x1 कॉनव्होल्यूशनच्या संयोजनाने करता येते. यामुळे पॅरामीटर्सची संख्या लक्षणीयरीत्या कमी होते, ज्यामुळे नेटवर्क आकाराने लहान होते आणि कमी डेटासह प्रशिक्षण देणे सोपे होते. + +MobileNet वर [एक चांगला ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) येथे आहे. + +## निष्कर्ष + +या युनिटमध्ये, तुम्ही संगणक दृष्टी न्यूरल नेटवर्क्समागील मुख्य संकल्पना शिकल्या - कॉनव्होल्यूशन नेटवर्क्स. प्रतिमा वर्गीकरण, ऑब्जेक्ट डिटेक्शन, आणि प्रतिमा निर्मिती नेटवर्क्स चालवणाऱ्या वास्तविक जीवनातील आर्किटेक्चर्स सर्व CNNs वर आधारित आहेत, फक्त अधिक स्तरांसह आणि काही अतिरिक्त प्रशिक्षण युक्त्या. + +## 🚀 आव्हान + +सोबतच्या नोटबुक्समध्ये, अधिक अचूकता मिळवण्याबद्दल तळाशी काही टिपा आहेत. काही प्रयोग करा आणि पाहा की तुम्ही अधिक अचूकता मिळवू शकता का. + +## [पाठानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## पुनरावलोकन आणि स्व-अभ्यास + +जरी CNNs प्रामुख्याने संगणक दृष्टी कार्यांसाठी वापरले जातात, तरी ते निश्चित आकाराचे नमुने काढण्यासाठी सामान्यतः चांगले असतात. उदाहरणार्थ, जर आपण आवाजांशी व्यवहार करत असू, तर आम्हाला ऑडिओ सिग्नलमध्ये काही विशिष्ट नमुने शोधण्यासाठी CNNs वापरायचे असू शकते - अशा परिस्थितीत फिल्टर्स 1-डायमेंशनल असतील (आणि हे CNN 1D-CNN म्हणून ओळखले जाईल). तसेच, कधीकधी 3D-CNN बहु-आयामी जागेत वैशिष्ट्ये काढण्यासाठी वापरले जाते, जसे की व्हिडिओवर काही विशिष्ट घटना घडणे - CNN वेळोवेळी बदलणाऱ्या वैशिष्ट्यांचे विशिष्ट नमुने कॅप्चर करू शकते. CNNs द्वारे केले जाऊ शकणाऱ्या इतर कार्यांबद्दल पुनरावलोकन आणि स्व-अभ्यास करा. + +## [असाइनमेंट](lab/README.md) + +या लॅबमध्ये, तुम्हाला वेगवेगळ्या मांजरी आणि कुत्र्यांच्या जाती वर्गीकृत करण्याचे काम दिले आहे. या प्रतिमा MNIST डेटासेटपेक्षा अधिक जटिल आहेत आणि उच्च परिमाणांच्या आहेत, आणि 10 पेक्षा जास्त वर्ग आहेत. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/mr/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..036ebf8c --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# कॉनव्होल्यूशनल न्यूरल नेटवर्क्स + +आपण यापूर्वी पाहिले आहे की न्यूरल नेटवर्क्स प्रतिमांशी चांगल्या प्रकारे व्यवहार करू शकतात, आणि अगदी एक-लेयर परसेप्ट्रॉन देखील MNIST डेटासेटमधील हस्तलिखित अंकांना वाजवी अचूकतेने ओळखू शकतो. तथापि, MNIST डेटासेट खूपच विशेष आहे, आणि सर्व अंक प्रतिमेमध्ये केंद्रित केलेले आहेत, ज्यामुळे कार्य सोपे होते. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +वास्तविक जीवनात, आम्हाला प्रतिमेमध्ये वस्तूंचे अचूक स्थान लक्षात न घेता त्यांना ओळखता यावे अशी अपेक्षा असते. संगणकीय दृष्टिकोन सामान्य वर्गीकरणापेक्षा वेगळा आहे, कारण जेव्हा आपण प्रतिमेमध्ये विशिष्ट वस्तू शोधण्याचा प्रयत्न करतो, तेव्हा आपण प्रतिमेमध्ये काही विशिष्ट **पॅटर्न्स** आणि त्यांच्या संयोजनांचा शोध घेत असतो. उदाहरणार्थ, मांजरीचा शोध घेताना, आपण प्रथम आडव्या रेषा शोधू शकतो, ज्या मिशा तयार करू शकतात, आणि नंतर मिशांच्या विशिष्ट संयोजनामुळे आपल्याला कळते की ती प्रतिमा मांजरीची आहे. विशिष्ट पॅटर्न्सची सापेक्ष स्थिती आणि उपस्थिती महत्त्वाची आहे, प्रतिमेमध्ये त्यांचे अचूक स्थान नाही. + +पॅटर्न्स काढण्यासाठी, आपण **कॉनव्होल्यूशनल फिल्टर्स** या संकल्पनेचा वापर करू. तुम्हाला माहीतच आहे की, प्रतिमा 2D-मॅट्रिक्स किंवा रंग खोलीसह 3D-टेंसरद्वारे दर्शविली जाते. फिल्टर लागू करणे म्हणजे आपण तुलनेने लहान **फिल्टर कर्नल** मॅट्रिक्स घेतो, आणि मूळ प्रतिमेतील प्रत्येक पिक्सेलसाठी शेजारील बिंदूंसह भारित सरासरीची गणना करतो. आपण याकडे असे पाहू शकतो की जणू एक लहान विंडो संपूर्ण प्रतिमेवर सरकत आहे, आणि फिल्टर कर्नल मॅट्रिक्समधील वजनांनुसार सर्व पिक्सेल्सची सरासरी काढत आहे. + +![उभ्या कडांचा फिल्टर](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.mr.png) | ![आडव्या कडांचा फिल्टर](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.mr.png) +----|---- + +> प्रतिमा: दिमित्री सॉश्निकोव्ह + +उदाहरणार्थ, जर आपण MNIST अंकांवर 3x3 उभ्या कडांचा आणि आडव्या कडांचा फिल्टर लागू केला, तर आपण मूळ प्रतिमेमध्ये जिथे उभ्या आणि आडव्या कडा आहेत तिथे हायलाइट्स (उदा. उच्च मूल्ये) मिळवू शकतो. त्यामुळे हे दोन फिल्टर्स "कडांचा शोध घेण्यासाठी" वापरले जाऊ शकतात. त्याचप्रमाणे, इतर कमी-स्तरीय पॅटर्न्स शोधण्यासाठी वेगवेगळे फिल्टर्स डिझाइन केले जाऊ शकतात: + +> [ल्यूंग-मालिक फिल्टर बँकेचे चित्र](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +तथापि, जरी आपण काही पॅटर्न्स काढण्यासाठी फिल्टर्स मॅन्युअली डिझाइन करू शकतो, तरीही आपण नेटवर्क अशा प्रकारे डिझाइन करू शकतो की ते पॅटर्न्स आपोआप शिकेल. हीच CNN च्या मागील मुख्य कल्पनांपैकी एक आहे. + +## CNN च्या मुख्य कल्पना + +CNN कसे कार्य करते यामागील महत्त्वाच्या कल्पना पुढीलप्रमाणे आहेत: + +* कॉनव्होल्यूशनल फिल्टर्स पॅटर्न्स काढू शकतात +* आपण नेटवर्क अशा प्रकारे डिझाइन करू शकतो की फिल्टर्स आपोआप प्रशिक्षित होतील +* आपण मूळ प्रतिमेपुरतेच मर्यादित न राहता उच्च-स्तरीय वैशिष्ट्यांमध्ये पॅटर्न्स शोधण्यासाठी देखील याच दृष्टिकोनाचा वापर करू शकतो. त्यामुळे CNN वैशिष्ट्ये काढण्याचे कार्य वैशिष्ट्यांच्या श्रेणीमध्ये होते, जे कमी-स्तरीय पिक्सेल संयोजनांपासून सुरू होते आणि प्रतिमेच्या भागांच्या उच्च-स्तरीय संयोजनांपर्यंत पोहोचते. + +![वैशिष्ट्ये काढण्याची श्रेणी](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.mr.png) + +> प्रतिमा: [हिस्लॉप-लिंच यांच्या पेपरमधून](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), त्यांच्या [संशोधनावर आधारित](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ सराव: कॉनव्होल्यूशनल न्यूरल नेटवर्क्स + +चला कॉनव्होल्यूशनल न्यूरल नेटवर्क्स कसे कार्य करतात आणि आपण प्रशिक्षित होणारे फिल्टर्स कसे साध्य करू शकतो हे समजून घेण्यासाठी संबंधित नोटबुक्सवर काम करूया: + +* [कॉनव्होल्यूशनल न्यूरल नेटवर्क्स - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [कॉनव्होल्यूशनल न्यूरल नेटवर्क्स - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## पिरॅमिड आर्किटेक्चर + +प्रतिमा प्रक्रिया करण्यासाठी वापरल्या जाणाऱ्या बहुतेक CNNs तथाकथित पिरॅमिड आर्किटेक्चरचे अनुसरण करतात. मूळ प्रतिमांवर लागू केलेल्या पहिल्या कॉनव्होल्यूशनल लेयरमध्ये सामान्यतः तुलनेने कमी फिल्टर्स (8-16) असतात, जे भिन्न पिक्सेल संयोजनांशी संबंधित असतात, जसे की आडव्या/उभ्या रेषा किंवा स्ट्रोक्स. पुढील स्तरावर, आपण नेटवर्कचे स्थानिक परिमाण कमी करतो आणि फिल्टर्सची संख्या वाढवतो, जे साध्या वैशिष्ट्यांच्या अधिक संभाव्य संयोजनांशी संबंधित असते. प्रत्येक स्तरासह, अंतिम वर्गीकरणाकडे जाताना प्रतिमेची स्थानिक परिमाणे कमी होतात, आणि फिल्टर्सची संख्या वाढते. + +उदाहरण म्हणून, VGG-16 च्या आर्किटेक्चरकडे पाहूया, ज्याने 2014 मध्ये ImageNet च्या टॉप-5 वर्गीकरणात 92.7% अचूकता साध्य केली: + +![ImageNet स्तर](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.mr.jpg) + +![ImageNet पिरॅमिड](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.mr.jpg) + +> प्रतिमा: [रिसर्चगेट](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## सर्वात प्रसिद्ध CNN आर्किटेक्चर्स + +[सर्वात प्रसिद्ध CNN आर्किटेक्चर्सबद्दल तुमचा अभ्यास सुरू ठेवा](CNN_Architectures.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/mr/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..fffc60e1 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# पाळीव प्राण्यांच्या चेहऱ्यांचे वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +कल्पना करा की तुम्हाला पाळीव प्राण्यांच्या नर्सरीसाठी एक अॅप्लिकेशन विकसित करायचे आहे, जे सर्व पाळीव प्राण्यांची नोंद ठेवेल. अशा अॅप्लिकेशनची एक उत्तम वैशिष्ट्य म्हणजे छायाचित्रावरून प्राण्याच्या जातीचा आपोआप शोध लावणे. हे कार्य न्यूरल नेटवर्क्सचा वापर करून यशस्वीरीत्या करता येते. + +तुम्हाला **Pet Faces** डेटासेटचा वापर करून विविध जातींच्या मांजरी आणि कुत्र्यांचे वर्गीकरण करण्यासाठी एक कन्व्होल्यूशनल न्यूरल नेटवर्क प्रशिक्षण द्यायचे आहे. + +## डेटासेट + +आपण **Pet Faces** डेटासेट वापरणार आहोत, जो [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पाळीव प्राण्यांच्या डेटासेटवरून तयार केला आहे. यात 35 वेगवेगळ्या जातींच्या कुत्र्यांचा आणि मांजरींचा समावेश आहे. + +![आपण ज्यावर काम करणार आहोत तो डेटासेट](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.mr.png) + +डेटासेट डाउनलोड करण्यासाठी, खालील कोड स्निपेट वापरा: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## प्रारंभिक नोटबुक + +प्रयोगशाळा सुरू करण्यासाठी [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) उघडा. + +## मुख्य मुद्दा + +तुम्ही प्रतिमांचे वर्गीकरण करण्याचा तुलनेने जटिल प्रश्न सुरुवातीपासून सोडवला आहे! येथे बऱ्याच वर्गांचा समावेश होता, तरीही तुम्ही समाधानकारक अचूकता मिळवली! तसेच, टॉप-k अचूकता मोजणे महत्त्वाचे आहे, कारण काही वर्गांमध्ये गोंधळ होणे सोपे आहे, विशेषतः जेव्हा ते वर्ग माणसांसाठीही स्पष्टपणे वेगळे दिसत नाहीत. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/mr/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..b56e04ef --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# पूर्व-प्रशिक्षित नेटवर्क्स आणि ट्रान्सफर लर्निंग + +CNN प्रशिक्षणासाठी खूप वेळ लागतो आणि त्यासाठी मोठ्या प्रमाणात डेटा आवश्यक असतो. मात्र, नेटवर्कने प्रतिमांमधून नमुने काढण्यासाठी वापरले जाणारे सर्वोत्तम लो-लेव्हल फिल्टर्स शिकण्यात बराच वेळ जातो. एक नैसर्गिक प्रश्न निर्माण होतो - आपण एका डेटासेटवर प्रशिक्षित केलेल्या न्यूरल नेटवर्कचा वापर करून वेगळ्या प्रतिमा वर्गीकृत करण्यासाठी पूर्ण प्रशिक्षण प्रक्रिया न करता ते कसे अनुकूल करू शकतो? + +## [पूर्व-व्याख्यान क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +ही पद्धत **ट्रान्सफर लर्निंग** म्हणून ओळखली जाते, कारण आपण एका न्यूरल नेटवर्क मॉडेलमधून दुसऱ्या मॉडेलमध्ये काही ज्ञान हस्तांतरित करतो. ट्रान्सफर लर्निंगमध्ये, आपण सामान्यतः पूर्व-प्रशिक्षित मॉडेलसह सुरुवात करतो, जे मोठ्या प्रतिमा डेटासेटवर प्रशिक्षित केले गेले आहे, जसे की **ImageNet**. ही मॉडेल्स आधीच सामान्य प्रतिमांमधून विविध वैशिष्ट्ये काढण्यात चांगले काम करू शकतात, आणि अनेक प्रकरणांमध्ये, त्या काढलेल्या वैशिष्ट्यांवर आधारित वर्गीकर्ता तयार करणे चांगले परिणाम देऊ शकते. + +> ✅ ट्रान्सफर लर्निंग हा शब्द इतर शैक्षणिक क्षेत्रांमध्ये देखील आढळतो, जसे की शिक्षण. याचा अर्थ एका क्षेत्रातील ज्ञान घेऊन ते दुसऱ्या क्षेत्रात लागू करणे. + +## पूर्व-प्रशिक्षित मॉडेल्स फीचर एक्स्ट्रॅक्टर्स म्हणून + +आम्ही मागील विभागात चर्चा केलेल्या कॉनव्होल्यूशनल नेटवर्क्समध्ये अनेक स्तर असतात, ज्यामध्ये प्रत्येक स्तर प्रतिमेतून काही वैशिष्ट्ये काढण्याचे काम करतो. हे लो-लेव्हल पिक्सेल संयोजनांपासून (जसे की आडव्या/उभ्या रेषा किंवा स्ट्रोक) सुरू होते आणि उच्च-स्तरीय वैशिष्ट्यांच्या संयोजनांपर्यंत पोहोचते, जसे की ज्वालाचा डोळा. जर आपण सामान्य आणि विविध प्रतिमांच्या मोठ्या डेटासेटवर CNN प्रशिक्षित केले, तर नेटवर्कने ती सामान्य वैशिष्ट्ये काढणे शिकले पाहिजे. + +Keras आणि PyTorch मध्ये काही सामान्य आर्किटेक्चर्ससाठी पूर्व-प्रशिक्षित न्यूरल नेटवर्क वेट्स सहजपणे लोड करण्यासाठी फंक्शन्स आहेत, ज्यातील बहुतेक ImageNet प्रतिमांवर प्रशिक्षित केले गेले आहेत. सर्वात जास्त वापरले जाणारे मॉडेल्स [CNN Architectures](../07-ConvNets/CNN_Architectures.md) पृष्ठावर वर्णन केले आहेत. विशेषतः, तुम्ही खालीलपैकी एकाचा विचार करू शकता: + +* **VGG-16/VGG-19** हे तुलनेने सोपे मॉडेल्स आहेत जे अजूनही चांगली अचूकता देतात. ट्रान्सफर लर्निंग कसे कार्य करते हे पाहण्यासाठी VGG वापरणे चांगला पर्याय असतो. +* **ResNet** ही मॉडेल्सची एक श्रेणी आहे जी Microsoft Research ने 2015 मध्ये प्रस्तावित केली होती. त्यामध्ये अधिक स्तर आहेत, त्यामुळे अधिक संसाधने लागतात. +* **MobileNet** ही कमी आकाराची मॉडेल्सची श्रेणी आहे, जी मोबाइल डिव्हाइससाठी योग्य आहे. जर तुमच्याकडे कमी संसाधने असतील आणि थोडी अचूकता गमावण्याची तयारी असेल तर त्यांचा वापर करा. + +खाली VGG-16 नेटवर्कद्वारे एका मांजरीच्या प्रतिमेतून काढलेली वैशिष्ट्ये दिली आहेत: + +![Features extracted by VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.mr.png) + +## मांजरी विरुद्ध कुत्रे डेटासेट + +या उदाहरणात, आपण [Cats and Dogs](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) डेटासेट वापरणार आहोत, जे वास्तविक जीवनातील प्रतिमा वर्गीकरण परिस्थितीशी खूप जवळचे आहे. + +## ✍️ व्यायाम: ट्रान्सफर लर्निंग + +चला संबंधित नोटबुक्समध्ये ट्रान्सफर लर्निंग प्रत्यक्षात पाहूया: + +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## व्हिज्युअलायझिंग अॅडव्हर्सेरियल मांजर + +पूर्व-प्रशिक्षित न्यूरल नेटवर्कमध्ये त्याच्या *मेंदूत* विविध नमुने असतात, ज्यामध्ये **आदर्श मांजर** (तसेच आदर्श कुत्रा, आदर्श झेब्रा, इ.) यांची संकल्पना असते. हे प्रतिमेचे **व्हिज्युअलायझेशन** करणे मनोरंजक ठरेल. मात्र, हे सोपे नाही, कारण नमुने नेटवर्क वेट्समध्ये विखुरलेले असतात आणि त्याचप्रमाणे ते एक श्रेणीबद्ध संरचनेत आयोजित केलेले असतात. + +एक पद्धत म्हणजे आपण एका रँडम प्रतिमेसह सुरुवात करतो आणि नंतर **ग्रेडियंट डिसेंट ऑप्टिमायझेशन** तंत्र वापरून ती प्रतिमा समायोजित करण्याचा प्रयत्न करतो, ज्यामुळे नेटवर्कला वाटते की ती मांजर आहे. + +![Image Optimization Loop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.mr.png) + +मात्र, जर आपण असे केले, तर आपल्याला काहीसे रँडम नॉईजसारखे काहीतरी मिळेल. कारण *नेटवर्कला इनपुट प्रतिमा मांजर आहे असे वाटण्यासाठी अनेक मार्ग आहेत*, ज्यामध्ये काही दृश्यदृष्ट्या अर्थपूर्ण नसलेले मार्ग देखील आहेत. जरी त्या प्रतिमांमध्ये मांजरीसाठी विशिष्ट नमुने असले तरी, त्यांना दृश्यदृष्ट्या वेगळे बनवण्यासाठी काहीही बंधन नाही. + +परिणाम सुधारण्यासाठी, आपण लॉस फंक्शनमध्ये आणखी एक टर्म जोडू शकतो, ज्याला **व्हेरिएशन लॉस** म्हणतात. हे एक मेट्रिक आहे जे प्रतिमेतील शेजारील पिक्सेल किती समान आहेत हे दर्शवते. व्हेरिएशन लॉस कमी केल्याने प्रतिमा गुळगुळीत होते आणि नॉईज दूर होते - त्यामुळे अधिक दृश्यदृष्ट्या आकर्षक नमुने दिसून येतात. खाली मांजर आणि झेब्रा म्हणून वर्गीकृत केलेल्या "आदर्श" प्रतिमांचे उदाहरण दिले आहे: + +![Ideal Cat](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.mr.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.mr.png) +-----|----- + *आदर्श मांजर* | *आदर्श झेब्रा* + +अशाच प्रकारे **अॅडव्हर्सेरियल अटॅक्स** देखील न्यूरल नेटवर्कवर करता येतात. समजा, आपण न्यूरल नेटवर्कला मूर्ख बनवायचे आहे आणि कुत्र्याला मांजरासारखे बनवायचे आहे. जर आपण कुत्र्याची प्रतिमा घेतली, जी नेटवर्कद्वारे कुत्रा म्हणून ओळखली जाते, तर आपण ती थोडीशी समायोजित करू शकतो, जोपर्यंत नेटवर्क ती मांजर म्हणून वर्गीकृत करत नाही: + +![Picture of a Dog](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.mr.png) | ![Picture of a dog classified as a cat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.mr.png) +-----|----- +*कुत्र्याची मूळ प्रतिमा* | *कुत्र्याची प्रतिमा जी मांजर म्हणून वर्गीकृत केली जाते* + +वरील परिणाम पुनरुत्पादित करण्यासाठी कोड खालील नोटबुकमध्ये पहा: + +* [Ideal and Adversarial Cat - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## निष्कर्ष + +ट्रान्सफर लर्निंग वापरून, तुम्ही कस्टम ऑब्जेक्ट वर्गीकरण कार्यासाठी जलदपणे वर्गीकर्ता तयार करू शकता आणि उच्च अचूकता प्राप्त करू शकता. तुम्ही पाहू शकता की आपण आता सोडवत असलेल्या अधिक जटिल कार्यांसाठी उच्च संगणकीय शक्ती आवश्यक आहे आणि CPU वर सहजपणे सोडवता येत नाही. पुढील युनिटमध्ये, आपण कमी संगणकीय संसाधने वापरून समान मॉडेल प्रशिक्षणासाठी अधिक हलकी अंमलबजावणी वापरण्याचा प्रयत्न करू, ज्यामुळे अचूकतेत थोडीशी घट होते. + +## 🚀 आव्हान + +सहायक नोटबुक्समध्ये, प्रशिक्षण डेटा थोडासा समान असताना ट्रान्सफर ज्ञान कसे चांगले कार्य करते याबद्दल तळाशी काही टिपा आहेत (कदाचित प्राण्याचा नवीन प्रकार). पूर्णपणे नवीन प्रकारच्या प्रतिमांसह काही प्रयोग करा आणि तुमचे ट्रान्सफर ज्ञान मॉडेल्स किती चांगले किंवा वाईट कार्य करतात ते पाहा. + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## पुनरावलोकन आणि स्व-अभ्यास + +[TrainingTricks.md](TrainingTricks.md) वाचा आणि तुमच्या मॉडेल्स प्रशिक्षणाच्या इतर पद्धतींबद्दल अधिक सखोल ज्ञान मिळवा. + +## [असाइनमेंट](lab/README.md) + +या प्रयोगशाळेत, आपण वास्तविक जीवनातील [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पाळीव प्राणी डेटासेट वापरणार आहोत ज्यामध्ये मांजरी आणि कुत्र्यांच्या 35 जाती आहेत, आणि आपण ट्रान्सफर लर्निंग वर्गीकर्ता तयार करू. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/mr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..390ef518 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# डीप लर्निंग प्रशिक्षण तंत्र + +जसे न्यूरल नेटवर्क्स अधिक खोलवर जातात, त्यांचे प्रशिक्षण अधिक आव्हानात्मक बनते. एक मोठी समस्या म्हणजे [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) किंवा [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [हा लेख](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) या समस्यांवर चांगले स्पष्टीकरण देतो. + +डीप नेटवर्क्सचे प्रशिक्षण अधिक कार्यक्षम बनवण्यासाठी काही तंत्र वापरता येतात. + +## मूल्ये योग्य श्रेणीत ठेवणे + +सांख्यिकीय गणना अधिक स्थिर बनवण्यासाठी, आपल्याला हे सुनिश्चित करायचे आहे की आपल्या न्यूरल नेटवर्कमधील सर्व मूल्ये योग्य श्रेणीत असावीत, सामान्यतः [-1..1] किंवा [0..1]. ही फार कठोर अट नाही, परंतु फ्लोटिंग पॉइंट गणनांची प्रकृती अशी आहे की वेगवेगळ्या परिमाणांच्या मूल्यांना एकत्रितपणे अचूकपणे हाताळता येत नाही. उदाहरणार्थ, जर आपण 10-10 आणि 1010 जोडले, तर आपल्याला 1010 मिळण्याची शक्यता आहे, कारण लहान मूल्य मोठ्या मूल्याच्या समान क्रमात "रूपांतरित" होईल आणि त्यामुळे मँटिसा गमावली जाईल. + +बहुतेक अॅक्टिवेशन फंक्शन्समध्ये [-1..1] च्या आसपास नॉन-लिनिअरिटी असते, त्यामुळे सर्व इनपुट डेटा [-1..1] किंवा [0..1] श्रेणीत स्केल करणे योग्य ठरते. + +## प्रारंभिक वजन प्रारंभिककरण + +आदर्शतः, नेटवर्क लेयर्समधून जाण्यानंतर मूल्ये समान श्रेणीत असावीत. त्यामुळे वजन अशा प्रकारे प्रारंभिक करणे महत्त्वाचे आहे की मूल्यांचे वितरण टिकून राहील. + +सामान्य वितरण **N(0,1)** चांगली कल्पना नाही, कारण जर आपल्याकडे *n* इनपुट्स असतील, तर आउटपुटचा मानक विचलन *n* असेल, आणि मूल्ये [0..1] श्रेणीतून बाहेर जाण्याची शक्यता असेल. + +खालील प्रारंभिककरणे सामान्यतः वापरली जातात: + + * युनिफॉर्म वितरण -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** हे सुनिश्चित करते की शून्य सरासरी आणि मानक विचलन 1 असलेल्या इनपुट्ससाठी समान सरासरी/मानक विचलन टिकून राहील + * **N(0,√2/(n_in+n_out))** -- ज्याला **Xavier initialization** (`glorot`) म्हणतात, हे फॉरवर्ड आणि बॅकवर्ड प्रोपोगेशन दरम्यान सिग्नल्स श्रेणीत ठेवण्यास मदत करते + +## बॅच नॉर्मलायझेशन + +योग्य वजन प्रारंभिकरण असूनही, प्रशिक्षणादरम्यान वजन खूप मोठे किंवा लहान होऊ शकते, आणि ते सिग्नल्स योग्य श्रेणीतून बाहेर नेतील. सिग्नल्स परत आणण्यासाठी आपण **नॉर्मलायझेशन** तंत्र वापरू शकतो. जरी त्यापैकी अनेक असले (वेट नॉर्मलायझेशन, लेयर नॉर्मलायझेशन), तरी सर्वात जास्त वापरले जाणारे तंत्र म्हणजे बॅच नॉर्मलायझेशन. + +**बॅच नॉर्मलायझेशन** ची कल्पना म्हणजे मिनिबॅचमधील सर्व मूल्यांचा विचार करणे आणि त्या मूल्यांवर आधारित नॉर्मलायझेशन करणे (उदा. सरासरी वजा करणे आणि मानक विचलनाने भाग करणे). हे नेटवर्क लेयर म्हणून अंमलात आणले जाते जे वजन लागू केल्यानंतर, परंतु अॅक्टिवेशन फंक्शनच्या आधी हे नॉर्मलायझेशन करते. परिणामी, अंतिम अचूकता जास्त आणि प्रशिक्षण जलद होण्याची शक्यता असते. + +येथे बॅच नॉर्मलायझेशनवरील [मूळ पेपर](https://arxiv.org/pdf/1502.03167.pdf), [विकिपीडियावर स्पष्टीकरण](https://en.wikipedia.org/wiki/Batch_normalization), आणि [एक चांगला परिचयात्मक ब्लॉग पोस्ट](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (आणि [रशियन भाषेत](https://habrahabr.ru/post/309302/)) दिला आहे. + +## ड्रॉपआउट + +**ड्रॉपआउट** हे एक मनोरंजक तंत्र आहे जे प्रशिक्षणादरम्यान काही प्रमाणात रँडम न्यूरॉन्स काढून टाकते. हे एक लेयर म्हणून अंमलात आणले जाते ज्यामध्ये एक पॅरामीटर असतो (काढून टाकायच्या न्यूरॉन्सचा टक्केवारी, सामान्यतः 10%-50%), आणि प्रशिक्षणादरम्यान हे इनपुट व्हेक्टरचे रँडम घटक शून्य करते, त्यानंतर पुढील लेयरकडे पाठवते. + +जरी हे विचित्र कल्पना वाटत असले तरी, आपण [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) नोटबुकमध्ये MNIST अंक वर्गीकरणकर्ता प्रशिक्षणावर ड्रॉपआउटचा परिणाम पाहू शकता. हे प्रशिक्षण जलद करते आणि कमी प्रशिक्षण epochs मध्ये उच्च अचूकता मिळवण्यास मदत करते. + +या प्रभावाचे स्पष्टीकरण काही प्रकारे दिले जाऊ शकते: + + * हे मॉडेलसाठी एक रँडम धक्का मानले जाऊ शकते, जे स्थानिक किमानतेच्या बाहेर ऑप्टिमायझेशन घेते + * हे *अप्रत्यक्ष मॉडेल सरासरीकरण* मानले जाऊ शकते, कारण आपण म्हणू शकतो की ड्रॉपआउट दरम्यान आपण किंचित वेगळ्या मॉडेलचे प्रशिक्षण घेत आहोत + +> *काही लोक म्हणतात की जेव्हा एखादी मद्यधुंद व्यक्ती काहीतरी शिकण्याचा प्रयत्न करते, तेव्हा ती गोष्ट दुसऱ्या दिवशी चांगल्या प्रकारे लक्षात ठेवते, तुलनेत एका तंदुरुस्त व्यक्तीपेक्षा, कारण काही न्यूरॉन्स नीट कार्य करत नसलेल्या मेंदूने अर्थ समजून घेण्यासाठी चांगले जुळवून घेतले. आम्ही स्वतः हे खरे आहे की नाही हे कधीच तपासले नाही.* + +## ओव्हरफिटिंग टाळणे + +डीप लर्निंगमधील एक महत्त्वाचा पैलू म्हणजे [ओव्हरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) टाळण्याची क्षमता. जरी अत्यंत शक्तिशाली न्यूरल नेटवर्क मॉडेल वापरण्याचा मोह होऊ शकतो, तरी आपल्याला नेहमी मॉडेल पॅरामीटर्सची संख्या प्रशिक्षण नमुन्यांच्या संख्येसोबत संतुलित ठेवावी लागते. + +> आपण यापूर्वी सादर केलेल्या [ओव्हरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) संकल्पनेची खात्री करून घ्या! + +ओव्हरफिटिंग टाळण्यासाठी काही मार्ग आहेत: + + * अर्ली स्टॉपिंग -- सतत व्हॅलिडेशन सेटवरील त्रुटीचे निरीक्षण करणे आणि व्हॅलिडेशन त्रुटी वाढू लागल्यावर प्रशिक्षण थांबवणे. + * स्पष्ट वेट डिके / रेग्युलरायझेशन -- हाय अॅबसोल्यूट वेट्ससाठी लॉस फंक्शनमध्ये अतिरिक्त दंड जोडणे, ज्यामुळे मॉडेलला अत्यंत अस्थिर परिणाम मिळण्यापासून रोखले जाते + * मॉडेल सरासरीकरण -- अनेक मॉडेल्सचे प्रशिक्षण घेणे आणि नंतर परिणाम सरासरी करणे. यामुळे व्हेरियन्स कमी होतो. + * ड्रॉपआउट (अप्रत्यक्ष मॉडेल सरासरीकरण) + +## ऑप्टिमायझर्स / प्रशिक्षण अल्गोरिदम + +प्रशिक्षणाचा आणखी एक महत्त्वाचा पैलू म्हणजे चांगला प्रशिक्षण अल्गोरिदम निवडणे. जरी पारंपरिक **gradient descent** एक योग्य पर्याय आहे, तरी कधीकधी ते खूप धीमे असू शकते किंवा इतर समस्यांना कारणीभूत ठरू शकते. + +डीप लर्निंगमध्ये, आपण **Stochastic Gradient Descent** (SGD) वापरतो, जो प्रशिक्षण सेटमधून रँडमपणे निवडलेल्या मिनिबॅचेसवर लागू केलेला gradient descent आहे. वेट्स खालील सूत्राने समायोजित केले जातात: + +wt+1 = wt - η∇ℒ + +### मोमेंटम + +**मोमेंटम SGD** मध्ये, आपण मागील चरणांमधील ग्रेडियंटचा काही भाग ठेवतो. हे असेच आहे जसे आपण जडत्वाने कुठेतरी जात आहोत, आणि आपल्याला वेगळ्या दिशेने धक्का मिळतो, आपला मार्ग त्वरित बदलत नाही, परंतु मूळ हालचालीचा काही भाग ठेवतो. येथे आपण *गती* दर्शवण्यासाठी आणखी एक व्हेक्टर v सादर करतो: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +येथे γ पॅरामीटर दर्शवतो की आपण जडत्वाचा किती विचार करतो: γ=0 पारंपरिक SGD ला अनुरूप आहे; γ=1 हे शुद्ध हालचालीचे समीकरण आहे. + +### Adam, Adagrad, इत्यादी + +प्रत्येक लेयरमध्ये आपण काही मॅट्रिक्स Wi ने सिग्नल्स गुणाकार करतो, ||Wi|| वर अवलंबून, ग्रेडियंट कमी होऊ शकतो आणि 0 च्या जवळ असतो किंवा अनिश्चितपणे वाढतो. ही Exploding/Vanishing Gradients समस्येची मुळ आहे. + +या समस्येचे एक उपाय म्हणजे समीकरणात ग्रेडियंटचा फक्त दिशा वापरणे आणि अॅबसोल्यूट मूल्य दुर्लक्षित करणे, उदा. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), जिथे ||∇ℒ|| = √∑(∇ℒ)2 + +हा अल्गोरिदम **Adagrad** म्हणून ओळखला जातो. याच कल्पनेचा वापर करणारे इतर अल्गोरिदम: **RMSProp**, **Adam** + +> **Adam** अनेक अनुप्रयोगांसाठी एक अत्यंत कार्यक्षम अल्गोरिदम मानला जातो, त्यामुळे जर तुम्हाला कोणता वापरायचा आहे याची खात्री नसेल - Adam वापरा. + +### ग्रेडियंट क्लिपिंग + +ग्रेडियंट क्लिपिंग ही वरील कल्पनेची विस्तारित आवृत्ती आहे. जेव्हा ||∇ℒ|| ≤ θ असते, तेव्हा आपण वेट ऑप्टिमायझेशनमध्ये मूळ ग्रेडियंट विचारात घेतो, आणि जेव्हा ||∇ℒ|| > θ असते - तेव्हा आपण ग्रेडियंट त्याच्या नॉर्मने भागतो. येथे θ हा पॅरामीटर आहे, बहुतेक प्रकरणांमध्ये आपण θ=1 किंवा θ=10 घेऊ शकतो. + +### लर्निंग रेट डिके + +प्रशिक्षणाचा यशस्वी परिणाम लर्निंग रेट पॅरामीटर η वर अवलंबून असतो. हे गृहीत धरणे तार्किक आहे की η चे मोठे मूल्य जलद प्रशिक्षण देते, जे आपण सामान्यतः प्रशिक्षणाच्या सुरुवातीला इच्छित असतो, आणि नंतर η चे छोटे मूल्य नेटवर्कला सूक्ष्म-ट्यून करण्यास परवानगी देते. त्यामुळे, बहुतेक प्रकरणांमध्ये आपण प्रशिक्षणाच्या प्रक्रियेत η कमी करू इच्छितो. + +हे प्रत्येक प्रशिक्षण epoch नंतर η ला काही संख्येने (उदा. 0.98) गुणाकार करून किंवा अधिक जटिल **लर्निंग रेट शेड्यूल** वापरून केले जाऊ शकते. + +## वेगवेगळ्या नेटवर्क आर्किटेक्चर्स + +तुमच्या समस्येसाठी योग्य नेटवर्क आर्किटेक्चर निवडणे कठीण असू शकते. सामान्यतः, आपण अशा आर्किटेक्चर निवडतो जे आपल्या विशिष्ट कार्यासाठी (किंवा तत्सम कार्यासाठी) कार्य करण्यासाठी सिद्ध झाले आहे. येथे संगणकीय दृष्टिकोनासाठी न्यूरल नेटवर्क आर्किटेक्चर्सचा [चांगला आढावा](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) दिला आहे. + +> आपल्याकडे असलेल्या प्रशिक्षण नमुन्यांच्या संख्येसाठी पुरेसे शक्तिशाली असे आर्किटेक्चर निवडणे महत्त्वाचे आहे. खूप शक्तिशाली मॉडेल निवडल्याने [ओव्हरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) होऊ शकते. + +आवश्यक जटिलतेनुसार आपोआप समायोजित होणारे आर्किटेक्चर वापरणे हा आणखी एक चांगला मार्ग आहे. काही प्रमाणात, **ResNet** आर्किटेक्चर आणि **Inception** हे स्वतः समायोजित करणारे आहेत. [संगणकीय दृष्टिकोन आर्किटेक्चर्सवर अधिक माहिती](../07-ConvNets/CNN_Architectures.md). + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/mr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..79c8088b --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# ऑक्सफर्ड पाळीव प्राण्यांचे वर्गीकरण ट्रान्सफर लर्निंगचा वापर करून + +[AI फॉर बिगिनर्स करिक्युलम](https://github.com/microsoft/ai-for-beginners) मधील लॅब असाइनमेंट. + +## कार्य + +कल्पना करा की तुम्हाला पाळीव प्राण्यांच्या नर्सरीसाठी सर्व प्राण्यांचे वर्गीकरण करणारे एक अॅप्लिकेशन विकसित करायचे आहे. अशा अॅप्लिकेशनची एक उत्तम वैशिष्ट्ये म्हणजे छायाचित्रावरून प्राण्याच्या जातीचा आपोआप शोध लावणे. या असाइनमेंटमध्ये, आपण [ऑक्सफर्ड-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पाळीव प्राण्यांच्या डेटासेटमधील प्रत्यक्ष जीवनातील प्राण्यांच्या प्रतिमा वर्गीकृत करण्यासाठी ट्रान्सफर लर्निंगचा वापर करू. + +## डेटासेट + +आपण मूळ [ऑक्सफर्ड-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पाळीव प्राण्यांचा डेटासेट वापरणार आहोत, ज्यामध्ये कुत्रे आणि मांजरींच्या 35 वेगवेगळ्या जातींचा समावेश आहे. + +डेटासेट डाउनलोड करण्यासाठी, हा कोड स्निपेट वापरा: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## नोटबुक सुरू करणे + +लॅब सुरू करण्यासाठी [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) उघडा. + +## मुख्य मुद्दा + +ट्रान्सफर लर्निंग आणि पूर्व-प्रशिक्षित नेटवर्क्समुळे प्रत्यक्ष जीवनातील प्रतिमा वर्गीकरणाच्या समस्या तुलनेने सोप्या पद्धतीने सोडवता येतात. मात्र, पूर्व-प्रशिक्षित नेटवर्क्स समान प्रकारच्या प्रतिमांवर चांगले कार्य करतात, आणि जर आपण खूप वेगळ्या प्रतिमांचे वर्गीकरण करण्यास सुरुवात केली (उदा. वैद्यकीय प्रतिमा), तर आपल्याला खूपच वाईट परिणाम मिळण्याची शक्यता असते. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/mr/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..67dc1c83 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# ऑटोएन्कोडर्स + +जेव्हा CNNs प्रशिक्षण दिले जाते, तेव्हा एक समस्या अशी असते की आपल्याला खूप साऱ्या लेबल केलेल्या डेटाची गरज असते. प्रतिमेच्या वर्गीकरणाच्या बाबतीत, आपल्याला प्रतिमा वेगवेगळ्या वर्गांमध्ये विभागाव्या लागतात, जे एक मॅन्युअल काम आहे. + +## [पूर्व-व्याख्यान क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +तथापि, कधीकधी आपल्याला कच्चा (लेबल नसलेला) डेटा CNN फीचर एक्स्ट्रॅक्टर्ससाठी वापरायचा असतो, ज्याला **स्वयं-नियंत्रित शिक्षण** म्हणतात. लेबल्सच्या ऐवजी, आपण प्रशिक्षण प्रतिमा नेटवर्कच्या इनपुट आणि आउटपुट म्हणून वापरू. **ऑटोएन्कोडर** या संकल्पनेचा मुख्य उद्देश असा आहे की आपल्याकडे एक **एन्कोडर नेटवर्क** असेल, जे इनपुट प्रतिमेला काही **लॅटेंट स्पेस** मध्ये रूपांतरित करेल (सामान्यतः हा काही लहान आकाराचा वेक्टर असतो), आणि नंतर **डिकोडर नेटवर्क**, ज्याचा उद्देश मूळ प्रतिमा पुन्हा तयार करणे असेल. + +> ✅ [ऑटोएन्कोडर](https://wikipedia.org/wiki/Autoencoder) म्हणजे "एक प्रकारचे कृत्रिम न्यूरल नेटवर्क जे लेबल नसलेल्या डेटाचे कार्यक्षम कोडिंग शिकण्यासाठी वापरले जाते." + +ऑटोएन्कोडरला मूळ प्रतिमेतील जास्तीत जास्त माहिती अचूक पुनर्निर्मितीसाठी कॅप्चर करायची असल्याने, नेटवर्क इनपुट प्रतिमांचे सर्वोत्तम **एम्बेडिंग** शोधण्याचा प्रयत्न करते. + +![ऑटोएन्कोडर आकृती](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.mr.jpg) + +> प्रतिमा [Keras ब्लॉग](https://blog.keras.io/building-autoencoders-in-keras.html) वरून + +## ऑटोएन्कोडर्स वापरण्याचे प्रसंग + +मूळ प्रतिमा पुन्हा तयार करणे स्वतःमध्ये फारसे उपयुक्त वाटत नसले तरी, काही प्रसंगांमध्ये ऑटोएन्कोडर्स विशेषतः उपयुक्त ठरतात: + +* **प्रतिमांचे परिमाण कमी करणे** किंवा **प्रतिमा एम्बेडिंग प्रशिक्षण देणे**. सामान्यतः ऑटोएन्कोडर्स PCA पेक्षा चांगले परिणाम देतात, कारण ते प्रतिमांच्या स्थानिक स्वरूपाचा आणि श्रेणीबद्ध वैशिष्ट्यांचा विचार करतात. +* **डिनॉइजिंग**, म्हणजेच प्रतिमेतील आवाज काढून टाकणे. कारण आवाजात बऱ्याच निरुपयोगी माहितीचा समावेश असतो, ऑटोएन्कोडर त्यातील सर्व माहिती लहान लॅटेंट स्पेसमध्ये बसवू शकत नाही, त्यामुळे तो फक्त महत्त्वाचा भाग कॅप्चर करतो. डिनॉइजर्स प्रशिक्षण देताना, आपण मूळ प्रतिमांपासून सुरुवात करतो आणि कृत्रिमरित्या आवाज जोडलेल्या प्रतिमांचा ऑटोएन्कोडर इनपुट म्हणून वापर करतो. +* **सुपर-रिझोल्यूशन**, म्हणजे प्रतिमेचे रिझोल्यूशन वाढवणे. आपण उच्च-रिझोल्यूशन प्रतिमांपासून सुरुवात करतो आणि कमी रिझोल्यूशन असलेल्या प्रतिमेला ऑटोएन्कोडर इनपुट म्हणून वापरतो. +* **जनरेटिव्ह मॉडेल्स**. एकदा ऑटोएन्कोडर प्रशिक्षित झाल्यावर, डिकोडर भाग यादृच्छिक लॅटेंट वेक्टरपासून नवीन वस्तू तयार करण्यासाठी वापरला जाऊ शकतो. + +## व्हेरिएशनल ऑटोएन्कोडर्स (VAE) + +पारंपरिक ऑटोएन्कोडर्स इनपुट डेटाचे परिमाण कमी करतात आणि इनपुट प्रतिमांचे महत्त्वाचे वैशिष्ट्य शोधतात. तथापि, लॅटेंट वेक्टर अनेकदा अर्थपूर्ण नसतात. उदाहरणार्थ, MNIST डेटासेट घेतल्यास, वेगवेगळ्या लॅटेंट वेक्टरशी संबंधित अंक शोधणे सोपे नसते, कारण जवळचे लॅटेंट वेक्टर नेहमीच समान अंक दर्शवतील असे नाही. + +दुसरीकडे, *जनरेटिव्ह* मॉडेल्स प्रशिक्षण देण्यासाठी लॅटेंट स्पेसचे काहीसे समज असणे चांगले असते. ही कल्पना आपल्याला **व्हेरिएशनल ऑटोएन्कोडर** (VAE) कडे घेऊन जाते. + +VAE हा असा ऑटोएन्कोडर आहे जो लॅटेंट पॅरामीटर्सचे *सांख्यिकीय वितरण* (ज्याला **लॅटेंट वितरण** म्हणतात) अंदाज लावायला शिकतो. उदाहरणार्थ, आपल्याला लॅटेंट वेक्टर सामान्यतः zmean आणि zsigma (दोन्ही म्हणजे काही परिमाण d चे वेक्टर) सह वितरित व्हावे असे वाटू शकते. VAE मधील एन्कोडर हे पॅरामीटर्स अंदाज लावायला शिकतो, आणि नंतर डिकोडर या वितरणातून एक यादृच्छिक वेक्टर घेतो आणि वस्तू पुन्हा तयार करतो. + +सारांश: + +* इनपुट वेक्टरपासून, आपण `z_mean` आणि `z_log_sigma` अंदाज लावतो (थेट मानक विचलनाचा अंदाज लावण्याऐवजी, आपण त्याचा लघुगणक अंदाज लावतो) +* आपण वितरण N(zmean,exp(zlog_sigma)) मधून `sample` नावाचा वेक्टर निवडतो +* डिकोडर `sample` ला इनपुट वेक्टर म्हणून वापरून मूळ प्रतिमा पुन्हा तयार करण्याचा प्रयत्न करतो + + + +> प्रतिमा [या ब्लॉग पोस्ट](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) वरून, लेखक: इसाक डायकमन + +व्हेरिएशनल ऑटोएन्कोडर्स एक जटिल लॉस फंक्शन वापरतात, ज्यामध्ये दोन भाग असतात: + +* **पुनर्निर्मिती लॉस** - हे लॉस फंक्शन दर्शवते की पुन्हा तयार केलेली प्रतिमा लक्ष्याच्या किती जवळ आहे (हे Mean Squared Error किंवा MSE असू शकते). हे सामान्य ऑटोएन्कोडर्सप्रमाणेच लॉस फंक्शन आहे. +* **KL लॉस**, जे सुनिश्चित करते की लॅटेंट व्हेरिएबल वितरण सामान्य वितरणाच्या जवळ राहते. हे [कुलबॅक-लिबलर डायव्हर्जन्स](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) या संकल्पनेवर आधारित आहे - दोन सांख्यिकीय वितरणे किती समान आहेत हे मोजण्यासाठी एक मेट्रिक. + +VAE चे एक महत्त्वाचे फायदे म्हणजे ते आपल्याला नवीन प्रतिमा तुलनेने सोप्या पद्धतीने तयार करू देतात, कारण आपल्याला लॅटेंट वेक्टर कशा वितरणातून निवडायचे आहेत हे माहित असते. उदाहरणार्थ, जर आपण MNIST वर 2D लॅटेंट वेक्टरसह VAE प्रशिक्षित केले, तर आपण लॅटेंट वेक्टरच्या घटकांमध्ये बदल करून वेगवेगळे अंक मिळवू शकतो: + +vaemnist + +> प्रतिमा [दिमित्री सॉश्निकोव्ह](http://soshnikov.com) यांच्याकडून + +लक्षात घ्या की प्रतिमा एकमेकांमध्ये कशा मिसळतात, कारण आपण लॅटेंट पॅरामीटर स्पेसच्या वेगवेगळ्या भागांमधून लॅटेंट वेक्टर मिळवायला सुरुवात करतो. आपण या स्पेसला 2D मध्ये देखील व्हिज्युअलाइझ करू शकतो: + +vaemnist cluster + +> प्रतिमा [दिमित्री सॉश्निकोव्ह](http://soshnikov.com) यांच्याकडून + +## ✍️ सराव: ऑटोएन्कोडर्स + +या संबंधित नोटबुक्समध्ये ऑटोएन्कोडर्सबद्दल अधिक जाणून घ्या: + +* [TensorFlow मध्ये ऑटोएन्कोडर्स](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch मध्ये ऑटोएन्कोडर्स](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## ऑटोएन्कोडर्सची वैशिष्ट्ये + +* **डेटा-विशिष्ट** - ते फक्त त्याच प्रकारच्या प्रतिमांसोबत चांगले कार्य करतात ज्यावर त्यांना प्रशिक्षण दिले गेले आहे. उदाहरणार्थ, जर आपण फुलांवर सुपर-रिझोल्यूशन नेटवर्क प्रशिक्षित केले, तर ते पोर्ट्रेट्सवर चांगले कार्य करणार नाही. कारण नेटवर्क प्रशिक्षण डेटासेटमधून शिकलेल्या वैशिष्ट्यांमधून सूक्ष्म तपशील घेऊन उच्च रिझोल्यूशन प्रतिमा तयार करू शकते. +* **लॉसी** - पुन्हा तयार केलेली प्रतिमा मूळ प्रतिमेसारखी नसते. लॉसचे स्वरूप प्रशिक्षणादरम्यान वापरलेल्या *लॉस फंक्शन* वर अवलंबून असते. +* **लेबल नसलेल्या डेटावर कार्य करते** + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## निष्कर्ष + +या धड्यात, तुम्ही AI वैज्ञानिकांसाठी उपलब्ध असलेल्या विविध प्रकारच्या ऑटोएन्कोडर्सबद्दल शिकला. तुम्ही त्यांना कसे तयार करायचे आणि प्रतिमा पुन्हा तयार करण्यासाठी त्यांचा कसा वापर करायचा हे शिकला. तुम्ही VAE बद्दलही शिकला आणि नवीन प्रतिमा तयार करण्यासाठी त्याचा कसा वापर करायचा हे समजले. + +## 🚀 आव्हान + +या धड्यात, तुम्ही प्रतिमांसाठी ऑटोएन्कोडर्स वापरण्याबद्दल शिकला. पण ते संगीतासाठीही वापरले जाऊ शकतात! Magenta प्रकल्पाचा [MusicVAE](https://magenta.tensorflow.org/music-vae) प्रकल्प तपासा, जो संगीत पुन्हा तयार करायला शिकण्यासाठी ऑटोएन्कोडर्स वापरतो. या लायब्ररीसह काही [प्रयोग](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) करा आणि तुम्ही काय तयार करू शकता ते पाहा. + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## पुनरावलोकन आणि स्व-अभ्यास + +संदर्भासाठी, या स्रोतांमध्ये ऑटोएन्कोडर्सबद्दल अधिक वाचा: + +* [Keras मध्ये ऑटोएन्कोडर्स तयार करणे](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive वरील ब्लॉग पोस्ट](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [व्हेरिएशनल ऑटोएन्कोडर्स समजावून सांगितले](https://kvfrans.com/variational-autoencoders-explained/) +* [कंडिशनल व्हेरिएशनल ऑटोएन्कोडर्स](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## असाइनमेंट + +[TensorFlow वापरून या नोटबुकच्या](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) शेवटी तुम्हाला एक 'टास्क' सापडेल - याचा तुमच्या असाइनमेंटसाठी वापर करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/10-GANs/README.md b/translations/mr/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..eab2419d --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# जनरेटिव अड्व्हर्सेरियल नेटवर्क्स + +मागील विभागात आपण **जनरेटिव मॉडेल्स** म्हणजेच अशा मॉडेल्सबद्दल शिकलो जे प्रशिक्षण डेटासेटमधील प्रतिमांसारख्या नवीन प्रतिमा तयार करू शकतात. VAE हे जनरेटिव मॉडेलचे एक चांगले उदाहरण होते. + +## [पूर्व-व्याख्यान क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +तथापि, जर आपण VAE वापरून उच्च रिझोल्यूशनमध्ये अर्थपूर्ण काहीतरी तयार करण्याचा प्रयत्न केला, जसे की एक पेंटिंग, तर आपल्याला दिसेल की प्रशिक्षण चांगल्या प्रकारे जुळत नाही. अशा वापरासाठी, आपल्याला जनरेटिव मॉडेल्ससाठी खास डिझाइन केलेल्या दुसऱ्या आर्किटेक्चरबद्दल शिकणे आवश्यक आहे - **जनरेटिव अड्व्हर्सेरियल नेटवर्क्स** किंवा GANs. + +GAN चा मुख्य विचार म्हणजे दोन न्यूरल नेटवर्क्स तयार करणे जे एकमेकांविरुद्ध प्रशिक्षण घेतात: + + + +> प्रतिमा: [दिमित्री सॉश्निकोव्ह](http://soshnikov.com) + +> ✅ थोडीशी शब्दावली: +> * **जनरेटर** हे एक नेटवर्क आहे जे काही रँडम व्हेक्टर घेते आणि त्याचा परिणाम म्हणून प्रतिमा तयार करते. +> * **डिस्क्रिमिनेटर** हे एक नेटवर्क आहे जे प्रतिमा घेते आणि ती खऱ्या डेटासेटमधून आलेली आहे की जनरेटरने तयार केलेली आहे हे ओळखते. हे मूलत: एक प्रतिमा वर्गीकरण करणारे नेटवर्क आहे. + +### डिस्क्रिमिनेटर + +डिस्क्रिमिनेटरचे आर्किटेक्चर सामान्य प्रतिमा वर्गीकरण नेटवर्कसारखेच असते. सर्वात सोप्या प्रकरणात, ते पूर्णपणे कनेक्टेड वर्गीकरणकर्ता असू शकते, परंतु बहुधा ते [कन्फोल्यूशनल नेटवर्क](../07-ConvNets/README.md) असेल. + +> ✅ कन्फोल्यूशनल नेटवर्कवर आधारित GAN ला [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) म्हणतात. + +CNN डिस्क्रिमिनेटरमध्ये खालील स्तर असतात: अनेक कन्फोल्यूशन्स+पूलिंग्ज (ज्यामुळे स्पॅटियल साइज कमी होते) आणि एक किंवा अधिक पूर्णपणे कनेक्टेड स्तर जे "फीचर व्हेक्टर" तयार करतात, आणि शेवटी बायनरी वर्गीकरणकर्ता. + +> ✅ 'पूलिंग' म्हणजे प्रतिमेचा आकार कमी करण्याची तंत्र. "पूलिंग स्तर डेटा परिमाण कमी करतात, एका स्तरातील न्यूरॉन क्लस्टर्सच्या आउटपुट्सना पुढील स्तरातील एका न्यूरॉनमध्ये एकत्र करून." - [स्रोत](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### जनरेटर + +जनरेटर थोडा अधिक क्लिष्ट आहे. तुम्ही याला उलट्या डिस्क्रिमिनेटरप्रमाणे समजू शकता. फीचर व्हेक्टरच्या जागी लेटंट व्हेक्टरपासून सुरुवात करून, त्यात एक पूर्णपणे कनेक्टेड स्तर असतो जो आवश्यक आकार/आकारात रूपांतरित करतो, त्यानंतर डी-कन्फोल्यूशन्स+अपस्केलिंग असते. हे [ऑटोएन्कोडर](../09-Autoencoders/README.md) च्या *डिकोडर* भागासारखे आहे. + +> ✅ कारण कन्फोल्यूशन स्तर प्रतिमेवर रेषीय फिल्टर म्हणून कार्य करते, डी-कन्फोल्यूशन हे मूलत: कन्फोल्यूशनसारखेच आहे आणि त्याच स्तर लॉजिकचा वापर करून अंमलात आणले जाऊ शकते. + + + +> प्रतिमा: [दिमित्री सॉश्निकोव्ह](http://soshnikov.com) + +### GAN चे प्रशिक्षण + +GAN ला **अड्व्हर्सेरियल** असे म्हणतात कारण जनरेटर आणि डिस्क्रिमिनेटर यांच्यात सतत स्पर्धा असते. या स्पर्धेदरम्यान, जनरेटर आणि डिस्क्रिमिनेटर दोन्ही सुधारतात, ज्यामुळे नेटवर्क अधिक चांगल्या प्रतिमा तयार करायला शिकते. + +प्रशिक्षण दोन टप्प्यांमध्ये होते: + +* **डिस्क्रिमिनेटरचे प्रशिक्षण**. हे कार्य अगदी सोपे आहे: आम्ही जनरेटरद्वारे प्रतिमांचा एक बॅच तयार करतो, त्यांना 0 लेबल देतो (फेक प्रतिमा दर्शविण्यासाठी), आणि इनपुट डेटासेटमधून प्रतिमांचा एक बॅच घेतो (1 लेबलसह, खऱ्या प्रतिमा). आम्हाला काही *डिस्क्रिमिनेटर लॉस* मिळते आणि बॅकप्रॉप करतो. +* **जनरेटरचे प्रशिक्षण**. हे थोडे अधिक क्लिष्ट आहे, कारण आम्हाला जनरेटरसाठी अपेक्षित आउटपुट थेट माहित नाही. आम्ही जनरेटर आणि डिस्क्रिमिनेटर यांचा समावेश असलेले संपूर्ण GAN नेटवर्क घेतो, त्याला काही रँडम व्हेक्टरसह फीड करतो, आणि परिणाम 1 (खऱ्या प्रतिमांशी संबंधित) अपेक्षित करतो. त्यानंतर आम्ही डिस्क्रिमिनेटरचे पॅरामीटर्स गोठवतो (या टप्प्यावर आम्हाला ते प्रशिक्षण द्यायचे नाही) आणि बॅकप्रॉप करतो. + +या प्रक्रियेदरम्यान, जनरेटर आणि डिस्क्रिमिनेटर लॉस लक्षणीयरीत्या खाली जात नाहीत. आदर्श परिस्थितीत, ते दोन्ही नेटवर्क्सच्या कामगिरीत सुधारणा दर्शविण्यासाठी ऑस्सिलेट करायला हवेत. + +## ✍️ सराव: GANs + +* [TensorFlow/Keras मध्ये GAN नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch मध्ये GAN नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN प्रशिक्षणातील समस्या + +GAN प्रशिक्षण करणे विशेषतः कठीण असल्याचे ओळखले जाते. येथे काही समस्या आहेत: + +* **मोड कोलॅप्स**. याचा अर्थ जनरेटर एक यशस्वी प्रतिमा तयार करायला शिकतो जी डिस्क्रिमिनेटरला फसवते, परंतु विविध प्रतिमा तयार करत नाही. +* **हायपरपॅरामीटर्ससाठी संवेदनशीलता**. अनेकदा असे दिसते की GAN अजिबात जुळत नाही, आणि नंतर अचानक लर्निंग रेट कमी होऊन जुळते. +* जनरेटर आणि डिस्क्रिमिनेटर यांच्यात **संतुलन राखणे**. अनेक प्रकरणांमध्ये डिस्क्रिमिनेटर लॉस तुलनेने लवकर शून्यावर पोहोचतो, ज्यामुळे जनरेटरला पुढे प्रशिक्षण देता येत नाही. यावर मात करण्यासाठी, आपण जनरेटर आणि डिस्क्रिमिनेटरसाठी भिन्न लर्निंग रेट सेट करू शकतो, किंवा लॉस आधीच खूप कमी असल्यास डिस्क्रिमिनेटर प्रशिक्षण वगळू शकतो. +* **उच्च रिझोल्यूशनसाठी प्रशिक्षण**. ऑटोएन्कोडर्ससारखीच समस्या, ही समस्या खूप जास्त कन्फोल्यूशन स्तर पुन्हा तयार केल्यामुळे आर्टिफॅक्ट्स तयार होतात. ही समस्या सामान्यतः **प्रोग्रेसिव ग्रोइंग** वापरून सोडवली जाते, जिथे सुरुवातीला काही स्तर कमी-रिझोल्यूशन प्रतिमांवर प्रशिक्षण घेतात, आणि नंतर स्तर "अनब्लॉक" किंवा जोडले जातात. आणखी एक उपाय म्हणजे स्तरांमधील अतिरिक्त कनेक्शन्स जोडणे आणि एकाच वेळी अनेक रिझोल्यूशन्सवर प्रशिक्षण देणे - यासाठी [मल्टी-स्केल ग्रेडियंट GANs पेपर](https://arxiv.org/abs/1903.06048) पहा. + +## स्टाइल ट्रान्सफर + +GANs हे कलात्मक प्रतिमा तयार करण्याचा एक उत्तम मार्ग आहे. आणखी एक मनोरंजक तंत्र म्हणजे **स्टाइल ट्रान्सफर**, जे एका **कंटेंट प्रतिमा** घेते आणि ती वेगळ्या शैलीत पुन्हा काढते, **स्टाइल प्रतिमा** मधील फिल्टर्स लागू करते. + +हे कसे कार्य करते: +* आपण रँडम नॉईज प्रतिमेसह सुरुवात करतो (किंवा कंटेंट प्रतिमेसह, परंतु समजण्यासाठी रँडम नॉईजने सुरुवात करणे सोपे आहे) +* आपले उद्दिष्ट असे प्रतिमा तयार करणे आहे, जी कंटेंट प्रतिमा आणि स्टाइल प्रतिमेस जवळ असेल. हे दोन लॉस फंक्शन्सद्वारे ठरवले जाईल: + - **कंटेंट लॉस** हे CNN द्वारे काही स्तरांवरून वर्तमान प्रतिमा आणि कंटेंट प्रतिमेमधून काढलेल्या वैशिष्ट्यांवर आधारित मोजले जाते. + - **स्टाइल लॉस** हे वर्तमान प्रतिमा आणि स्टाइल प्रतिमेमधील ग्रॅम मॅट्रिसेसचा वापर करून हुशारीने मोजले जाते (अधिक तपशीलांसाठी [उदाहरण नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) पहा). +* प्रतिमा गुळगुळीत करण्यासाठी आणि नॉईज काढून टाकण्यासाठी, आम्ही **व्हेरिएशन लॉस** देखील सादर करतो, जो शेजारील पिक्सेलमधील सरासरी अंतर मोजतो. +* मुख्य ऑप्टिमायझेशन लूप वर्तमान प्रतिमेला ग्रेडियंट डिसेंट (किंवा इतर काही ऑप्टिमायझेशन अल्गोरिदम) वापरून समायोजित करतो, एकूण लॉस कमी करण्यासाठी, जो सर्व तीन लॉसेसचा वेटेड सम आहे. + +## ✍️ उदाहरण: [स्टाइल ट्रान्सफर](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## निष्कर्ष + +या धड्यात, तुम्ही GANs आणि त्यांना कसे प्रशिक्षण द्यायचे ते शिकलात. तुम्ही या प्रकारच्या न्यूरल नेटवर्क्सना येणाऱ्या विशेष आव्हानांबद्दल आणि त्यावर मात करण्याच्या काही रणनीतींबद्दलही शिकलात. + +## 🚀 आव्हान + +[स्टाइल ट्रान्सफर नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) चालवा आणि तुमच्या स्वतःच्या प्रतिमांचा वापर करा. + +## पुनरावलोकन आणि स्व-अभ्यास + +संदर्भासाठी, या स्रोतांमध्ये GANs बद्दल अधिक वाचा: + +* मार्को पासिनी, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [स्टाइलGAN](https://en.wikipedia.org/wiki/StyleGAN), विचार करण्यासाठी एक *डिफॉल्ट* GAN आर्किटेक्चर +* [Azure ML वर GANs वापरून जनरेटिव आर्ट तयार करणे](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## असाइनमेंट + +या धड्याशी संबंधित दोन नोटबुक्सपैकी एक पुन्हा पहा आणि GAN ला तुमच्या स्वतःच्या प्रतिमांवर प्रशिक्षण द्या. तुम्ही काय तयार करू शकता? + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/mr/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..79debadf --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,187 @@ + +# ऑब्जेक्ट डिटेक्शन + +आतापर्यंत आपण ज्या इमेज क्लासिफिकेशन मॉडेल्सचा अभ्यास केला आहे, ते एका इमेजवर प्रक्रिया करून एक वर्गीकृत परिणाम देतात, जसे की MNIST समस्येमध्ये 'संख्या' वर्ग. परंतु, अनेक वेळा आपल्याला फक्त हे जाणून घ्यायचे नसते की एखाद्या चित्रात वस्तू आहेत, तर आपल्याला त्यांच्या अचूक स्थानाचा अंदाज लावायचा असतो. **ऑब्जेक्ट डिटेक्शन** याच उद्देशासाठी आहे. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![ऑब्जेक्ट डिटेक्शन](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.mr.png) + +> चित्र [YOLO v2 वेबसाइट](https://pjreddie.com/darknet/yolov2/) वरून + +## ऑब्जेक्ट डिटेक्शनसाठी साधा दृष्टिकोन + +समजा आपल्याला एखाद्या चित्रात मांजर शोधायची आहे, तर ऑब्जेक्ट डिटेक्शनसाठी एक साधा दृष्टिकोन असा असू शकतो: + +1. चित्राला अनेक टाइल्समध्ये विभागा. +2. प्रत्येक टाइलवर इमेज क्लासिफिकेशन चालवा. +3. ज्या टाइल्समध्ये पुरेशी उच्च सक्रियता दिसून येते, त्या टाइल्समध्ये संबंधित वस्तू असल्याचे मानले जाऊ शकते. + +![साधा ऑब्जेक्ट डिटेक्शन](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.mr.png) + +> *चित्र [व्यायाम नोटबुक](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) मधून* + +तथापि, हा दृष्टिकोन आदर्श नाही, कारण तो वस्तूच्या बॉक्सचे स्थान अचूकपणे शोधण्यास सक्षम नाही. अधिक अचूक स्थानासाठी, आपल्याला **रेग्रेशन** वापरून बॉक्सचे समन्वय अंदाज लावावे लागतात - आणि त्यासाठी विशिष्ट डेटासेट्स आवश्यक असतात. + +## ऑब्जेक्ट डिटेक्शनसाठी रेग्रेशन + +[हा ब्लॉग पोस्ट](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) आकार शोधण्यासाठी एक चांगली सुरुवात देते. + +## ऑब्जेक्ट डिटेक्शनसाठी डेटासेट्स + +या कार्यासाठी तुम्हाला खालील डेटासेट्स सापडू शकतात: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 वर्ग +* [COCO](http://cocodataset.org/#home) - कॉमन ऑब्जेक्ट्स इन कॉन्टेक्स्ट. 80 वर्ग, बॉक्सेस आणि सेगमेंटेशन मास्क + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.mr.jpg) + +## ऑब्जेक्ट डिटेक्शन मेट्रिक्स + +### इंटरसेक्शन ओव्हर युनियन + +इमेज क्लासिफिकेशनसाठी अल्गोरिदम किती चांगले कार्य करते हे मोजणे सोपे आहे, परंतु ऑब्जेक्ट डिटेक्शनसाठी वर्गाची अचूकता आणि बॉक्सच्या स्थानाची अचूकता दोन्ही मोजणे आवश्यक आहे. यासाठी **इंटरसेक्शन ओव्हर युनियन** (IoU) वापरले जाते, जे दोन बॉक्सेस (किंवा दोन क्षेत्रे) किती चांगले ओव्हरलॅप होतात हे मोजते. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.mr.png) + +> *चित्र 2 [या उत्कृष्ट ब्लॉग पोस्टवरून IoU बद्दल](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +संकल्पना सोपी आहे - दोन आकृत्यांच्या ओव्हरलॅप क्षेत्राला त्यांच्या युनियन क्षेत्राने विभाजित करतो. दोन समान क्षेत्रांसाठी IoU 1 असेल, तर पूर्णपणे वेगळ्या क्षेत्रांसाठी ते 0 असेल. अन्यथा, ते 0 ते 1 दरम्यान बदलते. आम्ही सामान्यतः फक्त त्या बॉक्सेस विचारात घेतो ज्यांचे IoU विशिष्ट मूल्यापेक्षा जास्त असते. + +### सरासरी अचूकता (Average Precision) + +समजा आपल्याला एखाद्या वर्गातील वस्तू $C$ किती चांगल्या प्रकारे ओळखल्या जातात हे मोजायचे आहे. यासाठी **सरासरी अचूकता** मेट्रिक्स वापरली जाते, जी खालीलप्रमाणे गणना केली जाते: + +1. प्रिसिजन-रिकॉल वक्र ओळख थ्रेशोल्ड मूल्यावर (0 ते 1 पर्यंत) अवलंबून अचूकता दर्शवते. +2. थ्रेशोल्डनुसार, आपल्याला चित्रात अधिक किंवा कमी वस्तू सापडतील, आणि प्रिसिजन व रिकॉलचे वेगवेगळे मूल्य मिळेल. +3. वक्र असे दिसेल: + + + +> *चित्र [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) मधून* + +वर्ग $C$ साठी सरासरी अचूकता म्हणजे या वक्राखालील क्षेत्र. अधिक अचूकपणे, रिकॉल अक्ष सामान्यतः 10 भागांमध्ये विभागली जाते, आणि प्रिसिजन सर्व त्या बिंदूंवर सरासरी केली जाते: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP आणि IoU + +आम्ही फक्त त्या ओळखींवर विचार करू, ज्यांचे IoU विशिष्ट मूल्यापेक्षा जास्त आहे. उदाहरणार्थ, PASCAL VOC डेटासेटमध्ये सामान्यतः $\mbox{IoU Threshold} = 0.5$ मानले जाते, तर COCO मध्ये AP वेगवेगळ्या $\mbox{IoU Threshold}$ मूल्यांसाठी मोजले जाते. + + + +> *चित्र [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) मधून* + +### सरासरी अचूकता - mAP + +ऑब्जेक्ट डिटेक्शनसाठी मुख्य मेट्रिक **मीन अॅव्हरेज प्रिसिजन** किंवा **mAP** आहे. हे सर्व वर्गांसाठी सरासरी अचूकतेचे मूल्य आहे, आणि कधीकधी $\mbox{IoU Threshold}$ वर देखील सरासरी केली जाते. अधिक तपशीलवार, **mAP** कसे गणना करायचे याचे वर्णन [या ब्लॉग पोस्टमध्ये](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) केले आहे, आणि [इथे कोडसह](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) देखील. + +## ऑब्जेक्ट डिटेक्शनसाठी विविध दृष्टिकोन + +ऑब्जेक्ट डिटेक्शन अल्गोरिदम्सचे दोन मुख्य प्रकार आहेत: + +* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN). मुख्य कल्पना म्हणजे **Regions of Interests** (ROI) तयार करणे आणि त्यावर CNN चालवणे, जास्तीत जास्त सक्रियता शोधण्यासाठी. हे साध्या दृष्टिकोनासारखे आहे, परंतु ROIs अधिक हुशारीने तयार केले जातात. अशा पद्धतींचा मुख्य तोटा म्हणजे त्या हळू असतात, कारण चित्रावर CNN क्लासिफायरचे अनेक पासेस आवश्यक असतात. +* **One-pass** (YOLO, SSD, RetinaNet) पद्धती. या आर्किटेक्चरमध्ये वर्ग आणि ROIs एका पासमध्ये अंदाज लावण्यासाठी नेटवर्क डिझाइन केले जाते. + +### R-CNN: Region-Based CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) वापरते ROI क्षेत्रांची संरचना तयार करण्यासाठी, जी नंतर CNN फीचर एक्स्ट्रॅक्टर्स आणि SVM-क्लासिफायर्सद्वारे वस्तूचा वर्ग निश्चित करण्यासाठी आणि *बॉक्स* समन्वय निश्चित करण्यासाठी रेषीय रेग्रेशनद्वारे प्रक्रिया केली जाते. [अधिकृत पेपर](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.mr.png) + +> *चित्र van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.mr.png) + +> *चित्र [या ब्लॉगमधून](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +हा दृष्टिकोन R-CNN सारखाच आहे, परंतु क्षेत्रे कॉन्व्होल्यूशन लेयर्स लागू केल्यानंतर निश्चित केली जातात. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.mr.png) + +> चित्र [अधिकृत पेपर](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +या दृष्टिकोनाची मुख्य कल्पना म्हणजे ROIs अंदाज लावण्यासाठी न्यूरल नेटवर्क वापरणे - ज्याला *Region Proposal Network* म्हणतात. [पेपर](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.mr.png) + +> चित्र [अधिकृत पेपर](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Region-Based Fully Convolutional Network + +हा अल्गोरिदम Faster R-CNN पेक्षा अधिक वेगवान आहे. मुख्य कल्पना अशी आहे: + +1. ResNet-101 वापरून फीचर्स काढणे. +1. फीचर्स **Position-Sensitive Score Map** द्वारे प्रक्रिया केली जातात. $C$ वर्गांमधील प्रत्येक वस्तू $k\times k$ क्षेत्रांमध्ये विभागली जाते, आणि वस्तूंचे भाग अंदाज लावण्यासाठी प्रशिक्षण दिले जाते. +1. $k\times k$ क्षेत्रांमधील प्रत्येक भागासाठी सर्व नेटवर्क्स वस्तू वर्गांसाठी मतदान करतात, आणि जास्तीत जास्त मत असलेला वर्ग निवडला जातो. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.mr.png) + +> चित्र [अधिकृत पेपर](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO हा रिअलटाइम एक-पास अल्गोरिदम आहे. मुख्य कल्पना अशी आहे: + + * चित्र $S\times S$ क्षेत्रांमध्ये विभागले जाते. + * प्रत्येक क्षेत्रासाठी, **CNN** $n$ शक्य वस्तू, *बॉक्स* समन्वय आणि *कॉन्फिडन्स*=*प्रॉबॅबिलिटी* * IoU अंदाज लावते. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.mr.png) + +> चित्र [अधिकृत पेपर](https://arxiv.org/abs/1506.02640) + +### इतर अल्गोरिदम्स + +* RetinaNet: [अधिकृत पेपर](https://arxiv.org/abs/1708.02002) + - [Torchvision मधील PyTorch अंमलबजावणी](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras अंमलबजावणी](https://github.com/fizyr/keras-retinanet) + - [RetinaNet वापरून ऑब्जेक्ट डिटेक्शन](https://keras.io/examples/vision/retinanet/) Keras Samples मध्ये +* SSD (Single Shot Detector): [अधिकृत पेपर](https://arxiv.org/abs/1512.02325) + +## ✍️ व्यायाम: ऑब्जेक्ट डिटेक्शन + +खालील नोटबुकमध्ये तुमचे शिक्षण सुरू ठेवा: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## निष्कर्ष + +या धड्यात तुम्ही ऑब्जेक्ट डिटेक्शन साध्य करण्याच्या विविध पद्धतींचा झपाट्याने आढावा घेतला! + +## 🚀 आव्हान + +या लेख आणि नोटबुक्स वाचा आणि YOLO स्वतः वापरून पहा: + +* [YOLO बद्दल चांगला ब्लॉग पोस्ट](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [अधिकृत साइट](https://pjreddie.com/darknet/yolo/) + * YOLO: [Keras अंमलबजावणी](https://github.com/experiencor/keras-yolo2), [स्टेप-बाय-स्टेप नोटबुक](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Keras अंमलबजावणी](https://github.com/experiencor/keras-yolo2), [स्टेप-बाय-स्टेप नोटबुक](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [व्याख्यानानंतर प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## पुनरावलोकन आणि स्व-अभ्यास + +* [ऑब्जेक्ट डिटेक्शन](https://tjmachinelearning.com/lectures/1718/obj/) निखिल सरदाना यांच्याकडून +* [ऑब्जेक्ट डिटेक्शन अल्गोरिदम्सची चांगली तुलना](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [ऑब्जेक्ट डिटेक्शनसाठी डीप लर्निंग अल्गोरिदम्सचा आढावा](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [ऑब्जेक्ट डिटेक्शन अल्गोरिदम्ससाठी स्टेप-बाय-स्टेप परिचय](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python मध्ये Faster R-CNN वापरून ऑब्जेक्ट डिटेक्शनची अंमलबजावणी](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [असाइनमेंट: ऑब्जेक्ट डिटेक्शन](lab/README.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/mr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..cbaa0aed --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# हॉलिवूड हेड्स डेटासेट वापरून हेड डिटेक्शन + +[AI फॉर बिगिनर्स करिक्युलम](https://github.com/microsoft/ai-for-beginners) मधील लॅब असाइनमेंट. + +## कार्य + +व्हिडिओ सर्व्हिलन्स कॅमेरा स्ट्रीमवर लोकांची संख्या मोजणे हे एक महत्त्वाचे कार्य आहे, ज्यामुळे आपल्याला दुकानांमधील भेट देणाऱ्यांची संख्या, रेस्टॉरंटमधील व्यस्त तास इत्यादींचा अंदाज लावता येतो. हे कार्य सोडवण्यासाठी, आपल्याला वेगवेगळ्या कोनांमधून मानवी डोके ओळखता यायला हवे. मानवी डोके ओळखण्यासाठी ऑब्जेक्ट डिटेक्शन मॉडेल प्रशिक्षण देण्यासाठी आपण [हॉलिवूड हेड्स डेटासेट](https://www.di.ens.fr/willow/research/headdetection/) वापरू शकतो. + +## डेटासेट + +[हॉलिवूड हेड्स डेटासेट](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) मध्ये हॉलिवूड चित्रपटांमधील 224,740 फ्रेम्समध्ये 369,846 मानवी डोक्यांची अ‍ॅनोटेशन आहे. हे [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) स्वरूपात प्रदान केले आहे, जिथे प्रत्येक प्रतिमेसाठी एक XML वर्णन फाइल देखील आहे, जी अशा प्रकारे दिसते: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +या डेटासेटमध्ये फक्त एकच ऑब्जेक्ट वर्ग आहे `head`, आणि प्रत्येक डोक्यासाठी, तुम्हाला बाउंडिंग बॉक्सचे समन्वय मिळतात. तुम्ही XML पार्स करण्यासाठी Python लायब्ररी वापरू शकता, किंवा [ही लायब्ररी](https://pypi.org/project/pascal-voc/) वापरून थेट PASCAL VOC स्वरूप हाताळू शकता. + +## ऑब्जेक्ट डिटेक्शन प्रशिक्षण + +तुम्ही ऑब्जेक्ट डिटेक्शन मॉडेल खालीलपैकी कोणत्याही पद्धतीने प्रशिक्षण देऊ शकता: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) आणि त्याच्या Python API चा वापर करून क्लाउडमध्ये प्रोग्रामॅटिकली मॉडेल प्रशिक्षण द्या. कस्टम व्हिजन काहीशे प्रतिमांपेक्षा जास्त डेटासेटसाठी प्रशिक्षण देऊ शकणार नाही, त्यामुळे तुम्हाला डेटासेट मर्यादित करावे लागेल. +* [Keras ट्युटोरियल](https://keras.io/examples/vision/retinanet/) मधील उदाहरण वापरून RetunaNet मॉडेल प्रशिक्षण द्या. +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) या torchvision मधील बिल्ट-इन मॉड्यूलचा वापर करा. + +## मुख्य मुद्दे + +ऑब्जेक्ट डिटेक्शन हे उद्योगात वारंवार आवश्यक असलेले कार्य आहे. जरी काही सेवा (जसे की [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)) ऑब्जेक्ट डिटेक्शन करण्यासाठी वापरता येतात, तरीही ऑब्जेक्ट डिटेक्शन कसे कार्य करते हे समजून घेणे आणि स्वतःचे मॉडेल प्रशिक्षण देण्यास सक्षम असणे महत्त्वाचे आहे. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/mr/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..a9a06520 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# विभागणी + +आम्ही यापूर्वी ऑब्जेक्ट डिटेक्शनबद्दल शिकले, ज्यामुळे आम्हाला प्रतिमेमधील वस्तूंचे स्थान त्यांच्या *bounding boxes* च्या अंदाजाने शोधता येते. परंतु, काही कार्यांसाठी आपल्याला फक्त bounding boxes पुरेसे नसून वस्तूंचे अधिक अचूक स्थान आवश्यक असते. या कार्याला **विभागणी** म्हणतात. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +विभागणीला **पिक्सेल वर्गीकरण** म्हणून पाहिले जाऊ शकते, जिथे प्रतिमेतील **प्रत्येक** पिक्सेलसाठी त्याचा वर्ग (*background* हा वर्गांपैकी एक आहे) अंदाज करणे आवश्यक असते. विभागणीसाठी दोन मुख्य अल्गोरिदम आहेत: + +* **सामान्य विभागणी (Semantic segmentation)** फक्त पिक्सेलचा वर्ग सांगते आणि त्याच वर्गातील वेगवेगळ्या वस्तूंमध्ये फरक करत नाही. +* **इन्स्टन्स विभागणी (Instance segmentation)** वर्गांना वेगवेगळ्या उदाहरणांमध्ये विभागते. + +उदाहरणार्थ, इन्स्टन्स विभागणीसाठी या मेंढ्या वेगवेगळ्या वस्तू आहेत, परंतु सामान्य विभागणीसाठी सर्व मेंढ्या एकाच वर्गाने दर्शविल्या जातात. + + + +> प्रतिमा [या ब्लॉग पोस्टमधून](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +विभागणीसाठी वेगवेगळ्या न्यूरल आर्किटेक्चर्स आहेत, परंतु त्यांची रचना सारखीच असते. एका प्रकारे, हे तुम्ही यापूर्वी शिकलेल्या ऑटोएन्कोडरप्रमाणे आहे, परंतु मूळ प्रतिमा विघटित करण्याऐवजी, आपले लक्ष्य **मास्क** विघटित करणे आहे. त्यामुळे, विभागणी नेटवर्कमध्ये खालील भाग असतात: + +* **एन्कोडर** इनपुट प्रतिमेतून वैशिष्ट्ये काढतो. +* **डिकोडर** त्या वैशिष्ट्यांना **मास्क प्रतिमेमध्ये** रूपांतरित करतो, ज्याचा आकार आणि चॅनेलची संख्या वर्गांच्या संख्येशी जुळते. + + + +> प्रतिमा [या प्रकाशनातून](https://arxiv.org/pdf/2001.05566.pdf) + +आपण विभागणीसाठी वापरल्या जाणाऱ्या लॉस फंक्शनचा विशेष उल्लेख करायला हवा. पारंपरिक ऑटोएन्कोडर वापरताना, आपल्याला दोन प्रतिमांमधील समानता मोजावी लागते, आणि त्यासाठी आपण mean square error (MSE) वापरू शकतो. विभागणीमध्ये, लक्ष्य मास्क प्रतिमेतील प्रत्येक पिक्सेल वर्ग क्रमांकाचे प्रतिनिधित्व करते (तिसऱ्या परिमाणावर एक-हॉट-एन्कोड केलेले), त्यामुळे वर्गीकरणासाठी विशिष्ट लॉस फंक्शन्स वापरणे आवश्यक आहे - क्रॉस-एन्क्रॉपी लॉस, सर्व पिक्सेल्सवर सरासरी. जर मास्क बायनरी असेल - **बायनरी क्रॉस-एन्क्रॉपी लॉस** (BCE) वापरला जातो. + +> ✅ एक-हॉट एन्कोडिंग ही वर्ग लेबलला वर्गांच्या संख्येइतक्या लांबीच्या व्हेक्टरमध्ये एन्कोड करण्याची पद्धत आहे. [या लेखात](https://datagy.io/sklearn-one-hot-encode/) या तंत्राबद्दल अधिक जाणून घ्या. + +## वैद्यकीय प्रतिमांसाठी विभागणी + +या धड्यात, आपण विभागणी प्रत्यक्षात पाहू, जिथे नेटवर्कला वैद्यकीय प्रतिमांवर मानवी नेवी (म्हणजेच मोल्स) ओळखण्यासाठी प्रशिक्षण दिले जाईल. आपण PH2 Database चा वापर प्रतिमांच्या स्रोत म्हणून करू. या डेटासेटमध्ये तीन वर्गांच्या 200 प्रतिमा आहेत: सामान्य नेवस, असामान्य नेवस, आणि मेलानोमा. सर्व प्रतिमांमध्ये नेवसची रूपरेषा दर्शविणारा **मास्क** देखील आहे. + +> ✅ ही तंत्र वैद्यकीय प्रतिमांसाठी विशेषतः योग्य आहे, परंतु तुम्ही इतर कोणत्या वास्तविक-जगातील अनुप्रयोगांची कल्पना करू शकता? + +navi + +> प्रतिमा PH2 Database मधून + +आपण मॉडेलला नेवसला त्याच्या पार्श्वभूमीपासून विभागण्यासाठी प्रशिक्षण देऊ. + +## ✍️ सराव: सामान्य विभागणी + +खालील नोटबुक उघडा, वेगवेगळ्या सामान्य विभागणी आर्किटेक्चर्सबद्दल अधिक जाणून घ्या, त्यांच्यासोबत काम करण्याचा सराव करा, आणि त्यांना प्रत्यक्षात पाहा. + +* [Semantic Segmentation Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantic Segmentation TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## निष्कर्ष + +विभागणी ही प्रतिमा वर्गीकरणासाठी एक अत्यंत शक्तिशाली तंत्र आहे, जी bounding boxes च्या पलीकडे जाऊन पिक्सेल-स्तरीय वर्गीकरण करते. हे वैद्यकीय प्रतिमांसह इतर अनेक अनुप्रयोगांमध्ये वापरले जाते. + +## 🚀 आव्हान + +शरीर विभागणी ही लोकांच्या प्रतिमांसह आपण करू शकणाऱ्या सामान्य कार्यांपैकी एक आहे. आणखी एक महत्त्वाचे कार्य म्हणजे **स्नायू शोधणे** आणि **पोज शोधणे**. [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लायब्ररी वापरून पोज शोधणे कसे वापरले जाऊ शकते ते पाहा. + +## पुनरावलोकन आणि स्व-अभ्यास + +[विकिपीडिया लेख](https://wikipedia.org/wiki/Image_segmentation) या तंत्राच्या विविध अनुप्रयोगांचे चांगले विहंगावलोकन देते. या क्षेत्रातील इन्स्टन्स विभागणी आणि पॅनोप्टिक विभागणीच्या उपडोमेनबद्दल स्वतः अधिक जाणून घ्या. + +## [असाइनमेंट](lab/README.md) + +या प्रयोगशाळेत, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) वापरून **मानवी शरीर विभागणी** करण्याचा प्रयत्न करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने ग्रस्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/mr/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..94d73459 --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# मानवी शरीर विभाजन + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +व्हिडिओ निर्मितीमध्ये, उदाहरणार्थ, हवामान अंदाजांमध्ये, आपल्याला कॅमेरामधून मानवी प्रतिमा कापून ती इतर फुटेजवर ठेवण्याची गरज असते. हे सामान्यतः **क्रोमा की** तंत्र वापरून केले जाते, जिथे मानवाला एकसमान रंगाच्या पार्श्वभूमीसमोर चित्रित केले जाते आणि नंतर ती पार्श्वभूमी काढून टाकली जाते. या प्रयोगशाळेत, आपण मानवी आकृती कापण्यासाठी न्यूरल नेटवर्क मॉडेल प्रशिक्षित करू. + +## डेटासेट + +आपण [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) या Kaggle वरील डेटासेटचा वापर करू. Kaggle वरून डेटासेट मॅन्युअली डाउनलोड करा. + +## प्रारंभिक नोटबुक + +[BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) उघडून प्रयोगशाळा सुरू करा. + +## महत्त्वाचे मुद्दे + +शरीर विभाजन हे मानवी प्रतिमांसह करू शकणाऱ्या सामान्य कार्यांपैकी एक आहे. इतर महत्त्वाची कार्ये म्हणजे **संकल्पना शोधणे** आणि **स्थिती शोधणे**. [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लायब्ररीमध्ये पाहा की ही कार्ये कशी अंमलात आणता येतात. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/4-ComputerVision/README.md b/translations/mr/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..9546312c --- /dev/null +++ b/translations/mr/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# संगणकीय दृष्टिकोन + +![संगणकीय दृष्टिकोन विषयाची रेखाचित्रात संक्षिप्त माहिती](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.mr.png) + +या विभागात आपण शिकणार आहोत: + +* [संगणकीय दृष्टिकोन आणि OpenCV ची ओळख](06-IntroCV/README.md) +* [कन्फ्युलेशनल न्यूरल नेटवर्क्स](07-ConvNets/README.md) +* [पूर्व-प्रशिक्षित नेटवर्क्स आणि ट्रान्सफर लर्निंग](08-TransferLearning/README.md) +* [ऑटोएन्कोडर्स](09-Autoencoders/README.md) +* [जनरेटिव्ह अॅडव्हर्सेरियल नेटवर्क्स](10-GANs/README.md) +* [ऑब्जेक्ट डिटेक्शन](11-ObjectDetection/README.md) +* [सेमॅंटिक सेग्मेंटेशन](12-Segmentation/README.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/13-TextRep/README.md b/translations/mr/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..5216cbec --- /dev/null +++ b/translations/mr/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# मजकूराचे टेन्सर्समध्ये प्रतिनिधित्व + +## [पूर्व-व्याख्यान क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## मजकूर वर्गीकरण + +या विभागाच्या पहिल्या भागात, आपण **मजकूर वर्गीकरण** या कार्यावर लक्ष केंद्रित करू. आपण [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) डेटासेट वापरणार आहोत, ज्यामध्ये खालीलप्रमाणे बातम्या आहेत: + +* श्रेणी: विज्ञान/तंत्रज्ञान +* शीर्षक: Ky. कंपनीला पेप्टाइड्सचा अभ्यास करण्यासाठी अनुदान मिळाले (AP) +* मजकूर: AP - लुईव्हिल विद्यापीठातील रसायनशास्त्र संशोधकाने स्थापन केलेल्या कंपनीला विकसित करण्यासाठी अनुदान मिळाले... + +आपले उद्दिष्ट मजकूराच्या आधारे बातमीला योग्य श्रेणीत वर्गीकृत करणे असेल. + +## मजकूराचे प्रतिनिधित्व + +जर आपल्याला न्यूरल नेटवर्कसह नैसर्गिक भाषा प्रक्रिया (NLP) कार्ये सोडवायची असतील, तर मजकूराचे टेन्सर्समध्ये प्रतिनिधित्व करण्याचा काहीतरी मार्ग आवश्यक आहे. संगणक आधीच ASCII किंवा UTF-8 सारख्या एन्कोडिंगचा वापर करून मजकूर वर्णांना क्रमांकांमध्ये रूपांतरित करतो, जे स्क्रीनवरील फॉन्ट्सशी जुळतात. + +अक्षराला ASCII आणि बायनरी प्रतिनिधित्वाशी जुळवणारे आकृती दाखवणारी प्रतिमा + +> [प्रतिमा स्रोत](https://www.seobility.net/en/wiki/ASCII) + +आपण माणसे म्हणून, प्रत्येक अक्षर **काय दर्शवते** हे समजतो, आणि सर्व वर्ण एकत्र येऊन वाक्य तयार करतात हे देखील समजतो. परंतु, संगणकाला स्वतःहून असे समजत नाही, आणि न्यूरल नेटवर्कला प्रशिक्षणादरम्यान अर्थ शिकावा लागतो. + +म्हणूनच, मजकूराचे प्रतिनिधित्व करताना आपण वेगवेगळ्या पद्धती वापरू शकतो: + +* **अक्षर-स्तरीय प्रतिनिधित्व**, जिथे आपण प्रत्येक अक्षराला क्रमांक मानून मजकूराचे प्रतिनिधित्व करतो. जर आपल्या मजकूरात *C* वेगवेगळे अक्षरे असतील, तर *Hello* हा शब्द 5x*C* टेन्सरने दर्शविला जाईल. प्रत्येक अक्षराला वन-हॉट एन्कोडिंगमध्ये टेन्सरच्या एका स्तंभाशी जुळवले जाईल. +* **शब्द-स्तरीय प्रतिनिधित्व**, जिथे आपण आपल्या मजकूरातील सर्व शब्दांचे **शब्दकोश** तयार करतो आणि नंतर शब्दांचे वन-हॉट एन्कोडिंगद्वारे प्रतिनिधित्व करतो. ही पद्धत काहीशी चांगली आहे, कारण प्रत्येक अक्षर स्वतःहून फारसा अर्थपूर्ण नसतो, आणि उच्च-स्तरीय शब्द वापरल्याने न्यूरल नेटवर्कसाठी कार्य सुलभ होते. परंतु, मोठ्या शब्दकोशाच्या आकारामुळे उच्च-आयामी विरळ टेन्सर्स हाताळावे लागतात. + +कोणत्याही प्रकारच्या प्रतिनिधित्वासाठी, आपल्याला प्रथम मजकूर **टोकन्स**च्या अनुक्रमात रूपांतरित करावा लागतो, जिथे एक टोकन अक्षर, शब्द किंवा कधी कधी शब्दाचा भाग असतो. नंतर, आपण टोकनला क्रमांकात रूपांतरित करतो, सामान्यतः **शब्दकोश** वापरून, आणि हा क्रमांक वन-हॉट एन्कोडिंगद्वारे न्यूरल नेटवर्कमध्ये फीड केला जाऊ शकतो. + +## एन-ग्राम्स + +नैसर्गिक भाषेत, शब्दांचा अचूक अर्थ फक्त संदर्भातच ठरतो. उदाहरणार्थ, *neural network* आणि *fishing network* यांचे अर्थ पूर्णपणे वेगळे आहेत. याचा विचार करण्यासाठी, आपण शब्दांच्या जोड्यांवर आधारित मॉडेल तयार करू शकतो आणि शब्दांच्या जोड्यांना स्वतंत्र शब्दकोश टोकन्स मानू शकतो. अशा प्रकारे, *I like to go fishing* हे वाक्य खालील टोकन्सच्या अनुक्रमाने दर्शविले जाईल: *I like*, *like to*, *to go*, *go fishing*. या पद्धतीचा तोटा म्हणजे शब्दकोशाचा आकार लक्षणीय वाढतो, आणि *go fishing* आणि *go shopping* सारख्या संयोजनांना वेगवेगळ्या टोकन्सने दर्शवले जाते, जरी त्याच क्रियापदाचा वापर केला गेला असला तरी त्यांच्यात कोणताही अर्थपूर्ण साम्य नसतो. + +काही प्रकरणांमध्ये, आपण तीन शब्दांच्या संयोजनांचा -- त्रि-ग्राम्स -- विचार करू शकतो. त्यामुळे ही पद्धत **एन-ग्राम्स** म्हणून ओळखली जाते. तसेच, अक्षर-स्तरीय प्रतिनिधित्वासह एन-ग्राम्स वापरणे उपयुक्त ठरू शकते, जिथे एन-ग्राम्स साधारणतः वेगवेगळ्या अक्षरसमूहांशी जुळतात. + +## बॅग-ऑफ-वर्ड्स आणि TF/IDF + +मजकूर वर्गीकरणासारखी कार्ये सोडवताना, आपल्याला एक निश्चित-आकाराचा वेक्टर तयार करावा लागतो, जो अंतिम घन वर्गीकरणासाठी इनपुट म्हणून वापरला जाईल. यासाठी सर्व वैयक्तिक शब्दांचे प्रतिनिधित्व एकत्र करणे, उदा. त्यांची बेरीज करणे, हा एक सोपा मार्ग आहे. जर आपण प्रत्येक शब्दाचे वन-हॉट एन्कोडिंग जोडले, तर आपल्याला वारंवारतेचा वेक्टर मिळेल, जो मजकूरात प्रत्येक शब्द किती वेळा दिसतो हे दर्शवतो. अशा प्रकारच्या मजकूराचे प्रतिनिधित्व **बॅग ऑफ वर्ड्स** (BoW) म्हणून ओळखले जाते. + + + +> लेखकाने तयार केलेली प्रतिमा + +BoW मूलत: मजकूरात कोणते शब्द दिसतात आणि कोणत्या प्रमाणात हे दर्शवते, जे मजकूर कशाबद्दल आहे याचे चांगले संकेत असू शकतात. उदाहरणार्थ, राजकारणावरील बातमीमध्ये *president* आणि *country* सारखे शब्द असण्याची शक्यता असते, तर वैज्ञानिक प्रकाशनात *collider*, *discovered* असे काहीतरी असते. त्यामुळे, अनेक प्रकरणांमध्ये शब्दांची वारंवारता मजकूराच्या विषयाचे चांगले संकेतक असू शकते. + +BoW चा तोटा असा आहे की काही सामान्य शब्द, जसे *and*, *is*, इत्यादी बहुतेक मजकुरांमध्ये दिसतात, आणि त्यांची वारंवारता जास्त असते, ज्यामुळे खरोखर महत्त्वाचे शब्द झाकले जातात. आपण अशा शब्दांचे महत्त्व कमी करू शकतो, जर आपण संपूर्ण दस्तऐवज संग्रहात शब्द किती वेळा दिसतो याचा विचार केला. हीच कल्पना TF/IDF पद्धतीमागे आहे, जी या धड्याशी संलग्न असलेल्या नोटबुक्समध्ये अधिक तपशीलवारपणे समजावली आहे. + +तथापि, या कोणत्याही पद्धती मजकूराचा **अर्थ** पूर्णपणे समजू शकत नाहीत. हे करण्यासाठी आपल्याला अधिक शक्तिशाली न्यूरल नेटवर्क मॉडेल्सची आवश्यकता आहे, ज्याबद्दल आपण या विभागात नंतर चर्चा करू. + +## ✍️ सराव: मजकूराचे प्रतिनिधित्व + +खालील नोटबुक्समध्ये आपले शिक्षण सुरू ठेवा: + +* [PyTorch सह मजकूराचे प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow सह मजकूराचे प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## निष्कर्ष + +आत्तापर्यंत, आपण अशा तंत्रांचा अभ्यास केला आहे जे वेगवेगळ्या शब्दांना वारंवारतेचे वजन देऊ शकतात. तथापि, ते अर्थ किंवा क्रम दर्शवू शकत नाहीत. प्रसिद्ध भाषाशास्त्रज्ञ जे. आर. फर्थ यांनी 1935 मध्ये म्हटल्याप्रमाणे, "शब्दाचा पूर्ण अर्थ नेहमीच संदर्भानुसार असतो, आणि संदर्भाशिवाय अर्थाचा अभ्यास गंभीरपणे घेतला जाऊ शकत नाही." आपण या अभ्यासक्रमात पुढे मजकूरातून संदर्भात्मक माहिती कशी काढायची हे शिकू. + +## 🚀 आव्हान + +बॅग-ऑफ-वर्ड्स आणि वेगवेगळ्या डेटा मॉडेल्स वापरून काही इतर सराव करून पहा. तुम्हाला या [Kaggle स्पर्धेतून](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) प्रेरणा मिळू शकते. + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## पुनरावलोकन आणि स्व-अभ्यास + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) वर मजकूर एम्बेडिंग आणि बॅग-ऑफ-वर्ड्स तंत्रांसह आपले कौशल्य सराव करा. + +## [असाइनमेंट: नोटबुक्स](assignment.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/13-TextRep/assignment.md b/translations/mr/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..fd8ff356 --- /dev/null +++ b/translations/mr/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेंट: नोटबुक्स + +या धड्याशी संबंधित नोटबुक्स (PyTorch किंवा TensorFlow आवृत्तीपैकी कोणतीही) वापरून, तुमचा स्वतःचा डेटासेट वापरून त्या पुन्हा चालवा, कदाचित Kaggle वरील एखादा डेटासेट, योग्य श्रेयासह वापरा. तुमच्या स्वतःच्या निष्कर्षांना अधोरेखित करण्यासाठी नोटबुक पुन्हा लिहा. काही नाविन्यपूर्ण डेटासेट वापरून पहा जे आश्चर्यकारक ठरू शकतात, जसे की NUFORC कडून [UFO sightings बद्दलचा हा डेटासेट](https://www.kaggle.com/datasets/NUFORC/ufo-sightings). + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/14-Embeddings/README.md b/translations/mr/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..539991a3 --- /dev/null +++ b/translations/mr/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# एम्बेडिंग्ज + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +जेव्हा आपण BoW किंवा TF/IDF आधारित वर्गीकरण करणारे मॉडेल्स प्रशिक्षण देतो, तेव्हा आपण `vocab_size` लांबीच्या उच्च-आयामी बॅग-ऑफ-वर्ड्स वेक्टरवर काम करतो आणि कमी-आयामी स्थानिक प्रतिनिधित्व वेक्टरला स्पष्टपणे विरळ वन-हॉट प्रतिनिधित्वात रूपांतरित करतो. मात्र, हे वन-हॉट प्रतिनिधित्व स्मृती-कार्यक्षम नाही. याशिवाय, प्रत्येक शब्द स्वतंत्रपणे हाताळला जातो, म्हणजेच वन-हॉट एन्कोड केलेले वेक्टर शब्दांमधील कोणतेही अर्थपूर्ण साम्य व्यक्त करत नाहीत. + +**एम्बेडिंग** ही कल्पना म्हणजे शब्दांना कमी-आयामी घन वेक्टरद्वारे दर्शविणे, जे काही प्रमाणात शब्दाचा अर्थपूर्ण अर्थ प्रतिबिंबित करतात. आपण नंतर कसे अर्थपूर्ण शब्द एम्बेडिंग्ज तयार करायचे ते चर्चा करू, पण सध्या आपण एम्बेडिंग्जकडे शब्द वेक्टरची आयाम कमी करण्याचा एक मार्ग म्हणून पाहू. + +तर, एम्बेडिंग लेयर एक शब्द इनपुट म्हणून घेईल आणि निर्दिष्ट `embedding_size` चा आउटपुट वेक्टर तयार करेल. एका अर्थाने, हे `Linear` लेयरसारखेच आहे, पण वन-हॉट एन्कोड केलेला वेक्टर घेण्याऐवजी, ते शब्द क्रमांक इनपुट म्हणून घेऊ शकेल, ज्यामुळे मोठे वन-हॉट-एन्कोडेड वेक्टर तयार करण्याची गरज टाळता येईल. + +आपल्या वर्गीकरण नेटवर्कमध्ये पहिल्या लेयर म्हणून एम्बेडिंग लेयर वापरून, आपण बॅग-ऑफ-वर्ड्स मॉडेलऐवजी **एम्बेडिंग बॅग** मॉडेलकडे स्विच करू शकतो, जिथे आपण प्रथम आपल्या मजकुरातील प्रत्येक शब्द त्याच्या संबंधित एम्बेडिंगमध्ये रूपांतरित करतो आणि नंतर त्या सर्व एम्बेडिंग्जवर काही एकत्रित फंक्शन (जसे की `sum`, `average` किंवा `max`) गणना करतो. + +![पाच अनुक्रम शब्दांसाठी एम्बेडिंग वर्गीकरण दाखवणारी प्रतिमा.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.mr.png) + +> लेखकाने तयार केलेली प्रतिमा + +## ✍️ सराव: एम्बेडिंग्ज + +खालील नोटबुक्समध्ये तुमचे शिक्षण सुरू ठेवा: +* [PyTorch सह एम्बेडिंग्ज](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow सह एम्बेडिंग्ज](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## अर्थपूर्ण एम्बेडिंग्ज: Word2Vec + +एम्बेडिंग लेयरने शब्दांना वेक्टर प्रतिनिधित्वात मॅप करायला शिकवले, मात्र, या प्रतिनिधित्वात फारसा अर्थपूर्ण अर्थ नव्हता. असे वेक्टर प्रतिनिधित्व शिकणे चांगले होईल की जिथे समान शब्द किंवा समानार्थी शब्द अशा वेक्टरशी संबंधित असतील जे काही वेक्टर अंतराच्या दृष्टीने एकमेकांच्या जवळ असतील (उदा. युक्लिडियन अंतर). + +हे करण्यासाठी, आपल्याला विशिष्ट पद्धतीने मोठ्या मजकूर संग्रहावर आपले एम्बेडिंग मॉडेल पूर्व-प्रशिक्षित करणे आवश्यक आहे. अर्थपूर्ण एम्बेडिंग्ज प्रशिक्षण देण्याचा एक मार्ग [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) म्हणून ओळखला जातो. हे दोन मुख्य आर्किटेक्चर्सवर आधारित आहे, जे शब्दांचे वितरित प्रतिनिधित्व तयार करण्यासाठी वापरले जातात: + + - **सतत बॅग-ऑफ-वर्ड्स** (CBoW) — या आर्किटेक्चरमध्ये, आपण संदर्भातून शब्दाचा अंदाज लावण्यासाठी मॉडेल प्रशिक्षण देतो. दिलेल्या ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ साठी, मॉडेलचे उद्दिष्ट $(W_{-2},W_{-1},W_1,W_2)$ वरून $W_0$ चा अंदाज लावणे आहे. + - **सतत स्किप-ग्राम** CBoW च्या उलट आहे. मॉडेल संदर्भातील शब्दांच्या विंडोचा वापर करून सध्याचा शब्द अंदाज लावतो. + +CBoW जलद आहे, तर स्किप-ग्राम हळू आहे, पण दुर्मिळ शब्दांचे चांगले प्रतिनिधित्व करते. + +![शब्दांना वेक्टरमध्ये रूपांतरित करण्यासाठी CBoW आणि स्किप-ग्राम अल्गोरिदम दाखवणारी प्रतिमा.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mr.png) + +> [या पेपरमधून](https://arxiv.org/pdf/1301.3781.pdf) घेतलेली प्रतिमा + +Word2Vec पूर्व-प्रशिक्षित एम्बेडिंग्ज (तसेच GloVe सारखी इतर समान मॉडेल्स) न्यूरल नेटवर्क्समधील एम्बेडिंग लेयरच्या जागी देखील वापरली जाऊ शकतात. मात्र, आपल्याला शब्दसंग्रह हाताळावे लागेल, कारण Word2Vec/GloVe पूर्व-प्रशिक्षित करण्यासाठी वापरलेला शब्दसंग्रह आपल्या मजकूर संग्रहातील शब्दसंग्रहापेक्षा वेगळा असण्याची शक्यता आहे. वरील नोटबुक्समध्ये या समस्येचे निराकरण कसे करायचे ते पाहा. + +## संदर्भात्मक एम्बेडिंग्ज + +Word2Vec सारख्या पारंपरिक पूर्व-प्रशिक्षित एम्बेडिंग्जचे एक महत्त्वाचे मर्यादन म्हणजे शब्द अर्थ अस्पष्टता समस्या. पूर्व-प्रशिक्षित एम्बेडिंग्ज संदर्भातील शब्दांचा काहीसा अर्थ पकडू शकतात, परंतु शब्दाचा प्रत्येक संभाव्य अर्थ त्याच एम्बेडिंगमध्ये एन्कोड केला जातो. यामुळे डाउनस्ट्रीम मॉडेल्समध्ये समस्या निर्माण होऊ शकतात, कारण अनेक शब्द, जसे की 'play', त्यांच्या वापराच्या संदर्भानुसार वेगवेगळे अर्थ दर्शवतात. + +उदाहरणार्थ, 'play' या शब्दाचा खालील दोन वाक्यांमध्ये खूप वेगळा अर्थ आहे: + +- मी थिएटरमध्ये एक **play** पाहायला गेलो. +- जॉनला त्याच्या मित्रांसोबत **play** करायचे आहे. + +वरील पूर्व-प्रशिक्षित एम्बेडिंग्ज 'play' या शब्दाच्या दोन्ही अर्थांचे प्रतिनिधित्व त्याच एम्बेडिंगमध्ये करतात. या मर्यादेवर मात करण्यासाठी, आपल्याला **भाषा मॉडेल** आधारित एम्बेडिंग्ज तयार करणे आवश्यक आहे, जे मोठ्या मजकूर संग्रहावर प्रशिक्षण दिले जाते आणि *जाणते* की शब्द वेगवेगळ्या संदर्भांमध्ये कसे एकत्र ठेवले जाऊ शकतात. संदर्भात्मक एम्बेडिंग्जवर चर्चा करणे या ट्यूटोरियलच्या कक्षेबाहेर आहे, परंतु आपण नंतर भाषेच्या मॉडेल्सबद्दल बोलताना त्यांच्याकडे परत येऊ. + +## निष्कर्ष + +या धड्यात, तुम्ही TensorFlow आणि PyTorch मध्ये एम्बेडिंग लेयर्स कसे तयार करायचे आणि वापरायचे ते शिकलात, ज्यामुळे शब्दांचे अर्थपूर्ण अर्थ अधिक चांगल्या प्रकारे प्रतिबिंबित होतात. + +## 🚀 आव्हान + +Word2Vec काही मनोरंजक अनुप्रयोगांसाठी वापरले गेले आहे, ज्यामध्ये गाण्याचे बोल आणि कविता तयार करणे यांचा समावेश आहे. [या लेखावर](https://www.politetype.com/blog/word2vec-color-poems) एक नजर टाका, ज्यामध्ये लेखकाने Word2Vec वापरून कविता कशी तयार केली याचे वर्णन केले आहे. [डॅन शिफमन यांचा हा व्हिडिओ](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) देखील पाहा, ज्यामध्ये या तंत्राची वेगळी व्याख्या दिली आहे. मग हे तंत्र कागलवरून मिळवलेल्या तुमच्या स्वतःच्या मजकूर संग्रहावर लागू करण्याचा प्रयत्न करा. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## पुनरावलोकन आणि स्व-अभ्यास + +Word2Vec वर हा पेपर वाचा: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [असाइनमेंट: नोटबुक्स](assignment.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमजुतींसाठी किंवा चुकीच्या अर्थ लावण्यास आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/14-Embeddings/assignment.md b/translations/mr/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..59df4e6d --- /dev/null +++ b/translations/mr/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेंट: नोटबुक्स + +या धड्याशी संबंधित नोटबुक्स (PyTorch किंवा TensorFlow आवृत्तीपैकी कोणतीही) वापरून, तुमच्या स्वतःच्या डेटासेटसह त्या पुन्हा चालवा, कदाचित Kaggle वरील एखाद्या डेटासेटचा वापर करून, योग्य श्रेय देऊन. तुमच्या स्वतःच्या निष्कर्षांना अधोरेखित करण्यासाठी नोटबुक पुन्हा लिहा. वेगळ्या प्रकारचा डेटासेट वापरून पाहा आणि तुमचे निरीक्षण दस्तऐवजीकरण करा, जसे की [हे बीटल्स गाण्यांचे बोल](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) यासारख्या मजकुराचा वापर करून. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/15-LanguageModeling/README.md b/translations/mr/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..4c213df3 --- /dev/null +++ b/translations/mr/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# भाषा मॉडेलिंग + +Word2Vec आणि GloVe सारख्या सेमॅंटिक एम्बेडिंग्स प्रत्यक्षात **भाषा मॉडेलिंग**कडे जाण्याचा पहिला टप्पा आहेत - असे मॉडेल तयार करणे जे काही प्रमाणात भाषेचे *समजून घेणे* (किंवा *प्रतिनिधित्व करणे*) शक्य करतात. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +भाषा मॉडेलिंगमागील मुख्य कल्पना म्हणजे त्यांना लेबल नसलेल्या डेटासेट्सवर अनसुपरवाइज्ड पद्धतीने प्रशिक्षण देणे. हे महत्त्वाचे आहे कारण आपल्याकडे प्रचंड प्रमाणात लेबल नसलेला मजकूर उपलब्ध आहे, तर लेबल असलेल्या मजकुराचे प्रमाण नेहमीच लेबलिंगसाठी लागणाऱ्या प्रयत्नांवर मर्यादित असेल. बहुतेक वेळा, आपण असे भाषा मॉडेल तयार करू शकतो जे मजकुरातील **हरवलेले शब्द भाकीत करू शकतात**, कारण मजकुरातील एखादा शब्द सहजपणे लपवता येतो आणि तो प्रशिक्षण नमुना म्हणून वापरता येतो. + +## एम्बेडिंग्सचे प्रशिक्षण + +आपल्या मागील उदाहरणांमध्ये, आपण पूर्व-प्रशिक्षित सेमॅंटिक एम्बेडिंग्स वापरल्या, परंतु हे पाहणे मनोरंजक आहे की त्या एम्बेडिंग्स कशा प्रशिक्षण दिल्या जाऊ शकतात. यासाठी काही शक्य कल्पना आहेत: + +* **N-Gram** भाषा मॉडेलिंग, जिथे आपण N मागील टोकन पाहून एखादे टोकन भाकीत करतो (N-gram). +* **कंटिन्युअस बॅग-ऑफ-वर्ड्स** (CBoW), जिथे आपण टोकन सिक्वेन्समधील मध्यवर्ती टोकन $W_0$ भाकीत करतो $W_{-N}$, ..., $W_N$. +* **स्किप-ग्राम**, जिथे आपण मध्यवर्ती टोकन $W_0$ पासून शेजारील टोकनांचा संच {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} भाकीत करतो. + +![शब्दांना वेक्टरमध्ये रूपांतरित करण्याच्या अल्गोरिदमवरील पेपरमधील प्रतिमा](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.mr.png) + +> प्रतिमा [या पेपरमधून](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ उदाहरण नोटबुक्स: CBoW मॉडेलचे प्रशिक्षण + +खालील नोटबुक्समध्ये तुमचे शिक्षण सुरू ठेवा: + +* [TensorFlow वापरून CBoW Word2Vec चे प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch वापरून CBoW Word2Vec चे प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## निष्कर्ष + +मागील धड्यात आपण पाहिले की शब्द एम्बेडिंग्स जादूसारखे कार्य करतात! आता आपल्याला माहित आहे की शब्द एम्बेडिंग्सचे प्रशिक्षण देणे फारसे गुंतागुंतीचे काम नाही, आणि गरज पडल्यास आपण विशिष्ट क्षेत्रातील मजकुरासाठी स्वतःचे शब्द एम्बेडिंग्स तयार करू शकतो. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## पुनरावलोकन आणि स्व-अभ्यास + +* [PyTorch वरील अधिकृत भाषा मॉडेलिंग ट्युटोरियल](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Word2Vec मॉडेलचे प्रशिक्षण देण्यासाठी TensorFlow वरील अधिकृत ट्युटोरियल](https://www.TensorFlow.org/tutorials/text/word2vec). +* **gensim** फ्रेमवर्क वापरून काही ओळींच्या कोडमध्ये सर्वसामान्यपणे वापरल्या जाणाऱ्या एम्बेडिंग्सचे प्रशिक्षण कसे द्यावे हे [या दस्तऐवजात](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) वर्णन केले आहे. + +## 🚀 [असाइनमेंट: स्किप-ग्राम मॉडेलचे प्रशिक्षण द्या](lab/README.md) + +प्रयोगशाळेत, आम्ही तुम्हाला या धड्याच्या कोडमध्ये बदल करून CBoW ऐवजी स्किप-ग्राम मॉडेलचे प्रशिक्षण देण्याचे आव्हान देतो. [तपशील वाचा](lab/README.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/mr/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..06889a1c --- /dev/null +++ b/translations/mr/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# स्किप-ग्राम मॉडेल प्रशिक्षण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +या प्रयोगशाळेत, तुम्हाला स्किप-ग्राम तंत्राचा वापर करून Word2Vec मॉडेल प्रशिक्षण देण्याचे आव्हान दिले आहे. $N$-टोकन्स-रुंद स्किप-ग्राम विंडोमध्ये शेजारील शब्दांची भविष्यवाणी करण्यासाठी एम्बेडिंगसह नेटवर्क प्रशिक्षण द्या. तुम्ही [या धड्याचा कोड](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) वापरू शकता आणि त्यात थोडेसे बदल करू शकता. + +## डेटासेट + +तुम्ही कोणतीही पुस्तक वापरू शकता. [Project Gutenberg](https://www.gutenberg.org/) येथे तुम्हाला बरेच मोफत मजकूर सापडतील. उदाहरणार्थ, येथे [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) या लुईस कॅरोलच्या पुस्तकाचा थेट दुवा आहे. किंवा, तुम्ही शेक्सपियरच्या नाटकांचा वापर करू शकता, ज्यासाठी खालील कोड वापरता येईल: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## शोधा! + +जर तुमच्याकडे वेळ असेल आणि विषयात अधिक खोलवर जाण्याची इच्छा असेल, तर खालील गोष्टींचा अभ्यास करण्याचा प्रयत्न करा: + +* एम्बेडिंगचा आकार परिणामांवर कसा परिणाम करतो? +* वेगवेगळ्या मजकूर शैलींचा परिणाम कसा होतो? +* खूप वेगवेगळ्या प्रकारच्या शब्दांचा आणि त्यांच्या समानार्थी शब्दांचा विचार करा, त्यांचे व्हेक्टर प्रतिनिधित्व मिळवा, त्यावर PCA लागू करा, परिमाण 2 पर्यंत कमी करा आणि त्यांना 2D जागेत प्लॉट करा. तुम्हाला काही पॅटर्न दिसतात का? + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/16-RNN/README.md b/translations/mr/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..f8f3ceba --- /dev/null +++ b/translations/mr/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# पुनरावृत्ती तंत्रिका जाळी (Recurrent Neural Networks) + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +मागील विभागांमध्ये, आपण मजकूराच्या समृद्ध अर्थपूर्ण सादरीकरणांचा वापर केला आणि एम्बेडिंग्जच्या वर एक साधा रेषीय वर्गीकरणकर्ता वापरला. ही आर्किटेक्चर वाक्यातील शब्दांचा एकत्रित अर्थ पकडते, परंतु ती शब्दांच्या **क्रम** विचारात घेत नाही, कारण एम्बेडिंग्जवरील एकत्रीकरण क्रियेमुळे मूळ मजकूरातील ही माहिती गमावली जाते. हे मॉडेल्स शब्दांच्या क्रमाचे मॉडेलिंग करण्यात अक्षम असल्यामुळे, ते मजकूर निर्मिती किंवा प्रश्नोत्तर यांसारख्या अधिक जटिल किंवा संदिग्ध कार्ये सोडवू शकत नाहीत. + +मजकूर अनुक्रमाचा अर्थ पकडण्यासाठी, आपल्याला आणखी एका तंत्रिका जाळी आर्किटेक्चरचा वापर करावा लागतो, ज्याला **पुनरावृत्ती तंत्रिका जाळी** किंवा RNN म्हणतात. RNN मध्ये, आपण आपले वाक्य जाळीमधून एकावेळी एक चिन्ह पाठवतो, आणि जाळी काही **स्थिती** तयार करते, जी नंतर पुढील चिन्हासह पुन्हा जाळीमध्ये पाठवली जाते. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.mr.png) + +> लेखकाने तयार केलेली प्रतिमा + +टोकन X0,...,Xn च्या इनपुट अनुक्रम दिल्यास, RNN तंत्रिका जाळी ब्लॉक्सचा अनुक्रम तयार करते आणि हा अनुक्रम एंड-टू-एंड बॅकप्रोपोगेशन वापरून प्रशिक्षित करते. प्रत्येक जाळी ब्लॉक (Xi,Si) ही जोडी इनपुट म्हणून घेतो आणि Si+1 तयार करतो. अंतिम स्थिती Sn किंवा (आउटपुट Yn) रेषीय वर्गीकरणकर्त्यामध्ये जाते आणि परिणाम तयार करते. सर्व जाळी ब्लॉक्स समान वजन सामायिक करतात आणि एकाच बॅकप्रोपोगेशन पासद्वारे एंड-टू-एंड प्रशिक्षित केले जातात. + +कारण स्थिती वेक्टर S0,...,Sn जाळीमधून पास होतात, त्यामुळे ते शब्दांमधील अनुक्रमिक अवलंबित्व शिकण्यास सक्षम असतात. उदाहरणार्थ, जेव्हा *नॉट* हा शब्द अनुक्रमात कुठेतरी दिसतो, तेव्हा तो स्थिती वेक्टरमधील विशिष्ट घटक नकारात्मक करण्यासाठी शिकतो, ज्यामुळे नकार तयार होतो. + +> ✅ वरील चित्रातील सर्व RNN ब्लॉक्सचे वजन सामायिक असल्यामुळे, तेच चित्र एका ब्लॉकसारखे (उजवीकडे) दर्शवले जाऊ शकते, ज्यामध्ये पुनरावृत्ती फीडबॅक लूप आहे, जो जाळीच्या आउटपुट स्थितीला पुन्हा इनपुटकडे पाठवतो. + +## RNN सेलची रचना + +आता आपण पाहूया की एक साधा RNN सेल कसा आयोजित केला जातो. तो मागील स्थिती Si-1 आणि वर्तमान चिन्ह Xi इनपुट म्हणून स्वीकारतो, आणि आउटपुट स्थिती Si तयार करतो (आणि, कधी कधी, जसे की जनरेटिव्ह जाळ्यांमध्ये, आपल्याला काही इतर आउटपुट Yi मध्येही रस असतो). + +एक साध्या RNN सेलमध्ये दोन वजन मॅट्रिसेस असतात: एक इनपुट चिन्ह रूपांतरित करते (त्याला W म्हणूया), आणि दुसरे इनपुट स्थिती रूपांतरित करते (H). या प्रकरणात, जाळीचे आउटपुट σ(W×Xi+H×Si-1+b) म्हणून गणना केली जाते, जिथे σ सक्रियता फंक्शन आहे आणि b अतिरिक्त बायस आहे. + +RNN सेलची रचना + +> लेखकाने तयार केलेली प्रतिमा + +अनेक प्रकरणांमध्ये, इनपुट टोकन्स RNN मध्ये प्रवेश करण्यापूर्वी एम्बेडिंग लेयरमधून पास होतात, ज्यामुळे परिमाण कमी होते. या प्रकरणात, जर इनपुट वेक्टरचा परिमाण *emb_size* असेल, आणि स्थिती वेक्टरचा परिमाण *hid_size* असेल - तर W चा आकार *emb_size*×*hid_size* असेल, आणि H चा आकार *hid_size*×*hid_size* असेल. + +## लाँग शॉर्ट टर्म मेमरी (LSTM) + +क्लासिकल RNN च्या मुख्य समस्यांपैकी एक म्हणजे **वॅनिशिंग ग्रेडियंट्स** समस्या. कारण RNN एकाच बॅकप्रोपोगेशन पासमध्ये एंड-टू-एंड प्रशिक्षित केले जातात, त्यामुळे नेटवर्कला पहिल्या स्तरांपर्यंत त्रुटी पोहोचवण्यात अडचण येते, आणि त्यामुळे नेटवर्क लांबच्या टोकन्समधील संबंध शिकू शकत नाही. ही समस्या टाळण्यासाठी **स्पष्ट स्थिती व्यवस्थापन** गेट्सच्या वापराने सादर केले जाते. यापैकी दोन प्रसिद्ध आर्किटेक्चर्स म्हणजे **लाँग शॉर्ट टर्म मेमरी** (LSTM) आणि **गेटेड रिले युनिट** (GRU). + +![लाँग शॉर्ट टर्म मेमरी सेलचे उदाहरण दर्शवणारी प्रतिमा](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> प्रतिमा स्रोत TBD + +LSTM नेटवर्क RNN प्रमाणेच आयोजित केले जाते, परंतु येथे दोन स्थिती स्तर असतात: वास्तविक स्थिती C, आणि लपलेला वेक्टर H. प्रत्येक युनिटमध्ये, लपलेला वेक्टर Hi इनपुट Xi सह जोडला जातो, आणि ते **गेट्स** च्या माध्यमातून स्थिती C मध्ये काय घडते ते नियंत्रित करतात. प्रत्येक गेट सिग्मॉइड सक्रियतेसह एक तंत्रिका जाळी आहे (आउटपुट श्रेणी [0,1]), जी स्थिती वेक्टरने गुणिले गेल्यावर बिटवाइज मास्कसारखी विचार केली जाऊ शकते. खालील गेट्स आहेत (वरील चित्रात डावीकडून उजवीकडे): + +* **फॉरगेट गेट** लपलेल्या वेक्टरचा वापर करून ठरवते की C वेक्टरच्या कोणत्या घटकांना विसरायचे आहे, आणि कोणते पास करायचे आहे. +* **इनपुट गेट** इनपुट आणि लपलेल्या वेक्टरमधून काही माहिती घेते आणि ती स्थितीत घालते. +* **आउटपुट गेट** स्थितीला *tanh* सक्रियतेसह रेषीय स्तराद्वारे रूपांतरित करते, नंतर लपलेल्या वेक्टर Hi चा वापर करून त्याच्या काही घटकांची निवड करते आणि नवीन स्थिती Ci+1 तयार करते. + +स्थिती C चे घटक काही फ्लॅग्ससारखे विचारले जाऊ शकतात, जे चालू किंवा बंद केले जाऊ शकतात. उदाहरणार्थ, जेव्हा आपण अनुक्रमात *Alice* नाव पाहतो, तेव्हा आपण गृहीत धरतो की ते एका स्त्री पात्राला संदर्भित करते, आणि स्थितीत फ्लॅग उचलतो की वाक्यात स्त्रीलिंगी नाम आहे. जेव्हा आपण पुढे *and Tom* वाक्यांश पाहतो, तेव्हा आपण फ्लॅग उचलतो की आपल्याकडे अनेकवचनी नाम आहे. अशा प्रकारे स्थितीचे व्यवस्थापन करून आपण वाक्याच्या व्याकरणात्मक गुणधर्मांचा मागोवा ठेवू शकतो. + +> ✅ LSTM चे अंतर्गत कार्य समजून घेण्यासाठी एक उत्कृष्ट स्रोत म्हणजे क्रिस्टोफर ओलाह यांचा [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) हा अप्रतिम लेख. + +## द्विदिशात्मक आणि बहुस्तरीय RNNs + +आपण अशा पुनरावृत्ती जाळ्यांबद्दल चर्चा केली आहे ज्या एका दिशेने कार्य करतात, अनुक्रमाच्या सुरुवातीपासून शेवटापर्यंत. हे नैसर्गिक वाटते, कारण ते आपण वाचन किंवा भाषण ऐकण्याच्या पद्धतीसारखे दिसते. तथापि, अनेक व्यावहारिक प्रकरणांमध्ये आपल्याला इनपुट अनुक्रमात यादृच्छिक प्रवेश असल्यामुळे, पुनरावृत्ती गणना दोन्ही दिशेने चालवणे अर्थपूर्ण ठरू शकते. अशा जाळ्यांना **द्विदिशात्मक** RNNs म्हणतात. द्विदिशात्मक नेटवर्क हाताळताना, आपल्याला प्रत्येक दिशेसाठी दोन लपलेले स्थिती वेक्टर आवश्यक असतात. + +पुनरावृत्ती जाळे, एकदिशात्मक किंवा द्विदिशात्मक, अनुक्रमातील विशिष्ट नमुने कॅप्चर करते, आणि त्यांना स्थिती वेक्टरमध्ये साठवते किंवा आउटपुटमध्ये पास करते. जसे की कन्व्होल्यूशनल जाळ्यांमध्ये, आपण पहिल्या स्तराद्वारे काढलेल्या कमी-स्तरीय नमुन्यांवरून उच्च-स्तरीय नमुने कॅप्चर करण्यासाठी दुसऱ्या स्तरावर आणखी एक पुनरावृत्ती स्तर तयार करू शकतो. यामुळे **बहुस्तरीय RNN** ची संकल्पना तयार होते, ज्यामध्ये दोन किंवा अधिक पुनरावृत्ती जाळ्यांचा समावेश असतो, जिथे मागील स्तराचे आउटपुट पुढील स्तरासाठी इनपुट म्हणून पास केले जाते. + +![बहुस्तरीय लाँग-शॉर्ट-टर्म-मेमरी RNN दर्शवणारी प्रतिमा](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.mr.jpg) + +*फर्नांडो लोपेझ यांच्या [या अप्रतिम पोस्ट](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) मधून घेतलेली प्रतिमा* + +## ✍️ सराव: एम्बेडिंग्ज + +खालील नोटबुक्समध्ये आपले शिक्षण सुरू ठेवा: + +* [PyTorch सह RNNs](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow सह RNNs](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## निष्कर्ष + +या युनिटमध्ये, आपण पाहिले की RNNs अनुक्रम वर्गीकरणासाठी वापरले जाऊ शकतात, परंतु प्रत्यक्षात, ते मजकूर निर्मिती, यंत्र अनुवाद, आणि बरेच काही यांसारखी अनेक कार्ये हाताळू शकतात. आपण पुढील युनिटमध्ये ही कार्ये विचारात घेऊ. + +## 🚀 आव्हान + +LSTMs बद्दल काही साहित्य वाचा आणि त्यांच्या अनुप्रयोगांचा विचार करा: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## पुनरावलोकन आणि स्व-अभ्यास + +- क्रिस्टोफर ओलाह यांचा [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) हा लेख. + +## [असाइनमेंट: नोटबुक्स](assignment.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/16-RNN/assignment.md b/translations/mr/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..5af11f44 --- /dev/null +++ b/translations/mr/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेंट: नोटबुक्स + +या धड्याशी संबंधित नोटबुक्स (PyTorch किंवा TensorFlow आवृत्तीपैकी कोणतीही) वापरून, त्या तुमच्या स्वतःच्या डेटासेटसह पुन्हा चालवा, कदाचित Kaggle वरील एखाद्या डेटासेटचा वापर करून, योग्य श्रेय देऊन. तुमच्या स्वतःच्या निष्कर्षांना अधोरेखित करण्यासाठी नोटबुक पुन्हा लिहा. वेगळ्या प्रकारचा डेटासेट वापरून पहा आणि तुमचे निष्कर्ष दस्तऐवजीकरण करा, जसे की [हा Kaggle स्पर्धेचा डेटासेट हवामान ट्विट्सबद्दल](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/mr/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..883a4750 --- /dev/null +++ b/translations/mr/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# जनरेटिव नेटवर्क्स + +## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +रीकरंट न्यूरल नेटवर्क्स (RNNs) आणि त्यांचे गेटेड सेल प्रकार जसे की लाँग शॉर्ट टर्म मेमरी सेल्स (LSTMs) आणि गेटेड रीकरंट युनिट्स (GRUs) भाषेचे मॉडेलिंग करण्यासाठी एक यंत्रणा प्रदान करतात ज्यामुळे ते शब्दांची क्रमवारी शिकू शकतात आणि अनुक्रमातील पुढील शब्दासाठी अंदाज देऊ शकतात. यामुळे RNNs चा वापर **जनरेटिव कार्यांसाठी** करता येतो, जसे की सामान्य मजकूर निर्मिती, मशीन अनुवाद, आणि अगदी प्रतिमेचे वर्णन तयार करणे. + +> ✅ तुम्ही मजकूर पूर्ण करण्यासारख्या जनरेटिव कार्यांमुळे किती वेळा फायदा घेतला आहे याचा विचार करा. तुमच्या आवडत्या अॅप्लिकेशन्सबद्दल संशोधन करा आणि त्यांनी RNNs चा उपयोग केला आहे का ते पहा. + +आम्ही मागील युनिटमध्ये चर्चा केलेल्या RNN आर्किटेक्चरमध्ये, प्रत्येक RNN युनिटने पुढील हिडन स्टेट आउटपुट म्हणून तयार केली. तथापि, आम्ही प्रत्येक रीकरंट युनिटला आणखी एक आउटपुट जोडू शकतो, ज्यामुळे आम्हाला **अनुक्रम** आउटपुट करता येईल (जो मूळ अनुक्रमाच्या लांबीइतकाच असेल). याशिवाय, आम्ही RNN युनिट्स वापरू शकतो जे प्रत्येक टप्प्यावर इनपुट स्वीकारत नाहीत, फक्त काही प्रारंभिक स्टेट वेक्टर घेतात आणि नंतर आउटपुट्सचा अनुक्रम तयार करतात. + +यामुळे खालील चित्रात दाखवलेल्या विविध न्यूरल आर्किटेक्चर शक्य होतात: + +![रीकरंट न्यूरल नेटवर्क्सचे सामान्य नमुने दाखवणारे चित्र.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mr.jpg) + +> ब्लॉग पोस्ट [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) द्वारे [Andrej Karpaty](http://karpathy.github.io/) यांचे चित्र + +* **वन-टू-वन** हे पारंपरिक न्यूरल नेटवर्क आहे ज्यामध्ये एक इनपुट आणि एक आउटपुट असतो +* **वन-टू-मेनी** हे जनरेटिव आर्किटेक्चर आहे जे एक इनपुट मूल्य स्वीकारते आणि आउटपुट मूल्यांचा अनुक्रम तयार करते. उदाहरणार्थ, जर आम्हाला **प्रतिमा वर्णन** नेटवर्क प्रशिक्षण द्यायचे असेल जे चित्राचे मजकूर वर्णन तयार करेल, तर आम्ही चित्र इनपुट म्हणून घेऊ शकतो, ते CNN मधून पास करून त्याचा हिडन स्टेट मिळवू शकतो आणि नंतर रीकरंट चेनने शब्द-प्रत्येक शब्दाने वर्णन तयार करावे +* **मेनी-टू-वन** हे RNN आर्किटेक्चरशी संबंधित आहे ज्याचे वर्णन आम्ही मागील युनिटमध्ये केले होते, जसे की मजकूर वर्गीकरण +* **मेनी-टू-मेनी**, किंवा **अनुक्रम-टू-अनुक्रम** हे **मशीन अनुवाद** सारख्या कार्यांशी संबंधित आहे, जिथे पहिला RNN इनपुट अनुक्रमातून सर्व माहिती हिडन स्टेटमध्ये गोळा करतो आणि दुसरा RNN चेन त्या स्टेटला आउटपुट अनुक्रमात बदलतो. + +या युनिटमध्ये, आम्ही मजकूर तयार करण्यात मदत करणाऱ्या साध्या जनरेटिव मॉडेल्सवर लक्ष केंद्रित करू. सोपेपणासाठी, आम्ही कॅरेक्टर-लेव्हल टोकनायझेशन वापरू. + +आम्ही या RNN ला चरण-दर-चरण मजकूर तयार करण्यासाठी प्रशिक्षण देऊ. प्रत्येक टप्प्यावर, आम्ही `nchars` लांबीचा कॅरेक्टर अनुक्रम घेऊ आणि नेटवर्कला प्रत्येक इनपुट कॅरेक्टरसाठी पुढील आउटपुट कॅरेक्टर तयार करण्यास सांगू: + +!['HELLO' शब्द तयार करण्यासाठी RNN चा उदाहरण दाखवणारे चित्र.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.mr.png) + +मजकूर तयार करताना (इन्फरन्स दरम्यान), आम्ही काही **प्रॉम्प्ट** ने सुरुवात करतो, जे RNN सेल्समधून पास होते आणि त्याचा इंटरमीडिएट स्टेट तयार होतो, आणि नंतर त्या स्टेटमधून निर्मिती सुरू होते. आम्ही एकावेळी एक कॅरेक्टर तयार करतो आणि स्टेट आणि तयार केलेला कॅरेक्टर दुसऱ्या RNN सेलला पास करतो जो पुढील कॅरेक्टर तयार करतो, जोपर्यंत पुरेसे कॅरेक्टर तयार होत नाहीत. + + + +> लेखकाचे चित्र + +## ✍️ सराव: जनरेटिव नेटवर्क्स + +खालील नोटबुक्समध्ये तुमचे शिक्षण सुरू ठेवा: + +* [PyTorch सह जनरेटिव नेटवर्क्स](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow सह जनरेटिव नेटवर्क्स](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## सॉफ्ट टेक्स्ट जनरेशन आणि तापमान + +प्रत्येक RNN सेलचे आउटपुट कॅरेक्टर्सचे संभाव्यता वितरण असते. जर आम्ही नेहमीच सर्वाधिक संभाव्यता असलेल्या कॅरेक्टरला पुढील कॅरेक्टर म्हणून निवडले, तर तयार केलेला मजकूर अनेकदा "सायकल" होऊ शकतो, जसे की खालील उदाहरणात: + +``` +today of the second the company and a second the company ... +``` + +तथापि, जर आपण पुढील कॅरेक्टरसाठी संभाव्यता वितरण पाहिले, तर असे होऊ शकते की काही उच्च संभाव्यता असलेल्या कॅरेक्टर्समधील फरक फारसा मोठा नाही, उदा. एका कॅरेक्टरची संभाव्यता 0.2 असू शकते, तर दुसऱ्याची 0.19 असू शकते. उदाहरणार्थ, '*play*' अनुक्रमात पुढील कॅरेक्टर स्पेस किंवा **e** (जसे *player* शब्दात) असू शकतो. + +यामुळे असे निष्कर्ष निघतो की नेहमीच उच्च संभाव्यता असलेल्या कॅरेक्टरला निवडणे "योग्य" नाही, कारण दुसऱ्या क्रमांकाच्या संभाव्यता असलेल्या कॅरेक्टरला निवडणे देखील अर्थपूर्ण मजकूर तयार करू शकते. नेटवर्क आउटपुटद्वारे दिलेल्या संभाव्यता वितरणातून कॅरेक्टर्स **नमुन्याने** निवडणे अधिक शहाणपणाचे आहे. आम्ही **तापमान** नावाचा पॅरामीटर देखील वापरू शकतो, जो संभाव्यता वितरण सपाट करतो, जर आम्हाला अधिक रँडमनेस जोडायचा असेल, किंवा अधिक तीव्र करतो, जर आम्हाला उच्च-सम्भाव्यता कॅरेक्टर्सकडे अधिक चिकटून राहायचे असेल. + +वरील नोटबुक्समध्ये सॉफ्ट टेक्स्ट जनरेशन कसे अंमलात आणले जाते ते एक्सप्लोर करा. + +## निष्कर्ष + +मजकूर निर्मिती स्वतःच उपयुक्त असू शकते, परंतु मुख्य फायदे RNNs चा उपयोग करून मजकूर तयार करण्याच्या क्षमतेतून येतात, जे काही प्रारंभिक फीचर वेक्टरपासून सुरू होते. उदाहरणार्थ, मजकूर निर्मिती मशीन अनुवादाचा भाग म्हणून वापरली जाते (अनुक्रम-टू-अनुक्रम, या प्रकरणात *एन्कोडर* कडून स्टेट वेक्टर वापरून अनुवादित संदेश तयार किंवा *डिकोड* केला जातो), किंवा प्रतिमेचे मजकूर वर्णन तयार करण्यासाठी (ज्या प्रकरणात फीचर वेक्टर CNN एक्स्ट्रॅक्टरकडून येतो). + +## 🚀 आव्हान + +या विषयावर Microsoft Learn वर काही धडे घ्या + +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) सह मजकूर निर्मिती + +## [व्याख्यानानंतरची प्रश्नमंजूषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## पुनरावलोकन आणि स्व-अभ्यास + +तुमचे ज्ञान वाढवण्यासाठी काही लेख येथे दिले आहेत + +* मार्कोव्ह चेन, LSTM आणि GPT-2 सह मजकूर निर्मितीचे वेगवेगळे दृष्टिकोन: [ब्लॉग पोस्ट](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras दस्तऐवज](https://keras.io/examples/generative/lstm_character_level_text_generation/) मध्ये मजकूर निर्मितीचे उदाहरण + +## [असाइनमेंट](lab/README.md) + +आपण कॅरेक्टर-बाय-कॅरेक्टर मजकूर कसा तयार करायचा ते पाहिले आहे. प्रयोगशाळेत, तुम्ही शब्द-स्तरीय मजकूर निर्मिती एक्सप्लोर कराल. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/mr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..eebba8a0 --- /dev/null +++ b/translations/mr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# शब्द-स्तरीय मजकूर निर्मिती RNNs वापरून + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा असाइनमेंट. + +## कार्य + +या प्रयोगशाळेत, तुम्हाला कोणतेही पुस्तक घ्यायचे आहे आणि त्याचा वापर करून शब्द-स्तरीय मजकूर निर्मिती करणारा मॉडेल तयार करायचा आहे. + +## डेटासेट + +तुम्ही कोणतेही पुस्तक वापरू शकता. [Project Gutenberg](https://www.gutenberg.org/) वर तुम्हाला अनेक मोफत मजकूर मिळू शकतात. उदाहरणार्थ, येथे Lewis Carroll यांचे [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) या पुस्तकाचा थेट दुवा आहे. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/18-Transformers/README.md b/translations/mr/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..8ab1b47f --- /dev/null +++ b/translations/mr/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# अटेन्शन मेकॅनिझम्स आणि ट्रान्सफॉर्मर्स + +## [पूर्व-व्याख्यान क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP क्षेत्रातील सर्वात महत्त्वाच्या समस्यांपैकी एक म्हणजे **मशीन ट्रान्सलेशन**, जी Google Translate सारख्या साधनांच्या मागील महत्त्वाची कार्यप्रणाली आहे. या विभागात, आपण मशीन ट्रान्सलेशनवर लक्ष केंद्रित करू, किंवा अधिक सामान्यतः, कोणत्याही *सीक्वेन्स-टू-सीक्वेन्स* कार्यावर (ज्याला **सेंटन्स ट्रान्सडक्शन** असेही म्हणतात). + +RNNs च्या मदतीने, सीक्वेन्स-टू-सीक्वेन्स दोन पुनरावृत्ती नेटवर्क्सद्वारे अंमलात आणले जाते, जिथे एक नेटवर्क, **एन्कोडर**, इनपुट सीक्वेन्सला एका हिडन स्टेटमध्ये संकुचित करते, तर दुसरे नेटवर्क, **डिकोडर**, त्या हिडन स्टेटला अनुवादित परिणामामध्ये उलगडते. या दृष्टिकोनासोबत काही समस्या आहेत: + +* एन्कोडर नेटवर्कची अंतिम स्थिती वाक्याच्या सुरुवातीचा भाग लक्षात ठेवण्यात अडचण येते, ज्यामुळे लांब वाक्यांसाठी मॉडेलची गुणवत्ता कमी होते. +* सीक्वेन्समधील सर्व शब्दांचा परिणामावर समान प्रभाव असतो. प्रत्यक्षात, मात्र, इनपुट सीक्वेन्समधील विशिष्ट शब्दांचा अनुक्रमिक आउटपुटवर इतरांपेक्षा अधिक प्रभाव असतो. + +**अटेन्शन मेकॅनिझम्स** प्रत्येक इनपुट व्हेक्टरच्या संदर्भात्मक प्रभावाचे वजन प्रत्येक आउटपुट प्रेडिक्शनवर देण्याचा एक मार्ग प्रदान करतात. हे अंमलात आणण्याचा मार्ग म्हणजे इनपुट RNN च्या इंटरमीडिएट स्टेट्स आणि आउटपुट RNN दरम्यान शॉर्टकट तयार करणे. अशा प्रकारे, आउटपुट चिन्ह yt तयार करताना, आपण सर्व इनपुट हिडन स्टेट्स hi विचारात घेऊ, वेगवेगळ्या वजन गुणांक αt,i सह. + +![एन्कोडर/डिकोडर मॉडेल अॅडिटिव्ह अटेन्शन लेयरसह दाखवणारी प्रतिमा](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.mr.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) मधील अॅडिटिव्ह अटेन्शन मेकॅनिझमसह एन्कोडर-डिकोडर मॉडेल, [या ब्लॉग पोस्टमधून](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) उद्धृत + +अटेन्शन मॅट्रिक्स {αi,j} हे दर्शवेल की इनपुट सीक्वेन्समधील विशिष्ट शब्द आउटपुट सीक्वेन्समधील दिलेल्या शब्दाच्या निर्मितीत किती महत्त्वाचा आहे. खाली अशा मॅट्रिक्सचे एक उदाहरण दिले आहे: + +![RNNsearch-50 ने सापडलेले नमुना संरेखन दाखवणारी प्रतिमा, Bahdanau - arviz.org कडून घेतलेली](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.mr.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) मधील आकृती + +अटेन्शन मेकॅनिझम्स NLP मधील सध्याच्या किंवा जवळपासच्या अत्याधुनिक स्थितीसाठी जबाबदार आहेत. मात्र, अटेन्शन जोडल्याने मॉडेल पॅरामीटर्सची संख्या मोठ्या प्रमाणात वाढते, ज्यामुळे RNNs सह स्केलिंग समस्या निर्माण होतात. RNNs च्या स्केलिंगसाठी एक महत्त्वाचे बंधन म्हणजे मॉडेल्सची पुनरावृत्तीशील प्रकृती, ज्यामुळे प्रशिक्षण बॅच करणे आणि पॅरललाइज करणे कठीण होते. RNN मध्ये, सीक्वेन्समधील प्रत्येक घटक क्रमाने प्रक्रिया करणे आवश्यक असते, ज्याचा अर्थ तो सहजपणे पॅरललाइज केला जाऊ शकत नाही. + +![अटेन्शनसह एन्कोडर डिकोडर](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [Google च्या ब्लॉग](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) मधील आकृती + +अटेन्शन मेकॅनिझम्सचा अवलंब आणि या बंधनामुळे आज आपण ओळखत असलेल्या आणि वापरत असलेल्या अत्याधुनिक ट्रान्सफॉर्मर मॉडेल्सची निर्मिती झाली, जसे की BERT ते Open-GPT3. + +## ट्रान्सफॉर्मर मॉडेल्स + +ट्रान्सफॉर्मर्समागील मुख्य कल्पनांपैकी एक म्हणजे RNNs च्या अनुक्रमिक स्वरूपाला टाळणे आणि प्रशिक्षणादरम्यान पॅरललाइज करण्यायोग्य मॉडेल तयार करणे. हे दोन कल्पना अंमलात आणून साध्य केले जाते: + +* पोझिशनल एन्कोडिंग +* RNNs (किंवा CNNs) च्या ऐवजी पॅटर्न्स कॅप्चर करण्यासाठी सेल्फ-अटेन्शन मेकॅनिझम वापरणे (म्हणूनच ट्रान्सफॉर्मर्स सादर करणाऱ्या पेपरचे नाव आहे *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### पोझिशनल एन्कोडिंग/एम्बेडिंग + +पोझिशनल एन्कोडिंगची कल्पना पुढीलप्रमाणे आहे. +1. RNNs वापरताना, टोकन्सची सापेक्ष स्थिती स्टेप्सच्या संख्येद्वारे दर्शविली जाते, आणि म्हणून ती स्पष्टपणे दर्शविण्याची गरज नाही. +2. मात्र, अटेन्शनवर स्विच केल्यावर, आपल्याला सीक्वेन्समधील टोकन्सच्या सापेक्ष स्थिती माहित असणे आवश्यक आहे. +3. पोझिशनल एन्कोडिंग मिळविण्यासाठी, आपण आपल्या टोकन्सच्या सीक्वेन्समध्ये टोकन पोझिशन्सची सीक्वेन्स (उदा., 0,1, ...) जोडतो. +4. नंतर आपण टोकन पोझिशनला टोकन एम्बेडिंग व्हेक्टरसह मिसळतो. पोझिशन (पूर्णांक) व्हेक्टरमध्ये रूपांतरित करण्यासाठी, आपण वेगवेगळ्या दृष्टिकोनांचा अवलंब करू शकतो: + +* टोकन एम्बेडिंगसारखेच ट्रेन करण्यायोग्य एम्बेडिंग. येथे आपण हा दृष्टिकोन विचारात घेतो. आम्ही टोकन्स आणि त्यांच्या पोझिशन्सवर एम्बेडिंग लेयर्स लागू करतो, ज्यामुळे समान परिमाणांचे एम्बेडिंग व्हेक्टर तयार होतात, जे आम्ही नंतर एकत्र करतो. +* मूळ पेपरमध्ये प्रस्तावित निश्चित पोझिशन एन्कोडिंग फंक्शन. + + + +> लेखकाने तयार केलेली प्रतिमा + +पोझिशनल एम्बेडिंगसह आपल्याला मिळणारा परिणाम मूळ टोकन आणि त्याच्या सीक्वेन्समधील स्थिती दोन्ही एम्बेड करतो. + +### मल्टी-हेड सेल्फ-अटेन्शन + +यानंतर, आपल्याला आपल्या सीक्वेन्समधील काही पॅटर्न्स कॅप्चर करणे आवश्यक आहे. हे करण्यासाठी, ट्रान्सफॉर्मर्स **सेल्फ-अटेन्शन** मेकॅनिझम वापरतात, जो इनपुट आणि आउटपुट म्हणून समान सीक्वेन्सवर लागू केलेला अटेन्शन आहे. सेल्फ-अटेन्शन लागू केल्याने आपल्याला वाक्याच्या संदर्भाचा विचार करता येतो आणि कोणते शब्द परस्पर संबंधित आहेत हे पाहता येते. उदाहरणार्थ, हे आपल्याला *it* सारख्या कोरफरन्सेसद्वारे संदर्भित केलेले शब्द पाहण्यास अनुमती देते आणि संदर्भाचा विचार करते: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.mr.png) + +> [Google ब्लॉग](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) मधील प्रतिमा + +ट्रान्सफॉर्मर्समध्ये, आम्ही **मल्टी-हेड अटेन्शन** वापरतो, ज्यामुळे नेटवर्कला विविध प्रकारच्या अवलंबित्व कॅप्चर करण्याची क्षमता मिळते, उदा. दीर्घकालीन विरुद्ध अल्पकालीन शब्दसंबंध, को-रेफरन्स विरुद्ध इतर काही, इत्यादी. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) मध्ये ट्रान्सफॉर्मर लेयर्सच्या अंमलबजावणीबद्दल अधिक तपशील आहेत. + +### एन्कोडर-डिकोडर अटेन्शन + +ट्रान्सफॉर्मर्समध्ये, अटेन्शन दोन ठिकाणी वापरले जाते: + +* इनपुट मजकुरातील पॅटर्न्स कॅप्चर करण्यासाठी सेल्फ-अटेन्शन वापरून +* सीक्वेन्स ट्रान्सलेशन करण्यासाठी - हे एन्कोडर आणि डिकोडर दरम्यानचे अटेन्शन लेयर आहे. + +एन्कोडर-डिकोडर अटेन्शन RNNs मध्ये वापरल्या जाणाऱ्या अटेन्शन मेकॅनिझमसारखेच आहे, जसे की या विभागाच्या सुरुवातीला वर्णन केले आहे. ही अॅनिमेटेड आकृती एन्कोडर-डिकोडर अटेन्शनची भूमिका स्पष्ट करते. + +![ट्रान्सफॉर्मर मॉडेल्समध्ये मूल्यांकन कसे केले जाते हे दाखवणारा अॅनिमेटेड GIF.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +प्रत्येक इनपुट पोझिशन स्वतंत्रपणे प्रत्येक आउटपुट पोझिशनशी मॅप केल्यामुळे, ट्रान्सफॉर्मर्स RNNs पेक्षा चांगले पॅरललाइज करू शकतात, ज्यामुळे खूप मोठे आणि अधिक अभिव्यक्तीक्षम भाषा मॉडेल्स सक्षम होतात. प्रत्येक अटेन्शन हेड वेगवेगळ्या शब्दांमधील संबंध शिकण्यासाठी वापरला जाऊ शकतो, ज्यामुळे नैसर्गिक भाषा प्रक्रिया कार्ये सुधारतात. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) हे 12 लेयर्ससाठी *BERT-base* आणि 24 लेयर्ससाठी *BERT-large* असलेले खूप मोठे मल्टी लेयर ट्रान्सफॉर्मर नेटवर्क आहे. मॉडेलला प्रथम मोठ्या मजकूर डेटाच्या संग्रहावर (WikiPedia + पुस्तके) अनसुपरवाइज्ड प्रशिक्षण (वाक्यातील मास्क केलेले शब्द भाकीत करणे) वापरून प्री-ट्रेन केले जाते. प्री-ट्रेनिंग दरम्यान मॉडेल महत्त्वाच्या भाषिक समजुती आत्मसात करते, ज्याचा नंतर इतर डेटासेट्ससह फाइन ट्यूनिंगद्वारे लाभ घेतला जाऊ शकतो. या प्रक्रियेला **ट्रान्सफर लर्निंग** म्हणतात. + +![http://jalammar.github.io/illustrated-bert/ येथून घेतलेली प्रतिमा](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.mr.png) + +> प्रतिमा [स्रोत](http://jalammar.github.io/illustrated-bert/) + +## ✍️ सराव: ट्रान्सफॉर्मर्स + +खालील नोटबुक्समध्ये तुमचे शिक्षण सुरू ठेवा: + +* [PyTorch मधील ट्रान्सफॉर्मर्स](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow मधील ट्रान्सफॉर्मर्स](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## निष्कर्ष + +या धड्यात तुम्ही ट्रान्सफॉर्मर्स आणि अटेन्शन मेकॅनिझम्सबद्दल शिकलात, जे NLP टूलबॉक्समधील महत्त्वाचे साधन आहेत. ट्रान्सफॉर्मर आर्किटेक्चर्सच्या अनेक प्रकारांमध्ये BERT, DistilBERT, BigBird, OpenGPT3 आणि अधिक समाविष्ट आहेत, जे फाइन ट्यून केले जाऊ शकतात. [HuggingFace पॅकेज](https://github.com/huggingface/) PyTorch आणि TensorFlow सह या आर्किटेक्चर्सपैकी अनेकांचे प्रशिक्षण घेण्यासाठी रिपॉझिटरी प्रदान करते. + +## 🚀 आव्हान + +## [व्याख्यानानंतरचा क्विझ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## पुनरावलोकन आणि स्व-अभ्यास + +* [ब्लॉग पोस्ट](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), ट्रान्सफॉर्मर्सवरील क्लासिकल [Attention is all you need](https://arxiv.org/abs/1706.03762) पेपर स्पष्ट करणारी. +* [ब्लॉग पोस्ट्सची मालिका](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452), ट्रान्सफॉर्मर्सचे आर्किटेक्चर तपशीलवार स्पष्ट करणारी. + +## [असाइनमेंट](assignment.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित केला गेला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/18-Transformers/assignment.md b/translations/mr/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..612c6614 --- /dev/null +++ b/translations/mr/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेंट: ट्रान्सफॉर्मर्स + +HuggingFace वर ट्रान्सफॉर्मर्ससह प्रयोग करा! त्यांच्या साइटवर उपलब्ध असलेल्या विविध मॉडेल्ससह काम करण्यासाठी त्यांनी दिलेली काही स्क्रिप्ट्स वापरून पहा: https://huggingface.co/docs/transformers/run_scripts. त्यांच्या डेटासेट्सपैकी एक वापरून पहा, त्यानंतर या अभ्यासक्रमातील किंवा Kaggle वरून तुमचा स्वतःचा डेटासेट आयात करा आणि तुम्ही मनोरंजक मजकूर तयार करू शकता का ते पाहा. तुमच्या निष्कर्षांसह एक नोटबुक तयार करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/19-NER/README.md b/translations/mr/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..335c7ff1 --- /dev/null +++ b/translations/mr/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# नामित घटक ओळख (Named Entity Recognition) + +आत्तापर्यंत आपण मुख्यतः एकाच NLP कार्यावर लक्ष केंद्रित केले आहे - वर्गीकरण. मात्र, न्यूरल नेटवर्क्सच्या मदतीने इतरही NLP कार्ये साध्य करता येतात. त्यापैकी एक कार्य म्हणजे **[नामित घटक ओळख](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ज्यामध्ये मजकुरातील विशिष्ट घटक ओळखणे समाविष्ट आहे, जसे की ठिकाणे, व्यक्तींची नावे, दिनांक-वेळेचे कालखंड, रासायनिक सूत्रे इत्यादी. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER चा वापर करण्याचे उदाहरण + +समजा, तुम्हाला Amazon Alexa किंवा Google Assistant सारखा नैसर्गिक भाषेवर आधारित चॅट बॉट विकसित करायचा आहे. हुशार चॅट बॉट्स कसे काम करतात याचा मुख्य भाग म्हणजे वापरकर्त्याच्या इच्छेचा *आकलन* करणे, जे इनपुट वाक्याच्या मजकुराचे वर्गीकरण करून साध्य होते. या वर्गीकरणाचा परिणाम म्हणजे **इंटेंट**, जो चॅट बॉटने काय करावे हे ठरवतो. + +Bot NER + +> लेखकाने तयार केलेली प्रतिमा + +मात्र, वापरकर्ता वाक्याच्या स्वरूपात काही पॅरामीटर्स प्रदान करू शकतो. उदाहरणार्थ, हवामानाबद्दल विचारताना, ती व्यक्ती स्थान किंवा दिनांक निर्दिष्ट करू शकते. बॉटने हे घटक समजून घेतले पाहिजेत आणि कृती करण्यापूर्वी पॅरामीटर स्लॉट्स योग्य प्रकारे भरले पाहिजेत. याच ठिकाणी NER उपयोगी ठरतो. + +> ✅ आणखी एक उदाहरण म्हणजे [वैज्ञानिक वैद्यकीय लेखांचे विश्लेषण करणे](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). येथे आपल्याला मुख्यतः विशिष्ट वैद्यकीय संज्ञा शोधाव्या लागतात, जसे की रोग आणि वैद्यकीय पदार्थ. काही मोजक्या रोगांची माहिती उपस्ट्रिंग शोधाचा वापर करून काढता येईल, परंतु रासायनिक संयुगे आणि औषधांची नावे यांसारख्या अधिक गुंतागुंतीच्या घटकांसाठी अधिक प्रगत दृष्टिकोन आवश्यक आहे. + +## टोकन वर्गीकरण म्हणून NER + +NER मॉडेल्स हे मूलत: **टोकन वर्गीकरण मॉडेल्स** असतात, कारण प्रत्येक इनपुट टोकनसाठी आपल्याला ठरवावे लागते की ते एखाद्या घटकाशी संबंधित आहे का, आणि असल्यास - कोणत्या घटक वर्गाशी संबंधित आहे. + +खालील पेपर शीर्षक विचार करा: + +**Tricuspid valve regurgitation** आणि **lithium carbonate** **toxicity** एका नवजात बालकात. + +येथील घटक: + +* Tricuspid valve regurgitation हा एक रोग आहे (`DIS`) +* Lithium carbonate हा एक रासायनिक पदार्थ आहे (`CHEM`) +* Toxicity हा देखील एक रोग आहे (`DIS`) + +लक्षात घ्या की एक घटक अनेक टोकन्समध्ये विभागलेला असू शकतो. आणि, या प्रकरणात, आपल्याला दोन सलग घटकांमध्ये फरक करावा लागतो. त्यामुळे, प्रत्येक घटकासाठी दोन वर्ग वापरणे सामान्य आहे - एक घटकाच्या पहिल्या टोकनसाठी (`B-` उपसर्ग, म्हणजे **b**eginning) आणि दुसरा घटकाच्या पुढील टोकन्ससाठी (`I-`, म्हणजे **i**nner token). तसेच, इतर सर्व टोकन्ससाठी `O` वर्ग वापरला जातो. अशा प्रकारच्या टोकन टॅगिंगला [BIO टॅगिंग](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (किंवा IOB) म्हणतात. टॅगिंग केल्यानंतर, आपले शीर्षक असे दिसेल: + +Token | Tag +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O + +टोकन्स आणि वर्गांमध्ये एक-ते-एक संबंध तयार करणे आवश्यक असल्यामुळे, आपण या चित्रातून उजव्या बाजूचा **अनेक-ते-अनेक** न्यूरल नेटवर्क मॉडेल तयार करू शकतो: + +![सामान्य पुनरावृत्तीशील न्यूरल नेटवर्क नमुन्यांचे चित्र.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.mr.jpg) + +> *[या ब्लॉग पोस्ट](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) मधून घेतलेले चित्र [Andrej Karpathy](http://karpathy.github.io/) यांचे. NER टोकन वर्गीकरण मॉडेल्स या चित्रातील उजव्या बाजूच्या नेटवर्क आर्किटेक्चरशी संबंधित आहेत.* + +## NER मॉडेल्सचे प्रशिक्षण + +NER मॉडेल हे मूलत: टोकन वर्गीकरण मॉडेल असल्यामुळे, आपण यासाठी RNNs वापरू शकतो, ज्याबद्दल आपण आधीच शिकलेलो आहोत. या प्रकरणात, पुनरावृत्तीशील नेटवर्कचा प्रत्येक ब्लॉक टोकन ID परत करतो. खालील उदाहरण नोटबुकमध्ये टोकन वर्गीकरणासाठी LSTM कसे प्रशिक्षण द्यायचे ते दाखवले आहे. + +## ✍️ उदाहरण नोटबुक्स: NER + +खालील नोटबुकमध्ये शिकणे सुरू ठेवा: + +* [TensorFlow सह NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## निष्कर्ष + +NER मॉडेल हे **टोकन वर्गीकरण मॉडेल** आहे, म्हणजेच ते टोकन वर्गीकरण करण्यासाठी वापरले जाऊ शकते. हे NLP मधील एक अतिशय सामान्य कार्य आहे, जे मजकुरातील विशिष्ट घटक ओळखण्यात मदत करते, जसे की ठिकाणे, नावे, दिनांक आणि बरेच काही. + +## 🚀 आव्हान + +खालील लिंक केलेल्या असाइनमेंट पूर्ण करा, ज्यामध्ये वैद्यकीय संज्ञांसाठी NER मॉडेल प्रशिक्षण द्यायचे आहे, आणि नंतर ते वेगळ्या डेटासेटवर वापरून पहा. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## पुनरावलोकन आणि स्व-अभ्यास + +[The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) हा ब्लॉग वाचा आणि त्या लेखातील पुढील वाचन विभागातील संदर्भांचा अभ्यास करा, ज्यामुळे तुमचे ज्ञान अधिक सखोल होईल. + +## [असाइनमेंट](lab/README.md) + +या धड्याच्या असाइनमेंटमध्ये, तुम्हाला वैद्यकीय घटक ओळखण्यासाठी मॉडेल प्रशिक्षण द्यावे लागेल. या धड्यात वर्णन केल्याप्रमाणे LSTM मॉडेल प्रशिक्षण देऊन सुरुवात करा आणि नंतर BERT ट्रान्सफॉर्मर मॉडेल वापरा. सर्व तपशील मिळवण्यासाठी [सूचना वाचा](lab/README.md). + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/19-NER/lab/README.md b/translations/mr/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..3f98de5b --- /dev/null +++ b/translations/mr/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) मधील प्रयोगशाळा कार्य. + +## कार्य + +या प्रयोगशाळेत, तुम्हाला वैद्यकीय संज्ञांसाठी नामित घटक ओळख (NER) मॉडेल प्रशिक्षण द्यायचे आहे. + +## डेटासेट + +NER मॉडेल प्रशिक्षणासाठी, वैद्यकीय घटकांसह योग्यरित्या लेबल केलेला डेटासेट आवश्यक आहे. [BC5CDR डेटासेट](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) मध्ये 1500 हून अधिक पेपरमधील लेबल केलेले आजार आणि रसायनांचे घटक आहेत. तुम्ही त्यांच्या वेबसाइटवर नोंदणी केल्यानंतर हा डेटासेट डाउनलोड करू शकता. + +BC5CDR डेटासेट असे दिसते: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +या डेटासेटमध्ये, पहिल्या दोन ओळींमध्ये पेपरचे शीर्षक आणि सारांश असतो, आणि नंतर वैयक्तिक घटक असतात, जे शीर्षक+सारांश ब्लॉकमधील सुरुवात आणि शेवटच्या स्थानांसह दिलेले असतात. घटक प्रकाराशिवाय, तुम्हाला या घटकाचा काही वैद्यकीय ऑंटोलॉजीमधील ऑंटोलॉजी आयडी देखील मिळतो. + +तुम्हाला हे BIO एन्कोडिंगमध्ये रूपांतरित करण्यासाठी काही Python कोड लिहावा लागेल. + +## नेटवर्क + +NER साठी पहिला प्रयत्न LSTM नेटवर्क वापरून केला जाऊ शकतो, जसे की तुम्ही धड्यादरम्यान पाहिले आहे. तथापि, NLP कार्यांमध्ये, [ट्रान्सफॉर्मर आर्किटेक्चर](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) आणि विशेषतः [BERT भाषा मॉडेल्स](https://en.wikipedia.org/wiki/BERT_(language_model)) खूप चांगले परिणाम दाखवतात. पूर्व-प्रशिक्षित BERT मॉडेल्स भाषेची सामान्य रचना समजतात आणि तुलनेने लहान डेटासेट्स आणि कमी संगणकीय खर्चासह विशिष्ट कार्यांसाठी ट्यून केले जाऊ शकतात. + +आपण वैद्यकीय परिस्थितीत NER लागू करण्याची योजना आखत असल्याने, वैद्यकीय मजकुरांवर प्रशिक्षण दिलेले BERT मॉडेल वापरणे योग्य ठरेल. Microsoft Research ने [PubMedBERT][PubMedBERT] ([प्रकाशन][PubMedBERT-Pub]) नावाचे पूर्व-प्रशिक्षित मॉडेल जारी केले आहे, जे [PubMed](https://pubmed.ncbi.nlm.nih.gov/) रिपॉझिटरीमधील मजकुरांचा वापर करून ट्यून केले गेले आहे. + +ट्रान्सफॉर्मर मॉडेल्स प्रशिक्षणासाठी *de facto* मानक म्हणजे [Hugging Face Transformers](https://huggingface.co/) लायब्ररी आहे. यात समुदाय-देखरेखीखालील पूर्व-प्रशिक्षित मॉडेल्सचा रिपॉझिटरी देखील आहे, ज्यामध्ये PubMedBERT समाविष्ट आहे. हे मॉडेल लोड आणि वापरण्यासाठी, आपल्याला फक्त काही ओळींचा कोड आवश्यक आहे: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +हे आपल्याला `model` प्रदान करते, जे `classes` वर्गांच्या संख्येसह टोकन वर्गीकरण कार्यासाठी तयार केले गेले आहे, तसेच `tokenizer` ऑब्जेक्ट प्रदान करते, जो इनपुट मजकूर टोकनमध्ये विभाजित करू शकतो. तुम्हाला डेटासेटला BIO स्वरूपात रूपांतरित करावे लागेल, PubMedBERT टोकनायझेशन लक्षात घेऊन. [या Python कोडच्या तुकड्याचा](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) प्रेरणेसाठी वापर करू शकता. + +## मुख्य मुद्दे + +हे कार्य वास्तविक कार्याशी खूप जवळ आहे, जे तुम्हाला मोठ्या प्रमाणातील नैसर्गिक भाषेतील मजकुरांवर अधिक अंतर्दृष्टी मिळवायची असल्यास करावे लागेल. आपल्या बाबतीत, आपण प्रशिक्षित मॉडेल [COVID-संबंधित पेपरांच्या डेटासेटवर](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) लागू करू शकतो आणि आपण कोणती अंतर्दृष्टी मिळवू शकतो ते पाहू शकतो. [हा ब्लॉग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) आणि [हा पेपर](https://www.mdpi.com/2504-2289/6/1/4) NER वापरून या पेपरांच्या संग्रहावर केलेल्या संशोधनाचे वर्णन करतात. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/20-LangModels/README.md b/translations/mr/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..df5b7309 --- /dev/null +++ b/translations/mr/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# पूर्व-प्रशिक्षित मोठे भाषा मॉडेल्स + +आपल्या मागील सर्व कार्यांमध्ये, आम्ही लेबल केलेल्या डेटासेटचा वापर करून विशिष्ट कार्य करण्यासाठी न्यूरल नेटवर्क प्रशिक्षण देत होतो. मोठ्या ट्रान्सफॉर्मर मॉडेल्ससह, जसे की BERT, आम्ही स्व-पर्यवेक्षित पद्धतीने भाषा मॉडेलिंगचा वापर करून भाषा मॉडेल तयार करतो, जे नंतर विशिष्ट डाउनस्ट्रीम कार्यासाठी डोमेन-विशिष्ट प्रशिक्षणाद्वारे विशेषीकृत केले जाते. तथापि, हे सिद्ध झाले आहे की मोठे भाषा मॉडेल्स अनेक कार्ये कोणत्याही डोमेन-विशिष्ट प्रशिक्षणाशिवाय सोडवू शकतात. अशा प्रकारच्या मॉडेल्सच्या कुटुंबाला **GPT**: जनरेटिव्ह प्री-ट्रेनड ट्रान्सफॉर्मर म्हणतात. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## मजकूर निर्मिती आणि पेर्प्लेक्सिटी + +डाउनस्ट्रीम प्रशिक्षणाशिवाय सामान्य कार्ये करण्यास सक्षम असलेल्या न्यूरल नेटवर्कची कल्पना [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) या पेपरमध्ये सादर केली आहे. मुख्य कल्पना अशी आहे की अनेक इतर कार्ये **मजकूर निर्मिती** वापरून मॉडेल केली जाऊ शकतात, कारण मजकूर समजणे म्हणजे तो तयार करण्यास सक्षम असणे. कारण मॉडेल मानवी ज्ञान समाविष्ट असलेल्या प्रचंड प्रमाणात मजकूरावर प्रशिक्षण दिले जाते, त्यामुळे ते विविध विषयांबद्दलही ज्ञानवान बनते. + +> मजकूर समजणे आणि तयार करण्यास सक्षम असणे याचा अर्थ आपल्या सभोवतालच्या जगाबद्दल काहीतरी जाणून घेणे देखील आहे. लोक मोठ्या प्रमाणात वाचून शिकतात, आणि GPT नेटवर्क या बाबतीत समान आहे. + +मजकूर निर्मिती नेटवर्क पुढील शब्दाचा $$P(w_N)$$ संभाव्यता अंदाज करून कार्य करतात. तथापि, पुढील शब्दाची बिनशर्त संभाव्यता मजकूर कॉर्पस मधील त्या शब्दाच्या वारंवारतेच्या समान असते. GPT आपल्याला मागील शब्द दिल्यास पुढील शब्दाची **सशर्त संभाव्यता** देऊ शकते: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> संभाव्यतेबद्दल अधिक वाचण्यासाठी आमच्या [डेटा सायन्स फॉर बिगिनर्स अभ्यासक्रम](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) ला भेट द्या. + +भाषा निर्माण करणाऱ्या मॉडेलची गुणवत्ता **पेर्प्लेक्सिटी** वापरून परिभाषित केली जाऊ शकते. हे अंतर्गत मेट्रिक आहे जे आपल्याला कोणत्याही कार्य-विशिष्ट डेटासेटशिवाय मॉडेलची गुणवत्ता मोजण्याची परवानगी देते. हे *वाक्याची संभाव्यता* या संकल्पनेवर आधारित आहे - मॉडेल अशा वाक्याला उच्च संभाव्यता देते जे खरे असण्याची शक्यता आहे (म्हणजे मॉडेल त्याबद्दल **गोंधळलेले** नाही), आणि अशा वाक्यांना कमी संभाव्यता देते ज्यांचा अर्थ कमी लागतो (उदा. *Can it does what?*). जेव्हा आपण आपल्या मॉडेलला वास्तविक मजकूर कॉर्पस मधील वाक्ये देतो, तेव्हा आपल्याला त्यांना उच्च संभाव्यता आणि कमी **पेर्प्लेक्सिटी** असण्याची अपेक्षा असते. गणितीयदृष्ट्या, हे चाचणी संचाच्या सामान्यीकृत उलट संभाव्यतेसारखे परिभाषित केले जाते: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**आपण [Hugging Face च्या GPT-सक्षम मजकूर संपादक](https://transformer.huggingface.co/doc/gpt2-large) वापरून मजकूर निर्मितीचा प्रयोग करू शकता.** या संपादकात, आपण आपला मजकूर लिहायला सुरुवात करता, आणि **[TAB]** दाबल्यावर आपल्याला अनेक पूर्णता पर्याय मिळतात. जर ते खूप लहान असतील, किंवा आपण त्यांच्याशी समाधानी नसाल - [TAB] पुन्हा दाबा, आणि आपल्याला अधिक पर्याय मिळतील, ज्यामध्ये लांब मजकूराचे तुकडे समाविष्ट आहेत. + +## GPT हे एक कुटुंब आहे + +GPT हे एकच मॉडेल नाही, तर [OpenAI](https://openai.com) द्वारे विकसित आणि प्रशिक्षित केलेल्या मॉडेल्सचा संग्रह आहे. + +GPT मॉडेल्स अंतर्गत, आपल्याकडे: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| 1.5 अब्ज पॅरामीटर्सपर्यंत असलेले भाषा मॉडेल. | 175 अब्ज पॅरामीटर्सपर्यंत असलेले भाषा मॉडेल | 100T पॅरामीटर्स आणि मजकूर तसेच प्रतिमा इनपुट स्वीकारते आणि मजकूर आउटपुट देते. | + +GPT-3 आणि GPT-4 मॉडेल्स [Microsoft Azure मधील कॉग्निटिव्ह सर्व्हिस](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) म्हणून आणि [OpenAI API](https://openai.com/api/) म्हणून उपलब्ध आहेत. + +## प्रॉम्प्ट इंजिनिअरिंग + +GPT ला भाषा आणि कोड समजण्यासाठी प्रचंड प्रमाणात डेटा वर प्रशिक्षण दिले गेले आहे, त्यामुळे ते इनपुट्स (प्रॉम्प्ट्स) ला प्रतिसाद म्हणून आउटपुट्स प्रदान करतात. प्रॉम्प्ट्स म्हणजे GPT इनपुट्स किंवा क्वेरीज जिथे एखादी व्यक्ती मॉडेल्सना पुढील कार्य पूर्ण करण्याच्या सूचना देते. इच्छित परिणाम मिळवण्यासाठी, आपल्याला सर्वात प्रभावी प्रॉम्प्ट आवश्यक आहे ज्यामध्ये योग्य शब्द, स्वरूप, वाक्यांश किंवा अगदी चिन्हे निवडणे समाविष्ट आहे. या दृष्टिकोनाला [प्रॉम्प्ट इंजिनिअरिंग](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) म्हणतात. + +[ही दस्तऐवज](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) प्रॉम्प्ट इंजिनिअरिंगबद्दल अधिक माहिती प्रदान करते. + +## ✍️ उदाहरण नोटबुक: [OpenAI-GPT सह खेळणे](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +खालील नोटबुक्समध्ये आपले शिक्षण सुरू ठेवा: + +* [OpenAI-GPT आणि Hugging Face Transformers सह मजकूर तयार करणे](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## निष्कर्ष + +नवीन सामान्य पूर्व-प्रशिक्षित भाषा मॉडेल्स केवळ भाषा संरचना मॉडेल करत नाहीत, तर प्रचंड प्रमाणात नैसर्गिक भाषा देखील समाविष्ट करतात. त्यामुळे, ते काही NLP कार्ये शून्य-शॉट किंवा फ्यू-शॉट सेटिंग्जमध्ये प्रभावीपणे सोडवण्यासाठी वापरले जाऊ शकतात. + +## [व्याख्यानानंतर प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/5-NLP/README.md b/translations/mr/lessons/5-NLP/README.md new file mode 100644 index 00000000..206e1e06 --- /dev/null +++ b/translations/mr/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# नैसर्गिक भाषा प्रक्रिया + +![NLP कार्यांचा संक्षेप एका चित्रात](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.mr.png) + +या विभागात, आपण **नैसर्गिक भाषा प्रक्रिया (NLP)** संबंधित कार्ये हाताळण्यासाठी न्यूरल नेटवर्क्सचा वापर कसा करायचा यावर लक्ष केंद्रित करू. अनेक NLP समस्या आहेत ज्या संगणकांनी सोडवाव्या अशी आपली इच्छा आहे: + +* **टेक्स्ट वर्गीकरण** हे मजकूर अनुक्रमांशी संबंधित एक सामान्य वर्गीकरण समस्या आहे. उदाहरणांमध्ये ई-मेल संदेशांना स्पॅम किंवा नॉन-स्पॅम म्हणून वर्गीकृत करणे, किंवा लेखांना क्रीडा, व्यवसाय, राजकारण इत्यादींमध्ये वर्गीकृत करणे समाविष्ट आहे. तसेच, चॅट बॉट्स विकसित करताना, आपल्याला वापरकर्त्याने काय सांगायचे होते हे समजून घेणे आवश्यक असते - या प्रकरणात आपण **उद्देश वर्गीकरण** हाताळत आहोत. उद्देश वर्गीकरणामध्ये अनेक श्रेणींशी व्यवहार करावा लागतो. +* **भावना विश्लेषण** हे एक सामान्य पुनरावृत्ती समस्या आहे, जिथे आपल्याला वाक्याचा अर्थ किती सकारात्मक/नकारात्मक आहे यासंबंधित एक संख्या (भावना) देणे आवश्यक आहे. भावना विश्लेषणाचा अधिक प्रगत प्रकार म्हणजे **आशय-आधारित भावना विश्लेषण** (ABSA), जिथे आपण संपूर्ण वाक्याला नव्हे तर त्याच्या वेगवेगळ्या भागांना (आशयांना) भावना देतो, उदा. *या रेस्टॉरंटमध्ये मला जेवण आवडले, पण वातावरण भयंकर होते*. +* **नामित घटक ओळख** (NER) मजकूरातून विशिष्ट घटक काढण्याच्या समस्येला संदर्भित करते. उदाहरणार्थ, आपल्याला समजून घ्यावे लागेल की *मला उद्या पॅरिसला उड्डाण करायचे आहे* या वाक्यात *उद्या* हा शब्द DATE ला संदर्भित करतो, आणि *पॅरिस* हे LOCATION आहे. +* **कीवर्ड काढणे** NER सारखेच आहे, परंतु आपल्याला वाक्याच्या अर्थासाठी महत्त्वाचे शब्द स्वयंचलितपणे काढणे आवश्यक आहे, विशिष्ट घटक प्रकारांसाठी पूर्व-प्रशिक्षण न करता. +* **मजकूर गटबद्धीकरण** उपयुक्त ठरू शकते जेव्हा आपल्याला समान वाक्ये एकत्र गटबद्ध करायची असतात, उदाहरणार्थ, तांत्रिक सहाय्य संभाषणांमधील समान विनंत्या. +* **प्रश्न उत्तर देणे** हे मॉडेलला विशिष्ट प्रश्नाचे उत्तर देण्याची क्षमता दर्शवते. मॉडेलला मजकूराचा भाग आणि प्रश्न इनपुट म्हणून मिळतो, आणि त्याला प्रश्नाचे उत्तर मजकूरात कुठे आहे हे प्रदान करणे आवश्यक असते (किंवा, कधी कधी, उत्तर मजकूर तयार करणे). +* **मजकूर निर्मिती** हे मॉडेलला नवीन मजकूर तयार करण्याची क्षमता आहे. हे वर्गीकरण कार्य मानले जाऊ शकते जे काही *मजकूर संकेत* वर आधारित पुढील अक्षर/शब्दाचा अंदाज लावते. प्रगत मजकूर निर्मिती मॉडेल्स, जसे GPT-3, [प्रॉम्प्ट प्रोग्रामिंग](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) किंवा [प्रॉम्प्ट इंजिनिअरिंग](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) तंत्राचा वापर करून वर्गीकरणासारख्या इतर NLP कार्ये सोडवू शकतात. +* **मजकूर संक्षेपण** ही एक तंत्र आहे जिथे आपल्याला संगणकाने लांब मजकूर "वाचून" काही वाक्यांमध्ये संक्षेप करावा लागतो. +* **मशीन भाषांतर** हे एका भाषेत मजकूर समजून घेणे आणि दुसऱ्या भाषेत मजकूर तयार करणे यांचे संयोजन मानले जाऊ शकते. + +सुरुवातीला, बहुतेक NLP कार्य पारंपरिक पद्धती वापरून सोडवले जात होते जसे की व्याकरण. उदाहरणार्थ, मशीन भाषांतरामध्ये प्रारंभिक वाक्याला सिंटॅक्स ट्रीमध्ये रूपांतरित करण्यासाठी पार्सर्स वापरले जात होते, नंतर वाक्याचा अर्थ दर्शवण्यासाठी उच्च स्तरावरील अर्थपूर्ण संरचना काढल्या जात होत्या, आणि या अर्थावर आधारित आणि लक्ष्य भाषेच्या व्याकरणावर आधारित परिणाम तयार केला जात होता. आजकाल, अनेक NLP कार्य न्यूरल नेटवर्क्स वापरून अधिक प्रभावीपणे सोडवले जातात. + +> अनेक पारंपरिक NLP पद्धती [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python लायब्ररीमध्ये अंमलात आणल्या जातात. [NLTK Book](https://www.nltk.org/book/) ऑनलाइन उपलब्ध आहे, ज्यामध्ये NLTK वापरून वेगवेगळ्या NLP कार्ये कशी सोडवता येतील याचे वर्णन आहे. + +आपल्या अभ्यासक्रमात, आपण मुख्यतः NLP साठी न्यूरल नेटवर्क्स वापरण्यावर लक्ष केंद्रित करू, आणि आवश्यकतेनुसार NLTK वापरू. + +आपण टेबल डेटा आणि प्रतिमांसाठी न्यूरल नेटवर्क्स वापरण्याबद्दल आधीच शिकले आहोत. त्या प्रकारच्या डेटामध्ये आणि मजकूरामध्ये मुख्य फरक म्हणजे मजकूर हा बदलणाऱ्या लांबीचा अनुक्रम आहे, तर प्रतिमांच्या बाबतीत इनपुट आकार आधीच माहित असतो. जरी कॉनव्होल्यूशनल नेटवर्क्स इनपुट डेटामधून नमुने काढू शकतात, तरी मजकूरातील नमुने अधिक जटिल असतात. उदा., नकारात्मकता विषयापासून अनेक शब्दांनी विभक्त असू शकते (उदा. *मला संत्री आवडत नाही*, vs. *मला ती मोठी रंगीत चवदार संत्री आवडत नाही*), आणि तरीही ते एक नमुना म्हणून व्याख्या केले पाहिजे. त्यामुळे, भाषा हाताळण्यासाठी आपल्याला नवीन न्यूरल नेटवर्क प्रकारांची ओळख करून द्यावी लागते, जसे *पुनरावृत्ती नेटवर्क्स* आणि *ट्रान्सफॉर्मर्स*. + +## लायब्ररी इंस्टॉल करा + +जर आपण स्थानिक Python इंस्टॉलेशन वापरून हा अभ्यासक्रम चालवत असाल, तर आपल्याला खालील आदेश वापरून NLP साठी आवश्यक सर्व लायब्ररी इंस्टॉल कराव्या लागतील: + +**PyTorch साठी** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow साठी** +```bash +pip install -r requirements-tf.txt +``` + +> आपण [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) वर TensorFlow सह NLP प्रयत्न करू शकता. + +## GPU चेतावणी + +या विभागात, काही उदाहरणांमध्ये आपण मोठ्या मॉडेल्सचे प्रशिक्षण घेणार आहोत. +* **GPU-सक्षम संगणक वापरा**: मोठ्या मॉडेल्ससह काम करताना प्रतीक्षा वेळ कमी करण्यासाठी GPU-सक्षम संगणकावर आपले नोटबुक चालवणे योग्य आहे. +* **GPU मेमरी मर्यादा**: GPU वर चालवल्यास, विशेषतः मोठ्या मॉडेल्सचे प्रशिक्षण घेताना GPU मेमरी संपण्याच्या परिस्थिती येऊ शकतात. +* **GPU मेमरी वापर**: प्रशिक्षणादरम्यान GPU मेमरीचा वापर विविध घटकांवर अवलंबून असतो, ज्यामध्ये मिनीबॅच आकार समाविष्ट आहे. +* **मिनीबॅच आकार कमी करा**: जर GPU मेमरी समस्या आल्या, तर आपल्या कोडमध्ये मिनीबॅच आकार कमी करणे हा एक संभाव्य उपाय असू शकतो. +* **TensorFlow GPU मेमरी रिलीज**: TensorFlow च्या जुन्या आवृत्त्या GPU मेमरी योग्य प्रकारे रिलीज करत नाहीत, विशेषतः एका Python कर्नलमध्ये अनेक मॉडेल्सचे प्रशिक्षण घेताना. GPU मेमरी वापर प्रभावीपणे व्यवस्थापित करण्यासाठी, आपण TensorFlow ला GPU मेमरी आवश्यकतेनुसार वाटप करण्यासाठी कॉन्फिगर करू शकता. +* **कोड समावेश**: GPU मेमरी वाटप फक्त आवश्यकतेनुसार वाढवण्यासाठी, आपल्या नोटबुकमध्ये खालील कोड समाविष्ट करा: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +जर आपण पारंपरिक ML दृष्टिकोनातून NLP शिकण्यात स्वारस्य असाल, तर [या पाठांचा संच](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) भेट द्या. + +## या विभागात +या विभागात आपण शिकणार आहोत: + +* [मजकूराचे टेन्सर्समध्ये प्रतिनिधित्व](13-TextRep/README.md) +* [शब्द एम्बेडिंग्स](14-Emdeddings/README.md) +* [भाषा मॉडेलिंग](15-LanguageModeling/README.md) +* [पुनरावृत्ती न्यूरल नेटवर्क्स](16-RNN/README.md) +* [निर्मितीक्षम नेटवर्क्स](17-GenerativeNetworks/README.md) +* [ट्रान्सफॉर्मर्स](18-Transformers/README.md) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/mr/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..87981613 --- /dev/null +++ b/translations/mr/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# जनुक अल्गोरिदम + +## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**जनुक अल्गोरिदम** (GA) हे AI साठी **उत्क्रांतीवादी दृष्टिकोनावर** आधारित आहेत, ज्यामध्ये लोकसंख्येच्या उत्क्रांतीच्या पद्धतींचा वापर करून दिलेल्या समस्येसाठी सर्वोत्तम उपाय शोधला जातो. 1975 मध्ये [जॉन हेन्री हॉलंड](https://wikipedia.org/wiki/John_Henry_Holland) यांनी हे प्रस्तावित केले. + +जनुक अल्गोरिदम खालील कल्पनांवर आधारित आहेत: + +* समस्येचे वैध उपाय **जनुक** म्हणून दर्शवले जाऊ शकतात +* **क्रॉसओव्हर** द्वारे दोन उपाय एकत्र करून नवीन वैध उपाय मिळवता येतो +* **निवड** काही **फिटनेस फंक्शन** वापरून अधिक चांगले उपाय निवडण्यासाठी वापरली जाते +* **म्युटेशन** (उत्परिवर्तन) ऑप्टिमायझेशन अस्थिर करण्यासाठी आणि स्थानिक किमान मूल्यातून बाहेर पडण्यासाठी वापरले जाते + +जर तुम्हाला जनुक अल्गोरिदम अंमलात आणायचा असेल, तर तुम्हाला खालील गोष्टींची आवश्यकता आहे: + + * **जनुक** g∈Γ वापरून समस्येचे उपाय कोड करण्याची पद्धत शोधणे + * जनुकांच्या संच Γ वर **फिटनेस फंक्शन** fit: Γ→**R** परिभाषित करणे. लहान फंक्शन मूल्ये चांगल्या उपायांना दर्शवतात. + * दोन जनुक एकत्र करून नवीन वैध उपाय मिळवण्यासाठी **क्रॉसओव्हर** यंत्रणा परिभाषित करणे crossover: Γ2→Γ. + * **म्युटेशन** यंत्रणा परिभाषित करणे mutate: Γ→Γ. + +अनेक प्रकरणांमध्ये, क्रॉसओव्हर आणि म्युटेशन हे जनुकांना संख्यात्मक अनुक्रम किंवा बिट व्हेक्टर म्हणून हाताळण्यासाठी सोपे अल्गोरिदम असतात. + +जनुक अल्गोरिदमची विशिष्ट अंमलबजावणी प्रकरणानुसार बदलू शकते, परंतु एकूण रचना खालीलप्रमाणे आहे: + +1. प्रारंभिक लोकसंख्या G⊂Γ निवडा +2. या टप्प्यावर कोणती ऑपरेशन केली जाईल ते यादृच्छिकपणे निवडा: क्रॉसओव्हर किंवा म्युटेशन +3. **क्रॉसओव्हर**: + * यादृच्छिकपणे दोन जनुक g1, g2 ∈ G निवडा + * क्रॉसओव्हरची गणना करा g=crossover(g1,g2) + * जर fit(g)1) किंवा fit(g)2) असेल - तर लोकसंख्येतील संबंधित जनुक g ने बदला. +4. **म्युटेशन** - यादृच्छिक जनुक g∈G निवडा आणि mutate(g) ने बदला +5. fit चे पुरेसे छोटे मूल्य मिळेपर्यंत किंवा चरणांच्या संख्येवर मर्यादा येईपर्यंत चरण 2 पासून पुन्हा सुरू करा. + +## सामान्यतः सोडवले जाणारे कार्य + +जनुक अल्गोरिदमद्वारे सामान्यतः सोडवले जाणारे कार्य: + +1. वेळापत्रक ऑप्टिमायझेशन +1. सर्वोत्तम पॅकिंग +1. सर्वोत्तम कटिंग +1. exhaustive search वेगवान करणे + +## ✍️ सराव: जनुक अल्गोरिदम + +खालील नोटबुक्समध्ये तुमचे शिक्षण सुरू ठेवा: + +[या नोटबुकमध्ये](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) जनुक अल्गोरिदम वापरण्याचे दोन उदाहरणे पहा: + +1. खजिन्याचे न्याय्य विभाजन +1. 8 क्वीन समस्या + +## निष्कर्ष + +जनुक अल्गोरिदम अनेक समस्या सोडवण्यासाठी वापरले जातात, ज्यामध्ये लॉजिस्टिक्स आणि शोध समस्या समाविष्ट आहेत. हे क्षेत्र मानसशास्त्र आणि संगणक विज्ञानाच्या संशोधनाने प्रेरित आहे. + +## 🚀 आव्हान + +"जनुक अल्गोरिदम अंमलात आणणे सोपे आहे, परंतु त्यांचे वर्तन समजणे कठीण आहे." [स्रोत](https://wikipedia.org/wiki/Genetic_algorithm) जनुक अल्गोरिदमची अंमलबजावणी शोधण्यासाठी संशोधन करा, जसे की सुडोकू कोडे सोडवणे, आणि त्याचे कार्य कसे होते हे स्केच किंवा फ्लोचार्टच्या स्वरूपात स्पष्ट करा. + +## [व्याख्यानानंतरची प्रश्नमंजूषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## पुनरावलोकन आणि स्व-अभ्यास + +[हा उत्कृष्ट व्हिडिओ](https://www.youtube.com/watch?v=qv6UVOQ0F44) पहा, ज्यामध्ये संगणक जनुक अल्गोरिदमद्वारे प्रशिक्षित न्यूरल नेटवर्क वापरून सुपर मारिओ खेळायला शिकतो याबद्दल चर्चा केली आहे. अशा प्रकारे संगणक खेळ शिकतो याबद्दल आपण [पुढील विभागात](../22-DeepRL/README.md) अधिक शिकू. + +## [असाइनमेंट: डायोफंटाइन समीकरण](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +तुमचे उद्दिष्ट **डायोफंटाइन समीकरण** सोडवणे आहे - ज्यामध्ये पूर्णांक मूळ असते. उदाहरणार्थ, समीकरण a+2b+3c+4d=30 विचार करा. तुम्हाला या समीकरणाचे पूर्णांक मूळ शोधायचे आहे. + +*हे असाइनमेंट [या पोस्टने](https://habr.com/post/128704/) प्रेरित आहे.* + +सूचना: + +1. तुम्ही मूळ [0;30] या अंतरात विचार करू शकता +1. जनुक म्हणून, मूळ मूल्यांच्या यादीचा विचार करा + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) प्रारंभ बिंदू म्हणून वापरा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/6-Other/22-DeepRL/README.md b/translations/mr/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..9906e4b6 --- /dev/null +++ b/translations/mr/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# डीप रिइन्फोर्समेंट लर्निंग + +रिइन्फोर्समेंट लर्निंग (RL) हे सुपरवाइज्ड लर्निंग आणि अनसुपरवाइज्ड लर्निंग यांच्यासोबत मशीन लर्निंगचे एक मूलभूत पॅराडाइम मानले जाते. सुपरवाइज्ड लर्निंगमध्ये आपल्याला ज्ञात परिणामांसह डेटासेटवर अवलंबून राहावे लागते, तर RL **करून शिकणे** या संकल्पनेवर आधारित आहे. उदाहरणार्थ, जेव्हा आपण प्रथम एखादे संगणक गेम पाहतो, तेव्हा आपण नियम माहित नसतानाही खेळायला सुरुवात करतो आणि लवकरच खेळत राहून आणि आपले वर्तन समायोजित करून आपले कौशल्य सुधारतो. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL करण्यासाठी आपल्याला आवश्यक आहे: + +* **पर्यावरण** किंवा **सिम्युलेटर**, जे खेळाचे नियम सेट करते. आपल्याला सिम्युलेटरमध्ये प्रयोग चालवता यायला हवेत आणि त्याचे परिणाम पाहता यायला हवेत. +* काही **रिवॉर्ड फंक्शन**, जे आपला प्रयोग किती यशस्वी होता हे दर्शवते. संगणक गेम खेळायला शिकण्याच्या बाबतीत, रिवॉर्ड म्हणजे आपला अंतिम स्कोअर असेल. + +रिवॉर्ड फंक्शनच्या आधारे, आपल्याला आपले वर्तन समायोजित करता यायला हवे आणि आपले कौशल्य सुधारता यायला हवे, जेणेकरून पुढच्या वेळी आपण चांगले खेळू शकू. इतर प्रकारच्या मशीन लर्निंग आणि RL यामधील मुख्य फरक म्हणजे RL मध्ये आपल्याला खेळ संपेपर्यंत आपण जिंकतो की हरतो हे सहसा माहित नसते. त्यामुळे, एखादी विशिष्ट चाल चांगली आहे की नाही हे आपण सांगू शकत नाही - आपल्याला खेळाच्या शेवटीच रिवॉर्ड मिळते. + +RL दरम्यान, आपण अनेक प्रयोग करतो. प्रत्येक प्रयोगादरम्यान, आपण आतापर्यंत शिकलेल्या सर्वोत्तम रणनीतीचे अनुसरण करणे (**शोषण**) आणि नवीन संभाव्य स्थितींचा शोध घेणे (**अन्वेषण**) यामध्ये संतुलन साधणे आवश्यक आहे. + +## OpenAI Gym + +RL साठी एक उत्कृष्ट साधन म्हणजे [OpenAI Gym](https://gym.openai.com/) - एक **सिम्युलेशन पर्यावरण**, जे अटारी गेम्सपासून ते पोल बॅलन्सिंगच्या भौतिकशास्त्रापर्यंत अनेक वेगवेगळ्या पर्यावरणांचे अनुकरण करू शकते. हे रिइन्फोर्समेंट लर्निंग अल्गोरिदम्स प्रशिक्षणासाठी सर्वात लोकप्रिय सिम्युलेशन पर्यावरणांपैकी एक आहे आणि [OpenAI](https://openai.com/) द्वारे देखरेख केली जाते. + +> **Note**: OpenAI Gym मधील सर्व उपलब्ध पर्यावरणे आपण [येथे](https://gym.openai.com/envs/#classic_control) पाहू शकता. + +## CartPole बॅलन्सिंग + +आपण सर्वांनी आधुनिक बॅलन्सिंग उपकरणे जसे की *Segway* किंवा *Gyroscooters* पाहिली असतील. हे उपकरणे अ‍ॅक्सेलरोमीटर किंवा गायरॉस्कोपकडून मिळालेल्या सिग्नलच्या प्रतिसादात आपले चाक समायोजित करून आपोआप संतुलन साधू शकतात. या विभागात, आपण एक समान समस्या सोडवायला शिकणार आहोत - पोल बॅलन्सिंग. हे एका सर्कस कलाकाराने आपल्या हातावर पोल संतुलित करण्याच्या परिस्थितीसारखे आहे - परंतु हे पोल बॅलन्सिंग फक्त 1D मध्ये होते. + +संतुलन साधण्याचे एक साधे रूप **CartPole** समस्या म्हणून ओळखले जाते. CartPole जगात, आपल्याकडे एक आडवा स्लायडर आहे जो डावीकडे किंवा उजवीकडे हलवू शकतो, आणि उद्दिष्ट म्हणजे स्लायडरवर वरच्या बाजूस उभा असलेला पोल संतुलित ठेवणे. + +a cartpole + +हे पर्यावरण तयार करण्यासाठी आणि वापरण्यासाठी, आपल्याला काही ओळींचा Python कोड आवश्यक आहे: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +प्रत्येक पर्यावरणाचा उपयोग नेमक्या याच प्रकारे करता येतो: +* `env.reset` नवीन प्रयोग सुरू करतो +* `env.step` सिम्युलेशन स्टेप पार पाडतो. हे **action space** मधून एक **action** प्राप्त करते आणि **observation space** मधून एक **observation**, तसेच रिवॉर्ड आणि टर्मिनेशन फ्लॅग परत करते. + +वरील उदाहरणात, प्रत्येक स्टेपवर आम्ही एक रँडम action घेतो, त्यामुळे प्रयोगाचे आयुष्य खूपच कमी असते: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RL अल्गोरिदमचे उद्दिष्ट म्हणजे एक मॉडेल - ज्याला **policy** π म्हणतात - प्रशिक्षण देणे, जे दिलेल्या स्थितीच्या प्रतिसादात action परत करेल. आपण पॉलिसीला संभाव्यत: विचार करू शकतो, उदा. कोणत्याही स्थिती *s* आणि action *a* साठी, ते *s* स्थितीत *a* घेण्याची शक्यता π(*a*|*s*) परत करेल. + +## Policy Gradients अल्गोरिदम + +पॉलिसी मॉडेल करण्याचा सर्वात स्पष्ट मार्ग म्हणजे एक न्यूरल नेटवर्क तयार करणे, जे states इनपुट म्हणून घेईल आणि संबंधित actions (किंवा सर्व actions च्या संभाव्यता) परत करेल. एका अर्थाने, हे सामान्य वर्गीकरण कार्यासारखे असेल, परंतु एक मोठा फरक म्हणजे - आपल्याला प्रत्येक स्टेपवर कोणते action घ्यावे हे आधीपासून माहित नसते. + +येथे कल्पना अशी आहे की त्या संभाव्यता अंदाज करणे. आपण **cumulative rewards** चा एक व्हेक्टर तयार करतो, जो प्रयोगाच्या प्रत्येक स्टेपवर आपला एकूण रिवॉर्ड दर्शवतो. आपण **reward discounting** देखील लागू करतो, जिथे पूर्वीच्या रिवॉर्ड्सला काही गुणक γ=0.99 ने गुणून त्यांची भूमिका कमी करतो. नंतर, आपण त्या स्टेप्सला बळकट करतो जे अधिक रिवॉर्ड देतात. + +> Policy Gradient अल्गोरिदमबद्दल अधिक जाणून घ्या आणि [उदाहरण नोटबुक](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) मध्ये ते कृतीत पाहा. + +## Actor-Critic अल्गोरिदम + +Policy Gradients पद्धतीचे एक सुधारित रूप **Actor-Critic** म्हणून ओळखले जाते. यामागील मुख्य कल्पना अशी आहे की न्यूरल नेटवर्क दोन गोष्टी परत करण्यासाठी प्रशिक्षित केले जाईल: + +* पॉलिसी, जी कोणते action घ्यायचे ते ठरवते. या भागाला **actor** म्हणतात. +* आपण या स्थितीत मिळवू शकणाऱ्या एकूण रिवॉर्डचा अंदाज - या भागाला **critic** म्हणतात. + +एका अर्थाने, ही रचना [GAN](../../4-ComputerVision/10-GANs/README.md) सारखी आहे, जिथे दोन नेटवर्क्स एकमेकांविरुद्ध प्रशिक्षित केली जातात. Actor-Critic मॉडेलमध्ये, actor आपल्याला घ्यायचे action प्रस्तावित करते, आणि critic त्यावर टीका करून परिणामाचा अंदाज लावतो. मात्र, आपले उद्दिष्ट हे नेटवर्क्स एकत्र प्रशिक्षित करणे आहे. + +कारण आपल्याला प्रयोगादरम्यान वास्तविक cumulative rewards आणि critic द्वारे परत केलेले परिणाम दोन्ही माहित असतात, त्यामुळे त्यांच्यातील फरक कमी करण्यासाठी loss function तयार करणे तुलनेने सोपे आहे. यामुळे आपल्याला **critic loss** मिळते. **actor loss** आपण policy gradient अल्गोरिदमसारख्याच पद्धतीने गणना करू शकतो. + +या अल्गोरिदम्सपैकी एक चालवल्यानंतर, आपला CartPole असे वागेल: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ सराव: Policy Gradients आणि Actor-Critic RL + +खालील नोटबुक्समध्ये आपले शिक्षण सुरू ठेवा: + +* [RL in TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL in PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## इतर RL कार्ये + +आजकाल रिइन्फोर्समेंट लर्निंग हे संशोधनाचे वेगाने वाढणारे क्षेत्र आहे. रिइन्फोर्समेंट लर्निंगचे काही मनोरंजक उदाहरणे: + +* **Atari Games** खेळायला संगणकाला शिकवणे. या समस्येतील आव्हानात्मक भाग म्हणजे आपल्याकडे व्हेक्टर म्हणून सोपी state नसते, तर स्क्रीनशॉट असतो - आणि आपल्याला CNN वापरून या स्क्रीन इमेजला फीचर व्हेक्टरमध्ये रूपांतरित करावे लागते किंवा रिवॉर्ड माहिती काढावी लागते. अटारी गेम्स Gym मध्ये उपलब्ध आहेत. +* संगणकाला Chess आणि Go सारखे बोर्ड गेम्स खेळायला शिकवणे. अलीकडे **Alpha Zero** सारख्या अत्याधुनिक प्रोग्राम्स दोन एजंट्स एकमेकांविरुद्ध खेळून आणि प्रत्येक स्टेपवर सुधारणा करून सुरुवातीपासून प्रशिक्षित केले गेले. +* उद्योगात, RL सिम्युलेशनमधून नियंत्रण प्रणाली तयार करण्यासाठी वापरले जाते. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) नावाची सेवा यासाठी खास डिझाइन केली आहे. + +## निष्कर्ष + +आता आपण एजंट्सना चांगले परिणाम मिळवण्यासाठी प्रशिक्षण देणे शिकले आहे, फक्त त्यांना खेळाच्या इच्छित स्थितीची व्याख्या करणारे रिवॉर्ड फंक्शन प्रदान करून आणि त्यांना शोध जागा बुद्धिमत्तेने एक्सप्लोर करण्याची संधी देऊन. आपण यशस्वीरित्या दोन अल्गोरिदम्स वापरले आणि तुलनेने कमी कालावधीत चांगला परिणाम साध्य केला. मात्र, हे RL मध्ये आपली प्रवासाची फक्त सुरुवात आहे, आणि आपण अधिक खोलवर जाण्यासाठी स्वतंत्र कोर्स घेण्याचा विचार नक्कीच करावा. + +## 🚀 आव्हान + +'इतर RL कार्ये' विभागात सूचीबद्ध अनुप्रयोग एक्सप्लोर करा आणि एक अंमलात आणण्याचा प्रयत्न करा! + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## पुनरावलोकन आणि स्व-अभ्यास + +[Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) मध्ये क्लासिकल रिइन्फोर्समेंट लर्निंगबद्दल अधिक जाणून घ्या. + +संगणक Super Mario खेळायला कसे शिकतो याबद्दल बोलणारे [हे उत्कृष्ट व्हिडिओ](https://www.youtube.com/watch?v=qv6UVOQ0F44) पहा. + +## असाइनमेंट: [Train a Mountain Car](lab/README.md) + +या असाइनमेंट दरम्यान आपले उद्दिष्ट वेगळ्या Gym पर्यावरणाला - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) - प्रशिक्षण देणे असेल. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/6-Other/22-DeepRL/lab/README.md b/translations/mr/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..27b81a38 --- /dev/null +++ b/translations/mr/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## पर्यावरण + +माउंटन कार पर्यावरणामध्ये एक कार एका दरीत अडकलेली असते. तुमचे उद्दिष्ट दरीतून बाहेर उडी मारून ध्वजापर्यंत पोहोचणे आहे. तुम्ही जे क्रिया करू शकता त्या म्हणजे डावीकडे वेग वाढवणे, उजवीकडे वेग वाढवणे किंवा काहीही न करणे. तुम्ही कारची x-अक्षावरची स्थिती आणि वेग पाहू शकता. + +## सुरुवातीचा नोटबुक + +[MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) उघडून प्रयोग सुरू करा. + +## मुख्य मुद्दा + +या प्रयोगादरम्यान तुम्हाला शिकायला मिळेल की नवीन पर्यावरणासाठी RL अल्गोरिदम स्वीकारणे अनेकदा सोपे असते, कारण OpenAI Gym सर्व पर्यावरणांसाठी समान इंटरफेस प्रदान करते आणि अल्गोरिदम पर्यावरणाच्या स्वरूपावर फारसा अवलंबून नसतो. तुम्ही Python कोडला अशा प्रकारे पुनर्रचना करू शकता की RL अल्गोरिदमला कोणतेही पर्यावरण पॅरामीटर म्हणून पास करता येईल. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/6-Other/23-MultiagentSystems/README.md b/translations/mr/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..218c48bc --- /dev/null +++ b/translations/mr/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,151 @@ + +# मल्टी-एजंट सिस्टीम्स + +बुद्धिमत्ता मिळवण्याचा एक संभाव्य मार्ग म्हणजे **उत्पन्न** (किंवा **सहकार्यात्मक**) दृष्टिकोन, जो या तथ्यावर आधारित आहे की अनेक तुलनेने साध्या एजंट्सच्या एकत्रित वर्तनामुळे संपूर्ण सिस्टीमचे अधिक जटिल (किंवा बुद्धिमान) वर्तन निर्माण होऊ शकते. सैद्धांतिकदृष्ट्या, हे [सामूहिक बुद्धिमत्ता](https://en.wikipedia.org/wiki/Collective_intelligence), [उत्पन्नवाद](https://en.wikipedia.org/wiki/Global_brain) आणि [क्रांतिकारी सायबरनेटिक्स](https://en.wikipedia.org/wiki/Global_brain) च्या तत्त्वांवर आधारित आहे, जे असे म्हणतात की उच्च-स्तरीय सिस्टीम्स काही प्रकारचे अतिरिक्त मूल्य प्राप्त करतात जेव्हा त्यांना योग्य प्रकारे कमी-स्तरीय सिस्टीम्समधून एकत्रित केले जाते (*मेटासिस्टीम ट्रांझिशनचे तत्त्व*). + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**मल्टी-एजंट सिस्टीम्स** चा दिशानिर्देश 1990 च्या दशकात इंटरनेट आणि वितरित सिस्टीम्सच्या वाढीला प्रतिसाद म्हणून AI मध्ये उदयास आला. [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) या AI च्या क्लासिकल पाठ्यपुस्तकांपैकी एक, मल्टी-एजंट सिस्टीम्सच्या दृष्टिकोनातून क्लासिकल AI चा विचार करते. + +मल्टी-एजंट दृष्टिकोनाचा केंद्रबिंदू म्हणजे **एजंट** ही संकल्पना - एक घटक जो काही **पर्यावरणात** राहतो, ज्याला तो जाणून घेऊ शकतो आणि त्यावर कृती करू शकतो. ही एक अतिशय व्यापक व्याख्या आहे, आणि एजंट्सचे अनेक प्रकार आणि वर्गीकरण असू शकते: + +* त्यांच्या विचार करण्याच्या क्षमतेनुसार: + - **प्रतिक्रियात्मक** एजंट्स साधारणतः विनंती-प्रतिक्रिया प्रकारचे साधे वर्तन करतात + - **विचारशील** एजंट्स काही प्रकारचे तर्कशास्त्रीय विचार आणि/किंवा नियोजन क्षमता वापरतात +* एजंट्स कोठे कोड कार्यान्वित करतात यानुसार: + - **स्थिर** एजंट्स समर्पित नेटवर्क नोडवर कार्य करतात + - **मोबाइल** एजंट्स त्यांचा कोड नेटवर्क नोड्समध्ये हलवू शकतात +* त्यांच्या वर्तनानुसार: + - **निष्क्रिय एजंट्स** विशिष्ट उद्दिष्टे नसतात. असे एजंट्स बाह्य उत्तेजनांना प्रतिसाद देऊ शकतात, परंतु स्वतःहून कोणतीही कृती सुरू करणार नाहीत. + - **सक्रिय एजंट्स** काही उद्दिष्टे असतात ज्याचा ते पाठपुरावा करतात + - **संज्ञानात्मक एजंट्स** जटिल नियोजन आणि विचारांचा समावेश करतात + +आजकाल मल्टी-एजंट सिस्टीम्स अनेक अनुप्रयोगांमध्ये वापरल्या जातात: + +* गेम्समध्ये, अनेक नॉन-प्लेयर कॅरेक्टर्स काही प्रकारचे AI वापरतात आणि त्यांना बुद्धिमान एजंट्स मानले जाऊ शकते +* व्हिडिओ निर्मितीत, गर्दी असलेल्या जटिल 3D दृश्यांचे रेंडरिंग सामान्यतः मल्टी-एजंट सिम्युलेशन वापरून केले जाते +* सिस्टीम मॉडेलिंगमध्ये, मल्टी-एजंट दृष्टिकोनाचा वापर जटिल मॉडेलच्या वर्तनाचे अनुकरण करण्यासाठी केला जातो. उदाहरणार्थ, मल्टी-एजंट दृष्टिकोनाचा यशस्वीरित्या वापर COVID-19 रोगाचा जागतिक स्तरावर प्रसार भाकीत करण्यासाठी केला गेला आहे. समान दृष्टिकोनाचा वापर शहरातील वाहतूक मॉडेल करण्यासाठी केला जाऊ शकतो आणि वाहतूक नियमांमध्ये बदलांना ते कसे प्रतिसाद देते हे पाहण्यासाठी. +* जटिल ऑटोमेशन सिस्टीम्समध्ये, प्रत्येक उपकरण स्वतंत्र एजंट म्हणून कार्य करू शकते, ज्यामुळे संपूर्ण सिस्टीम कमी एकसंध आणि अधिक मजबूत बनते. + +आम्ही मल्टी-एजंट सिस्टीम्समध्ये खोलवर जाण्यासाठी जास्त वेळ खर्च करणार नाही, परंतु **मल्टी-एजंट मॉडेलिंग** चा एक उदाहरण विचार करू. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) हे [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) प्रोग्रामिंग भाषेच्या सुधारित आवृत्तीवर आधारित मल्टी-एजंट मॉडेलिंग वातावरण आहे. ही भाषा मुलांना प्रोग्रामिंग संकल्पना शिकवण्यासाठी विकसित केली गेली होती, आणि ती तुम्हाला **कासव** नावाच्या एजंटला नियंत्रित करण्याची परवानगी देते, जो हलू शकतो आणि मागे एक चिन्ह सोडतो. यामुळे जटिल भूमितीय आकृत्या तयार होतात, जे एजंटच्या वर्तन समजून घेण्याचा एक अत्यंत दृश्यात्मक मार्ग आहे. + +NetLogo मध्ये, आपण `create-turtles` कमांड वापरून अनेक कासवे तयार करू शकतो. त्यानंतर आपण सर्व कासवांना काही कृती करण्याचे आदेश देऊ शकतो (खालील उदाहरणात - 10 पॉइंट पुढे हलवा): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +अर्थात, जेव्हा सर्व कासवे एकसारखेच काहीतरी करतात तेव्हा ते मनोरंजक नसते, म्हणून आपण विशिष्ट बिंदूच्या आसपास असलेल्या कासवांच्या गटांना `ask` करू शकतो. आपण `breed [cats cat]` कमांड वापरून वेगवेगळ्या *प्रजातींच्या* कासवांना देखील तयार करू शकतो. येथे `cat` ही प्रजातीचे नाव आहे, आणि आपल्याला एकवचनी आणि अनेकवचनी शब्द निर्दिष्ट करणे आवश्यक आहे, कारण स्पष्टतेसाठी वेगवेगळ्या कमांड्स वेगवेगळ्या स्वरूपांचा वापर करतात. + +> ✅ आम्ही NetLogo भाषा शिकण्यात खोलवर जाणार नाही - तुम्हाला अधिक शिकण्यात स्वारस्य असल्यास तुम्ही उत्कृष्ट [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) संसाधनाला भेट देऊ शकता. + +तुम्ही NetLogo [डाउनलोड](https://ccl.northwestern.edu/netlogo/download.shtml) करून स्थापित करू शकता आणि प्रयत्न करू शकता. + +### मॉडेल्स लायब्ररी + +NetLogo ची एक उत्तम गोष्ट म्हणजे त्यात कार्यरत मॉडेल्सची लायब्ररी आहे जी तुम्ही वापरून पाहू शकता. **File → Models Library** वर जा, आणि तुम्हाला निवडण्यासाठी अनेक श्रेणीतील मॉडेल्स मिळतील. + +NetLogo Models Library + +> मॉडेल्स लायब्ररीचा स्क्रीनशॉट - Dmitry Soshnikov + +तुम्ही मॉडेल्सपैकी एक उघडू शकता, उदाहरणार्थ **Biology → Flocking**. + +### मुख्य तत्त्वे + +मॉडेल उघडल्यानंतर, तुम्हाला मुख्य NetLogo स्क्रीनवर नेले जाते. येथे एक नमुना मॉडेल आहे जे मर्यादित संसाधने (गवत) दिल्यास लांडगा आणि मेंढ्यांच्या लोकसंख्येचे वर्णन करते. + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.mr.png) + +> स्क्रीनशॉट - Dmitry Soshnikov + +या स्क्रीनवर तुम्ही पाहू शकता: + +* **इंटरफेस** विभाग ज्यामध्ये समाविष्ट आहे: + - मुख्य क्षेत्र, जिथे सर्व एजंट्स राहतात + - विविध नियंत्रण: बटणे, स्लायडर्स, इ. + - ग्राफ्स ज्याचा वापर तुम्ही सिम्युलेशनच्या पॅरामीटर्स प्रदर्शित करण्यासाठी करू शकता +* **कोड** टॅब ज्यामध्ये संपादक आहे, जिथे तुम्ही NetLogo प्रोग्राम टाइप करू शकता + +बहुतेक प्रकरणांमध्ये, इंटरफेसमध्ये **Setup** बटण असते, जे सिम्युलेशन स्थिती प्रारंभ करते, आणि **Go** बटण असते जे अंमलबजावणी सुरू करते. हे संबंधित हँडलर्सद्वारे कोडमध्ये हाताळले जाते, जे असे दिसते: + +``` +to go [ +... +] +``` + +NetLogo चा जग खालील वस्तूंनी बनलेला आहे: + +* **एजंट्स** (कासवे) जे क्षेत्रावर फिरू शकतात आणि काहीतरी करू शकतात. तुम्ही `ask turtles [...]` सिंटॅक्स वापरून एजंट्सला आदेश देता, आणि कोड ब्रॅकेटमध्ये सर्व एजंट्सद्वारे *कासव मोडमध्ये* अंमलात आणला जातो. +* **पॅचेस** क्षेत्राचे चौकोनी भाग आहेत, ज्यावर एजंट्स राहतात. तुम्ही त्याच पॅचवर असलेल्या सर्व एजंट्सचा संदर्भ घेऊ शकता, किंवा तुम्ही पॅच रंग आणि काही इतर गुणधर्म बदलू शकता. तुम्ही `ask patches` वापरून पॅचेसला काहीतरी करण्यास सांगू शकता. +* **ऑब्झर्व्हर** हा एक अद्वितीय एजंट आहे जो जग नियंत्रित करतो. सर्व बटण हँडलर्स *ऑब्झर्व्हर मोडमध्ये* अंमलात आणले जातात. + +> ✅ मल्टी-एजंट वातावरणाची सुंदरता म्हणजे कासव मोड किंवा पॅच मोडमध्ये चालणारा कोड सर्व एजंट्सद्वारे एकाच वेळी समांतरपणे अंमलात आणला जातो. अशा प्रकारे, थोडासा कोड लिहून आणि वैयक्तिक एजंटच्या वर्तनाचे प्रोग्रामिंग करून, तुम्ही संपूर्ण सिम्युलेशन सिस्टीमचे जटिल वर्तन तयार करू शकता. + +### फ्लॉकिंग + +मल्टी-एजंट वर्तनाच्या उदाहरण म्हणून, **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** विचार करूया. फ्लॉकिंग हा एक जटिल नमुना आहे जो पक्ष्यांच्या थव्याच्या उडण्यासारखा आहे. त्यांना उडताना पाहून तुम्हाला वाटेल की ते काही प्रकारच्या सामूहिक अल्गोरिदमचे अनुसरण करतात, किंवा त्यांच्याकडे काही प्रकारची *सामूहिक बुद्धिमत्ता* आहे. तथापि, हे जटिल वर्तन उद्भवते जेव्हा प्रत्येक वैयक्तिक एजंट (या प्रकरणात, एक *पक्षी*) फक्त त्याच्या जवळच्या काही एजंट्सचे निरीक्षण करते आणि तीन साध्या नियमांचे अनुसरण करते: + +* **अलायन्मेंट** - शेजारी एजंट्सच्या सरासरी दिशेने वळते +* **कोहेशन** - शेजाऱ्यांच्या सरासरी स्थानाकडे वळण्याचा प्रयत्न करते (*लांब पल्ल्याचे आकर्षण*) +* **सेपरेशन** - इतर पक्ष्यांच्या खूप जवळ जाताना, दूर जाण्याचा प्रयत्न करते (*लहान पल्ल्याचे प्रतिकर्षण*) + +तुम्ही फ्लॉकिंग उदाहरण चालवू शकता आणि वर्तनाचे निरीक्षण करू शकता. तुम्ही *सेपरेशनचा अंश* किंवा *दृश्य श्रेणी* सारख्या पॅरामीटर्स समायोजित करू शकता, जे प्रत्येक पक्षी किती दूर पाहू शकतो हे परिभाषित करते. लक्षात ठेवा की जर तुम्ही दृश्य श्रेणी 0 पर्यंत कमी केली, तर सर्व पक्षी अंध होतात आणि फ्लॉकिंग थांबते. जर तुम्ही सेपरेशन 0 पर्यंत कमी केले, तर सर्व पक्षी एका सरळ रेषेत एकत्र येतात. + +> ✅ **Code** टॅबवर स्विच करा आणि फ्लॉकिंगचे तीन नियम (अलायन्मेंट, कोहेशन आणि सेपरेशन) कोडमध्ये कुठे अंमलात आणले आहेत ते पहा. लक्षात घ्या की आपण फक्त दृष्टीक्षेपात असलेल्या एजंट्सचा संदर्भ घेतो. + +### पाहण्यासाठी इतर मॉडेल्स + +तुम्ही प्रयोग करू शकता अशा काही अधिक मनोरंजक मॉडेल्स आहेत: + +* **Art → Fireworks** दर्शवते की फटाके कसे वैयक्तिक फायर स्ट्रीम्सच्या सामूहिक वर्तन मानले जाऊ शकते +* **Social Science → Traffic Basic** आणि **Social Science → Traffic Grid** शहरातील वाहतुकीचे मॉडेल 1D आणि 2D ग्रिडमध्ये ट्रॅफिक लाइट्ससह किंवा त्याशिवाय दर्शवते. सिम्युलेशनमधील प्रत्येक कार खालील नियमांचे अनुसरण करते: + - जर त्याच्या समोर जागा रिकामी असेल - वेग वाढवा (एक विशिष्ट कमाल वेगापर्यंत) + - जर समोर अडथळा दिसला - ब्रेक करा (आणि तुम्ही ड्रायव्हर किती दूर पाहू शकतो ते समायोजित करू शकता) +* **Social Science → Party** दाखवते की कॉकटेल पार्टी दरम्यान लोक कसे एकत्र येतात. तुम्ही गटाच्या आनंदात सर्वात जलद वाढ होण्यासाठी पॅरामीटर्सचे संयोजन शोधू शकता. + +या उदाहरणांमधून तुम्ही पाहू शकता की, मल्टी-एजंट सिम्युलेशन वैयक्तिक व्यक्तींच्या समान किंवा समान तर्काचे अनुसरण करणाऱ्या जटिल सिस्टीमचे वर्तन समजून घेण्याचा एक उपयुक्त मार्ग असू शकतो. याचा वापर आभासी एजंट्स, जसे की [NPCs](https://en.wikipedia.org/wiki/NPC) संगणक गेम्समध्ये किंवा 3D अॅनिमेटेड जगांमधील एजंट्स नियंत्रित करण्यासाठी देखील केला जाऊ शकतो. + +## विचारशील एजंट्स + +वर वर्णन केलेले एजंट्स अतिशय साधे आहेत, जे काही प्रकारच्या अल्गोरिदमचा वापर करून पर्यावरणातील बदलांना प्रतिसाद देतात. त्यामुळे ते **प्रतिक्रियात्मक एजंट्स** आहेत. तथापि, कधीकधी एजंट्स विचार करू शकतात आणि त्यांच्या कृतींचे नियोजन करू शकतात, अशा परिस्थितीत त्यांना **विचारशील** म्हणतात. + +एक सामान्य उदाहरण म्हणजे वैयक्तिक एजंट जो मानवाकडून सुट्टीचा टूर बुक करण्याचा आदेश प्राप्त करतो. समजा की इंटरनेटवर अनेक एजंट्स आहेत जे त्याला मदत करू शकतात. त्याने इतर एजंट्सशी संपर्क साधून पाहिले पाहिजे की कोणत्या फ्लाइट्स उपलब्ध आहेत, वेगवेगळ्या तारखांसाठी हॉटेलचे दर काय आहेत, आणि सर्वोत्तम किंमत मिळवण्यासाठी वाटाघाटी करण्याचा प्रयत्न केला पाहिजे. जेव्हा सुट्टीची योजना पूर्ण होते आणि मालकाने पुष्टी केली जाते, तेव्हा ती बुकिंगसह पुढे जाऊ शकते. + +हे करण्यासाठी, एजंट्सना **संवाद साधण्याची आवश्यकता आहे**. यशस्वी संवादासाठी त्यांना आवश्यक आहे: + +* **ज्ञानाची देवाणघेवाण करण्यासाठी मानक भाषा**, जसे की [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) आणि [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). या भाषा [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act) वर आधारित डिझाइन केल्या आहेत. +* या भाषांमध्ये **वाटाघाटींसाठी प्रोटोकॉल्स** असावेत, जे विविध **लिलाव प्रकारांवर** आधारित असतात. +* **सामान्य ऑंटोलॉजी** वापरण्यासाठी, जेणेकरून ते समान संकल्पनांचा संदर्भ देतात आणि त्यांचा अर्थ जाणून घेतात +* वेगवेगळे एजंट्स काय करू शकतात हे **शोधण्याचा मार्ग**, जो काही प्रकारच्या ऑंटोलॉजीवर आधारित असतो + +विचारशील एजंट्स प्रतिक्रियात्मक एजंट्सपेक्षा खूप अधिक जटिल असतात, कारण ते केवळ पर्यावरणातील बदलांना प्रतिसाद देत नाहीत, तर ते *कृती सुरू* करण्यास सक्षम असले पाहिजेत. विचारशील एजंट्ससाठी प्रस्तावित आर्किटेक्चरपैकी एक म्हणजे Belief-Desire-Intention (BDI) एजंट: + +* **Beliefs** एजंटच्या पर्यावरणाबद्दलच्या ज्ञानाचा संच तयार करतात. हे ज्ञान बेस किंवा नियमांच्या संचासारखे संरचित केले जाऊ शकते जे एजंट पर्यावरणातील विशिष्ट परिस्थितीवर लागू करू शकतो. +* **Desires** एजंट काय करायचे आहे ते परिभाषित करतात, म्हणजे त्याची उद्दिष्टे. उदाहरणार्थ, वरील वैयक्तिक सहाय्यक एजंटचे उद्दिष्ट टूर बुक करणे आहे, आणि हॉटेल एजंटचे उद्दिष्ट नफा वाढवणे आहे. +* **Intentions** विशिष्ट कृती आहेत ज्या एजंट त्याच्या उद्दिष्टे साध्य करण्यासाठी योजना करतो. कृती सामान्यतः पर्यावरण बदलतात आणि इतर एजंट्सशी संवाद साधतात. + +मल्टी-एजंट सिस्टीम्स तयार करण्यासाठी काही प्लॅटफॉर्म्स उपलब्ध आहेत, जसे की [JADE](https://jade.tilab.com/). [हा पेपर](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) मल्टी-एजंट प्लॅटफॉर्म्सचा आढावा घेतो, मल्टी-एजंट सिस्टीम्सचा थोडक्यात इतिहास आणि त्यांचे विविध वापर परिदृश्यांसह. + +## निष्कर्ष + +मल्टी-एजंट सिस्टीम्स अनेक वेगवेगळ्या स्वरूपात + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित केला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/mr/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..cb866efe --- /dev/null +++ b/translations/mr/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# NetLogo असाइनमेंट + +NetLogo च्या लायब्ररीतील एका मॉडेलचा वापर करून वास्तविक जीवनातील परिस्थितीचे शक्य तितके जवळून अनुकरण करा. एक चांगले उदाहरण म्हणजे Alternative Visualizations फोल्डरमधील Virus मॉडेलमध्ये बदल करून ते COVID-19 च्या प्रसाराचे मॉडेल कसे बनवता येईल हे दाखवणे. तुम्ही वास्तविक जीवनातील व्हायरल प्रसाराचे अनुकरण करणारे मॉडेल तयार करू शकता का? + +तुमचे काम दाखवा, एक प्रत जतन करा आणि मॉडेल वास्तविक जीवनातील परिस्थितीशी कसे जोडलेले आहे हे स्पष्ट करणारा व्हिडिओ डेमो तयार करा. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/7-Ethics/README.md b/translations/mr/lessons/7-Ethics/README.md new file mode 100644 index 00000000..eea24dc1 --- /dev/null +++ b/translations/mr/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# नैतिक आणि जबाबदार AI + +तुम्ही हा कोर्स जवळजवळ पूर्ण केला आहे, आणि आता तुम्हाला स्पष्टपणे दिसत असेल की AI अनेक औपचारिक गणितीय पद्धतींवर आधारित आहे ज्यामुळे आपल्याला डेटामधील संबंध शोधता येतात आणि मानवी वर्तनाचे काही पैलू पुनरुत्पादित करण्यासाठी मॉडेल्स प्रशिक्षित करता येतात. या इतिहासाच्या टप्प्यावर, आम्ही AI ला डेटा मधून नमुने काढण्यासाठी आणि नवीन समस्या सोडवण्यासाठी त्या नमुन्यांचा उपयोग करण्यासाठी एक अत्यंत शक्तिशाली साधन मानतो. + +## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +तथापि, विज्ञानकथांमध्ये आपण अनेकदा कथा पाहतो जिथे AI मानवजातीसाठी धोका निर्माण करते. सहसा त्या कथा AI बंडखोरीच्या प्रकाराभोवती केंद्रित असतात, जिथे AI मानवांशी सामना करण्याचा निर्णय घेतो. याचा अर्थ असा की AI मध्ये काही प्रकारची भावना आहे किंवा त्याच्या विकसकांनी अपेक्षित केलेल्या निर्णयांपेक्षा वेगळे निर्णय घेऊ शकतो. + +या कोर्समध्ये आपण शिकलेला AI हा मोठ्या प्रमाणातील मॅट्रिक्स गणिताशिवाय काहीही नाही. हे आपल्याला आपली समस्या सोडवण्यासाठी मदत करणारे एक अत्यंत शक्तिशाली साधन आहे, आणि इतर कोणत्याही शक्तिशाली साधनासारखे - याचा चांगल्या आणि वाईट हेतूंसाठी उपयोग केला जाऊ शकतो. महत्त्वाचे म्हणजे, याचा *गैरवापर* होऊ शकतो. + +## जबाबदार AI चे तत्त्व + +AI चा अपघाती किंवा हेतुपुरस्सर गैरवापर टाळण्यासाठी, Microsoft ने महत्त्वाचे [जबाबदार AI चे तत्त्व](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) मांडले आहेत. खालील संकल्पना या तत्त्वांना आधार देतात: + +* **न्याय** हे *मॉडेल पक्षपात* या महत्त्वाच्या समस्येशी संबंधित आहे, जे प्रशिक्षणासाठी पक्षपाती डेटा वापरण्यामुळे होऊ शकते. उदाहरणार्थ, जेव्हा आपण एखाद्या व्यक्तीसाठी सॉफ्टवेअर डेव्हलपर नोकरी मिळवण्याची शक्यता अंदाज करण्याचा प्रयत्न करतो, तेव्हा मॉडेल पुरुषांना जास्त प्राधान्य देण्याची शक्यता असते - कारण प्रशिक्षण डेटासेट कदाचित पुरुष प्रेक्षकांकडे पक्षपाती असण्याची शक्यता असते. आपल्याला प्रशिक्षण डेटा काळजीपूर्वक संतुलित करणे आणि मॉडेल तपासणे आवश्यक आहे जेणेकरून पक्षपात टाळता येईल आणि मॉडेल अधिक संबंधित वैशिष्ट्यांचा विचार करते याची खात्री करावी. +* **विश्वसनीयता आणि सुरक्षितता**. त्यांच्या स्वभावानुसार, AI मॉडेल्स चुका करू शकतात. न्यूरल नेटवर्क संभाव्यता परत करते, आणि निर्णय घेताना आपल्याला त्याचा विचार करावा लागतो. प्रत्येक मॉडेलमध्ये काही अचूकता आणि पुनर्प्राप्ती असते, आणि चुकीच्या सल्ल्यामुळे होणारे नुकसान टाळण्यासाठी आपल्याला ते समजून घेणे आवश्यक आहे. +* **गोपनीयता आणि सुरक्षा** यामध्ये काही AI-विशिष्ट परिणाम आहेत. उदाहरणार्थ, जेव्हा आपण एखाद्या मॉडेलला प्रशिक्षण देण्यासाठी काही डेटा वापरतो, तेव्हा हा डेटा काही प्रमाणात मॉडेलमध्ये "एकत्रित" होतो. एका बाजूला, यामुळे सुरक्षा आणि गोपनीयता वाढते, तर दुसऱ्या बाजूला - आपल्याला लक्षात ठेवणे आवश्यक आहे की मॉडेल कोणत्या डेटावर प्रशिक्षित केले गेले आहे. +* **समावेशकता** याचा अर्थ आपण लोकांना बदलण्यासाठी AI तयार करत नाही, तर लोकांना वाढवण्यासाठी आणि आपले काम अधिक सर्जनशील बनवण्यासाठी तयार करतो. हे न्यायाशी संबंधित आहे, कारण जेव्हा अल्पसंख्याक समुदायांशी व्यवहार केला जातो, तेव्हा आपण गोळा केलेले बहुतेक डेटासेट पक्षपाती असण्याची शक्यता असते, आणि आपल्याला खात्री करावी लागते की त्या समुदायांचा समावेश केला जातो आणि AI द्वारे योग्य प्रकारे हाताळले जाते. +* **पारदर्शकता**. यामध्ये हे सुनिश्चित करणे समाविष्ट आहे की आपण नेहमी स्पष्टपणे सांगतो की AI वापरले जात आहे. तसेच, शक्य असल्यास, आपण *स्पष्टपणे समजण्यायोग्य* AI प्रणाली वापरण्याचा प्रयत्न करतो. +* **जबाबदारी**. जेव्हा AI मॉडेल्स काही निर्णय घेतात, तेव्हा त्या निर्णयांसाठी कोण जबाबदार आहे हे नेहमी स्पष्ट नसते. आपल्याला हे सुनिश्चित करणे आवश्यक आहे की AI निर्णयांची जबाबदारी कोठे आहे हे आपण समजतो. बहुतेक प्रकरणांमध्ये आपण महत्त्वाचे निर्णय घेण्याच्या प्रक्रियेत मानवी सहभाग समाविष्ट करू इच्छितो, जेणेकरून वास्तविक लोकांना जबाबदार ठरवले जाऊ शकते. + +## जबाबदार AI साठी साधने + +Microsoft ने [जबाबदार AI टूलबॉक्स](https://github.com/microsoft/responsible-ai-toolbox) विकसित केला आहे ज्यामध्ये साधनांचा संच समाविष्ट आहे: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* जबाबदार AI डॅशबोर्ड ज्यामध्ये समाविष्ट आहे: + + - EconML - कारणात्मक विश्लेषणासाठी साधन, जे "काय-जर" प्रश्नांवर लक्ष केंद्रित करते + - DiCE - प्रतिकूल विश्लेषणासाठी साधन जे तुम्हाला मॉडेलच्या निर्णयावर परिणाम करण्यासाठी कोणती वैशिष्ट्ये बदलणे आवश्यक आहे हे पाहण्याची परवानगी देते + +AI नैतिकतेबद्दल अधिक माहितीसाठी, कृपया मशीन लर्निंग अभ्यासक्रमातील [हा धडा](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) भेट द्या ज्यामध्ये असाइनमेंट्स समाविष्ट आहेत. + +## पुनरावलोकन आणि स्व-अभ्यास + +जबाबदार AI बद्दल अधिक जाणून घेण्यासाठी [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) घ्या. + +## [व्याख्यानानंतरची प्रश्नमंजुषा](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/README.md b/translations/mr/lessons/README.md new file mode 100644 index 00000000..f434ef3d --- /dev/null +++ b/translations/mr/lessons/README.md @@ -0,0 +1,17 @@ + +# आढावा + +![डूडलमधील आढावा](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.mr.png) + +> स्केच नोट: [Tomomi Imura](https://twitter.com/girlie_mac) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/X-Extras/X1-MultiModal/README.md b/translations/mr/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..4d110314 --- /dev/null +++ b/translations/mr/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# मल्टी-मोडल नेटवर्क्स + +NLP कार्यांसाठी ट्रान्सफॉर्मर मॉडेल्सच्या यशानंतर, त्याच किंवा तत्सम आर्किटेक्चर संगणकीय दृष्टिकोन कार्यांसाठी लागू करण्यात आले. व्हिजन आणि नैसर्गिक भाषा क्षमता *एकत्र* करण्यासाठी मॉडेल्स तयार करण्याची वाढती आवड आहे. अशा प्रयत्नांपैकी एक OpenAI ने केला आहे, ज्याला CLIP आणि DALL.E म्हणतात. + +## कॉन्ट्रास्टिव इमेज प्री-ट्रेनिंग (CLIP) + +CLIP ची मुख्य कल्पना म्हणजे टेक्स्ट प्रॉम्प्ट्सची प्रतिमा सोबत तुलना करणे आणि प्रतिमा प्रॉम्प्टशी किती चांगली जुळते हे ठरवणे. + +![CLIP आर्किटेक्चर](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.mr.png) + +> *[या ब्लॉग पोस्ट](https://openai.com/blog/clip/) मधून चित्र* + +मॉडेल इंटरनेटवरून मिळवलेल्या प्रतिमा आणि त्यांच्या कॅप्शनवर प्रशिक्षित केले जाते. प्रत्येक बॅचसाठी, आम्ही N जोड्या (प्रतिमा, टेक्स्ट) घेतो आणि त्यांना काही व्हेक्टर प्रतिनिधित्वांमध्ये रूपांतरित करतो. + +त्या प्रतिनिधित्वांची एकमेकांशी जुळवाजुळव केली जाते. लॉस फंक्शनची व्याख्या एका जोडीत (उदा. I आणि T) संबंधित व्हेक्टरमधील कोसाइन समानता वाढवण्यासाठी आणि इतर सर्व जोड्यांमधील कोसाइन समानता कमी करण्यासाठी केली जाते. यामुळेच या दृष्टिकोनाला **कॉन्ट्रास्टिव** म्हणतात. + +CLIP मॉडेल/लायब्ररी [OpenAI GitHub](https://github.com/openai/CLIP) वर उपलब्ध आहे. हा दृष्टिकोन [या ब्लॉग पोस्ट](https://openai.com/blog/clip/) मध्ये वर्णन केला आहे आणि अधिक तपशीलवार [या पेपर](https://arxiv.org/pdf/2103.00020.pdf) मध्ये दिला आहे. + +एकदा हे मॉडेल प्री-ट्रेन झाले की, आपण त्याला प्रतिमांचा बॅच आणि टेक्स्ट प्रॉम्प्ट्सचा बॅच देऊ शकतो, आणि ते आपल्याला संभाव्यतेसह टेन्सर परत करेल. CLIP अनेक कार्यांसाठी वापरले जाऊ शकते: + +**प्रतिमा वर्गीकरण** + +समजा आपल्याला प्रतिमा वर्गीकृत करायच्या आहेत, जसे की मांजरी, कुत्रे आणि माणसे. अशा परिस्थितीत, आपण मॉडेलला एक प्रतिमा आणि टेक्स्ट प्रॉम्प्ट्सची मालिका देऊ शकतो: "*मांजरीचे चित्र*", "*कुत्र्याचे चित्र*", "*माणसाचे चित्र*". परिणामी 3 संभाव्यतेच्या व्हेक्टरमध्ये आपल्याला फक्त सर्वाधिक मूल्य असलेल्या निर्देशांक निवडायचा आहे. + +![प्रतिमा वर्गीकरणासाठी CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.mr.png) + +> *[या ब्लॉग पोस्ट](https://openai.com/blog/clip/) मधून चित्र* + +**टेक्स्ट-आधारित प्रतिमा शोध** + +आपण उलटही करू शकतो. जर आपल्याकडे प्रतिमांचा संग्रह असेल, तर आपण हा संग्रह मॉडेलला देऊ शकतो आणि एक टेक्स्ट प्रॉम्प्ट - यामुळे आपल्याला दिलेल्या प्रॉम्प्टशी सर्वाधिक जुळणारी प्रतिमा मिळेल. + +## ✍️ उदाहरण: [प्रतिमा वर्गीकरण आणि प्रतिमा शोधासाठी CLIP वापरणे](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP क्रियेत पाहण्यासाठी [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) नोटबुक उघडा. + +## VQGAN+CLIP सह प्रतिमा निर्मिती + +CLIP चा वापर टेक्स्ट प्रॉम्प्टवरून **प्रतिमा निर्मिती**साठी देखील केला जाऊ शकतो. हे करण्यासाठी, आपल्याला **जनरेटर मॉडेल** आवश्यक आहे जे काही व्हेक्टर इनपुटवर आधारित प्रतिमा तयार करू शकेल. अशा मॉडेल्सपैकी एक [VQGAN](https://compvis.github.io/taming-transformers/) (व्हेक्टर-क्वांटाइज्ड GAN) आहे. + +VQGAN च्या मुख्य कल्पना, ज्यामुळे ते सामान्य [GAN](../../4-ComputerVision/10-GANs/README.md) पासून वेगळे होते, खालीलप्रमाणे आहेत: +* ऑटोरेग्रेसिव ट्रान्सफॉर्मर आर्किटेक्चर वापरून संदर्भ-समृद्ध दृश्य भागांची अनुक्रमणिका तयार करणे जे प्रतिमा तयार करतात. हे दृश्य भाग [CNN](../../4-ComputerVision/07-ConvNets/README.md) द्वारे शिकले जातात. +* उप-प्रतिमा डिस्क्रिमिनेटर वापरणे जो प्रतिमेचे भाग "खरे" किंवा "खोटे" आहेत हे शोधतो (पारंपरिक GAN मध्ये "सर्व-किंवा-काहीही नाही" दृष्टिकोनाच्या विपरीत). + +VQGAN बद्दल अधिक जाणून घेण्यासाठी [Taming Transformers](https://compvis.github.io/taming-transformers/) वेबसाइटला भेट द्या. + +VQGAN आणि पारंपरिक GAN मधील एक महत्त्वाचा फरक म्हणजे पारंपरिक GAN कोणत्याही इनपुट व्हेक्टरवरून चांगली प्रतिमा तयार करू शकते, तर VQGAN कदाचित सुसंगत प्रतिमा तयार करणार नाही. त्यामुळे, प्रतिमा निर्मिती प्रक्रियेला पुढे मार्गदर्शन करणे आवश्यक आहे, आणि ते CLIP वापरून केले जाऊ शकते. + +![VQGAN+CLIP आर्किटेक्चर](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.mr.png) + +टेक्स्ट प्रॉम्प्टशी संबंधित प्रतिमा तयार करण्यासाठी, आपण काही रँडम एन्कोडिंग व्हेक्टरसह सुरुवात करतो जो VQGAN द्वारे प्रतिमा तयार करण्यासाठी पास केला जातो. नंतर CLIP चा वापर लॉस फंक्शन तयार करण्यासाठी केला जातो जो प्रतिमा टेक्स्ट प्रॉम्प्टशी किती चांगली जुळते हे दर्शवतो. त्यानंतर उद्दिष्ट म्हणजे हा लॉस कमी करणे, बॅक प्रोपोगेशन वापरून इनपुट व्हेक्टर पॅरामीटर्स समायोजित करणे. + +VQGAN+CLIP लागू करणारी एक उत्कृष्ट लायब्ररी [Pixray](http://github.com/pixray/pixray) आहे. + +![Pixray द्वारे तयार केलेले चित्र](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.mr.png) | ![Pixray द्वारे तयार केलेले चित्र](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.mr.png) | ![Pixray द्वारे तयार केलेले चित्र](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.mr.png) +----|----|---- +प्रॉम्प्ट *साहित्याच्या तरुण पुरुष शिक्षकाचा जलरंग पोर्ट्रेट जवळून* वरून तयार केलेले चित्र | प्रॉम्प्ट *संगणक विज्ञानाच्या तरुण महिला शिक्षकाचा तेल पोर्ट्रेट जवळून* वरून तयार केलेले चित्र | प्रॉम्प्ट *गणिताच्या वृद्ध पुरुष शिक्षकाचा तेल पोर्ट्रेट जवळून* वरून तयार केलेले चित्र + +> **आर्टिफिशियल टीचर्स** संग्रहातील चित्रे [दिमित्री सॉश्निकोव्ह](http://soshnikov.com) यांच्याकडून + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E हे GPT-3 चे एक संस्करण आहे जे प्रॉम्प्ट्सवरून प्रतिमा तयार करण्यासाठी प्रशिक्षित केले गेले आहे. हे 12-बिलियन पॅरामीटर्ससह प्रशिक्षित केले गेले आहे. + +CLIP च्या विपरीत, DALL-E टेक्स्ट आणि प्रतिमा दोन्ही एकाच टोकन प्रवाहात प्राप्त करते. त्यामुळे, अनेक प्रॉम्प्ट्समधून, आपण टेक्स्टवर आधारित प्रतिमा तयार करू शकतो. + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL.E 1 आणि 2 मधील मुख्य फरक म्हणजे DALL-E 2 अधिक वास्तववादी प्रतिमा आणि कला तयार करते. + +DALL-E सह प्रतिमा निर्मितीचे उदाहरण: +![Pixray द्वारे तयार केलेले चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.mr.png) | ![Pixray द्वारे तयार केलेले चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.mr.png) | ![Pixray द्वारे तयार केलेले चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.mr.png) +----|----|---- +प्रॉम्प्ट *साहित्याच्या तरुण पुरुष शिक्षकाचा जलरंग पोर्ट्रेट जवळून* वरून तयार केलेले चित्र | प्रॉम्प्ट *संगणक विज्ञानाच्या तरुण महिला शिक्षकाचा तेल पोर्ट्रेट जवळून* वरून तयार केलेले चित्र | प्रॉम्प्ट *गणिताच्या वृद्ध पुरुष शिक्षकाचा तेल पोर्ट्रेट जवळून* वरून तयार केलेले चित्र + +## संदर्भ + +* VQGAN पेपर: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP पेपर: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/sketchnotes/LICENSE.md b/translations/mr/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..5f69c02b --- /dev/null +++ b/translations/mr/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,123 @@ + +अट्रिब्युशन-शेअरअलाइक 4.0 आंतरराष्ट्रीय + +======================================================================= + +क्रिएटिव कॉमन्स कॉर्पोरेशन ("क्रिएटिव कॉमन्स") कायदेशीर सल्ला देणारी संस्था नाही आणि कायदेशीर सेवा किंवा सल्ला प्रदान करत नाही. क्रिएटिव कॉमन्स सार्वजनिक परवाने वितरित करणे वकील-ग्राहक किंवा इतर संबंध निर्माण करत नाही. क्रिएटिव कॉमन्स त्याचे परवाने आणि संबंधित माहिती "जशी आहे" तत्त्वावर उपलब्ध करून देते. क्रिएटिव कॉमन्स त्याच्या परवान्यांबाबत, त्यांच्या अटी व शर्तींनुसार परवानाधीन कोणत्याही सामग्रीबाबत किंवा संबंधित माहितीबाबत कोणतीही हमी देत नाही. क्रिएटिव कॉमन्स त्याच्या वापरामुळे होणाऱ्या नुकसानीसाठी शक्य तितक्या प्रमाणात जबाबदारी नाकारते. + +क्रिएटिव कॉमन्स सार्वजनिक परवाने वापरणे + +क्रिएटिव कॉमन्स सार्वजनिक परवाने निर्माते आणि इतर हक्क धारकांना कॉपीराइट आणि खालील सार्वजनिक परवान्यांमध्ये निर्दिष्ट केलेल्या काही इतर हक्कांच्या अधीन असलेल्या मूळ साहित्यकृती आणि इतर सामग्री सामायिक करण्यासाठी वापरता येणाऱ्या अटी व शर्तींचा मानक संच प्रदान करतात. खालील विचार फक्त माहितीच्या उद्देशाने आहेत, ते संपूर्ण नाहीत आणि आमच्या परवान्यांचा भाग नाहीत. + + परवानाधारकांसाठी विचार: आमचे सार्वजनिक परवाने कॉपीराइट आणि काही इतर हक्कांद्वारे अन्यथा प्रतिबंधित सामग्रीचा सार्वजनिक वापर करण्याची परवानगी देण्यासाठी अधिकृत असलेल्या व्यक्तींसाठी वापरण्यासाठी आहेत. आमचे परवाने अपरिवर्तनीय आहेत. परवानाधारकांनी परवाना लागू करण्यापूर्वी निवडलेल्या परवान्याच्या अटी व शर्ती वाचून समजून घेतल्या पाहिजेत. परवानाधारकांनी परवाने लागू करण्यापूर्वी आवश्यक सर्व हक्क सुरक्षित केले पाहिजेत जेणेकरून अपेक्षेप्रमाणे सार्वजनिक सामग्री पुन्हा वापरू शकेल. परवानाधारकांनी परवान्याच्या अधीन नसलेल्या कोणत्याही सामग्रीवर स्पष्टपणे चिन्हांकित केले पाहिजे. यामध्ये इतर CC-परवानाधीन सामग्री किंवा कॉपीराइटच्या अपवाद किंवा मर्यादेअंतर्गत वापरलेली सामग्री समाविष्ट आहे. परवानाधारकांसाठी अधिक विचार: + wiki.creativecommons.org/Considerations_for_licensors + + सार्वजनिक व्यक्तींसाठी विचार: आमच्या सार्वजनिक परवान्यांपैकी एक वापरून, परवानाधारक परवानाधीन सामग्री निर्दिष्ट अटी व शर्तींनुसार वापरण्याची सार्वजनिक परवानगी देतो. परवानाधारकाची परवानगी कोणत्याही कारणास्तव आवश्यक नसल्यास - उदाहरणार्थ, कॉपीराइटच्या कोणत्याही लागू अपवाद किंवा मर्यादेमुळे - तर त्या वापरावर परवान्याद्वारे नियमन केले जात नाही. आमचे परवाने फक्त कॉपीराइट आणि परवानाधारकाला परवानगी देण्याचा अधिकार असलेल्या काही इतर हक्कांखाली परवान्या देतात. परवानाधीन सामग्रीचा वापर इतर कारणांमुळे अद्याप प्रतिबंधित असू शकतो, ज्यामध्ये इतरांना सामग्रीमध्ये कॉपीराइट किंवा इतर हक्क असणे समाविष्ट आहे. परवानाधारक विशेष विनंत्या करू शकतो, जसे की सर्व बदल चिन्हांकित किंवा वर्णन करण्याची विनंती करणे. जरी आमच्या परवान्यांद्वारे आवश्यक नसले तरी, तुम्हाला त्या विनंत्या वाजवी असल्यास त्याचा आदर करण्यासाठी प्रोत्साहित केले जाते. सार्वजनिक व्यक्तींसाठी अधिक विचार: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +क्रिएटिव कॉमन्स अट्रिब्युशन-शेअरअलाइक 4.0 आंतरराष्ट्रीय सार्वजनिक परवाना + +परवानाधीन हक्क (खाली परिभाषित) वापरताना, तुम्ही या क्रिएटिव कॉमन्स अट्रिब्युशन-शेअरअलाइक 4.0 आंतरराष्ट्रीय सार्वजनिक परवान्याच्या ("सार्वजनिक परवाना") अटी व शर्तींशी बांधील राहण्यास सहमती देता. या सार्वजनिक परवान्याचे करार म्हणून अर्थ लावला जाऊ शकतो अशा प्रमाणात, तुम्हाला या अटी व शर्ती स्वीकारल्याच्या विचारात परवानाधीन हक्क प्रदान केले जातात आणि परवानाधारक तुम्हाला या अटी व शर्तींनुसार परवानाधीन सामग्री उपलब्ध करून देण्याचे फायदे विचारात घेत तुम्हाला असे हक्क प्रदान करतो. + +विभाग 1 -- परिभाषा. + + a. अनुकूलित सामग्री म्हणजे कॉपीराइट आणि तत्सम हक्कांच्या अधीन असलेली सामग्री जी परवानाधीन सामग्रीवरून किंवा त्यावर आधारित आहे आणि ज्यामध्ये परवानाधीन सामग्री भाषांतरित, बदललेली, व्यवस्थापित, रूपांतरित किंवा अन्यथा सुधारित केली जाते अशा प्रकारे परवानाधारकाच्या कॉपीराइट आणि तत्सम हक्कांखाली परवानगी आवश्यक आहे. या सार्वजनिक परवान्याच्या उद्देशाने, जिथे परवानाधीन सामग्री संगीतकृती, सादरीकरण किंवा ध्वनी रेकॉर्डिंग आहे, तिथे परवानाधीन सामग्री हलत्या प्रतिमेसह वेळेच्या संबंधात समक्रमित केली जाते तेव्हा नेहमी अनुकूलित सामग्री तयार केली जाते. + + b. अडॅप्टरचा परवाना म्हणजे तुम्ही या सार्वजनिक परवान्याच्या अटी व शर्तींनुसार अनुकूलित सामग्रीमध्ये तुमच्या योगदानासाठी तुमच्या कॉपीराइट आणि तत्सम हक्क लागू करता. + + c. BY-SA सुसंगत परवाना म्हणजे creativecommons.org/compatiblelicenses येथे सूचीबद्ध परवाना, क्रिएटिव कॉमन्सद्वारे या सार्वजनिक परवान्याच्या मूलत: समतुल्य म्हणून मंजूर. + + d. कॉपीराइट आणि तत्सम हक्क म्हणजे कॉपीराइट आणि/किंवा कॉपीराइटशी जवळून संबंधित तत्सम हक्क ज्यामध्ये, मर्यादेशिवाय, सादरीकरण, प्रसारण, ध्वनी रेकॉर्डिंग आणि Sui Generis डेटाबेस हक्क, हक्क कसे लेबल केले जातात किंवा वर्गीकृत केले जातात याची पर्वा न करता. या सार्वजनिक परवान्याच्या उद्देशाने, विभाग 2(b)(1)-(2) मध्ये निर्दिष्ट केलेले हक्क कॉपीराइट आणि तत्सम हक्क नाहीत. + + e. प्रभावी तांत्रिक उपाय म्हणजे ते उपाय जे, योग्य अधिकाराच्या अनुपस्थितीत, 20 डिसेंबर 1996 रोजी स्वीकारलेल्या WIPO कॉपीराइट कराराच्या अनुच्छेद 11 अंतर्गत दायित्वे पूर्ण करणाऱ्या कायद्यांखाली टाळले जाऊ शकत नाहीत आणि/किंवा तत्सम आंतरराष्ट्रीय करार. + + f. अपवाद आणि मर्यादा म्हणजे योग्य वापर, योग्य व्यवहार आणि/किंवा कॉपीराइट आणि तत्सम हक्कांवरील कोणताही अपवाद किंवा मर्यादा जो परवानाधीन सामग्रीच्या तुमच्या वापरावर लागू होतो. + + g. परवाना घटक म्हणजे क्रिएटिव कॉमन्स सार्वजनिक परवान्याच्या नावात सूचीबद्ध परवाना गुणधर्म. या सार्वजनिक परवान्याचे परवाना घटक म्हणजे अट्रिब्युशन आणि शेअरअलाइक. + + h. परवानाधीन सामग्री म्हणजे कलात्मक किंवा साहित्यिक कृती, डेटाबेस किंवा इतर सामग्री ज्यावर परवानाधारकाने हा सार्वजनिक परवाना लागू केला आहे. + + i. परवानाधीन हक्क म्हणजे या सार्वजनिक परवान्याच्या अटी व शर्तींनुसार तुम्हाला प्रदान केलेले हक्क, जे परवानाधीन सामग्रीच्या तुमच्या वापरावर लागू होणाऱ्या सर्व कॉपीराइट आणि तत्सम हक्कांपुरते मर्यादित आहेत आणि जे परवानाधारक परवानाधीन करण्याचा अधिकार आहे. + + j. परवानाधारक म्हणजे या सार्वजनिक परवान्याखाली हक्क प्रदान करणारी व्यक्ती(व्यक्ती) किंवा संस्था(संस्था). + + k. शेअर म्हणजे पुनरुत्पादन, सार्वजनिक प्रदर्शन, सार्वजनिक सादरीकरण, वितरण, प्रसार, संवाद किंवा आयात यासारख्या परवानाधीन हक्कांखाली परवानगी आवश्यक असलेल्या कोणत्याही साधनाने किंवा प्रक्रियेद्वारे सार्वजनिक सामग्री प्रदान करणे आणि सार्वजनिक सामग्री उपलब्ध करणे ज्यामध्ये सार्वजनिक सदस्य सामग्रीवर प्रवेश करू शकतात. त्यांच्या निवडीच्या ठिकाणी आणि वेळी. + + l. Sui Generis डेटाबेस हक्क म्हणजे 11 मार्च 1996 रोजी डेटाबेसच्या कायदेशीर संरक्षणावर युरोपियन संसदेच्या आणि परिषदेच्या निर्देश 96/9/EC पासून कॉपीराइटशिवाय इतर हक्क, सुधारित आणि/किंवा यशस्वी, तसेच जगातील इतर मूलत: समतुल्य हक्क. + + m. तुम्ही म्हणजे या सार्वजनिक परवान्याखाली परवानाधीन हक्क वापरणारी व्यक्ती किंवा संस्था. तुमचे संबंधित अर्थ आहे. + +विभाग 2 -- व्याप्ती. + + a. परवाना अनुदान. + + 1. या सार्वजनिक परवान्याच्या अटी व शर्तींSubject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: +अधिकार, त्यानंतर ज्या डेटाबेसमध्ये तुम्हाला Sui Generis Database Rights आहेत (पण त्यातील वैयक्तिक सामग्री नाही) ते Adapted Material आहे, + +यामध्ये कलम 3(b) च्या उद्देशांसाठी समाविष्ट आहे; आणि +c. तुम्ही डेटाबेसची सर्व किंवा मोठ्या प्रमाणातील सामग्री शेअर करत असल्यास तुम्हाला कलम 3(a) मधील अटींचे पालन करावे लागेल. + +संदिग्धता टाळण्यासाठी, हे कलम 4 तुमच्या या सार्वजनिक परवान्याखालील जबाबदाऱ्या पूरक आहे आणि परवान्याचे अधिकार इतर कॉपीराइट आणि तत्सम अधिकार समाविष्ट करत असल्यास त्यांना बदलत नाही. + + +कलम 5 -- हमींचा त्याग आणि जबाबदारीची मर्यादा. + +a. परवानाधारकाने वेगळ्या प्रकारे काही उपक्रम घेतले नसल्यास, शक्य तितक्या प्रमाणात, परवानाधारक परवानाधीन सामग्री "जशी आहे" आणि "जशी उपलब्ध आहे" अशा स्वरूपात देते आणि परवानाधीन सामग्रीबाबत कोणत्याही प्रकारचे प्रतिनिधित्व किंवा हमी देत नाही, ते व्यक्त, अप्रत्यक्ष, वैधानिक किंवा इतर प्रकारचे असो. यामध्ये, मर्यादेशिवाय, शीर्षकाची हमी, विक्रीसाठी उपयुक्तता, विशिष्ट उद्देशासाठी उपयुक्तता, उल्लंघन न होणे, लपलेले किंवा इतर दोष नसणे, अचूकता, किंवा त्रुटींची उपस्थिती किंवा अनुपस्थिती, ज्ञात किंवा शोधण्यायोग्य असो किंवा नसो, यांचा समावेश आहे. जिथे हमींचा त्याग पूर्णतः किंवा अंशतः परवानगी नाही, तिथे हा त्याग तुमच्यावर लागू होणार नाही. + +b. शक्य तितक्या प्रमाणात, कोणत्याही परिस्थितीत परवानाधारक तुमच्याशी कोणत्याही कायदेशीर सिद्धांतावर (यामध्ये, मर्यादेशिवाय, निष्काळजीपणा) किंवा अन्यथा, या सार्वजनिक परवान्यामुळे किंवा परवानाधीन सामग्रीच्या वापरामुळे उद्भवणाऱ्या कोणत्याही थेट, विशेष, अप्रत्यक्ष, आकस्मिक, परिणामी, दंडात्मक, उदाहरणार्थ किंवा इतर नुकसान, खर्च, खर्च किंवा नुकसानासाठी जबाबदार राहणार नाही, जरी परवानाधारकाला अशा नुकसान, खर्च, खर्च किंवा नुकसानाची शक्यता सांगितली गेली असेल. जिथे जबाबदारीची मर्यादा पूर्णतः किंवा अंशतः परवानगी नाही, तिथे ही मर्यादा तुमच्यावर लागू होणार नाही. + +c. वरील हमींचा त्याग आणि जबाबदारीची मर्यादा शक्य तितक्या प्रमाणात पूर्णतः जबाबदारीचा त्याग आणि सर्व जबाबदारीचा नकार म्हणून जवळपासच्या स्वरूपात समजली जावी. + + +कलम 6 -- कालावधी आणि समाप्ती. + +a. हा सार्वजनिक परवाना येथे परवानाधीन कॉपीराइट आणि तत्सम अधिकारांच्या कालावधीसाठी लागू आहे. तथापि, जर तुम्ही या सार्वजनिक परवान्याचे पालन करण्यात अपयशी ठरलात, तर या सार्वजनिक परवान्याखाली तुमचे अधिकार आपोआप समाप्त होतात. + +b. जिथे कलम 6(a) अंतर्गत परवानाधीन सामग्री वापरण्याचा तुमचा अधिकार समाप्त झाला आहे, तो पुन्हा सुरू होतो: + +1. उल्लंघनाचा शोध लागल्यापासून 30 दिवसांच्या आत तो दुरुस्त केल्यास, उल्लंघन दुरुस्त झाल्याच्या तारखेला आपोआप; किंवा +2. परवानाधारकाच्या स्पष्ट पुनर्स्थापनाने. + +संदिग्धता टाळण्यासाठी, हे कलम 6(b) परवानाधारकाला तुमच्या या सार्वजनिक परवान्याच्या उल्लंघनांसाठी उपाय शोधण्याचा कोणताही अधिकार प्रभावित करत नाही. + +c. संदिग्धता टाळण्यासाठी, परवानाधारक वेगळ्या अटींवर किंवा अटींवर परवानाधीन सामग्री देऊ शकतो किंवा कोणत्याही वेळी परवानाधीन सामग्रीचे वितरण थांबवू शकतो; तथापि, असे केल्याने हा सार्वजनिक परवाना समाप्त होणार नाही. + +d. कलम 1, 5, 6, 7, आणि 8 या सार्वजनिक परवान्याच्या समाप्तीनंतरही लागू राहतात. + + +कलम 7 -- इतर अटी आणि शर्ती. + +a. परवानाधारक तुमच्याद्वारे संवाद साधलेल्या कोणत्याही अतिरिक्त किंवा वेगळ्या अटींनी किंवा शर्तींनी बांधले जाणार नाही, जोपर्यंत स्पष्टपणे सहमती दिली जात नाही. + +b. परवानाधीन सामग्रीबाबत येथे नमूद नसलेल्या कोणत्याही व्यवस्था, समजुती किंवा करार हे या सार्वजनिक परवान्याच्या अटी आणि शर्तींपासून वेगळे आणि स्वतंत्र आहेत. + + +कलम 8 -- व्याख्या. + +a. संदिग्धता टाळण्यासाठी, हा सार्वजनिक परवाना परवानाधीन सामग्रीचा कोणताही वापर जो कायदेशीरपणे परवान्याशिवाय केला जाऊ शकतो, कमी करणे, मर्यादित करणे, प्रतिबंध करणे किंवा अटी लादणे यासाठी समजला जाणार नाही किंवा समजला जाऊ नये. + +b. शक्य तितक्या प्रमाणात, जर या सार्वजनिक परवान्याचा कोणताही प्रावधान अंमलात आणण्यायोग्य मानला गेला नाही, तर तो अंमलात आणण्यायोग्य बनवण्यासाठी आवश्यक किमान प्रमाणात आपोआप सुधारित केला जाईल. जर प्रावधान सुधारित केले जाऊ शकत नसेल, तर ते या सार्वजनिक परवान्यापासून वेगळे केले जाईल, उर्वरित अटी आणि शर्तींच्या अंमलबजावणीवर परिणाम न करता. + +c. या सार्वजनिक परवान्याचा कोणताही अटी किंवा शर्ती माफ केली जाणार नाही आणि कोणत्याही अपयशाला सहमती दिली जाणार नाही जोपर्यंत परवानाधारकाने स्पष्टपणे सहमती दिली नाही. + +d. या सार्वजनिक परवान्यात काहीही परवानाधारक किंवा तुम्हाला लागू असलेल्या कोणत्याही विशेषाधिकार आणि प्रतिकारांवर मर्यादा किंवा त्याग म्हणून समजले जाणार नाही किंवा समजले जाऊ नये, यामध्ये कोणत्याही न्यायालयीन प्रक्रियेच्या अधिकारक्षेत्र किंवा प्राधिकरणापासून समाविष्ट आहे. + + +======================================================================= + +Creative Commons हे त्याच्या सार्वजनिक परवान्यांचे पक्षकार नाही. तथापि, Creative Commons त्याच्या सार्वजनिक परवान्यांपैकी एक परवाना त्याने प्रकाशित केलेल्या सामग्रीवर लागू करण्याचा निर्णय घेऊ शकते आणि अशा परिस्थितीत "परवानाधारक" मानले जाईल. Creative Commons सार्वजनिक परवान्यांचा मजकूर CC0 सार्वजनिक डोमेन समर्पण अंतर्गत सार्वजनिक डोमेनसाठी समर्पित आहे. सामग्री Creative Commons सार्वजनिक परवान्याखाली शेअर केली जाते हे सूचित करण्याच्या मर्यादित उद्देशासाठी किंवा creativecommons.org/policies येथे प्रकाशित केलेल्या Creative Commons धोरणांनुसार परवानगी दिल्याशिवाय, Creative Commons "Creative Commons" या ट्रेडमार्कचा किंवा Creative Commons चा कोणताही ट्रेडमार्क किंवा लोगो वापरण्याची परवानगी देत नाही, यामध्ये मर्यादेशिवाय, त्याच्या सार्वजनिक परवान्यांमध्ये कोणत्याही अनधिकृत बदलांसाठी किंवा परवानाधीन सामग्रीच्या वापराबाबत कोणत्याही व्यवस्था, समजुती किंवा करार यासाठी समाविष्ट आहे. संदिग्धता टाळण्यासाठी, हा परिच्छेद सार्वजनिक परवान्यांचा भाग नाही. + +Creative Commons शी संपर्क साधला जाऊ शकतो: creativecommons.org. + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही. \ No newline at end of file diff --git a/translations/mr/lessons/sketchnotes/README.md b/translations/mr/lessons/sketchnotes/README.md new file mode 100644 index 00000000..ff11e7d8 --- /dev/null +++ b/translations/mr/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +संपूर्ण अभ्यासक्रमाच्या स्केच नोट्स येथे डाउनलोड केल्या जाऊ शकतात. + +🎨 तयार केलेले: टोमोमी इमुरा (ट्विटर: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**अस्वीकरण**: +हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही. \ No newline at end of file diff --git a/translations/ne/README.md b/translations/ne/README.md new file mode 100644 index 00000000..d6fdbc50 --- /dev/null +++ b/translations/ne/README.md @@ -0,0 +1,155 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# सुरुवातीका लागि कृत्रिम बुद्धिमत्ता - एक पाठ्यक्रम + +|![ स्केच नोट [(@girlie_mac)](https://twitter.com/girlie_mac) द्वारा ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| सुरुवातीका लागि AI - _[@girlie_mac](https://twitter.com/girlie_mac) द्वारा स्केच नोट_ | + +**कृत्रिम बुद्धिमत्ता** (AI) को संसार अन्वेषण गर्नुहोस् हाम्रो १२ हप्ताको, २४ पाठको पाठ्यक्रमसँग! यसमा व्यावहारिक पाठहरू, क्विजहरू, र प्रयोगशालाहरू समावेश छन्। पाठ्यक्रम सुरुवातीका लागि उपयुक्त छ र TensorFlow र PyTorch जस्ता उपकरणहरू, साथै AI मा नैतिकता समेट्छ। + +## तपाईंले के सिक्नुहुनेछ + +**[पाठ्यक्रमको माइन्डम्याप](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +यस पाठ्यक्रममा, तपाईंले सिक्नुहुनेछ: + +* कृत्रिम बुद्धिमत्ताका विभिन्न दृष्टिकोणहरू, जसमा "पुरानो राम्रो" प्रतीकात्मक दृष्टिकोण **ज्ञान प्रतिनिधित्व** र तर्क ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)) समावेश छ। +* **न्यूरल नेटवर्कहरू** र **डीप लर्निङ**, जुन आधुनिक AI को केन्द्रमा छन्। हामी यी महत्त्वपूर्ण विषयहरूको अवधारणालाई दुई लोकप्रिय फ्रेमवर्कहरू - [TensorFlow](http://Tensorflow.org) र [PyTorch](http://pytorch.org) मा कोड प्रयोग गरेर चित्रण गर्नेछौं। +* छविहरू र पाठसँग काम गर्नका लागि **न्यूरल आर्किटेक्चरहरू**। हामी हालका मोडेलहरू समेट्नेछौं तर अत्याधुनिक मोडेलहरूमा केही कमी हुन सक्छ। +* कम लोकप्रिय AI दृष्टिकोणहरू, जस्तै **जेनेटिक एल्गोरिदमहरू** र **मल्टि-एजेन्ट प्रणालीहरू**। + +हामीले यस पाठ्यक्रममा समेट्ने छैनौं: + +> [यस पाठ्यक्रमका सबै अतिरिक्त स्रोतहरू हाम्रो Microsoft Learn संग्रहमा फेला पार्नुहोस्](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **व्यवसायमा AI को प्रयोग**। [व्यवसाय प्रयोगकर्ताहरूका लागि AI को परिचय](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) सिक्ने मार्ग Microsoft Learn मा लिनुहोस्, वा [AI व्यवसाय स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), [INSEAD](https://www.insead.edu/) सँगको सहकार्यमा विकसित। +* **क्लासिक मेसिन लर्निङ**, जुन हाम्रो [सुरुवातीका लागि मेसिन लर्निङ पाठ्यक्रम](http://github.com/Microsoft/ML-for-Beginners) मा राम्रोसँग वर्णन गरिएको छ। +* **[कग्निटिभ सर्भिसहरू](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** प्रयोग गरेर बनाइएका व्यावहारिक AI अनुप्रयोगहरू। यसका लागि, हामी तपाईंलाई Microsoft Learn मा [भिजन](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [प्राकृतिक भाषा प्रशोधन](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI सेवा प्रयोग गरेर जेनेरेटिभ AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** र अन्यका लागि मोड्युलहरू सुरु गर्न सिफारिस गर्छौं। +* **विशिष्ट मेसिन लर्निङ क्लाउड फ्रेमवर्कहरू**, जस्तै [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), वा [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)। [Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) र [Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) सिक्ने मार्गहरू प्रयोग गर्न विचार गर्नुहोस्। +* **कन्भर्सेशनल AI** र **च्याट बोटहरू**। छुट्टै [कन्भर्सेशनल AI समाधानहरू सिर्जना गर्नुहोस्](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) सिक्ने मार्ग छ, र तपाईं [यो ब्लग पोस्ट](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) मा थप विवरणका लागि सन्दर्भ गर्न सक्नुहुन्छ। +* **डीप लर्निङको गहिरो गणित**। यसका लागि, हामी [डीप लर्निङ](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) Ian Goodfellow, Yoshua Bengio र Aaron Courville द्वारा सिफारिस गर्छौं, जुन [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) मा अनलाइन उपलब्ध छ। + +_क्लाउडमा AI_ विषयहरूको कोमल परिचयका लागि, तपाईं [Azure मा कृत्रिम बुद्धिमत्तासँग सुरु गर्नुहोस्](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) सिक्ने मार्ग लिन विचार गर्न सक्नुहुन्छ। + +# सामग्री + +| | पाठ लिंक | PyTorch/Keras/TensorFlow | प्रयोगशाला | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [पाठ्यक्रम सेटअप](./lessons/0-course-setup/setup.md) | [तपाईंको विकास वातावरण सेटअप गर्नुहोस्](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI को परिचय**](./lessons/1-Intro/README.md) | | | +| 01 | [AI को परिचय र इतिहास](./lessons/1-Intro/README.md) | - | - | +| II | **प्रतीकात्मक AI** | +| 02 | [ज्ञान प्रतिनिधित्व र विशेषज्ञ प्रणालीहरू](./lessons/2-Symbolic/README.md) | [विशेषज्ञ प्रणालीहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [ओन्टोलोजी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[अवधारणा ग्राफ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**न्यूरल नेटवर्कहरूको परिचय**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [पर्सेप्ट्रोन](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [मल्टि-लेयर्ड पर्सेप्ट्रोन र हाम्रो आफ्नै फ्रेमवर्क सिर्जना गर्नुहोस्](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [फ्रेमवर्कहरूको परिचय (PyTorch/TensorFlow) र ओभरफिटिङ](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [प्रयोगशाला](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**कम्प्युटर भिजन**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure मा कम्प्युटर भिजन अन्वेषण गर्नुहोस्](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [कम्प्युटर भिजनको परिचय। OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [नोटबुक](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [प्रयोगशाला](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [कन्भोल्युसनल न्यूरल नेटवर्कहरू](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN आर्किटेक्चरहरू](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [प्रयोगशाला](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [पूर्व-प्रशिक्षित नेटवर्कहरू र ट्रान्सफर लर्निङ](./lessons/4-ComputerVision/08-TransferLearning/README.md) र [प्रशिक्षणका तरिकाहरू](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [प्रयोगशाला](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [अटोएनकोडरहरू र VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [जेनेरेटिभ एड्भर्सेरियल नेटवर्कहरू र कलात्मक शैली ट्रान्सफर](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [वस्तु पहिचान](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [प्रयोगशाला](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [सामान्य खण्डीकरण। U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**प्राकृतिक भाषा प्रशोधन**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azure मा प्राकृतिक भाषा प्रशोधन अन्वेषण गर्नुहोस्](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [पाठ प्रतिनिधित्व। Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [सामान्य शब्द एम्बेडिङहरू। Word2Vec र GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [भाषा मोडेलिङ। आफ्नै एम्बेडिङहरू प्रशिक्षण गर्नुहोस्](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [प्रयोगशाला](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [पुनरावर्ती न्यूरल नेटवर्कहरू](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [जेनेरेटिभ पुनरावर्ती नेटवर्कहरू](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [प्रयोगशाला](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ट्रान्सफर्मरहरू। BERT।](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [नामित इकाई पहिचान](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [प्रयोगशाला](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [ठूलो भाषा मोडेलहरू, प्रम्प्ट प्रोग्रामिङ र थोरै-शट कार्यहरू](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **अन्य AI प्रविधिहरू** || | +| 21 | [जेनेटिक एल्गोरिदमहरू](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [डीप रिइन्फोर्समेन्ट लर्निङ](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [प्रयोगशाला](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [बहु-एजेन्ट प्रणालीहरू](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI नैतिकता** | | | +| 24 | [AI नैतिकता र जिम्मेवार AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: जिम्मेवार AI सिद्धान्तहरू](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **थप सामग्रीहरू** | | | +| 25 | [बहु-मोडल नेटवर्कहरू, CLIP र VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## प्रत्येक पाठमा समावेश छ + +* पूर्व-पढाइ सामग्री +* कार्यान्वयन योग्य Jupyter नोटबुकहरू, जुन प्रायः फ्रेमवर्क (**PyTorch** वा **TensorFlow**) का लागि विशिष्ट हुन्छन्। कार्यान्वयन योग्य नोटबुकमा धेरै सैद्धान्तिक सामग्री पनि समावेश छ, त्यसैले विषयलाई बुझ्नको लागि तपाईंले कम्तीमा एउटा संस्करण (PyTorch वा TensorFlow) नोटबुक हेर्नुपर्छ। +* **प्रयोगशालाहरू** केही विषयहरूका लागि उपलब्ध छन्, जसले तपाईंलाई सिकेको सामग्रीलाई विशेष समस्यामा लागू गर्ने अवसर दिन्छ। +* केही खण्डहरूमा [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) मा सम्बन्धित विषयहरू समेट्ने लिंकहरू समावेश छन्। + +## सुरु गर्दै + +- हामीले तपाईंलाई विकास वातावरण सेटअप गर्न मद्दत गर्न [सेटअप पाठ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) तयार गरेका छौं। - शिक्षकहरूको लागि, हामीले [पाठ्यक्रम सेटअप पाठ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) पनि तयार गरेका छौं! +- [VSCode वा Codepace मा कोड कसरी चलाउने](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) हेर्नुहोस्। + +यी चरणहरू पालना गर्नुहोस्: + +रेपोजिटरी फोर्क गर्नुहोस्: यस पृष्ठको माथि-दायाँ कुनामा रहेको "Fork" बटनमा क्लिक गर्नुहोस्। + +रेपोजिटरी क्लोन गर्नुहोस्: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +यो रेपो पछि सजिलै फेला पार्नको लागि स्टार (🌟) गर्न नबिर्सनुहोस्। + +## अन्य सिक्नेहरूसँग भेट्नुहोस् + +हाम्रो [आधिकारिक AI Discord सर्भर](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) मा सामेल हुनुहोस् ताकि यस कोर्स लिने अन्य सिक्नेहरूसँग भेटघाट र नेटवर्क गर्न सक्नुहोस् र सहयोग प्राप्त गर्न सक्नुहोस्। + +यदि तपाईंलाई उत्पादन प्रतिक्रिया वा निर्माण गर्दा प्रश्नहरू छन् भने हाम्रो [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) मा जानुहोस्। + +## क्विजहरू +> **क्विजहरूको बारेमा एउटा नोट**: सबै क्विजहरू Quiz-app फोल्डरमा etc\quiz-app मा समावेश छन्। ती पाठहरूभित्रबाट लिंक गरिएका छन्। क्विज एपलाई स्थानीय रूपमा चलाउन वा Azure मा डिप्लोय गर्न सकिन्छ; `quiz-app` फोल्डरमा दिइएका निर्देशनहरू पालना गर्नुहोस्। ती क्रमशः स्थानीयकरण हुँदैछन्। +## सहयोग आवश्यक छ + +के तपाईंसँग सुझावहरू छन् वा कुनै हिज्जे वा कोड त्रुटि फेला पार्नुभएको छ? कृपया एउटा मुद्दा उठाउनुहोस् वा एउटा पुल अनुरोध सिर्जना गर्नुहोस्। + +## विशेष धन्यवाद + +* **✍️ मुख्य लेखक:** [Dmitry Soshnikov](http://soshnikov.com), पीएचडी +* **🔥 सम्पादक:** [Jen Looper](https://twitter.com/jenlooper), पीएचडी +* **🎨 स्केच नोट चित्रकार:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ क्विज सिर्जनाकर्ता:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 मुख्य योगदानकर्ता:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## अन्य पाठ्यक्रमहरू + +हाम्रो टोलीले अन्य पाठ्यक्रमहरू पनि उत्पादन गर्दछ! हेर्नुहोस्: + +- [सुरुवातीका लागि Generative AI](https://aka.ms/genai-beginners) +- [सुरुवातीका लागि Generative AI .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [JavaScript सँग Generative AI](https://github.com/microsoft/generative-ai-with-javascript) +- [Java सँग Generative AI](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [सुरुवातीका लागि AI](https://aka.ms/ai-beginners) +- [सुरुवातीका लागि डेटा विज्ञान](https://aka.ms/datascience-beginners) +- [सुरुवातीका लागि ML](https://aka.ms/ml-beginners) +- [सुरुवातीका लागि साइबर सुरक्षा](https://github.com/microsoft/Security-101) +- [सुरुवातीका लागि वेब विकास](https://aka.ms/webdev-beginners) +- [सुरुवातीका लागि IoT](https://aka.ms/iot-beginners) +- [सुरुवातीका लागि XR विकास](https://github.com/microsoft/xr-development-for-beginners) +- [एजेन्टिक प्रयोगका लागि GitHub Copilot मा महारत](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [C#/.NET विकासकर्ताहरूका लागि GitHub Copilot मा महारत](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [आफ्नै Copilot साहसिक यात्रा चयन गर्नुहोस्](https://github.com/microsoft/CopilotAdventures) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/SECURITY.md b/translations/ne/SECURITY.md new file mode 100644 index 00000000..b5e8a99b --- /dev/null +++ b/translations/ne/SECURITY.md @@ -0,0 +1,49 @@ + +## सुरक्षा + +माइक्रोसफ्टले आफ्ना सफ्टवेयर उत्पादन र सेवाहरूको सुरक्षा गम्भीरताका साथ लिन्छ, जसमा हाम्रो GitHub संगठनहरूद्वारा व्यवस्थापन गरिएका सबै स्रोत कोड रिपोजिटरीहरू समावेश छन्, जस्तै [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), र [हाम्रो GitHub संगठनहरू](https://opensource.microsoft.com/)। + +यदि तपाईंले माइक्रोसफ्टको स्वामित्वमा रहेका कुनै पनि रिपोजिटरीमा [माइक्रोसफ्टको सुरक्षा कमजोरीको परिभाषा](https://aka.ms/opensource/security/definition) अनुसार सुरक्षा कमजोरी फेला पार्नुभएको छ भने, कृपया तल उल्लेख गरिएको अनुसार हामीलाई रिपोर्ट गर्नुहोस्। + +## सुरक्षा समस्या रिपोर्ट गर्ने + +**कृपया सार्वजनिक GitHub इश्यूहरू मार्फत सुरक्षा कमजोरीहरू रिपोर्ट नगर्नुहोस्।** + +यसको सट्टा, कृपया माइक्रोसफ्ट सुरक्षा प्रतिक्रिया केन्द्र (MSRC) मा [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) मार्फत रिपोर्ट गर्नुहोस्। + +यदि तपाईंले लगइन नगरी रिपोर्ट गर्न चाहनुहुन्छ भने, [secure@microsoft.com](mailto:secure@microsoft.com) मा इमेल पठाउनुहोस्। यदि सम्भव छ भने, हाम्रो PGP कुञ्जी प्रयोग गरेर आफ्नो सन्देश इन्क्रिप्ट गर्नुहोस्; कृपया यसलाई [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey) बाट डाउनलोड गर्नुहोस्। + +तपाईंले २४ घण्टाभित्र प्रतिक्रिया प्राप्त गर्नुहुनेछ। यदि कुनै कारणले प्रतिक्रिया प्राप्त गर्न सक्नु भएन भने, कृपया इमेल मार्फत पुन: सम्पर्क गर्नुहोस् ताकि हामीले तपाईंको मूल सन्देश प्राप्त गरेको सुनिश्चित गर्न सकौं। थप जानकारी [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) मा फेला पार्न सकिन्छ। + +कृपया तल सूचीबद्ध जानकारी (जति सक्नुहुन्छ प्रदान गर्नुहोस्) समावेश गर्नुहोस् ताकि हामी सम्भावित समस्याको प्रकृति र दायरा राम्रोसँग बुझ्न सकौं: + + * समस्याको प्रकार (जस्तै बफर ओभरफ्लो, SQL इन्जेक्सन, क्रस-साइट स्क्रिप्टिङ, आदि) + * समस्याको प्रकट हुने स्रोत फाइलहरूको पूर्ण पथ + * प्रभावित स्रोत कोडको स्थान (ट्याग/ब्रान्च/कमिट वा प्रत्यक्ष URL) + * समस्या पुन: उत्पादन गर्न आवश्यक विशेष कन्फिगरेसन + * समस्या पुन: उत्पादन गर्न चरण-दर-चरण निर्देशनहरू + * प्रमाण-को-धारणा वा एक्सप्लोइट कोड (यदि सम्भव छ भने) + * समस्याको प्रभाव, जसमा आक्रमणकारीले समस्या कसरी दुरुपयोग गर्न सक्छ भन्ने विवरण + +यस जानकारीले तपाईंको रिपोर्टलाई छिटो प्राथमिकता दिन मद्दत गर्नेछ। + +यदि तपाईं बग बाउन्टीको लागि रिपोर्ट गर्दै हुनुहुन्छ भने, थप पूर्ण रिपोर्टहरूले उच्च बाउन्टी पुरस्कारमा योगदान गर्न सक्छ। कृपया हाम्रो [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) पृष्ठमा सक्रिय कार्यक्रमहरूको बारेमा थप विवरणका लागि जानुहोस्। + +## प्राथमिक भाषाहरू + +हामी सबै सञ्चार अंग्रेजीमा गर्न रुचाउँछौं। + +## नीति + +माइक्रोसफ्टले [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd) को सिद्धान्तलाई अनुसरण गर्दछ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/etc/CODE_OF_CONDUCT.md b/translations/ne/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..6c85ba30 --- /dev/null +++ b/translations/ne/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# माइक्रोसफ्ट ओपन सोर्स आचार संहिता + +यस परियोजनाले [माइक्रोसफ्ट ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) अपनाएको छ। + +स्रोतहरू: + +- [माइक्रोसफ्ट ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) +- [माइक्रोसफ्ट आचार संहिता FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- प्रश्न वा चिन्ताहरूका लागि [opencode@microsoft.com](mailto:opencode@microsoft.com) मा सम्पर्क गर्नुहोस् + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/etc/CONTRIBUTING.md b/translations/ne/etc/CONTRIBUTING.md new file mode 100644 index 00000000..53e79b1e --- /dev/null +++ b/translations/ne/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# योगदान गर्न + +यो परियोजनाले योगदान र सुझावहरूलाई स्वागत गर्दछ। अधिकांश योगदानहरूका लागि तपाईंले योगदानकर्ता लाइसेन्स सम्झौता (CLA) मा सहमति जनाउन आवश्यक छ, जसले तपाईंलाई अधिकार छ र वास्तवमै हामीलाई तपाईंको योगदान प्रयोग गर्न अधिकार दिन्छ। थप विवरणको लागि, https://cla.microsoft.com मा जानुहोस्। + +जब तपाईंले पुल अनुरोध पेश गर्नुहुन्छ, CLA-बोटले स्वचालित रूपमा निर्धारण गर्नेछ कि तपाईंलाई CLA प्रदान गर्न आवश्यक छ कि छैन र PR लाई उपयुक्त रूपमा सजाउनेछ (जस्तै, लेबल, टिप्पणी)। बोटले दिएको निर्देशनहरूलाई मात्र पालना गर्नुहोस्। तपाईंले यो सबै रिपोजिटरीहरूमा एकपटक मात्र गर्नुपर्नेछ जुन हाम्रो CLA प्रयोग गर्दछ। + +यो परियोजनाले [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) अपनाएको छ। थप जानकारीको लागि [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) हेर्नुहोस् वा [opencode@microsoft.com](mailto:opencode@microsoft.com) मा सम्पर्क गर्नुहोस् यदि तपाईंलाई थप प्रश्न वा टिप्पणीहरू छन् भने। + +# योगदानको खोजी गर्दै + +हामी हाल निम्न विषयहरूमा सक्रिय रूपमा योगदानको खोजी गर्दैछौं: + +- [ ] डीप रिइन्फोर्समेन्ट लर्निङमा खण्ड लेख्नुहोस् +- [ ] वस्तु पहिचानमा खण्ड + नोटबुक सुधार गर्नुहोस् +- [ ] PyTorch Lightning ([यो खण्डको लागि](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] नामित इकाई पहिचानमा खण्ड + नमूनाहरू लेख्नुहोस् +- [ ] [यो खण्डको लागि](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) हाम्रो आफ्नै एम्बेडिङहरू प्रशिक्षणका लागि नमूनाहरू सिर्जना गर्नुहोस् + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेजलाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/etc/Mindmap.md b/translations/ne/etc/Mindmap.md new file mode 100644 index 00000000..b7d173da --- /dev/null +++ b/translations/ne/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# एआई + +## [एआईको परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - एआईको परिभाषा + - एआईको इतिहास + - एआईमा अपनाइने विधिहरू + - माथिबाट तलसम्म/प्रतीकात्मक + - तलबाट माथिसम्म/न्यूरल + - विकासवादी + - समन्वयात्मक / उदयशील एआई + - [माइक्रोसफ्ट एआई बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [प्रतीकात्मक एआई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - ज्ञानको प्रतिनिधित्व + - [विशेषज्ञ प्रणालीहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [ओन्टोलोजीहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - सेमान्टिक वेब + +## [न्यूरल नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [पर्सेप्ट्रोन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [बहु-स्तरीय नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [फ्रेमवर्कहरूको परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [पाइटोर्च](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [टेन्सरफ्लो](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [ओभरफिटिङ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [कम्प्युटर भिजन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - एमएस लर्नमा + - [एआई फन्डामेन्टल्स: कम्प्युटर भिजन अन्वेषण गर्नुहोस्](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [पाइटोर्चसँग कम्प्युटर भिजन](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [टेन्सरफ्लोसँग कम्प्युटर भिजन](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [कम्प्युटर भिजनको परिचय। ओपनसीभी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [कन्भोल्युसनल नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [सीएनएन आर्किटेक्चरहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [ट्रान्सफर लर्निङ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [प्रशिक्षणका तरिकाहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [अटोइन्कोडरहरू र भीएईहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [जेनेरेटिभ एड्भर्सेरियल नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [स्टाइल ट्रान्सफर](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [वस्तु पहिचान](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [सेग्मेन्टेसन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [प्राकृतिक भाषा प्रशोधन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - एमएस लर्नमा + - [एआई फन्डामेन्टल्स: प्राकृतिक भाषा प्रशोधन अन्वेषण गर्नुहोस्](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [पाइटोर्चसँग एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [टेन्सरफ्लोसँग एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [पाठको प्रतिनिधित्व](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - बाग अफ वर्ड्स + - टीएफ/आईडीएफ + - [सेमान्टिक एम्बेडिङहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - वर्ड२भेक + - ग्लोभ + - [भाषा मोडलिङ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [पुनरावर्ती न्यूरल नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - एलएसटीएम + - जीआरयू + - [जेनेरेटिभ पुनरावर्ती नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ट्रान्सफर्मरहरू र बीईआरटी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [नामित इकाई पहिचान](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [पाठ उत्पादन र जीपीटी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## अन्य प्रविधिहरू + - [जेनेटिक एल्गोरिदमहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [डिप रिइन्फोर्समेन्ट लर्निङ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [बहु-एजेन्ट प्रणालीहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [एआई नैतिकता](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [उत्तरदायी एआईमा एमएस लर्न](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## अतिरिक्त + - [मल्टिमोडल नेटवर्कहरू](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [क्लिप](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - ड्याल-ई + - भीक्यू-जीएएन + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/etc/SUPPORT.md b/translations/ne/etc/SUPPORT.md new file mode 100644 index 00000000..8e0d6c25 --- /dev/null +++ b/translations/ne/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# समर्थन + +## समस्या दर्ता गर्ने र सहयोग प्राप्त गर्ने तरिका + +यो प्रोजेक्टले बगहरू र फिचर अनुरोधहरू ट्र्याक गर्न GitHub Issues प्रयोग गर्दछ। नयाँ समस्या दर्ता गर्नु अघि, दोहोरोपन रोक्नका लागि पहिले नै भएका समस्याहरू खोज्नुहोस्। नयाँ समस्याहरूको लागि, आफ्नो बग वा फिचर अनुरोधलाई नयाँ Issue को रूपमा दर्ता गर्नुहोस्। + +यस प्रोजेक्ट प्रयोग गर्दा सहयोग र प्रश्नहरूको लागि, कृपया Discussion Boards प्रयोग गर्नुहोस्। + +## माइक्रोसफ्ट समर्थन नीति + +यस प्रोजेक्टको लागि समर्थन माथि सूचीबद्ध स्रोतहरूमा मात्र सीमित छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/etc/TRANSLATIONS.md b/translations/ne/etc/TRANSLATIONS.md new file mode 100644 index 00000000..97fa84ae --- /dev/null +++ b/translations/ne/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# पाठहरू अनुवाद गरेर योगदान गर्नुहोस् + +हामी यस पाठ्यक्रमका पाठहरूको अनुवादलाई स्वागत गर्दछौं! + +## दिशानिर्देशहरू + +प्रत्येक पाठको फोल्डर र पाठ परिचय फोल्डरमा अनुवादित मार्कडाउन फाइलहरू समावेश छन्। + +> नोट गर्नुहोस्, कृपया कोड नमूनाका फाइलहरूमा कुनै पनि कोड अनुवाद नगर्नुहोस्; अनुवाद गर्नुपर्ने चीजहरू केवल README, असाइनमेन्टहरू, र क्विजहरू हुन्। धन्यवाद! + +अनुवादित फाइलहरूले निम्न नामकरण नियम पालना गर्नुपर्छ: + +**README._[language]_.md** + +जहाँ _[language]_ दुई अक्षरको भाषा संक्षेप हो, जुन ISO 639-1 मानक अनुसार हुन्छ (जस्तै `README.es.md` स्पेनिशका लागि र `README.nl.md` डचका लागि)। + +**assignment._[language]_.md** + +Readme जस्तै, कृपया असाइनमेन्टहरू पनि अनुवाद गर्नुहोस्। + +**क्विजहरू** + +1. आफ्नो अनुवादलाई क्विज-एपमा थप्न यहाँ फाइल थप्नुहोस्: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, सही नामकरण नियमको साथ (en.json, fr.json)। **कृपया 'true' वा 'false' शब्दहरूलाई स्थानीयकरण नगर्नुहोस्। धन्यवाद!** + +2. क्विज-एपको App.vue फाइलमा ड्रपडाउनमा आफ्नो भाषा कोड थप्नुहोस्। + +3. क्विज-एपको [translations index.js फाइल](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) सम्पादन गरेर आफ्नो भाषा थप्नुहोस्। + +4. अन्तमा, आफ्नो अनुवादित README.md फाइलहरूमा सबै क्विज लिंकहरूलाई सिधै आफ्नो अनुवादित क्विजमा संकेत गर्न सम्पादन गर्नुहोस्: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 लाई https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id मा परिवर्तन गर्नुहोस्। + +**धन्यवाद** + +हामी तपाईंको प्रयासलाई साँचो रूपमा सराहना गर्दछौं! + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/etc/quiz-app/README.md b/translations/ne/etc/quiz-app/README.md new file mode 100644 index 00000000..4820186f --- /dev/null +++ b/translations/ne/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# क्विजहरू + +यी क्विजहरू AI पाठ्यक्रमको लागि प्रि-र पोस्ट-लेक्चर क्विजहरू हुन् जुन https://aka.ms/ai-beginners मा उपलब्ध छ। + +## अनुवादित क्विज सेट थप्ने + +क्विज अनुवाद थप्न `assets/translations` फोल्डरमा मिल्दो क्विज संरचना सिर्जना गर्नुहोस्। मूल क्विजहरू `assets/translations/en` मा छन्। क्विजहरू पाठ अनुसार विभिन्न समूहमा विभाजित छन्। सही क्विज सेक्सनसँग नम्बरिङ मिलाउन सुनिश्चित गर्नुहोस्। यो पाठ्यक्रममा कुल ४० क्विजहरू छन्, जसको गणना ० बाट सुरु हुन्छ। + +अनुवादहरू सम्पादन गरेपछि, अनुवाद फोल्डरमा रहेको `index.js` फाइललाई `en` मा भएका नियमहरू पालना गर्दै सबै फाइलहरू आयात गर्न सम्पादन गर्नुहोस्। + +`assets/translations` मा रहेको `index.js` फाइललाई नयाँ अनुवादित फाइलहरू आयात गर्न सम्पादन गर्नुहोस्। + +त्यसपछि, यस एपमा रहेको `App.vue` मा ड्रपडाउन सम्पादन गरेर आफ्नो भाषा थप्नुहोस्। स्थानीयकृत संक्षेपलाई आफ्नो भाषाको फोल्डर नामसँग मिलाउनुहोस्। + +अन्तमा, अनुवादित पाठहरूमा रहेका सबै क्विज लिंकहरू, यदि छन् भने, यस स्थानीयकरणलाई क्वेरी प्यारामिटरको रूपमा समावेश गर्न सम्पादन गर्नुहोस्: उदाहरणका लागि `?loc=fr`। + +## परियोजना सेटअप + +``` +npm install +``` + +### विकासको लागि कम्पाइल र हॉट-रिलोड + +``` +npm run serve +``` + +### उत्पादनको लागि कम्पाइल र मिनिफाइ + +``` +npm run build +``` + +### फाइलहरू लिन्ट र फिक्स गर्नुहोस् + +``` +npm run lint +``` + +### कन्फिगरेसन अनुकूलन गर्नुहोस् + +[कन्फिगरेसन सन्दर्भ](https://cli.vuejs.org/config/) हेर्नुहोस्। + +क्रेडिट: यस क्विज एपको मूल संस्करणलाई धन्यवाद: https://github.com/arpan45/simple-quiz-vue + +## Azure मा डिप्लोय गर्नुहोस् + +यहाँ सुरु गर्नका लागि चरणबद्ध मार्गदर्शन छ: + +1. GitHub रिपोजिटरी फोर्क गर्नुहोस् +तपाईंको स्टाटिक वेब एप कोड GitHub रिपोजिटरीमा सुनिश्चित गर्नुहोस्। यस रिपोजिटरीलाई फोर्क गर्नुहोस्। + +2. Azure स्टाटिक वेब एप सिर्जना गर्नुहोस् +- [Azure खाता](http://azure.microsoft.com) सिर्जना गर्नुहोस्। +- [Azure पोर्टल](https://portal.azure.com) मा जानुहोस्। +- “Create a resource” मा क्लिक गर्नुहोस् र “Static Web App” खोज्नुहोस्। +- “Create” मा क्लिक गर्नुहोस्। + +3. स्टाटिक वेब एप कन्फिगर गर्नुहोस् +- #### आधारभूत: + - सब्सक्रिप्सन: आफ्नो Azure सब्सक्रिप्सन चयन गर्नुहोस्। + - रिसोर्स ग्रुप: नयाँ रिसोर्स ग्रुप सिर्जना गर्नुहोस् वा पहिलेको प्रयोग गर्नुहोस्। + - नाम: आफ्नो स्टाटिक वेब एपको लागि नाम प्रदान गर्नुहोस्। + - क्षेत्र: तपाईंको प्रयोगकर्ताहरू नजिकको क्षेत्र चयन गर्नुहोस्। + +- #### डिप्लोयमेन्ट विवरण: + - स्रोत: “GitHub” चयन गर्नुहोस्। + - GitHub खाता: Azure लाई तपाईंको GitHub खातामा पहुँच दिन अनुमति दिनुहोस्। + - संगठन: तपाईंको GitHub संगठन चयन गर्नुहोस्। + - रिपोजिटरी: तपाईंको स्टाटिक वेब एप समावेश भएको रिपोजिटरी चयन गर्नुहोस्। + - शाखा: तपाईंले डिप्लोय गर्न चाहेको शाखा चयन गर्नुहोस्। + +- #### बिल्ड विवरण: + - बिल्ड प्रिसेट्स: तपाईंको एप निर्माण गरिएको फ्रेमवर्क चयन गर्नुहोस् (जस्तै React, Angular, Vue आदि)। + - एप स्थान: तपाईंको एप कोड समावेश भएको फोल्डर निर्दिष्ट गर्नुहोस् (जस्तै, / यदि यो रूटमा छ)। + - API स्थान: यदि तपाईंको API छ भने, यसको स्थान निर्दिष्ट गर्नुहोस् (वैकल्पिक)। + - आउटपुट स्थान: बिल्ड आउटपुट उत्पन्न हुने फोल्डर निर्दिष्ट गर्नुहोस् (जस्तै, build वा dist)। + +4. समीक्षा र सिर्जना गर्नुहोस् +तपाईंको सेटिङहरू समीक्षा गर्नुहोस् र “Create” मा क्लिक गर्नुहोस्। Azure आवश्यक स्रोतहरू सेटअप गर्नेछ र तपाईंको रिपोजिटरीमा GitHub Actions वर्कफ्लो सिर्जना गर्नेछ। + +5. GitHub Actions वर्कफ्लो +Azure स्वचालित रूपमा तपाईंको रिपोजिटरीमा GitHub Actions वर्कफ्लो फाइल (.github/workflows/azure-static-web-apps-.yml) सिर्जना गर्नेछ। यो वर्कफ्लोले बिल्ड र डिप्लोयमेन्ट प्रक्रिया ह्यान्डल गर्नेछ। + +6. डिप्लोयमेन्ट अनुगमन गर्नुहोस् +तपाईंको GitHub रिपोजिटरीको “Actions” ट्याबमा जानुहोस्। +तपाईंले वर्कफ्लो चलिरहेको देख्नुहुनेछ। यो वर्कफ्लोले तपाईंको स्टाटिक वेब एप Azure मा निर्माण र डिप्लोय गर्नेछ। +वर्कफ्लो पूरा भएपछि, तपाईंको एप प्रदान गरिएको Azure URL मा लाइभ हुनेछ। + +### उदाहरण वर्कफ्लो फाइल + +यहाँ GitHub Actions वर्कफ्लो फाइल कस्तो देखिन सक्छ: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### थप स्रोतहरू +- [Azure Static Web Apps डकुमेन्टेशन](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions डकुमेन्टेशन](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/0-course-setup/for-teachers.md b/translations/ne/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..c04424d8 --- /dev/null +++ b/translations/ne/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# शिक्षकहरूका लागि + +के तपाईं यो पाठ्यक्रम आफ्नो कक्षामा प्रयोग गर्न चाहनुहुन्छ? कृपया निःसंकोच प्रयोग गर्नुहोस्! + +वास्तवमा, तपाईं यसलाई GitHub Classroom प्रयोग गरेर GitHub भित्रै प्रयोग गर्न सक्नुहुन्छ। + +त्यसका लागि, यो रिपोजिटरीलाई फोर्क गर्नुहोस्। तपाईंलाई प्रत्येक पाठका लागि छुट्टै रिपोजिटरी बनाउनुपर्नेछ, त्यसैले प्रत्येक फोल्डरलाई छुट्टै रिपोजिटरीमा निकाल्नुपर्नेछ। यसरी [GitHub Classroom](https://classroom.github.com/classrooms) ले प्रत्येक पाठलाई छुट्टै रूपमा समेट्न सक्छ। + +यी [पूर्ण निर्देशनहरू](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ले तपाईंलाई आफ्नो कक्षा कसरी सेटअप गर्ने भन्ने बारेमा जानकारी दिनेछ। + +## रिपोजिटरीलाई जस्ताको तस्तै प्रयोग गर्ने + +यदि तपाईं यो रिपोजिटरीलाई हालको अवस्थामा नै प्रयोग गर्न चाहनुहुन्छ, GitHub Classroom प्रयोग नगरी, त्यो पनि सम्भव छ। तपाईंले आफ्ना विद्यार्थीहरूसँग कुन पाठ सँगै काम गर्ने भनेर जानकारी दिनुपर्नेछ। + +अनलाइन ढाँचामा (Zoom, Teams, वा अन्य) तपाईं क्विजहरूको लागि ब्रेकआउट रूमहरू बनाउन सक्नुहुन्छ, र विद्यार्थीहरूलाई सिक्न तयार हुन मद्दत गर्न सक्नुहुन्छ। त्यसपछि विद्यार्थीहरूलाई क्विजहरूको लागि निमन्त्रणा गर्नुहोस् र उनीहरूको उत्तरहरू 'issues' को रूपमा निश्चित समयमा पेश गर्न भन्नुहोस्। यदि तपाईं चाहनुहुन्छ कि विद्यार्थीहरूले खुला रूपमा सहकार्य गरेर काम गरून्, तपाईं असाइनमेन्टहरू पनि यसरी गर्न सक्नुहुन्छ। + +यदि तपाईंलाई बढी निजी ढाँचा मनपर्छ भने, आफ्ना विद्यार्थीहरूलाई पाठ्यक्रमलाई पाठ-पाठ गरेर आफ्नै GitHub रिपोजिटरीहरूमा निजी रूपमा फोर्क गर्न भन्नुहोस्, र तपाईंलाई पहुँच दिन भन्नुहोस्। त्यसपछि उनीहरूले क्विज र असाइनमेन्टहरू निजी रूपमा पूरा गर्न सक्छन् र तपाईंलाई आफ्नो कक्षा रिपोजिटरीमा issues मार्फत पेश गर्न सक्छन्। + +अनलाइन कक्षा ढाँचामा यसलाई काम गर्नका लागि धेरै तरिकाहरू छन्। कृपया हामीलाई तपाईंका लागि कुन तरिका सबैभन्दा राम्रो काम गर्छ भनेर जानकारी दिनुहोस्! + +## कृपया हामीलाई आफ्नो विचार दिनुहोस् + +हामी यो पाठ्यक्रम तपाईं र तपाईंका विद्यार्थीहरूको लागि उपयोगी बनाउन चाहन्छौं। कृपया छलफल बोर्डहरूमा आफ्नो प्रतिक्रिया दिनुहोस्! + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/0-course-setup/how-to-run.md b/translations/ne/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..dd22de75 --- /dev/null +++ b/translations/ne/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# कोड कसरी चलाउने + +यो पाठ्यक्रममा धेरै चलाउन मिल्ने उदाहरणहरू र प्रयोगशालाहरू छन् जुन तपाईं चलाउन चाहनुहुन्छ। यसलाई गर्नको लागि, तपाईंलाई यो पाठ्यक्रमको भागको रूपमा प्रदान गरिएका Jupyter Notebooks मा Python कोड चलाउन सक्ने क्षमता चाहिन्छ। कोड चलाउनका लागि तपाईंसँग केही विकल्पहरू छन्: + +## आफ्नो कम्प्युटरमा स्थानीय रूपमा चलाउनुहोस् + +कोडलाई आफ्नो कम्प्युटरमा स्थानीय रूपमा चलाउनको लागि, तपाईंलाई Python को केही संस्करण स्थापना गर्न आवश्यक छ। म व्यक्तिगत रूपमा **[miniconda](https://conda.io/en/latest/miniconda.html)** स्थापना गर्न सिफारिस गर्छु - यो हल्का स्थापना हो जसले विभिन्न Python **भर्चुअल वातावरणहरू** को लागि `conda` प्याकेज प्रबन्धकलाई समर्थन गर्दछ। + +Miniconda स्थापना गरेपछि, तपाईंले रिपोजिटरी क्लोन गर्नुपर्नेछ र यो पाठ्यक्रमको लागि प्रयोग गर्न भर्चुअल वातावरण सिर्जना गर्नुपर्नेछ: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Visual Studio Code र Python Extension प्रयोग गर्दै + +शायद पाठ्यक्रम प्रयोग गर्ने सबैभन्दा राम्रो तरिका भनेको यसलाई [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) मा [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) सहित खोल्नु हो। + +> **Note**: जब तपाईं रिपोजिटरी क्लोन गरेर VS Code मा खोल्नुहुन्छ, यसले तपाईंलाई Python एक्सटेन्सन स्थापना गर्न सुझाव दिनेछ। तपाईंले माथि वर्णन गरिएको अनुसार Miniconda पनि स्थापना गर्नुपर्नेछ। + +> **Note**: यदि VS Code ले रिपोजिटरीलाई कन्टेनरमा पुनः खोल्न सुझाव दिन्छ भने, तपाईंले स्थानीय Python स्थापना प्रयोग गर्न यसलाई अस्वीकार गर्नुपर्नेछ। + +### ब्राउजरमा Jupyter प्रयोग गर्दै + +तपाईं आफ्नो कम्प्युटरमा ब्राउजरबाट Jupyter वातावरण पनि प्रयोग गर्न सक्नुहुन्छ। वास्तवमा, क्लासिकल Jupyter र Jupyter Hub दुवैले स्वतः-पूर्णता, कोड हाइलाइटिङ, आदि सहित धेरै सुविधाजनक विकास वातावरण प्रदान गर्छन्। + +स्थानीय रूपमा Jupyter सुरु गर्नको लागि, पाठ्यक्रमको डाइरेक्टरीमा जानुहोस् र निम्न आदेश चलाउनुहोस्: + +```bash +jupyter notebook +``` +वा +```bash +jupyterhub +``` +त्यसपछि तपाईं कुनै पनि `.ipynb` फाइलहरूमा नेभिगेट गर्न सक्नुहुन्छ, तिनीहरू खोल्न सक्नुहुन्छ र काम सुरु गर्न सक्नुहुन्छ। + +### कन्टेनरमा चलाउँदै + +Python स्थापना गर्ने अर्को विकल्प भनेको कोडलाई कन्टेनरमा चलाउनु हो। हाम्रो रिपोजिटरीमा विशेष `.devcontainer` फोल्डर समावेश छ जसले यस रिपोजिटरीको लागि कन्टेनर कसरी निर्माण गर्ने भनेर निर्देशन दिन्छ, त्यसैले VS Code ले तपाईंलाई कोडलाई कन्टेनरमा पुनः खोल्न प्रस्ताव गर्नेछ। यसले Docker स्थापना आवश्यक पर्नेछ, र यो अलि जटिल हुनेछ, त्यसैले हामी यसलाई अनुभवी प्रयोगकर्ताहरूलाई सिफारिस गर्छौं। + +## क्लाउडमा चलाउँदै + +यदि तपाईं Python स्थानीय रूपमा स्थापना गर्न चाहनुहुन्न, र केही क्लाउड स्रोतहरूमा पहुँच छ भने - क्लाउडमा कोड चलाउने राम्रो विकल्प हुनेछ। तपाईंले यसलाई गर्नका लागि केही तरिकाहरू छन्: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** प्रयोग गर्दै, जुन GitHub मा तपाईंको लागि सिर्जना गरिएको भर्चुअल वातावरण हो, VS Code ब्राउजर इन्टरफेस मार्फत पहुँचयोग्य। यदि तपाईंलाई Codespaces मा पहुँच छ भने, तपाईंले रिपोजिटरीमा **Code** बटन क्लिक गर्न सक्नुहुन्छ, Codespace सुरु गर्न सक्नुहुन्छ, र तुरुन्तै चलाउन सुरु गर्न सक्नुहुन्छ। +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** प्रयोग गर्दै। [Binder](https://mybinder.org) निःशुल्क कम्प्युटिङ स्रोत हो जुन GitHub मा केही कोड परीक्षण गर्न चाहने व्यक्तिहरूका लागि प्रदान गरिएको हो। फ्रन्ट पेजमा Binder मा रिपोजिटरी खोल्ने बटन छ - यसले तपाईंलाई छिट्टै Binder साइटमा लैजानेछ, जसले आधारभूत कन्टेनर निर्माण गर्नेछ र Jupyter वेब इन्टरफेसलाई सहज रूपमा सुरु गर्नेछ। + +> **Note**: दुरुपयोग रोक्नको लागि, Binder ले केही वेब स्रोतहरूमा पहुँच रोक्छ। यसले सार्वजनिक इन्टरनेटबाट मोडेलहरू र/वा डेटासेटहरू ल्याउने कोडलाई काम गर्न रोक्न सक्छ। तपाईंले केही वैकल्पिक उपायहरू खोज्नुपर्ने हुन सक्छ। साथै, Binder द्वारा प्रदान गरिएका कम्प्युटिङ स्रोतहरू धेरै आधारभूत छन्, त्यसैले प्रशिक्षण ढिलो हुनेछ, विशेष गरी पछि जटिल पाठहरूमा। + +## GPU सहित क्लाउडमा चलाउँदै + +यो पाठ्यक्रमका केही पछिल्ला पाठहरू GPU समर्थनबाट धेरै लाभान्वित हुनेछन्, किनभने अन्यथा प्रशिक्षण अत्यन्तै ढिलो हुनेछ। तपाईंले केही विकल्पहरू अनुसरण गर्न सक्नुहुन्छ, विशेष गरी यदि तपाईं [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) मार्फत, वा आफ्नो संस्थामार्फत क्लाउडमा पहुँच छ भने: + +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) सिर्जना गर्नुहोस् र Jupyter मार्फत यसमा जडान गर्नुहोस्। त्यसपछि तपाईंले रिपोजिटरीलाई सोही मेसिनमा क्लोन गर्न सक्नुहुन्छ र सिक्न सुरु गर्न सक्नुहुन्छ। NC-शृंखला VM हरूमा GPU समर्थन छ। + +> **Note**: केही सदस्यताहरू, Azure for Students सहित, GPU समर्थन स्वतः प्रदान गर्दैन। तपाईंले प्राविधिक समर्थन अनुरोध मार्फत थप GPU कोरहरू अनुरोध गर्नुपर्ने हुन सक्छ। + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) सिर्जना गर्नुहोस् र त्यहाँको Notebook सुविधा प्रयोग गर्नुहोस्। [यो भिडियो](https://azure-for-academics.github.io/quickstart/azureml-papers/) ले Azure ML Notebook मा रिपोजिटरी क्लोन गरेर प्रयोग गर्न सुरु गर्ने तरिका देखाउँछ। + +तपाईं Google Colab पनि प्रयोग गर्न सक्नुहुन्छ, जसले केही निःशुल्क GPU समर्थन प्रदान गर्दछ, र त्यहाँ Jupyter Notebooks अपलोड गरेर तिनीहरूलाई एक-एक गरेर चलाउन सक्नुहुन्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सही अनुवाद प्रदान गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/0-course-setup/setup.md b/translations/ne/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..c44438c1 --- /dev/null +++ b/translations/ne/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# यो पाठ्यक्रम सुरु गर्दै + +## के तपाईं विद्यार्थी हुनुहुन्छ? + +निम्न स्रोतहरूबाट सुरु गर्नुहोस्: + +* [विद्यार्थी हब पृष्ठ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) यस पृष्ठमा, तपाईंले प्रारम्भिक स्रोतहरू, विद्यार्थी प्याकहरू, र नि:शुल्क प्रमाणपत्र भौचर प्राप्त गर्ने तरिकाहरू पाउनुहुनेछ। यो एउटा पृष्ठ हो जुन तपाईंले बुकमार्क गर्न चाहनुहुन्छ र समय-समयमा जाँच गर्न चाहनुहुन्छ किनकि हामी कम्तीमा मासिक रूपमा सामग्री परिवर्तन गर्छौं। +* [माइक्रोसफ्ट विद्यार्थी लर्न एम्बेसडरहरू](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) विद्यार्थी एम्बेसडरहरूको विश्वव्यापी समुदायमा सामेल हुनुहोस्, यो माइक्रोसफ्टमा प्रवेश गर्ने तपाईंको तरिका हुन सक्छ। + +**विद्यार्थीहरू**, पाठ्यक्रम प्रयोग गर्ने केही तरिकाहरू छन्। पहिलो कुरा, तपाईंले पाठ पढ्न सक्नुहुन्छ र GitHub मा कोड हेर्न सक्नुहुन्छ। यदि तपाईं कुनै पनि नोटबुकहरूमा कोड चलाउन चाहनुहुन्छ भने - [हाम्रो निर्देशनहरू पढ्नुहोस्](./etc/how-to-run.md), र यसलाई कसरी गर्ने भन्ने थप सल्लाह [यस ब्लग पोस्टमा](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) पाउनुहोस्। + +> **Note**: [यस पाठ्यक्रममा कोड कसरी चलाउने भन्ने निर्देशनहरू](./how-to-run.md) + +## आत्म-अध्ययन + +तर, यदि तपाईं यस पाठ्यक्रमलाई आत्म-अध्ययन परियोजनाको रूपमा लिन चाहनुहुन्छ भने, हामी सुझाव दिन्छौं कि तपाईंले सम्पूर्ण रिपोजिटरीलाई आफ्नो GitHub खातामा फोर्क गर्नुहोस् र अभ्यासहरू आफैं वा समूहसँग पूरा गर्नुहोस्: + +* प्रि-लेक्चर क्विजबाट सुरु गर्नुहोस्। +* लेक्चरको परिचयात्मक पाठ पढ्नुहोस्। +* यदि लेक्चरसँग थप नोटबुकहरू छन् भने, तिनीहरू पढ्दै र कोड चलाउँदै जानुहोस्। यदि TensorFlow र PyTorch दुवै नोटबुकहरू उपलब्ध छन् भने, तपाईं आफ्नो मनपर्ने फ्रेमवर्क रोज्न सक्नुहुन्छ। +* नोटबुकहरूमा प्रायः केही चुनौतीहरू हुन्छन् जसले तपाईंलाई कोडलाई अलिकति परिवर्तन गर्न र प्रयोग गर्न आवश्यक हुन्छ। +* पोस्ट-लेक्चर क्विज लिनुहोस्। +* यदि मोड्युलसँग प्रयोगशाला संलग्न छ भने - असाइनमेन्ट पूरा गर्नुहोस्। +* [चर्चा बोर्ड](https://github.com/microsoft/AI-For-Beginners/discussions) मा जानुहोस् र "प्रश्नहरू खुला रूपमा सिक्नुहोस्।" + +> थप अध्ययनको लागि, हामी यी [माइक्रोसफ्ट लर्न](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) मोड्युलहरू र सिक्ने मार्गहरू अनुसरण गर्न सिफारिस गर्छौं। + +**शिक्षकहरू**, हामीले [केही सुझावहरू समावेश गरेका छौं](/for-teachers.md) कि कसरी यो पाठ्यक्रम प्रयोग गर्ने। + +--- + +## शिक्षाशास्त्र + +हामीले यो पाठ्यक्रम निर्माण गर्दा दुई शिक्षाशास्त्रीय सिद्धान्तहरू रोजेका छौं: सुनिश्चित गर्नु कि यो **परियोजना-आधारित** हो र यसमा **बारम्बार क्विजहरू** समावेश छन्। + +सामग्री परियोजनासँग मेल खाने सुनिश्चित गरेर, प्रक्रिया विद्यार्थीहरूको लागि थप आकर्षक बनाइन्छ र अवधारणाहरूको सम्झना बढाइन्छ। साथै, कक्षाको अगाडि कम-स्तरीय क्विजले विद्यार्थीलाई विषय सिक्नको लागि उद्देश्य सेट गर्छ, जबकि कक्षापछि दोस्रो क्विजले थप सम्झना सुनिश्चित गर्छ। यो पाठ्यक्रम लचिलो र रमाइलो बनाउन डिजाइन गरिएको हो र पूर्ण वा आंशिक रूपमा लिन सकिन्छ। परियोजनाहरू साना सुरु हुन्छन् र १२ हप्ताको चक्रको अन्त्यसम्ममा क्रमशः जटिल बन्छन्। + +> **क्विजहरूको बारेमा नोट**: सबै क्विजहरू [यस एपमा](https://red-field-0a6ddfd03.1.azurestaticapps.net/) समावेश छन्, कुल ५० क्विजहरू प्रत्येकमा तीन प्रश्नहरू सहित। तिनीहरू पाठहरू भित्र लिंक गरिएका छन् तर क्विज एपलाई स्थानीय रूपमा चलाउन सकिन्छ; `etc/quiz-app` फोल्डरमा निर्देशनहरू पालना गर्नुहोस्। + +## अफलाइन पहुँच + +तपाईं [Docsify](https://docsify.js.org/#/) प्रयोग गरेर यो दस्तावेज अफलाइन चलाउन सक्नुहुन्छ। यस रिपोजिटरीलाई फोर्क गर्नुहोस्, [Docsify स्थापना गर्नुहोस्](https://docsify.js.org/#/quickstart) आफ्नो स्थानीय मेसिनमा, र त्यसपछि यस रिपोजिटरीको मूल फोल्डरमा `docsify serve` टाइप गर्नुहोस्। वेबसाइट तपाईंको localhost मा पोर्ट 3000 मा सेवा गरिनेछ: `localhost:3000`। पाठ्यक्रमको pdf [यस लिंकमा](../../../../lessons/0-course-setup/etc/pdf/readme.pdf) उपलब्ध छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/1-Intro/README.md b/translations/ne/lessons/1-Intro/README.md new file mode 100644 index 00000000..0e16bbe2 --- /dev/null +++ b/translations/ne/lessons/1-Intro/README.md @@ -0,0 +1,163 @@ + +# एआईको परिचय + +![एआईको परिचयको सामग्रीको डूडलमा सारांश](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ne.png) + +> स्केच नोट [टोमोमी इमुरा](https://twitter.com/girlie_mac) द्वारा + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**कृत्रिम बुद्धिमत्ता (AI)** एउटा रोमाञ्चक वैज्ञानिक क्षेत्र हो जसले कम्प्युटरलाई बुद्धिमानी व्यवहार देखाउन कसरी सक्षम बनाउने भन्ने अध्ययन गर्दछ, जस्तै ती कार्यहरू जुन मानिसहरू गर्नमा कुशल हुन्छन्। + +सुरुमा, कम्प्युटरहरू [चार्ल्स बैबेज](https://en.wikipedia.org/wiki/Charles_Babbage) द्वारा संख्याहरूमा काम गर्न र एक निश्चित प्रक्रिया - एल्गोरिदम - अनुसरण गर्न आविष्कार गरिएको थियो। आधुनिक कम्प्युटरहरू, यद्यपि १९औं शताब्दीमा प्रस्तावित मोडेलभन्दा धेरै उन्नत छन्, अझै पनि नियन्त्रण गरिएको गणनाको उही विचार अनुसरण गर्छन्। त्यसैले, यदि हामीलाई कुनै लक्ष्य प्राप्त गर्न आवश्यक चरणहरूको ठ्याक्कै क्रम थाहा छ भने कम्प्युटरलाई कुनै कार्य गर्न प्रोग्राम गर्न सम्भव छ। + +![व्यक्तिको फोटो](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ne.png) + +> फोटो [भिक्की सोश्निकोभा](http://twitter.com/vickievalerie) द्वारा + +> ✅ व्यक्तिको फोटोबाट उसको उमेर निर्धारण गर्नु एउटा यस्तो कार्य हो जसलाई स्पष्ट रूपमा प्रोग्राम गर्न सकिँदैन, किनभने हामीले यो कार्य गर्दा हाम्रो दिमागमा संख्या कसरी आउँछ भन्ने थाहा छैन। + +--- + +तर, केही कार्यहरू छन् जसलाई हामीले कसरी समाधान गर्ने भनेर स्पष्ट रूपमा थाहा छैन। व्यक्तिको फोटोबाट उमेर निर्धारण गर्ने कुरा विचार गर्नुहोस्। हामीले यो गर्न सिक्छौं, किनभने हामीले विभिन्न उमेरका मानिसहरूको धेरै उदाहरणहरू देखेका छौं, तर हामीले यो कसरी गर्छौं भनेर स्पष्ट रूपमा व्याख्या गर्न सक्दैनौं, न त हामीले कम्प्युटरलाई यो गर्न प्रोग्राम गर्न सक्छौं। यस्तै प्रकारका कार्यहरू **कृत्रिम बुद्धिमत्ता** (संक्षेपमा AI) का लागि रुचिकर हुन्छन्। + +✅ सोच्नुहोस् केही यस्ता कार्यहरूको बारेमा जुन तपाईंले कम्प्युटरलाई जिम्मा दिन सक्नुहुन्छ र जसले AI बाट फाइदा लिन सक्छ। वित्त, चिकित्सा, र कला क्षेत्रहरूको बारेमा विचार गर्नुहोस् - यी क्षेत्रहरूले आज AI बाट कसरी फाइदा लिइरहेका छन्? + +## कमजोर एआई बनाम बलियो एआई + +कमजोर एआई | बलियो एआई +---------------------------------------|------------------------------------- +कमजोर एआई ती एआई प्रणालीहरूलाई जनाउँछ जुन विशेष कार्य वा सीमित कार्यहरूको लागि डिजाइन र प्रशिक्षित गरिएका हुन्छन्।|बलियो एआई, वा कृत्रिम सामान्य बुद्धिमत्ता (AGI), ती एआई प्रणालीहरूलाई जनाउँछ जसमा मानव-स्तरको बुद्धिमत्ता र बुझाइ हुन्छ। +यी एआई प्रणालीहरू सामान्य रूपमा बुद्धिमान हुँदैनन्; तिनीहरू पूर्वनिर्धारित कार्यमा उत्कृष्ट हुन्छन् तर साँचो बुझाइ वा चेतनाको अभाव हुन्छ।|यी एआई प्रणालीहरूले कुनै पनि बौद्धिक कार्य गर्न, विभिन्न क्षेत्रहरूमा अनुकूलन गर्न, र चेतना वा आत्म-जागरूकताको रूप लिन सक्छन्। +कमजोर एआईका उदाहरणहरूमा सिरि वा एलेक्सा जस्ता भर्चुअल सहायकहरू, स्ट्रिमिङ सेवाहरूद्वारा प्रयोग गरिने सिफारिस एल्गोरिदमहरू, र विशिष्ट ग्राहक सेवा कार्यहरूको लागि डिजाइन गरिएका च्याटबटहरू समावेश छन्।|बलियो एआई हासिल गर्नु एआई अनुसन्धानको दीर्घकालीन लक्ष्य हो र यसले एआई प्रणालीहरूलाई तर्क गर्न, सिक्न, बुझ्न, र फराकिलो कार्य र सन्दर्भहरूमा अनुकूलन गर्न आवश्यक पर्छ। +कमजोर एआई अत्यधिक विशेषज्ञ हुन्छ र यसको सीमित क्षेत्रमा मानव-जस्तै संज्ञानात्मक क्षमता वा सामान्य समस्या समाधान क्षमताहरू हुँदैन।|बलियो एआई हाल एक सैद्धान्तिक अवधारणा हो, र कुनै पनि एआई प्रणालीले यो स्तरको सामान्य बुद्धिमत्तामा पुग्न सकेको छैन। + +थप जानकारीको लागि **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) हेर्नुहोस्। + +## बुद्धिमत्ताको परिभाषा र ट्यूरिङ टेस्ट + +**[बुद्धिमत्ता](https://en.wikipedia.org/wiki/Intelligence)** शब्दसँग व्यवहार गर्दा एउटा समस्या यो हो कि यस शब्दको कुनै स्पष्ट परिभाषा छैन। कसैले तर्क गर्न सक्छ कि बुद्धिमत्ता **अमूर्त सोच** वा **आत्म-जागरूकता**सँग सम्बन्धित छ, तर हामी यसलाई सही रूपमा परिभाषित गर्न सक्दैनौं। + +![बिरालोको फोटो](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ne.jpg) + +> [फोटो](https://unsplash.com/photos/75715CVEJhI) [एम्बर किप](https://unsplash.com/@sadmax) द्वारा अनस्प्ल्यासबाट + +*बुद्धिमत्ता* शब्दको अस्पष्टता बुझ्नको लागि, यो प्रश्नको उत्तर दिन प्रयास गर्नुहोस्: "के बिरालो बुद्धिमान छ?" विभिन्न व्यक्तिहरूले यस प्रश्नको लागि फरक उत्तर दिन्छन्, किनभने यो दाबी सत्य हो वा होइन भनेर प्रमाणित गर्न कुनै सार्वभौमिक रूपमा स्वीकार्य परीक्षण छैन। र यदि तपाईंलाई लाग्छ कि छ - आफ्नो बिरालोलाई IQ परीक्षणमा चलाएर प्रयास गर्नुहोस्... + +✅ एक मिनेट सोच्नुहोस् कि तपाईं बुद्धिमत्तालाई कसरी परिभाषित गर्नुहुन्छ। के कुनै कागले भूलभुलैया समाधान गरेर खाना पाउँछ भने त्यो बुद्धिमान हो? के बच्चा बुद्धिमान छ? + +--- + +जब हामी AGI को बारेमा कुरा गर्छौं, हामीसँग कुनै तरिका हुनुपर्छ जसले हामीले साँच्चै बुद्धिमान प्रणाली सिर्जना गरेका छौं भनेर बताउन सक्छ। [एलन ट्यूरिङ](https://en.wikipedia.org/wiki/Alan_Turing) ले **[ट्यूरिङ टेस्ट](https://en.wikipedia.org/wiki/Turing_test)** नामक एउटा तरिका प्रस्ताव गरे, जसले बुद्धिमत्ताको परिभाषा जस्तै काम गर्छ। परीक्षणले दिइएको प्रणालीलाई केही स्वाभाविक रूपमा बुद्धिमान चीजसँग तुलना गर्छ - वास्तविक मानव, र किनभने कुनै पनि स्वचालित तुलना कम्प्युटर प्रोग्रामद्वारा बाइपास गर्न सकिन्छ, हामी मानव अन्वेषक प्रयोग गर्छौं। त्यसैले, यदि कुनै मानवले पाठ-आधारित संवादमा वास्तविक व्यक्ति र कम्प्युटर प्रणालीबीच भिन्नता छुट्याउन असमर्थ छ भने - प्रणालीलाई बुद्धिमान मानिन्छ। + +> [युजिन गुस्टम्यान](https://en.wikipedia.org/wiki/Eugene_Goostman) नामक च्याटबट, जुन सेन्ट पिटर्सबर्गमा विकास गरिएको थियो, २०१४ मा ट्यूरिङ टेस्ट पास गर्न नजिक पुगेको थियो। यसले एउटा चतुर व्यक्तित्व चाल प्रयोग गर्‍यो। यसले सुरुमा नै घोषणा गर्‍यो कि यो १३ वर्षको युक्रेनी केटा हो, जसले ज्ञानको अभाव र पाठमा केही असंगतताहरूलाई स्पष्ट पार्छ। बटले ३०% न्यायाधीशहरूलाई ५ मिनेटको संवादपछि यो मानव हो भनेर विश्वस्त गरायो, जुन मेट्रिक ट्यूरिङले २००० सम्ममा मेसिनले पास गर्न सक्ने विश्वास गरेका थिए। तर, यो बुझ्नुपर्छ कि यसले हामीले बुद्धिमान प्रणाली सिर्जना गरेका छौं भन्ने संकेत गर्दैन, वा कम्प्युटर प्रणालीले मानव अन्वेषकलाई मूर्ख बनाएको छ भन्ने होइन - प्रणालीले मानवलाई मूर्ख बनाएको होइन, बरु बट सिर्जनाकर्ताहरूले गरे! + +✅ के तपाईं कहिल्यै च्याटबटले तपाईंलाई मानवसँग कुरा गरिरहेको सोच्न मूर्ख बनाएको छ? यसले तपाईंलाई कसरी विश्वस्त गरायो? + +## एआईका विभिन्न दृष्टिकोणहरू + +यदि हामी चाहन्छौं कि कम्प्युटरले मानवजस्तै व्यवहार गरोस्, हामीले कुनै प्रकारले कम्प्युटरभित्र हाम्रो सोच्ने तरिकालाई मोडल गर्नुपर्छ। त्यसैले, हामीले बुझ्न प्रयास गर्नुपर्छ कि केले मानिसलाई बुद्धिमान बनाउँछ। + +> मेसिनमा बुद्धिमत्ता प्रोग्राम गर्न सक्षम हुन, हामीले हाम्रो आफ्नै निर्णय गर्ने प्रक्रियाहरू कसरी काम गर्छन् भन्ने बुझ्नुपर्छ। यदि तपाईंले अलिकति आत्म-विश्लेषण गर्नुहुन्छ भने, तपाईंले महसुस गर्नुहुनेछ कि केही प्रक्रियाहरू अवचेतन रूपमा हुन्छन् – जस्तै हामीले बिरालोलाई कुकुरबाट छुट्याउन सक्छौं बिना सोचेर - जबकि केही अन्यले तर्क समावेश गर्छन्। + +यस समस्याको दुई सम्भावित दृष्टिकोणहरू छन्: + +शीर्ष-तल दृष्टिकोण (प्रतीकात्मक तर्क) | तल्लो-तल दृष्टिकोण (न्यूरल नेटवर्क) +---------------------------------------|------------------------------------- +शीर्ष-तल दृष्टिकोणले व्यक्तिले समस्या समाधान गर्न तर्क गर्ने तरिकालाई मोडल गर्छ। यसमा मानवबाट **ज्ञान** निकाल्ने र यसलाई कम्प्युटर-पढ्न मिल्ने रूपमा प्रतिनिधित्व गर्ने समावेश छ। हामीले कम्प्युटरभित्र **तर्क** मोडल गर्ने तरिका पनि विकास गर्नुपर्छ। | तल्लो-तल दृष्टिकोणले मानव मस्तिष्कको संरचनालाई मोडल गर्छ, जसमा **न्यूरोनहरू** भनिने धेरै साधारण एकाइहरूको ठूलो संख्या हुन्छ। प्रत्येक न्यूरोनले यसको इनपुटहरूको भारित औसतको रूपमा काम गर्छ, र हामी न्यूरोनहरूको नेटवर्कलाई **प्रशिक्षण डेटा** प्रदान गरेर उपयोगी समस्याहरू समाधान गर्न प्रशिक्षण दिन सक्छौं। + +बुद्धिमत्ताका लागि अन्य सम्भावित दृष्टिकोणहरू पनि छन्: + +* **उद्भवशील**, **सिनर्जेटिक** वा **बहु-एजेन्ट दृष्टिकोण** जटिल बुद्धिमान व्यवहार धेरै साधारण एजेन्टहरूको अन्तरक्रियाबाट प्राप्त गर्न सकिन्छ भन्ने तथ्यमा आधारित छन्। [इभोल्युसनरी साइबरनेटिक्स](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) अनुसार, बुद्धिमत्ता *मेटासिस्टम ट्रान्जिसन* प्रक्रियामा थप साधारण, प्रतिक्रियात्मक व्यवहारबाट *उद्भव* हुन सक्छ। + +* **इभोल्युसनरी दृष्टिकोण**, वा **जेनेटिक एल्गोरिदम** विकासको सिद्धान्तमा आधारित अनुकूलन प्रक्रिया हो। + +हामी यी दृष्टिकोणहरूलाई पाठ्यक्रममा पछि विचार गर्नेछौं, तर अहिले हामी दुई मुख्य दिशाहरूमा केन्द्रित हुनेछौं: शीर्ष-तल र तल्लो-तल। + +### शीर्ष-तल दृष्टिकोण + +**शीर्ष-तल दृष्टिकोण**मा, हामी हाम्रो तर्कलाई मोडल गर्न प्रयास गर्छौं। किनभने हामी तर्क गर्दा हाम्रो विचारहरूलाई पछ्याउन सक्छौं, हामी यस प्रक्रियालाई औपचारिक बनाउन र यसलाई कम्प्युटरभित्र प्रोग्राम गर्न प्रयास गर्न सक्छौं। यसलाई **प्रतीकात्मक तर्क** भनिन्छ। + +मानिसहरूको टाउकोमा केही नियमहरू हुन्छन् जसले उनीहरूको निर्णय गर्ने प्रक्रियाहरूलाई मार्गदर्शन गर्छ। उदाहरणका लागि, जब डाक्टरले बिरामीको निदान गर्दैछन्, उनी वा उनले महसुस गर्न सक्छन् कि व्यक्तिलाई ज्वरो छ, र त्यसैले शरीरभित्र केही सूजन हुन सक्छ। कुनै विशिष्ट समस्यामा नियमहरूको ठूलो सेट लागू गरेर डाक्टरले अन्तिम निदानमा पुग्न सक्छ। + +यो दृष्टिकोण **ज्ञान प्रतिनिधित्व** र **तर्क**मा धेरै निर्भर गर्दछ। मानव विशेषज्ञबाट ज्ञान निकाल्नु सबैभन्दा कठिन भाग हुन सक्छ, किनभने धेरै अवस्थामा डाक्टरलाई थाहा हुँदैन कि उनी वा उनले विशेष निदानमा किन आइपुगेका छन्। कहिलेकाहीँ समाधान स्पष्ट सोच बिना नै उनको टाउकोमा आउँछ। केही कार्यहरू, जस्तै फोटोबाट व्यक्तिको उमेर निर्धारण, ज्ञान हेरफेरमा बिल्कुलै घटाउन सकिँदैन। + +### तल्लो-तल दृष्टिकोण + +वैकल्पिक रूपमा, हामी हाम्रो मस्तिष्कभित्रका सबैभन्दा साधारण तत्वहरू – न्यूरोनलाई मोडल गर्न प्रयास गर्न सक्छौं। हामी कम्प्युटरभित्र तथाकथित **कृत्रिम न्यूरल नेटवर्क** निर्माण गर्न सक्छौं, र त्यसपछि यसलाई उदाहरणहरू दिएर समस्याहरू समाधान गर्न सिकाउन प्रयास गर्न सक्छौं। यो प्रक्रिया नवजात शिशुले आफ्नो वरपरको वातावरणको बारेमा अवलोकन गरेर सिक्ने तरिकासँग मिल्दोजुल्दो छ। + +✅ शिशुहरूले कसरी सिक्छन् भन्ने बारेमा अलिकति अनुसन्धान गर्नुहोस्। शिशुको मस्तिष्कका आधारभूत तत्वहरू के हुन्? + +> | ML को बारेमा के? | | +> |--------------|-----------| +> | कृत्रिम बुद्धिमत्ताको त्यो भाग जसले केही डेटा आधारित समस्याहरू समाधान गर्न कम्प्युटरलाई सिकाउँछ, त्यसलाई **मेसिन लर्निङ** भनिन्छ। हामी यस पाठ्यक्रममा शास्त्रीय मेसिन लर्निङलाई विचार गर्नेछैनौं - हामी तपाईंलाई छुट्टै [मेसिन लर्निङ फर बिगिनर्स](http://aka.ms/ml-beginners) पाठ्यक्रममा सिफारिस गर्छौं। | ![ML फर बिगिनर्स](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ne.png) | + +## एआईको संक्षिप्त इतिहास + +कृत्रिम बुद्धिमत्ता २०औं शताब्दीको मध्यतिर एउटा क्षेत्रको रूपमा सुरु भएको थियो। सुरुमा, प्रतीकात्मक तर्क एक प्रमुख दृष्टिकोण थियो, र यसले विशेषज्ञ प्रणालीहरू जस्ता केही महत्त्वपूर्ण सफलताहरूलाई जन्म दियो – कम्प्युटर प्रोग्रामहरू जसले सीमित समस्या क्षेत्रहरूमा विशेषज्ञको रूपमा काम गर्न सक्षम थिए। तर, चाँडै यो स्पष्ट भयो कि यस्तो दृष्टिकोण राम्रोसँग विस्तार हुँदैन। विशेषज्ञबाट ज्ञान निकाल्नु, यसलाई कम्प्युटरमा प्रतिनिधित्व गर्नु, र त्यो ज्ञान आधारलाई सटीक राख्नु धेरै जटिल कार्य हो, र धेरै अवस्थामा व्यावहारिक रूपमा धेरै महँगो छ। यसले १९७० को दशकमा तथाकथित [एआई जाडो](https://en.wikipedia.org/wiki/AI_winter) ल्यायो। + +> छवि [दिमित्री सोश्निकोभ](http://soshnikov.com) द्वारा + +जसरी समय बित्दै गयो, कम्प्युटिङ स्रोतहरू सस्ता भए, र थप डेटा उपलब्ध भयो, न्यूरल नेटवर्क दृष्टिकोणहरूले धेरै क्षेत्रमा, जस्तै कम्प्युटर दृष्टि वा भाषण बुझाइमा, मानवसँग प्रतिस्पर्धा गर्न उत्कृष्ट प्रदर्शन देखाउन थाले। पछिल्लो दशकमा, कृत्रिम बुद्धिमत्ता शब्दलाई प्रायः न्यूरल नेटवर्कहरूको पर्यायवाचीको रूपमा प्रयोग गरिएको छ, किनभने हामीले सुन्ने अधिकांश एआई सफलताहरू तिनैमा आधारित छन्। + +हामीले कसरी दृष्टिकोणहरू परिवर्तन भए भनेर अवलोकन गर्न सक्छौं, उदाहरणका लागि, चेस खेल्ने कम्प्युटर प्रोग्राम सिर्जना गर्दा: + +* प्रारम्भिक चेस प्रोग्रामहरू खोजमा आधारित थिए – प्रोग्रामले निश्चित संख्याका चालहरूको लागि विपक्षीका सम्भावित चालहरूको अनुमान गर्न स्पष्ट रूपमा प्रयास गर्थ्यो, र केही चालहरूमा प्राप्त गर्न सकिने इष्टतम स्थितिमा आधारित इष्टतम चाल चयन गर्थ्यो। यसले तथाकथित [अल्फा-बेटा प्रूनिङ](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) खोज एल्गोरिदमको विकासलाई जन्म दियो। +* खोज रणनीतिहरू खेलको अन्त्यतिर राम्रोसँग काम गर्छन्, जहाँ खोज स्थान सीमित सम्भावित चालहरूको सानो संख्याद्वारा सीमित हुन्छ। तर, खेलको सुरुवातमा, खोज स्थान विशाल हुन्छ, र एल्गोरिदमलाई मानव खेलाडीहरू बीचको अवस्थित खेलहरूबाट सिकेर सुधार गर्न सकिन्छ। त्यसपछिका प्रयोगहरूले तथाकथित [केस-आधारित तर्क](https://en.wikipedia.org/wiki/Case-based_reasoning) प्रयोग गरे, जहाँ प्रोग्रामले खेलको वर्तमान स्थितिसँग धेरै मिल्दोजुल्दो केसहरू ज्ञान आधारमा खोज्थ्यो। +* आधुनिक प्रोग्रामहरू, जसले मानव खेलाडीहरूलाई जित्छन्, न्यूरल नेटवर्क र [प्रबलन शिक्षण](https://en.wikipedia.org/wiki/Reinforcement_learning)मा आधारित छन्, जहाँ प्रोग्रामहरूले केवल आफैंसँग लामो समयसम्म खेल खेलेर र आफ्नै गल्तीहरूबाट सिकेर खेल्न सिक्छन् – मानिसहरूले चेस खेल्न सिक्दा जस्तै। तर, कम्प्युटर प्रोग्रामले धेरै कम समयमा धेरै खेल खेल्न सक्छ, र यसैले धेरै छिटो सिक्न सक्छ। + +✅ एआईले खेलेका अन्य खेलहरूको बारेमा अलिकति अनुसन्धान गर्नुहोस्। + +त्यस्तै गरी, हामीले "बोल्ने प्रोग्रामहरू" (जसले ट्यूरिङ टेस्ट पास गर्न सक्छ) सिर्जना गर्ने दृष्टिकोण कसरी परिवर्तन भयो भनेर देख्न सक्छौं: + +* यस प्रकारका प्रारम्भिक प्रोग्रामहरू, जस्तै [एलिजा](https://en.wikipedia.org/wiki/ELIZA), धेरै साधारण व्याकरणीय नियमहरू र इनपुट वाक्यलाई प्रश्नमा पुनः-गठनमा आधारित थिए। +* आधुनिक सहायकहरू, जस्तै कोरटाना, सिरि वा गुगल असिस्टेन्ट सबै हाइब्रिड प्रणालीहरू हुन् जसले भाषणलाई पाठमा रूपान्तरण गर्न र हाम्रो उद्देश्यलाई पहिचान गर्न न्यूरल नेटवर्कहरू प्रयोग गर्छन्, र त्यसपछि आवश्यक कार्यहरू गर्न केही तर्क वा स्पष्ट एल्गोरिदमहरू प्रयोग गर्छन्। +* भविष्यमा, हामीले संवादलाई आफैंले ह्यान्डल गर्न पूर्ण न्यूरल-आधारित मोडेलको अपेक्षा गर्न सक्छौं। हालैका GPT र [ट्यूरिङ-NLG](https://turing.microsoft.com/) परिवारका न्यूरल नेटवर्कहरूले यसमा ठूलो सफलता देखाएका छन्। + +> Image by Dmitry Soshnikov, [photo](https://unsplash.com/photos/r8LmVbUKgns) by [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## हालको एआई अनुसन्धान + +न्यूरल नेटवर्क अनुसन्धानमा हालको ठूलो वृद्धि लगभग २०१० तिर सुरु भयो, जब ठूला सार्वजनिक डाटासेटहरू उपलब्ध हुन थाले। [ImageNet](https://en.wikipedia.org/wiki/ImageNet) नामक १४ मिलियन एनोटेटेड छविहरूको ठूलो संग्रहले [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) को जन्म दियो। + +![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Image by [Dmitry Soshnikov](http://soshnikov.com) + +२०१२ मा, छवि वर्गीकरणमा पहिलो पटक [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) प्रयोग गरियो, जसले वर्गीकरण त्रुटिहरूमा उल्लेखनीय कमी ल्यायो (लगभग ३०% बाट १६.४% सम्म)। २०१५ मा, Microsoft Research को ResNet आर्किटेक्चरले [मानव-स्तरको शुद्धता हासिल गर्‍यो](https://doi.org/10.1109/ICCV.2015.123)। + +त्यसपछि, न्यूरल नेटवर्कहरूले धेरै कार्यहरूमा धेरै सफल व्यवहार देखाएका छन्: + +--- + +वर्ष | मानव समानता हासिल गरियो +-----|-------- +२०१५ | [छवि वर्गीकरण](https://doi.org/10.1109/ICCV.2015.123) +२०१६ | [वार्तालापात्मक भाषण मान्यता](https://arxiv.org/abs/1610.05256) +२०१८ | [स्वचालित मेसिन अनुवाद](https://arxiv.org/abs/1803.05567) (चिनियाँ-देखि-अंग्रेजी) +२०२० | [छवि क्याप्शनिङ](https://arxiv.org/abs/2009.13682) + +पछिल्ला केही वर्षहरूमा, हामीले ठूला भाषा मोडेलहरू, जस्तै BERT र GPT-3, मा ठूलो सफलता देखेका छौं। यो मुख्यतया धेरै सामान्य पाठ डाटा उपलब्ध भएको कारणले सम्भव भएको हो, जसले मोडेलहरूलाई पाठको संरचना र अर्थलाई समात्न, सामान्य पाठ संग्रहहरूमा प्रि-ट्रेन गर्न, र ती मोडेलहरूलाई थप विशिष्ट कार्यहरूको लागि विशेषज्ञ बनाउन अनुमति दिन्छ। हामी यस पाठक्रममा पछि [Natural Language Processing](../5-NLP/README.md) को बारेमा थप सिक्नेछौं। + +## 🚀 चुनौती + +इन्टरनेटको भ्रमण गरेर तपाईंको विचारमा एआई सबैभन्दा प्रभावकारी रूपमा कहाँ प्रयोग भइरहेको छ भनेर निर्धारण गर्नुहोस्। के यो कुनै म्यापिङ एपमा हो, वा कुनै भाषण-देखि-पाठ सेवा वा भिडियो गेममा? प्रणाली कसरी निर्माण गरिएको थियो भनेर अनुसन्धान गर्नुहोस्। + +## [पोस्ट-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## समीक्षा र आत्म अध्ययन + +[यस पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) पढेर एआई र एमएलको इतिहासको समीक्षा गर्नुहोस्। उक्त पाठको शीर्षमा रहेको स्केच नोटबाट वा यस पाठबाट कुनै एउटा तत्व लिई यसको सांस्कृतिक सन्दर्भलाई बुझ्न थप गहिरो अनुसन्धान गर्नुहोस्। + +**असाइनमेन्ट**: [Game Jam](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/1-Intro/assignment.md b/translations/ne/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..ae54e1e1 --- /dev/null +++ b/translations/ne/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# गेम जम + +खेलहरू एक यस्तो क्षेत्र हो जसमा एआई र एमएलको विकासले ठूलो प्रभाव पारेको छ। यस असाइनमेन्टमा, तपाईंले आफूलाई मनपर्ने कुनै यस्तो खेलबारे छोटो लेख लेख्नुहोस् जसमा एआईको विकासले प्रभाव पारेको छ। यो खेल यति पुरानो हुनुपर्छ कि यसले विभिन्न प्रकारका कम्प्युटर प्रोसेसिङ प्रणालीहरूको प्रभाव अनुभव गरेको होस्। राम्रो उदाहरणहरूमा चेस वा गो पर्छन्, तर भिडियो गेमहरू जस्तै पोंग वा प्याक-म्यान पनि हेर्नुहोस्। लेखमा खेलको विगत, वर्तमान, र एआईको भविष्यबारे छलफल गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया जानकार रहनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/2-Symbolic/README.md b/translations/ne/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..8b95df11 --- /dev/null +++ b/translations/ne/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# ज्ञान प्रतिनिधित्व र विशेषज्ञ प्रणालीहरू + +![सिंबोलिक AI सामग्रीको सारांश](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ne.png) + +> स्केच नोट [टोमोमी इमुरा](https://twitter.com/girlie_mac) द्वारा + +कृत्रिम बुद्धिमत्ताको खोजी ज्ञानको खोजीमा आधारित छ, जसले संसारलाई मानिसहरूले जस्तै बुझ्न सक्ने बनाउँछ। तर, यो कसरी गर्ने? + +## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI को सुरुवाती दिनहरूमा, बौद्धिक प्रणालीहरू सिर्जना गर्नको लागि माथिबाट तल जाने दृष्टिकोण (अघिल्लो पाठमा छलफल गरिएको) लोकप्रिय थियो। विचार यो थियो कि मानिसहरूबाट ज्ञान निकालेर यसलाई मेसिनले पढ्न मिल्ने रूपमा रूपान्तरण गरिन्थ्यो, र त्यसपछि यसलाई स्वचालित रूपमा समस्याहरू समाधान गर्न प्रयोग गरिन्थ्यो। यो दृष्टिकोण दुई ठूला विचारहरूमा आधारित थियो: + +* ज्ञान प्रतिनिधित्व +* तर्क + +## ज्ञान प्रतिनिधित्व + +सिंबोलिक AI को महत्त्वपूर्ण अवधारणाहरू मध्ये एक हो **ज्ञान**। यो *जानकारी* वा *डाटा* बाट ज्ञानलाई फरक पार्न महत्त्वपूर्ण छ। उदाहरणका लागि, किताबहरूले ज्ञान समावेश गर्छन् भनेर भन्न सकिन्छ, किनभने किताबहरू अध्ययन गरेर विशेषज्ञ बन्न सकिन्छ। तर, किताबहरूले समावेश गर्ने कुरा वास्तवमा *डाटा* हो, र किताबहरू पढेर र यस डाटालाई हाम्रो संसारको मोडेलमा समाहित गरेर हामी यसलाई ज्ञानमा रूपान्तरण गर्छौं। + +> ✅ **ज्ञान** हाम्रो मस्तिष्कमा समावेश हुने कुरा हो र यसले संसारको हाम्रो बुझाइलाई प्रतिनिधित्व गर्छ। यो एक सक्रिय **अध्ययन** प्रक्रियाद्वारा प्राप्त हुन्छ, जसले हामीले प्राप्त गर्ने जानकारीका टुक्राहरूलाई हाम्रो सक्रिय संसारको मोडेलमा समाहित गर्छ। + +धेरैजसो अवस्थामा, हामी ज्ञानलाई कडाइका साथ परिभाषित गर्दैनौं, तर यसलाई [DIKW पिरामिड](https://en.wikipedia.org/wiki/DIKW_pyramid) प्रयोग गरेर अन्य सम्बन्धित अवधारणाहरूसँग मिलाउँछौं। यसमा निम्न अवधारणाहरू समावेश छन्: + +* **डाटा** भनेको भौतिक माध्यममा प्रतिनिधित्व गरिने कुरा हो, जस्तै लेखिएको पाठ वा बोलेका शब्दहरू। डाटा मानिसहरूबाट स्वतन्त्र रूपमा अस्तित्वमा रहन्छ र मानिसहरूबीच आदानप्रदान गर्न सकिन्छ। +* **जानकारी** भनेको हाम्रो मस्तिष्कमा डाटालाई कसरी व्याख्या गरिन्छ भन्ने हो। उदाहरणका लागि, जब हामी *कम्प्युटर* शब्द सुन्छौं, हामीसँग यसको के हो भन्ने केही बुझाइ हुन्छ। +* **ज्ञान** भनेको जानकारीलाई हाम्रो संसारको मोडेलमा समाहित गरिनु हो। उदाहरणका लागि, एकपटक हामीले कम्प्युटर के हो भनेर सिकेपछि, हामीसँग यसको काम गर्ने तरिका, यसको लागत, र यसको प्रयोगका सम्भावनाहरूको बारेमा केही विचारहरू हुन्छन्। यी आपसमा सम्बन्धित अवधारणाहरूको जालोले हाम्रो ज्ञान बनाउँछ। +* **बुद्धिमत्ता** भनेको संसारको हाम्रो बुझाइको अर्को स्तर हो, र यसले *मेटा-ज्ञान* प्रतिनिधित्व गर्छ, जस्तै ज्ञानलाई कसरी र कहिले प्रयोग गर्ने भन्ने धारणा। + +*Image [from Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* + +यसरी, **ज्ञान प्रतिनिधित्व** को समस्या भनेको कम्प्युटरभित्र ज्ञानलाई डाटाको रूपमा प्रतिनिधित्व गर्ने केही प्रभावकारी तरिका पत्ता लगाउनु हो, जसले यसलाई स्वचालित रूपमा प्रयोग गर्न मिल्ने बनाउँछ। यसलाई एक स्पेक्ट्रमको रूपमा हेर्न सकिन्छ: + +![ज्ञान प्रतिनिधित्व स्पेक्ट्रम](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ne.png) + +> छवि [दिमित्री सोश्निकोभ](http://soshnikov.com) द्वारा + +* बायाँतर्फ, त्यहाँ धेरै सरल प्रकारका ज्ञान प्रतिनिधित्वहरू छन् जसलाई कम्प्युटरहरूले प्रभावकारी रूपमा प्रयोग गर्न सक्छन्। सबैभन्दा सरल भनेको एल्गोरिदमिक हो, जहाँ ज्ञानलाई कम्प्युटर प्रोग्रामद्वारा प्रतिनिधित्व गरिन्छ। तर, यो ज्ञान प्रतिनिधित्व गर्ने सबैभन्दा राम्रो तरिका होइन, किनभने यो लचिलो छैन। हाम्रो मस्तिष्कभित्रको ज्ञान प्रायः गैर-एल्गोरिदमिक हुन्छ। +* दायाँतर्फ, त्यहाँ प्राकृतिक पाठ जस्ता प्रतिनिधित्वहरू छन्। यो सबैभन्दा शक्तिशाली हो, तर स्वचालित तर्कका लागि प्रयोग गर्न सकिँदैन। + +> ✅ एक मिनेट सोच्नुहोस् कि तपाईं आफ्नो मस्तिष्कमा ज्ञानलाई कसरी प्रतिनिधित्व गर्नुहुन्छ र यसलाई नोट्समा रूपान्तरण गर्नुहुन्छ। के कुनै विशेष ढाँचा छ जसले तपाईंलाई सम्झन सहयोग पुर्‍याउँछ? + +## कम्प्युटर ज्ञान प्रतिनिधित्व वर्गीकरण + +हामी कम्प्युटर ज्ञान प्रतिनिधित्वका विभिन्न विधिहरूलाई निम्न श्रेणीहरूमा वर्गीकृत गर्न सक्छौं: + +* **नेटवर्क प्रतिनिधित्वहरू** हाम्रो मस्तिष्कभित्र आपसमा सम्बन्धित अवधारणाहरूको नेटवर्क भएको तथ्यमा आधारित छन्। हामी कम्प्युटरभित्र समान नेटवर्कहरूलाई ग्राफको रूपमा पुन: उत्पादन गर्न सक्छौं - जसलाई **सामान्य नेटवर्क** भनिन्छ। + +1. **वस्तु-गुण-मान त्रिपलेटहरू** वा **गुण-मान जोडीहरू**। चूँकि ग्राफलाई कम्प्युटरभित्र नोड र किनारहरूको सूचीको रूपमा प्रतिनिधित्व गर्न सकिन्छ, हामी सामान्य नेटवर्कलाई वस्तु, गुण, र मानहरू समावेश गर्ने त्रिपलेटहरूको सूचीद्वारा प्रतिनिधित्व गर्न सक्छौं। उदाहरणका लागि, हामी प्रोग्रामिङ भाषाहरूको बारेमा निम्न त्रिपलेटहरू निर्माण गर्छौं: + +Object | Attribute | Value +-------|-----------|------ +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ सोच्नुहोस् कि त्रिपलेटहरूलाई अन्य प्रकारका ज्ञान प्रतिनिधित्व गर्न कसरी प्रयोग गर्न सकिन्छ। + +2. **पदानुक्रमीय प्रतिनिधित्वहरू** यस तथ्यलाई जोड दिन्छ कि हामी प्रायः हाम्रो मस्तिष्कभित्र वस्तुहरूको पदानुक्रम सिर्जना गर्छौं। उदाहरणका लागि, हामीलाई थाहा छ कि क्यानरी एउटा चरा हो, र सबै चराहरूको पखेटा हुन्छ। हामीसँग क्यानरीको सामान्यतया कस्तो रंग हुन्छ र यसको उडान गति कस्तो हुन्छ भन्ने केही विचार पनि हुन्छ। + + - **फ्रेम प्रतिनिधित्व** प्रत्येक वस्तु वा वस्तुहरूको वर्गलाई **फ्रेम** को रूपमा प्रतिनिधित्व गर्नमा आधारित छ, जसमा **स्लटहरू** हुन्छन्। स्लटहरूमा सम्भावित पूर्वनिर्धारित मानहरू, मान प्रतिबन्धहरू, वा स्लटको मान प्राप्त गर्न कल गर्न सकिने भण्डारित प्रक्रियाहरू हुन्छन्। सबै फ्रेमहरूले वस्तु-उन्मुख प्रोग्रामिङ भाषाहरूमा वस्तु पदानुक्रम जस्तै पदानुक्रम बनाउँछन्। + - **परिदृश्यहरू** समयक्रममा खुल्न सक्ने जटिल अवस्थाहरूलाई प्रतिनिधित्व गर्ने विशेष प्रकारका फ्रेमहरू हुन्। + +**Python** + +Slot | Value | Default value | Interval | +-----|-------|---------------|----------| +Name | Python | | | +Is-A | Untyped-Language | | | +Variable Case | | CamelCase | | +Program Length | | | 5-5000 lines | +Block Syntax | Indent | | | + +3. **प्रक्रियात्मक प्रतिनिधित्वहरू** ज्ञानलाई कार्यहरूको सूचीद्वारा प्रतिनिधित्व गर्नमा आधारित छन्, जुन कुनै निश्चित अवस्था हुँदा कार्यान्वयन गर्न सकिन्छ। + - उत्पादन नियमहरू if-then कथनहरू हुन् जसले हामीलाई निष्कर्ष निकाल्न अनुमति दिन्छ। उदाहरणका लागि, डाक्टरसँग यस्तो नियम हुन सक्छ: **यदि** बिरामीलाई उच्च ज्वरो छ **वा** रक्त परीक्षणमा C-प्रतिक्रियात्मक प्रोटिनको उच्च स्तर छ **तब** उसलाई सूजन छ। एकपटक हामीले अवस्थाहरू मध्ये एकलाई भेट्टायौं भने, हामी सूजनको बारेमा निष्कर्ष निकाल्न सक्छौं, र त्यसपछि यसलाई थप तर्कमा प्रयोग गर्न सक्छौं। + - एल्गोरिदमहरू प्रक्रियात्मक प्रतिनिधित्वको अर्को रूप मान्न सकिन्छ, यद्यपि तिनीहरूलाई ज्ञान-आधारित प्रणालीहरूमा प्रत्यक्ष रूपमा लगभग कहिल्यै प्रयोग गरिँदैन। + +4. **तर्क** मूल रूपमा अरस्तुले मानव ज्ञानलाई प्रतिनिधित्व गर्ने तरिका प्रस्ताव गरे। + - प्रेडिकेट तर्कलाई गणितीय सिद्धान्तको रूपमा कम्प्युटेबल बनाउन धेरै धनी छ, त्यसैले सामान्यतया यसको केही उपसमूह प्रयोग गरिन्छ, जस्तै Prolog मा प्रयोग गरिने Horn clauses। + - वर्णनात्मक तर्क वस्तुहरूको पदानुक्रमित वितरण गरिएको ज्ञान प्रतिनिधित्वहरू जस्तै *सामान्य वेब* को प्रतिनिधित्व र तर्क गर्न प्रयोग गरिने तर्क प्रणालीहरूको परिवार हो। + +## विशेषज्ञ प्रणालीहरू + +सिंबोलिक AI का प्रारम्भिक सफलताहरू मध्ये एक **विशेषज्ञ प्रणालीहरू** थिए - कम्प्युटर प्रणालीहरू जसलाई सीमित समस्या क्षेत्रमा विशेषज्ञको रूपमा कार्य गर्न डिजाइन गरिएको थियो। तिनीहरू **ज्ञान आधार** मा आधारित थिए, जुन एक वा बढी मानव विशेषज्ञहरूबाट निकालिएको थियो, र तिनीहरूमा **तर्क इन्जिन** थियो जसले यसमा केही तर्क प्रदर्शन गर्थ्यो। + +![मानव संरचना](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ne.png) | ![ज्ञान-आधारित प्रणालीको संरचना](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ne.png) +---------------------------------------------|------------------------------------------------ +मानव स्नायु प्रणालीको सरलीकृत संरचना | ज्ञान-आधारित प्रणालीको संरचना + +विशेषज्ञ प्रणालीहरू मानव तर्क प्रणाली जस्तै निर्माण गरिन्छ, जसमा **छोटो-समय स्मृति** र **दीर्घ-समय स्मृति** हुन्छ। त्यस्तै गरी, ज्ञान-आधारित प्रणालीहरूमा हामी निम्न घटकहरू छुट्याउँछौं: + +* **समस्या स्मृति**: हाल समाधान भइरहेको समस्याको बारेमा ज्ञान समावेश गर्दछ, जस्तै बिरामीको तापक्रम वा रक्तचाप, उसलाई सूजन छ कि छैन, आदि। यस ज्ञानलाई **स्थिर ज्ञान** पनि भनिन्छ, किनभने यसमा हामीले हालसम्म समस्याको बारेमा के थाहा छौं भन्ने स्न्यापशट समावेश हुन्छ - तथाकथित *समस्या अवस्था*। +* **ज्ञान आधार**: समस्या क्षेत्रको बारेमा दीर्घकालीन ज्ञान प्रतिनिधित्व गर्दछ। यो म्यानुअल रूपमा मानव विशेषज्ञहरूबाट निकालिन्छ, र परामर्शबाट परामर्शसम्म परिवर्तन हुँदैन। किनभने यसले हामीलाई एक समस्या अवस्थाबाट अर्कोमा नेभिगेट गर्न अनुमति दिन्छ, यसलाई **गतिशील ज्ञान** पनि भनिन्छ। +* **तर्क इन्जिन**: समस्या अवस्था स्थानमा खोजी गर्ने सम्पूर्ण प्रक्रियालाई समन्वय गर्दछ, आवश्यक पर्दा प्रयोगकर्तासँग प्रश्न सोध्छ। यो प्रत्येक अवस्थामा लागू गरिने सही नियमहरू फेला पार्न पनि जिम्मेवार छ। + +उदाहरणका लागि, भौतिक विशेषताहरूको आधारमा जनावर निर्धारण गर्ने निम्न विशेषज्ञ प्रणालीलाई विचार गरौं: + +![AND-OR ट्री](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ne.png) + +> छवि [दिमित्री सोश्निकोभ](http://soshnikov.com) द्वारा + +यस आरेखलाई **AND-OR ट्री** भनिन्छ, र यो उत्पादन नियमहरूको सेटको ग्राफिकल प्रतिनिधित्व हो। विशेषज्ञबाट ज्ञान निकाल्नको सुरुवातमा ट्री कोर्नु उपयोगी हुन्छ। कम्प्युटरभित्र ज्ञान प्रतिनिधित्व गर्न नियमहरू प्रयोग गर्नु अझ सुविधाजनक हुन्छ: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +तपाईंले देख्न सक्नुहुन्छ कि नियमको बायाँतर्फको प्रत्येक अवस्था र कार्य वस्तु-गुण-मान (OAV) त्रिपलेटहरू हुन्। **कार्यरत स्मृति** ले हाल समाधान भइरहेको समस्यासँग सम्बन्धित OAV त्रिपलेटहरूको सेट समावेश गर्दछ। **नियम इन्जिन** ले ती नियमहरूको खोजी गर्दछ जसको अवस्था पूरा भएको छ र तिनीहरूलाई लागू गर्दछ, कार्यरत स्मृतिमा अर्को त्रिपलेट थप्दै। + +> ✅ तपाईंले मनपर्ने विषयमा आफ्नो AND-OR ट्री लेख्नुहोस्! + +### अग्रगामी बनाम पछगामी तर्क + +माथि वर्णन गरिएको प्रक्रियालाई **अग्रगामी तर्क** भनिन्छ। यो कार्यरत स्मृतिमा उपलब्ध समस्याको प्रारम्भिक डाटाबाट सुरु हुन्छ, र त्यसपछि निम्न तर्क चक्र कार्यान्वयन गर्दछ: + +1. यदि लक्ष्य विशेषता कार्यरत स्मृतिमा छ भने - रोक्नुहोस् र परिणाम दिनुहोस् +2. ती सबै नियमहरूको खोजी गर्नुहोस् जसको अवस्था हाल पूरा भएको छ - नियमहरूको **संघर्ष सेट** प्राप्त गर्नुहोस्। +3. **संघर्ष समाधान** गर्नुहोस् - यस चरणमा कार्यान्वयन गरिने एक नियम चयन गर्नुहोस्। विभिन्न संघर्ष समाधान रणनीतिहरू हुन सक्छन्: + - ज्ञान आधारमा लागू गर्न मिल्ने पहिलो नियम चयन गर्नुहोस् + - कुनै यादृच्छिक नियम चयन गर्नुहोस् + - *अझ विशिष्ट* नियम चयन गर्नुहोस्, अर्थात् "बायाँतर्फ" (LHS) मा सबैभन्दा धेरै अवस्थाहरू पूरा गर्ने नियम +4. चयन गरिएको नियम लागू गर्नुहोस् र समस्या अवस्थामा नयाँ ज्ञानको टुक्रा समावेश गर्नुहोस् +5. चरण 1 बाट दोहोर्याउनुहोस्। + +तर, केही अवस्थामा हामी समस्याको बारेमा खाली ज्ञानबाट सुरु गर्न चाहन्छौं, र प्रश्नहरू सोध्न चाहन्छौं जसले हामीलाई निष्कर्षमा पुग्न मद्दत गर्दछ। उदाहरणका लागि, चिकित्सा निदान गर्दा, हामी बिरामीको निदान सुरु गर्नु अघि सबै चिकित्सा विश्लेषणहरू अग्रिम रूपमा प्रदर्शन गर्दैनौं। बरु, निर्णय लिन आवश्यक पर्दा विश्लेषण गर्न चाहन्छौं। + +यस प्रक्रियालाई **पछगामी तर्क** प्रयोग गरेर मोडेल गर्न सकिन्छ। यो **लक्ष्य** द्वारा प्रेरित हुन्छ - हामी पत्ता लगाउन खोजिरहेको विशेषता मान: + +1. लक्ष्यको मान दिन सक्ने सबै नियमहरू चयन गर्नुहोस् (अर्थात् लक्ष्य दायाँतर्फ (RHS) मा भएको नियमहरू) - एक संघर्ष सेट +1. यदि यस विशेषताको लागि कुनै नियम छैन, वा प्रयोगकर्ताबाट मान सोध्नुपर्ने नियम छ भने - सोध्नुहोस्, अन्यथा: +1. संघर्ष समाधान रणनीति प्रयोग गरेर हामीले *परिकल्पना* को रूपमा प्रयोग गर्ने एक नियम चयन गर्नुहोस् - हामी यसलाई प्रमाणित गर्न प्रयास गर्नेछौं +1. नियमको LHS मा सबै विशेषताहरूको लागि प्रक्रियालाई पुनरावृत्त रूपमा दोहोर्याउनुहोस्, तिनीहरूलाई लक्ष्यको रूपमा प्रमाणित गर्न प्रयास गर्दै +1. यदि कुनै पनि बिन्दुमा प्रक्रिया असफल हुन्छ भने - चरण 3 मा अर्को नियम प्रयोग गर्नुहोस्। + +> ✅ कुन अवस्थामा अग्रगामी तर्क उपयुक्त हुन्छ? पछगामी तर्कको बारेमा के भन्नुहुन्छ? + +### विशेषज्ञ प्रणालीहरू कार्यान्वयन गर्दै + +विशेषज्ञ प्रणालीहरू विभिन्न उपकरणहरू प्रयोग गरेर कार्यान्वयन गर्न सकिन्छ: + +* तिनीहरूलाई कुनै उच्च-स्तरीय प्रोग्रामिङ भाषामा प्रत्यक्ष रूपमा प्रोग्राम गर्नुहोस्। यो सबैभन्दा राम्रो विचार होइन, किनभने ज्ञान-आधारित प्रणालीको मुख्य फाइदा भनेको ज्ञान तर्कबाट अलग छ, र सम्भावित रूपमा समस्या क्षेत्र विशेषज्ञले तर्क प्रक्रियाको विवरण नबुझी नियमहरू लेख्न सक्षम हुनुपर्छ। +* **विशेषज्ञ प्रणाली खोल** प्रयोग गर्दै, अर्थात्, ज्ञान प्रतिनिधित्व भाषाको प्रयोग गरेर ज्ञानले भरिने गरी विशेष रूपमा डिजाइन गरिएको प्रणाली। + +## ✍️ अभ्यास: जनावर तर्क + +[Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) मा अग्रगामी र पछगामी तर्क विशेषज्ञ प्रणाली कार्यान्वयनको उदाहरण हेर्नुहोस्। +> **नोट**: यो उदाहरण धेरै सरल छ, र केवल विशेषज्ञ प्रणाली कस्तो देखिन्छ भन्ने विचार दिन्छ। जब तपाईं यस्तो प्रणाली बनाउन सुरु गर्नुहुन्छ, तपाईंले केही *बुद्धिमानी* व्यवहार मात्र देख्नुहुनेछ जब तपाईंले करिब २००+ नियमहरूमा पुग्नुहुन्छ। कुनै बिन्दुमा, नियमहरू धेरै जटिल हुन्छन् जसले गर्दा सबैलाई सम्झन गाह्रो हुन्छ, र यस बिन्दुमा तपाईं सोच्न थाल्न सक्नुहुन्छ कि प्रणालीले किन निश्चित निर्णयहरू लिन्छ। तर, ज्ञान-आधारित प्रणालीहरूको महत्त्वपूर्ण विशेषता भनेको तपाईंले सधैं *व्याख्या* गर्न सक्नुहुन्छ कि कुनै पनि निर्णयहरू कसरी गरिएका थिए। +## ओन्टोलोजीहरू र सेम्यान्टिक वेब + +२०औं शताब्दीको अन्त्यमा इन्टरनेट स्रोतहरूलाई ज्ञान प्रतिनिधित्व प्रयोग गरेर एनोटेट गर्ने पहल गरिएको थियो, जसले गर्दा धेरै विशिष्ट प्रश्नहरूको लागि स्रोतहरू फेला पार्न सम्भव हुने थियो। यसलाई **सेम्यान्टिक वेब** भनिन्थ्यो, र यसले केही अवधारणाहरूमा आधारित थियो: + +- **[डिस्क्रिप्सन लजिक](https://en.wikipedia.org/wiki/Description_logic)** (DL) मा आधारित विशेष ज्ञान प्रतिनिधित्व। यो फ्रेम ज्ञान प्रतिनिधित्वसँग मिल्दोजुल्दो छ, किनभने यसले वस्तुहरूको गुणहरू सहितको पदानुक्रम निर्माण गर्दछ, तर यसमा औपचारिक तार्किक अर्थ र निष्कर्ष छ। DL को एक पूरा परिवार छ, जसले अभिव्यक्तिको क्षमता र निष्कर्षको एल्गोरिथ्मिक जटिलताको बीच सन्तुलन राख्छ। +- वितरित ज्ञान प्रतिनिधित्व, जहाँ सबै अवधारणाहरूलाई एक वैश्विक URI पहिचानकर्ताद्वारा प्रतिनिधित्व गरिन्छ, जसले इन्टरनेटमा फैलिएको ज्ञान पदानुक्रमहरू सिर्जना गर्न सम्भव बनाउँछ। +- ज्ञान वर्णनका लागि XML-आधारित भाषाहरूको परिवार: RDF (रिसोर्स डिस्क्रिप्सन फ्रेमवर्क), RDFS (RDF स्किमा), OWL (ओन्टोलोजी वेब भाषा)। + +सेम्यान्टिक वेबको मुख्य अवधारणा **ओन्टोलोजी** हो। यसले केही औपचारिक ज्ञान प्रतिनिधित्व प्रयोग गरेर समस्या क्षेत्रको स्पष्ट निर्दिष्टीकरणलाई जनाउँछ। सबैभन्दा साधारण ओन्टोलोजी समस्या क्षेत्रको वस्तुहरूको पदानुक्रम मात्र हुन सक्छ, तर जटिल ओन्टोलोजीहरूले निष्कर्षका लागि प्रयोग गर्न सकिने नियमहरू समावेश गर्नेछन्। + +सेम्यान्टिक वेबमा, सबै प्रतिनिधित्वहरू त्रिप्लेटहरूमा आधारित हुन्छन्। प्रत्येक वस्तु र प्रत्येक सम्बन्ध URI द्वारा अद्वितीय रूपमा पहिचान गरिन्छ। उदाहरणका लागि, यदि हामी यो AI पाठ्यक्रम Dmitry Soshnikov द्वारा जनवरी १, २०२२ मा विकास गरिएको तथ्यलाई व्यक्त गर्न चाहन्छौं भने - यहाँ त्रिप्लेटहरू छन् जुन हामी प्रयोग गर्न सक्छौं: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ यहाँ `http://www.example.com/terms/creation-date` र `http://purl.org/dc/elements/1.1/creator` *सिर्जनाकर्ता* र *सिर्जना मिति* अवधारणाहरू व्यक्त गर्नका लागि केही प्रख्यात र विश्वव्यापी रूपमा स्वीकार गरिएका URI हुन्। + +यदि हामी सिर्जनाकर्ताहरूको सूची परिभाषित गर्न चाहन्छौं भने, RDF मा परिभाषित केही डाटा संरचनाहरू प्रयोग गर्न सकिन्छ। + + + +> माथिका चित्रहरू [Dmitry Soshnikov](http://soshnikov.com) द्वारा। + +सेम्यान्टिक वेब निर्माणको प्रगति खोज इन्जिनहरू र प्राकृतिक भाषा प्रशोधन प्रविधिहरूको सफलताले केही हदसम्म सुस्त बनाएको थियो, जसले पाठबाट संरचित डाटा निकाल्न अनुमति दिन्छ। तर, केही क्षेत्रहरूमा ओन्टोलोजीहरू र ज्ञान आधारहरू कायम राख्न अझै पनि महत्वपूर्ण प्रयासहरू छन्। केही उल्लेखनीय परियोजनाहरू: + +* [WikiData](https://wikidata.org/) Wikipedia सँग सम्बन्धित मेशिन पढ्न सकिने ज्ञान आधारहरूको संग्रह हो। अधिकांश डाटा Wikipedia *InfoBoxes* बाट निकालिएको हो, जुन Wikipedia पृष्ठहरू भित्रको संरचित सामग्रीका टुक्राहरू हुन्। तपाईं [SPARQL](https://query.wikidata.org/) प्रयोग गरेर WikiData सोध्न सक्नुहुन्छ, सेम्यान्टिक वेबको लागि विशेष सोधपुछ भाषा। यहाँ एउटा नमूना सोधपुछ छ जसले मानिसहरूमा सबैभन्दा लोकप्रिय आँखा रंगहरू देखाउँछ: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) WikiData जस्तै अर्को प्रयास हो। + +> ✅ यदि तपाईं आफ्नै ओन्टोलोजीहरू निर्माण गर्न वा विद्यमान ओन्टोलोजीहरू खोल्न प्रयोग गर्न चाहनुहुन्छ भने, [Protégé](https://protege.stanford.edu/) नामक एक उत्कृष्ट दृश्य ओन्टोलोजी सम्पादक छ। यसलाई डाउनलोड गर्नुहोस्, वा अनलाइन प्रयोग गर्नुहोस्। + + + +*Web Protégé सम्पादक Romanov Family ओन्टोलोजीसँग खुला। Dmitry Soshnikov द्वारा स्क्रीनशट।* + +## ✍️ अभ्यास: परिवार ओन्टोलोजी + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) हेर्नुहोस्, जहाँ सेम्यान्टिक वेब प्रविधिहरू प्रयोग गरेर परिवार सम्बन्धहरूको बारेमा तर्क गर्न सकिन्छ। हामी सामान्य GEDCOM ढाँचामा प्रतिनिधित्व गरिएको परिवार वृक्ष र परिवार सम्बन्धहरूको ओन्टोलोजी लिनेछौं र दिइएको व्यक्तिहरूको सेटको लागि सबै परिवार सम्बन्धहरूको ग्राफ निर्माण गर्नेछौं। + +## माइक्रोसफ्ट कन्सेप्ट ग्राफ + +अधिकांश अवस्थामा, ओन्टोलोजीहरू सावधानीपूर्वक हातले निर्माण गरिन्छ। तर, यो **अनसंरचित डाटा** बाट ओन्टोलोजीहरू निकाल्न पनि सम्भव छ, उदाहरणका लागि, प्राकृतिक भाषा पाठहरूबाट। + +माइक्रोसफ्ट रिसर्चद्वारा गरिएको यस्तो प्रयासले [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) निर्माण गरेको थियो। + +यो `is-a` उत्तराधिकार सम्बन्ध प्रयोग गरेर समूहबद्ध गरिएका संस्थाहरूको ठूलो संग्रह हो। यसले "माइक्रोसफ्ट के हो?" जस्ता प्रश्नहरूको उत्तर दिन अनुमति दिन्छ - उत्तर "कम्पनी (सम्भावना ०.८७) र ब्रान्ड (सम्भावना ०.७५)" जस्तो केही हुनेछ। + +ग्राफ REST API को रूपमा उपलब्ध छ, वा सबै संस्थाहरूको जोडी सूचीबद्ध गरिएको ठूलो डाउनलोडयोग्य पाठ फाइलको रूपमा। + +## ✍️ अभ्यास: कन्सेप्ट ग्राफ + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) नोटबुक प्रयास गर्नुहोस्, जहाँ हामी माइक्रोसफ्ट कन्सेप्ट ग्राफ प्रयोग गरेर समाचार लेखहरूलाई विभिन्न श्रेणीहरूमा समूह गर्न सक्दछौं। + +## निष्कर्ष + +आजकल, AI प्रायः *मेसिन लर्निङ* वा *न्यूरल नेटवर्क* को पर्यायवाची मानिन्छ। तर, मानवले स्पष्ट तर्क पनि प्रदर्शन गर्दछ, जुन हाल न्यूरल नेटवर्कहरूले सम्हाल्न सक्दैन। वास्तविक परियोजनाहरूमा, स्पष्ट तर्क अझै पनि व्याख्या आवश्यक पर्ने कार्यहरू गर्न, वा प्रणालीको व्यवहारलाई नियन्त्रित तरिकामा परिमार्जन गर्न प्रयोग गरिन्छ। + +## 🚀 चुनौती + +यस पाठसँग सम्बन्धित परिवार ओन्टोलोजी नोटबुकमा, परिवार वृक्षमा अन्य परिवार सम्बन्धहरूको साथ प्रयोग गर्ने अवसर छ। परिवार वृक्षमा व्यक्तिहरू बीच नयाँ सम्बन्धहरू पत्ता लगाउने प्रयास गर्नुहोस्। + +## [पाठपछिको क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## समीक्षा र आत्म अध्ययन + +इन्टरनेटमा अनुसन्धान गरेर मानिसहरूले ज्ञानलाई परिमाणित र कोडिफाइ गर्न प्रयास गरेका क्षेत्रहरू पत्ता लगाउनुहोस्। Bloom's Taxonomy को अध्ययन गर्नुहोस्, र इतिहासमा फर्केर मानिसहरूले आफ्नो संसारलाई बुझ्न कसरी प्रयास गरे भन्ने कुरा सिक्नुहोस्। Linnaeus को जीवहरूको वर्गीकरण निर्माण गर्ने कामको अन्वेषण गर्नुहोस्, र Dmitri Mendeleev ले रासायनिक तत्वहरूलाई वर्णन र समूहबद्ध गर्ने तरिका सिर्जना गरेको अवलोकन गर्नुहोस्। तपाईंले अरू के रोचक उदाहरणहरू फेला पार्न सक्नुहुन्छ? + +**असाइनमेन्ट**: [ओन्टोलोजी निर्माण गर्नुहोस्](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/2-Symbolic/assignment.md b/translations/ne/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..f358321a --- /dev/null +++ b/translations/ne/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# ओन्टोलोजी निर्माण गर्नुहोस् + +ज्ञान आधार निर्माण गर्नु भनेको कुनै विषयको तथ्यहरू प्रतिनिधित्व गर्ने मोडेललाई वर्गीकृत गर्नु हो। कुनै विषय चयन गर्नुहोस् - जस्तै व्यक्ति, स्थान, वा वस्तु - र त्यस विषयको मोडेल निर्माण गर्नुहोस्। यस पाठमा वर्णन गरिएका केही प्रविधिहरू र मोडेल निर्माण रणनीतिहरू प्रयोग गर्नुहोस्। एउटा उदाहरण भनेको फर्निचर, बत्तीहरू आदि सहितको बैठक कोठाको ओन्टोलोजी निर्माण गर्नु हो। बैठक कोठा भान्साकोठाबाट कसरी फरक छ? बाथरूमबाट? तपाईंलाई कसरी थाहा हुन्छ कि यो बैठक कोठा हो र भोजन कोठा होइन? आफ्नो ओन्टोलोजी निर्माण गर्न [Protégé](https://protege.stanford.edu/) प्रयोग गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ne/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..58042754 --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# न्यूरल नेटवर्कको परिचय: पर्सेप्ट्रोन + +## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +आधुनिक न्यूरल नेटवर्कको प्रारम्भिक प्रयासहरू मध्ये एक फ्र्यांक रोसेनब्लाटले 1957 मा कोर्नेल एरोनटिकल ल्याबोरेटरीमा गरेका थिए। यो "मार्क-१" नामक हार्डवेयर कार्यान्वयन थियो, जसले त्रिभुज, वर्ग, र वृतजस्ता साधारण ज्यामितीय आकृतिहरू चिन्न डिजाइन गरिएको थियो। + +| | | +|--------------|-----------| +|फ्र्यांक रोसेनब्लाट | मार्क १ पर्सेप्ट्रोन| + +> तस्बिरहरू [विकिपीडिया](https://en.wikipedia.org/wiki/Perceptron) बाट + +इनपुट तस्बिरलाई 20x20 फोटोसेल एरेले प्रतिनिधित्व गरिन्थ्यो, जसले गर्दा न्यूरल नेटवर्कसँग 400 इनपुट र एउटा बाइनरी आउटपुट थियो। साधारण नेटवर्कमा एउटा न्यूरोन हुन्थ्यो, जसलाई **थ्रेसहोल्ड लजिक युनिट** पनि भनिन्थ्यो। न्यूरल नेटवर्कका वेटहरू पोटेन्सियोमिटरजस्तै काम गर्थे, जसलाई तालिम चरणमा म्यानुअल रूपमा समायोजन गर्नुपर्ने हुन्थ्यो। + +> ✅ पोटेन्सियोमिटर भनेको यस्तो उपकरण हो जसले सर्किटको प्रतिरोधलाई समायोजन गर्न प्रयोगकर्तालाई अनुमति दिन्छ। + +> न्यूयोर्क टाइम्सले त्यस समयमा पर्सेप्ट्रोनबारे लेखेको थियो: *[नेभी] ले आशा गरेको छ कि यो इलेक्ट्रोनिक कम्प्युटरको भ्रूण हुनेछ, जसले हिँड्न, बोल्न, हेर्न, लेख्न, आफैंलाई पुन: उत्पादन गर्न र आफ्नो अस्तित्वको चेतना राख्न सक्षम हुनेछ।* + +## पर्सेप्ट्रोन मोडेल + +मानौं हाम्रो मोडेलमा N विशेषताहरू छन्, जसको इनपुट भेक्टर N आकारको भेक्टर हुनेछ। पर्सेप्ट्रोन एक **बाइनरी वर्गीकरण** मोडेल हो, अर्थात् यसले दुईवटा इनपुट डाटाका वर्गहरू छुट्याउन सक्छ। हामी मान्छौं कि प्रत्येक इनपुट भेक्टर x का लागि हाम्रो पर्सेप्ट्रोनको आउटपुट +1 वा -1 हुनेछ, वर्गमा निर्भर गर्दै। आउटपुट निम्न सूत्र प्रयोग गरेर गणना गरिन्छ: + +y(x) = f(wTx) + +जहाँ f एक स्टेप सक्रियता (activation) फंक्शन हो। + + + + +## पर्सेप्ट्रोनलाई तालिम दिने तरिका + +पर्सेप्ट्रोनलाई तालिम दिनका लागि हामीले यस्तो वेट्स भेक्टर w पत्ता लगाउनुपर्छ, जसले अधिकांश मानहरूलाई सही रूपमा वर्गीकृत गर्छ, अर्थात् न्यूनतम **त्रुटि** दिन्छ। यो त्रुटि E लाई **पर्सेप्ट्रोन मापदण्ड** द्वारा निम्न तरिकाले परिभाषित गरिन्छ: + +E(w) = -∑wTxiti + +जहाँ: + +* योग ती प्रशिक्षण डाटा बिन्दुहरू i मा लिइन्छ, जसले गलत वर्गीकरण दिन्छ। +* xi इनपुट डाटा हो, र ti नकारात्मक र सकारात्मक उदाहरणहरूको लागि क्रमशः -1 वा +1 हो। + +यो मापदण्डलाई वेट्स w को फंक्शनको रूपमा लिइन्छ, र हामीले यसलाई न्यूनतम बनाउनुपर्छ। प्रायः, **ग्रेडियन्ट डिसेन्ट** नामक विधि प्रयोग गरिन्छ, जसमा हामी केही प्रारम्भिक वेट्स w(0) बाट सुरु गर्छौं, र प्रत्येक चरणमा निम्न सूत्र अनुसार वेट्स अद्यावधिक गर्छौं: + +w(t+1) = w(t) - η∇E(w) + +यहाँ η लाई **लर्निङ दर** भनिन्छ, र ∇E(w) ले E को **ग्रेडियन्ट** जनाउँछ। ग्रेडियन्ट गणना गरेपछि, हामीसँग हुन्छ: + +w(t+1) = w(t) + ∑ηxiti + +Python मा एल्गोरिदम यसरी देखिन्छ: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## निष्कर्ष + +यस पाठमा, तपाईंले पर्सेप्ट्रोनबारे सिक्नुभयो, जुन एक बाइनरी वर्गीकरण मोडेल हो, र यसलाई वेट्स भेक्टर प्रयोग गरेर कसरी तालिम दिने भन्ने कुरा पनि सिक्नुभयो। + +## 🚀 चुनौती + +यदि तपाईं आफ्नो पर्सेप्ट्रोन बनाउन प्रयास गर्न चाहनुहुन्छ भने, [Microsoft Learn मा यो प्रयोगशाला](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) प्रयोग गर्नुहोस्, जसले [Azure ML डिजाइनर](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) प्रयोग गर्दछ। + +## [पश्च-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## समीक्षा र आत्म-अध्ययन + +पर्सेप्ट्रोन प्रयोग गरेर कसरी सानो समस्या र वास्तविक जीवनका समस्याहरू समाधान गर्न सकिन्छ भन्ने हेर्न र सिकाइ जारी राख्न [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) नोटबुकमा जानुहोस्। + +पर्सेप्ट्रोनबारेको यो [रोचक लेख](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) पनि हेर्नुहोस्। + +## [कार्य](lab/README.md) + +यस पाठमा, हामीले बाइनरी वर्गीकरण कार्यका लागि पर्सेप्ट्रोन कार्यान्वयन गरेका छौं, र यसलाई दुईवटा हस्तलेखित अंकहरू बीच वर्गीकृत गर्न प्रयोग गरेका छौं। यस प्रयोगशालामा, तपाईंलाई अंक वर्गीकरणको समस्या पूर्ण रूपमा समाधान गर्न भनिएको छ, अर्थात् दिइएको तस्बिरसँग मेल खाने सम्भावित अंक निर्धारण गर्नुहोस्। + +* [निर्देशहरू](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ne/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..ca48107f --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# परसेप्ट्रनको साथ बहु-वर्ग वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +यस पाठमा हामीले MNIST हस्तलेख अंकहरूको द्विआधारी वर्गीकरणका लागि विकास गरेको कोड प्रयोग गर्दै, एउटा बहु-वर्ग वर्गीकृतकर्ता बनाउनुहोस् जसले कुनै पनि अंकलाई चिन्हित गर्न सक्दछ। ट्रेन र टेस्ट डाटासेटमा वर्गीकरणको शुद्धता गणना गर्नुहोस्, र भ्रम म्याट्रिक्स प्रिन्ट गर्नुहोस्। + +## सुझावहरू + +1. प्रत्येक अंकका लागि, "यो अंक बनाम अन्य सबै अंक" को लागि द्विआधारी वर्गीकृतकर्ताको डाटासेट तयार गर्नुहोस्। +1. द्विआधारी वर्गीकरणका लागि १० फरक परसेप्ट्रनहरू ट्रेन गर्नुहोस् (प्रत्येक अंकका लागि एउटा)। +1. इनपुट अंक वर्गीकृत गर्ने एउटा function परिभाषित गर्नुहोस्। + +> **सुझाव**: यदि हामी सबै १० परसेप्ट्रनहरूको तौललाई एउटै म्याट्रिक्समा संयोजन गर्छौं भने, हामी एउटा म्याट्रिक्स गुणनद्वारा इनपुट अंकहरूमा सबै १० परसेप्ट्रनहरू लागू गर्न सक्षम हुनेछौं। सबैभन्दा सम्भावित अंक `argmax` अपरेसनलाई आउटपुटमा लागू गरेर पत्ता लगाउन सकिन्छ। + +## सुरुवाती नोटबुक + +[PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) खोल्दै ल्याब सुरु गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ne/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..8cea822e --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# न्यूरल नेटवर्कको परिचय। बहु-स्तरीय परसेप्ट्रोन + +अघिल्लो खण्डमा, तपाईंले सबैभन्दा साधारण न्यूरल नेटवर्क मोडेल - एक-स्तरीय परसेप्ट्रोन, जुन रेखीय दुई-वर्ग वर्गीकरण मोडेल हो, को बारेमा सिक्नुभयो। + +यस खण्डमा हामी यो मोडेललाई अझ लचिलो ढाँचामा विस्तार गर्नेछौं, जसले हामीलाई निम्न कार्यहरू गर्न अनुमति दिनेछ: + +* दुई-वर्गको अतिरिक्त **बहु-वर्ग वर्गीकरण** गर्न +* वर्गीकरणको अतिरिक्त **पुनरावृत्ति समस्याहरू** समाधान गर्न +* रेखीय रूपमा छुट्याउन नसकिने वर्गहरू छुट्याउन + +हामी हाम्रो आफ्नै पायथनमा आधारित मोड्युलर फ्रेमवर्क पनि विकास गर्नेछौं, जसले विभिन्न न्यूरल नेटवर्क आर्किटेक्चरहरू निर्माण गर्न अनुमति दिनेछ। + +## [पाठपूर्व प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## मेसिन लर्निङको औपचारिकता + +हामी मेसिन लर्निङ समस्यालाई औपचारिक रूपमा परिभाषित गरेर सुरु गरौं। मानौं, हामीसँग **X** नामक प्रशिक्षण डाटासेट छ, जसको लेबलहरू **Y** छन्, र हामीले *f* नामक मोडेल निर्माण गर्नुपर्छ, जसले सबैभन्दा सही भविष्यवाणीहरू गर्नेछ। भविष्यवाणीहरूको गुणस्तर **हानि फलन** ℒ द्वारा मापन गरिन्छ। निम्न हानि फलनहरू प्रायः प्रयोग गरिन्छ: + +* पुनरावृत्ति समस्याको लागि, जहाँ हामीले कुनै संख्या भविष्यवाणी गर्नुपर्छ, हामी **पूर्ण त्रुटि** ∑i|f(x(i))-y(i)|, वा **वर्ग त्रुटि** ∑i(f(x(i))-y(i))2 प्रयोग गर्न सक्छौं। +* वर्गीकरणको लागि, हामी **0-1 हानि** (जसलाई मोडेलको **सटीकता** पनि भनिन्छ), वा **लजिस्टिक हानि** प्रयोग गर्छौं। + +एक-स्तरीय परसेप्ट्रोनको लागि, *f* लाई रेखीय फलन *f(x)=wx+b* को रूपमा परिभाषित गरिएको थियो (यहाँ *w* तौल म्याट्रिक्स हो, *x* इनपुट विशेषताहरूको भेक्टर हो, र *b* पूर्वाग्रह भेक्टर हो)। विभिन्न न्यूरल नेटवर्क आर्किटेक्चरहरूको लागि, यो फलन अझ जटिल रूप लिन सक्छ। + +> वर्गीकरणको अवस्थामा, सम्बन्धित वर्गहरूको सम्भावनाहरू नेटवर्कको आउटपुटको रूपमा प्राप्त गर्नु वाञ्छनीय हुन्छ। मनमानी संख्याहरूलाई सम्भावनामा रूपान्तरण गर्न (जस्तै आउटपुटलाई सामान्यीकरण गर्न), हामी प्रायः **सफ्टम्याक्स** फलन σ प्रयोग गर्छौं, र फलन *f* यसरी परिभाषित हुन्छ: *f(x)=σ(wx+b)* + +उपरोक्त *f* को परिभाषामा, *w* र *b* लाई **प्यारामिटरहरू** θ=⟨*w,b*⟩ भनिन्छ। डाटासेट ⟨**X**,**Y**⟩ दिइएको अवस्थामा, हामी सम्पूर्ण डाटासेटमा समग्र त्रुटि θ को फलनको रूपमा गणना गर्न सक्छौं। + +> ✅ **न्यूरल नेटवर्क प्रशिक्षणको लक्ष्य भनेको θ को मान परिवर्तन गरेर त्रुटिलाई न्यूनतम बनाउनु हो।** + +## ग्रेडियन्ट डिसेन्ट अप्टिमाइजेसन + +फलन अप्टिमाइजेसनको एक प्रसिद्ध विधि **ग्रेडियन्ट डिसेन्ट** हो। यसको विचार यो हो कि हामी हानि फलनको डेरिभेटिभ (बहु-आयामिक अवस्थामा **ग्रेडियन्ट** भनिन्छ) पारामिटरहरूको सन्दर्भमा गणना गर्न सक्छौं, र त्रुटि घट्ने गरी पारामिटरहरू परिवर्तन गर्न सक्छौं। यसलाई निम्न रूपमा औपचारिक बनाउन सकिन्छ: + +* पारामिटरहरूलाई केही अनियमित मानहरू w(0), b(0) बाट सुरु गर्नुहोस्। +* निम्न चरणलाई धेरै पटक दोहोर्याउनुहोस्: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +प्रशिक्षणको क्रममा, अप्टिमाइजेसन चरणहरू सम्पूर्ण डाटासेटलाई ध्यानमा राखेर गणना गरिनुपर्छ (स्मरण रहोस् कि हानि सबै प्रशिक्षण नमूनाहरूको योगको रूपमा गणना गरिन्छ)। तर, वास्तविक जीवनमा हामी डाटासेटका साना भागहरू, जसलाई **मिनिब्याचहरू** भनिन्छ, लिन्छौं, र डाटाको उपसमूहको आधारमा ग्रेडियन्टहरू गणना गर्छौं। किनभने प्रत्येक पटक उपसमूह अनियमित रूपमा लिइन्छ, यस्तो विधिलाई **स्टोकास्टिक ग्रेडियन्ट डिसेन्ट** (SGD) भनिन्छ। + +## बहु-स्तरीय परसेप्ट्रोन र ब्याकप्रोपोगेसन + +एक-स्तरीय नेटवर्क, जस्तो हामीले माथि देख्यौं, रेखीय रूपमा छुट्याउन सकिने वर्गहरूको वर्गीकरण गर्न सक्षम छ। अझ समृद्ध मोडेल निर्माण गर्न, हामी नेटवर्कका धेरै तहहरू संयोजन गर्न सक्छौं। गणितीय रूपमा यसको अर्थ यो हुन्छ कि फलन *f* को रूप अझ जटिल हुनेछ, र यो धेरै चरणहरूमा गणना गरिनेछ: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +यहाँ, α एक **गैर-रेखीय सक्रियता फलन** हो, σ सफ्टम्याक्स फलन हो, र पारामिटरहरू θ=<*w1,b1,w2,b2*> हुन्। + +ग्रेडियन्ट डिसेन्ट एल्गोरिदम उस्तै रहनेछ, तर ग्रेडियन्टहरू गणना गर्न अझ गाह्रो हुनेछ। चेन डिफरेन्सिएसन नियमलाई ध्यानमा राख्दै, हामी डेरिभेटिभहरू निम्न रूपमा गणना गर्न सक्छौं: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ चेन डिफरेन्सिएसन नियम हानि फलनको डेरिभेटिभहरू पारामिटरहरूको सन्दर्भमा गणना गर्न प्रयोग गरिन्छ। + +ध्यान दिनुहोस् कि यी सबै अभिव्यक्तिहरूको बाँया-पट्टिको भाग उस्तै छ, र यसैले हामी प्रभावकारी रूपमा डेरिभेटिभहरू हानि फलनबाट सुरु गरेर "पछाडि" कम्प्युटेसनल ग्राफ हुँदै गणना गर्न सक्छौं। यसैले बहु-स्तरीय परसेप्ट्रोनको प्रशिक्षण विधिलाई **ब्याकप्रोपोगेसन**, वा 'ब्याकप्रोप' भनिन्छ। + +कम्प्युट ग्राफ + +> TODO: छवि स्रोत + +> ✅ हामी ब्याकप्रोपलाई हाम्रो नोटबुक उदाहरणमा अझ विस्तृत रूपमा कभर गर्नेछौं। + +## निष्कर्ष + +यस पाठमा, हामीले हाम्रो आफ्नै न्यूरल नेटवर्क पुस्तकालय निर्माण गरेका छौं, र यसलाई सरल दुई-आयामिक वर्गीकरण कार्यको लागि प्रयोग गरेका छौं। + +## 🚀 चुनौती + +संग्लग्न नोटबुकमा, तपाईंले बहु-स्तरीय परसेप्ट्रोनहरू निर्माण र प्रशिक्षण गर्नको लागि आफ्नो फ्रेमवर्क कार्यान्वयन गर्नुहुनेछ। तपाईं आधुनिक न्यूरल नेटवर्कहरू कसरी काम गर्छन् भन्ने विस्तृत रूपमा हेर्न सक्नुहुनेछ। + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) नोटबुकमा जानुहोस् र यसलाई पूरा गर्नुहोस्। + +## [पाठपछिको प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## समीक्षा र आत्म-अध्ययन + +ब्याकप्रोपोगेसन एआई र एमएलमा प्रयोग गरिने सामान्य एल्गोरिदम हो, जसलाई [अझ विस्तृत रूपमा अध्ययन](https://wikipedia.org/wiki/Backpropagation) गर्न लायक छ। + +## [कार्य](lab/README.md) + +यस प्रयोगशालामा, तपाईंलाई यस पाठमा निर्माण गरिएको फ्रेमवर्क प्रयोग गरेर MNIST हस्तलिखित अंक वर्गीकरण समाधान गर्न भनिएको छ। + +* [निर्देशहरू](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ne/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..c258f87c --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# हाम्रो आफ्नै फ्रेमवर्क प्रयोग गरेर MNIST वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +१-, २- र ३- तहको पर्सेप्ट्रोन प्रयोग गरेर MNIST हस्तलेखन गरिएको अंक वर्गीकरण समस्या समाधान गर्नुहोस्। यस पाठमा हामीले विकास गरेको न्युरल नेटवर्क फ्रेमवर्क प्रयोग गर्नुहोस्। + +## सुरुवात नोटबुक + +ल्याब सुरु गर्न [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) खोल्नुहोस्। + +## प्रश्नहरू + +यस ल्याबको परिणामस्वरूप, निम्न प्रश्नहरूको उत्तर दिन प्रयास गर्नुहोस्: + +- के इन्टर-लेयर सक्रियता कार्यले नेटवर्कको प्रदर्शनलाई असर गर्छ? +- के यो कार्यका लागि २- वा ३- तहको नेटवर्क आवश्यक छ? +- नेटवर्कलाई प्रशिक्षण गर्दा कुनै समस्या अनुभव गर्नुभयो? विशेष गरी तहहरूको संख्या बढ्दै जाँदा। +- प्रशिक्षणको क्रममा नेटवर्कका वेटहरू कसरी व्यवहार गर्छन्? वेटहरूको अधिकतम abs मान बनाम epoch को सम्बन्ध बुझ्नको लागि तपाईं यसलाई प्लट गर्न सक्नुहुन्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ne/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..00a4b167 --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# न्युरल नेटवर्क फ्रेमवर्कहरू + +हामीले पहिले नै सिकिसकेका छौं कि न्युरल नेटवर्कलाई प्रभावकारी रूपमा प्रशिक्षण दिनका लागि हामीले दुईवटा कुरा गर्नुपर्छ: + +* टेन्सरहरूमा अपरेसन गर्न, जस्तै गुणन, थप, र केही कार्यहरू जस्तै सिग्मोइड वा सफ्टम्याक्स गणना गर्न +* सबै अभिव्यक्तिहरूको ग्रेडियन्ट गणना गर्न, ताकि ग्रेडियन्ट डिसेन्ट अप्टिमाइजेसन गर्न सकियोस् + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +`numpy` लाइब्रेरीले पहिलो भाग गर्न सक्छ, तर हामीलाई ग्रेडियन्ट गणना गर्न केही मेकानिज्म चाहिन्छ। [हाम्रो फ्रेमवर्क](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) मा, जुन हामीले अघिल्लो खण्डमा विकास गरेका थियौं, हामीले `backward` मेथडभित्र सबै डेरिभेटिभ फङ्सनहरू म्यानुअली प्रोग्राम गर्नुपर्थ्यो, जसले ब्याकप्रोपोगेसन गर्छ। आदर्श रूपमा, फ्रेमवर्कले हामीलाई *कुनै पनि अभिव्यक्ति* को ग्रेडियन्ट गणना गर्ने अवसर दिनुपर्छ, जुन हामी परिभाषित गर्न सक्छौं। + +अर्को महत्त्वपूर्ण कुरा भनेको GPU वा अन्य विशेष कम्प्युट युनिटहरू, जस्तै [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) मा गणना गर्न सक्षम हुनु हो। गहिरो न्युरल नेटवर्क प्रशिक्षणमा *धेरै* गणना आवश्यक पर्छ, र ती गणनाहरू GPU मा समानान्तर रूपमा गर्न सक्षम हुनु अत्यन्त महत्त्वपूर्ण छ। + +> ✅ 'समानान्तर' भन्नाले गणनाहरूलाई धेरै उपकरणहरूमा वितरण गर्नु हो। + +हाल, दुई सबैभन्दा लोकप्रिय न्युरल फ्रेमवर्कहरू हुन्: [TensorFlow](http://TensorFlow.org) र [PyTorch](https://pytorch.org/)। यी दुवैले CPU र GPU मा टेन्सरहरूसँग काम गर्नका लागि लो-लेभल API प्रदान गर्छन्। लो-लेभल API को माथि, उच्च-स्तरीय API पनि छ, जसलाई [Keras](https://keras.io/) र [PyTorch Lightning](https://pytorchlightning.ai/) भनिन्छ। + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**लो-लेभल API** ले तथाकथित **गणनात्मक ग्राफहरू** निर्माण गर्न अनुमति दिन्छ। यो ग्राफले दिइएको इनपुट प्यारामिटरहरूसँग आउटपुट (सामान्यतया हानि कार्य) कसरी गणना गर्ने भनेर परिभाषित गर्छ, र GPU मा गणना गर्न पठाउन सकिन्छ, यदि GPU उपलब्ध छ भने। यस ग्राफलाई डिफरेन्सिएट गर्न र ग्रेडियन्टहरू गणना गर्नका लागि फङ्सनहरू छन्, जसलाई त्यसपछि मोडेल प्यारामिटरहरू अप्टिमाइज गर्न प्रयोग गर्न सकिन्छ। + +**हाई-लेभल API** ले न्युरल नेटवर्कलाई प्रायः **लेयरहरूको क्रम** को रूपमा लिन्छ, र अधिकांश न्युरल नेटवर्कहरू निर्माण गर्न सजिलो बनाउँछ। मोडेल प्रशिक्षण सामान्यतया डेटा तयार पारेर `fit` फङ्सनलाई कल गरेर गरिन्छ। + +हाई-लेभल API ले धेरै छिटो सामान्य न्युरल नेटवर्कहरू निर्माण गर्न अनुमति दिन्छ, धेरै विवरणहरूको चिन्ता नगरी। त्यही समयमा, लो-लेभल API ले प्रशिक्षण प्रक्रियामा धेरै नियन्त्रण प्रदान गर्छ, र यसैले नयाँ न्युरल नेटवर्क आर्किटेक्चरहरूसँग काम गर्दा अनुसन्धानमा धेरै प्रयोग गरिन्छ। + +यो बुझ्न महत्त्वपूर्ण छ कि तपाईं दुवै API सँगै प्रयोग गर्न सक्नुहुन्छ, जस्तै तपाईं आफ्नो नेटवर्क लेयर आर्किटेक्चर लो-लेभल API प्रयोग गरेर विकास गर्न सक्नुहुन्छ, र त्यसपछि यसलाई उच्च-स्तरीय API प्रयोग गरेर निर्माण गरिएको ठूलो नेटवर्कभित्र प्रयोग गर्न सक्नुहुन्छ। वा तपाईं उच्च-स्तरीय API प्रयोग गरेर लेयरहरूको क्रमको रूपमा नेटवर्क परिभाषित गर्न सक्नुहुन्छ, र त्यसपछि आफ्नो लो-लेभल प्रशिक्षण लूप प्रयोग गरेर अप्टिमाइजेसन गर्न सक्नुहुन्छ। दुवै API ले एउटै आधारभूत अवधारणाहरू प्रयोग गर्छन्, र तिनीहरू एकअर्कासँग राम्रोसँग काम गर्न डिजाइन गरिएका छन्। + +## सिकाइ + +यस कोर्समा, हामीले अधिकांश सामग्री PyTorch र TensorFlow दुवैका लागि उपलब्ध गराएका छौं। तपाईं आफ्नो मनपर्ने फ्रेमवर्क छान्न सक्नुहुन्छ र त्यससँग सम्बन्धित नोटबुकहरू मात्र अध्ययन गर्न सक्नुहुन्छ। यदि तपाईं कुन फ्रेमवर्क छान्ने निश्चित हुनुहुन्न भने, **PyTorch vs. TensorFlow** सम्बन्धी इन्टरनेटमा केही छलफलहरू पढ्नुहोस्। तपाईं दुवै फ्रेमवर्क हेरेर राम्रो बुझाइ पनि प्राप्त गर्न सक्नुहुन्छ। + +जहाँ सम्भव छ, हामी सरलताका लागि हाई-लेभल API प्रयोग गर्नेछौं। तर, हामी विश्वास गर्छौं कि न्युरल नेटवर्कहरू कसरी काम गर्छन् भन्ने कुरा आधारदेखि बुझ्न महत्त्वपूर्ण छ, त्यसैले सुरुमा हामी लो-लेभल API र टेन्सरहरूसँग काम गरेर सुरु गर्नेछौं। तर, यदि तपाईं छिटो अघि बढ्न चाहनुहुन्छ र यी विवरणहरू सिक्न धेरै समय खर्च गर्न चाहनुहुन्न भने, तपाईं ती छोडेर सिधै हाई-लेभल API नोटबुकहरूमा जान सक्नुहुन्छ। + +## ✍️ अभ्यास: फ्रेमवर्कहरू + +तपाईंको सिकाइलाई निम्न नोटबुकहरूमा जारी राख्नुहोस्: + +Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +फ्रेमवर्कहरूमा महारथ हासिल गरेपछि, ओभरफिटिङको अवधारणा पुनः सम्झौं। + +# ओभरफिटिङ + +ओभरफिटिङ मेसिन लर्निङमा अत्यन्त महत्त्वपूर्ण अवधारणा हो, र यसलाई सही रूपमा बुझ्न अत्यन्त महत्त्वपूर्ण छ! + +तलको समस्या विचार गर्नुहोस्, जसमा ५ वटा बिन्दुहरूलाई (ग्राफमा `x` ले प्रतिनिधित्व गरिएको) अनुमान गर्नुपर्छ: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ne.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ne.jpg) +-------------------------|-------------------------- +**रेखीय मोडेल, २ प्यारामिटरहरू** | **गैर-रेखीय मोडेल, ७ प्यारामिटरहरू** +प्रशिक्षण त्रुटि = ५.३ | प्रशिक्षण त्रुटि = ० +प्रमाणीकरण त्रुटि = ५.१ | प्रमाणीकरण त्रुटि = २० + +* बायाँतिर, हामीले राम्रो सिधा रेखा अनुमान देख्छौं। किनभने प्यारामिटरहरूको संख्या उपयुक्त छ, मोडेलले बिन्दुहरूको वितरणको सही विचार पाउँछ। +* दायाँतिर, मोडेल धेरै शक्तिशाली छ। किनभने हामीसँग केवल ५ बिन्दुहरू छन् र मोडेलसँग ७ प्यारामिटरहरू छन्, यसले सबै बिन्दुहरू पार गर्न मिल्ने गरी समायोजन गर्न सक्छ, जसले गर्दा प्रशिक्षण त्रुटि ० हुन्छ। तर, यसले मोडेललाई डाटाको सही ढाँचा बुझ्नबाट रोक्छ, जसले गर्दा प्रमाणीकरण त्रुटि धेरै उच्च हुन्छ। + +यो मोडेलको समृद्धि (प्यारामिटरहरूको संख्या) र प्रशिक्षण नमूनाहरूको संख्याबीच सही सन्तुलन कायम गर्नु अत्यन्त महत्त्वपूर्ण छ। + +## किन ओभरफिटिङ हुन्छ + + * पर्याप्त प्रशिक्षण डाटा नभएको + * धेरै शक्तिशाली मोडेल + * इनपुट डाटामा धेरै धेरै शोर + +## ओभरफिटिङ कसरी पत्ता लगाउने + +ग्राफबाट देख्न सकिन्छ, ओभरफिटिङलाई धेरै कम प्रशिक्षण त्रुटि र उच्च प्रमाणीकरण त्रुटिबाट पत्ता लगाउन सकिन्छ। सामान्यतया प्रशिक्षणको क्रममा, हामीले प्रशिक्षण र प्रमाणीकरण त्रुटिहरू दुवै घट्दै गरेको देख्छौं, र त्यसपछि कुनै बिन्दुमा प्रमाणीकरण त्रुटि घट्न रोक्न सक्छ र बढ्न थाल्छ। यो ओभरफिटिङको संकेत हुनेछ, र यो बिन्दुमा प्रशिक्षण रोक्नुपर्छ (वा कम्तीमा मोडेलको स्न्यापशट लिनुपर्छ)। + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ne.png) + +## ओभरफिटिङ रोक्ने उपाय + +यदि तपाईंले ओभरफिटिङ भइरहेको देख्नुभयो भने, तपाईं निम्नमध्ये कुनै एक गर्न सक्नुहुन्छ: + + * प्रशिक्षण डाटाको मात्रा बढाउनुहोस् + * मोडेलको जटिलता घटाउनुहोस् + * [रेगुलराइजेसन प्रविधि](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) प्रयोग गर्नुहोस्, जस्तै [ड्रपआउट](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), जुन हामी पछि विचार गर्नेछौं। + +## ओभरफिटिङ र बायस-भेरियन्स ट्रेडअफ + +ओभरफिटिङ वास्तवमा तथ्याङ्कमा [बायस-भेरियन्स ट्रेडअफ](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) भनिने अधिक सामान्य समस्याको एउटा केस हो। यदि हामी हाम्रो मोडेलमा त्रुटिको सम्भावित स्रोतहरू विचार गर्छौं भने, हामी दुई प्रकारका त्रुटिहरू देख्न सक्छौं: + +* **बायस त्रुटिहरू** हाम्रो एल्गोरिदमले प्रशिक्षण डाटाबीचको सम्बन्धलाई सही रूपमा समात्न नसक्दा हुने त्रुटिहरू हुन्। यो हाम्रो मोडेल पर्याप्त शक्तिशाली नभएको कारणले हुन सक्छ (**अन्डरफिटिङ**)। +* **भेरियन्स त्रुटिहरू**, जुन इनपुट डाटामा शोरलाई अर्थपूर्ण सम्बन्धको सट्टा अनुमान गर्दा हुने त्रुटिहरू हुन् (**ओभरफिटिङ**)। + +प्रशिक्षणको क्रममा, बायस त्रुटि घट्छ (किनभने हाम्रो मोडेलले डाटालाई अनुमान गर्न सिक्छ), र भेरियन्स त्रुटि बढ्छ। ओभरफिटिङ रोक्न - चाहे म्यानुअली (जब हामी ओभरफिटिङ पत्ता लगाउँछौं) वा स्वचालित रूपमा (रेगुलराइजेसनको परिचय दिएर) - प्रशिक्षण रोक्नु महत्त्वपूर्ण छ। + +## निष्कर्ष + +यस पाठमा, तपाईंले दुई सबैभन्दा लोकप्रिय AI फ्रेमवर्कहरू, TensorFlow र PyTorch का विभिन्न API हरूको भिन्नताहरूको बारेमा सिक्नुभयो। साथै, तपाईंले एक अत्यन्त महत्त्वपूर्ण विषय, ओभरफिटिङको बारेमा पनि सिक्नुभयो। + +## 🚀 चुनौती + +संगत नोटबुकहरूमा, तपाईंले 'कार्यहरू' पाउनुहुनेछ; नोटबुकहरू अध्ययन गर्नुहोस् र कार्यहरू पूरा गर्नुहोस्। + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## समीक्षा र आत्म-अध्ययन + +निम्न विषयहरूमा केही अनुसन्धान गर्नुहोस्: + +- TensorFlow +- PyTorch +- ओभरफिटिङ + +आफैंलाई निम्न प्रश्नहरू सोध्नुहोस्: + +- TensorFlow र PyTorch बीच के फरक छ? +- ओभरफिटिङ र अन्डरफिटिङ बीच के फरक छ? + +## [Assignment](lab/README.md) + +यस प्रयोगशालामा, तपाईंलाई PyTorch वा TensorFlow प्रयोग गरेर एकल- र बहु-स्तरीय पूर्ण रूपमा जडित नेटवर्कहरू प्रयोग गरी दुई वर्गीकरण समस्याहरू समाधान गर्न भनिएको छ। + +* [निर्देशहरू](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ne/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..f5401f1c --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# PyTorch/TensorFlow प्रयोग गरेर वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +PyTorch वा TensorFlow प्रयोग गरेर एकल र बहु-स्तरीय पूर्ण रूपमा जडित नेटवर्कहरू प्रयोग गरी दुई वर्गीकरण समस्याहरू समाधान गर्नुहोस्: + +1. **[आईरिस वर्गीकरण](https://en.wikipedia.org/wiki/Iris_flower_data_set)** समस्या - यो तालिका इनपुट डाटाको समस्या हो, जसलाई परम्परागत मेसिन लर्निङले समाधान गर्न सक्छ। तपाईंको लक्ष्य ४ संख्यात्मक प्यारामिटरहरूको आधारमा आईरिसलाई ३ वर्गहरूमा वर्गीकरण गर्नु हो। +1. **MNIST** हस्तलेखित अंक वर्गीकरण समस्या, जुन हामीले पहिले देखिसकेका छौं। + +उत्तम शुद्धता प्राप्त गर्न विभिन्न नेटवर्क आर्किटेक्चरहरू प्रयास गर्नुहोस्। + +## सुरुवात नोटबुक + +[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) खोल्दै ल्याब सुरु गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथासम्भव शुद्धता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। मूल दस्तावेज़ यसको मातृभाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/3-NeuralNetworks/README.md b/translations/ne/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..9b061040 --- /dev/null +++ b/translations/ne/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# न्युरल नेटवर्कको परिचय + +![न्युरल नेटवर्कको परिचयको सामग्रीको सारांश एक चित्रमा](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ne.png) + +जसरी हामीले परिचयमा चर्चा गर्यौं, बुद्धिमत्ता प्राप्त गर्ने एक तरिका भनेको **कम्प्युटर मोडेल** वा **कृत्रिम मस्तिष्क**लाई प्रशिक्षण दिनु हो। २०औं शताब्दीको मध्यदेखि, अनुसन्धानकर्ताहरूले विभिन्न गणितीय मोडेलहरू प्रयास गरे, जबसम्म पछिल्लो केही वर्षमा यो दिशा अत्यन्त सफल साबित भएन। मस्तिष्कका यस्ता गणितीय मोडेलहरूलाई **न्युरल नेटवर्क** भनिन्छ। + +> कहिलेकाहीं न्युरल नेटवर्कलाई *कृत्रिम न्युरल नेटवर्क*, ANNs भनिन्छ, जसले हामी मोडेलको कुरा गरिरहेका छौं, वास्तविक न्युरोनहरूको नेटवर्कको होइन भन्ने संकेत गर्दछ। + +## मेशिन लर्निङ + +न्युरल नेटवर्कहरू **मेशिन लर्निङ** नामक ठूलो क्षेत्रको हिस्सा हुन्, जसको उद्देश्य डाटा प्रयोग गरेर कम्प्युटर मोडेलहरूलाई समस्या समाधान गर्न सक्षम बनाउनु हो। मेशिन लर्निङ कृत्रिम बुद्धिमत्ताको ठूलो हिस्सा हो, तर हामी यस पाठ्यक्रममा परम्परागत मेशिन लर्निङलाई समेट्दैनौं। + +> परम्परागत मेशिन लर्निङबारे थप जान्नको लागि हाम्रो छुट्टै **[मेशिन लर्निङ फर बिगिनर्स](http://github.com/microsoft/ml-for-beginners)** पाठ्यक्रममा जानुहोस्। + +मेशिन लर्निङमा, हामी मान्छौं कि हामीसँग केही उदाहरणहरूको डाटासेट **X** छ, र त्यससँग सम्बन्धित आउटपुट मानहरू **Y** छन्। उदाहरणहरू प्रायः N-आयामीय भेक्टरहरू हुन्छन् जसमा **फिचरहरू** हुन्छन्, र आउटपुटहरूलाई **लेबलहरू** भनिन्छ। + +हामी दुई सबैभन्दा सामान्य मेशिन लर्निङ समस्याहरूलाई विचार गर्नेछौं: + +* **वर्गीकरण**, जहाँ हामीले इनपुट वस्तुलाई दुई वा बढी वर्गहरूमा वर्गीकृत गर्नुपर्छ। +* **रेग्रेशन**, जहाँ हामीले प्रत्येक इनपुट नमूनाहरूको लागि संख्यात्मक मान भविष्यवाणी गर्नुपर्छ। + +> इनपुट र आउटपुटलाई टेन्सरको रूपमा प्रतिनिधित्व गर्दा, इनपुट डाटासेट M×N आकारको म्याट्रिक्स हो, जहाँ M नमूनाहरूको संख्या हो र N फिचरहरूको संख्या हो। आउटपुट लेबलहरू **Y** भनेको M आकारको भेक्टर हो। + +यस पाठ्यक्रममा, हामी केवल न्युरल नेटवर्क मोडेलहरूमा ध्यान केन्द्रित गर्नेछौं। + +## न्युरोनको मोडेल + +जैविक विज्ञानबाट हामीलाई थाहा छ कि हाम्रो मस्तिष्क न्युरल कोषहरूबाट बनेको छ, जसको प्रत्येकमा धेरै "इनपुट" (एक्सनहरू) र एक आउटपुट (डेंड्राइट) हुन्छ। एक्सनहरू र डेंड्राइटहरूले विद्युतीय संकेतहरू प्रवाह गर्न सक्छन्, र एक्सनहरू र डेंड्राइटहरू बीचको जडानहरू विभिन्न प्रवाह क्षमताहरू देखाउन सक्छन् (न्युरोमेडिएटरद्वारा नियन्त्रित)। + +![न्युरोनको मोडेल](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ne.jpg) | ![न्युरोनको मोडेल](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ne.png) +----|---- +वास्तविक न्युरोन *([छवि](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) विकिपीडियाबाट)* | कृत्रिम न्युरोन *(लेखकद्वारा छवि)* + +त्यसैले, न्युरोनको सबैभन्दा सरल गणितीय मोडेलमा धेरै इनपुटहरू X1, ..., XN र एक आउटपुट Y हुन्छ, र वेटहरूको श्रृंखला W1, ..., WN हुन्छ। आउटपुटलाई निम्न प्रकारले गणना गरिन्छ: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +जहाँ f भनेको केही गैर-रेखीय **सक्रियता फलन** हो। + +> न्युरोनको प्रारम्भिक मोडेलहरू १९४३ मा वारेन म्याककलक र वाल्टर पिट्सद्वारा लेखिएको शास्त्रीय पेपर [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) मा वर्णन गरिएको थियो। डोनाल्ड हेबले आफ्नो पुस्तक "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" मा ती नेटवर्कहरू कसरी प्रशिक्षण गर्न सकिन्छ भन्ने तरिका प्रस्ताव गरे। + +## यस खण्डमा + +यस खण्डमा हामी सिक्नेछौं: +* [पर्सेप्ट्रोन](03-Perceptron/README.md), दुई-वर्ग वर्गीकरणको लागि प्रारम्भिक न्युरल नेटवर्क मोडेलहरू मध्ये एक +* [बहु-स्तरीय नेटवर्कहरू](04-OwnFramework/README.md) र एक जोडी नोटबुक [हाम्रो आफ्नै फ्रेमवर्क कसरी निर्माण गर्ने](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [न्युरल नेटवर्क फ्रेमवर्कहरू](05-Frameworks/README.md), यी नोटबुकहरूसँग: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) र [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [ओभरफिटिङ](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ne/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..2c3fa649 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# कम्प्युटर भिजनको परिचय + +[कम्प्युटर भिजन](https://wikipedia.org/wiki/Computer_vision) एउटा क्षेत्र हो जसको उद्देश्य कम्प्युटरलाई डिजिटल छविहरूको उच्च-स्तरीय बुझाइ दिनु हो। यो परिभाषा धेरै व्यापक छ, किनभने *बुझाइ* ले धेरै कुराहरू जनाउन सक्छ, जस्तै तस्बिरमा वस्तु पत्ता लगाउने (**वस्तु पहिचान**), के भइरहेको छ बुझ्ने (**घटना पहिचान**), तस्बिरलाई पाठमा वर्णन गर्ने, वा दृश्यलाई 3D मा पुनर्निर्माण गर्ने। मानव छविसँग सम्बन्धित विशेष कार्यहरू पनि छन्: उमेर र भावनाको अनुमान, अनुहार पहिचान र चिन्नु, र 3D पोज अनुमान, केही उदाहरणका लागि। + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +कम्प्युटर भिजनको सबैभन्दा सरल कार्यहरू मध्ये एक हो **छवि वर्गीकरण**। + +कम्प्युटर भिजनलाई प्राय: AI को शाखा मानिन्छ। आजकल, कम्प्युटर भिजनका अधिकांश कार्यहरू न्युरल नेटवर्कहरू प्रयोग गरेर समाधान गरिन्छ। हामी कम्प्युटर भिजनका लागि प्रयोग हुने विशेष प्रकारका न्युरल नेटवर्कहरू, [कन्भोल्युसनल न्युरल नेटवर्कहरू](../07-ConvNets/README.md), यस खण्डमा सिक्नेछौं। + +तर, छवि न्युरल नेटवर्कमा पठाउनु अघि, धेरै अवस्थामा छवि सुधार गर्न केही एल्गोरिदमिक प्रविधिहरू प्रयोग गर्नु उपयुक्त हुन्छ। + +छवि प्रशोधनका लागि उपलब्ध केही पायथन पुस्तकालयहरू छन्: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** विभिन्न छवि ढाँचाहरू पढ्न/लेख्न प्रयोग गर्न सकिन्छ। यसले ffmpeg पनि समर्थन गर्दछ, जुन भिडियो फ्रेमलाई छविमा रूपान्तरण गर्न उपयोगी उपकरण हो। +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL को रूपमा पनि चिनिन्छ) अलि शक्तिशाली छ, र केही छवि हेरफेर जस्तै मोर्फिङ, प्यालेट समायोजन, र अन्य कुराहरू समर्थन गर्दछ। +* **[OpenCV](https://opencv.org/)** C++ मा लेखिएको शक्तिशाली छवि प्रशोधन पुस्तकालय हो, जुन छवि प्रशोधनको *डि फ्याक्टो* मानक बनिसकेको छ। यसमा पायथन इन्टरफेस छ। +* **[dlib](http://dlib.net/)** C++ पुस्तकालय हो जसले धेरै मेसिन लर्निङ एल्गोरिदमहरू कार्यान्वयन गर्दछ, जसमा केही कम्प्युटर भिजन एल्गोरिदमहरू पनि समावेश छन्। यसमा पायथन इन्टरफेस छ, र अनुहार तथा अनुहारको विशेषता पहिचान जस्ता चुनौतीपूर्ण कार्यहरूका लागि प्रयोग गर्न सकिन्छ। + +## OpenCV + +[OpenCV](https://opencv.org/) छवि प्रशोधनको *डि फ्याक्टो* मानक मानिन्छ। यसमा धेरै उपयोगी एल्गोरिदमहरू छन्, जुन C++ मा कार्यान्वयन गरिएको छ। तपाईं OpenCV लाई पायथनबाट पनि कल गर्न सक्नुहुन्छ। + +OpenCV सिक्नको लागि राम्रो ठाउँ [यो Learn OpenCV कोर्स](https://learnopencv.com/getting-started-with-opencv/) हो। हाम्रो पाठ्यक्रममा, हाम्रो उद्देश्य OpenCV सिक्नु होइन, तर केही उदाहरणहरू देखाउनु हो जहाँ यसलाई प्रयोग गर्न सकिन्छ, र कसरी। + +### छवि लोड गर्ने + +पायथनमा छविहरूलाई सजिलैसँग NumPy एरेहरूद्वारा प्रतिनिधित्व गर्न सकिन्छ। उदाहरणका लागि, 320x200 पिक्सेलको साइज भएको ग्रेस्केल छविहरूलाई 200x320 एरेमा भण्डारण गरिन्छ, र समान आयामको रंगीन छविहरूको आकार 200x320x3 हुन्छ (3 रंग च्यानलहरूको लागि)। छवि लोड गर्न, तपाईं निम्न कोड प्रयोग गर्न सक्नुहुन्छ: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +परम्परागत रूपमा, OpenCV ले रंगीन छविहरूको लागि BGR (ब्लू-ग्रीन-रेड) इन्कोडिङ प्रयोग गर्दछ, जबकि पायथनका अन्य उपकरणहरूले अधिक परम्परागत RGB (रेड-ग्रीन-ब्लू) प्रयोग गर्दछ। छवि सही देखिनको लागि, तपाईंले यसलाई RGB रंग स्पेसमा रूपान्तरण गर्न आवश्यक छ, या त NumPy एरेमा आयामहरू स्वाप गरेर, या OpenCV फंक्शन कल गरेर: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +उही `cvtColor` फंक्शन अन्य रंग स्पेस रूपान्तरणहरू जस्तै छविलाई ग्रेस्केलमा वा HSV (Hue-Saturation-Value) रंग स्पेसमा रूपान्तरण गर्न प्रयोग गर्न सकिन्छ। + +तपाईं OpenCV प्रयोग गरेर भिडियो फ्रेम-बाइ-फ्रेम लोड गर्न पनि सक्नुहुन्छ - उदाहरण [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मा दिइएको छ। + +### छवि प्रशोधन + +छवि न्युरल नेटवर्कमा पठाउनु अघि, तपाईंले केही पूर्व-प्रशोधन चरणहरू लागू गर्न चाहनुहुन्छ। OpenCV ले धेरै कुराहरू गर्न सक्छ, जस्तै: + +* **छवि आकार परिवर्तन** `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` प्रयोग गरेर +* **ब्लरिङ** `im = cv2.medianBlur(im,3)` वा `im = cv2.GaussianBlur(im, (3,3), 0)` प्रयोग गरेर +* छविको **चमक र कन्ट्रास्ट परिवर्तन** NumPy एरे हेरफेरद्वारा गर्न सकिन्छ, जस्तै [यो Stackoverflow नोटमा वर्णन गरिएको छ](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv)। +* [थ्रेसहोल्डिङ](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) प्रयोग गरेर `cv2.threshold`/`cv2.adaptiveThreshold` फंक्शनहरू कल गर्नु, जुन प्राय: चमक वा कन्ट्रास्ट समायोजन गर्नभन्दा राम्रो हुन्छ। +* छविमा विभिन्न [रूपान्तरणहरू](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) लागू गर्नु: + - **[Affine रूपान्तरणहरू](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** उपयोगी हुन सक्छ यदि तपाईंलाई छविमा तीन बिन्दुको स्रोत र गन्तव्य स्थान थाहा छ र तपाईंले घुमाउने, आकार परिवर्तन गर्ने र झुकाउने संयोजन गर्न आवश्यक छ। Affine रूपान्तरणहरूले समानान्तर रेखाहरू समानान्तर राख्छ। + - **[Perspective रूपान्तरणहरू](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** उपयोगी हुन सक्छ जब तपाईंलाई छविमा चार बिन्दुको स्रोत र गन्तव्य स्थान थाहा छ। उदाहरणका लागि, यदि तपाईंले स्मार्टफोन क्यामेराबाट कोणबाट आयताकार कागजातको तस्बिर लिन्छन्, र तपाईंले कागजातको आयताकार छवि बनाउन चाहनुहुन्छ। +* छविभित्रको गति बुझ्न **[optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** प्रयोग गरेर। + +## कम्प्युटर भिजन प्रयोगका उदाहरणहरू + +हाम्रो [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) मा, हामी केही उदाहरणहरू दिन्छौं जहाँ कम्प्युटर भिजन विशिष्ट कार्यहरू गर्न प्रयोग गर्न सकिन्छ: + +* **ब्रेल पुस्तकको तस्बिर पूर्व-प्रशोधन**। हामी थ्रेसहोल्डिङ, विशेषता पहिचान, परिप्रेक्ष्य रूपान्तरण र NumPy हेरफेरहरू प्रयोग गरेर ब्रेल प्रतीकहरूलाई अलग गर्नेमा केन्द्रित छौं ताकि न्युरल नेटवर्कद्वारा थप वर्गीकरण गर्न सकियोस्। + +![ब्रेल छवि](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ne.jpeg) | ![पूर्व-प्रशोधित ब्रेल छवि](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ne.png) | ![ब्रेल प्रतीकहरू](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ne.png) +----|-----|----- + +> छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) बाट + +* **फ्रेम भिन्नता प्रयोग गरेर भिडियोमा गति पत्ता लगाउने**। यदि क्यामेरा स्थिर छ भने, क्यामेरा फिडका फ्रेमहरू एकअर्कासँग धेरै समान हुनुपर्छ। किनभने फ्रेमहरू एरेको रूपमा प्रतिनिधित्व गरिन्छ, दुई लगातार फ्रेमहरूको एरे घटाएर हामी पिक्सेल भिन्नता प्राप्त गर्नेछौं, जुन स्थिर फ्रेमहरूको लागि कम हुनुपर्छ, र छविमा पर्याप्त गति हुँदा उच्च हुन्छ। + +![भिडियो फ्रेम र फ्रेम भिन्नताको छवि](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ne.png) + +> छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) बाट + +* **Optical Flow प्रयोग गरेर गति पत्ता लगाउने**। [Optical flow](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ले हामीलाई भिडियो फ्रेमहरूमा व्यक्तिगत पिक्सेलहरू कसरी सर्छन् भन्ने बुझ्न अनुमति दिन्छ। Optical flow का दुई प्रकार छन्: + + - **Dense Optical Flow** प्रत्येक पिक्सेल कहाँ सर्छ भन्ने देखाउने भेक्टर फिल्ड गणना गर्छ। + - **Sparse Optical Flow** छविमा केही विशिष्ट विशेषताहरू (जस्तै किनाराहरू) लिन्छ, र फ्रेमदेखि फ्रेमसम्म तिनको ट्राजेक्टोरी बनाउँछ। + +![Optical Flow को छवि](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ne.png) + +> छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) बाट + +## ✍️ उदाहरण नोटबुकहरू: OpenCV [OpenCV प्रयोग गरेर हेर्नुहोस्](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +OpenCV Notebook [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) अन्वेषण गरेर केही प्रयोग गरौं। + +## निष्कर्ष + +कहिलेकाहीं, जटिल कार्यहरू जस्तै गति पत्ता लगाउने वा औंलाको टुप्पो पत्ता लगाउने कार्यहरू केवल कम्प्युटर भिजनद्वारा समाधान गर्न सकिन्छ। त्यसैले, कम्प्युटर भिजनका आधारभूत प्रविधिहरू र OpenCV जस्ता पुस्तकालयहरूले के गर्न सक्छन् भन्ने जान्नु धेरै उपयोगी हुन्छ। + +## 🚀 चुनौती + +AI शोको [यो भिडियो](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) हेर्नुहोस् Cortic Tigers परियोजनाको बारेमा जान्न र कसरी उनीहरूले रोबोटमार्फत कम्प्युटर भिजन कार्यहरूलाई लोकतान्त्रिक बनाउन ब्लक-आधारित समाधान निर्माण गरे। यस क्षेत्रमा नयाँ सिक्नेहरूलाई सहयोग गर्ने अन्य परियोजनाहरूको बारेमा अनुसन्धान गर्नुहोस्। + +## [पश्चात-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## समीक्षा र आत्म अध्ययन + +Optical flow को बारेमा [यो उत्कृष्ट ट्यूटोरियल](https://learnopencv.com/optical-flow-in-opencv/) पढ्नुहोस्। + +## [असाइनमेन्ट](lab/README.md) + +यस प्रयोगशालामा, तपाईंले साधारण इशाराहरू भएको भिडियो लिनेछ, र तपाईंको लक्ष्य Optical Flow प्रयोग गरेर माथि/तल/बायाँ/दायाँको गति निकाल्नु हुनेछ। + +पाम मूभमेन्ट फ्रेम + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ne/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..aeff0c27 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# अप्टिकल फ्लो प्रयोग गरेर चाल पत्ता लगाउने + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +[यो भिडियो](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) हेर्नुहोस्, जहाँ एक व्यक्तिको हातको पञ्जा स्थिर पृष्ठभूमिमा बायाँ/दायाँ/माथि/तल सर्छ। + +**तपाईंको लक्ष्य** अप्टिकल फ्लो प्रयोग गरेर भिडियोका कुन भागमा माथि/तल/बायाँ/दायाँ चाल भएको छ भनेर पत्ता लगाउनु हो। + +**अतिरिक्त चुनौती** स्किन टोन प्रयोग गरेर हातको पञ्जा वा औंलाको चाल ट्र्याक गर्नु हो, जस्तै [यस ब्लग पोस्टमा](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) वा [यहाँ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) वर्णन गरिएको छ। + +## सुरुवात नोटबुक + +[MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) खोल्दै ल्याब सुरु गर्नुहोस्। + +## मुख्य कुरा + +कहिलेकाहीँ, चाल पत्ता लगाउने वा औंलाको टुप्पो पत्ता लगाउने जस्ता अपेक्षाकृत जटिल कार्यहरू केवल कम्प्युटर भिजन प्रयोग गरेर समाधान गर्न सकिन्छ। त्यसैले, OpenCV जस्ता लाइब्रेरीहरूले के गर्न सक्छन् भन्ने जान्नु धेरै उपयोगी हुन्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ne/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..272ae91f --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# प्रख्यात CNN आर्किटेक्चरहरू + +### VGG-16 + +VGG-16 एउटा नेटवर्क हो जसले २०१४ मा ImageNet को टप-५ वर्गीकरणमा ९२.७% शुद्धता हासिल गरेको थियो। यसको लेयर संरचना यस प्रकार छ: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ne.jpg) + +जसरी तपाईं देख्न सक्नुहुन्छ, VGG ले परम्परागत पिरामिड आर्किटेक्चर अनुसरण गर्दछ, जुन कनभोल्युसन-पुलिङ लेयरहरूको क्रम हो। + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ne.jpg) + +> तस्बिर [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) बाट + +### ResNet + +ResNet मोडेलहरूको एउटा परिवार हो जुन २०१५ मा Microsoft Research द्वारा प्रस्ताव गरिएको थियो। ResNet को मुख्य विचार भनेको **residual blocks** प्रयोग गर्नु हो: + + + +> तस्बिर [यस पेपर](https://arxiv.org/pdf/1512.03385.pdf) बाट + +Identity pass-through प्रयोग गर्ने कारण भनेको हाम्रो लेयरले अघिल्लो लेयरको नतिजा र residual block को आउटपुट बीचको **अन्तर** भविष्यवाणी गर्न हो - त्यसैले यसलाई *residual* भनिन्छ। यी ब्लकहरू प्रशिक्षण गर्न धेरै सजिलो हुन्छ, र सयौं ब्लकहरू भएको नेटवर्क निर्माण गर्न सकिन्छ (सबैभन्दा सामान्य भेरियन्टहरू ResNet-52, ResNet-101, र ResNet-152 हुन्)। + +तपाईं यस नेटवर्कलाई डेटासेटको जटिलतासँग समायोजन गर्न सक्षम भएको रूपमा पनि सोच्न सक्नुहुन्छ। सुरुमा, जब तपाईं नेटवर्क प्रशिक्षण गर्न थाल्नुहुन्छ, तौलहरूको मान सानो हुन्छ, र अधिकांश संकेत passthrough identity लेयरहरू मार्फत जान्छ। जब प्रशिक्षण अगाडि बढ्छ र तौलहरू ठूलो बन्छन्, नेटवर्क प्यारामिटरहरूको महत्त्व बढ्छ, र नेटवर्कले आवश्यक अभिव्यक्तिको शक्ति समायोजन गर्दछ ताकि प्रशिक्षण छविहरूलाई सही रूपमा वर्गीकृत गर्न सकियोस्। + +### Google Inception + +Google Inception आर्किटेक्चरले यस विचारलाई अझ एक कदम अगाडि लैजान्छ, र प्रत्येक नेटवर्क लेयरलाई विभिन्न पथहरूको संयोजनको रूपमा निर्माण गर्दछ: + + + +> तस्बिर [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) बाट + +यहाँ, हामीले १x१ कनभोल्युसनहरूको भूमिकालाई जोड दिनुपर्छ, किनभने सुरुमा तिनीहरू अर्थपूर्ण लाग्दैनन्। किन हामीले १x१ फिल्टरको साथ छविमा चलाउन आवश्यक छ? तर, तपाईंले सम्झनुपर्छ कि कनभोल्युसन फिल्टरहरूले धेरै गहिराइ च्यानलहरूसँग पनि काम गर्छन् (मूलतः - RGB रंगहरू, त्यसपछि अन्य फिल्टरहरूको लागि च्यानलहरू), र १x१ कनभोल्युसन इनपुट च्यानलहरूलाई विभिन्न ट्रेन योग्य तौलहरूको प्रयोग गरेर मिसाउन प्रयोग गरिन्छ। यसलाई च्यानल आयाममा डाउनस्याम्पलिङ (पुलिङ) को रूपमा पनि हेरिन सक्छ। + +यस विषयमा [एक राम्रो ब्लग पोस्ट](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) छ, र [मूल पेपर](https://arxiv.org/pdf/1312.4400.pdf) पनि। + +### MobileNet + +MobileNet साना आकारका मोडेलहरूको परिवार हो, जुन मोबाइल उपकरणहरूको लागि उपयुक्त छ। यदि तपाईं स्रोतहरूमा कमी हुनुहुन्छ र थोरै शुद्धता त्याग्न सक्नुहुन्छ भने तिनीहरू प्रयोग गर्नुहोस्। यसको मुख्य विचार भनेको **depthwise separable convolution** हो, जसले कनभोल्युसन फिल्टरहरूलाई स्थानिक कनभोल्युसन र गहिराइ च्यानलहरूमा १x१ कनभोल्युसनको संरचनाबाट प्रतिनिधित्व गर्न अनुमति दिन्छ। यसले प्यारामिटरहरूको संख्या उल्लेखनीय रूपमा घटाउँछ, जसले नेटवर्कलाई सानो आकारको बनाउँछ, र कम डाटाको साथ प्रशिक्षण गर्न सजिलो बनाउँछ। + +MobileNet सम्बन्धी [एक राम्रो ब्लग पोस्ट](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) यहाँ छ। + +## निष्कर्ष + +यस इकाईमा, तपाईंले कम्प्युटर भिजन न्यूरल नेटवर्कहरूको मुख्य अवधारणा - कनभोल्युसनल नेटवर्कहरू - सिक्नुभयो। छवि वर्गीकरण, वस्तु पहिचान, र छवि उत्पादन नेटवर्कहरूलाई शक्ति दिने वास्तविक जीवनका आर्किटेक्चरहरू सबै CNNs मा आधारित छन्, केवल थप लेयरहरू र केही अतिरिक्त प्रशिक्षण तरिकाहरूको साथ। + +## 🚀 चुनौती + +संगैका नोटबुकहरूमा, उच्च शुद्धता प्राप्त गर्ने तरिकाहरूको बारेमा तल नोटहरू छन्। केही प्रयोगहरू गर्नुहोस् र हेर्नुहोस् कि तपाईं उच्च शुद्धता प्राप्त गर्न सक्नुहुन्छ कि। + +## [पोस्ट-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## समीक्षा र आत्म-अध्ययन + +यद्यपि CNNs प्रायः कम्प्युटर भिजन कार्यहरूको लागि प्रयोग गरिन्छ, तिनीहरू सामान्यतया निश्चित आकारका ढाँचाहरू निकाल्नका लागि राम्रो हुन्छन्। उदाहरणका लागि, यदि हामी ध्वनिहरूसँग व्यवहार गर्दैछौं भने, हामीले अडियो सिग्नलमा केही विशिष्ट ढाँचाहरू खोज्न CNNs प्रयोग गर्न चाहन सक्छौं - जसको अवस्थामा फिल्टरहरू १-आयामिक हुनेछन् (र यस CNN लाई 1D-CNN भनिन्छ)। साथै, कहिलेकाहीं 3D-CNN बहु-आयामिक ठाउँमा सुविधाहरू निकाल्न प्रयोग गरिन्छ, जस्तै भिडियोमा हुने निश्चित घटनाहरू - CNN ले समयसँगै परिवर्तन हुने सुविधाहरूको ढाँचाहरू समात्न सक्छ। CNNs द्वारा गर्न सकिने अन्य कार्यहरूको बारेमा समीक्षा र आत्म-अध्ययन गर्नुहोस्। + +## [असाइनमेन्ट](lab/README.md) + +यस प्रयोगशालामा, तपाईंलाई विभिन्न बिरालो र कुकुरका प्रजातिहरू वर्गीकृत गर्न जिम्मा दिइएको छ। यी छविहरू MNIST डेटासेटभन्दा बढी जटिल छन् र उच्च आयामका छन्, र १० भन्दा बढी वर्गहरू छन्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ne/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..ee1e95b2 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Convolutional Neural Networks + +हामीले पहिले देखिसकेका छौं कि न्युरल नेटवर्कहरू छविहरूसँग राम्रोसँग काम गर्न सक्षम छन्, र एक-लेयर पर्सेप्ट्रोनले पनि MNIST डेटासेटबाट हस्तलेखन गरिएको अंकहरू उचित शुद्धतासहित चिन्हित गर्न सक्षम छ। तर, MNIST डेटासेट विशेष छ, र सबै अंकहरू छविको बीचमा केन्द्रित छन्, जसले कार्यलाई सरल बनाउँछ। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +वास्तविक जीवनमा, हामी छविमा वस्तुहरूको ठ्याक्कै स्थानको पर्वाह नगरी तिनीहरूलाई चिन्हित गर्न सक्षम हुन चाहन्छौं। कम्प्युटर भिजन सामान्य वर्गीकरणभन्दा फरक छ, किनकि जब हामी छविमा कुनै निश्चित वस्तु खोज्ने प्रयास गरिरहेका हुन्छौं, हामी छविलाई स्क्यान गर्दै केही विशेष **ढाँचाहरू** र तिनीहरूको संयोजन खोजिरहेका हुन्छौं। उदाहरणका लागि, बिरालो खोज्दा, हामी पहिले तेर्सो रेखाहरू खोज्न सक्छौं, जसले जुँगा बनाउन सक्छ, र त्यसपछि जुँगाको निश्चित संयोजनले हामीलाई यो वास्तवमा बिरालोको तस्वीर हो भन्ने बताउन सक्छ। ढाँचाहरूको सापेक्ष स्थिति र उपस्थिति महत्त्वपूर्ण छ, तर तिनीहरूको ठ्याक्कै स्थान महत्त्वपूर्ण छैन। + +ढाँचाहरू निकाल्न, हामी **कन्भोल्युसनल फिल्टरहरू** को अवधारणा प्रयोग गर्नेछौं। तपाईंलाई थाहा छ, छवि 2D-म्याट्रिक्स वा रंग गहिराइ भएको 3D-टेन्सरद्वारा प्रतिनिधित्व गरिन्छ। फिल्टर लागू गर्नुको मतलब हामी सानो **फिल्टर कर्नेल** म्याट्रिक्स लिन्छौं, र मूल छविको प्रत्येक पिक्सेलको लागि हामी छिमेकी बिन्दुहरूसँग तौलित औसत गणना गर्छौं। हामी यसलाई सानो झ्यालले सम्पूर्ण छविमा स्लाइड गर्दै, र फिल्टर कर्नेल म्याट्रिक्समा तौलहरू अनुसार सबै पिक्सेलहरू औसत गर्दै हेर्न सक्छौं। + +![Vertical Edge Filter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ne.png) | ![Horizontal Edge Filter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ne.png) +----|---- + +> छवि: दिमित्री सोश्निकोभ + +उदाहरणका लागि, यदि हामी MNIST अंकहरूमा 3x3 तेर्सो किनारा र ठाडो किनारा फिल्टरहरू लागू गर्छौं भने, हामी मूल छविमा ठाडो र तेर्सो किनाराहरू भएको ठाउँमा हाइलाइटहरू (जस्तै उच्च मानहरू) प्राप्त गर्न सक्छौं। त्यसैले ती दुई फिल्टरहरू किनाराहरू "खोज्न" प्रयोग गर्न सकिन्छ। यसैगरी, हामी अन्य तल्लो-स्तरका ढाँचाहरू खोज्न विभिन्न फिल्टरहरू डिजाइन गर्न सक्छौं: + +> [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) को छवि + +तर, हामी ढाँचाहरू निकाल्न फिल्टरहरू म्यानुअली डिजाइन गर्न सक्ने भए पनि, हामी नेटवर्कलाई यसरी डिजाइन गर्न सक्छौं कि यसले ढाँचाहरू स्वतः सिक्छ। यो CNN को पछाडि मुख्य विचारहरू मध्ये एक हो। + +## CNN को मुख्य विचारहरू + +CNN काम गर्ने तरिका निम्न महत्त्वपूर्ण विचारहरूमा आधारित छ: + +* कन्भोल्युसनल फिल्टरहरूले ढाँचाहरू निकाल्न सक्छन् +* हामी नेटवर्कलाई यसरी डिजाइन गर्न सक्छौं कि फिल्टरहरू स्वतः प्रशिक्षित हुन्छन् +* हामी उच्च-स्तरका विशेषताहरूमा ढाँचाहरू खोज्न पनि यही दृष्टिकोण प्रयोग गर्न सक्छौं, केवल मूल छविमा मात्र होइन। यसरी CNN विशेषता निकाल्ने काम विशेषताको पदानुक्रममा हुन्छ, तल्लो-स्तरका पिक्सेल संयोजनहरूबाट सुरु गरेर, छविका भागहरूको उच्च-स्तर संयोजनसम्म। + +![Hierarchical Feature Extraction](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ne.png) + +> छवि: [Hislop-Lynch को पेपर](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) बाट, [तिनीहरूको अनुसन्धान](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) मा आधारित + +## ✍️ अभ्यासहरू: कन्भोल्युसनल न्युरल नेटवर्कहरू + +आउनुहोस् कन्भोल्युसनल न्युरल नेटवर्कहरू कसरी काम गर्छन् र कसरी हामी प्रशिक्षित गर्न सकिने फिल्टरहरू प्राप्त गर्न सक्छौं भनेर बुझ्न सम्बन्धित नोटबुकहरूमा काम गरौं: + +* [कन्भोल्युसनल न्युरल नेटवर्कहरू - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [कन्भोल्युसनल न्युरल नेटवर्कहरू - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## पिरामिड आर्किटेक्चर + +छवि प्रशोधनका लागि प्रयोग गरिने अधिकांश CNNहरूले तथाकथित पिरामिड आर्किटेक्चर अनुसरण गर्छन्। मूल छविहरूमा लागू गरिएको पहिलो कन्भोल्युसनल लेयरमा सामान्यतया तुलनात्मक रूपमा कम संख्याका फिल्टरहरू (8-16) हुन्छन्, जसले तेर्सो/ठाडो रेखाहरू जस्ता विभिन्न पिक्सेल संयोजनहरूलाई प्रतिनिधित्व गर्छ। अर्को स्तरमा, हामी नेटवर्कको स्थानिक आयाम घटाउँछौं, र फिल्टरहरूको संख्या बढाउँछौं, जसले साधारण विशेषताहरूको थप सम्भावित संयोजनहरूलाई प्रतिनिधित्व गर्छ। प्रत्येक तहमा, अन्तिम वर्गीकरणतर्फ जाँदा, छविको स्थानिक आयाम घट्छ, र फिल्टरहरूको संख्या बढ्छ। + +उदाहरणका लागि, VGG-16 को आर्किटेक्चरलाई हेरौं, जसले 2014 मा ImageNet को शीर्ष-5 वर्गीकरणमा 92.7% शुद्धता प्राप्त गर्‍यो: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ne.jpg) + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ne.jpg) + +> छवि: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) बाट + +## सबैभन्दा प्रख्यात CNN आर्किटेक्चरहरू + +[सबैभन्दा प्रख्यात CNN आर्किटेक्चरहरूको अध्ययन जारी राख्नुहोस्](CNN_Architectures.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ne/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..bb4b1b08 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# पाल्तु जनावरहरूको अनुहारको वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +कल्पना गर्नुहोस् कि तपाईंले पाल्तु जनावरहरूको नर्सरीको लागि सबै जनावरहरूको सूची बनाउन एउटा एप्लिकेसन विकास गर्नुपर्नेछ। यस्तो एप्लिकेसनको एक उत्कृष्ट विशेषता भनेको फोटोबाट स्वचालित रूपमा प्रजाति पत्ता लगाउने क्षमता हुनेछ। यो कार्य न्यूरल नेटवर्कहरूको प्रयोग गरेर सफलतापूर्वक गर्न सकिन्छ। + +तपाईंले **Pet Faces** डाटासेट प्रयोग गरेर बिरालो र कुकुरका विभिन्न प्रजातिहरूलाई वर्गीकरण गर्न एक कनभोल्युसनल न्यूरल नेटवर्क प्रशिक्षण गर्नुपर्नेछ। + +## डाटासेट + +हामी **Pet Faces** डाटासेट प्रयोग गर्नेछौं, जुन [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पाल्तु जनावरहरूको डाटासेटबाट लिइएको हो। यसमा कुकुर र बिरालोका ३५ विभिन्न प्रजातिहरू समावेश छन्। + +![हामीले प्रयोग गर्ने डाटासेट](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ne.png) + +डाटासेट डाउनलोड गर्न, यो कोड स्निपेट प्रयोग गर्नुहोस्: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## नोटबुक सुरु गर्नुहोस् + +[PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) खोल्दै ल्याब सुरु गर्नुहोस्। + +## मुख्य सिकाइ + +तपाईंले सुरुबाट नै छविको वर्गीकरणको जटिल समस्या समाधान गर्नुभयो! धेरै वर्गहरू थिए, तर तपाईंले अझै पनि राम्रो सटीकता प्राप्त गर्न सक्नुभयो! साथै, शीर्ष-k सटीकता मापन गर्नु पनि महत्त्वपूर्ण छ, किनभने केही वर्गहरूलाई छुट्याउन मानिसहरूलाई पनि गाह्रो हुन सक्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेजलाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ne/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..be9e3536 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# पूर्व-प्रशिक्षित नेटवर्कहरू र ट्रान्सफर लर्निङ + +CNN हरूलाई प्रशिक्षण दिन धेरै समय लाग्न सक्छ, र यसका लागि धेरै डाटा आवश्यक पर्छ। तर, धेरैजसो समय नेटवर्कले तल्लो-स्तरका फिल्टरहरू सिक्नमा खर्च हुन्छ, जसले छविहरूबाट ढाँचाहरू निकाल्न प्रयोग गर्न सकिन्छ। एउटा स्वाभाविक प्रश्न उठ्छ - के हामी एउटा डेटासेटमा प्रशिक्षित न्यूरल नेटवर्कलाई प्रयोग गरेर फरक छविहरू वर्गीकृत गर्न अनुकूलन गर्न सक्छौं, पूर्ण प्रशिक्षण प्रक्रिया बिना? + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +यस दृष्टिकोणलाई **ट्रान्सफर लर्निङ** भनिन्छ, किनभने हामी एउटा न्यूरल नेटवर्क मोडेलबाट अर्कोमा केही ज्ञान स्थानान्तरण गर्छौं। ट्रान्सफर लर्निङमा, हामी सामान्यतया एउटा पूर्व-प्रशिक्षित मोडेलबाट सुरु गर्छौं, जुन ठूलो छवि डेटासेट, जस्तै **ImageNet**, मा प्रशिक्षित गरिएको हुन्छ। ती मोडेलहरूले पहिले नै सामान्य छविहरूबाट विभिन्न विशेषताहरू निकाल्न राम्रो काम गर्न सक्छन्, र धेरै अवस्थामा ती निकालेका विशेषताहरूको आधारमा एउटा वर्गीकर्ता निर्माण गर्दा राम्रो नतिजा दिन सक्छ। + +> ✅ ट्रान्सफर लर्निङ अन्य शैक्षिक क्षेत्रहरूमा पनि पाइन्छ, जस्तै शिक्षा। यसले एउटा क्षेत्रमा लिइएको ज्ञानलाई अर्को क्षेत्रमा लागू गर्ने प्रक्रियालाई जनाउँछ। + +## पूर्व-प्रशिक्षित मोडेलहरूलाई विशेषता निकाल्ने उपकरणको रूपमा प्रयोग गर्नु + +हामीले अघिल्लो खण्डमा चर्चा गरेका कन्भोल्युसनल नेटवर्कहरूमा धेरै तहहरू हुन्छन्, जसले छविबाट केही विशेषताहरू निकाल्नुपर्छ। यो प्रक्रिया तल्लो-स्तरका पिक्सेल संयोजनहरू (जस्तै तेर्सो/ठाडो रेखा वा स्ट्रोक) बाट सुरु भएर उच्च-स्तरका विशेषताहरू (जस्तै ज्वालाको आँखा) सम्म पुग्छ। यदि हामीले सामान्य र विविध छविहरूको पर्याप्त ठूलो डेटासेटमा CNN प्रशिक्षण गर्‍यौं भने, नेटवर्कले ती सामान्य विशेषताहरू निकाल्न सिक्नुपर्छ। + +Keras र PyTorch दुबैमा सामान्य आर्किटेक्चरहरूको लागि पूर्व-प्रशिक्षित न्यूरल नेटवर्क वेटहरू सजिलै लोड गर्नका लागि कार्यहरू छन्, जसको धेरैजसो ImageNet छविहरूमा प्रशिक्षित गरिएका छन्। प्रायः प्रयोग गरिने मोडेलहरू [CNN आर्किटेक्चरहरू](../07-ConvNets/CNN_Architectures.md) पृष्ठमा वर्णन गरिएका छन्। विशेष गरी, तपाईं निम्नमध्ये कुनै एक प्रयोग गर्न विचार गर्न सक्नुहुन्छ: + +* **VGG-16/VGG-19**: यी तुलनात्मक रूपमा सरल मोडेलहरू हुन्, जसले अझै राम्रो शुद्धता दिन्छन्। ट्रान्सफर लर्निङ कसरी काम गरिरहेको छ भनेर हेर्न VGG प्रयोग गर्नु राम्रो पहिलो प्रयास हुन सक्छ। +* **ResNet**: यो मोडेलहरूको परिवार हो, जुन Microsoft Research ले २०१५ मा प्रस्ताव गरेको थियो। यीमा धेरै तहहरू हुन्छन्, जसले गर्दा बढी स्रोतहरू आवश्यक पर्छ। +* **MobileNet**: यो सानो आकारका मोडेलहरूको परिवार हो, जुन मोबाइल उपकरणहरूको लागि उपयुक्त छ। यदि तपाईं स्रोतहरूमा सीमित हुनुहुन्छ र थोरै शुद्धता त्याग्न सक्नुहुन्छ भने, यी प्रयोग गर्नुहोस्। + +यहाँ VGG-16 नेटवर्कले बिरालोको तस्वीरबाट निकालेका नमूना विशेषताहरू छन्: + +![VGG-16 द्वारा निकालेका विशेषताहरू](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ne.png) + +## बिरालो र कुकुर डेटासेट + +यस उदाहरणमा, हामी [बिरालो र कुकुर](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) को डेटासेट प्रयोग गर्नेछौं, जुन वास्तविक जीवनको छवि वर्गीकरण परिदृश्यसँग धेरै नजिक छ। + +## ✍️ अभ्यास: ट्रान्सफर लर्निङ + +आउनुहोस्, सम्बन्धित नोटबुकहरूमा ट्रान्सफर लर्निङलाई कार्यान्वयनमा हेर्नुहोस्: + +* [ट्रान्सफर लर्निङ - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [ट्रान्सफर लर्निङ - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## प्रतिकूल बिरालोको दृश्यकरण + +पूर्व-प्रशिक्षित न्यूरल नेटवर्कको *मस्तिष्क* भित्र विभिन्न ढाँचाहरू हुन्छन्, जसमा **आदर्श बिरालो** (र आदर्श कुकुर, आदर्श जेब्रा, आदि) को अवधारणाहरू पनि समावेश छन्। यो छवि कसरी **दृश्यकरण गर्ने** भन्ने कुरा रोचक हुनेछ। तर, यो सजिलो छैन, किनभने ढाँचाहरू नेटवर्क वेटहरूमा फैलिएका हुन्छन्, र तिनीहरू पदानुक्रमित संरचनामा व्यवस्थित हुन्छन्। + +हामीले लिन सक्ने एउटा दृष्टिकोण भनेको एउटा अनियमित छविबाट सुरु गर्नु हो, र त्यसपछि **ग्रेडियन्ट डिसेन्ट अप्टिमाइजेसन** प्रविधि प्रयोग गरेर त्यो छविलाई यसरी समायोजन गर्नु हो, जसले गर्दा नेटवर्कले यसलाई बिरालो ठान्न थाल्छ। + +![छवि अप्टिमाइजेसन लूप](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ne.png) + +तर, यदि हामीले यसो गर्‍यौं भने, हामीले अनियमित आवाजसँग मिल्दोजुल्दो केही प्राप्त गर्नेछौं। यसको कारण हो *नेटवर्कलाई इनपुट छवि बिरालो हो भनेर सोच्न बनाउने धेरै तरिकाहरू छन्*, जसमा केही दृश्य रूपमा अर्थपूर्ण हुँदैनन्। ती छविहरूमा बिरालोका लागि विशिष्ट धेरै ढाँचाहरू हुन्छन्, तर तिनीहरूलाई दृश्य रूपमा फरक पार्ने कुनै बाध्यता हुँदैन। + +नतिजा सुधार गर्न, हामी हानि कार्यमा अर्को पद थप्न सक्छौं, जसलाई **भिन्नता हानि** भनिन्छ। यो एउटा मेट्रिक हो, जसले छविका छिमेकी पिक्सेलहरू कत्तिको समान छन् भनेर देखाउँछ। भिन्नता हानिलाई न्यूनतम बनाउँदा छवि चिल्लो हुन्छ, र आवाज हट्छ - जसले गर्दा दृश्य रूपमा आकर्षक ढाँचाहरू प्रकट हुन्छन्। यहाँ यस्ता "आदर्श" छविहरूको उदाहरण छ, जसलाई उच्च सम्भावनाका साथ बिरालो र जेब्रा भनेर वर्गीकृत गरिएको छ: + +![आदर्श बिरालो](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ne.png) | ![आदर्श जेब्रा](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ne.png) +-----|----- + *आदर्श बिरालो* | *आदर्श जेब्रा* + +यस्तै दृष्टिकोण प्रयोग गरेर तथाकथित **प्रतिकूल आक्रमणहरू** न्यूरल नेटवर्कमा गर्न सकिन्छ। मानौं हामीले न्यूरल नेटवर्कलाई मूर्ख बनाउनुपर्छ र कुकुरलाई बिरालो जस्तो देखाउनुपर्छ। यदि हामीले कुकुरको छवि लियौं, जसलाई नेटवर्कले कुकुर भनेर चिन्छ, हामी त्यसलाई अलिकति समायोजन गर्न सक्छौं, जबसम्म नेटवर्कले यसलाई बिरालो भनेर वर्गीकृत गर्न थाल्दैन: + +![कुकुरको तस्वीर](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ne.png) | ![कुकुरको तस्वीरलाई बिरालो भनेर वर्गीकृत गरिएको](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ne.png) +-----|----- +*कुकुरको मूल तस्वीर* | *कुकुरको तस्वीरलाई बिरालो भनेर वर्गीकृत गरिएको* + +माथिका नतिजाहरू पुन: उत्पादन गर्न कोड निम्न नोटबुकमा हेर्नुहोस्: + +* [आदर्श र प्रतिकूल बिरालो - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## निष्कर्ष + +ट्रान्सफर लर्निङ प्रयोग गरेर, तपाईंले अनुकूल वस्तु वर्गीकरण कार्यको लागि छिटो वर्गीकर्ता तयार गर्न र उच्च शुद्धता प्राप्त गर्न सक्नुहुन्छ। तपाईंले देख्न सक्नुहुन्छ कि हामी अहिले समाधान गरिरहेका जटिल कार्यहरू उच्च कम्प्युटेशनल पावर आवश्यक छ, र CPU मा सजिलै समाधान गर्न सकिँदैन। अर्को इकाईमा, हामी कम कम्प्युट स्रोतहरू प्रयोग गरेर उस्तै मोडेल प्रशिक्षण गर्न हल्का कार्यान्वयन प्रयोग गर्ने प्रयास गर्नेछौं, जसले थोरै कम शुद्धता परिणाम दिन्छ। + +## 🚀 चुनौती + +संगत नोटबुकहरूमा, तल नोटहरू छन् कि ट्रान्सफर ज्ञान समान प्रकारको प्रशिक्षण डाटासँग राम्रोसँग काम गर्छ (सायद नयाँ प्रकारको जनावर)। पूर्ण रूपमा नयाँ प्रकारका छविहरूसँग केही प्रयोग गरेर हेर्नुहोस् कि तपाईंको ट्रान्सफर ज्ञान मोडेलहरूले कत्तिको राम्रो वा नराम्रो प्रदर्शन गर्छन्। + +## [पश्च-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## समीक्षा र आत्म-अध्ययन + +[TrainingTricks.md](TrainingTricks.md) पढेर आफ्नो मोडेलहरू प्रशिक्षण गर्ने अन्य तरिकाहरूको ज्ञानलाई गहिरो बनाउनुहोस्। + +## [असाइनमेन्ट](lab/README.md) + +यस प्रयोगशालामा, हामी वास्तविक जीवनको [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जनावरहरूको डेटासेट प्रयोग गर्नेछौं, जसमा बिरालो र कुकुरका ३५ प्रजातिहरू छन्, र हामी ट्रान्सफर लर्निङ वर्गीकर्ता निर्माण गर्नेछौं। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ne/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..41025cc6 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# डीप लर्निङ प्रशिक्षणका तरिकाहरू + +जति जति न्यूरल नेटवर्कहरू गहिरो हुँदै जान्छन्, तिनीहरूको प्रशिक्षण प्रक्रिया झन् चुनौतीपूर्ण बन्दै जान्छ। एउटा मुख्य समस्या भनेको [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) वा [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) हो। [यो पोस्ट](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ले यी समस्याहरूको राम्रो परिचय दिन्छ। + +गहिरो नेटवर्कहरूको प्रशिक्षणलाई प्रभावकारी बनाउनका लागि केही प्रविधिहरू प्रयोग गर्न सकिन्छ। + +## मानहरूलाई उपयुक्त दायरामा राख्ने + +संख्यात्मक गणनाहरूलाई स्थिर बनाउनका लागि, हामी चाहन्छौं कि हाम्रो न्यूरल नेटवर्कभित्रका सबै मानहरू उपयुक्त स्केलमा रहून्, सामान्यतया [-1..1] वा [0..1]। यो धेरै कडा आवश्यकता होइन, तर फ्लोटिङ पोइन्ट गणनाहरूको प्रकृति यस्तो छ कि विभिन्न परिमाणका मानहरूलाई सँगै सही रूपमा हेरफेर गर्न सकिँदैन। उदाहरणका लागि, यदि हामी 10-10 र 1010 जोड्छौं भने, हामी सम्भवतः 1010 पाउँछौं, किनकि सानो मानलाई ठूलो मानको समान क्रममा "परिवर्तित" गरिन्छ, र यसरी म्यान्टिसा हराउँछ। + +धेरैजसो एक्टिभेसन फङ्सनहरू [-1..1] वरिपरि गैर-रेखीयता राख्छन्, त्यसैले सबै इनपुट डाटालाई [-1..1] वा [0..1] दायरामा स्केल गर्नु उपयुक्त हुन्छ। + +## सुरुवाती वजनको प्रारम्भिककरण + +आदर्श रूपमा, हामी चाहन्छौं कि नेटवर्क लेयरहरू पार गरेपछि मानहरू समान दायरामा रहून्। त्यसैले वजनहरूलाई यस्तो तरिकाले प्रारम्भिककरण गर्नु महत्त्वपूर्ण छ जसले मानहरूको वितरणलाई कायम राख्न सकोस्। + +सामान्य वितरण **N(0,1)** राम्रो विचार होइन, किनकि यदि हामीसँग *n* इनपुटहरू छन् भने, आउटपुटको मानक विचलन *n* हुनेछ, र मानहरू [0..1] दायराबाट बाहिर जान सक्ने सम्भावना हुन्छ। + +निम्न प्रारम्भिककरणहरू प्रायः प्रयोग गरिन्छ: + + * समान वितरण -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** यसले सुनिश्चित गर्छ कि शून्य औसत र मानक विचलन 1 भएका इनपुटहरूको औसत/मानक विचलन समान रहन्छ + * **N(0,√2/(n_in+n_out))** -- जसलाई **Xavier initialization** (`glorot`) भनिन्छ, यसले अगाडि र पछाडि प्रसारको क्रममा संकेतहरूलाई दायरामा राख्न मद्दत गर्छ + +## ब्याच नर्मलाइजेसन + +सही वजन प्रारम्भिककरण भए पनि, प्रशिक्षणको क्रममा वजनहरू अत्यधिक ठूलो वा सानो हुन सक्छन्, जसले संकेतहरूलाई उपयुक्त दायराबाट बाहिर लैजान्छ। हामी संकेतहरूलाई पुनः उपयुक्त दायरामा ल्याउन **नर्मलाइजेसन** प्रविधिहरू प्रयोग गर्न सक्छौं। यस्ता धेरै प्रविधिहरू छन् (Weight normalization, Layer Normalization), तर प्रायः प्रयोग गरिने भनेको ब्याच नर्मलाइजेसन हो। + +**ब्याच नर्मलाइजेसन** को विचार भनेको मिनिब्याचभरिका सबै मानहरूलाई ध्यानमा राखेर नर्मलाइजेसन गर्नु हो (जस्तै औसत घटाउने र मानक विचलनले भाग गर्ने)। यो नेटवर्क लेयरको रूपमा कार्यान्वयन गरिन्छ, जसले वजनहरू लागू गरेपछि तर एक्टिभेसन फङ्सन अघि नर्मलाइजेसन गर्छ। परिणामस्वरूप, हामी उच्च अन्तिम सटीकता र छिटो प्रशिक्षण देख्न सक्छौं। + +यहाँ ब्याच नर्मलाइजेसनको [मूल पेपर](https://arxiv.org/pdf/1502.03167.pdf), [विकिपीडियामा व्याख्या](https://en.wikipedia.org/wiki/Batch_normalization), र [एक राम्रो परिचयात्मक ब्लग पोस्ट](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (र [रूसी भाषामा](https://habrahabr.ru/post/309302/)) उपलब्ध छ। + +## ड्रपआउट + +**ड्रपआउट** एउटा रोचक प्रविधि हो जसले प्रशिक्षणको क्रममा केही प्रतिशत र्यान्डम न्यूरनहरू हटाउँछ। यो एउटा लेयरको रूपमा कार्यान्वयन गरिन्छ जसमा एउटा प्यारामिटर हुन्छ (हटाउनुपर्ने न्यूरनहरूको प्रतिशत, सामान्यतया 10%-50%), र प्रशिक्षणको क्रममा यो इनपुट भेक्टरका र्यान्डम तत्वहरूलाई शून्य बनाउँछ, त्यसपछि अर्को लेयरमा पठाउँछ। + +यो विचार अचम्म लाग्दो भए पनि, तपाईं [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) नोटबुकमा MNIST अंक वर्गीकरणकर्ता प्रशिक्षणमा ड्रपआउटको प्रभाव देख्न सक्नुहुन्छ। यसले प्रशिक्षणलाई छिटो बनाउँछ र कम प्रशिक्षण इपोक्समा उच्च सटीकता प्राप्त गर्न मद्दत गर्छ। + +यस प्रभावलाई विभिन्न तरिकाले व्याख्या गर्न सकिन्छ: + + * यसलाई मोडेलमा र्यान्डम झट्काको रूपमा मान्न सकिन्छ, जसले अनुकूलनलाई स्थानीय न्यूनतमबाट बाहिर लैजान्छ + * यसलाई *अप्रत्यक्ष मोडेल औसतकरण* को रूपमा मान्न सकिन्छ, किनकि ड्रपआउटको क्रममा हामी थोरै फरक मोडेल प्रशिक्षण गरिरहेका हुन्छौं + +> *केही मानिसहरू भन्छन् कि जब कुनै मातेको व्यक्तिले केही सिक्न प्रयास गर्छ, उसले अर्को बिहान यो राम्रोसँग सम्झन्छ, तुलनात्मक रूपमा एक sober व्यक्तिसँग, किनकि केही खराबी भएका न्यूरनहरू भएको मस्तिष्कले अर्थलाई राम्रोसँग बुझ्न अनुकूलन गर्छ। हामीले यो सत्य हो कि होइन भनेर कहिल्यै परीक्षण गरेका छैनौं।* + +## ओभरफिटिङ रोक्ने + +डीप लर्निङको एउटा महत्त्वपूर्ण पक्ष भनेको [ओभरफिटिङ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) रोक्न सक्षम हुनु हो। जबकि धेरै शक्तिशाली न्यूरल नेटवर्क मोडेल प्रयोग गर्ने लोभ लाग्न सक्छ, हामीले सधैं मोडेल प्यारामिटरहरूको संख्या र प्रशिक्षण नमूनाहरूको संख्या बीच सन्तुलन राख्नुपर्छ। + +> हामीले पहिले प्रस्तुत गरेको [ओभरफिटिङ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) को अवधारणा बुझ्न सुनिश्चित गर्नुहोस्! + +ओभरफिटिङ रोक्नका लागि केही तरिकाहरू छन्: + + * प्रारम्भिक रोकावट -- मान्यकरण सेटमा त्रुटि निरन्तर निगरानी गर्नुहोस् र जब मान्यकरण त्रुटि बढ्न थाल्छ, प्रशिक्षण रोक्नुहोस्। + * स्पष्ट वजन क्षय / नियमितीकरण -- उच्च वजनहरूको लागि हानि फङ्सनमा अतिरिक्त दण्ड थप्ने, जसले मोडेललाई धेरै अस्थिर परिणामहरू प्राप्त गर्नबाट रोक्छ + * मोडेल औसतकरण -- धेरै मोडेलहरू प्रशिक्षण गर्ने र त्यसपछि परिणाम औसत गर्ने। यसले भिन्नतालाई न्यूनतम गर्न मद्दत गर्छ। + * ड्रपआउट (अप्रत्यक्ष मोडेल औसतकरण) + +## अप्टिमाइजरहरू / प्रशिक्षण एल्गोरिदमहरू + +प्रशिक्षणको अर्को महत्त्वपूर्ण पक्ष भनेको राम्रो प्रशिक्षण एल्गोरिदम चयन गर्नु हो। जबकि शास्त्रीय **gradient descent** एक उचित विकल्प हो, यो कहिलेकाहीँ धेरै ढिलो हुन सक्छ, वा अन्य समस्याहरू उत्पन्न गर्न सक्छ। + +डीप लर्निङमा, हामी **Stochastic Gradient Descent** (SGD) प्रयोग गर्छौं, जुन प्रशिक्षण सेटबाट र्यान्डम रूपमा चयन गरिएका मिनिब्याचहरूमा लागू गरिएको gradient descent हो। वजनहरू निम्न सूत्र प्रयोग गरेर समायोजन गरिन्छ: + +wt+1 = wt - η∇ℒ + +### मोमेन्टम + +**momentum SGD** मा, हामी अघिल्लो चरणहरूको ग्रेडियन्टको केही अंश राख्छौं। यो त्यस्तै हो जब हामी कुनै ठाउँमा जडत्वका साथ गइरहेका हुन्छौं, र हामीलाई फरक दिशामा धक्का दिइन्छ, हाम्रो मार्ग तुरुन्त परिवर्तन हुँदैन, तर मूल गति केही भाग राख्छ। यहाँ हामी *गति* प्रतिनिधित्व गर्न अर्को भेक्टर v परिचय गराउँछौं: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +यहाँ प्यारामिटर γ ले जडत्वलाई कति हदसम्म ध्यानमा राखिन्छ भन्ने संकेत गर्दछ: γ=0 शास्त्रीय SGD सँग मेल खान्छ; γ=1 शुद्ध गति समीकरण हो। + +### एडम, एडाग्राड, आदि + +किनकि प्रत्येक लेयरमा हामी संकेतहरूलाई केही म्याट्रिक्स Wi द्वारा गुणन गर्छौं, ||Wi|| मा निर्भर गर्दै, ग्रेडियन्ट या त घट्न सक्छ र 0 नजिक हुन सक्छ, या अनिश्चित रूपमा बढ्न सक्छ। यो Exploding/Vanishing Gradients समस्याको सार हो। + +यस समस्याको समाधानमध्ये एक भनेको समीकरणमा ग्रेडियन्टको दिशा मात्र प्रयोग गर्नु हो, र पूर्ण मानलाई बेवास्ता गर्नु हो, अर्थात् + +wt+1 = wt - η(∇ℒ/||∇ℒ||), जहाँ ||∇ℒ|| = √∑(∇ℒ)2 + +यो एल्गोरिदमलाई **Adagrad** भनिन्छ। यसै विचार प्रयोग गर्ने अन्य एल्गोरिदमहरू: **RMSProp**, **Adam** + +> **Adam** धेरै अनुप्रयोगहरूको लागि एकदम प्रभावकारी एल्गोरिदम मानिन्छ, त्यसैले यदि तपाईंलाई कुन प्रयोग गर्ने निश्चित छैन भने - Adam प्रयोग गर्नुहोस्। + +### ग्रेडियन्ट क्लिपिङ + +ग्रेडियन्ट क्लिपिङ माथिको विचारको विस्तार हो। जब ||∇ℒ|| ≤ θ हुन्छ, हामी वजन अनुकूलनमा मूल ग्रेडियन्टलाई विचार गर्छौं, र जब ||∇ℒ|| > θ हुन्छ - हामी ग्रेडियन्टलाई यसको नर्मले भाग गर्छौं। यहाँ θ एउटा प्यारामिटर हो, अधिकांश अवस्थामा हामी θ=1 वा θ=10 लिन सक्छौं। + +### सिकाइ दर क्षय + +प्रशिक्षणको सफलता प्रायः सिकाइ दर प्यारामिटर η मा निर्भर गर्दछ। यो तर्कसंगत छ कि ठूलो मानहरू η ले छिटो प्रशिक्षण परिणाम दिन्छ, जुन हामी सामान्यतया प्रशिक्षणको सुरुवातमा चाहन्छौं, र त्यसपछि सानो मानहरू η ले नेटवर्कलाई राम्रोसँग परिमार्जन गर्न अनुमति दिन्छ। त्यसैले, अधिकांश अवस्थामा हामी प्रशिक्षणको प्रक्रियामा η घटाउन चाहन्छौं। + +यो प्रत्येक प्रशिक्षण इपोक पछि η लाई केही संख्याले (जस्तै 0.98) गुणन गरेर, या अधिक जटिल **सिकाइ दर तालिका** प्रयोग गरेर गर्न सकिन्छ। + +## विभिन्न नेटवर्क आर्किटेक्चरहरू + +तपाईंको समस्याको लागि सही नेटवर्क आर्किटेक्चर चयन गर्नु चुनौतीपूर्ण हुन सक्छ। सामान्यतया, हामी हाम्रो विशिष्ट कार्य (वा समान कार्य) को लागि काम गरेको आर्किटेक्चर लिन्छौं। यहाँ कम्प्युटर भिजनका लागि न्यूरल नेटवर्क आर्किटेक्चरहरूको [राम्रो अवलोकन](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) छ। + +> यो महत्त्वपूर्ण छ कि हामीसँग भएका प्रशिक्षण नमूनाहरूको संख्याका लागि पर्याप्त शक्तिशाली आर्किटेक्चर चयन गरौं। धेरै शक्तिशाली मोडेल चयन गर्दा [ओभरफिटिङ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) हुन सक्छ। + +अर्को राम्रो तरिका भनेको आवश्यक जटिलतामा स्वतः समायोजन गर्ने आर्किटेक्चर प्रयोग गर्नु हो। केही हदसम्म, **ResNet** आर्किटेक्चर र **Inception** स्व-समायोजन छन्। [कम्प्युटर भिजन आर्किटेक्चरहरूमा थप जानकारी](../07-ConvNets/CNN_Architectures.md)। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ne/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..e102d0bb --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# ट्रान्सफर लर्निङ प्रयोग गरेर अक्सफोर्ड पालतू जनावरहरूको वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +कल्पना गर्नुहोस् कि तपाईंले पालतू जनावरको नर्सरीको लागि सबै जनावरहरूको सूची बनाउन एप्लिकेसन विकास गर्नुपर्नेछ। यस्तो एप्लिकेसनको एक उत्कृष्ट विशेषता फोटोबाट स्वतः प्रजाति पत्ता लगाउने क्षमता हुनेछ। यस असाइनमेन्टमा, हामी ट्रान्सफर लर्निङ प्रयोग गरेर [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जनावरहरूको डेटासेटबाट वास्तविक जीवनका जनावरहरूको छविहरू वर्गीकरण गर्नेछौं। + +## डेटासेट + +हामी मूल [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू जनावरहरूको डेटासेट प्रयोग गर्नेछौं, जसमा कुकुर र बिरालाका ३५ विभिन्न प्रजातिहरू समावेश छन्। + +डेटासेट डाउनलोड गर्न, यो कोड स्निपेट प्रयोग गर्नुहोस्: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## नोटबुक सुरु गर्दै + +ल्याब सुरु गर्न [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) खोल्नुहोस्। + +## मुख्य कुरा + +ट्रान्सफर लर्निङ र प्रि-ट्रेन गरिएको नेटवर्कहरूले वास्तविक जीवनका छवि वर्गीकरण समस्याहरूलाई तुलनात्मक रूपमा सजिलो बनाउँछ। तर, प्रि-ट्रेन गरिएको नेटवर्कहरू समान प्रकारका छविहरूमा राम्रोसँग काम गर्छन्, र यदि हामी धेरै फरक प्रकारका छविहरू (जस्तै, मेडिकल छविहरू) वर्गीकरण गर्न थाल्छौं भने, परिणामहरू धेरै खराब हुने सम्भावना हुन्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ne/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..45719290 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# अटोएनकोडरहरू + +CNN प्रशिक्षण गर्दा, एउटा समस्या यो हो कि हामीलाई धेरै लेबल गरिएको डाटा चाहिन्छ। छवि वर्गीकरणको अवस्थामा, हामीले छविहरूलाई विभिन्न वर्गहरूमा छुट्याउनुपर्छ, जुन एक म्यानुअल प्रयास हो। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +तर, हामी कच्चा (लेबल नगरिएको) डाटा CNN फीचर एक्स्ट्र्याक्टरहरू प्रशिक्षण गर्न प्रयोग गर्न चाहन सक्छौं, जसलाई **स्व-पर्यवेक्षित शिक्षण** भनिन्छ। लेबलहरूको सट्टा, हामी प्रशिक्षण छविहरूलाई नेटवर्क इनपुट र आउटपुट दुवैको रूपमा प्रयोग गर्नेछौं। **अटोएनकोडर** को मुख्य विचार यो हो कि हामीसँग एक **एन्कोडर नेटवर्क** हुनेछ जसले इनपुट छविलाई केही **गुप्त स्थान** मा रूपान्तरण गर्दछ (सामान्यतया यो केही सानो आकारको भेक्टर मात्र हो), त्यसपछि **डिकोडर नेटवर्क**, जसको लक्ष्य मूल छवि पुनर्निर्माण गर्नु हो। + +> ✅ [अटोएनकोडर](https://wikipedia.org/wiki/Autoencoder) भनेको "एक प्रकारको कृत्रिम न्यूरल नेटवर्क हो जसले लेबल नगरिएको डाटाको कुशल कोडिङ सिक्न प्रयोग गरिन्छ।" + +किनकि हामी अटोएनकोडरलाई मूल छविबाट यथासम्भव धेरै जानकारी कब्जा गर्न प्रशिक्षण गर्दैछौं ताकि सही पुनर्निर्माण गर्न सकियोस्, नेटवर्कले इनपुट छविहरूको उत्तम **एम्बेडिङ** पत्ता लगाउन प्रयास गर्दछ। + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ne.jpg) + +> छवि [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) बाट + +## अटोएनकोडर प्रयोग गर्ने परिदृश्यहरू + +मूल छविहरू पुनर्निर्माण गर्नु आफैंमा उपयोगी नदेखिए पनि, केही परिदृश्यहरू छन् जहाँ अटोएनकोडरहरू विशेष रूपमा उपयोगी छन्: + +* **छविहरूको आयाम घटाउने** वा **छवि एम्बेडिङ प्रशिक्षण गर्ने**। सामान्यतया अटोएनकोडरहरूले PCA भन्दा राम्रो परिणाम दिन्छन्, किनकि यसले छविहरूको स्थानिक प्रकृति र पदानुक्रमिक विशेषताहरूलाई ध्यानमा राख्छ। +* **डिनोइजिङ**, अर्थात् छविबाट शोर हटाउने। किनकि शोरले धेरै अनावश्यक जानकारी बोकेको हुन्छ, अटोएनकोडरले यसलाई सानो गुप्त स्थानमा फिट गर्न सक्दैन, र यसले छविको महत्त्वपूर्ण भाग मात्र कब्जा गर्दछ। डिनोइजरहरू प्रशिक्षण गर्दा, हामी मूल छविहरूबाट सुरु गर्छौं, र कृत्रिम रूपमा थपिएको शोर भएको छविहरूलाई अटोएनकोडरको इनपुटको रूपमा प्रयोग गर्छौं। +* **सुपर-रेजोल्युसन**, छविको रिजोल्युसन बढाउने। हामी उच्च रिजोल्युसन छविहरूबाट सुरु गर्छौं, र कम रिजोल्युसन भएको छविलाई अटोएनकोडर इनपुटको रूपमा प्रयोग गर्छौं। +* **जनरेटिभ मोडेलहरू**। एकपटक हामीले अटोएनकोडर प्रशिक्षण गरेपछि, डिकोडर भागलाई नयाँ वस्तुहरू सिर्जना गर्न प्रयोग गर्न सकिन्छ, जसको सुरुवात गुप्त भेक्टरहरूबाट हुन्छ। + +## भेरिएशनल अटोएनकोडरहरू (VAE) + +परम्परागत अटोएनकोडरहरूले इनपुट डाटाको आयामलाई कुनै न कुनै रूपमा घटाउँछन्, इनपुट छविहरूका महत्त्वपूर्ण विशेषताहरू पत्ता लगाउँछन्। तर, गुप्त भेक्टरहरू प्रायः धेरै अर्थपूर्ण हुँदैनन्। अन्य शब्दमा, MNIST डेटासेटलाई उदाहरणको रूपमा लिँदा, विभिन्न गुप्त भेक्टरहरू कुन अंकसँग सम्बन्धित छन् भनेर पत्ता लगाउनु सजिलो काम होइन, किनकि नजिकका गुप्त भेक्टरहरूले अनिवार्य रूपमा उही अंकलाई प्रतिनिधित्व गर्दैनन्। + +अर्कोतर्फ, *जनरेटिभ* मोडेलहरू प्रशिक्षण गर्न गुप्त स्थानको केही बुझाइ हुनु राम्रो हुन्छ। यस विचारले हामीलाई **भेरिएशनल अटोएनकोडर** (VAE) तर्फ लैजान्छ। + +VAE भनेको अटोएनकोडर हो जसले गुप्त प्यारामिटरहरूको *सांख्यिकीय वितरण* भविष्यवाणी गर्न सिक्छ, जसलाई **गुप्त वितरण** भनिन्छ। उदाहरणका लागि, हामी चाहन सक्छौं कि गुप्त भेक्टरहरू सामान्य रूपमा केही औसत zmean र मानक विचलन zsigma (दुवै औसत र मानक विचलन केही आयामको भेक्टर हुन्) संग वितरण गरियोस्। VAE मा एन्कोडरले ती प्यारामिटरहरू भविष्यवाणी गर्न सिक्छ, र त्यसपछि डिकोडरले यस वितरणबाट एक र्यान्डम भेक्टर लिन्छ ताकि वस्तु पुनर्निर्माण गर्न सकियोस्। + +सारांशमा: + + * इनपुट भेक्टरबाट, हामी `z_mean` र `z_log_sigma` भविष्यवाणी गर्छौं (मानक विचलन आफैं भविष्यवाणी गर्ने सट्टा, हामी यसको लघुगणक भविष्यवाणी गर्छौं) + * हामी वितरण N(zmean,exp(zlog\_sigma)) बाट `sample` भेक्टर लिन्छौं + * डिकोडरले `sample` लाई इनपुट भेक्टरको रूपमा प्रयोग गरेर मूल छवि डिकोड गर्न प्रयास गर्छ + + + +> छवि [यो ब्लग पोस्ट](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) बाट, लेखक: इसाक डाइकमन + +भेरिएशनल अटोएनकोडरहरूले जटिल हानिको कार्य प्रयोग गर्छन् जसमा दुई भागहरू हुन्छन्: + +* **पुनर्निर्माण हानि** भनेको हानिको कार्य हो जसले पुनर्निर्मित छवि लक्ष्यसँग कति नजिक छ भनेर देखाउँछ (यो Mean Squared Error, वा MSE हुन सक्छ)। यो सामान्य अटोएनकोडरहरूमा प्रयोग गरिने हानिको कार्य जस्तै हो। +* **KL हानि**, जसले सुनिश्चित गर्छ कि गुप्त भेरिएबल वितरणहरू सामान्य वितरणको नजिक रहन्छ। यो [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) को धारणा आधारित छ - दुई सांख्यिकीय वितरणहरू कति समान छन् भनेर अनुमान गर्न मेट्रिक। + +VAE को एउटा महत्त्वपूर्ण फाइदा यो हो कि यसले हामीलाई नयाँ छविहरू तुलनात्मक रूपमा सजिलै सिर्जना गर्न अनुमति दिन्छ, किनकि हामीलाई थाहा छ कुन वितरणबाट गुप्त भेक्टरहरू नमूना गर्नुपर्छ। उदाहरणका लागि, यदि हामीले MNIST मा 2D गुप्त भेक्टरको साथ VAE प्रशिक्षण गर्छौं भने, हामी गुप्त भेक्टरका घटकहरू फरक पारेर विभिन्न अंकहरू प्राप्त गर्न सक्छौं: + +vaemnist + +> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +छविहरू एकअर्कामा कसरी मिश्रित हुन्छन् हेर्नुहोस्, किनकि हामी गुप्त प्यारामिटर स्थानको विभिन्न भागहरूबाट गुप्त भेक्टरहरू प्राप्त गर्न थाल्छौं। हामी यस स्थानलाई 2D मा पनि दृश्यात्मक बनाउन सक्छौं: + +vaemnist cluster + +> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +## ✍️ अभ्यास: अटोएनकोडरहरू + +यी सम्बन्धित नोटबुकहरूमा अटोएनकोडरहरूको बारेमा थप जान्नुहोस्: + +* [TensorFlow मा अटोएनकोडरहरू](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch मा अटोएनकोडरहरू](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## अटोएनकोडरहरूको विशेषताहरू + +* **डाटा विशिष्ट** - तिनीहरूले केवल तिनीहरूलाई प्रशिक्षण गरिएको छविहरूको प्रकारसँग राम्रोसँग काम गर्छन्। उदाहरणका लागि, यदि हामी फूलहरूमा सुपर-रेजोल्युसन नेटवर्क प्रशिक्षण गर्छौं भने, यो पोर्ट्रेटहरूमा राम्रोसँग काम गर्नेछैन। यो किनभने नेटवर्कले उच्च रिजोल्युसन छवि उत्पादन गर्न प्रशिक्षण डेटासेटबाट सिकेका विशेषताहरूबाट राम्रो विवरण लिन्छ। +* **हानिपूर्ण** - पुनर्निर्मित छवि मूल छविको जस्तै हुँदैन। हानिको प्रकृति प्रशिक्षणको क्रममा प्रयोग गरिएको *हानिको कार्य* द्वारा परिभाषित हुन्छ। +* **लेबल नगरिएको डाटा** मा काम गर्छ। + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## निष्कर्ष + +यस पाठमा, तपाईंले AI वैज्ञानिकका लागि उपलब्ध विभिन्न प्रकारका अटोएनकोडरहरूको बारेमा सिक्नुभयो। तपाईंले तिनीहरूलाई कसरी निर्माण गर्ने र छविहरू पुनर्निर्माण गर्न कसरी प्रयोग गर्ने भनेर सिक्नुभयो। तपाईंले VAE को बारेमा पनि सिक्नुभयो र नयाँ छविहरू सिर्जना गर्न यसलाई कसरी प्रयोग गर्ने। + +## 🚀 चुनौती + +यस पाठमा, तपाईंले छविहरूको लागि अटोएनकोडरहरू प्रयोग गर्ने बारेमा सिक्नुभयो। तर तिनीहरू संगीतको लागि पनि प्रयोग गर्न सकिन्छ! Magenta परियोजनाको [MusicVAE](https://magenta.tensorflow.org/music-vae) परियोजना हेर्नुहोस्, जसले अटोएनकोडरहरू प्रयोग गरेर संगीत पुनर्निर्माण गर्न सिक्छ। यस पुस्तकालयसँग केही [प्रयोगहरू](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) गर्नुहोस् र तपाईं के सिर्जना गर्न सक्नुहुन्छ हेर्नुहोस्। + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## समीक्षा र आत्म अध्ययन + +सन्दर्भको लागि, यी स्रोतहरूमा अटोएनकोडरहरूको बारेमा थप पढ्नुहोस्: + +* [Keras मा अटोएनकोडरहरू निर्माण गर्दै](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive मा ब्लग पोस्ट](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [भेरिएशनल अटोएनकोडरहरू व्याख्या गरिएको](https://kvfrans.com/variational-autoencoders-explained/) +* [सशर्त भेरिएशनल अटोएनकोडरहरू](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## असाइनमेन्ट + +[TensorFlow प्रयोग गरेर यस नोटबुक](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) को अन्त्यमा, तपाईंले 'कार्य' पाउनुहुनेछ - यसलाई आफ्नो असाइनमेन्टको रूपमा प्रयोग गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/10-GANs/README.md b/translations/ne/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..38acfae2 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# जेनेरेटिभ एड्भर्सेरियल नेटवर्कहरू + +अघिल्लो खण्डमा, हामीले **जेनेरेटिभ मोडेलहरू** को बारेमा सिक्यौं: यस्ता मोडेलहरू जसले प्रशिक्षण डेटासेटमा भएका छविहरू जस्तै नयाँ छविहरू सिर्जना गर्न सक्छ। VAE जेनेरेटिभ मोडेलको राम्रो उदाहरण थियो। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +तर, यदि हामी कुनै अर्थपूर्ण कुरा, जस्तै उचित रिजोल्युसनको चित्र सिर्जना गर्न प्रयास गर्छौं भने, VAE प्रयोग गर्दा प्रशिक्षण राम्रोसँग सँग्लो हुँदैन। यस प्रयोगको लागि, हामीले जेनेरेटिभ मोडेलहरूका लागि विशेष रूपमा लक्षित अर्को आर्किटेक्चर सिक्नुपर्छ - **जेनेरेटिभ एड्भर्सेरियल नेटवर्कहरू**, वा GANs। + +GAN को मुख्य विचार दुई न्यूरल नेटवर्कहरूलाई एक-अर्काविरुद्ध प्रशिक्षण गराउनु हो: + + + +> चित्र: [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ केही शब्दावली: +> * **जेनेरेटर**: यो नेटवर्क हो जसले केही र्यान्डम भेक्टर लिन्छ र परिणामस्वरूप छवि उत्पादन गर्छ। +> * **डिस्क्रिमिनेटर**: यो नेटवर्क हो जसले छवि लिन्छ, र यो बताउनुपर्छ कि यो वास्तविक छवि हो (प्रशिक्षण डेटासेटबाट) वा यो जेनेरेटरले सिर्जना गरेको हो। यो मूलतः छवि वर्गीकरणकर्ता हो। + +### डिस्क्रिमिनेटर + +डिस्क्रिमिनेटरको आर्किटेक्चर साधारण छवि वर्गीकरण नेटवर्कबाट फरक छैन। सबैभन्दा साधारण अवस्थामा, यो पूर्ण रूपमा जडित वर्गीकरणकर्ता हुन सक्छ, तर सम्भवतः यो [कन्भोल्युसनल नेटवर्क](../07-ConvNets/README.md) हुनेछ। + +> ✅ कन्भोल्युसनल नेटवर्कमा आधारित GAN लाई [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) भनिन्छ। + +CNN डिस्क्रिमिनेटरमा निम्न तहहरू हुन्छन्: धेरै कन्भोल्युसन+पूलिङ (स्पेसियल साइज घट्दै जाने) र, "फिचर भेक्टर" प्राप्त गर्न एक वा धेरै पूर्ण रूपमा जडित तहहरू, अन्तिम बाइनरी वर्गीकरणकर्ता। + +> ✅ 'पूलिङ' भनेको छवि आकार घटाउने प्रविधि हो। "पूलिङ तहहरूले डाटाको आयाम घटाउँछन्, एक तहमा न्यूरोन क्लस्टरहरूको आउटपुटलाई अर्को तहमा एकल न्यूरोनमा मिलाएर।" - [स्रोत](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### जेनेरेटर + +जेनेरेटर अलि जटिल छ। तपाईं यसलाई उल्टो डिस्क्रिमिनेटरको रूपमा विचार गर्न सक्नुहुन्छ। लेटेन्ट भेक्टरबाट सुरु गर्दै (फिचर भेक्टरको ठाउँमा), यसले आवश्यक आकार/आकारमा रूपान्तरण गर्न पूर्ण रूपमा जडित तह हुन्छ, त्यसपछि डिकन्भोल्युसन+अपस्केलिङ। यो [अटोइन्कोडर](../09-Autoencoders/README.md) को *डिकोडर* भागसँग मिल्दोजुल्दो छ। + +> ✅ किनभने कन्भोल्युसन तह छवि पार गर्दै लिने रेखीय फिल्टरको रूपमा कार्यान्वयन गरिन्छ, डिकन्भोल्युसन कन्भोल्युसनसँग मिल्दोजुल्दो छ, र समान तह तर्क प्रयोग गरेर कार्यान्वयन गर्न सकिन्छ। + + + +> चित्र: [Dmitry Soshnikov](http://soshnikov.com) + +### GAN प्रशिक्षण + +GAN लाई **एड्भर्सेरियल** भनिन्छ किनभने जेनेरेटर र डिस्क्रिमिनेटर बीच निरन्तर प्रतिस्पर्धा हुन्छ। यस प्रतिस्पर्धाको क्रममा, दुबै जेनेरेटर र डिस्क्रिमिनेटर सुधार हुन्छन्, जसले नेटवर्कलाई राम्रो छविहरू उत्पादन गर्न सिकाउँछ। + +प्रशिक्षण दुई चरणमा हुन्छ: + +* **डिस्क्रिमिनेटर प्रशिक्षण**। यो कार्य धेरै सरल छ: हामी जेनेरेटरद्वारा छविहरूको ब्याच सिर्जना गर्छौं, तिनीहरूलाई 0 लेबल गर्छौं, जसले नक्कली छवि जनाउँछ, र इनपुट डेटासेटबाट छविहरूको ब्याच लिन्छौं (लेबल 1, वास्तविक छवि)। हामी केही *डिस्क्रिमिनेटर हानि* प्राप्त गर्छौं, र ब्याकप्रोप गर्छौं। +* **जेनेरेटर प्रशिक्षण**। यो अलि जटिल छ, किनभने हामीले जेनेरेटरको लागि प्रत्यक्ष अपेक्षित आउटपुट थाहा छैन। हामी जेनेरेटर र डिस्क्रिमिनेटर मिलेर बनेको सम्पूर्ण GAN नेटवर्क लिन्छौं, यसलाई केही र्यान्डम भेक्टरहरू खुवाउँछौं, र परिणामलाई 1 (वास्तविक छविहरूको लागि) अपेक्षा गर्छौं। त्यसपछि हामी डिस्क्रिमिनेटरको प्यारामिटरहरू स्थिर गर्छौं (हामी यस चरणमा यसलाई प्रशिक्षण गर्न चाहँदैनौं), र ब्याकप्रोप गर्छौं। + +यस प्रक्रियाको क्रममा, दुबै जेनेरेटर र डिस्क्रिमिनेटर हानिहरू उल्लेखनीय रूपमा तल झर्दैनन्। आदर्श अवस्थामा, तिनीहरूले कम्पन गर्नुपर्छ, जसले दुबै नेटवर्कको प्रदर्शन सुधार भएको जनाउँछ। + +## ✍️ अभ्यास: GANs + +* [GAN नोटबुक TensorFlow/Keras मा](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN नोटबुक PyTorch मा](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN प्रशिक्षणका समस्या + +GAN प्रशिक्षण गर्न विशेष रूपमा कठिन मानिन्छ। यहाँ केही समस्या छन्: + +* **मोड कोलाप्स**। यसले जनाउँछ कि जेनेरेटरले एक सफल छवि उत्पादन गर्न सिक्छ, जसले डिस्क्रिमिनेटरलाई झुक्याउँछ, तर विभिन्न छविहरूको विविधता उत्पादन गर्दैन। +* **हाइपरप्यारामिटरहरूमा संवेदनशीलता**। प्रायः तपाईं देख्न सक्नुहुन्छ कि GAN बिल्कुलै सँग्लो हुँदैन, र त्यसपछि अचानक सिकाइ दर घटाउँदा सँग्लो हुन्छ। +* जेनेरेटर र डिस्क्रिमिनेटर बीच **सन्तुलन** राख्नु। धेरै अवस्थामा डिस्क्रिमिनेटर हानि अपेक्षाकृत छिटो शून्यमा झर्न सक्छ, जसले जेनेरेटरलाई थप प्रशिक्षण गर्न असमर्थ बनाउँछ। यसलाई पार गर्न, हामी जेनेरेटर र डिस्क्रिमिनेटरका लागि फरक सिकाइ दर सेट गर्न प्रयास गर्न सक्छौं, वा यदि हानि पहिले नै धेरै कम छ भने डिस्क्रिमिनेटर प्रशिक्षण छोड्न सक्छौं। +* **उच्च रिजोल्युसनको लागि प्रशिक्षण**। अटोइन्कोडरहरूमा जस्तै समस्या प्रतिबिम्बित गर्दै, यो समस्या धेरै तहहरू पुनर्निर्माण गर्दा कलाकृतिहरू उत्पन्न हुने कारणले उत्पन्न हुन्छ। यो समस्या सामान्यतया **प्रोग्रेसिभ ग्रोइङ** द्वारा समाधान गरिन्छ, जहाँ सुरुमा केही तहहरू कम-रिजोल्युसन छविहरूमा प्रशिक्षण गरिन्छ, र त्यसपछि तहहरू "अनब्लक" वा थपिन्छ। अर्को समाधान भनेको तहहरू बीच अतिरिक्त जडानहरू थप्नु र एकै समयमा धेरै रिजोल्युसनहरू प्रशिक्षण गर्नु हो - यस [मल्टि-स्केल ग्रेडियन्ट GANs पेपर](https://arxiv.org/abs/1903.06048) मा विवरणहरू हेर्नुहोस्। + +## शैली ट्रान्सफर + +GANs कलात्मक छविहरू सिर्जना गर्नको लागि उत्कृष्ट तरिका हो। अर्को रोचक प्रविधि भनेको **शैली ट्रान्सफर** हो, जसले एक **कन्टेन्ट छवि** लिन्छ, र यसलाई फरक शैलीमा पुनःचित्रण गर्छ, **शैली छवि** बाट फिल्टरहरू लागू गर्दै। + +यसले निम्न तरिकाले काम गर्छ: +* हामी र्यान्डम न्वाइज छवि (वा कन्टेन्ट छवि, तर बुझ्नको लागि र्यान्डम न्वाइजबाट सुरु गर्नु सजिलो हुन्छ) बाट सुरु गर्छौं। +* हाम्रो लक्ष्य यस्तो छवि सिर्जना गर्नु हो, जुन कन्टेन्ट छवि र शैली छवि दुवैसँग नजिक हुनेछ। यो दुई हानि कार्यहरूद्वारा निर्धारण गरिन्छ: + - **कन्टेन्ट हानि**: यो CNN द्वारा केही तहहरूमा वर्तमान छवि र कन्टेन्ट छवि बाट निकालिएका फिचरहरूमा आधारित गणना गरिन्छ। + - **शैली हानि**: यो वर्तमान छवि र शैली छवि बीचमा ग्राम म्याट्रिक्स प्रयोग गरेर चतुर तरिकाले गणना गरिन्छ (थप विवरण [उदाहरण नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) मा हेर्नुहोस्)। +* छवि चिल्लो बनाउन र न्वाइज हटाउन, हामी **भेरिएसन हानि** पनि परिचय गराउँछौं, जसले छिमेकी पिक्सेलहरू बीचको औसत दूरी गणना गर्छ। +* मुख्य अनुकूलन लूपले वर्तमान छवि समायोजन गर्छ, कुल हानि (तीनवटै हानिहरूको भारित योग) न्यून गर्न ग्रेडियन्ट डिसेन्ट (वा अन्य अनुकूलन एल्गोरिदम) प्रयोग गरेर। + +## ✍️ उदाहरण: [शैली ट्रान्सफर](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## निष्कर्ष + +यस पाठमा, तपाईंले GANs र तिनीहरूलाई कसरी प्रशिक्षण गर्ने भन्ने बारे सिक्नुभयो। तपाईंले यस प्रकारको न्यूरल नेटवर्कले सामना गर्न सक्ने विशेष चुनौतीहरू र तिनीहरूलाई पार गर्न केही रणनीतिहरू पनि सिक्नुभयो। + +## 🚀 चुनौती + +[शैली ट्रान्सफर नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) आफ्नै छविहरू प्रयोग गरेर चलाउनुहोस्। + +## समीक्षा र आत्म अध्ययन + +सन्दर्भको लागि, यी स्रोतहरूमा GANs को बारेमा थप पढ्नुहोस्: + +* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), विचार गर्न लायक *de facto* GAN आर्किटेक्चर +* [Creating Generative Art using GANs on Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## असाइनमेन्ट + +यस पाठसँग सम्बन्धित दुई नोटबुकमध्ये एकलाई पुनः हेर्नुहोस् र GAN लाई आफ्नै छविहरूमा पुनः प्रशिक्षण गर्नुहोस्। तपाईं के सिर्जना गर्न सक्नुहुन्छ? + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ne/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..105af899 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,187 @@ + +# वस्तु पहिचान + +अहिलेसम्म हामीले प्रयोग गरेका छवि वर्गीकरण मोडेलहरूले एउटा छवि लिएर वर्गीय नतिजा उत्पादन गर्थे, जस्तै MNIST समस्यामा 'संख्या' वर्ग। तर, धेरै अवस्थामा हामीलाई केवल यो थाहा पाउन चाहिँदैन कि तस्बिरले वस्तुहरू देखाउँछ - हामीलाई तिनीहरूको ठ्याक्कै स्थान निर्धारण गर्न सक्षम हुन चाहिन्छ। यही नै **वस्तु पहिचान**को उद्देश्य हो। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Object Detection](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ne.png) + +> छवि [YOLO v2 वेब साइट](https://pjreddie.com/darknet/yolov2/) बाट + +## वस्तु पहिचानको साधारण तरिका + +मानौं हामीले तस्बिरमा बिरालो खोज्न चाहेका छौं, वस्तु पहिचानको एकदम साधारण तरिका निम्नानुसार हुनेछ: + +1. तस्बिरलाई धेरै टाइलहरूमा विभाजन गर्नुहोस्। +2. प्रत्येक टाइलमा छवि वर्गीकरण चलाउनुहोस्। +3. ती टाइलहरू जसले पर्याप्त उच्च सक्रियता देखाउँछन्, तिनीहरूमा सोधिएको वस्तु भएको मान्न सकिन्छ। + +![Naive Object Detection](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ne.png) + +> *छवि [Exercise Notebook](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) बाट* + +तर, यो तरिका आदर्शबाट धेरै टाढा छ, किनकि यसले एल्गोरिदमलाई वस्तुको बाउन्डिङ बक्सको स्थान धेरै अस्पष्ट रूपमा निर्धारण गर्न मात्र अनुमति दिन्छ। थप सटीक स्थानको लागि, हामीले बाउन्डिङ बक्सको समन्वय भविष्यवाणी गर्न **रेग्रेशन**को केही प्रकार चलाउन आवश्यक छ - र त्यसका लागि, हामीलाई विशेष डेटासेटहरू चाहिन्छ। + +## वस्तु पहिचानका लागि रेग्रेशन + +[यो ब्लग पोस्ट](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491)ले आकारहरू पहिचान गर्नको लागि राम्रो परिचय प्रदान गर्दछ। + +## वस्तु पहिचानका लागि डेटासेटहरू + +तपाईंले निम्न डेटासेटहरू भेट्टाउन सक्नुहुन्छ: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - २० वर्गहरू +* [COCO](http://cocodataset.org/#home) - सामान्य वस्तुहरू सन्दर्भमा। ८० वर्गहरू, बाउन्डिङ बक्सहरू र सेग्मेन्टेसन मास्कहरू + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ne.jpg) + +## वस्तु पहिचान मेट्रिक्स + +### Intersection over Union + +छवि वर्गीकरणको लागि एल्गोरिदम कत्तिको राम्रो प्रदर्शन गर्छ भनेर मापन गर्न सजिलो छ, तर वस्तु पहिचानको लागि हामीले वर्गको शुद्धता मात्र होइन, अनुमान गरिएको बाउन्डिङ बक्सको स्थानको सटीकता पनि मापन गर्नुपर्छ। यसका लागि, हामी **Intersection over Union** (IoU) प्रयोग गर्छौं, जसले दुई बक्सहरू (वा दुई मनमौजी क्षेत्रहरू) कत्तिको ओभरलाप गर्छन् भनेर मापन गर्छ। + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ne.png) + +> *[IoU सम्बन्धी उत्कृष्ट ब्लग पोस्ट](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) बाट चित्र २* + +यो विचार सरल छ - हामी दुई आकृतिहरूको बीचको अन्तर क्षेत्रलाई तिनीहरूको युनियन क्षेत्रले विभाजन गर्छौं। दुई समान क्षेत्रहरूको लागि, IoU १ हुनेछ, जबकि पूर्ण रूपमा अलग क्षेत्रहरूको लागि यो ० हुनेछ। अन्यथा यो ० देखि १ सम्म फरक हुनेछ। हामी सामान्यतया ती बाउन्डिङ बक्सहरू मात्र विचार गर्छौं जसको IoU निश्चित मानभन्दा माथि छ। + +### Average Precision + +मानौं हामीले $C$ वर्गको वस्तुहरू कत्तिको राम्रोसँग पहिचान गरिन्छ भनेर मापन गर्न चाहेका छौं। यसलाई मापन गर्न, हामी **Average Precision** मेट्रिक्स प्रयोग गर्छौं, जुन निम्नानुसार गणना गरिन्छ: + +1. Precision-Recall कर्भले थ्रेसहोल्ड मान (० देखि १ सम्म) अनुसार शुद्धता देखाउँछ। +2. थ्रेसहोल्डको आधारमा, तस्बिरमा धेरै वा थोरै वस्तुहरू पहिचान गरिन्छ, र शुद्धता र रिकलका विभिन्न मानहरू प्राप्त हुन्छन्। +3. कर्भ यस प्रकार देखिन्छ: + + + +> *छवि [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) बाट* + +$C$ वर्गको लागि Average Precision कर्भको क्षेत्र हो। थप स्पष्ट रूपमा, Recall अक्षलाई सामान्यतया १० भागमा विभाजन गरिन्छ, र Precision ती सबै बिन्दुहरूमा औसत गरिन्छ: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP र IoU + +हामी केवल ती पहिचानहरू विचार गर्नेछौं, जसको IoU निश्चित मानभन्दा माथि छ। उदाहरणका लागि, PASCAL VOC डेटासेटमा सामान्यतया $\mbox{IoU Threshold} = 0.5$ मानिन्छ, जबकि COCO मा AP विभिन्न $\mbox{IoU Threshold}$ मानहरूको लागि मापन गरिन्छ। + + + +> *छवि [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) बाट* + +### Mean Average Precision - mAP + +वस्तु पहिचानको मुख्य मेट्रिकलाई **Mean Average Precision** वा **mAP** भनिन्छ। यो Average Precisionको मान हो, सबै वस्तु वर्गहरूमा औसत गरिएको, र कहिलेकाहीं $\mbox{IoU Threshold}$ मा पनि। थप विवरणमा, **mAP** गणना गर्ने प्रक्रिया [यो ब्लग पोस्ट](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)मा वर्णन गरिएको छ, र [यहाँ कोड नमूनाहरू सहित](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734)। + +## वस्तु पहिचानका विभिन्न तरिकाहरू + +वस्तु पहिचान एल्गोरिदमका दुई व्यापक वर्गहरू छन्: + +* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN)। मुख्य विचार भनेको **Regions of Interests** (ROI) उत्पन्न गर्नु हो र तिनीहरूमा CNN चलाउनु हो, अधिकतम सक्रियता खोज्दै। यो साधारण तरिकासँग अलिकति मिल्दोजुल्दो छ, तर ROIs अधिक चतुर तरिकाले उत्पन्न गरिन्छ। यस्ता विधिहरूको मुख्य कमजोरी भनेको तिनीहरू ढिलो हुनु हो, किनकि तस्बिरमा CNN वर्गीकरणको धेरै पासहरू आवश्यक हुन्छ। +* **One-pass** (YOLO, SSD, RetinaNet) विधिहरू। ती आर्किटेक्चरहरूमा हामी नेटवर्कलाई एक पासमा वर्गहरू र ROIs दुवै भविष्यवाणी गर्न डिजाइन गर्छौं। + +### R-CNN: Region-Based CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf)ले [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) प्रयोग गरेर ROI क्षेत्रहरूको हाइरार्किकल संरचना उत्पन्न गर्छ, जुन CNN फिचर एक्स्ट्र्याक्टरहरू र SVM-क्लासिफायरहरू मार्फत पास गरिन्छ, वस्तु वर्ग निर्धारण गर्न, र *बाउन्डिङ बक्स* समन्वय निर्धारण गर्न रेखीय रेग्रेशन प्रयोग गरिन्छ। [Official Paper](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ne.png) + +> *छवि van de Sande et al. ICCV’11 बाट* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ne.png) + +> *छवि [यो ब्लग](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) बाट* + +### F-RCNN - Fast R-CNN + +यो विधि R-CNNसँग मिल्दोजुल्दो छ, तर क्षेत्रहरू कनभोल्युसन तहहरू लागू भएपछि परिभाषित गरिन्छ। + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ne.png) + +> छवि [Official Paper](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 बाट + +### Faster R-CNN + +यस विधिको मुख्य विचार भनेको ROIs भविष्यवाणी गर्न न्युरल नेटवर्क प्रयोग गर्नु हो - *Region Proposal Network* भनिन्छ। [Paper](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ne.png) + +> छवि [Official Paper](https://arxiv.org/pdf/1506.01497.pdf) बाट + +### R-FCN: Region-Based Fully Convolutional Network + +यो एल्गोरिदम Faster R-CNN भन्दा पनि छिटो छ। मुख्य विचार निम्नानुसार छ: + +1. हामी ResNet-101 प्रयोग गरेर फिचरहरू निकाल्छौं। +2. फिचरहरू **Position-Sensitive Score Map** द्वारा प्रशोधन गरिन्छ। $C$ वर्गका प्रत्येक वस्तुहरूलाई $k\times k$ क्षेत्रहरूद्वारा विभाजन गरिन्छ, र हामी वस्तुका भागहरू भविष्यवाणी गर्न प्रशिक्षण गर्छौं। +3. $k\times k$ क्षेत्रका प्रत्येक भागका लागि सबै नेटवर्कहरूले वस्तु वर्गहरूको लागि मतदान गर्छन्, र अधिकतम मतदान भएको वस्तु वर्ग चयन गरिन्छ। + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ne.png) + +> छवि [Official Paper](https://arxiv.org/abs/1605.06409) बाट + +### YOLO - You Only Look Once + +YOLO एक रियलटाइम एक-पास एल्गोरिदम हो। मुख्य विचार निम्नानुसार छ: + + * तस्बिरलाई $S\times S$ क्षेत्रहरूमा विभाजन गरिन्छ। + * प्रत्येक क्षेत्रका लागि, **CNN**ले $n$ सम्भावित वस्तुहरू, *बाउन्डिङ बक्स* समन्वयहरू र *confidence*=*probability* * IoU भविष्यवाणी गर्छ। + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ne.png) + +> छवि [Official Paper](https://arxiv.org/abs/1506.02640) बाट + +### अन्य एल्गोरिदमहरू + +* RetinaNet: [Official Paper](https://arxiv.org/abs/1708.02002) + - [PyTorch Implementation in Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras Implementation](https://github.com/fizyr/keras-retinanet) + - [Object Detection with RetinaNet](https://keras.io/examples/vision/retinanet/) in Keras Samples +* SSD (Single Shot Detector): [Official Paper](https://arxiv.org/abs/1512.02325) + +## ✍️ अभ्यास: वस्तु पहिचान + +निम्न नोटबुकमा आफ्नो सिकाइ जारी राख्नुहोस्: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## निष्कर्ष + +यस पाठमा तपाईंले वस्तु पहिचान गर्न सकिने विभिन्न तरिकाहरूको संक्षिप्त भ्रमण गर्नुभयो! + +## 🚀 चुनौती + +यी लेखहरू र नोटबुकहरू पढ्नुहोस् र YOLO आफैं प्रयास गर्नुहोस्: + +* [YOLO सम्बन्धी राम्रो ब्लग पोस्ट](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [Official Site](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras Implementation](https://github.com/experiencor/keras-yolo2), [Step-by-Step Notebook](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras Implementation](https://github.com/experiencor/keras-yolo2), [Step-by-Step Notebook](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## समीक्षा र आत्म अध्ययन + +* [Object Detection](https://tjmachinelearning.com/lectures/1718/obj/) by Nikhil Sardana +* [वस्तु पहिचान एल्गोरिदमहरूको राम्रो तुलना](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [वस्तु पहिचानका लागि डीप लर्निङ एल्गोरिदमहरूको समीक्षा](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [वस्तु पहिचान एल्गोरिदमहरूको आधारभूत परिचय](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python मा Faster R-CNN को कार्यान्वयन](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Assignment: Object Detection](lab/README.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ne/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..26c963fa --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# हलिवुड हेड्स डेटासेट प्रयोग गरेर हेड डिटेक्शन + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +भिडियो निगरानी क्यामेरा स्ट्रिममा मानिसहरूको संख्या गणना गर्नु महत्त्वपूर्ण कार्य हो जसले हामीलाई पसलहरूमा आगन्तुकहरूको संख्या, रेस्टुरेन्टको व्यस्त समय आदि अनुमान गर्न मद्दत गर्दछ। यो कार्य समाधान गर्न, हामीले विभिन्न कोणबाट मानव टाउकोहरू पत्ता लगाउन सक्षम हुनुपर्छ। मानव टाउकोहरू पत्ता लगाउनको लागि वस्तु डिटेक्शन मोडेललाई प्रशिक्षण दिन, हामी [हलिवुड हेड्स डेटासेट](https://www.di.ens.fr/willow/research/headdetection/) प्रयोग गर्न सक्छौं। + +## डेटासेट + +[हलिवुड हेड्स डेटासेट](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) मा हलिवुड फिल्मका 224,740 फ्रेमहरूमा 369,846 मानव टाउकोहरू एनोटेट गरिएको छ। यो [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) फर्म्याटमा प्रदान गरिएको छ, जहाँ प्रत्येक तस्बिरको लागि XML विवरण फाइल पनि हुन्छ, जुन यस प्रकार देखिन्छ: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +यस डेटासेटमा केवल एक प्रकारको वस्तु `head` छ, र प्रत्येक टाउकोको लागि तपाईंलाई बाउन्डिङ बक्सको समन्वय प्राप्त हुन्छ। तपाईं Python लाइब्रेरीहरू प्रयोग गरेर XML पार्स गर्न सक्नुहुन्छ, वा [यो लाइब्रेरी](https://pypi.org/project/pascal-voc/) प्रयोग गरेर PASCAL VOC फर्म्याटसँग सीधा काम गर्न सक्नुहुन्छ। + +## वस्तु डिटेक्शन प्रशिक्षण + +तपाईं वस्तु डिटेक्शन मोडेललाई निम्न तरिकाहरू प्रयोग गरेर प्रशिक्षण दिन सक्नुहुन्छ: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) र यसको Python API प्रयोग गरेर क्लाउडमा मोडेललाई प्रोग्रामेटिक रूपमा प्रशिक्षण दिन। Custom Vision ले मोडेल प्रशिक्षणको लागि केही सय तस्बिरहरू मात्र प्रयोग गर्न सक्नेछ, त्यसैले तपाईंले डेटासेट सीमित गर्न आवश्यक पर्न सक्छ। +* [Keras ट्युटोरियल](https://keras.io/examples/vision/retinanet/) बाट उदाहरण प्रयोग गरेर RetunaNet मोडेल प्रशिक्षण गर्न। +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) मा उपलब्ध बिल्ट-इन मोड्युल प्रयोग गरेर। + +## मुख्य कुरा + +वस्तु डिटेक्शन उद्योगमा बारम्बार आवश्यक पर्ने कार्य हो। जबकि केही सेवाहरू (जस्तै [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)) वस्तु डिटेक्शन गर्न प्रयोग गर्न सकिन्छ, वस्तु डिटेक्शन कसरी काम गर्छ भन्ने बुझ्न र आफ्नै मोडेलहरू प्रशिक्षण दिन सक्षम हुनु महत्त्वपूर्ण छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ne/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..882f203c --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# खण्डीकरण + +हामीले पहिले **Object Detection** को बारेमा सिकेका थियौं, जसले हामीलाई तस्बिरमा वस्तुहरूको *bounding boxes* भविष्यवाणी गरेर तिनीहरूको स्थान पत्ता लगाउन मद्दत गर्दछ। तर, केही कार्यहरूको लागि हामीलाई केवल bounding boxes मात्र होइन, वस्तुको अझ सटीक स्थान पत्ता लगाउन आवश्यक हुन्छ। यस कार्यलाई **segmentation** भनिन्छ। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentation लाई **pixel classification** को रूपमा हेर्न सकिन्छ, जहाँ तस्बिरको **प्रत्येक** पिक्सेलको वर्ग (*background* पनि एक वर्ग हो) भविष्यवाणी गर्नुपर्छ। मुख्य दुई प्रकारका segmentation एल्गोरिदमहरू छन्: + +* **Semantic segmentation** ले केवल पिक्सेलको वर्ग बताउँछ, तर एउटै वर्गका विभिन्न वस्तुहरू बीच भिन्नता गर्दैन। +* **Instance segmentation** वर्गहरूलाई विभिन्न instances मा विभाजन गर्दछ। + +उदाहरणका लागि, instance segmentation मा यी भेडाहरू अलग-अलग वस्तुहरू हुन्, तर semantic segmentation मा सबै भेडाहरूलाई एउटै वर्गले प्रतिनिधित्व गर्दछ। + + + +> तस्बिर [यस ब्लग पोस्ट](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) बाट। + +Segmentation का लागि विभिन्न neural architectures छन्, तर तिनीहरूको संरचना समान हुन्छ। यो केही हदसम्म तपाईंले पहिले सिकेको autoencoder जस्तै छ, तर मूल तस्बिरलाई deconstruct गर्ने सट्टा, हाम्रो लक्ष्य **mask** लाई deconstruct गर्नु हो। त्यसैले, segmentation नेटवर्कमा निम्न भागहरू हुन्छन्: + +* **Encoder** इनपुट तस्बिरबाट features निकाल्छ। +* **Decoder** ती features लाई **mask image** मा रूपान्तरण गर्दछ, जसको आकार र च्यानलहरूको संख्या वर्गहरूको संख्याको अनुरूप हुन्छ। + + + +> तस्बिर [यस प्रकाशन](https://arxiv.org/pdf/2001.05566.pdf) बाट। + +Segmentation मा प्रयोग हुने loss function विशेष उल्लेखनीय छ। जब classical autoencoders प्रयोग गरिन्छ, हामीले दुई तस्बिरहरू बीचको समानता मापन गर्नुपर्छ, र mean square error (MSE) प्रयोग गर्न सकिन्छ। तर segmentation मा, target mask image को प्रत्येक पिक्सेलले वर्ग संख्या (third dimension मा one-hot-encoded) प्रतिनिधित्व गर्दछ, त्यसैले हामीले classification-specific loss functions प्रयोग गर्नुपर्छ - cross-entropy loss, सबै पिक्सेलहरूमा औसत गरिएको। यदि mask binary छ भने - **binary cross-entropy loss** (BCE) प्रयोग गरिन्छ। + +> ✅ One-hot encoding वर्ग label लाई वर्गहरूको संख्याको बराबर लम्बाइको vector मा encode गर्ने तरिका हो। [यस लेख](https://datagy.io/sklearn-one-hot-encode/) मा यो प्रविधि हेर्नुहोस्। + +## चिकित्सा तस्बिरहरूको लागि Segmentation + +यस पाठमा, हामी segmentation लाई कार्यमा देख्नेछौं, जहाँ नेटवर्कलाई चिकित्सा तस्बिरहरूमा मानव nevi (मोल्स) चिन्हित गर्न प्रशिक्षण दिनेछौं। हामी PH2 Database को dermoscopy तस्बिरहरू प्रयोग गर्नेछौं। यस डेटासेटमा तीन वर्गका २०० तस्बिरहरू छन्: typical nevus, atypical nevus, र melanoma। सबै तस्बिरहरूमा **mask** पनि समावेश छ, जसले nevus लाई outline गर्दछ। + +> ✅ यो प्रविधि विशेष गरी चिकित्सा तस्बिरहरूको लागि उपयुक्त छ, तर तपाईं अन्य वास्तविक-जीवन अनुप्रयोगहरू के कल्पना गर्न सक्नुहुन्छ? + +navi + +> तस्बिर PH2 Database बाट। + +हामी एक मोडेललाई nevus लाई यसको background बाट अलग गर्न प्रशिक्षण दिनेछौं। + +## ✍️ अभ्यास: Semantic Segmentation + +तलका notebooks खोल्नुहोस्, विभिन्न semantic segmentation architectures को बारेमा थप जान्न, तिनीहरूसँग काम गर्ने अभ्यास गर्न, र तिनीहरूलाई कार्यमा देख्न। + +* [Semantic Segmentation Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantic Segmentation TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## निष्कर्ष + +Segmentation तस्बिर वर्गीकरणको लागि एक शक्तिशाली प्रविधि हो, bounding boxes बाट अगाडि बढेर पिक्सेल-स्तरको वर्गीकरणसम्म पुग्छ। यो चिकित्सा तस्बिरहरू लगायत अन्य अनुप्रयोगहरूमा प्रयोग गरिन्छ। + +## 🚀 चुनौती + +शरीर segmentation तस्बिरहरूमा मानिसहरूको साथ गर्न सकिने सामान्य कार्यहरू मध्ये एक हो। अर्को महत्त्वपूर्ण कार्यहरूमा **skeleton detection** र **pose detection** समावेश छन्। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लाइब्रेरी प्रयास गर्नुहोस् र pose detection कसरी प्रयोग गर्न सकिन्छ हेर्नुहोस्। + +## समीक्षा र आत्म-अध्ययन + +यो [wikipedia लेख](https://wikipedia.org/wiki/Image_segmentation) ले यस प्रविधिको विभिन्न अनुप्रयोगहरूको राम्रो अवलोकन प्रदान गर्दछ। Instance segmentation र Panoptic segmentation को उप-क्षेत्रहरूको बारेमा थप जान्न आफैं अध्ययन गर्नुहोस्। + +## [Assignment](lab/README.md) + +यस प्रयोगशालामा, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) प्रयोग गरेर **मानव शरीर segmentation** प्रयास गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ne/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..4bf6f6a6 --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# मानव शरीर खण्डीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +भिडियो उत्पादनमा, जस्तै मौसम पूर्वानुमानमा, हामी प्रायः क्यामेराबाट मानव छवि काटेर अन्य फुटेजमा राख्न आवश्यक पर्छ। यो सामान्यतया **क्रोमा की** प्रविधिहरू प्रयोग गरेर गरिन्छ, जहाँ मानिसलाई एकरूप रंगको पृष्ठभूमिको अगाडि खिचिन्छ, जुन पछि हटाइन्छ। यस ल्याबमा, हामी एक न्यूरल नेटवर्क मोडेललाई मानवको सिल्हूट काट्नको लागि प्रशिक्षण दिनेछौं। + +## डाटासेट + +हामी [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) प्रयोग गर्नेछौं, जुन Kaggle बाट उपलब्ध छ। कृपया डाटासेटलाई Kaggle बाट म्यानुअली डाउनलोड गर्नुहोस्। + +## सुरुवात नोटबुक + +[BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) खोल्दै ल्याब सुरु गर्नुहोस्। + +## मुख्य कुरा + +शरीर खण्डीकरण मानिसहरूको छविहरूसँग गर्न सकिने सामान्य कार्यहरूमध्ये एक हो। अन्य महत्त्वपूर्ण कार्यहरूमा **कंकाल पत्ता लगाउने** र **अवस्था पत्ता लगाउने** समावेश छन्। यी कार्यहरू कसरी कार्यान्वयन गर्न सकिन्छ भनेर बुझ्न [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) लाइब्रेरी हेर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथार्थताका लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/4-ComputerVision/README.md b/translations/ne/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..f128e0cb --- /dev/null +++ b/translations/ne/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# कम्प्युटर भिजन + +![कम्प्युटर भिजन सामग्रीको सारांश डुडलमा](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ne.png) + +यस खण्डमा हामी सिक्नेछौं: + +* [कम्प्युटर भिजन र OpenCV को परिचय](06-IntroCV/README.md) +* [कन्भोलुसनल न्युरल नेटवर्कहरू](07-ConvNets/README.md) +* [पूर्व-प्रशिक्षित नेटवर्कहरू र ट्रान्सफर लर्निङ](08-TransferLearning/README.md) +* [अटोएनकोडरहरू](09-Autoencoders/README.md) +* [जेनेरेटिभ एड्भर्सेरियल नेटवर्कहरू](10-GANs/README.md) +* [वस्तु पहिचान](11-ObjectDetection/README.md) +* [सेम्यान्टिक सेग्मेन्टेसन](12-Segmentation/README.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/13-TextRep/README.md b/translations/ne/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..eb83e6f9 --- /dev/null +++ b/translations/ne/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,87 @@ + +# पाठलाई टेन्सरको रूपमा प्रतिनिधित्व गर्ने + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## पाठ वर्गीकरण + +यस खण्डको पहिलो भागभरि, हामी **पाठ वर्गीकरण** कार्यमा केन्द्रित हुनेछौं। हामी [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) डेटासेट प्रयोग गर्नेछौं, जसमा निम्न जस्ता समाचार लेखहरू समावेश छन्: + +* श्रेणी: विज्ञान/प्रविधि +* शीर्षक: Ky. Company Wins Grant to Study Peptides (AP) +* मुख्य भाग: AP - लुइसभिल विश्वविद्यालयका रसायनशास्त्र अनुसन्धानकर्ताद्वारा स्थापना गरिएको कम्पनीले विकास गर्न अनुदान जित्यो... + +हाम्रो लक्ष्य पाठको आधारमा समाचारलाई कुनै एक श्रेणीमा वर्गीकृत गर्नु हुनेछ। + +## पाठको प्रतिनिधित्व + +यदि हामी प्राकृतिक भाषा प्रशोधन (NLP) कार्यहरू न्यूरल नेटवर्कहरूसँग समाधान गर्न चाहन्छौं भने, पाठलाई टेन्सरको रूपमा प्रतिनिधित्व गर्ने कुनै तरिका आवश्यक छ। कम्प्युटरहरूले पहिले नै ASCII वा UTF-8 जस्ता एन्कोडिङहरू प्रयोग गरेर पाठ्य वर्णहरूलाई स्क्रिनमा फन्टसँग मिल्ने संख्याको रूपमा प्रतिनिधित्व गर्छन्। + +क्यारेक्टरलाई ASCII र बाइनरी प्रतिनिधित्वमा म्याप गर्ने चित्र + +> [छवि स्रोत](https://www.seobility.net/en/wiki/ASCII) + +मानिसका रूपमा, हामी प्रत्येक अक्षरले के **प्रतिनिधित्व** गर्छ बुझ्छौं, र सबै वर्णहरू मिलेर वाक्यका शब्दहरू कसरी बनाउँछन् भन्ने कुरा थाहा हुन्छ। तर, कम्प्युटरहरूले आफैंमा यस्तो बुझाइ राख्दैनन्, र न्यूरल नेटवर्कले प्रशिक्षणको क्रममा यसको अर्थ सिक्नुपर्छ। + +त्यसैले, पाठको प्रतिनिधित्व गर्दा हामी विभिन्न दृष्टिकोणहरू प्रयोग गर्न सक्छौं: + +* **क्यारेक्टर-स्तरको प्रतिनिधित्व**, जहाँ हामी प्रत्येक क्यारेक्टरलाई संख्याको रूपमा लिन्छौं। यदि हाम्रो पाठ कर्पसमा *C* फरक क्यारेक्टरहरू छन् भने, *Hello* शब्दलाई 5x*C* टेन्सरले प्रतिनिधित्व गर्नेछ। प्रत्येक अक्षरले वन-हट एन्कोडिङमा टेन्सरको स्तम्भलाई प्रतिनिधित्व गर्नेछ। +* **शब्द-स्तरको प्रतिनिधित्व**, जसमा हामी हाम्रो पाठको सबै शब्दहरूको **शब्दकोश** बनाउँछौं, र त्यसपछि शब्दहरूलाई वन-हट एन्कोडिङ प्रयोग गरेर प्रतिनिधित्व गर्छौं। यो दृष्टिकोण केही हदसम्म राम्रो छ, किनभने प्रत्येक अक्षर आफैंमा धेरै अर्थपूर्ण हुँदैन, र उच्च-स्तरका अर्थपूर्ण अवधारणाहरू - शब्दहरू - प्रयोग गरेर हामी न्यूरल नेटवर्कको लागि कार्यलाई सरल बनाउँछौं। तर, ठूलो शब्दकोश आकारका कारण, हामी उच्च-आयामीय विरल टेन्सरहरूसँग व्यवहार गर्नुपर्छ। + +प्रतिनिधित्वको कुनै पनि तरिकामा, हामीले पहिले पाठलाई **टोकन**हरूको क्रममा रूपान्तरण गर्नुपर्छ, जहाँ एक टोकन क्यारेक्टर, शब्द, वा कहिलेकाहीँ शब्दको भाग पनि हुन सक्छ। त्यसपछि, हामी टोकनलाई संख्यामा रूपान्तरण गर्छौं, सामान्यतया **शब्दकोश** प्रयोग गरेर, र यो संख्या वन-हट एन्कोडिङ प्रयोग गरेर न्यूरल नेटवर्कमा खुवाउन सकिन्छ। + +## एन-ग्रामहरू + +प्राकृतिक भाषामा, शब्दहरूको सटीक अर्थ मात्र सन्दर्भमा निर्धारण गर्न सकिन्छ। उदाहरणका लागि, *neural network* र *fishing network* का अर्थहरू पूर्ण रूपमा फरक छन्। यसलाई ध्यानमा राख्नका लागि, हाम्रो मोडेललाई शब्दहरूको जोडीमा निर्माण गर्ने, र शब्द जोडीहरूलाई अलग शब्दकोश टोकनको रूपमा लिने तरिका अपनाउन सकिन्छ। यसरी, *I like to go fishing* वाक्यलाई निम्न टोकनहरूको क्रमले प्रतिनिधित्व गरिनेछ: *I like*, *like to*, *to go*, *go fishing*। + +यस दृष्टिकोणको समस्या भनेको शब्दकोशको आकार उल्लेखनीय रूपमा बढ्नु हो, र *go fishing* र *go shopping* जस्ता संयोजनहरू फरक टोकनहरूले प्रतिनिधित्व गर्छन्, जसले समान क्रियाको बावजुद कुनै पनि अर्थपूर्ण समानता साझा गर्दैन। + +केही अवस्थामा, हामी त्रि-ग्रामहरू -- तीन शब्दहरूको संयोजन -- प्रयोग गर्न विचार गर्न सक्छौं। यसरी, यो दृष्टिकोणलाई प्रायः **n-grams** भनिन्छ। साथै, क्यारेक्टर-स्तरको प्रतिनिधित्वमा n-grams प्रयोग गर्दा, n-grams प्रायः विभिन्न अक्षरसमूहहरूसँग मेल खान्छ। + +## ब्याग-अफ-वर्ड्स र TF/IDF + +पाठ वर्गीकरण जस्ता कार्यहरू समाधान गर्दा, हामीलाई पाठलाई एक निश्चित आकारको भेक्टरले प्रतिनिधित्व गर्न सक्षम हुनुपर्छ, जसलाई अन्तिम घना वर्गीकर्तामा इनपुटको रूपमा प्रयोग गरिनेछ। यसको सबैभन्दा सरल तरिकामध्ये एक भनेको सबै व्यक्तिगत शब्द प्रतिनिधित्वहरूलाई संयोजन गर्नु हो, जस्तै तिनीहरूलाई थपेर। यदि हामी प्रत्येक शब्दको वन-हट एन्कोडिङहरू थप्छौं भने, हामी आवृत्तिहरूको भेक्टरमा पुग्नेछौं, जसले पाठभित्र प्रत्येक शब्द कति पटक देखा पर्छ भन्ने देखाउँछ। पाठको यस्तो प्रतिनिधित्वलाई **ब्याग-अफ-वर्ड्स** (BoW) भनिन्छ। + + + +> लेखकद्वारा सिर्जित छवि + +BoWले पाठमा कुन शब्दहरू देखा पर्छन् र कुन मात्रामा भन्ने कुरा प्रतिनिधित्व गर्छ, जुन वास्तवमा पाठको विषयवस्तु के हो भन्ने राम्रो संकेत हुन सक्छ। उदाहरणका लागि, राजनीतिमा आधारित समाचार लेखमा *president* र *country* जस्ता शब्दहरू हुने सम्भावना छ, जबकि वैज्ञानिक प्रकाशनमा *collider*, *discovered* जस्ता शब्दहरू हुनेछन्। यसरी, शब्द आवृत्तिहरू धेरै अवस्थामा पाठको सामग्रीको राम्रो संकेत हुन सक्छ। + +BoWको समस्या भनेको केही सामान्य शब्दहरू, जस्तै *and*, *is*, आदि धेरैजसो पाठहरूमा देखा पर्छन्, र तिनीहरूको आवृत्ति उच्च हुन्छ, जसले वास्तवमै महत्त्वपूर्ण शब्दहरूलाई छायामा पार्छ। हामीले ती शब्दहरूको महत्त्व घटाउन सक्छौं, जसले गर्दा शब्दहरू सम्पूर्ण कागजात संग्रहमा कति पटक देखा पर्छ भन्ने आवृत्तिलाई ध्यानमा राख्छ। यो नै TF/IDF दृष्टिकोणको मुख्य विचार हो, जुन यस पाठसँग संलग्न नोटबुकहरूमा थप विवरणमा समेटिएको छ। + +तर, यी कुनै पनि दृष्टिकोणहरूले पाठको **अर्थ**लाई पूर्ण रूपमा ध्यानमा राख्न सक्दैन। यसका लागि हामीलाई अझ शक्तिशाली न्यूरल नेटवर्क मोडेलहरू आवश्यक पर्छ, जुन हामी यस खण्डमा पछि छलफल गर्नेछौं। + +## ✍️ अभ्यास: पाठको प्रतिनिधित्व + +तपाईंको सिकाइलाई निम्न नोटबुकहरूमा जारी राख्नुहोस्: + +* [PyTorch प्रयोग गरेर पाठको प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow प्रयोग गरेर पाठको प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## निष्कर्ष + +अहिलेसम्म, हामीले विभिन्न शब्दहरूलाई आवृत्ति तौल थप्न सक्ने प्रविधिहरू अध्ययन गरेका छौं। यद्यपि, तिनीहरू अर्थ वा क्रमलाई प्रतिनिधित्व गर्न असमर्थ छन्। प्रसिद्ध भाषाविद् जे. आर. फर्थले १९३५ मा भनेका थिए, "शब्दको पूर्ण अर्थ सधैं सन्दर्भमा हुन्छ, र सन्दर्भबाहेकको अर्थको कुनै पनि अध्ययनलाई गम्भीरतापूर्वक लिन सकिँदैन।" हामी यस पाठ्यक्रममा पछि पाठबाट सन्दर्भगत जानकारी कसरी कब्जा गर्ने भन्ने कुरा भाषा मोडेलिङ प्रयोग गरेर सिक्नेछौं। + +## 🚀 चुनौती + +ब्याग-अफ-वर्ड्स र विभिन्न डेटा मोडेलहरू प्रयोग गरेर केही अन्य अभ्यासहरू प्रयास गर्नुहोस्। तपाईंलाई यो [Kaggle प्रतियोगिता](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) बाट प्रेरणा मिल्न सक्छ। + +## [पश्च-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## समीक्षा र आत्म-अध्ययन + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) मा पाठ एम्बेडिङ र ब्याग-अफ-वर्ड्स प्रविधिहरूको अभ्यास गर्नुहोस्। + +## [असाइनमेन्ट: नोटबुकहरू](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/13-TextRep/assignment.md b/translations/ne/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..58ab240f --- /dev/null +++ b/translations/ne/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेन्ट: नोटबुकहरू + +यस पाठसँग सम्बन्धित नोटबुकहरू (PyTorch वा TensorFlow संस्करणमध्ये कुनै एक), आफ्नै डाटासेट प्रयोग गरेर पुन: चलाउनुहोस्, सम्भवतः Kaggle बाट लिएको, जसलाई उचित श्रेय दिनुहोस्। आफ्नो निष्कर्षहरूलाई रेखांकित गर्न नोटबुकलाई पुन: लेख्नुहोस्। केही नवीन डाटासेटहरू प्रयास गर्नुहोस् जसले आश्चर्यजनक परिणाम दिन सक्छ, जस्तै [यो यूएफओ देखिएको घटनाहरूको बारेमा](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) NUFORC बाट। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/14-Embeddings/README.md b/translations/ne/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..1740c1e3 --- /dev/null +++ b/translations/ne/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# एम्बेडिङ्स + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +जब हामी BoW वा TF/IDF आधारित वर्गीकरणकर्ताहरूलाई प्रशिक्षण गरिरहेका थियौं, हामी उच्च-आयामीय bag-of-words भेक्टरहरूमा काम गरिरहेका थियौं जसको लम्बाइ `vocab_size` थियो, र हामी कम-आयामीय positional representation भेक्टरहरूलाई sparse one-hot representation मा स्पष्ट रूपमा रूपान्तरण गरिरहेका थियौं। तर, यो one-hot representation स्मृति-कुशल छैन। साथै, प्रत्येक शब्दलाई एकअर्काबाट स्वतन्त्र रूपमा व्यवहार गरिन्छ, अर्थात् one-hot encoded भेक्टरहरूले शब्दहरू बीचको कुनै पनि अर्थपूर्ण समानता व्यक्त गर्दैनन्। + +**एम्बेडिङ** को विचार भनेको शब्दहरूलाई कम-आयामीय घना भेक्टरहरूद्वारा प्रतिनिधित्व गर्नु हो, जसले कुनै न कुनै रूपमा शब्दको अर्थपूर्ण अर्थलाई प्रतिबिम्बित गर्छ। हामी पछि कसरी अर्थपूर्ण शब्द एम्बेडिङ्स निर्माण गर्ने भन्ने छलफल गर्नेछौं, तर अहिलेको लागि एम्बेडिङ्सलाई शब्द भेक्टरको आयाम घटाउने तरिकाको रूपमा सोचौं। + +त्यसैले, एम्बेडिङ लेयरले शब्दलाई इनपुटको रूपमा लिन्छ, र निर्दिष्ट गरिएको `embedding_size` को आउटपुट भेक्टर उत्पादन गर्छ। यो केही हदसम्म `Linear` लेयरसँग धेरै मिल्दोजुल्दो छ, तर यो one-hot encoded भेक्टर लिने सट्टा, शब्द नम्बरलाई इनपुटको रूपमा लिन सक्षम हुनेछ, जसले हामीलाई ठूलो one-hot-encoded भेक्टरहरू सिर्जना गर्नबाट जोगाउँछ। + +हाम्रो वर्गीकरणकर्ता नेटवर्कमा पहिलो लेयरको रूपमा एम्बेडिङ लेयर प्रयोग गरेर, हामी bag-of-words बाट **embedding bag** मोडेलमा स्विच गर्न सक्छौं, जहाँ हामी पहिलो पटक हाम्रो पाठमा प्रत्येक शब्दलाई सम्बन्धित एम्बेडिङमा रूपान्तरण गर्छौं, र त्यसपछि ती सबै एम्बेडिङ्समा कुनै समग्र कार्य जस्तै `sum`, `average` वा `max` गणना गर्छौं। + +![पाँच अनुक्रम शब्दहरूको लागि एम्बेडिङ वर्गीकरणकर्ता देखाउने छवि।](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ne.png) + +> लेखकद्वारा प्रदान गरिएको छवि + +## ✍️ अभ्यास: एम्बेडिङ्स + +तपाईंको सिकाइलाई निम्न नोटबुकहरूमा जारी राख्नुहोस्: +* [PyTorch सँग एम्बेडिङ्स](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow सँग एम्बेडिङ्स](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## अर्थपूर्ण एम्बेडिङ्स: Word2Vec + +यद्यपि एम्बेडिङ लेयरले शब्दहरूलाई भेक्टर प्रतिनिधित्वमा म्याप गर्न सिक्यो, यो प्रतिनिधित्वले अनिवार्य रूपमा धेरै अर्थपूर्ण अर्थ राख्दैन। यस्तो भेक्टर प्रतिनिधित्व सिक्न राम्रो हुनेछ जसमा समान शब्दहरू वा पर्यायवाची शब्दहरू भेक्टर दूरी (जस्तै, Euclidean दूरी) को सन्दर्भमा एकअर्काको नजिक हुन्छन्। + +यसका लागि, हामीले हाम्रो एम्बेडिङ मोडेललाई ठूलो पाठ संग्रहमा विशेष तरिकाले पूर्व-प्रशिक्षण गर्न आवश्यक छ। अर्थपूर्ण एम्बेडिङ्स प्रशिक्षण गर्ने एउटा तरिका [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) भनिन्छ। यो दुई मुख्य आर्किटेक्चरहरूमा आधारित छ, जसले शब्दहरूको वितरित प्रतिनिधित्व उत्पादन गर्न प्रयोग गरिन्छ: + + - **Continuous bag-of-words** (CBoW) — यस आर्किटेक्चरमा, हामीले मोडेललाई वरपरको सन्दर्भबाट शब्दको भविष्यवाणी गर्न प्रशिक्षण दिन्छौं। दिइएको ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, मोडेलको लक्ष्य $(W_{-2},W_{-1},W_1,W_2)$ बाट $W_0$ को भविष्यवाणी गर्नु हो। + - **Continuous skip-gram** CBoW को विपरीत हो। मोडेलले सन्दर्भ शब्दहरूको वरपरको झ्याल प्रयोग गरेर वर्तमान शब्दको भविष्यवाणी गर्छ। + +CBoW छिटो छ, जबकि skip-gram ढिलो छ, तर दुर्लभ शब्दहरूको प्रतिनिधित्व गर्न राम्रो काम गर्छ। + +![शब्दहरूलाई भेक्टरमा रूपान्तरण गर्न CBoW र Skip-Gram एल्गोरिदम देखाउने छवि।](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ne.png) + +> [यस पेपर](https://arxiv.org/pdf/1301.3781.pdf) बाट लिइएको छवि + +Word2Vec पूर्व-प्रशिक्षित एम्बेडिङ्स (र GloVe जस्ता अन्य समान मोडेलहरू) पनि न्यूरल नेटवर्कहरूमा एम्बेडिङ लेयरको सट्टा प्रयोग गर्न सकिन्छ। तर, हामीले शब्दावलीहरूसँग व्यवहार गर्न आवश्यक छ, किनभने Word2Vec/GloVe लाई पूर्व-प्रशिक्षण गर्न प्रयोग गरिएको शब्दावली हाम्रो पाठ संग्रहको शब्दावलीसँग फरक हुन सक्छ। माथिका नोटबुकहरूमा हेर्नुहोस् कि यो समस्या कसरी समाधान गर्न सकिन्छ। + +## सन्दर्भगत एम्बेडिङ्स + +Word2Vec जस्ता परम्परागत पूर्व-प्रशिक्षित एम्बेडिङ प्रतिनिधित्वहरूको एउटा प्रमुख सीमा भनेको शब्द अर्थ अस्पष्टताको समस्या हो। यद्यपि पूर्व-प्रशिक्षित एम्बेडिङ्सले सन्दर्भमा शब्दहरूको केही अर्थ समात्न सक्छ, शब्दको प्रत्येक सम्भावित अर्थ एउटै एम्बेडिङमा कोड गरिएको हुन्छ। यसले डाउनस्ट्रीम मोडेलहरूमा समस्या उत्पन्न गर्न सक्छ, किनभने धेरै शब्दहरू, जस्तै 'play', सन्दर्भमा निर्भर गर्दै फरक अर्थ राख्छन्। + +उदाहरणका लागि, 'play' शब्दले यी दुई वाक्यहरूमा धेरै फरक अर्थ राख्छ: + +- म थिएटरमा **play** हेर्न गएँ। +- जोन आफ्ना साथीहरूसँग **play** गर्न चाहन्छ। + +माथिका पूर्व-प्रशिक्षित एम्बेडिङ्सले 'play' शब्दको यी दुवै अर्थलाई एउटै एम्बेडिङमा प्रतिनिधित्व गर्छ। यस सीमालाई पार गर्न, हामीले **भाषा मोडेल** मा आधारित एम्बेडिङ्स निर्माण गर्न आवश्यक छ, जुन ठूलो पाठ संग्रहमा प्रशिक्षण गरिएको हुन्छ, र *जान्दछ* कि शब्दहरू विभिन्न सन्दर्भहरूमा कसरी राख्न सकिन्छ। सन्दर्भगत एम्बेडिङ्सको चर्चा यस ट्युटोरियलको दायराभन्दा बाहिर छ, तर हामी यसबारे पछि भाषिक मोडेलहरूको चर्चा गर्दा फर्कनेछौं। + +## निष्कर्ष + +यस पाठमा, तपाईंले TensorFlow र PyTorch मा एम्बेडिङ लेयरहरू निर्माण र प्रयोग गरेर शब्दहरूको अर्थपूर्ण अर्थलाई राम्रोसँग प्रतिबिम्बित गर्ने तरिका पत्ता लगाउनुभयो। + +## 🚀 चुनौती + +Word2Vec केही रोचक अनुप्रयोगहरूको लागि प्रयोग गरिएको छ, जस्तै गीतका शब्दहरू र कविता सिर्जना गर्नु। [यस लेख](https://www.politetype.com/blog/word2vec-color-poems) मा हेर्नुहोस्, जसले लेखकले Word2Vec प्रयोग गरेर कविता कसरी सिर्जना गरे भन्ने देखाउँछ। [Dan Shiffmann द्वारा यो भिडियो](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) पनि हेर्नुहोस्, जसले यस प्रविधिको फरक व्याख्या पत्ता लगाउन मद्दत गर्छ। त्यसपछि यी प्रविधिहरूलाई आफ्नो पाठ संग्रहमा लागू गर्न प्रयास गर्नुहोस्, सम्भवतः Kaggle बाट स्रोत गरिएको। + +## [पश्च-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## समीक्षा र आत्म-अध्ययन + +Word2Vec मा यो पेपर पढ्नुहोस्: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [असाइनमेन्ट: नोटबुकहरू](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ne/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..e69e295e --- /dev/null +++ b/translations/ne/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेन्ट: नोटबुकहरू + +यस पाठसँग सम्बन्धित नोटबुकहरू (PyTorch वा TensorFlow संस्करण), आफ्नो आफ्नै डाटासेट प्रयोग गरेर पुन: चलाउनुहोस्, सम्भवतः Kaggle बाट लिएको, जसलाई श्रेय दिइएको छ। नोटबुकलाई पुन: लेख्नुहोस् ताकि तपाईंका आफ्नै निष्कर्षहरूलाई जोड दिन सकियोस्। फरक प्रकारको डाटासेट प्रयास गर्नुहोस् र आफ्नो निष्कर्षहरूलाई दस्तावेज गर्नुहोस्, जस्तै [यी Beatles गीतका शब्दहरू](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) प्रयोग गरेर। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। मूल दस्तावेज़ यसको मातृभाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ne/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..688db73d --- /dev/null +++ b/translations/ne/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# भाषा मोडेलिङ + +Word2Vec र GloVe जस्ता सेम्यान्टिक एम्बेडिङहरू वास्तवमा **भाषा मोडेलिङ** तर्फको पहिलो कदम हुन् - यस्तो मोडेल बनाउने जसले कुनै प्रकारले भाषा *बुझ्न* (वा *प्रतिनिधित्व गर्न*) सक्दछ। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +भाषा मोडेलिङको मुख्य विचार भनेको unlabeled datasets मा unsupervised तरिकाले प्रशिक्षण गर्नु हो। यो महत्त्वपूर्ण छ किनभने हामीसँग unlabeled पाठको ठूलो मात्रा उपलब्ध छ, जबकि labeled पाठको मात्रा सधैं सीमित हुन्छ किनभने labeling मा खर्च गर्न सकिने प्रयास सीमित हुन्छ। प्रायः, हामी यस्तो भाषा मोडेल बनाउन सक्छौं जसले **पाठमा हराएका शब्दहरू भविष्यवाणी गर्न सक्छ** किनभने पाठमा कुनै पनि शब्दलाई mask गरेर प्रशिक्षण नमूना बनाउन सजिलो हुन्छ। + +## एम्बेडिङ प्रशिक्षण + +हाम्रो अघिल्लो उदाहरणहरूमा, हामीले pre-trained semantic embeddings प्रयोग गरेका थियौं, तर ती embeddings कसरी प्रशिक्षण गर्न सकिन्छ भन्ने हेर्न रोचक छ। यसका लागि विभिन्न सम्भावित विचारहरू प्रयोग गर्न सकिन्छ: + +* **N-Gram** भाषा मोडेलिङ, जहाँ हामी N अघिल्लो टोकनहरू हेरेर टोकन भविष्यवाणी गर्छौं (N-gram) +* **Continuous Bag-of-Words** (CBoW), जहाँ हामी टोकन अनुक्रम $W_{-N}$, ..., $W_N$ को बीचको टोकन $W_0$ भविष्यवाणी गर्छौं। +* **Skip-gram**, जहाँ हामी बीचको टोकन $W_0$ बाट छिमेकी टोकनहरूको सेट {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} भविष्यवाणी गर्छौं। + +![शब्दलाई भेक्टरमा रूपान्तरण गर्ने एल्गोरिदमको कागजबाट चित्र](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ne.png) + +> चित्र [यस कागज](https://arxiv.org/pdf/1301.3781.pdf) बाट + +## ✍️ उदाहरण नोटबुकहरू: CBoW मोडेल प्रशिक्षण + +निम्न नोटबुकहरूमा सिकाइ जारी राख्नुहोस्: + +* [TensorFlow प्रयोग गरेर CBoW Word2Vec प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch प्रयोग गरेर CBoW Word2Vec प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## निष्कर्ष + +अघिल्लो पाठमा हामीले देख्यौं कि शब्द एम्बेडिङहरू जादुजस्तै काम गर्छन्! अब हामीलाई थाहा छ कि शब्द एम्बेडिङ प्रशिक्षण गर्नु धेरै जटिल कार्य होइन, र आवश्यक परेमा हामी आफ्नो क्षेत्र विशेष पाठका लागि आफ्नै शब्द एम्बेडिङ प्रशिक्षण गर्न सक्षम हुनुपर्छ। + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## समीक्षा र आत्म-अध्ययन + +* [PyTorch को आधिकारिक भाषा मोडेलिङ ट्युटोरियल](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)। +* [Word2Vec मोडेल प्रशिक्षणको लागि TensorFlow को आधिकारिक ट्युटोरियल](https://www.TensorFlow.org/tutorials/text/word2vec)। +* **gensim** फ्रेमवर्क प्रयोग गरेर केही लाइनको कोडमा प्रचलित एम्बेडिङहरू प्रशिक्षण गर्ने तरिका [यस दस्तावेजमा](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) वर्णन गरिएको छ। + +## 🚀 [असाइनमेन्ट: Skip-Gram मोडेल प्रशिक्षण गर्नुहोस्](lab/README.md) + +प्रयोगशालामा, हामी तपाईंलाई यस पाठको कोडलाई संशोधन गरेर CBoW को सट्टा Skip-Gram मोडेल प्रशिक्षण गर्न चुनौती दिन्छौं। [विवरण पढ्नुहोस्](lab/README.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ne/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..24bcf08f --- /dev/null +++ b/translations/ne/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# स्किप-ग्राम मोडेल प्रशिक्षण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +यस ल्याबमा, तपाईंलाई स्किप-ग्राम प्रविधि प्रयोग गरेर Word2Vec मोडेल प्रशिक्षण गर्न चुनौती दिइन्छ। $N$-टोकन-चौडा स्किप-ग्राम विन्डोमा छिमेकी शब्दहरूको भविष्यवाणी गर्न एम्बेडिङसहितको नेटवर्क प्रशिक्षण गर्नुहोस्। तपाईं [यस पाठको कोड](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) प्रयोग गर्न सक्नुहुन्छ, र यसलाई अलिकति परिमार्जन गर्न सक्नुहुन्छ। + +## डाटासेट + +तपाईं कुनै पनि पुस्तक प्रयोग गर्न सक्नुहुन्छ। [Project Gutenberg](https://www.gutenberg.org/) मा धेरै निःशुल्क पाठहरू फेला पार्न सकिन्छ। उदाहरणका लागि, यहाँ [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) (लेविस क्यारोलद्वारा) को प्रत्यक्ष लिङ्क छ। वा, तपाईं शेक्सपियरका नाटकहरू प्रयोग गर्न सक्नुहुन्छ, जुन तपाईंले निम्न कोड प्रयोग गरेर प्राप्त गर्न सक्नुहुन्छ: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## अन्वेषण गर्नुहोस्! + +यदि तपाईंलाई समय छ र विषयमा अझ गहिराइमा जान चाहनुहुन्छ भने, केही कुराहरू अन्वेषण गर्न प्रयास गर्नुहोस्: + +* एम्बेडिङ साइजले नतिजामा कसरी प्रभाव पार्छ? +* फरक पाठ शैलीहरूले नतिजामा कसरी प्रभाव पार्छ? +* धेरै फरक प्रकारका शब्दहरू र तिनका पर्यायवाचीहरू लिनुहोस्, तिनका भेक्टर प्रतिनिधित्वहरू प्राप्त गर्नुहोस्, आयाम घटाउन PCA लागू गर्नुहोस्, र तिनलाई २D स्पेसमा प्लट गर्नुहोस्। के तपाईं कुनै ढाँचाहरू देख्नुहुन्छ? + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/16-RNN/README.md b/translations/ne/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..0b38a751 --- /dev/null +++ b/translations/ne/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# पुनरावर्ती न्यूरल नेटवर्कहरू + +## [पाठ अघि क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +अघिल्लो खण्डहरूमा, हामीले पाठको समृद्ध अर्थपूर्ण प्रतिनिधित्वहरू र इम्बेडिङको माथि एक साधारण रेखीय वर्गीकरणकर्ता प्रयोग गरिरहेका थियौं। यो वास्तुकलाले वाक्यमा शब्दहरूको समग्र अर्थलाई समात्छ, तर यो शब्दहरूको **क्रम**लाई ध्यानमा राख्दैन, किनभने इम्बेडिङको माथि गरिएको समग्र अपरेशनले मूल पाठबाट यो जानकारी हटाउँछ। यी मोडेलहरूले शब्दहरूको क्रमबद्धता मोडल गर्न नसक्ने हुँदा, तिनीहरूले पाठ सिर्जना वा प्रश्न उत्तरजस्ता जटिल वा अस्पष्ट कार्यहरू समाधान गर्न सक्दैनन्। + +पाठ अनुक्रमको अर्थ समात्न, हामीले अर्को न्यूरल नेटवर्क वास्तुकला प्रयोग गर्न आवश्यक छ, जसलाई **पुनरावर्ती न्यूरल नेटवर्क** वा RNN भनिन्छ। RNN मा, हामी हाम्रो वाक्यलाई नेटवर्कमा एक पटकमा एक प्रतीक पास गर्छौं, र नेटवर्कले केही **राज्य** उत्पादन गर्छ, जुन हामी अर्को प्रतीकसँग नेटवर्कमा पुन: पास गर्छौं। + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ne.png) + +> लेखकद्वारा प्रदान गरिएको छवि + +प्रतीकहरूको इनपुट अनुक्रम X0,...,Xn दिइएको अवस्थामा, RNN ले न्यूरल नेटवर्क ब्लकहरूको अनुक्रम सिर्जना गर्छ, र यो अनुक्रमलाई अन्त्यसम्म ब्याकप्रोपोगेसन प्रयोग गरेर प्रशिक्षण दिन्छ। प्रत्येक नेटवर्क ब्लकले (Xi,Si) जोडीलाई इनपुटको रूपमा लिन्छ, र परिणामस्वरूप Si+1 उत्पादन गर्छ। अन्तिम राज्य Sn वा (आउटपुट Yn) लाई रेखीय वर्गीकरणकर्तामा पठाइन्छ परिणाम उत्पादन गर्न। सबै नेटवर्क ब्लकहरूले समान तौल साझा गर्छन्, र एक ब्याकप्रोपोगेसन पास प्रयोग गरेर अन्त्यसम्म प्रशिक्षण गरिन्छ। + +किनकि राज्य भेक्टरहरू S0,...,Sn नेटवर्कमार्फत पास गरिन्छ, यसले शब्दहरू बीचको क्रमबद्ध निर्भरता सिक्न सक्षम हुन्छ। उदाहरणका लागि, जब *not* शब्द अनुक्रममा कतै देखा पर्छ, यसले राज्य भेक्टरभित्रका निश्चित तत्वहरूलाई नकार्न सिक्न सक्छ, जसले नकारात्मकता उत्पन्न गर्छ। + +> ✅ माथिको चित्रमा देखाइएका सबै RNN ब्लकहरूको तौल साझा गरिएको छ, त्यसैले एउटै चित्रलाई एक ब्लक (दायाँतर्फ) को रूपमा प्रतिनिधित्व गर्न सकिन्छ, जसमा पुनरावर्ती फिडब्याक लूप हुन्छ, जसले नेटवर्कको आउटपुट राज्यलाई इनपुटमा फिर्ता पास गर्छ। + +## RNN सेलको संरचना + +अब हामी एक साधारण RNN सेल कसरी व्यवस्थित छ हेर्नेछौं। यसले अघिल्लो राज्य Si-1 र वर्तमान प्रतीक Xi लाई इनपुटको रूपमा स्वीकार्छ, र आउटपुट राज्य Si उत्पादन गर्नुपर्छ (र, कहिलेकाहीँ, हामी अन्य आउटपुट Yi मा पनि चासो राख्छौं, जस्तै जेनेरेटिभ नेटवर्कहरूको मामलामा)। + +एक साधारण RNN सेलभित्र दुई तौल म्याट्रिक्स हुन्छन्: एउटा इनपुट प्रतीकलाई रूपान्तरण गर्छ (यसलाई W भनौं), र अर्को इनपुट राज्यलाई रूपान्तरण गर्छ (H)। यस अवस्थामा नेटवर्कको आउटपुट σ(W×Xi+H×Si-1+b) को रूपमा गणना गरिन्छ, जहाँ σ सक्रियता प्रकार्य हो र b थप पूर्वाग्रह हो। + +RNN सेलको संरचना + +> लेखकद्वारा प्रदान गरिएको छवि + +धेरै अवस्थामा, इनपुट प्रतीकहरू RNN मा प्रवेश गर्नु अघि इम्बेडिङ तहमार्फत पास गरिन्छ ताकि आयाम घटाउन सकियोस्। यस अवस्थामा, यदि इनपुट भेक्टरहरूको आयाम *emb_size* हो, र राज्य भेक्टर *hid_size* हो - W को आकार *emb_size*×*hid_size* हुन्छ, र H को आकार *hid_size*×*hid_size* हुन्छ। + +## लामो छोटो अवधि स्मृति (LSTM) + +क्लासिकल RNNहरूको मुख्य समस्याहरू मध्ये एक **वेनिशिङ ग्रेडियन्ट** समस्या हो। किनकि RNNहरू एक ब्याकप्रोपोगेसन पासमा अन्त्यसम्म प्रशिक्षण गरिन्छ, यसले नेटवर्कको पहिलो तहहरूमा त्रुटि फैलाउन कठिनाइ हुन्छ, र यसैले नेटवर्कले टाढाका प्रतीकहरू बीचको सम्बन्धहरू सिक्न सक्दैन। यो समस्यालाई टार्नको लागि **स्पष्ट राज्य व्यवस्थापन** गेटहरू प्रयोग गरेर परिचय गराइन्छ। यस प्रकारका दुई प्रसिद्ध वास्तुकलाहरू छन्: **लामो छोटो अवधि स्मृति** (LSTM) र **गेटेड रिलेको इकाई** (GRU)। + +![लामो छोटो अवधि स्मृति सेलको उदाहरण देखाउने छवि](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> छवि स्रोत TBD + +LSTM नेटवर्क RNN जस्तै व्यवस्थित छ, तर दुई राज्यहरू छन् जुन तहबाट तहमा पास गरिन्छ: वास्तविक राज्य C, र लुकेको भेक्टर H। प्रत्येक इकाईमा, लुकेको भेक्टर Hi इनपुट Xi सँग जोडिन्छ, र तिनीहरूले **गेटहरू** मार्फत राज्य C मा के हुन्छ नियन्त्रण गर्छन्। प्रत्येक गेट एक न्यूरल नेटवर्क हो जसमा सिग्मोइड सक्रियता हुन्छ (आउटपुट [0,1] को दायरामा), जसलाई राज्य भेक्टरसँग गुणा गर्दा बिटवाइज मास्कको रूपमा सोच्न सकिन्छ। निम्न गेटहरू छन् (चित्रमा बाँयाबाट दायाँ): + +* **भुल्ने गेट** लुकेको भेक्टर लिन्छ र भेक्टर C का कुन घटकहरू भुल्नुपर्छ र कुन पास गर्नुपर्छ निर्धारण गर्छ। +* **इनपुट गेट** इनपुट र लुकेको भेक्टरबाट केही जानकारी लिन्छ र राज्यमा समावेश गर्छ। +* **आउटपुट गेट** राज्यलाई *tanh* सक्रियता भएको रेखीय तहमार्फत रूपान्तरण गर्छ, त्यसपछि नयाँ राज्य Ci+1 उत्पादन गर्न लुकेको भेक्टर Hi प्रयोग गरेर यसको केही घटकहरू चयन गर्छ। + +राज्य C का घटकहरूलाई केही झण्डाहरूको रूपमा सोच्न सकिन्छ जसलाई अन र अफ गर्न सकिन्छ। उदाहरणका लागि, जब हामी अनुक्रममा *Alice* नाम भेट्छौं, हामीले यसलाई महिला पात्रलाई जनाउँछ भन्ने मान्न सक्छौं, र राज्यमा झण्डा उठाउन सक्छौं कि वाक्यमा महिला संज्ञा छ। जब हामी थप *and Tom* वाक्यांश भेट्छौं, हामीले बहुवचन संज्ञा भएको झण्डा उठाउनेछौं। यसरी राज्यलाई हेरफेर गरेर हामी वाक्यका भागहरूको व्याकरणिक गुणहरू ट्र्याक गर्न सक्छौं। + +> ✅ LSTM को आन्तरिक संरचना बुझ्नको लागि उत्कृष्ट स्रोत क्रिस्टोफर ओलाहद्वारा लेखिएको [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) हो। + +## द्विदिशात्मक र बहु-तह RNNहरू + +हामीले एक दिशामा सञ्चालन गर्ने पुनरावर्ती नेटवर्कहरू छलफल गरेका छौं, अनुक्रमको सुरुबाट अन्त्यसम्म। यो प्राकृतिक देखिन्छ, किनकि यसले हामीले पढ्ने र बोल्ने तरिकालाई झल्काउँछ। तर, धेरै व्यावहारिक अवस्थामा हामीसँग इनपुट अनुक्रममा र्यान्डम पहुँच हुन्छ, यसले पुनरावर्ती गणना दुवै दिशामा चलाउन अर्थ राख्न सक्छ। यस्ता नेटवर्कहरूलाई **द्विदिशात्मक** RNN भनिन्छ। द्विदिशात्मक नेटवर्कसँग व्यवहार गर्दा, हामीलाई प्रत्येक दिशाको लागि दुई लुकेको राज्य भेक्टर आवश्यक पर्छ। + +एक पुनरावर्ती नेटवर्क, चाहे एक-दिशात्मक होस् वा द्विदिशात्मक, अनुक्रमभित्र निश्चित ढाँचाहरू समात्छ, र तिनीहरूलाई राज्य भेक्टरमा भण्डारण गर्न वा आउटपुटमा पास गर्न सक्छ। कन्भोल्युसनल नेटवर्कहरू जस्तै, हामी पहिलो तहले निकालेका तल्लो-स्तरका ढाँचाहरूबाट उच्च-स्तरका ढाँचाहरू समात्न अर्को पुनरावर्ती तह निर्माण गर्न सक्छौं। यसले हामीलाई **बहु-तह RNN** को धारणा दिन्छ, जसमा दुई वा बढी पुनरावर्ती नेटवर्कहरू हुन्छन्, जहाँ अघिल्लो तहको आउटपुट अर्को तहमा इनपुटको रूपमा पास गरिन्छ। + +![बहु-तह लामो-छोटो-अवधि-स्मृति RNN देखाउने छवि](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ne.jpg) + +*फर्नान्डो लोपेजद्वारा [यो उत्कृष्ट पोस्ट](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) बाट चित्र* + +## ✍️ अभ्यास: इम्बेडिङहरू + +निम्न नोटबुकहरूमा आफ्नो सिकाइ जारी राख्नुहोस्: + +* [PyTorch प्रयोग गरेर RNNहरू](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow प्रयोग गरेर RNNहरू](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## निष्कर्ष + +यस इकाईमा, हामीले देख्यौं कि RNNहरू अनुक्रम वर्गीकरणको लागि प्रयोग गर्न सकिन्छ, तर वास्तवमा, तिनीहरूले पाठ सिर्जना, मेसिन अनुवाद, र अन्य धेरै कार्यहरू ह्यान्डल गर्न सक्छन्। हामी ती कार्यहरूलाई अर्को इकाईमा विचार गर्नेछौं। + +## 🚀 चुनौती + +LSTMहरूको बारेमा केही साहित्य पढ्नुहोस् र तिनीहरूको अनुप्रयोगहरू विचार गर्नुहोस्: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [पाठ पछि क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## समीक्षा र आत्म अध्ययन + +- क्रिस्टोफर ओलाहद्वारा लेखिएको [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)। + +## [असाइनमेन्ट: नोटबुकहरू](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/16-RNN/assignment.md b/translations/ne/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..41b95182 --- /dev/null +++ b/translations/ne/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेन्ट: नोटबुकहरू + +यस पाठसँग सम्बन्धित नोटबुकहरू (PyTorch वा TensorFlow संस्करण), आफ्नो आफ्नै डाटासेट प्रयोग गरेर पुन: चलाउनुहोस्, सम्भवतः Kaggle बाट लिएको, जसलाई श्रेय दिइएको छ। नोटबुकलाई पुन: लेख्नुहोस् ताकि तपाईंका आफ्नै निष्कर्षहरूलाई जोड दिन सकियोस्। फरक प्रकारको डाटासेट प्रयास गर्नुहोस् र आफ्नो निष्कर्षहरूलाई दस्तावेज गर्नुहोस्, जस्तै [यो Kaggle प्रतिस्पर्धा डाटासेट मौसम सम्बन्धी ट्वीटहरूबारे](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv) प्रयोग गरेर। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ne/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..d92127cc --- /dev/null +++ b/translations/ne/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# जेनेरेटिभ नेटवर्कहरू + +## [पाठ अघि क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +रिकरन्ट न्युरल नेटवर्कहरू (RNNs) र तिनका गेटेड सेल भेरियन्टहरू जस्तै लङ सर्ट टर्म मेमोरी सेलहरू (LSTMs) र गेटेड रिकरन्ट युनिटहरू (GRUs) ले भाषा मोडलिङको लागि एक मेकानिज्म प्रदान गर्छन् जसले शब्दहरूको क्रम सिक्न सक्छ र अनुक्रममा अर्को शब्दको भविष्यवाणी गर्न सक्छ। यसले RNNs लाई **जेनेरेटिभ कार्यहरू** जस्तै सामान्य पाठ उत्पादन, मेसिन अनुवाद, र छविको क्याप्शनिङको लागि प्रयोग गर्न अनुमति दिन्छ। + +> ✅ सोच्नुहोस् तपाईंले पाठ पूरा गर्न जस्तै जेनेरेटिभ कार्यहरूबाट कति पटक फाइदा लिनुभएको छ। तपाईंको मनपर्ने एप्लिकेसनहरूमा अनुसन्धान गर्नुहोस् कि तिनीहरूले RNNs प्रयोग गरेका छन् कि छैनन्। + +पछिल्लो युनिटमा हामीले चर्चा गरेको RNN आर्किटेक्चरमा, प्रत्येक RNN युनिटले अर्को लुकेको अवस्था उत्पादन गर्थ्यो। तर, हामी प्रत्येक रिकरन्ट युनिटमा अर्को आउटपुट थप्न सक्छौं, जसले हामीलाई **अनुक्रम** (जसको लम्बाइ मूल अनुक्रमसँग समान छ) उत्पादन गर्न अनुमति दिन्छ। साथै, हामी RNN युनिटहरू प्रयोग गर्न सक्छौं जसले प्रत्येक चरणमा इनपुट स्वीकार गर्दैनन्, र केवल केही प्रारम्भिक अवस्था भेक्टर लिन्छन्, र त्यसपछि आउटपुटहरूको अनुक्रम उत्पादन गर्छन्। + +यसले विभिन्न न्युरल आर्किटेक्चरहरूलाई अनुमति दिन्छ जुन तलको चित्रमा देखाइएको छ: + +![सामान्य रिकरन्ट न्युरल नेटवर्क ढाँचाहरू देखाउने चित्र।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ne.jpg) + +> ब्लग पोस्ट [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) बाट [Andrej Karpaty](http://karpathy.github.io/) द्वारा + +* **वन-टु-वन** एक परम्परागत न्युरल नेटवर्क हो जसमा एक इनपुट र एक आउटपुट हुन्छ। +* **वन-टु-म्यानी** एक जेनेरेटिभ आर्किटेक्चर हो जसले एक इनपुट मान स्वीकार्छ, र आउटपुट मानहरूको अनुक्रम उत्पन्न गर्छ। उदाहरणका लागि, यदि हामी एउटा **छवि क्याप्शनिङ** नेटवर्कलाई तालिम दिन चाहन्छौं जसले चित्रको पाठ विवरण उत्पादन गर्छ, हामी चित्रलाई इनपुटको रूपमा लिन सक्छौं, यसलाई CNN मार्फत पास गरेर यसको लुकेको अवस्था प्राप्त गर्न सक्छौं, र त्यसपछि रिकरन्ट चेनले शब्द-दर-शब्द क्याप्शन उत्पन्न गर्छ। +* **म्यानी-टु-वन** पछिल्लो युनिटमा वर्णन गरिएको RNN आर्किटेक्चरहरूसँग मेल खान्छ, जस्तै पाठ वर्गीकरण। +* **म्यानी-टु-म्यानी**, वा **अनुक्रम-टु-अनुक्रम** जस्तै कार्यहरूलाई मेल खान्छ जस्तै **मेसिन अनुवाद**, जहाँ पहिलो RNN ले इनपुट अनुक्रमबाट सबै जानकारी लुकेको अवस्थामा सङ्कलन गर्छ, र अर्को RNN चेनले यो अवस्था आउटपुट अनुक्रममा अनरोल गर्छ। + +यस युनिटमा, हामी सरल जेनेरेटिभ मोडेलहरूमा केन्द्रित हुनेछौं जसले हामीलाई पाठ उत्पन्न गर्न मद्दत गर्छ। सरलताको लागि, हामी क्यारेक्टर-स्तर टोकनाइजेशन प्रयोग गर्नेछौं। + +हामी यस RNN लाई चरण-दर-चरण पाठ उत्पन्न गर्न तालिम दिनेछौं। प्रत्येक चरणमा, हामी `nchars` लम्बाइको क्यारेक्टरहरूको अनुक्रम लिन्छौं, र नेटवर्कलाई प्रत्येक इनपुट क्यारेक्टरको लागि अर्को आउटपुट क्यारेक्टर उत्पन्न गर्न सोध्छौं: + +![शब्द 'HELLO' को RNN उत्पादनको उदाहरण देखाउने चित्र।](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ne.png) + +पाठ उत्पन्न गर्दा (इनफरेन्सको समयमा), हामी केही **प्रम्प्ट** बाट सुरु गर्छौं, जुन RNN सेलहरू मार्फत पास गरिन्छ यसको अन्तरिम अवस्था उत्पन्न गर्न, र त्यसपछि यस अवस्थाबाट उत्पादन सुरु हुन्छ। हामी एक पटकमा एक क्यारेक्टर उत्पन्न गर्छौं, र अर्को RNN सेलमा अवस्था र उत्पन्न क्यारेक्टर पास गर्छौं अर्को क्यारेक्टर उत्पन्न गर्न, जबसम्म पर्याप्त क्यारेक्टरहरू उत्पन्न हुँदैन। + + + +> लेखकद्वारा चित्र + +## ✍️ अभ्यासहरू: जेनेरेटिभ नेटवर्कहरू + +तलका नोटबुकहरूमा आफ्नो सिकाइ जारी राख्नुहोस्: + +* [PyTorch संग जेनेरेटिभ नेटवर्कहरू](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow संग जेनेरेटिभ नेटवर्कहरू](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## सफ्ट पाठ उत्पादन र तापक्रम + +प्रत्येक RNN सेलको आउटपुट क्यारेक्टरहरूको सम्भाव्यता वितरण हो। यदि हामी सधैं उच्चतम सम्भाव्यता भएको क्यारेक्टरलाई उत्पन्न पाठको अर्को क्यारेक्टरको रूपमा लिन्छौं भने, पाठ अक्सर "चक्रित" हुन सक्छ र बारम्बार उही क्यारेक्टर अनुक्रमहरूमा फस्न सक्छ, जस्तै यो उदाहरणमा: + +``` +today of the second the company and a second the company ... +``` + +तर, यदि हामी अर्को क्यारेक्टरको सम्भाव्यता वितरणलाई हेर्छौं भने, केही उच्चतम सम्भावनाहरूको बीचको भिन्नता ठूलो नहुन सक्छ, जस्तै एक क्यारेक्टरको सम्भाव्यता 0.2 हुन सक्छ, अर्को - 0.19, आदि। उदाहरणका लागि, '*play*' अनुक्रममा अर्को क्यारेक्टरको खोज गर्दा, अर्को क्यारेक्टर स्पेस वा **e** (जस्तै शब्द *player* मा) हुन सक्छ। + +यसले हामीलाई यो निष्कर्षमा पुर्‍याउँछ कि उच्च सम्भाव्यता भएको क्यारेक्टर चयन गर्नु सधैं "न्यायोचित" हुँदैन, किनकि दोस्रो उच्च सम्भाव्यता चयन गर्दा पनि अर्थपूर्ण पाठमा पुग्न सक्छ। यो अधिक बुद्धिमानी हुन्छ कि नेटवर्क आउटपुटले दिएको सम्भाव्यता वितरणबाट क्यारेक्टरहरू **नमूना** गरौं। हामी **तापक्रम** नामक एक प्यारामिटर पनि प्रयोग गर्न सक्छौं, जसले सम्भाव्यता वितरणलाई समतल बनाउँछ, यदि हामी थप अनियमितता थप्न चाहन्छौं, वा यसलाई अधिक तीव्र बनाउँछ, यदि हामी उच्च सम्भाव्यता क्यारेक्टरहरूमा बढी टाँसिन चाहन्छौं। + +तलका नोटबुकहरूमा यो सफ्ट पाठ उत्पादन कसरी कार्यान्वयन गरिएको छ भनेर अन्वेषण गर्नुहोस्। + +## निष्कर्ष + +पाठ उत्पादन आफैंमा उपयोगी हुन सक्छ, तर प्रमुख फाइदा RNNs प्रयोग गरेर केही प्रारम्भिक फिचर भेक्टरबाट पाठ उत्पन्न गर्ने क्षमताबाट आउँछ। उदाहरणका लागि, पाठ उत्पादन मेसिन अनुवादको भागको रूपमा प्रयोग गरिन्छ (अनुक्रम-टु-अनुक्रम, यस अवस्थामा *एन्कोडर* बाट राज्य भेक्टर प्रयोग गरेर अनुवाद गरिएको सन्देश उत्पन्न वा *डिकोड* गर्न), वा छविको पाठ विवरण उत्पन्न गर्न (यस अवस्थामा फिचर भेक्टर CNN एक्स्ट्र्याक्टरबाट आउँछ)। + +## 🚀 चुनौती + +यस विषयमा Microsoft Learn मा केही पाठहरू लिनुहोस् + +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) संग पाठ उत्पादन + +## [पाठ पछि क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## समीक्षा र आत्म अध्ययन + +तपाईंको ज्ञान विस्तार गर्नका लागि यहाँ केही लेखहरू छन्: + +* मार्कोभ चेन, LSTM र GPT-2 संग पाठ उत्पादनका विभिन्न दृष्टिकोणहरू: [ब्लग पोस्ट](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras डकुमेन्टेशन](https://keras.io/examples/generative/lstm_character_level_text_generation/) मा पाठ उत्पादनको नमूना + +## [असाइनमेन्ट](lab/README.md) + +हामीले क्यारेक्टर-दर-क्यारेक्टर पाठ उत्पादन कसरी गर्ने देख्यौं। प्रयोगशालामा, तपाईं शब्द-स्तर पाठ उत्पादन अन्वेषण गर्नुहुनेछ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ne/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..77d68dd2 --- /dev/null +++ b/translations/ne/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# शब्द-स्तर पाठ उत्पादन RNNs प्रयोग गरेर + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +यस ल्याबमा, तपाईंले कुनै पनि पुस्तक लिनुपर्छ, र यसलाई शब्द-स्तर पाठ उत्पादनकर्ता प्रशिक्षण गर्नको लागि डेटासेटको रूपमा प्रयोग गर्नुपर्छ। + +## डेटासेट + +तपाईं कुनै पनि पुस्तक प्रयोग गर्न सक्नुहुन्छ। तपाईं [Project Gutenberg](https://www.gutenberg.org/) मा धेरै नि:शुल्क पाठहरू पाउन सक्नुहुन्छ। उदाहरणका लागि, यहाँ [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) लेविस क्यारोलद्वारा सीधा लिंक छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/18-Transformers/README.md b/translations/ne/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..f477eae7 --- /dev/null +++ b/translations/ne/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# ध्यान मेकानिज्म र ट्रान्सफर्मरहरू + +## [पाठ अघि क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP क्षेत्रमा सबैभन्दा महत्त्वपूर्ण समस्याहरू मध्ये एक हो **मेसिन अनुवाद**, जुन Google Translate जस्ता उपकरणहरूको आधारभूत कार्य हो। यस खण्डमा, हामी मेसिन अनुवादमा केन्द्रित हुनेछौं, वा सामान्य रूपमा, कुनै पनि *सिक्वेन्स-टु-सिक्वेन्स* कार्यमा (जसलाई **वाक्य ट्रान्सडक्शन** पनि भनिन्छ)। + +RNNs प्रयोग गर्दा, सिक्वेन्स-टु-सिक्वेन्स दुई पुनरावर्ती नेटवर्कहरूद्वारा कार्यान्वयन गरिन्छ, जहाँ एउटा नेटवर्क, **एन्कोडर**, इनपुट सिक्वेन्सलाई लुकाइएको अवस्थामा संकुचित गर्छ, जबकि अर्को नेटवर्क, **डिकोडर**, यस लुकाइएको अवस्थालाई अनुवादित परिणाममा अनरोल गर्छ। यस दृष्टिकोणमा केही समस्याहरू छन्: + +* एन्कोडर नेटवर्कको अन्तिम अवस्थाले वाक्यको सुरुवात सम्झन गाह्रो हुन्छ, जसले लामो वाक्यहरूको लागि मोडेलको गुणस्तर कमजोर बनाउँछ। +* सिक्वेन्सका सबै शब्दहरूले नतिजामा समान प्रभाव पार्छ। तर वास्तविकतामा, इनपुट सिक्वेन्सका विशिष्ट शब्दहरूले अन्य शब्दहरूको तुलनामा क्रमिक आउटपुटमा बढी प्रभाव पार्छ। + +**ध्यान मेकानिज्महरू** प्रत्येक इनपुट भेक्टरको सन्दर्भात्मक प्रभावलाई RNN को प्रत्येक आउटपुट भविष्यवाणीमा तौल दिने माध्यम प्रदान गर्छ। यसलाई कार्यान्वयन गर्ने तरिका भनेको इनपुट RNN र आउटपुट RNN का बीचमा छोटो मार्गहरू सिर्जना गर्नु हो। यस प्रकार, आउटपुट प्रतीक yt उत्पन्न गर्दा, हामी सबै इनपुट लुकाइएको अवस्थाहरू hi लाई विभिन्न तौल गुणांकहरू αt,i सहित विचार गर्नेछौं। + +![एन्कोडर/डिकोडर मोडेलको चित्र जसमा एडिटिभ ध्यान तह छ](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ne.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) मा एडिटिभ ध्यान मेकानिज्मसहितको एन्कोडर-डिकोडर मोडेल, [यो ब्लग पोस्ट](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) बाट उद्धृत। + +ध्यान म्याट्रिक्स {αi,j} ले इनपुट शब्दहरूले आउटपुट सिक्वेन्सको कुनै शब्दको उत्पन्नमा खेल्ने डिग्रीलाई प्रतिनिधित्व गर्नेछ। तल यस्तो म्याट्रिक्सको उदाहरण छ: + +![Bahdanau - arviz.org बाट लिइएको RNNsearch-50 द्वारा फेला परेको नमूना संरेखणको चित्र](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ne.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) बाट चित्र (Fig.3) + +ध्यान मेकानिज्महरू NLP मा हालको वा निकट वर्तमान अवस्था-को-कला मोडेलहरूको लागि जिम्मेवार छन्। ध्यान थप्दा मोडेल प्यारामिटरहरूको संख्या धेरै बढ्छ, जसले RNNs सँग स्केलिङ समस्याहरू निम्त्यायो। RNNs को स्केलिङको मुख्य बाधा भनेको मोडेलहरूको पुनरावर्ती प्रकृतिले प्रशिक्षणलाई ब्याच र समानान्तर बनाउन चुनौतीपूर्ण बनाउँछ। RNN मा सिक्वेन्सको प्रत्येक तत्वलाई क्रमिक रूपमा प्रक्रिया गर्न आवश्यक हुन्छ, जसले गर्दा यसलाई सजिलै समानान्तर बनाउन सकिँदैन। + +![ध्यानसहितको एन्कोडर डिकोडर](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [Google's Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) बाट चित्र। + +ध्यान मेकानिज्महरूको अपनत्वले यो बाधासँग मिलेर आज हामीले चिनेका र प्रयोग गर्ने BERT देखि Open-GPT3 जस्ता अवस्था-को-कला ट्रान्सफर्मर मोडेलहरूको सिर्जना गर्‍यो। + +## ट्रान्सफर्मर मोडेलहरू + +ट्रान्सफर्मरहरूको पछाडि मुख्य विचारहरू मध्ये एक हो RNNs को क्रमिक प्रकृतिलाई टार्न र प्रशिक्षणको क्रममा समानान्तर बनाउन सकिने मोडेल सिर्जना गर्नु। यो दुई विचारहरू कार्यान्वयन गरेर प्राप्त गरिन्छ: + +* पोजिसनल इन्कोडिङ +* RNNs (वा CNNs) को सट्टा ढाँचाहरू कब्जा गर्न सेल्फ-अटेंशन मेकानिज्म प्रयोग गर्नु (त्यसैले ट्रान्सफर्मरलाई परिचय गराउने पेपरलाई *[Attention is all you need](https://arxiv.org/abs/1706.03762)* भनिएको छ) + +### पोजिसनल इन्कोडिङ/एम्बेडिङ + +पोजिसनल इन्कोडिङको विचार निम्न छ। +1. RNNs प्रयोग गर्दा, टोकनहरूको सापेक्ष स्थिति चरणहरूको संख्याले प्रतिनिधित्व गरिन्छ, र यसलाई स्पष्ट रूपमा प्रतिनिधित्व गर्न आवश्यक छैन। +2. तर, ध्यानमा स्विच गरेपछि, हामीलाई सिक्वेन्सभित्र टोकनहरूको सापेक्ष स्थिति थाहा हुन आवश्यक छ। +3. पोजिसनल इन्कोडिङ प्राप्त गर्न, हामी टोकनहरूको सिक्वेन्सलाई सिक्वेन्सभित्र टोकन पोजिसनहरूको सिक्वेन्ससँग (जस्तै, 0,1, ...) बढाउँछौं। +4. त्यसपछि हामी टोकन पोजिसनलाई टोकन एम्बेडिङ भेक्टरसँग मिसाउँछौं। पोजिसन (इन्टिजर) लाई भेक्टरमा रूपान्तरण गर्न, हामी विभिन्न दृष्टिकोणहरू प्रयोग गर्न सक्छौं: + +* टोकन एम्बेडिङ जस्तै ट्रेन योग्य एम्बेडिङ। यो यहाँ हामीले विचार गर्ने दृष्टिकोण हो। हामी टोकनहरू र तिनीहरूको पोजिसनहरूमा एम्बेडिङ तहहरू लागू गर्छौं, जसले समान आयामका एम्बेडिङ भेक्टरहरू उत्पादन गर्छ, जुन हामी एकसाथ थप्छौं। +* मूल पेपरमा प्रस्ताव गरिएको स्थिर पोजिसन इन्कोडिङ फङ्सन। + + + +> लेखकद्वारा चित्र। + +पोजिसनल एम्बेडिङको परिणामले मूल टोकन र यसको सिक्वेन्सभित्रको पोजिसनलाई एम्बेड गर्छ। + +### मल्टी-हेड सेल्फ-अटेंशन + +अब, हामीलाई हाम्रो सिक्वेन्सभित्र केही ढाँचाहरू कब्जा गर्न आवश्यक छ। यो गर्न, ट्रान्सफर्मरहरूले **सेल्फ-अटेंशन** मेकानिज्म प्रयोग गर्छन्, जुन इनपुट र आउटपुटको रूपमा समान सिक्वेन्समा लागू गरिएको ध्यान हो। सेल्फ-अटेंशन लागू गर्दा हामीलाई वाक्यभित्रको **सन्दर्भ** विचार गर्न अनुमति दिन्छ, र कुन शब्दहरू परस्पर सम्बन्धित छन् हेर्न अनुमति दिन्छ। उदाहरणका लागि, यसले *it* जस्ता कोरिफरेन्सहरूद्वारा सन्दर्भित शब्दहरू हेर्न अनुमति दिन्छ, र सन्दर्भलाई विचारमा लिन्छ: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ne.png) + +> [Google Blog](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) बाट चित्र। + +ट्रान्सफर्मरहरूमा, हामी **मल्टी-हेड अटेंशन** प्रयोग गर्छौं ताकि नेटवर्कलाई विभिन्न प्रकारका निर्भरता कब्जा गर्ने शक्ति दिन सकियोस्, जस्तै लामो-अवधि बनाम छोटो-अवधि शब्द सम्बन्ध, कोरिफरेन्स बनाम अन्य केही, आदि। + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) मा ट्रान्सफर्मर तहहरूको कार्यान्वयनको थप विवरणहरू छन्। + +### एन्कोडर-डिकोडर ध्यान + +ट्रान्सफर्मरहरूमा, ध्यान दुई स्थानमा प्रयोग गरिन्छ: + +* इनपुट पाठभित्र ढाँचाहरू कब्जा गर्न सेल्फ-अटेंशन प्रयोग गर्न। +* सिक्वेन्स अनुवाद गर्न - यो एन्कोडर र डिकोडर बीचको ध्यान तह हो। + +एन्कोडर-डिकोडर ध्यान RNNs मा प्रयोग गरिएको ध्यान मेकानिज्मसँग धेरै समान छ, जसको वर्णन यस खण्डको सुरुवातमा गरिएको छ। यो एनिमेटेड डायग्रामले एन्कोडर-डिकोडर ध्यानको भूमिका व्याख्या गर्छ। + +![एनिमेटेड GIF जसले ट्रान्सफर्मर मोडेलहरूमा मूल्याङ्कनहरू कसरी गरिन्छ भन्ने देखाउँछ।](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +किनभने प्रत्येक इनपुट पोजिसन स्वतन्त्र रूपमा प्रत्येक आउटपुट पोजिसनमा म्याप गरिन्छ, ट्रान्सफर्मरहरूले RNNs भन्दा राम्रो समानान्तर बनाउन सक्छ, जसले धेरै ठूलो र अभिव्यक्तिपूर्ण भाषा मोडेलहरू सक्षम बनाउँछ। प्रत्येक ध्यान हेडले शब्दहरू बीचको सम्बन्धहरू सिक्न प्रयोग गर्न सकिन्छ, जसले डाउनस्ट्रीम प्राकृतिक भाषा प्रशोधन कार्यहरू सुधार गर्छ। + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) एक धेरै ठूलो बहु तह ट्रान्सफर्मर नेटवर्क हो जसमा *BERT-base* को लागि 12 तहहरू छन्, र *BERT-large* को लागि 24। मोडेललाई पहिलो पटक ठूलो पाठ डाटाको कर्पस (WikiPedia + किताबहरू) मा असुपरभाइज्ड प्रशिक्षण (वाक्यमा मास्क गरिएको शब्दहरूको भविष्यवाणी गर्दै) प्रयोग गरेर प्रि-ट्रेन गरिन्छ। प्रि-ट्रेनिङको क्रममा मोडेलले भाषा बुझाइको महत्त्वपूर्ण स्तरहरू अवशोषित गर्छ, जसलाई अन्य डाटासेटहरूसँग फाइन ट्युनिङ प्रयोग गरेर लाभ उठाउन सकिन्छ। यस प्रक्रियालाई **ट्रान्सफर लर्निङ** भनिन्छ। + +![http://jalammar.github.io/illustrated-bert/ बाट चित्र](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ne.png) + +> [स्रोत](http://jalammar.github.io/illustrated-bert/) + +## ✍️ अभ्यासहरू: ट्रान्सफर्मरहरू + +तपाईंको सिकाइलाई निम्न नोटबुकहरूमा जारी राख्नुहोस्: + +* [PyTorch मा ट्रान्सफर्मरहरू](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow मा ट्रान्सफर्मरहरू](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## निष्कर्ष + +यस पाठमा तपाईंले ट्रान्सफर्मरहरू र ध्यान मेकानिज्महरूबारे सिक्नुभयो, NLP टूलबक्सका सबै आवश्यक उपकरणहरू। ट्रान्सफर्मर आर्किटेक्चरका धेरै भेरिएसनहरू छन्, जस्तै BERT, DistilBERT, BigBird, OpenGPT3 र अन्य, जसलाई फाइन ट्युन गर्न सकिन्छ। [HuggingFace प्याकेज](https://github.com/huggingface/) ले PyTorch र TensorFlow दुवैसँग धेरै आर्किटेक्चरहरू प्रशिक्षणको लागि रिपोजिटरी प्रदान गर्छ। + +## 🚀 चुनौती + +## [पाठ पछि क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## समीक्षा र आत्म अध्ययन + +* [ब्लग पोस्ट](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), ट्रान्सफर्मरहरूमा क्लासिकल [Attention is all you need](https://arxiv.org/abs/1706.03762) पेपरको व्याख्या गर्दै। +* [ब्लग पोस्टहरूको श्रृंखला](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) ट्रान्सफर्मरहरूमा, आर्किटेक्चरलाई विस्तारमा व्याख्या गर्दै। + +## [असाइनमेन्ट](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/18-Transformers/assignment.md b/translations/ne/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..c20242f6 --- /dev/null +++ b/translations/ne/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# असाइनमेन्ट: ट्रान्सफर्मर्स + +HuggingFace मा ट्रान्सफर्मर्ससँग प्रयोग गर्नुहोस्! उनीहरूले उपलब्ध गराएका विभिन्न मोडेलहरूसँग काम गर्नका लागि प्रदान गरेका स्क्रिप्टहरू प्रयास गर्नुहोस्: https://huggingface.co/docs/transformers/run_scripts। उनीहरूको कुनै एउटा डाटासेट प्रयास गर्नुहोस्, त्यसपछि यो पाठ्यक्रमबाट वा Kaggle बाट आफ्नो कुनै डाटासेट आयात गर्नुहोस् र हेर्नुहोस् कि तपाईं रोचक पाठहरू उत्पन्न गर्न सक्नुहुन्छ कि सक्नुहुन्न। आफ्नो निष्कर्षहरू सहित एउटा नोटबुक तयार गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/19-NER/README.md b/translations/ne/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..c081c337 --- /dev/null +++ b/translations/ne/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# नामित इकाई पहिचान + +अहिलेसम्म, हामी प्राय: एक NLP कार्य - वर्गीकरणमा केन्द्रित भएका छौं। तर, न्यूरल नेटवर्कहरू प्रयोग गरेर अन्य NLP कार्यहरू पनि सम्पन्न गर्न सकिन्छ। तीमध्ये एक कार्य हो **[नामित इकाई पहिचान](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), जसले पाठभित्र विशेष इकाईहरू जस्तै स्थानहरू, व्यक्तिको नामहरू, मिति-समय अन्तरालहरू, रसायनिक सूत्रहरू आदि पहिचान गर्न मद्दत गर्दछ। + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER प्रयोगको उदाहरण + +मानौं तपाईं प्राकृतिक भाषा च्याट बोट विकास गर्न चाहनुहुन्छ, जस्तै Amazon Alexa वा Google Assistant। बुद्धिमान च्याट बोटहरू यसरी काम गर्छन् कि प्रयोगकर्ताले के चाहन्छ भनेर बुझ्नको लागि इनपुट वाक्यमा पाठ वर्गीकरण गर्छन्। यस वर्गीकरणको नतिजा **इन्टेन्ट** हो, जसले च्याट बोटले के गर्नुपर्छ भन्ने निर्धारण गर्छ। + +Bot NER + +> लेखकद्वारा प्रदान गरिएको चित्र + +तर, प्रयोगकर्ताले वाक्यांशको भागको रूपमा केही प्यारामिटरहरू प्रदान गर्न सक्छ। उदाहरणका लागि, मौसम सोध्दा, उनले स्थान वा मिति निर्दिष्ट गर्न सक्छिन्। बोटले ती इकाईहरू बुझ्न सक्षम हुनुपर्छ, र कार्य प्रदर्शन गर्नु अघि प्यारामिटर स्लटहरू भरिदिनुपर्छ। यही ठाउँमा NER काममा आउँछ। + +> ✅ अर्को उदाहरण [वैज्ञानिक चिकित्सा कागजातहरूको विश्लेषण](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) हो। मुख्य कुरा हामीले खोज्नुपर्ने भनेको विशेष चिकित्सा शब्दहरू हुन्, जस्तै रोगहरू र चिकित्सा पदार्थहरू। केही रोगहरूलाई सम्भवतः सबस्ट्रिङ खोज प्रयोग गरेर निकाल्न सकिन्छ, तर जटिल इकाईहरू, जस्तै रसायनिक यौगिकहरू र औषधिको नामहरू, अधिक जटिल दृष्टिकोण आवश्यक पर्छ। + +## टोकन वर्गीकरणको रूपमा NER + +NER मोडेलहरू मूलतः **टोकन वर्गीकरण मोडेलहरू** हुन्, किनकि प्रत्येक इनपुट टोकनको लागि हामीले निर्णय गर्नुपर्छ कि यो कुनै इकाईमा पर्छ कि पर्दैन, र यदि पर्छ भने - कुन इकाई वर्गमा पर्छ। + +निम्न कागजात शीर्षकलाई विचार गर्नुहोस्: + +**त्रिकुस्पिड भल्भ रिगर्जिटेसन** र **लिथियम कार्बोनेट** **टक्सिसिटी** नवजात शिशुमा। + +यहाँ इकाईहरू हुन्: + +* त्रिकुस्पिड भल्भ रिगर्जिटेसन एक रोग हो (`DIS`) +* लिथियम कार्बोनेट एक रसायनिक पदार्थ हो (`CHEM`) +* टक्सिसिटी पनि एक रोग हो (`DIS`) + +ध्यान दिनुहोस् कि एक इकाईले धेरै टोकनहरू समेट्न सक्छ। र, यस अवस्थामा, हामीले दुई लगातार इकाईहरू बीच भिन्नता गर्नुपर्छ। त्यसैले, प्रत्येक इकाईको लागि दुई वर्गहरू प्रयोग गर्नु सामान्य हो - एउटा इकाईको पहिलो टोकन निर्दिष्ट गर्ने (`B-` उपसर्ग, **सुरु**को लागि), र अर्को - इकाईको निरन्तरता (`I-`, **भित्री टोकन**को लागि)। हामी `O` वर्ग प्रयोग गर्छौं सबै **अन्य** टोकनहरू प्रतिनिधित्व गर्न। यस्तो टोकन ट्यागिङलाई [BIO ट्यागिङ](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (वा IOB) भनिन्छ। ट्याग गरिएको अवस्थामा, हाम्रो शीर्षक यसरी देखिन्छ: + +Token | Tag +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O + +किनकि हामीले टोकनहरू र वर्गहरू बीच एक-देखि-एक सम्बन्ध निर्माण गर्नुपर्छ, हामी यस चित्रबाट सही **धेरै-देखि-धेरै** न्यूरल नेटवर्क मोडेल प्रशिक्षण गर्न सक्छौं: + +![सामान्य पुनरावर्ती न्यूरल नेटवर्क ढाँचाहरू देखाउने चित्र।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ne.jpg) + +> *[Andrej Karpathy](http://karpathy.github.io/) द्वारा [यो ब्लग पोस्ट](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) बाट चित्र। NER टोकन वर्गीकरण मोडेलहरू यस चित्रको दायाँ-छेउको नेटवर्क आर्किटेक्चरसँग मेल खान्छ।* + +## NER मोडेलहरू प्रशिक्षण + +किनकि NER मोडेल मूलतः टोकन वर्गीकरण मोडेल हो, हामी यस कार्यको लागि पहिले नै परिचित RNNहरू प्रयोग गर्न सक्छौं। यस अवस्थामा, पुनरावर्ती नेटवर्कको प्रत्येक ब्लकले टोकन ID फिर्ता गर्नेछ। निम्न उदाहरण नोटबुकले टोकन वर्गीकरणको लागि LSTM कसरी प्रशिक्षण गर्ने देखाउँछ। + +## ✍️ उदाहरण नोटबुकहरू: NER + +निम्न नोटबुकमा सिकाइ जारी राख्नुहोस्: + +* [TensorFlow प्रयोग गरेर NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## निष्कर्ष + +NER मोडेल एक **टोकन वर्गीकरण मोडेल** हो, जसको अर्थ यो टोकन वर्गीकरण गर्न प्रयोग गर्न सकिन्छ। यो NLP मा धेरै सामान्य कार्य हो, जसले पाठभित्र स्थानहरू, नामहरू, मितिहरू, र अन्य विशेष इकाईहरू पहिचान गर्न मद्दत गर्दछ। + +## 🚀 चुनौती + +निम्न लिंक गरिएको असाइनमेन्ट पूरा गर्नुहोस् जसले चिकित्सा शब्दहरूको लागि नामित इकाई पहिचान मोडेल प्रशिक्षण गर्न मद्दत गर्दछ, त्यसपछि यसलाई फरक डेटासेटमा प्रयास गर्नुहोस्। + +## [पश्च-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## समीक्षा र आत्म अध्ययन + +ब्लग [पुनरावर्ती न्यूरल नेटवर्कहरूको असाधारण प्रभावकारिता](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) पढ्नुहोस् र उक्त लेखको थप अध्ययन खण्डसँगै जानुहोस् ताकि तपाईंको ज्ञानलाई गहिरो बनाउन सकियोस्। + +## [असाइनमेन्ट](lab/README.md) + +यस पाठको असाइनमेन्टमा, तपाईंले चिकित्सा इकाई पहिचान मोडेल प्रशिक्षण गर्नुपर्नेछ। तपाईंले यस पाठमा वर्णन गरिएको LSTM मोडेल प्रशिक्षणबाट सुरु गर्न सक्नुहुन्छ, र BERT ट्रान्सफर्मर मोडेल प्रयोग गर्न अगाडि बढ्न सक्नुहुन्छ। [निर्देशनहरू](lab/README.md) पढेर सबै विवरण प्राप्त गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/19-NER/lab/README.md b/translations/ne/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..a28b4eee --- /dev/null +++ b/translations/ne/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) बाट ल्याब असाइनमेन्ट। + +## कार्य + +यस ल्याबमा, तपाईंले मेडिकल शब्दहरूको लागि नामित इकाई पहिचान (NER) मोडेल प्रशिक्षण गर्नुपर्नेछ। + +## डेटासेट + +NER मोडेल प्रशिक्षण गर्न, हामीलाई मेडिकल इकाईहरू सहित सही रूपमा लेबल गरिएको डेटासेट आवश्यक छ। [BC5CDR डेटासेट](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) ले १५०० भन्दा बढी पेपरहरूबाट लेबल गरिएको रोग र रसायन इकाईहरू समावेश गर्दछ। तपाईंले उनीहरूको वेबसाइटमा दर्ता गरेपछि डेटासेट डाउनलोड गर्न सक्नुहुन्छ। + +BC5CDR डेटासेट यस प्रकार देखिन्छ: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +यस डेटासेटमा, पहिलो दुई लाइनमा पेपरको शीर्षक र सारांश हुन्छ, त्यसपछि व्यक्तिगत इकाईहरू हुन्छन्, जसको सुरुवात र अन्त्य स्थान शीर्षक+सारांश ब्लकभित्र हुन्छ। इकाई प्रकारको अतिरिक्त, तपाईंले केही मेडिकल ओन्टोलोजीभित्र यस इकाईको ओन्टोलोजी आईडी प्राप्त गर्नुहुन्छ। + +तपाईंले यसलाई BIO एन्कोडिङमा रूपान्तरण गर्न केही Python कोड लेख्नुपर्नेछ। + +## नेटवर्क + +NER को पहिलो प्रयास LSTM नेटवर्क प्रयोग गरेर गर्न सकिन्छ, जस्तै तपाईंले पाठको समयमा देख्नुभएको उदाहरणमा। तर NLP कार्यहरूमा, [ट्रान्सफर्मर आर्किटेक्चर](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) र विशेष गरी [BERT भाषा मोडेलहरू](https://en.wikipedia.org/wiki/BERT_(language_model)) ले धेरै राम्रो परिणाम देखाउँछन्। प्रि-ट्रेन गरिएको BERT मोडेलहरूले भाषाको सामान्य संरचना बुझ्छन्, र विशिष्ट कार्यहरूको लागि तुलनात्मक रूपमा सानो डेटासेट र कम्प्युटेशनल लागतको साथ फाइन-ट्युन गर्न सकिन्छ। + +किनकि हामी मेडिकल परिदृश्यमा NER लागू गर्ने योजना बनाउँदैछौं, मेडिकल पाठहरूमा प्रशिक्षित BERT मोडेल प्रयोग गर्नु उपयुक्त हुन्छ। Microsoft Research ले [PubMedBERT][PubMedBERT] ([publication][PubMedBERT-Pub]) नामक प्रि-ट्रेन गरिएको मोडेल जारी गरेको छ, जुन [PubMed](https://pubmed.ncbi.nlm.nih.gov/) रिपोजिटरीका पाठहरू प्रयोग गरेर फाइन-ट्युन गरिएको थियो। + +ट्रान्सफर्मर मोडेलहरू प्रशिक्षणको लागि *de facto* मानक [Hugging Face Transformers](https://huggingface.co/) लाइब्रेरी हो। यसमा PubMedBERT सहित समुदायद्वारा व्यवस्थापन गरिएको प्रि-ट्रेन गरिएको मोडेलहरूको रिपोजिटरी पनि समावेश छ। यो मोडेल लोड गर्न र प्रयोग गर्न हामीलाई केही लाइन कोड मात्र आवश्यक छ: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +यसले हामीलाई `model` प्रदान गर्दछ, जुन `classes` को संख्या प्रयोग गरेर टोकन वर्गीकरण कार्यको लागि निर्माण गरिएको छ, साथै `tokenizer` वस्तु जसले इनपुट पाठलाई टोकनहरूमा विभाजन गर्न सक्छ। तपाईंले डेटासेटलाई BIO ढाँचामा रूपान्तरण गर्नुपर्नेछ, PubMedBERT टोकनाइजेशनलाई ध्यानमा राख्दै। तपाईं [यस Python कोडको टुक्रा](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) प्रेरणाको रूपमा प्रयोग गर्न सक्नुहुन्छ। + +## मुख्य कुरा + +यो कार्य वास्तविक कार्यसँग धेरै नजिक छ जुन तपाईंले ठूलो मात्रामा प्राकृतिक भाषा पाठहरूमा थप जानकारी प्राप्त गर्न चाहनुहुन्छ भने गर्नुपर्नेछ। हाम्रो केसमा, हामीले प्रशिक्षित मोडेललाई [COVID-सम्बन्धित पेपरहरूको डेटासेट](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) मा लागू गर्न सक्छौं र हामीले के जानकारी प्राप्त गर्न सक्छौं हेर्न सक्छौं। [यो ब्लग पोस्ट](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) र [यो पेपर](https://www.mdpi.com/2504-2289/6/1/4) ले NER प्रयोग गरेर यस पेपरहरूको संग्रहमा गर्न सकिने अनुसन्धान वर्णन गर्दछ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/20-LangModels/README.md b/translations/ne/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..21983cbe --- /dev/null +++ b/translations/ne/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# पूर्व-प्रशिक्षित ठूला भाषा मोडेलहरू + +हाम्रा अघिल्ला सबै कार्यहरूमा, हामीले लेबल गरिएको डाटासेट प्रयोग गरेर कुनै निश्चित कार्य गर्न न्यूरल नेटवर्कलाई प्रशिक्षण गरिरहेका थियौं। ठूला ट्रान्सफर्मर मोडेलहरू, जस्तै BERT, मा हामी भाषा मोडेलिङलाई आत्म-पर्यवेक्षित तरिकामा प्रयोग गरेर भाषा मोडेल निर्माण गर्छौं, जसलाई पछि थप डोमेन-विशिष्ट प्रशिक्षणद्वारा विशेष कार्यहरूको लागि अनुकूलित गरिन्छ। तर, यो प्रमाणित भएको छ कि ठूला भाषा मोडेलहरूले कुनै पनि डोमेन-विशिष्ट प्रशिक्षण बिना नै धेरै कार्यहरू समाधान गर्न सक्छन्। यस्तो क्षमता भएका मोडेलहरूको परिवारलाई **GPT**: जेनेरेटिभ प्रि-ट्रेनड ट्रान्सफर्मर भनिन्छ। + +## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## पाठ उत्पादन र पर्प्लेक्सिटी + +डाउनस्ट्रीम प्रशिक्षण बिना नै सामान्य कार्यहरू गर्न सक्षम न्यूरल नेटवर्कको विचार [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) नामक कागजातमा प्रस्तुत गरिएको छ। मुख्य विचार यो हो कि धेरै अन्य कार्यहरूलाई **पाठ उत्पादन** प्रयोग गरेर मोडेल गर्न सकिन्छ, किनभने पाठ बुझ्नु भनेको त्यसलाई उत्पादन गर्न सक्षम हुनु हो। मोडेललाई मानव ज्ञान समेटिएको विशाल पाठमा प्रशिक्षण दिइएकोले, यसले विभिन्न विषयहरूको बारेमा पनि ज्ञान प्राप्त गर्छ। + +> पाठ बुझ्नु र उत्पादन गर्न सक्षम हुनु भनेको वरपरको संसारको बारेमा केही जान्नु हो। मानिसहरू पनि ठूलो हदसम्म पढेर सिक्छन्, र GPT नेटवर्क यस मामिलामा यस्तै छ। + +पाठ उत्पादन गर्ने नेटवर्कहरूले अर्को शब्दको सम्भावना $$P(w_N)$$ को भविष्यवाणी गरेर काम गर्छ। तर, अर्को शब्दको बिना-शर्त सम्भावना भनेको पाठ कर्पसमा उक्त शब्दको आवृत्ति हो। GPT ले हामीलाई अघिल्ला शब्दहरू दिइएको अवस्थामा अर्को शब्दको **सशर्त सम्भावना** दिन सक्षम छ: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> सम्भावनाहरूको बारेमा थप जान्नको लागि हाम्रो [डाटा साइन्सको लागि शुरुआती पाठ्यक्रम](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) हेर्नुहोस्। + +भाषा उत्पादन गर्ने मोडेलको गुणस्तरलाई **पर्प्लेक्सिटी** प्रयोग गरेर परिभाषित गर्न सकिन्छ। यो एक आन्तरिक मेट्रिक हो जसले कुनै कार्य-विशिष्ट डाटासेट बिना नै मोडेलको गुणस्तर मापन गर्न अनुमति दिन्छ। यो *वाक्यको सम्भावना* को धारणा आधारित छ - मोडेलले वास्तविक हुने सम्भावना भएको वाक्यलाई उच्च सम्भावना दिन्छ (अर्थात् मोडेल त्यसबाट **चकित** हुँदैन), र कम अर्थपूर्ण वाक्यहरूलाई कम सम्भावना दिन्छ (जस्तै, *के यसले के गर्न सक्छ?*)। जब हामी हाम्रो मोडेललाई वास्तविक पाठ कर्पसका वाक्यहरू दिन्छौं, हामी ती वाक्यहरूको उच्च सम्भावना र कम **पर्प्लेक्सिटी** हुने अपेक्षा गर्छौं। गणितीय रूपमा, यो परीक्षण सेटको सामान्यीकृत उल्टो सम्भावनाको रूपमा परिभाषित गरिन्छ: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**तपाईं [Hugging Face को GPT-समर्थित पाठ सम्पादक](https://transformer.huggingface.co/doc/gpt2-large)** प्रयोग गरेर पाठ उत्पादनमा प्रयोग गर्न सक्नुहुन्छ। यस सम्पादकमा, तपाईं आफ्नो पाठ लेख्न सुरु गर्नुहोस्, र **[TAB]** थिच्दा तपाईंलाई धेरै पूरा गर्ने विकल्पहरू दिइनेछ। यदि ती धेरै छोटा छन्, वा तपाईं तीबाट सन्तुष्ट हुनुहुन्न भने - फेरि [TAB] थिच्नुहोस्, र तपाईंलाई थप विकल्पहरू, लामो पाठहरू सहित, दिइनेछ। + +## GPT एक परिवार हो + +GPT कुनै एकल मोडेल होइन, बरु [OpenAI](https://openai.com) द्वारा विकसित र प्रशिक्षण गरिएका मोडेलहरूको संग्रह हो। + +GPT मोडेलहरू अन्तर्गत, हामीसँग छन्: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT-3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|भाषा मोडेल जसमा १.५ अर्बसम्मका प्यारामिटरहरू छन्। | १७५ अर्बसम्मका प्यारामिटर भएको भाषा मोडेल | १०० ट्रिलियन प्यारामिटरहरू, जसले छवि र पाठ दुवै इनपुट लिन्छ र पाठ उत्पादन गर्छ। | + +GPT-3 र GPT-4 मोडेलहरू [Microsoft Azure बाट एक संज्ञानात्मक सेवा](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) को रूपमा, र [OpenAI API](https://openai.com/api/) को रूपमा उपलब्ध छन्। + +## प्रम्प्ट इन्जिनियरिङ + +GPT लाई भाषा र कोड बुझ्नको लागि विशाल डाटामा प्रशिक्षण दिइएकोले, तिनीहरूले इनपुट (प्रम्प्ट) को जवाफमा आउटपुट प्रदान गर्छन्। प्रम्प्टहरू GPT का इनपुट वा प्रश्नहरू हुन् जसमा कसैले मोडेललाई कार्यहरू पूरा गर्न निर्देशन दिन्छ। इच्छित परिणाम प्राप्त गर्न, तपाईंलाई सबैभन्दा प्रभावकारी प्रम्प्ट चाहिन्छ, जसमा सही शब्द, ढाँचा, वाक्यांश वा प्रतीकहरू चयन गर्नुपर्छ। यस दृष्टिकोणलाई [प्रम्प्ट इन्जिनियरिङ](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) भनिन्छ। + +[यस दस्तावेजले](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) तपाईंलाई प्रम्प्ट इन्जिनियरिङको बारेमा थप जानकारी प्रदान गर्दछ। + +## ✍️ उदाहरण नोटबुक: [OpenAI-GPT सँग खेल्ने](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +तपाईं आफ्नो अध्ययनलाई निम्न नोटबुकहरूमा जारी राख्न सक्नुहुन्छ: + +* [OpenAI-GPT र Hugging Face Transformers प्रयोग गरेर पाठ उत्पादन](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## निष्कर्ष + +नयाँ सामान्य पूर्व-प्रशिक्षित भाषा मोडेलहरूले केवल भाषा संरचनालाई मोडेल गर्दैनन्, तर विशाल मात्रामा प्राकृतिक भाषा पनि समावेश गर्छन्। यसरी, तिनीहरूलाई शून्य-शट वा थोरै-शट सेटिङहरूमा केही NLP कार्यहरू समाधान गर्न प्रभावकारी रूपमा प्रयोग गर्न सकिन्छ। + +## [पश्च-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/5-NLP/README.md b/translations/ne/lessons/5-NLP/README.md new file mode 100644 index 00000000..ed54b076 --- /dev/null +++ b/translations/ne/lessons/5-NLP/README.md @@ -0,0 +1,86 @@ + +# प्राकृतिक भाषा प्रशोधन + +![NLP कार्यहरूको सारांश](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ne.png) + +यस खण्डमा, हामी **प्राकृतिक भाषा प्रशोधन (NLP)** सम्बन्धित कार्यहरू समाधान गर्न न्युरल नेटवर्कहरू प्रयोग गर्ने कुरामा ध्यान केन्द्रित गर्नेछौं। कम्प्युटरले समाधान गर्नुपर्ने धेरै NLP समस्याहरू छन्: + +* **पाठ वर्गीकरण** पाठ अनुक्रमसँग सम्बन्धित एक सामान्य वर्गीकरण समस्या हो। उदाहरणहरूमा ईमेल सन्देशहरूलाई स्पाम र नन-स्पाममा वर्गीकरण गर्नु, वा लेखहरूलाई खेलकुद, व्यापार, राजनीति आदि जस्ता श्रेणीहरूमा वर्गीकरण गर्नु समावेश छ। साथै, च्याट बोटहरू विकास गर्दा, प्रायः प्रयोगकर्ताले के भन्न खोजेको हो बुझ्न आवश्यक हुन्छ - यस अवस्थामा हामी **आशय वर्गीकरण**सँग व्यवहार गरिरहेका हुन्छौं। आशय वर्गीकरणमा प्रायः धेरै श्रेणीहरूसँग व्यवहार गर्नुपर्छ। + +* **भावना विश्लेषण** एक सामान्य प्रतिगमन समस्या हो, जहाँ वाक्यको अर्थ कति सकारात्मक/नकारात्मक छ भन्ने संख्या (भावना) दिनुपर्छ। भावना विश्लेषणको उन्नत संस्करण **पक्ष-आधारित भावना विश्लेषण** (ABSA) हो, जहाँ भावना सम्पूर्ण वाक्यलाई होइन, यसको विभिन्न भागहरू (पक्षहरू) लाई दिनुपर्छ। जस्तै, *यो रेस्टुरेन्टमा मलाई खाना मन पर्‍यो, तर वातावरण डरलाग्दो थियो*। + +* **नामित इकाई पहिचान** (NER) पाठबाट निश्चित इकाईहरू निकाल्ने समस्यालाई जनाउँछ। उदाहरणका लागि, वाक्यांश *म भोलि पेरिस जानुपर्छ* मा *भोलि* शब्दले मिति (DATE) जनाउँछ, र *पेरिस* स्थान (LOCATION) हो भन्ने बुझ्न आवश्यक हुन सक्छ। + +* **किवर्ड निकाल्ने** NER जस्तै हो, तर यसमा विशिष्ट इकाई प्रकारहरूको लागि पूर्व-प्रशिक्षण नगरी वाक्यको अर्थका लागि महत्त्वपूर्ण शब्दहरू स्वचालित रूपमा निकाल्नुपर्छ। + +* **पाठ क्लस्टरिङ** उपयोगी हुन्छ जब हामी समान वाक्यहरूलाई समूहबद्ध गर्न चाहन्छौं, जस्तै, प्राविधिक समर्थन वार्तालापहरूमा समान अनुरोधहरू। + +* **प्रश्न उत्तर दिने** मोडेलको क्षमता हो जसले विशिष्ट प्रश्नको उत्तर दिन्छ। मोडेलले पाठ खण्ड र प्रश्नलाई इनपुटको रूपमा लिन्छ, र प्रश्नको उत्तर समावेश भएको पाठको स्थान प्रदान गर्नुपर्छ (कहिलेकाहीँ, उत्तर पाठ उत्पन्न गर्नुपर्छ)। + +* **पाठ उत्पन्न गर्ने** मोडेलको क्षमता हो जसले नयाँ पाठ उत्पन्न गर्छ। यसलाई *पाठ संकेत* को आधारमा अर्को अक्षर/शब्दको भविष्यवाणी गर्ने वर्गीकरण कार्यको रूपमा मान्न सकिन्छ। उन्नत पाठ उत्पन्न गर्ने मोडेलहरू, जस्तै GPT-3, [प्रम्ट प्रोग्रामिङ](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) वा [प्रम्ट इन्जिनियरिङ](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) नामक प्रविधि प्रयोग गरेर अन्य NLP कार्यहरू समाधान गर्न सक्षम छन्। + +* **पाठ संक्षेपण** एउटा प्रविधि हो जहाँ हामी कम्प्युटरलाई लामो पाठ "पढ्न" र केही वाक्यहरूमा संक्षेप गर्न चाहन्छौं। + +* **मेसिन अनुवाद** एउटा प्रविधि हो जसले एउटा भाषामा पाठ बुझ्ने र अर्को भाषामा पाठ उत्पन्न गर्ने संयोजनको रूपमा काम गर्छ। + +सुरुमा, धेरै NLP कार्यहरू परम्परागत विधिहरू जस्तै व्याकरण प्रयोग गरेर समाधान गरिन्थ्यो। उदाहरणका लागि, मेसिन अनुवादमा प्रारम्भिक वाक्यलाई वाक्य संरचना (syntax tree) मा रूपान्तरण गर्न पार्सरहरू प्रयोग गरिन्थ्यो, त्यसपछि वाक्यको अर्थ प्रतिनिधित्व गर्न उच्च स्तरका अर्थ संरचनाहरू निकालिन्थ्यो, र यस अर्थ र लक्ष्य भाषाको व्याकरणको आधारमा परिणाम उत्पन्न गरिन्थ्यो। आजकल, धेरै NLP कार्यहरू न्युरल नेटवर्कहरू प्रयोग गरेर बढी प्रभावकारी रूपमा समाधान गरिन्छ। + +> धेरै परम्परागत NLP विधिहरू [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) नामक Python पुस्तकालयमा कार्यान्वयन गरिएका छन्। [NLTK पुस्तक](https://www.nltk.org/book/) अनलाइन उपलब्ध छ, जसले NLTK प्रयोग गरेर विभिन्न NLP कार्यहरू कसरी समाधान गर्न सकिन्छ भन्ने कभर गर्छ। + +हाम्रो पाठ्यक्रममा, हामी NLP का लागि न्युरल नेटवर्कहरू प्रयोग गर्नमा ध्यान केन्द्रित गर्नेछौं, र आवश्यक परेमा NLTK प्रयोग गर्नेछौं। + +हामीले पहिले नै तालिका डेटा र छविहरूसँग व्यवहार गर्न न्युरल नेटवर्कहरू प्रयोग गर्ने बारे सिकिसकेका छौं। ती प्रकारका डेटा र पाठबीचको मुख्य भिन्नता यो हो कि पाठ एक परिवर्तनशील लम्बाइको अनुक्रम हो, जबकि छविहरूको इनपुट आकार पहिले नै थाहा हुन्छ। यद्यपि, कनभोलुसनल नेटवर्कहरूले इनपुट डेटा बाट ढाँचाहरू निकाल्न सक्छन्, पाठमा ढाँचाहरू अझ जटिल हुन्छन्। जस्तै, नकारात्मकता (negation) विषयबाट धेरै शब्दहरू टाढा हुन सक्छ (जस्तै, *मलाई सुन्तला मन पर्दैन* vs. *मलाई ती ठूला रङ्गीन स्वादिष्ट सुन्तला मन पर्दैन*), र यसलाई अझै पनि एउटै ढाँचाको रूपमा व्याख्या गर्नुपर्छ। त्यसैले, भाषा व्यवस्थापन गर्न हामीले नयाँ न्युरल नेटवर्क प्रकारहरू, जस्तै *पुनरावर्ती नेटवर्कहरू* र *ट्रान्सफर्मरहरू* परिचय गराउन आवश्यक छ। + +## पुस्तकालयहरू स्थापना गर्नुहोस् + +यदि तपाईंले यो पाठ्यक्रम चलाउन स्थानीय Python स्थापना प्रयोग गर्दै हुनुहुन्छ भने, NLP का लागि आवश्यक सबै पुस्तकालयहरू निम्न आदेशहरू प्रयोग गरेर स्थापना गर्नुपर्ने हुन सक्छ: + +**PyTorch का लागि** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow का लागि** +```bash +pip install -r requirements-tf.txt +``` + +> तपाईं [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) मा TensorFlow प्रयोग गरेर NLP प्रयास गर्न सक्नुहुन्छ। + +## GPU चेतावनी + +यस खण्डमा, केही उदाहरणहरूमा हामी ठूला मोडेलहरू प्रशिक्षण गर्नेछौं। +* **GPU-सक्षम कम्प्युटर प्रयोग गर्नुहोस्**: ठूला मोडेलहरूसँग काम गर्दा प्रतीक्षा समय घटाउन GPU-सक्षम कम्प्युटरमा नोटबुकहरू चलाउन सिफारिस गरिन्छ। +* **GPU मेमोरी सीमाहरू**: GPU मा चलाउँदा, विशेष गरी ठूला मोडेलहरू प्रशिक्षण गर्दा, GPU मेमोरी सकिने अवस्था आउन सक्छ। +* **GPU मेमोरी खपत**: प्रशिक्षणको क्रममा GPU मेमोरी खपत विभिन्न कारकहरूमा निर्भर गर्दछ, जस्तै मिनिब्याच साइज। +* **मिनिब्याच साइज घटाउनुहोस्**: यदि GPU मेमोरी समस्याहरू सामना गर्नुहुन्छ भने, तपाईंको कोडमा मिनिब्याच साइज घटाउने कुरा समाधानको रूपमा विचार गर्न सक्नुहुन्छ। +* **TensorFlow GPU मेमोरी रिलीज**: TensorFlow का पुराना संस्करणहरूले एउटै Python कर्नेलमा धेरै मोडेलहरू प्रशिक्षण गर्दा GPU मेमोरी सही रूपमा रिलीज नगर्न सक्छ। GPU मेमोरी प्रयोगलाई प्रभावकारी रूपमा व्यवस्थापन गर्न, तपाईं TensorFlow लाई आवश्यक पर्दा मात्र GPU मेमोरी आवंटन गर्न कन्फिगर गर्न सक्नुहुन्छ। +* **कोड समावेश गर्नुहोस्**: TensorFlow लाई आवश्यक पर्दा मात्र GPU मेमोरी बढ्न दिन निम्न कोड तपाईंको नोटबुकहरूमा समावेश गर्नुहोस्: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +यदि तपाईं क्लासिक ML दृष्टिकोणबाट NLP सिक्न इच्छुक हुनुहुन्छ भने, [यस पाठहरूको सेट](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) भ्रमण गर्नुहोस्। + +## यस खण्डमा +यस खण्डमा हामी सिक्नेछौं: + +* [पाठलाई टेन्सरको रूपमा प्रतिनिधित्व गर्ने](13-TextRep/README.md) +* [शब्द एम्बेडिङहरू](14-Emdeddings/README.md) +* [भाषा मोडलिङ](15-LanguageModeling/README.md) +* [पुनरावर्ती न्युरल नेटवर्कहरू](16-RNN/README.md) +* [उत्पन्न गर्ने नेटवर्कहरू](17-GenerativeNetworks/README.md) +* [ट्रान्सफर्मरहरू](18-Transformers/README.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ne/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..6a99ef00 --- /dev/null +++ b/translations/ne/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# जेनेटिक एल्गोरिदमहरू + +## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**जेनेटिक एल्गोरिदमहरू** (GA) कृत्रिम बुद्धिमत्ताको एउटा **विकासवादी दृष्टिकोण**मा आधारित छन्, जसमा जनसंख्याको विकासको विधिहरू प्रयोग गरेर कुनै समस्या समाधानको लागि उत्तम समाधान प्राप्त गरिन्छ। यी एल्गोरिदमहरू [जोन हेनरी हल्याण्ड](https://wikipedia.org/wiki/John_Henry_Holland) द्वारा 1975 मा प्रस्तावित गरिएका थिए। + +जेनेटिक एल्गोरिदमहरू निम्न विचारहरूमा आधारित छन्: + +* समस्याका वैध समाधानहरूलाई **जीनहरू**को रूपमा प्रतिनिधित्व गर्न सकिन्छ। +* **क्रसओभर**ले दुई समाधानहरूलाई संयोजन गरेर नयाँ वैध समाधान प्राप्त गर्न अनुमति दिन्छ। +* **चयन**ले केही **फिटनेस फङ्सन** प्रयोग गरेर बढी उपयुक्त समाधानहरू चयन गर्न प्रयोग गरिन्छ। +* **म्युटेसनहरू**लाई अनुकूलनलाई अस्थिर बनाउन र स्थानीय न्यूनतमबाट बाहिर निकाल्न परिचय गराइन्छ। + +यदि तपाईं जेनेटिक एल्गोरिदम कार्यान्वयन गर्न चाहनुहुन्छ भने, तपाईंलाई निम्न आवश्यक छ: + + * हाम्रो समस्याका समाधानहरूलाई **जीनहरू** g∈Γ प्रयोग गरेर कोड गर्ने विधि पत्ता लगाउनुहोस्। + * जीनहरूको सेट Γ मा, **फिटनेस फङ्सन** fit: Γ→**R** परिभाषित गर्नुहोस्। साना फङ्सन मानहरूले राम्रो समाधानहरूलाई जनाउँछन्। + * दुई जीनहरूलाई संयोजन गरेर नयाँ वैध समाधान प्राप्त गर्नको लागि **क्रसओभर** मेकानिज्म परिभाषित गर्नुहोस्: crossover: Γ2→Γ। + * **म्युटेसन** मेकानिज्म परिभाषित गर्नुहोस्: mutate: Γ→Γ। + +धेरै अवस्थामा, क्रसओभर र म्युटेसन जीनहरूलाई संख्यात्मक क्रमहरू वा बिट भेक्टरहरूका रूपमा हेरफेर गर्नका लागि सरल एल्गोरिदमहरू हुन्। + +जेनेटिक एल्गोरिदमको विशिष्ट कार्यान्वयन केसअनुसार फरक हुन सक्छ, तर समग्र संरचना निम्नानुसार छ: + +1. प्रारम्भिक जनसंख्या G⊂Γ चयन गर्नुहोस्। +2. यस चरणमा प्रदर्शन गरिने अपरेशनहरू मध्ये एकलाई अनियमित रूपमा चयन गर्नुहोस्: क्रसओभर वा म्युटेसन। +3. **क्रसओभर**: + * दुई जीनहरू g1, g2 ∈ G अनियमित रूपमा चयन गर्नुहोस्। + * क्रसओभर गणना गर्नुहोस् g=crossover(g1,g2)। + * यदि fit(g)1) वा fit(g)2) भने - जनसंख्यामा सम्बन्धित जीनलाई g द्वारा प्रतिस्थापन गर्नुहोस्। +4. **म्युटेसन** - अनियमित रूपमा जीन g∈G चयन गर्नुहोस् र यसलाई mutate(g) द्वारा प्रतिस्थापन गर्नुहोस्। +5. चरण 2 बाट दोहोर्याउनुहोस्, जबसम्म fit को मान पर्याप्त सानो हुँदैन, वा चरणहरूको सीमामा पुग्दैन। + +## सामान्य कार्यहरू + +जेनेटिक एल्गोरिदमहरूले सामान्यतया समाधान गर्ने कार्यहरूमा समावेश छन्: + +1. तालिका अनुकूलन +1. उत्तम प्याकिङ +1. उत्तम काट्ने तरिका +1. थकाउने खोज प्रक्रियालाई तीव्र बनाउने + +## ✍️ अभ्यास: जेनेटिक एल्गोरिदमहरू + +तपाईं निम्न नोटबुकहरूमा सिकाइ जारी राख्न सक्नुहुन्छ: + +[यस नोटबुक](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) मा जानुहोस् र जेनेटिक एल्गोरिदमहरूको दुई उदाहरणहरू हेर्नुहोस्: + +1. खजाना निष्पक्ष रूपमा बाँडफाँड गर्ने समस्या +1. 8 क्विन्स समस्या + +## निष्कर्ष + +जेनेटिक एल्गोरिदमहरू धेरै समस्याहरू समाधान गर्न प्रयोग गरिन्छन्, जसमा रसद र खोज समस्याहरू समावेश छन्। यो क्षेत्र मनोविज्ञान र कम्प्युटर विज्ञानका विषयहरूलाई एकीकृत गर्ने अनुसन्धानबाट प्रेरित छ। + +## 🚀 चुनौती + +"जेनेटिक एल्गोरिदमहरू कार्यान्वयन गर्न सजिलो हुन्छ, तर तिनीहरूको व्यवहार बुझ्न गाह्रो हुन्छ।" [स्रोत](https://wikipedia.org/wiki/Genetic_algorithm) कुनै जेनेटिक एल्गोरिदमको कार्यान्वयन जस्तै सुडोकु समस्या समाधान गर्ने विधि खोज्नुहोस्, र यो कसरी काम गर्छ भनेर स्केच वा फ्लोचार्टको रूपमा व्याख्या गर्नुहोस्। + +## [पश्च-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## समीक्षा र आत्म-अध्ययन + +[यो उत्कृष्ट भिडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44) हेर्नुहोस्, जसले कम्प्युटरले जेनेटिक एल्गोरिदमहरूद्वारा प्रशिक्षित न्युरल नेटवर्कहरू प्रयोग गरेर सुपर मारियो खेल्न कसरी सिक्न सक्छ भन्ने कुरा बताउँछ। हामी यस्तो खेल खेल्न कम्प्युटरलाई सिकाउने बारेमा [अर्को खण्डमा](../22-DeepRL/README.md) थप जान्नेछौं। + +## [असाइनमेन्ट: डायोफेन्टाइन समीकरण](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +तपाईंको लक्ष्य तथाकथित **डायोफेन्टाइन समीकरण** समाधान गर्नु हो - जसको पूर्णांक जरा हुन्छ। उदाहरणका लागि, समीकरण a+2b+3c+4d=30 लाई विचार गर्नुहोस्। तपाईंले यस समीकरणलाई सन्तुष्ट पार्ने पूर्णांक जरा पत्ता लगाउनुपर्नेछ। + +*यो असाइनमेन्ट [यो पोस्ट](https://habr.com/post/128704/) बाट प्रेरित छ।* + +सुझावहरू: + +1. जराहरूलाई [0;30] को अन्तरालमा विचार गर्न सकिन्छ। +1. जीनको रूपमा, जराहरूको सूची प्रयोग गर्न विचार गर्नुहोस्। + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) लाई सुरुवात बिन्दुको रूपमा प्रयोग गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/6-Other/22-DeepRL/README.md b/translations/ne/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..1c4b04cc --- /dev/null +++ b/translations/ne/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# गहिरो सुदृढीकरण शिक्षण + +सुदृढीकरण शिक्षण (RL) लाई पर्यवेक्षित शिक्षण र अप्रेक्षित शिक्षणसँगै आधारभूत मेसिन शिक्षणको एक प्रकारको रूपमा हेरिन्छ। जहाँ पर्यवेक्षित शिक्षणमा हामी ज्ञात परिणामसहितको डेटासेटमा निर्भर गर्छौं, RL भने **गरि सिक्ने** प्रक्रियामा आधारित छ। उदाहरणका लागि, जब हामी पहिलो पटक कम्प्युटर गेम देख्छौं, हामी खेल्न थाल्छौं, नियमहरू नजाने पनि, र चाँडै नै खेल्ने र आफ्नो व्यवहार समायोजन गर्ने प्रक्रियाबाट आफ्नो सीप सुधार गर्न सक्षम हुन्छौं। + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL गर्नका लागि हामीलाई चाहिन्छ: + +* **पर्यावरण** वा **सिमुलेटर**, जसले खेलको नियमहरू सेट गर्छ। हामीले सिमुलेटरमा प्रयोगहरू चलाउन र परिणामहरू अवलोकन गर्न सक्षम हुनुपर्छ। +* केही **पुरस्कार कार्य**, जसले हाम्रो प्रयोग कत्तिको सफल भयो भनेर संकेत गर्छ। कम्प्युटर गेम खेल्न सिक्ने सन्दर्भमा, पुरस्कार भनेको हाम्रो अन्तिम स्कोर हुनेछ। + +पुरस्कार कार्यको आधारमा, हामीले आफ्नो व्यवहार समायोजन गर्न र आफ्नो सीप सुधार गर्न सक्षम हुनुपर्छ, ताकि अर्को पटक हामी राम्रो खेल्न सकौं। अन्य प्रकारका मेसिन शिक्षण र RL बीचको मुख्य भिन्नता भनेको RL मा हामी सामान्यतया खेल समाप्त नभएसम्म जित्ने वा हार्ने कुरा थाहा पाउँदैनौं। त्यसैले, कुनै निश्चित चाल मात्र राम्रो हो वा होइन भनेर भन्न सकिँदैन - हामीलाई खेलको अन्त्यमा मात्र पुरस्कार प्राप्त हुन्छ। + +RL को क्रममा, हामी सामान्यतया धेरै प्रयोगहरू गर्छौं। प्रत्येक प्रयोगको क्रममा, हामीले अहिलेसम्म सिकेको उत्तम रणनीति अनुसरण गर्ने (**शोषण**) र नयाँ सम्भावित अवस्थाहरू अन्वेषण गर्ने (**अन्वेषण**) बीच सन्तुलन कायम गर्नुपर्छ। + +## OpenAI Gym + +RL को लागि एक उत्कृष्ट उपकरण भनेको [OpenAI Gym](https://gym.openai.com/) हो - एक **सिमुलेशन वातावरण**, जसले विभिन्न वातावरणहरू सिमुलेट गर्न सक्छ, जस्तै Atari गेमहरूदेखि पोल ब्यालेन्सिङको भौतिक विज्ञानसम्म। यो सुदृढीकरण शिक्षण एल्गोरिदमहरू प्रशिक्षणका लागि सबैभन्दा लोकप्रिय सिमुलेशन वातावरणहरू मध्ये एक हो, र [OpenAI](https://openai.com/) द्वारा मर्मत गरिएको छ। + +> **Note**: OpenAI Gym बाट उपलब्ध सबै वातावरणहरू [यहाँ](https://gym.openai.com/envs/#classic_control) हेर्न सकिन्छ। + +## CartPole ब्यालेन्सिङ + +तपाईंले आधुनिक ब्यालेन्सिङ उपकरणहरू, जस्तै *Segway* वा *Gyroscooters*, देख्नुभएको हुन सक्छ। तिनीहरूले एक्सेलेरोमीटर वा गाइरोस्कोपबाट सिग्नलको प्रतिक्रिया स्वरूप आफ्ना पाङ्ग्राहरू समायोजन गरेर स्वतः ब्यालेन्स गर्न सक्षम छन्। यस खण्डमा, हामी समान समस्या समाधान गर्न सिक्नेछौं - पोल ब्यालेन्सिङ। यो सर्कस कलाकारले आफ्नो हातमा पोल ब्यालेन्स गर्नुपर्ने अवस्थासँग मिल्दोजुल्दो छ - तर यो पोल ब्यालेन्सिङ केवल 1D मा हुन्छ। + +ब्यालेन्सिङको सरल संस्करणलाई **CartPole** समस्या भनेर चिनिन्छ। CartPole संसारमा, हामीसँग एउटा तेर्सो स्लाइडर हुन्छ, जसले बायाँ वा दायाँ सर्न सक्छ, र लक्ष्य भनेको स्लाइडरको माथि ठाडो पोल ब्यालेन्स गर्नु हो। + +a cartpole + +यो वातावरण सिर्जना गर्न र प्रयोग गर्नका लागि, हामीलाई केही लाइनको Python कोड चाहिन्छ: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +प्रत्येक वातावरणलाई ठीक त्यही तरिकाले पहुँच गर्न सकिन्छ: +* `env.reset` नयाँ प्रयोग सुरु गर्छ। +* `env.step` सिमुलेशन चरण प्रदर्शन गर्छ। यसले **action space** बाट **action** प्राप्त गर्छ, र **observation space** बाट **observation**, साथै पुरस्कार र टर्मिनेसन फ्ल्याग फर्काउँछ। + +माथिको उदाहरणमा, हामी प्रत्येक चरणमा र्यान्डम कार्य प्रदर्शन गर्छौं, जसका कारण प्रयोगको जीवन धेरै छोटो हुन्छ: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RL एल्गोरिदमको लक्ष्य भनेको एक मोडेल - जसलाई **policy** π भनिन्छ - प्रशिक्षण गर्नु हो, जसले दिइएको अवस्थाको प्रतिक्रिया स्वरूप कार्य फर्काउँछ। हामीले पॉलिसीलाई सम्भावनात्मक रूपमा पनि विचार गर्न सक्छौं, जस्तै कुनै पनि अवस्था *s* र कार्य *a* को लागि यो π(*a*|*s*) सम्भावना फर्काउँछ कि हामीले *s* अवस्थामा *a* लिनुपर्छ। + +## पॉलिसी ग्रेडियन्ट्स एल्गोरिदम + +पॉलिसी मोडल गर्ने सबैभन्दा स्पष्ट तरिका भनेको एउटा न्यूरल नेटवर्क सिर्जना गर्नु हो, जसले अवस्थाहरूलाई इनपुटको रूपमा लिन्छ, र सम्बन्धित कार्यहरू (वा सबै कार्यहरूको सम्भावनाहरू) फर्काउँछ। यस अर्थमा, यो सामान्य वर्गीकरण कार्यसँग मिल्दोजुल्दो हुनेछ, तर मुख्य भिन्नता भनेको - हामीलाई प्रत्येक चरणमा कुन कार्य लिनुपर्छ भनेर पहिले नै थाहा हुँदैन। + +यहाँको विचार भनेको ती सम्भावनाहरूको अनुमान लगाउनु हो। हामी **कुल पुरस्कारहरू** को भेक्टर निर्माण गर्छौं, जसले प्रयोगको प्रत्येक चरणमा हाम्रो कुल पुरस्कार देखाउँछ। हामी **पुरस्कार छुट** पनि लागू गर्छौं, प्रारम्भिक पुरस्कारहरूलाई केही गुणांक γ=0.99 द्वारा गुणा गरेर, प्रारम्भिक पुरस्कारहरूको भूमिका घटाउन। त्यसपछि, हामी प्रयोगको मार्गमा ठूला पुरस्कार दिने चरणहरूलाई बलियो बनाउँछौं। + +> पॉलिसी ग्रेडियन्ट एल्गोरिदमको बारेमा थप जान्न र यसलाई कार्यमा देख्न [उदाहरण नोटबुक](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) हेर्नुहोस्। + +## Actor-Critic एल्गोरिदम + +पॉलिसी ग्रेडियन्ट्स दृष्टिकोणको सुधारिएको संस्करणलाई **Actor-Critic** भनिन्छ। यसको मुख्य विचार भनेको न्यूरल नेटवर्कलाई दुई कुरा फर्काउन प्रशिक्षण गर्नु हो: + +* पॉलिसी, जसले कुन कार्य लिनुपर्छ भनेर निर्धारण गर्छ। यस भागलाई **actor** भनिन्छ। +* कुल पुरस्कारको अनुमान, जुन हामीले यस अवस्थामा प्राप्त गर्न सक्छौं - यस भागलाई **critic** भनिन्छ। + +यस अर्थमा, यो [GAN](../../4-ComputerVision/10-GANs/README.md) जस्तै देखिन्छ, जहाँ दुई नेटवर्कहरू एकअर्काविरुद्ध प्रशिक्षण गरिन्छ। Actor-Critic मोडेलमा, actor ले हामीले लिनुपर्ने कार्य प्रस्ताव गर्छ, र critic आलोचनात्मक भएर परिणामको अनुमान गर्न प्रयास गर्छ। तर, हाम्रो लक्ष्य भनेको ती नेटवर्कहरूलाई एकसाथ प्रशिक्षण गर्नु हो। + +किनभने हामीलाई प्रयोगको क्रममा वास्तविक कुल पुरस्कारहरू र critic द्वारा फर्काइएको परिणामहरू दुवै थाहा हुन्छ, यो **critic loss** न्यूनतम बनाउनको लागि एक हानि कार्य निर्माण गर्न तुलनात्मक रूपमा सजिलो हुन्छ। हामी **actor loss** लाई पॉलिसी ग्रेडियन्ट एल्गोरिदममा जस्तै दृष्टिकोण प्रयोग गरेर गणना गर्न सक्छौं। + +यी एल्गोरिदमहरू चलाएपछि, हामी हाम्रो CartPole लाई यसरी व्यवहार गर्ने अपेक्षा गर्न सक्छौं: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ अभ्यास: पॉलिसी ग्रेडियन्ट्स र Actor-Critic RL + +निम्न नोटबुकहरूमा आफ्नो सिकाइ जारी राख्नुहोस्: + +* [TensorFlow मा RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch मा RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## अन्य RL कार्यहरू + +आजकल सुदृढीकरण शिक्षण अनुसन्धानको तीव्र रूपमा बढ्दो क्षेत्र हो। सुदृढीकरण शिक्षणका केही रोचक उदाहरणहरू हुन्: + +* कम्प्युटरलाई **Atari गेमहरू** खेल्न सिकाउने। यस समस्यामा चुनौतीपूर्ण भाग भनेको हामीसँग भेक्टरको रूपमा सरल अवस्था छैन, तर स्क्रिनशट हुन्छ - र हामीले CNN प्रयोग गरेर यो स्क्रिन छविलाई फिचर भेक्टरमा रूपान्तरण गर्नुपर्छ, वा पुरस्कार जानकारी निकाल्नुपर्छ। Atari गेमहरू Gym मा उपलब्ध छन्। +* कम्प्युटरलाई बोर्ड गेमहरू, जस्तै Chess र Go, खेल्न सिकाउने। हालसालै **Alpha Zero** जस्ता अत्याधुनिक कार्यक्रमहरू दुई एजेन्टहरू एकअर्काविरुद्ध खेल्दै, प्रत्येक चरणमा सुधार गर्दै, सुरुबाटै प्रशिक्षण गरिएका थिए। +* उद्योगमा, RL सिमुलेशनबाट नियन्त्रण प्रणालीहरू सिर्जना गर्न प्रयोग गरिन्छ। [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) नामक सेवा विशेष रूपमा यसको लागि डिजाइन गरिएको छ। + +## निष्कर्ष + +हामीले अब एजेन्टहरूलाई राम्रो परिणाम प्राप्त गर्न प्रशिक्षण गर्ने तरिका सिकेका छौं, केवल पुरस्कार कार्य प्रदान गरेर, जसले खेलको इच्छित अवस्था परिभाषित गर्छ, र तिनीहरूलाई बुद्धिमानीपूर्वक खोज स्थान अन्वेषण गर्ने अवसर दिएर। हामीले दुई एल्गोरिदमहरू सफलतापूर्वक प्रयास गरेका छौं, र तुलनात्मक रूपमा छोटो समयमा राम्रो परिणाम प्राप्त गरेका छौं। तर, यो RL मा तपाईंको यात्रा मात्र सुरु हो, र यदि तपाईं गहिरो जान चाहनुहुन्छ भने छुट्टै पाठ्यक्रम लिन विचार गर्नुपर्छ। + +## 🚀 चुनौती + +'अन्य RL कार्यहरू' खण्डमा सूचीबद्ध अनुप्रयोगहरू अन्वेषण गर्नुहोस् र एउटा कार्यान्वयन प्रयास गर्नुहोस्! + +## [पश्च-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## समीक्षा र आत्म अध्ययन + +हाम्रो [मेसिन शिक्षणको लागि शुरुआती पाठ्यक्रम](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) मा शास्त्रीय सुदृढीकरण शिक्षणको बारेमा थप जान्नुहोस्। + +कम्प्युटरले Super Mario खेल्न सिक्ने बारेमा कुरा गर्ने [यो उत्कृष्ट भिडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44) हेर्नुहोस्। + +## असाइनमेन्ट: [Mountain Car प्रशिक्षण गर्नुहोस्](lab/README.md) + +यस असाइनमेन्टको क्रममा तपाईंको लक्ष्य भनेको फरक Gym वातावरण - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) प्रशिक्षण गर्नु हो। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ne/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..3ea918dc --- /dev/null +++ b/translations/ne/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## वातावरण + +माउन्टेन कार वातावरणमा कार एउटा उपत्यकाभित्र फसेको छ। तपाईंको लक्ष्य उपत्यकाबाट बाहिर निस्केर झण्डासम्म पुग्नु हो। तपाईंले गर्न सक्ने क्रियाकलापहरूमा बायाँतर्फ गति बढाउनु, दायाँतर्फ गति बढाउनु, वा केही नगर्नु समावेश छ। तपाईंले कारको x-अक्षमा स्थिति र वेगलाई अवलोकन गर्न सक्नुहुन्छ। + +## नोटबुक सुरु गर्दै + +यो प्रयोगशाला [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) खोल्दै सुरु गर्नुहोस्। + +## मुख्य कुरा + +यस प्रयोगशालामा तपाईंले सिक्नुपर्ने कुरा के हो भने RL एल्गोरिदमलाई नयाँ वातावरणमा अपनाउनु प्रायः सरल हुन्छ, किनकि OpenAI Gym का सबै वातावरणहरूको इन्टरफेस समान छ, र एल्गोरिदमहरू वातावरणको प्रकृतिमा धेरै निर्भर गर्दैनन्। तपाईंले Python को कोडलाई पुनःसंरचना गरेर कुनै पनि वातावरणलाई RL एल्गोरिदममा एउटा प्यारामिटरको रूपमा पास गर्न सक्ने तरिकामा बनाउन सक्नुहुन्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ne/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..ff7b05fe --- /dev/null +++ b/translations/ne/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# बहु-एजेन्ट प्रणालीहरू + +बुद्धिमत्ता प्राप्त गर्ने सम्भावित तरिकाहरू मध्ये एकलाई **उत्पन्न** (वा **सिनर्जेटिक**) दृष्टिकोण भनिन्छ, जुन धेरै सरल एजेन्टहरूको संयुक्त व्यवहारले प्रणालीको समग्रमा जटिल (वा बुद्धिमान) व्यवहार उत्पन्न गर्न सक्छ भन्ने तथ्यमा आधारित छ। सैद्धान्तिक रूपमा, यो [सामूहिक बुद्धिमत्ता](https://en.wikipedia.org/wiki/Collective_intelligence), [उत्पन्नवाद](https://en.wikipedia.org/wiki/Global_brain) र [विकासात्मक साइबरनेटिक्स](https://en.wikipedia.org/wiki/Global_brain) का सिद्धान्तहरूमा आधारित छ, जसले उच्च-स्तरका प्रणालीहरूले तल्लो-स्तरका प्रणालीहरूलाई सही तरिकाले संयोजन गर्दा केही थप मूल्य प्राप्त गर्छन् भन्ने कुरा बताउँछ (*मेटासिस्टम ट्रान्जिसनको सिद्धान्त* भनिन्छ)। + +## [पूर्व-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**बहु-एजेन्ट प्रणालीहरू** को दिशा १९९० को दशकमा इन्टरनेट र वितरित प्रणालीहरूको वृद्धिको प्रतिक्रियाको रूपमा एआईमा देखा परेको हो। क्लासिकल एआई पाठ्यपुस्तकहरू मध्ये एक, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), बहु-एजेन्ट प्रणालीहरूको दृष्टिकोणबाट क्लासिकल एआईको दृष्टिकोणमा केन्द्रित छ। + +बहु-एजेन्ट दृष्टिकोणको केन्द्रमा **एजेन्ट** को धारणा छ - एउटा इकाई जसले कुनै **पर्यावरण** मा बस्छ, जसलाई यो बुझ्न र कार्य गर्न सक्छ। यो धेरै व्यापक परिभाषा हो, र विभिन्न प्रकारका एजेन्टहरू र वर्गीकरणहरू हुन सक्छन्: + +* तर्क गर्ने क्षमताको आधारमा: + - **प्रतिक्रियात्मक** एजेन्टहरूले सामान्यतया सरल अनुरोध-प्रतिक्रिया प्रकारको व्यवहार देखाउँछन्। + - **विचारशील** एजेन्टहरूले केही प्रकारको तार्किक तर्क र/वा योजना बनाउने क्षमता प्रयोग गर्छन्। +* एजेन्टले आफ्नो कोड कहाँ कार्यान्वयन गर्छ भन्ने आधारमा: + - **स्थिर** एजेन्टहरू समर्पित नेटवर्क नोडमा काम गर्छन्। + - **मोबाइल** एजेन्टहरूले आफ्नो कोड नेटवर्क नोडहरू बीच सार्न सक्छन्। +* व्यवहारको आधारमा: + - **निष्क्रिय एजेन्टहरू** को विशिष्ट लक्ष्यहरू हुँदैन। यस्ता एजेन्टहरूले बाह्य उत्तेजनाहरूमा प्रतिक्रिया दिन सक्छन्, तर आफैंले कुनै कार्यहरू सुरु गर्दैनन्। + - **सक्रिय एजेन्टहरू** को केही लक्ष्यहरू हुन्छन् जसलाई उनीहरूले पछ्याउँछन्। + - **संज्ञानात्मक एजेन्टहरू** जटिल योजना र तर्क समावेश गर्छन्। + +आजकल बहु-एजेन्ट प्रणालीहरू धेरै अनुप्रयोगहरूमा प्रयोग गरिन्छ: + +* खेलहरूमा, धेरै गैर-खेलाडी पात्रहरूले केही प्रकारको एआई प्रयोग गर्छन्, र तिनीहरूलाई बुद्धिमान एजेन्ट मान्न सकिन्छ। +* भिडियो उत्पादनमा, भीडहरू समावेश गर्ने जटिल ३डी दृश्यहरू रेंडर गर्न सामान्यतया बहु-एजेन्ट सिमुलेशन प्रयोग गरिन्छ। +* प्रणालीहरूको मोडेलिङमा, बहु-एजेन्ट दृष्टिकोण जटिल मोडेलको व्यवहारलाई सिमुलेट गर्न प्रयोग गरिन्छ। उदाहरणका लागि, बहु-एजेन्ट दृष्टिकोणले COVID-19 रोगको विश्वव्यापी फैलावटको भविष्यवाणी गर्न सफलतापूर्वक प्रयोग गरिएको छ। यस्तै दृष्टिकोणले शहरको ट्राफिकलाई मोडेल गर्न प्रयोग गर्न सकिन्छ, र ट्राफिक नियमहरूमा परिवर्तनहरू कसरी प्रतिक्रिया दिन्छ भनेर हेर्न सकिन्छ। +* जटिल स्वचालन प्रणालीहरूमा, प्रत्येक उपकरण स्वतन्त्र एजेन्टको रूपमा कार्य गर्न सक्छ, जसले सम्पूर्ण प्रणालीलाई कम मोनोलिथिक र अधिक मजबुत बनाउँछ। + +हामी बहु-एजेन्ट प्रणालीहरूमा गहिरो जान धेरै समय खर्च गर्ने छैनौं, तर **बहु-एजेन्ट मोडेलिङ** को एउटा उदाहरण विचार गर्नेछौं। + +## नेटलोगो + +[NetLogo](https://ccl.northwestern.edu/netlogo/) एक बहु-एजेन्ट मोडेलिङ वातावरण हो जुन [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) प्रोग्रामिङ भाषाको संशोधित संस्करणमा आधारित छ। यो भाषा बच्चाहरूलाई प्रोग्रामिङ अवधारणाहरू सिकाउनको लागि विकसित गरिएको थियो, र यसले तपाईंलाई **टर्टल** नामक एजेन्टलाई नियन्त्रण गर्न अनुमति दिन्छ, जसले पछाडि ट्रेस छोड्दै अगाडि बढ्न सक्छ। यसले जटिल ज्यामितीय आकृतिहरू सिर्जना गर्न अनुमति दिन्छ, जुन एजेन्टको व्यवहार बुझ्नको लागि धेरै दृश्यात्मक तरिका हो। + +NetLogo मा, हामी `create-turtles` कमाण्ड प्रयोग गरेर धेरै टर्टलहरू सिर्जना गर्न सक्छौं। त्यसपछि हामी सबै टर्टलहरूलाई केही कार्यहरू गर्न आदेश दिन सक्छौं (तलको उदाहरणमा - १० बिन्दु अगाडि बढ्नु): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +पक्कै पनि, जब सबै टर्टलहरूले एउटै कुरा गर्छन्, यो रोचक हुँदैन, त्यसैले हामी निश्चित बिन्दुको वरपरका टर्टलहरूको समूहलाई `ask` गर्न सक्छौं। हामी `breed [cats cat]` कमाण्ड प्रयोग गरेर विभिन्न *जाति* का टर्टलहरू पनि सिर्जना गर्न सक्छौं। यहाँ `cat` जातिको नाम हो, र हामीले एकवचन र बहुवचन शब्द दुवै निर्दिष्ट गर्न आवश्यक छ, किनकि विभिन्न कमाण्डहरूले स्पष्टताको लागि विभिन्न रूपहरू प्रयोग गर्छन्। + +> ✅ हामी NetLogo भाषा सिक्नमा जान्ने छैनौं - यदि तपाईं थप जान्न इच्छुक हुनुहुन्छ भने, तपाईं उत्कृष्ट [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) स्रोत भ्रमण गर्न सक्नुहुन्छ। + +तपाईं [डाउनलोड](https://ccl.northwestern.edu/netlogo/download.shtml) गरेर NetLogo स्थापना गर्न सक्नुहुन्छ। + +### मोडेल पुस्तकालय + +NetLogo को एक उत्कृष्ट पक्ष यो हो कि यसमा काम गर्ने मोडेलहरूको पुस्तकालय समावेश छ जुन तपाईं प्रयास गर्न सक्नुहुन्छ। **File → Models Library** मा जानुहोस्, र तपाईंले मोडेलहरूको धेरै श्रेणीहरू छनोट गर्न सक्नुहुन्छ। + +NetLogo Models Library + +> Dmitry Soshnikov द्वारा मोडेल पुस्तकालयको स्क्रिनशट + +तपाईं मोडेलहरू मध्ये एक खोल्न सक्नुहुन्छ, उदाहरणका लागि **Biology → Flocking**। + +### मुख्य सिद्धान्तहरू + +मोडेल खोलिसकेपछि, तपाईं मुख्य NetLogo स्क्रिनमा जानुहुन्छ। यहाँ सीमित स्रोतहरू (घाँस) दिइएको भेडा र ब्वाँसोको जनसंख्यालाई वर्णन गर्ने नमूना मोडेल छ। + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ne.png) + +> Dmitry Soshnikov द्वारा स्क्रिनशट + +यस स्क्रिनमा, तपाईं देख्न सक्नुहुन्छ: + +* **इन्टरफेस** खण्ड जसमा समावेश छ: + - मुख्य क्षेत्र, जहाँ सबै एजेन्टहरू बस्छन् + - विभिन्न नियन्त्रणहरू: बटनहरू, स्लाइडरहरू, आदि। + - ग्राफहरू जसलाई तपाईं सिमुलेशनको प्यारामिटरहरू प्रदर्शन गर्न प्रयोग गर्न सक्नुहुन्छ +* **कोड** ट्याब जसमा सम्पादक समावेश छ, जहाँ तपाईं NetLogo प्रोग्राम टाइप गर्न सक्नुहुन्छ + +अधिकांश अवस्थामा, इन्टरफेसमा **Setup** बटन हुन्छ, जसले सिमुलेशनको अवस्था आरम्भ गर्छ, र **Go** बटन हुन्छ जसले कार्यान्वयन सुरु गर्छ। ती सम्बन्धित ह्यान्डलरहरूद्वारा कोडमा यस प्रकार देखिन्छ: + +``` +to go [ +... +] +``` + +NetLogo को संसार निम्न वस्तुहरूबाट बनेको छ: + +* **एजेन्टहरू** (टर्टलहरू) जसले क्षेत्रभरि सर्न सक्छन् र केही गर्न सक्छन्। तपाईं `ask turtles [...]` वाक्यविन्यास प्रयोग गरेर एजेन्टहरूलाई आदेश दिन सक्नुहुन्छ, र कोष्ठकभित्रको कोड सबै एजेन्टहरूले *टर्टल मोड* मा कार्यान्वयन गर्छन्। +* **प्याचहरू** क्षेत्रका वर्गाकार क्षेत्रहरू हुन्, जसमा एजेन्टहरू बस्छन्। तपाईं सबै एजेन्टहरूलाई एउटै प्याचमा सन्दर्भ गर्न सक्नुहुन्छ, वा तपाईं प्याचको रंग र केही अन्य गुणहरू परिवर्तन गर्न सक्नुहुन्छ। तपाईं `ask patches` प्रयोग गरेर प्याचहरूलाई केही गर्न आदेश दिन सक्नुहुन्छ। +* **अवलोकनकर्ता** एक अद्वितीय एजेन्ट हो जसले संसारलाई नियन्त्रण गर्छ। सबै बटन ह्यान्डलरहरू *अवलोकनकर्ता मोड* मा कार्यान्वयन हुन्छन्। + +> ✅ बहु-एजेन्ट वातावरणको सुन्दरता यो हो कि टर्टल मोड वा प्याच मोडमा चल्ने कोड सबै एजेन्टहरूले समानान्तर रूपमा एकै समयमा कार्यान्वयन गर्छन्। यसरी, थोरै कोड लेखेर र व्यक्तिगत एजेन्टको व्यवहार प्रोग्राम गरेर, तपाईं सिमुलेशन प्रणालीको समग्र जटिल व्यवहार सिर्जना गर्न सक्नुहुन्छ। + +### फ्लकिङ + +बहु-एजेन्ट व्यवहारको उदाहरणको रूपमा, **[फलकिङ](https://en.wikipedia.org/wiki/Flocking_(behavior))** विचार गरौं। फ्लकिङ एक जटिल ढाँचा हो जुन चराहरूको झुण्डले उड्ने तरिकासँग धेरै मिल्दोजुल्दो छ। तिनीहरूलाई उडिरहेको हेर्दा तपाईं सोच्न सक्नुहुन्छ कि तिनीहरूले कुनै प्रकारको सामूहिक एल्गोरिदम पछ्याउँछन्, वा तिनीहरूसँग *सामूहिक बुद्धिमत्ता* को कुनै रूप छ। तर, यो जटिल व्यवहार उत्पन्न हुन्छ जब प्रत्येक व्यक्तिगत एजेन्ट (यस अवस्थामा, एक *चरा*) केवल छोटो दूरीमा केही अन्य एजेन्टहरूलाई अवलोकन गर्छ, र तीन सरल नियमहरू पछ्याउँछ: + +* **सामञ्जस्यता** - यो छिमेकी एजेन्टहरूको औसत हेडिङतर्फ जान्छ। +* **संगठन** - यो छिमेकीहरूको औसत स्थानतर्फ जान्छ (*दूर दूरी आकर्षण*)। +* **पृथक्करण** - जब अन्य चराहरूको धेरै नजिक पुग्छ, यो टाढा जान्छ (*छोटो दूरी प्रतिकर्षण*)। + +तपाईं फ्लकिङ उदाहरण चलाउन सक्नुहुन्छ र व्यवहार अवलोकन गर्न सक्नुहुन्छ। तपाईं *पृथक्करणको डिग्री* वा *दृश्य दायरा* जस्ता प्यारामिटरहरू समायोजन गर्न सक्नुहुन्छ, जसले प्रत्येक चराले कति टाढा देख्न सक्छ भन्ने कुरा परिभाषित गर्छ। ध्यान दिनुहोस् कि यदि तपाईं दृश्य दायरा ० मा घटाउनुहुन्छ भने, सबै चराहरू अन्धा हुन्छन्, र फ्लकिङ रोकिन्छ। यदि तपाईं पृथक्करण ० मा घटाउनुहुन्छ भने, सबै चराहरू सीधा लाइनमा जम्मा हुन्छन्। + +> ✅ **कोड** ट्याबमा स्विच गर्नुहोस् र फ्लकिङका तीन नियमहरू (सामञ्जस्यता, संगठन र पृथक्करण) कोडमा कहाँ कार्यान्वयन गरिएको छ हेर्नुहोस्। ध्यान दिनुहोस् कि हामी केवल दृष्टिमा रहेका एजेन्टहरूलाई सन्दर्भ गर्छौं। + +### हेर्न अन्य मोडेलहरू + +केही थप रोचक मोडेलहरू छन् जसमा तपाईं प्रयोग गर्न सक्नुहुन्छ: + +* **Art → Fireworks** देखाउँछ कि कसरी फायरवर्कलाई व्यक्तिगत फायर स्ट्रिमहरूको सामूहिक व्यवहार मान्न सकिन्छ। +* **Social Science → Traffic Basic** र **Social Science → Traffic Grid** शहरको ट्राफिकको मोडेल देखाउँछ १D र २D ग्रिडमा ट्राफिक बत्तीहरू सहित वा बिना। सिमुलेशनमा प्रत्येक कारले निम्न नियमहरू पछ्याउँछ: + - यदि अगाडि ठाउँ खाली छ भने - गति बढाउनुहोस् (एक निश्चित अधिकतम गति सम्म)। + - यदि अगाडि अवरोध देख्छ भने - ब्रेक लगाउनुहोस् (र तपाईं समायोजन गर्न सक्नुहुन्छ कि चालकले कति टाढा देख्न सक्छ)। +* **Social Science → Party** देखाउँछ कि कसरी मानिसहरू ककटेल पार्टीको समयमा समूह बनाउँछन्। तपाईं समूहको खुशीको सबैभन्दा छिटो वृद्धि हुने प्यारामिटरहरूको संयोजन पत्ता लगाउन सक्नुहुन्छ। + +यी उदाहरणहरूबाट देख्न सकिन्छ कि बहु-एजेन्ट सिमुलेशनहरू जटिल प्रणालीको व्यवहार बुझ्नको लागि धेरै उपयोगी तरिका हुन सक्छ, जसमा समान वा मिल्दोजुल्दो तर्क पछ्याउने व्यक्तिहरू समावेश छन्। यसलाई भर्चुअल एजेन्टहरू, जस्तै [NPCs](https://en.wikipedia.org/wiki/NPC) कम्प्युटर खेलहरूमा, वा ३D एनिमेटेड संसारहरूमा एजेन्टहरू नियन्त्रण गर्न प्रयोग गर्न सकिन्छ। + +## विचारशील एजेन्टहरू + +माथि वर्णन गरिएका एजेन्टहरू धेरै सरल छन्, जसले वातावरणमा परिवर्तनहरूमा प्रतिक्रिया दिन केही प्रकारको एल्गोरिदम प्रयोग गर्छन्। यसरी तिनीहरू **प्रतिक्रियात्मक एजेन्टहरू** हुन्। तर, कहिलेकाहीं एजेन्टहरूले तर्क गर्न र आफ्नो कार्य योजना बनाउन सक्छन्, जसलाई **विचारशील** भनिन्छ। + +एक सामान्य उदाहरण व्यक्तिगत एजेन्ट हुनेछ जसले मानवबाट छुट्टीको यात्रा बुक गर्न निर्देशन प्राप्त गर्छ। मानौं कि इन्टरनेटमा धेरै एजेन्टहरू छन्, जसले यसलाई मद्दत गर्न सक्छ। यसले अन्य एजेन्टहरूसँग सम्पर्क गर्नुपर्छ कि कुन उडानहरू उपलब्ध छन्, विभिन्न मितिहरूको लागि होटलको मूल्यहरू के छन्, र उत्तम मूल्यको लागि वार्ता गर्न प्रयास गर्नुपर्छ। जब छुट्टी योजना पूरा हुन्छ र मालिकले पुष्टि गर्छ, यसले बुकिङको साथ अगाडि बढ्न सक्छ। + +त्यसको लागि, एजेन्टहरूले **सञ्चार** गर्न आवश्यक छ। सफल सञ्चारको लागि तिनीहरूलाई चाहिन्छ: + +* **ज्ञान आदानप्रदान गर्न मानक भाषाहरू**, जस्तै [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) र [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML)। ती भाषाहरू [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act) मा आधारित छन्। +* ती भाषाहरूले वार्ताका लागि केही **प्रोटोकलहरू** समावेश गर्नुपर्छ, विभिन्न **नीलामी प्रकारहरू** मा आधारित। +* **सामान्य ओन्टोलोजी** प्रयोग गर्नुपर्छ, ताकि तिनीहरूले समान अवधारणाहरूलाई सन्दर्भ गर्न सकून् र तिनीहरूको अर्थ जानून्। +* विभिन्न एजेन्टहरूले के गर्न सक्छन् भनेर **खोज्ने तरिका**, केही प्रकारको ओन्टोलोजीमा आधारित। + +विचारशील एजेन्टहरू प्रतिक्रियात्मक भन्दा धेरै जटिल हुन्छन्, किनकि तिनीहरूले वातावरणमा परिवर्तनहरूमा मात्र प्रतिक्रिया दिन्छन्, तिनीहरूले कार्यहरू *सुरु* गर्न पनि सक्षम हुनुपर्छ। विचारशील एजेन्टहरूको लागि प्रस्तावित आर्किटेक्चरहरू मध्ये एकलाई विश्वास-इच्छा-इरादा (BDI) एजेन्ट भनिन्छ: + +* **विश्वासहरू** एजेन्टको वातावरणको बारेमा ज्ञानको सेट बनाउँछ। यसलाई ज्ञान आधार वा नियमहरूको सेटको रूपमा संरचित गर्न सकिन्छ, जसलाई एजेन्टले वातावरणको विशिष्ट स्थितिमा लागू गर्न सक्छ। +* **इच्छाहरू** एजेन्टले के गर्न चाहन्छ भन्ने कुरा परिभाषित गर्छ, अर्थात् यसको लक्ष्यहरू। उदाहरणका लागि, माथिको व्यक्तिगत सहायक एजेन्टको लक्ष्य छुट्टीको यात्रा बुक गर्नु हो, र होटल एजेन्टको लक्ष्य नाफा अधिकतम गर्नु हो। +* **इरादाहरू** विशिष्ट कार्यहरू हुन् जसलाई एजेन्टले आफ्नो लक्ष्यहरू प्राप्त गर्न योजना बनाउँछ। कार्यहरूले सामान्यतया वातावरण परिवर्तन गर्छन् र अन्य एजेन्टहरूसँग सञ्चारको कारण बनाउँछन्। + +बहु-एजेन्ट प्रणालीहरू निर्माण गर्नका लागि केही प्लेटफर्महरू उपलब्ध छन्, जस्तै [JADE](https://jade.tilab.com/)। [यो पेपर](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) ले बहु-एजेन्ट प्लेटफर्महरूको समीक्षा, बहु-एजेन्ट प्रणालीहरूको संक्षिप्त इतिहास र तिनीहरूको विभिन्न प्रयोग परिदृश्यहरू समावेश गर्दछ। + +## निष्कर्ष + +बहु-एजेन्ट प्रणालीहरूले धेरै फरक रूप लिन सक्छन् र धेरै फरक अनुप्रयोगहरूमा प्रयोग गर्न सकिन्छ। +यी सबैले व्यक्तिगत एजेन्टको सरल व्यवहारमा केन्द्रित हुने र **सिनर्जेटिक प्रभाव** को कारणले समग्र प्रणालीको जटिल व्यवहार प्राप्त गर्ने झुकाव राख्छन्। + +## 🚀 चुनौती + +यस पाठलाई वास्तविक संसारमा लैजानुहोस् र समस्या समाधान गर्न सक्ने बहु-एजेन्ट प्रणालीको अवधारणा बनाउने प्रयास गर्नुहोस्। उदाहरणका लागि, स्कूल बसको मार्गलाई अनुकूलित गर्न बहु-एजेन्ट प्रणालीले के गर्न आवश्यक छ? यो बेकरीमा कसरी काम गर्न सक्छ? + +## [पश्च-व्याख्यान क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## समीक्षा र आत्म अध्ययन + +उद्योगमा यस प्रकारको प्रणालीको प्रयोगको समीक्षा गर्नुहोस्। निर्माण वा भिडियो गेम उद्योग जस्ता डोमेन छनोट गर्नुहोस् र बहु-एजेन्ट प्रणालीहरूले अद्वितीय समस्याहरू समाधान गर्न कसरी प्रयोग गर्न सकिन्छ पत्ता लगाउनुहोस्। + +## [NetLogo असाइनमेन्ट](assignment.md) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ne/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..61986c1e --- /dev/null +++ b/translations/ne/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# नेटलोगो असाइनमेन्ट + +नेटलोगोको पुस्तकालयमा रहेको कुनै एउटा मोडेल लिनुहोस् र यसलाई वास्तविक जीवनको परिस्थितिलाई सकेसम्म नजिकबाट अनुकरण गर्न प्रयोग गर्नुहोस्। एउटा राम्रो उदाहरण भनेको अल्टरनेटिभ भिजुअलाइजेसन फोल्डरमा रहेको भाइरस मोडेललाई परिमार्जन गरेर यसलाई COVID-19 को फैलावटलाई मोडल गर्न कसरी प्रयोग गर्न सकिन्छ भन्ने देखाउनु हो। के तपाईं वास्तविक जीवनको भाइरल फैलावटलाई अनुकरण गर्ने मोडेल बनाउन सक्नुहुन्छ? + +आफ्नो काम देखाउनको लागि एउटा प्रतिलिपि बचत गर्नुहोस् र मोडेल कसरी वास्तविक जीवनको परिस्थितिसँग जोडिएको छ भन्ने व्याख्या गर्ने भिडियो डेमो निर्माण गर्नुहोस्। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव शुद्धताको प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/7-Ethics/README.md b/translations/ne/lessons/7-Ethics/README.md new file mode 100644 index 00000000..9e0a9da8 --- /dev/null +++ b/translations/ne/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# नैतिक र जिम्मेवार एआई + +तपाईंले यो पाठ्यक्रम लगभग समाप्त गर्नुभएको छ, र आशा छ कि अहिले सम्म तपाईंले स्पष्ट रूपमा देख्नुभएको छ कि एआई धेरै औपचारिक गणितीय विधिहरूमा आधारित छ जसले हामीलाई डाटामा सम्बन्धहरू पत्ता लगाउन र केही मानव व्यवहारको पक्षहरू पुन: निर्माण गर्न मोडेलहरू प्रशिक्षण दिन अनुमति दिन्छ। अहिलेको समयमा, हामी एआईलाई डाटाबाट ढाँचा निकाल्न र ती ढाँचाहरूलाई नयाँ समस्याहरू समाधान गर्न लागू गर्न एक धेरै शक्तिशाली उपकरण मान्छौं। + +## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +तर, विज्ञान कथामा हामी प्रायः कथाहरू देख्छौं जहाँ एआई मानव जातिका लागि खतरा प्रस्तुत गर्दछ। सामान्यतया ती कथाहरू कुनै प्रकारको एआई विद्रोहको वरिपरि केन्द्रित हुन्छन्, जब एआईले मानवसँग सामना गर्ने निर्णय लिन्छ। यसले संकेत गर्दछ कि एआईसँग कुनै प्रकारको भावना छ वा यसको विकासकर्ताहरूले पूर्वानुमान गर्न नसक्ने निर्णय लिन सक्छ। + +यो पाठ्यक्रममा हामीले सिकेको एआई ठूलो म्याट्रिक्स गणित बाहेक केही होइन। यो हाम्रो समस्याहरू समाधान गर्न मद्दत गर्ने एक धेरै शक्तिशाली उपकरण हो, र कुनै पनि अन्य शक्तिशाली उपकरण जस्तै - यसलाई राम्रो र नराम्रो उद्देश्यका लागि प्रयोग गर्न सकिन्छ। महत्वपूर्ण कुरा, यसलाई *दुरुपयोग* गर्न सकिन्छ। + +## जिम्मेवार एआईका सिद्धान्तहरू + +एआईको यो अनियन्त्रित वा उद्देश्यपूर्ण दुरुपयोग रोक्न, माइक्रोसफ्टले महत्वपूर्ण [जिम्मेवार एआईका सिद्धान्तहरू](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) प्रस्तुत गर्दछ। यी सिद्धान्तहरू निम्न अवधारणाहरूमा आधारित छन्: + +* **न्याय** *मोडेल पूर्वाग्रहहरू* को महत्त्वपूर्ण समस्यासँग सम्बन्धित छ, जुन प्रशिक्षणको लागि पूर्वाग्रही डाटा प्रयोग गर्दा उत्पन्न हुन सक्छ। उदाहरणका लागि, जब हामी कसैलाई सफ्टवेयर डेभलपरको जागिर प्राप्त गर्ने सम्भावना भविष्यवाणी गर्न प्रयास गर्छौं, मोडेलले पुरुषलाई उच्च प्राथमिकता दिन सक्छ - किनभने प्रशिक्षण डाटासेट सम्भवतः पुरुष दर्शकहरूको लागि पूर्वाग्रही थियो। हामीले प्रशिक्षण डाटालाई सावधानीपूर्वक सन्तुलन गर्न र पूर्वाग्रहहरू रोक्न मोडेलको अनुसन्धान गर्न आवश्यक छ, र सुनिश्चित गर्न आवश्यक छ कि मोडेलले थप सान्दर्भिक विशेषताहरूलाई ध्यानमा राख्छ। +* **विश्वसनीयता र सुरक्षा**। यसको प्रकृतिले गर्दा, एआई मोडेलहरूले गल्ती गर्न सक्छ। न्युरल नेटवर्कले सम्भावनाहरू फर्काउँछ, र हामीले निर्णय गर्दा यसलाई ध्यानमा राख्न आवश्यक छ। प्रत्येक मोडेलसँग केही शुद्धता र पुनःप्राप्ति हुन्छ, र गलत सल्लाहले निम्त्याउन सक्ने हानि रोक्न हामीले यसलाई बुझ्न आवश्यक छ। +* **गोपनीयता र सुरक्षा**मा केही एआई-विशिष्ट प्रभावहरू छन्। उदाहरणका लागि, जब हामी मोडेल प्रशिक्षणको लागि केही डाटा प्रयोग गर्छौं, यो डाटा कुनै प्रकारले मोडेलमा "समाहित" हुन्छ। एकातिर, यसले सुरक्षा र गोपनीयता बढाउँछ, अर्कोतर्फ - हामीले मोडेल कुन डाटामा प्रशिक्षण गरिएको थियो भन्ने कुरा सम्झनु आवश्यक छ। +* **समावेशिता**को अर्थ हामी मानिसलाई प्रतिस्थापन गर्न एआई निर्माण गरिरहेका छैनौं, बरु मानिसलाई सहयोग गर्न र हाम्रो कामलाई थप रचनात्मक बनाउन। यो न्यायसँग पनि सम्बन्धित छ, किनभने जब हामी कम प्रतिनिधित्व भएका समुदायहरूसँग व्यवहार गर्छौं, हामीले सङ्कलन गरेका अधिकांश डाटासेटहरू सम्भवतः पूर्वाग्रही हुनेछन्, र हामीले सुनिश्चित गर्न आवश्यक छ कि ती समुदायहरू समावेश गरिएका छन् र एआईद्वारा सही रूपमा ह्यान्डल गरिएका छन्। +* **पारदर्शिता**। यसमा एआई प्रयोग भइरहेको कुरा स्पष्ट पार्न सुनिश्चित गर्नु समावेश छ। साथै, जहाँ सम्भव छ, हामी *व्याख्यात्मक* एआई प्रणालीहरू प्रयोग गर्न चाहन्छौं। +* **जवाफदेहिता**। जब एआई मोडेलहरूले केही निर्णयहरू लिन्छन्, ती निर्णयहरूको जिम्मेवारी कसको हो भन्ने कुरा सधैं स्पष्ट हुँदैन। हामीले सुनिश्चित गर्न आवश्यक छ कि एआई निर्णयहरूको जिम्मेवारी कहाँ छ भन्ने कुरा बुझ्छौं। अधिकांश अवस्थामा हामी चाहन्छौं कि महत्त्वपूर्ण निर्णयहरू लिन मानवलाई समावेश गरियोस्, ताकि वास्तविक व्यक्तिहरूलाई जिम्मेवार बनाइयोस्। + +## जिम्मेवार एआईका उपकरणहरू + +माइक्रोसफ्टले [जिम्मेवार एआई टूलबक्स](https://github.com/microsoft/responsible-ai-toolbox) विकास गरेको छ जसमा उपकरणहरूको सेट समावेश छ: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* जिम्मेवार एआई ड्यासबोर्ड जसमा समावेश छ: + + - EconML - कारण विश्लेषणको लागि उपकरण, जसले के-भए प्रश्नहरूमा केन्द्रित गर्दछ + - DiCE - Counterfactual विश्लेषणको लागि उपकरण जसले मोडेलको निर्णयलाई प्रभाव पार्न आवश्यक विशेषताहरू परिवर्तन गर्न देख्न अनुमति दिन्छ + +एआई नैतिकताबारे थप जानकारीको लागि, कृपया [यो पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) हेर्नुहोस् जुन मेसिन लर्निङ पाठ्यक्रममा असाइनमेन्टहरू समावेश गर्दछ। + +## समीक्षा र आत्म अध्ययन + +जिम्मेवार एआईबारे थप जान्नको लागि यो [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) लिनुहोस्। + +## [Post-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/README.md b/translations/ne/lessons/README.md new file mode 100644 index 00000000..1ec02c7b --- /dev/null +++ b/translations/ne/lessons/README.md @@ -0,0 +1,17 @@ + +# अवलोकन + +![डुडलमा अवलोकन](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ne.png) + +> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) द्वारा + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/X-Extras/X1-MultiModal/README.md b/translations/ne/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..18b46b75 --- /dev/null +++ b/translations/ne/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# मल्टी-मोडल नेटवर्कहरू + +NLP कार्यहरू समाधान गर्न ट्रान्सफर्मर मोडेलहरूको सफलतापछि, त्यस्तै वा समान आर्किटेक्चरहरू कम्प्युटर भिजन कार्यहरूमा लागू गरिएको छ। भिजन र प्राकृतिक भाषाको क्षमता *जोड्ने* मोडेलहरू निर्माण गर्ने चासो बढ्दै गएको छ। यस्ता प्रयासहरू मध्ये एक OpenAI द्वारा गरिएको थियो, जसलाई CLIP र DALL.E भनिन्छ। + +## कन्फ्रास्टिभ इमेज प्रि-ट्रेनिङ (CLIP) + +CLIP को मुख्य विचार भनेको टेक्स्ट प्रम्प्टहरूलाई तस्बिरसँग तुलना गर्न र तस्बिरले प्रम्प्टसँग कत्तिको मेल खान्छ भनेर निर्धारण गर्न सक्षम हुनु हो। + +![CLIP आर्किटेक्चर](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ne.png) + +> *[यो ब्लग पोस्ट](https://openai.com/blog/clip/) बाट तस्बिर* + +मोडेल इन्टरनेटबाट प्राप्त तस्बिरहरू र तिनका क्याप्सनहरूमा प्रशिक्षित गरिएको छ। प्रत्येक ब्याचको लागि, हामी N जोडीहरू (तस्बिर, टेक्स्ट) लिन्छौं, र तिनीहरूलाई केही भेक्टर प्रतिनिधित्वहरूमा रूपान्तरण गर्छौं I, ..., T। + +त्यो प्रतिनिधित्वलाई एक-अर्कासँग मिलाइन्छ। लस फङ्क्सनले एक जोडी (जस्तै I र T) बीचको कोसाइन समानता अधिकतम बनाउन र अन्य सबै जोडीहरू बीचको कोसाइन समानता न्यूनतम बनाउन परिभाषित गरिएको छ। यही कारणले यो दृष्टिकोणलाई **कन्फ्रास्टिभ** भनिन्छ। + +CLIP मोडेल/लाइब्रेरी [OpenAI GitHub](https://github.com/openai/CLIP) बाट उपलब्ध छ। यो दृष्टिकोण [यो ब्लग पोस्ट](https://openai.com/blog/clip/) मा वर्णन गरिएको छ, र थप विवरणमा [यो पेपर](https://arxiv.org/pdf/2103.00020.pdf) मा। + +मोडेल प्रि-ट्रेन भएपछि, हामी यसलाई तस्बिरहरूको ब्याच र टेक्स्ट प्रम्प्टहरूको ब्याच दिन सक्छौं, र यसले हामीलाई सम्भावनाहरूको टेन्सर फर्काउँछ। CLIP विभिन्न कार्यहरूको लागि प्रयोग गर्न सकिन्छ: + +**इमेज क्लासिफिकेशन** + +मानौं हामीलाई तस्बिरहरूलाई बिरालो, कुकुर र मानिसहरू बीच वर्गीकरण गर्नुपर्छ। यस अवस्थामा, हामी मोडेललाई तस्बिर र टेक्स्ट प्रम्प्टहरूको श्रृंखला दिन सक्छौं: "*बिरालोको तस्बिर*", "*कुकुरको तस्बिर*", "*मानिसको तस्बिर*"। परिणामस्वरूप 3 सम्भावनाहरूको भेक्टरमा हामीले सबैभन्दा उच्च मान भएको इन्डेक्स चयन गर्नुपर्छ। + +![इमेज क्लासिफिकेशनको लागि CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ne.png) + +> *[यो ब्लग पोस्ट](https://openai.com/blog/clip/) बाट तस्बिर* + +**टेक्स्ट-आधारित इमेज खोज** + +हामी उल्टो पनि गर्न सक्छौं। यदि हामीसँग तस्बिरहरूको संग्रह छ भने, हामी यो संग्रहलाई मोडेलमा पास गर्न सक्छौं, र टेक्स्ट प्रम्प्ट - यसले हामीलाई दिइएको प्रम्प्टसँग सबैभन्दा मिल्दो तस्बिर दिन्छ। + +## ✍️ उदाहरण: [इमेज क्लासिफिकेशन र इमेज खोजको लागि CLIP प्रयोग गर्दै](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP लाई कार्यमा देख्न [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) नोटबुक खोल्नुहोस्। + +## VQGAN+CLIP प्रयोग गरेर तस्बिर निर्माण + +CLIP टेक्स्ट प्रम्प्टबाट **तस्बिर निर्माण** को लागि पनि प्रयोग गर्न सकिन्छ। यसलाई गर्नको लागि, हामीलाई **जेनरेटर मोडेल** चाहिन्छ जसले केही भेक्टर इनपुटको आधारमा तस्बिरहरू निर्माण गर्न सक्षम हुनेछ। यस्ता मोडेलहरू मध्ये एकलाई [VQGAN](https://compvis.github.io/taming-transformers/) (भेक्टर-क्वान्टाइज्ड GAN) भनिन्छ। + +VQGAN को मुख्य विचारहरू, जसले यसलाई साधारण [GAN](../../4-ComputerVision/10-GANs/README.md) बाट फरक बनाउँछ, निम्न छन्: +* तस्बिर बनाउने सन्दर्भ-समृद्ध दृश्य भागहरूको अनुक्रम उत्पन्न गर्न अटोरेग्रेसिभ ट्रान्सफर्मर आर्किटेक्चरको प्रयोग। ती दृश्य भागहरू [CNN](../../4-ComputerVision/07-ConvNets/README.md) द्वारा सिकाइन्छ। +* उप-तस्बिर डिस्क्रिमिनेटरको प्रयोग, जसले तस्बिरका भागहरू "वास्तविक" वा "नक्कली" हुन् भनेर पत्ता लगाउँछ (पारम्परिक GAN मा "सबै-वा-कुनै पनि होइन" दृष्टिकोणको विपरीत)। + +VQGAN को बारेमा थप जान्न [Taming Transformers](https://compvis.github.io/taming-transformers/) वेबसाइटमा जानुहोस्। + +VQGAN र पारम्परिक GAN बीचको महत्त्वपूर्ण भिन्नता भनेको पछिल्लोले कुनै पनि इनपुट भेक्टरबाट राम्रो तस्बिर उत्पादन गर्न सक्छ, जबकि VQGAN ले सुसंगत तस्बिर उत्पादन गर्न सक्दैन। त्यसैले, हामीले तस्बिर निर्माण प्रक्रियालाई थप मार्गदर्शन गर्न आवश्यक छ, र त्यो CLIP प्रयोग गरेर गर्न सकिन्छ। + +![VQGAN+CLIP आर्किटेक्चर](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ne.png) + +टेक्स्ट प्रम्प्टसँग मेल खाने तस्बिर निर्माण गर्न, हामी केही र्यान्डम इन्कोडिङ भेक्टरबाट सुरु गर्छौं जुन VQGAN मार्फत पास गरिन्छ र तस्बिर उत्पादन गरिन्छ। त्यसपछि CLIP प्रयोग गरेर लस फङ्क्सन उत्पादन गरिन्छ जसले तस्बिर टेक्स्ट प्रम्प्टसँग कत्तिको मेल खान्छ भनेर देखाउँछ। त्यसपछि यो लसलाई न्यूनतम बनाउने लक्ष्य राखिन्छ, ब्याक प्रोपोगेसन प्रयोग गरेर इनपुट भेक्टर प्यारामिटरहरू समायोजन गरिन्छ। + +VQGAN+CLIP कार्यान्वयन गर्ने उत्कृष्ट लाइब्रेरी [Pixray](http://github.com/pixray/pixray) हो। + +![Pixray द्वारा उत्पादन गरिएको तस्बिर](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ne.png) | ![Pixray द्वारा उत्पादन गरिएको तस्बिर](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ne.png) | ![Pixray द्वारा उत्पादन गरिएको तस्बिर](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ne.png) +----|----|---- +प्रम्प्ट *साहित्यको युवा पुरुष शिक्षकको पुस्तकसहितको नजिकको वाटरकलर पोर्ट्रेट* बाट उत्पन्न तस्बिर | प्रम्प्ट *कम्प्युटर विज्ञानको युवा महिला शिक्षकको कम्प्युटरसहितको नजिकको तेल पोर्ट्रेट* बाट उत्पन्न तस्बिर | प्रम्प्ट *गणितको वृद्ध पुरुष शिक्षकको ब्ल्याकबोर्ड अगाडि नजिकको तेल पोर्ट्रेट* बाट उत्पन्न तस्बिर + +> **Artificial Teachers** संग्रहबाट तस्बिरहरू [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E GPT-3 को संस्करण हो जसलाई प्रम्प्टहरूबाट तस्बिरहरू निर्माण गर्न प्रशिक्षित गरिएको छ। यसलाई 12-अर्ब प्यारामिटरहरूसँग प्रशिक्षित गरिएको छ। + +CLIP भन्दा फरक, DALL-E ले टेक्स्ट र तस्बिरलाई एकल टोकनहरूको स्ट्रिमको रूपमा प्राप्त गर्दछ। त्यसैले, धेरै प्रम्प्टहरूबाट, तपाईं टेक्स्टको आधारमा तस्बिरहरू निर्माण गर्न सक्नुहुन्छ। + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 र 2 बीचको मुख्य भिन्नता भनेको यसले थप यथार्थपरक तस्बिरहरू र कला निर्माण गर्दछ। + +DALL-E द्वारा तस्बिर निर्माणका उदाहरणहरू: +![Pixray द्वारा उत्पादन गरिएको तस्बिर](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.ne.png) | ![Pixray द्वारा उत्पादन गरिएको तस्बिर](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.ne.png) | ![Pixray द्वारा उत्पादन गरिएको तस्बिर](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.ne.png) +----|----|---- +प्रम्प्ट *साहित्यको युवा पुरुष शिक्षकको पुस्तकसहितको नजिकको वाटरकलर पोर्ट्रेट* बाट उत्पन्न तस्बिर | प्रम्प्ट *कम्प्युटर विज्ञानको युवा महिला शिक्षकको कम्प्युटरसहितको नजिकको तेल पोर्ट्रेट* बाट उत्पन्न तस्बिर | प्रम्प्ट *गणितको वृद्ध पुरुष शिक्षकको ब्ल्याकबोर्ड अगाडि नजिकको तेल पोर्ट्रेट* बाट उत्पन्न तस्बिर + +## सन्दर्भहरू + +* VQGAN पेपर: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP पेपर: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेजलाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/sketchnotes/LICENSE.md b/translations/ne/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..7dfd62b3 --- /dev/null +++ b/translations/ne/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,171 @@ + +अट्रिब्युसन-शेयरअलाइक 4.0 अन्तर्राष्ट्रिय + +======================================================================= + +क्रिएटिभ कमन्स कर्पोरेशन ("क्रिएटिभ कमन्स") कानुनी फर्म होइन र कानुनी सेवा वा सल्लाह प्रदान गर्दैन। क्रिएटिभ कमन्स सार्वजनिक लाइसेन्सहरूको वितरणले वकिल-ग्राहक वा अन्य सम्बन्ध सिर्जना गर्दैन। क्रिएटिभ कमन्सले आफ्नो लाइसेन्सहरू र सम्बन्धित जानकारी "जस्ताको तस्तै" आधारमा उपलब्ध गराउँछ। क्रिएटिभ कमन्सले आफ्नो लाइसेन्स, तिनीहरूको सर्त र शर्त अन्तर्गत लाइसेन्स गरिएको कुनै पनि सामग्री, वा सम्बन्धित जानकारीको सम्बन्धमा कुनै ग्यारेन्टी प्रदान गर्दैन। क्रिएटिभ कमन्सले तिनीहरूको प्रयोगबाट उत्पन्न हुने क्षतिको लागि पूर्ण हदसम्म जिम्मेवारी अस्वीकार गर्दछ। + +क्रिएटिभ कमन्स सार्वजनिक लाइसेन्सहरूको प्रयोग + +क्रिएटिभ कमन्स सार्वजनिक लाइसेन्सहरूले सिर्जनाकर्ता र अन्य अधिकारधारीहरूलाई मूल कृतिहरू र अन्य सामग्रीहरू साझा गर्नका लागि एक मानक सर्त र शर्तहरूको सेट प्रदान गर्दछ, जुन प्रतिलिपि अधिकार र तलको सार्वजनिक लाइसेन्समा निर्दिष्ट केही अन्य अधिकारहरूको अधीनमा हुन्छ। तलका विचारहरू केवल जानकारीको उद्देश्यका लागि हुन्, पूर्ण छैनन्, र हाम्रो लाइसेन्सहरूको भाग बनाउँदैनन्। + + लाइसेन्स दिन चाहनेहरूका लागि विचारहरू: हाम्रो सार्वजनिक लाइसेन्सहरू + प्रतिलिपि अधिकार र केही अन्य अधिकारद्वारा प्रतिबन्धित सामग्रीलाई + सार्वजनिक रूपमा प्रयोग गर्न अनुमति दिनका लागि अधिकार प्राप्त + व्यक्तिहरूले प्रयोग गर्नका लागि बनाइएको हो। हाम्रो लाइसेन्सहरू + अपरिवर्तनीय छन्। लाइसेन्स दिन चाहनेहरूले लाइसेन्स लागू गर्नु अघि + यसको सर्त र शर्तहरू पढ्न र बुझ्नुपर्छ। लाइसेन्स दिन चाहनेहरूले + लाइसेन्स लागू गर्नु अघि आवश्यक सबै अधिकार सुरक्षित गर्नुपर्छ ताकि + सार्वजनिकले अपेक्षित रूपमा सामग्री पुनः प्रयोग गर्न सकून्। लाइसेन्स + दिन चाहनेहरूले लाइसेन्सको अधीनमा नपर्ने कुनै पनि सामग्री स्पष्ट रूपमा + चिन्हित गर्नुपर्छ। यसमा अन्य CC-लाइसेन्स गरिएको सामग्री, वा + प्रतिलिपि अधिकारको अपवाद वा सीमाको अधीनमा प्रयोग गरिएको सामग्री + समावेश छ। लाइसेन्स दिन चाहनेहरूका लागि थप विचारहरू: + wiki.creativecommons.org/Considerations_for_licensors + + सार्वजनिकका लागि विचारहरू: हाम्रो सार्वजनिक लाइसेन्सहरूको प्रयोग + गरेर, लाइसेन्स दिन चाहनेले निर्दिष्ट सर्त र शर्तहरूको अधीनमा + लाइसेन्स गरिएको सामग्री प्रयोग गर्न सार्वजनिकलाई अनुमति दिन्छ। + यदि लाइसेन्स दिन चाहनेको अनुमति कुनै कारणले आवश्यक छैन—उदाहरणका + लागि, कुनै लागू हुने अपवाद वा सीमाको कारण—त्यस अवस्थामा उक्त + प्रयोग लाइसेन्सद्वारा नियमन गरिएको हुँदैन। हाम्रो लाइसेन्सहरूले + केवल प्रतिलिपि अधिकार र केही अन्य अधिकारहरू अन्तर्गत अनुमति दिन्छ + जुन लाइसेन्स दिन चाहनेले प्रदान गर्न सक्ने अधिकार राख्छ। लाइसेन्स + गरिएको सामग्रीको प्रयोग अन्य कारणले प्रतिबन्धित हुन सक्छ, जस्तै + अन्य व्यक्तिहरूले सामग्रीमा प्रतिलिपि अधिकार वा अन्य अधिकार राखेका + कारण। लाइसेन्स दिन चाहनेले विशेष अनुरोध गर्न सक्दछन्, जस्तै सबै + परिवर्तनहरू चिन्हित वा वर्णन गर्न अनुरोध गर्नु। यद्यपि हाम्रो + लाइसेन्सद्वारा आवश्यक छैन, तपाईंलाई यस्ता अनुरोधहरू उचित भएमा + सम्मान गर्न प्रोत्साहित गरिन्छ। सार्वजनिकका लागि थप विचारहरू: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +क्रिएटिभ कमन्स अट्रिब्युसन-शेयरअलाइक 4.0 अन्तर्राष्ट्रिय सार्वजनिक लाइसेन्स + +लाइसेन्स गरिएको अधिकारहरू (तल परिभाषित गरिएको) प्रयोग गरेर, तपाईंले यस क्रिएटिभ कमन्स अट्रिब्युसन-शेयरअलाइक 4.0 अन्तर्राष्ट्रिय सार्वजनिक लाइसेन्स ("सार्वजनिक लाइसेन्स") को सर्त र शर्तहरू स्वीकार गर्न र पालना गर्न सहमति जनाउनुहुन्छ। यो सार्वजनिक लाइसेन्सलाई सम्झौता रूपमा व्याख्या गर्न सकिने हदसम्म, तपाईंलाई यी सर्त र शर्तहरूको स्वीकारोक्तिको आधारमा लाइसेन्स गरिएको अधिकारहरू प्रदान गरिएको छ, र लाइसेन्स दिन चाहनेले तपाईंलाई यी सर्त र शर्तहरूको अधीनमा लाइसेन्स गरिएको सामग्री उपलब्ध गराएर प्राप्त हुने लाभहरूको आधारमा यस्ता अधिकारहरू प्रदान गर्दछ। + +### खण्ड १ -- परिभाषाहरू। + + a. अनुकूलित सामग्री भन्नाले प्रतिलिपि अधिकार र समान अधिकारहरूको अधीनमा रहेको सामग्रीलाई जनाउँछ जुन लाइसेन्स गरिएको सामग्रीबाट व्युत्पन्न गरिएको वा आधारित छ र जसमा लाइसेन्स दिन चाहनेको प्रतिलिपि अधिकार र समान अधिकारहरूको अधीनमा अनुमति आवश्यक पर्ने तरिकामा लाइसेन्स गरिएको सामग्री अनुवाद, परिवर्तन, व्यवस्थापन, रूपान्तरण, वा अन्यथा संशोधित गरिएको छ। यस सार्वजनिक लाइसेन्सको उद्देश्यका लागि, जहाँ लाइसेन्स गरिएको सामग्री संगीत कृति, प्रदर्शन, वा ध्वनि रेकर्डिङ हो, त्यहाँ लाइसेन्स गरिएको सामग्रीलाई चलायमान छविसँग समय मिलाएर समायोजन गर्दा सधैं अनुकूलित सामग्री उत्पादन हुन्छ। + + b. अनुकूलकको लाइसेन्स भन्नाले तपाईंले यस सार्वजनिक लाइसेन्सको सर्त र शर्तहरूको अधीनमा अनुकूलित सामग्रीमा तपाईंको योगदानहरूमा तपाईंको प्रतिलिपि अधिकार र समान अधिकारहरू लागू गर्न प्रयोग गर्ने लाइसेन्सलाई जनाउँछ। + + c. BY-SA अनुकूल लाइसेन्स भन्नाले creativecommons.org/compatiblelicenses मा सूचीबद्ध लाइसेन्सलाई जनाउँछ, जसलाई क्रिएटिभ कमन्सले यस सार्वजनिक लाइसेन्सको मूलतः समकक्षको रूपमा अनुमोदन गरेको छ। + + d. प्रतिलिपि अधिकार र समान अधिकार भन्नाले प्रतिलिपि अधिकार र/वा प्रतिलिपि अधिकारसँग नजिकको सम्बन्ध भएका समान अधिकारहरूलाई जनाउँछ, जसमा प्रदर्शन, प्रसारण, ध्वनि रेकर्डिङ, र Sui Generis डाटाबेस अधिकारहरू समावेश छन्, अधिकारहरू कसरी लेबल गरिएको वा वर्गीकृत गरिएको छ भन्ने कुराको पर्वाह नगरी। यस सार्वजनिक लाइसेन्सको उद्देश्यका लागि, खण्ड २(b)(१)-(२) मा निर्दिष्ट अधिकारहरू प्रतिलिपि अधिकार र समान अधिकारहरू होइनन्। + + e. प्रभावकारी प्राविधिक उपायहरू भन्नाले ती उपायहरूलाई जनाउँछ, जसलाई उचित अधिकारको अभावमा, डिसेम्बर २०, १९९६ मा अपनाइएको WIPO प्रतिलिपि अधिकार सन्धिको धारा ११ अन्तर्गत दायित्वहरू पूरा गर्ने कानूनहरू र/वा समान अन्तर्राष्ट्रिय सम्झौताहरू अन्तर्गत परिक्रमा गर्न सकिँदैन। + + f. अपवादहरू र सीमाहरू भन्नाले प्रतिलिपि अधिकार र समान अधिकारहरूको अपवाद वा सीमालाई जनाउँछ जुन लाइसेन्स गरिएको सामग्रीको तपाईंको प्रयोगमा लागू हुन्छ। + + g. लाइसेन्स तत्वहरू भन्नाले क्रिएटिभ कमन्स सार्वजनिक लाइसेन्सको नाममा सूचीबद्ध लाइसेन्स विशेषताहरूलाई जनाउँछ। यस सार्वजनिक लाइसेन्सका लाइसेन्स तत्वहरू अट्रिब्युसन र शेयरअलाइक हुन्। + + h. लाइसेन्स गरिएको सामग्री भन्नाले लाइसेन्स दिन चाहनेले यस सार्वजनिक लाइसेन्स लागू गरेको कलात्मक वा साहित्यिक कृति, डाटाबेस, वा अन्य सामग्रीलाई जनाउँछ। + + i. लाइसेन्स गरिएको अधिकारहरू भन्नाले यस सार्वजनिक लाइसेन्सको सर्त र शर्तहरूको अधीनमा तपाईंलाई प्रदान गरिएका अधिकारहरूलाई जनाउँछ, जुन लाइसेन्स गरिएको सामग्रीको तपाईंको प्रयोगमा लागू हुने सबै प्रतिलिपि अधिकार र समान अधिकारहरूमा सीमित छन् र लाइसेन्स दिन चाहनेले लाइसेन्स प्रदान गर्न अधिकार राख्छ। + + j. लाइसेन्स दिन चाहने भन्नाले यस सार्वजनिक लाइसेन्स अन्तर्गत अधिकार प्रदान गर्ने व्यक्ति(हरू) वा संस्था(हरू)लाई जनाउँछ। + + k. साझा गर्नु भन्नाले लाइसेन्स गरिएको अधिकारहरूको अधीनमा अनुमति आवश्यक पर्ने कुनै पनि माध्यम वा प्रक्रियाद्वारा सामग्रीलाई सार्वजनिकलाई उपलब्ध गराउनलाई जनाउँछ, जस्तै प्रतिलिपि बनाउने, सार्वजनिक प्रदर्शन, सार्वजनिक प्रदर्शन, वितरण, प्रसार, सञ्चार, वा आयात, र सामग्रीलाई सार्वजनिकलाई उपलब्ध गराउनलाई जनाउँछ जसमा सार्वजनिकका सदस्यहरूले सामग्रीलाई उनीहरूले व्यक्तिगत रूपमा रोजेको स्थान र समयमा पहुँच गर्न सकून्। + + l. Sui Generis डाटाबेस अधिकार भन्नाले प्रतिलिपि अधिकार बाहेकका अधिकारहरूलाई जनाउँछ, जुन ११ मार्च १९९६ मा युरोपेली संसद र परिषदको निर्देशन ९६/९/EC द्वारा डाटाबेसहरूको कानुनी संरक्षणमा आधारित छ, संशोधित र/वा सफल भएको छ, साथै संसारभरि अन्य मूलतः समकक्ष अधिकारहरू। + + m. तपाईं भन्नाले यस सार्वजनिक लाइसेन्स अन्तर्गत लाइसेन्स गरिएको अधिकारहरू प्रयोग गर्ने व्यक्ति वा संस्थालाई जनाउँछ। तपाईंको अर्थसँग सम्बन्धित अर्थ छ। + +### खण्ड २ -- दायरा। + + a. लाइसेन्स अनुदान। + + १. यस सार्वजनिक लाइसेन्सको सर्त र शर्तहरूको अधीनमा, लाइसेन्स दिन चाहनेले तपाईंलाई लाइसेन्स गरिएको सामग्रीमा लाइसेन्स गरिएको अधिकारहरू प्रयोग गर्नका लागि विश्वव्यापी, रोयल्टी-रहित, गैर-सब-लाइसेन्सयोग्य, गैर-विशेष, अपरिवर्तनीय लाइसेन्स प्रदान गर्दछ: + + a. लाइसेन्स गरिएको सामग्रीलाई पूर्ण वा आंशिक रूपमा प्रतिलिपि बनाउने र साझा गर्ने; र + + b. अनुकूलित सामग्री उत्पादन गर्ने, प्रतिलिपि बनाउने, र साझा गर्ने। + + २. अपवादहरू र सीमाहरू। स्पष्टताको लागि, जहाँ अपवादहरू र सीमाहरू तपाईंको प्रयोगमा लागू हुन्छन्, यो सार्वजनिक लाइसेन्स लागू हुँदैन, र तपाईंलाई यसको सर्त र शर्तहरूको पालना गर्न आवश्यक छैन। + + ३. अवधि। यस सार्वजनिक लाइसेन्सको अवधि खण्ड ६(a) मा निर्दिष्ट गरिएको छ। + + ४. माध्यम र ढाँचाहरू; प्राविधिक संशोधनहरू अनुमति। लाइसेन्स दिन चाहनेले तपाईंलाई लाइसेन्स गरिएको अधिकारहरू सबै माध्यम र ढाँचाहरूमा प्रयोग गर्न अनुमति दिन्छ, चाहे अहिले ज्ञात हो वा पछि सिर्जना गरिएको हो, र यसलाई गर्न आवश्यक प्राविधिक संशोधनहरू गर्न अनुमति दिन्छ। लाइसेन्स दिन चाहनेले तपाईंलाई लाइसेन्स गरिएको अधिकारहरू प्रयोग गर्न आवश्यक प्राविधिक संशोधनहरू गर्नबाट रोक्न कुनै पनि अधिकार वा अधिकारको दाबी नगर्ने वा सहमति जनाउँछ। यस सार्वजनिक लाइसेन्सको उद्देश्यका लागि, यस खण्ड २(a)(४) द्वारा अधिकृत संशोधनहरू मात्र बनाउँदा कहिल्यै अनुकूलित सामग्री उत्पादन हुँदैन। + + ५. डाउनस्ट्रीम प्राप्तकर्ताहरू। + + a. लाइसेन्स दिन चाहनेको प्रस्ताव -- लाइसेन्स गरिएको सामग्री। लाइसेन्स गरिएको सामग्रीको प्रत्येक प्राप्तकर्ताले स्वतः लाइसेन्स दिन चाहनेबाट यस सार्वजनिक लाइसेन्सको सर्त र शर्तहरूको अधीनमा लाइसेन्स गरिएको अधिकारहरू प्रयोग गर्न प्रस्ताव प्राप्त गर्दछ। + + b. लाइसेन्स दिन चाहनेको थप प्रस्ताव -- अनुकूलित सामग्री। तपाईंबाट अनुकूलित सामग्रीको प्रत्येक प्राप्तकर्ताले स्वतः लाइसेन्स दिन चाहनेबाट अनुकूलित सामग्रीमा लाइसेन्स गरिएको अधिकारहरू प्रयोग गर्न प्रस्ताव प्राप्त गर्दछ जुन तपाईंले लागू गरेको अनुकूलकको लाइसेन्सको सर्तहरूको अधीनमा छ। + + c. कुनै डाउनस्ट्रीम प्रतिबन्धहरू छैनन्। तपाईंले लाइसेन्स गरिएको सामग्रीको कुनै पनि प्राप्तकर्ताले लाइसेन्स गरिएको अधिकारहरूको प्रयोगलाई प्रतिबन्धित गर्ने गरी कुनै पनि थप वा फरक सर्त वा शर्तहरू प्रस्ताव गर्न वा लागू गर्न सक्नुहुन्न। + + ६. समर्थन छैन। यस सार्वजनिक लाइसेन्समा केही पनि लाइसेन्स दिन चाहने वा अन्य व्यक्तिहरूलाई समर्थन, प्रायोजन, वा आधिकारिक स्थिति प्रदान गरिएको छ भन्ने दाबी गर्न अनुमति दिन्छ। + + b. अन्य अधिकारहरू। + + १. नैतिक अधिकारहरू, जस्तै अखण्डताको अधिकार, यस सार्वजनिक लाइसेन्स अन्तर्गत लाइसेन्स गरिएको छैन। +अधिकारहरू, त्यसपछि तपाईंको Sui Generis Database Rights भएको डाटाबेस (तर यसको व्यक्तिगत सामग्री होइन) Adapted Material हो, + +यसमा Section 3(b) को उद्देश्यका लागि पनि समावेश छ; र +c. यदि तपाईंले डाटाबेसको सम्पूर्ण वा ठूलो भागको सामग्री साझा गर्नुभयो भने Section 3(a) का सर्तहरू पालना गर्नुपर्छ। + +स्पष्टताको लागि, यो Section 4 ले तपाईंको दायित्वलाई पूरक बनाउँछ र प्रतिस्थापन गर्दैन जुन यो Public License अन्तर्गत Licensed Rights मा अन्य Copyright र Similar Rights समावेश छ। + + +Section 5 -- वारेन्टीको अस्वीकरण र दायित्वको सीमितता। + +a. यदि Licensor द्वारा अलग्गै Undertaken गरिएको छैन भने, सम्भव हदसम्म, Licensor ले Licensed Material लाई जस्ताको तस्तै र उपलब्ध रूपमा प्रदान गर्दछ, र Licensed Material सम्बन्धी कुनै पनि प्रकारको प्रतिनिधित्व वा वारेन्टी प्रदान गर्दैन, चाहे स्पष्ट, निहित, कानूनी, वा अन्य। यसमा, सीमितता बिना, शीर्षकको वारेन्टी, व्यापारयोग्यता, विशेष उद्देश्यको लागि उपयुक्तता, गैर-उल्लंघन, लुकेका वा अन्य दोषहरूको अनुपस्थिति, शुद्धता, वा त्रुटिहरूको उपस्थिति वा अनुपस्थिति, चाहे ज्ञात होस् वा पत्ता लगाउन सकिने होस्। जहाँ वारेन्टीको अस्वीकरण पूर्ण वा आंशिक रूपमा अनुमति छैन, यो अस्वीकरण तपाईंमा लागू नहुन सक्छ। + +b. सम्भव हदसम्म, कुनै पनि अवस्थामा Licensor तपाईंलाई कुनै पनि कानूनी सिद्धान्त (समेत, सीमितता बिना, लापरवाही) वा अन्यथा कुनै पनि प्रत्यक्ष, विशेष, अप्रत्यक्ष, आकस्मिक, परिणामस्वरूप, दण्डात्मक, उदाहरणीय, वा अन्य क्षति, लागत, खर्च, वा हानि, यो Public License वा Licensed Material को प्रयोगबाट उत्पन्न हुने, Licensor लाई यस्तो हानि, लागत, खर्च, वा क्षतिको सम्भावनाबारे जानकारी दिइएको भए पनि। जहाँ दायित्वको सीमितता पूर्ण वा आंशिक रूपमा अनुमति छैन, यो सीमितता तपाईंमा लागू नहुन सक्छ। + +c. माथि प्रदान गरिएको वारेन्टीको अस्वीकरण र दायित्वको सीमितता यस्तो तरिकामा व्याख्या गरिनुपर्छ जसले, सम्भव हदसम्म, सम्पूर्ण अस्वीकरण र सबै दायित्वको छूटको नजिकको व्याख्या गर्दछ। + + +Section 6 -- अवधि र समाप्ति। + +a. यो Public License यहाँ लाइसेन्स गरिएको Copyright र Similar Rights को अवधिका लागि लागू हुन्छ। तर, यदि तपाईंले यो Public License पालना गर्न असफल हुनुभयो भने, तपाईंको यो Public License अन्तर्गत अधिकार स्वतः समाप्त हुन्छ। + +b. जहाँ Section 6(a) अन्तर्गत Licensed Material प्रयोग गर्ने तपाईंको अधिकार समाप्त भएको छ, यो पुनःस्थापित हुन्छ: + +1. स्वतः त्यो मितिमा जब उल्लंघन सुधारिएको छ, यदि यो उल्लंघन पत्ता लगाएको 30 दिनभित्र सुधारिएको छ भने; वा +2. Licensor द्वारा स्पष्ट पुनःस्थापनामा। + +स्पष्टताको लागि, यो Section 6(b) ले Licensor लाई तपाईंको यो Public License उल्लंघनको लागि उपचार खोज्ने कुनै पनि अधिकारलाई असर गर्दैन। + +c. स्पष्टताको लागि, Licensor ले Licensed Material लाई अलग्गै सर्तहरू वा शर्तहरू अन्तर्गत प्रस्ताव गर्न वा Licensed Material को वितरण रोक्न सक्छ; तर, यसले यो Public License समाप्त गर्दैन। + +d. Section 1, 5, 6, 7, र 8 यो Public License को समाप्ति पछि पनि कायम रहन्छ। + + +Section 7 -- अन्य सर्तहरू र शर्तहरू। + +a. Licensor तपाईंले सञ्चार गरेका कुनै पनि अतिरिक्त वा फरक सर्तहरू वा शर्तहरूमा बाध्य हुनेछैन जबसम्म स्पष्ट रूपमा सहमति गरिएको छैन। + +b. Licensed Material सम्बन्धी कुनै पनि व्यवस्था, समझदारी, वा सम्झौता जुन यहाँ उल्लेख गरिएको छैन, यो Public License का सर्तहरू र शर्तहरूबाट अलग र स्वतन्त्र छ। + + +Section 8 -- व्याख्या। + +a. स्पष्टताको लागि, यो Public License ले Licensed Material को कुनै पनि प्रयोगलाई कम, सीमित, प्रतिबन्धित, वा सर्तहरू लगाउँदैन जुन यो Public License अन्तर्गत अनुमति बिना कानूनी रूपमा गर्न सकिन्छ। + +b. सम्भव हदसम्म, यदि यो Public License को कुनै पनि प्रावधान लागू गर्न असम्भव ठहरिन्छ भने, यो लागू गर्न आवश्यक न्यूनतम हदसम्म स्वतः सुधार गरिनेछ। यदि प्रावधान सुधार गर्न सकिँदैन भने, यो Public License बाट अलग गरिनेछ तर बाँकी सर्तहरू र शर्तहरूको लागू हुने क्षमतामा असर नगर्नेछ। + +c. यो Public License को कुनै पनि सर्त वा शर्तलाई छूट दिइनेछैन र कुनै पनि अनुपालन असफलता सहमति गरिनेछैन जबसम्म Licensor द्वारा स्पष्ट रूपमा सहमति गरिएको छैन। + +d. यो Public License मा केही पनि Licensor वा तपाईंलाई लागू हुने कुनै पनि विशेषाधिकार र प्रतिरक्षा, कानूनी प्रक्रियाहरूबाट, कुनै पनि क्षेत्राधिकार वा प्राधिकरणबाट, सीमितता वा छूटको रूपमा व्याख्या गर्दैन। + + +======================================================================= + +Creative Commons यसको सार्वजनिक लाइसेन्सहरूको पक्षधर होइन। तथापि, Creative Commons ले आफ्नो सार्वजनिक लाइसेन्सहरू सामग्रीमा लागू गर्न चयन गर्न सक्छ जुन यसले प्रकाशित गर्दछ र ती अवस्थामा “Licensor” मानिनेछ। Creative Commons सार्वजनिक लाइसेन्सहरूको पाठ CC0 Public Domain Dedication अन्तर्गत सार्वजनिक डोमेनमा समर्पित छ। सामग्री साझा गरिएको छ भनेर संकेत गर्ने सीमित उद्देश्यको लागि वा अन्यथाcreativecommons.org/policies मा प्रकाशित Creative Commons नीतिहरू अनुसार अनुमति दिइएको रूपमा बाहेक, Creative Commons ले "Creative Commons" ट्रेडमार्क वा Creative Commons को कुनै पनि अन्य ट्रेडमार्क वा लोगोको प्रयोगलाई यसको पूर्व लिखित सहमति बिना अनुमति दिँदैन, विशेष गरी, यसको सार्वजनिक लाइसेन्सहरूको कुनै पनि अनधिकृत संशोधन वा लाइसेन्स गरिएको सामग्रीको प्रयोग सम्बन्धी कुनै पनि अन्य व्यवस्था, समझदारी, वा सम्झौताहरूको सन्दर्भमा। स्पष्टताको लागि, यो अनुच्छेद सार्वजनिक लाइसेन्सहरूको भाग होइन। + +Creative Commons लाई creativecommons.org मा सम्पर्क गर्न सकिन्छ। + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/ne/lessons/sketchnotes/README.md b/translations/ne/lessons/sketchnotes/README.md new file mode 100644 index 00000000..7cda663d --- /dev/null +++ b/translations/ne/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +सबै पाठ्यक्रमका स्केच नोट्स यहाँबाट डाउनलोड गर्न सकिन्छ। + +🎨 सिर्जना गरिएको: टोमोमी इमुरा (ट्विटर: [@girlie_mac](https://twitter.com/girlie_mac), गिटहब: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**अस्वीकरण**: +यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं। \ No newline at end of file diff --git a/translations/pa/README.md b/translations/pa/README.md new file mode 100644 index 00000000..e14fc10b --- /dev/null +++ b/translations/pa/README.md @@ -0,0 +1,156 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# ਸ਼ੁਰੂਆਤੀ ਲਈ ਕ੍ਰਿਤਮ ਬੁੱਧੀ - ਇੱਕ ਪਾਠਕ੍ਰਮ + +|![ [(@girlie_mac)] ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਸਕੈਚਨੋਟ](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| ਸ਼ੁਰੂਆਤੀ ਲਈ AI - _[@girlie_mac](https://twitter.com/girlie_mac) ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਸਕੈਚਨੋਟ_ | + +**ਕ੍ਰਿਤਮ ਬੁੱਧੀ** (AI) ਦੀ ਦੁਨੀਆ ਦੀ ਖੋਜ ਕਰੋ ਸਾਡੇ 12 ਹਫ਼ਤਿਆਂ ਦੇ, 24 ਪਾਠਾਂ ਦੇ ਪਾਠਕ੍ਰਮ ਨਾਲ! ਇਸ ਵਿੱਚ ਵਿਹੰਗੀ ਪਾਠ, ਪ੍ਰਸ਼ਨੋਤਰੀ ਅਤੇ ਪ੍ਰਯੋਗਸ਼ਾਲਾਵਾਂ ਸ਼ਾਮਲ ਹਨ। ਪਾਠਕ੍ਰਮ ਸ਼ੁਰੂਆਤੀ ਲਈ ਅਨੁਕੂਲ ਹੈ ਅਤੇ TensorFlow ਅਤੇ PyTorch ਵਰਗੇ ਸੰਦਾਂ ਨਾਲ ਨਾਲ AI ਵਿੱਚ ਨੈਤਿਕਤਾ ਨੂੰ ਵੀ ਕਵਰ ਕਰਦਾ ਹੈ। + +## ਤੁਸੀਂ ਕੀ ਸਿੱਖੋਗੇ + +**[ਕੋਰਸ ਦਾ ਮਾਈਂਡਮੈਪ](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ: + +* ਕ੍ਰਿਤਮ ਬੁੱਧੀ ਦੇ ਵੱਖ-ਵੱਖ ਪਹੁੰਚਾਂ, ਜਿਸ ਵਿੱਚ **ਗਿਆਨ ਪ੍ਰਤੀਨਿਧੀ** ਅਤੇ ਤਰਕ ਨਾਲ "ਪੁਰਾਣਾ ਚੰਗਾ" ਪ੍ਰਤੀਕਾਤਮਕ ਪਹੁੰਚ ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)) ਸ਼ਾਮਲ ਹੈ। +* **ਨਿਊਰਲ ਨੈਟਵਰਕਸ** ਅਤੇ **ਡੀਪ ਲਰਨਿੰਗ**, ਜੋ ਆਧੁਨਿਕ AI ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਹਨ। ਅਸੀਂ ਇਨ੍ਹਾਂ ਮਹੱਤਵਪੂਰਨ ਵਿਸ਼ਿਆਂ ਦੇ ਪਿਛਲੇ ਸਿਧਾਂਤਾਂ ਨੂੰ ਦੋ ਸਭ ਤੋਂ ਲੋਕਪ੍ਰਿਯ ਫਰੇਮਵਰਕਸ - [TensorFlow](http://Tensorflow.org) ਅਤੇ [PyTorch](http://pytorch.org) ਵਿੱਚ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਰਸਾਵਾਂਗੇ। +* ਚਿੱਤਰਾਂ ਅਤੇ ਪਾਠ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ **ਨਿਊਰਲ ਆਰਕੀਟੈਕਚਰਸ**। ਅਸੀਂ ਹਾਲੀਆ ਮਾਡਲਾਂ ਨੂੰ ਕਵਰ ਕਰਾਂਗੇ ਪਰ ਸਟੇਟ-ਆਫ-ਦ-ਆਰਟ ਵਿੱਚ ਕੁਝ ਘਾਟ ਹੋ ਸਕਦੀ ਹੈ। +* ਘੱਟ ਪ੍ਰਸਿੱਧ AI ਪਹੁੰਚਾਂ, ਜਿਵੇਂ ਕਿ **ਜਨੈਟਿਕ ਐਲਗੋਰਿਥਮਸ** ਅਤੇ **ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮਸ**। + +ਜੋ ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਕਵਰ ਨਹੀਂ ਕਰਾਂਗੇ: + +> [ਇਸ ਕੋਰਸ ਲਈ ਸਾਰੇ ਵਾਧੂ ਸਰੋਤ ਸਾਡੇ Microsoft Learn ਕਲੈਕਸ਼ਨ ਵਿੱਚ ਲੱਭੋ](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **ਵਪਾਰ ਵਿੱਚ AI** ਦੀ ਵਰਤੋਂ ਦੇ ਕਾਰੋਬਾਰੀ ਕੇਸ। [ਵਪਾਰਕ ਉਪਭੋਗਤਾਵਾਂ ਲਈ AI ਦਾ ਪਰਿਚਯ](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) ਲਰਨਿੰਗ ਪਾਠਕ੍ਰਮ ਜਾਂ [AI ਬਿਜ਼ਨਸ ਸਕੂਲ](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), ਜੋ [INSEAD](https://www.insead.edu/) ਦੇ ਸਹਿਯੋਗ ਨਾਲ ਵਿਕਸਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਲੈਣ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। +* **ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ**, ਜੋ ਸਾਡੇ [ਸ਼ੁਰੂਆਤੀ ਲਈ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਪਾਠਕ੍ਰਮ](http://github.com/Microsoft/ML-for-Beginners) ਵਿੱਚ ਚੰਗੀ ਤਰ੍ਹਾਂ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ। +* **[ਕਾਗਨੀਟਿਵ ਸਰਵਿਸਿਜ਼](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਣਾਈ ਗਈ ਪ੍ਰਯੋਗਤਮਕ AI ਐਪਲੀਕੇਸ਼ਨ। ਇਸ ਲਈ, ਅਸੀਂ Microsoft Learn ਦੇ ਮੌਡਿਊਲਾਂ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ [ਦ੍ਰਿਸ਼](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI Service ਨਾਲ ਜਨਰੇਟਿਵ AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** ਅਤੇ ਹੋਰ। +* **ਕਲਾਉਡ ਫਰੇਮਵਰਕਸ** ਜਿਵੇਂ ਕਿ [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), ਜਾਂ [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)। [Azure Machine Learning ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਹੱਲ ਬਣਾਓ ਅਤੇ ਚਲਾਓ](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) ਅਤੇ [Azure Databricks ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਹੱਲ ਬਣਾਓ ਅਤੇ ਚਲਾਓ](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) ਲਰਨਿੰਗ ਪਾਠਕ੍ਰਮਾਂ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। +* **ਵਾਤਾਂਸ਼ੀ AI** ਅਤੇ **ਚੈਟ ਬੋਟਸ**। ਇੱਕ ਵੱਖਰਾ [ਵਾਤਾਂਸ਼ੀ AI ਹੱਲ ਬਣਾਓ](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) ਲਰਨਿੰਗ ਪਾਠਕ੍ਰਮ ਹੈ, ਅਤੇ ਤੁਸੀਂ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) ਨੂੰ ਹੋਰ ਵੇਰਵੇ ਲਈ ਵੀ ਦੇਖ ਸਕਦੇ ਹੋ। +* **ਡੀਪ ਗਣਿਤ** ਜੋ ਡੀਪ ਲਰਨਿੰਗ ਦੇ ਪਿਛਲੇ ਸਿਧਾਂਤਾਂ ਨੂੰ ਸਮਝਾਉਂਦੀ ਹੈ। ਇਸ ਲਈ, ਅਸੀਂ Ian Goodfellow, Yoshua Bengio ਅਤੇ Aaron Courville ਦੁਆਰਾ ਲਿਖੀ [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ, ਜੋ [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) 'ਤੇ ਆਨਲਾਈਨ ਵੀ ਉਪਲਬਧ ਹੈ। + +ਕਲਾਉਡ ਵਿੱਚ _AI_ ਦੇ ਵਿਸ਼ਿਆਂ ਲਈ ਹੌਲੀ ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ, ਤੁਸੀਂ [Azure 'ਤੇ ਕ੍ਰਿਤਮ ਬੁੱਧੀ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) ਲਰਨਿੰਗ ਪਾਠਕ੍ਰਮ ਲੈਣ ਦੀ ਸਿਫਾਰਸ਼ ਕਰ ਸਕਦੇ ਹੋ। + +# ਸਮੱਗਰੀ + +| | ਪਾਠ ਲਿੰਕ | PyTorch/Keras/TensorFlow | ਪ੍ਰਯੋਗਸ਼ਾਲਾ | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [ਕੋਰਸ ਸੈਟਅਪ](./lessons/0-course-setup/setup.md) | [ਆਪਣੇ ਵਿਕਾਸ ਵਾਤਾਵਰਣ ਨੂੰ ਸੈਟਅਪ ਕਰੋ](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI ਦਾ ਪਰਿਚਯ**](./lessons/1-Intro/README.md) | | | +| 01 | [AI ਦਾ ਇਤਿਹਾਸ ਅਤੇ ਪਰਿਚਯ](./lessons/1-Intro/README.md) | - | - | +| II | **ਪ੍ਰਤੀਕਾਤਮਕ AI** | +| 02 | [ਗਿਆਨ ਪ੍ਰਤੀਨਿਧੀ ਅਤੇ ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮ](./lessons/2-Symbolic/README.md) | [ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontology](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Concept Graph](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦਾ ਪਰਿਚਯ**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [ਪਰਸੈਪਟ੍ਰਾਨ](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [ਨੋਟਬੁੱਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [ਪ੍ਰਯੋਗਸ਼ਾਲਾ](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [ਮਲਟੀ-ਲੇਅਰਡ ਪਰਸੈਪਟ੍ਰਾਨ ਅਤੇ ਆਪਣਾ ਫਰੇਮਵਰਕ ਬਣਾਉਣਾ](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [ਨੋਟਬੁੱਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [ਪ੍ਰਯੋਗਸ਼ਾਲਾ](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [ਫਰੇਮਵਰਕਸ (PyTorch/TensorFlow) ਅਤੇ ਓਵਰਫਿਟਿੰਗ ਦਾ ਪਰਿਚਯ](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ਪ੍ਰਯੋਗਸ਼ਾਲਾ](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure 'ਤੇ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਖੋਜ ਕਰੋ](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦਾ ਪਰਿਚਯ। OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [ਨੋਟਬੁੱਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [ਪ੍ਰਯੋਗਸ਼ਾਲਾ](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN ਆਰਕੀਟੈਕਚਰਸ](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [ਪ੍ਰਯੋਗਸ਼ਾਲਾ](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨੈਟਵਰਕ ਅਤੇ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ](./lessons/4-ComputerVision/08-TransferLearning/README.md) ਅਤੇ [ਟ੍ਰੇਨਿੰਗ ਟ੍ਰਿਕਸ](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ਲੈਬ](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [ਆਟੋਇਨਕੋਡਰ ਅਤੇ VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [ਜਨਰੇਟਿਵ ਐਡਵਰਸਰੀਅਲ ਨੈਟਵਰਕ ਅਤੇ ਕਲਾਤਮਕ ਸਟਾਈਲ ਟ੍ਰਾਂਸਫਰ](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [ਲੈਬ](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ। U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [ਮਾਈਕਰੋਸਾਫਟ ਐਜ਼ੂਰ 'ਤੇ ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਖੋਜ ਕਰੋ](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [ਟੈਕਸਟ ਪ੍ਰਤੀਨਿਧਤਾ। Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [ਸੈਮੈਂਟਿਕ ਵਰਡ ਐਮਬੈਡਿੰਗ। Word2Vec ਅਤੇ GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [ਲੈਂਗਵੇਜ ਮਾਡਲਿੰਗ। ਆਪਣੇ ਐਮਬੈਡਿੰਗ ਟ੍ਰੇਨ ਕਰੋ](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [ਲੈਬ](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [ਰੀਕਰਨਟ ਨਿਊਰਲ ਨੈਟਵਰਕ](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [ਜਨਰੇਟਿਵ ਰੀਕਰਨਟ ਨੈਟਵਰਕ](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [ਲੈਬ](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ਟ੍ਰਾਂਸਫਾਰਮਰ। BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [ਨੇਮਡ ਐਂਟਿਟੀ ਰਿਕਗਨਿਸ਼ਨ](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [ਲੈਬ](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [ਵੱਡੇ ਭਾਸ਼ਾ ਮਾਡਲ, ਪ੍ਰਾਂਪਟ ਪ੍ਰੋਗਰਾਮਿੰਗ ਅਤੇ Few-Shot ਟਾਸਕ](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **ਹੋਰ AI ਤਕਨੀਕਾਂ** || | +| 21 | [ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [ਨੋਟਬੁੱਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [ਡੀਪ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [ਲੈਬ](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮ](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI ਨੈਤਿਕਤਾ** | | | +| 24 | [AI ਨੈਤਿਕਤਾ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰ AI](./lessons/7-Ethics/README.md) | [ਮਾਈਕਰੋਸਾਫਟ ਲਰਨ: ਜ਼ਿੰਮੇਵਾਰ AI ਸਿਧਾਂਤ](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **ਵਾਧੂ ਸਮੱਗਰੀ** | | | +| 25 | [ਮਲਟੀ-ਮੋਡਲ ਨੈਟਵਰਕ, CLIP ਅਤੇ VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [ਨੋਟਬੁੱਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## ਹਰ ਪਾਠ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ + +* ਪੜ੍ਹਨ ਲਈ ਪਹਿਲਾਂ ਦੀ ਸਮੱਗਰੀ +* ਚਲਾਉਣ ਯੋਗ Jupyter ਨੋਟਬੁੱਕ, ਜੋ ਅਕਸਰ ਫਰੇਮਵਰਕ (**PyTorch** ਜਾਂ **TensorFlow**) ਲਈ ਵਿਸ਼ੇਸ਼ ਹੁੰਦੇ ਹਨ। ਚਲਾਉਣ ਯੋਗ ਨੋਟਬੁੱਕ ਵਿੱਚ ਬਹੁਤ ਸਾਰਾ ਸਿਧਾਂਤਕ ਸਮੱਗਰੀ ਵੀ ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈ ਵਿਸ਼ੇ ਨੂੰ ਸਮਝਣ ਲਈ ਤੁਹਾਨੂੰ ਘੱਟੋ-ਘੱਟ ਨੋਟਬੁੱਕ ਦੇ ਇੱਕ ਸੰਸਕਰਣ (PyTorch ਜਾਂ TensorFlow) ਨੂੰ ਪੜ੍ਹਨਾ ਪਵੇਗਾ। +* ਕੁਝ ਵਿਸ਼ਿਆਂ ਲਈ ਉਪਲਬਧ **ਲੈਬਸ**, ਜੋ ਤੁਹਾਨੂੰ ਸਿੱਖੀ ਸਮੱਗਰੀ ਨੂੰ ਕਿਸੇ ਖਾਸ ਸਮੱਸਿਆ 'ਤੇ ਲਾਗੂ ਕਰਨ ਦਾ ਮੌਕਾ ਦਿੰਦੇ ਹਨ। +* ਕੁਝ ਭਾਗਾਂ ਵਿੱਚ [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) ਮਾਡਿਊਲਾਂ ਦੇ ਲਿੰਕ ਸ਼ਾਮਲ ਹਨ ਜੋ ਸੰਬੰਧਤ ਵਿਸ਼ਿਆਂ ਨੂੰ ਕਵਰ ਕਰਦੇ ਹਨ। + +## ਸ਼ੁਰੂਆਤ ਕਰਨਾ + +- ਅਸੀਂ ਤੁਹਾਡੀ ਡਿਵੈਲਪਮੈਂਟ ਵਾਤਾਵਰਣ ਸੈਟਅੱਪ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਇੱਕ [ਸੈਟਅੱਪ ਪਾਠ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) ਬਣਾਇਆ ਹੈ। +- ਸ਼ਿਕਸ਼ਕਾਂ ਲਈ, ਅਸੀਂ ਤੁਹਾਡੇ ਲਈ ਇੱਕ [ਕਰਿਕੁਲਮ ਸੈਟਅੱਪ ਪਾਠ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) ਵੀ ਬਣਾਇਆ ਹੈ! +- [VSCode ਜਾਂ Codepace ਵਿੱਚ ਕੋਡ ਚਲਾਉਣ ਦਾ ਤਰੀਕਾ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +ਇਹ ਕਦਮ ਫੋਲੋ ਕਰੋ: + +ਰਿਪੋਜ਼ਟਰੀ ਫੋਰਕ ਕਰੋ: ਇਸ ਪੇਜ ਦੇ ਸੱਜੇ-ਉੱਪਰਲੇ ਕੋਨੇ 'ਤੇ "Fork" ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ। + +ਰਿਪੋਜ਼ਟਰੀ ਕਲੋਨ ਕਰੋ: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +ਇਸ ਰਿਪੋ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਆਸਾਨੀ ਨਾਲ ਲੱਭਣ ਲਈ ਇਸਨੂੰ ਸਟਾਰ (🌟) ਕਰਨਾ ਨਾ ਭੁੱਲੋ। + +## ਹੋਰ ਸਿੱਖਣ ਵਾਲਿਆਂ ਨੂੰ ਮਿਲੋ + +ਸਾਡੇ [ਆਧਿਕਾਰਿਕ AI Discord ਸਰਵਰ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ ਤਾਂ ਜੋ ਇਸ ਕੋਰਸ ਨੂੰ ਕਰਨ ਵਾਲੇ ਹੋਰ ਸਿੱਖਣ ਵਾਲਿਆਂ ਨਾਲ ਮਿਲ ਸਕੋ ਅਤੇ ਸਹਾਇਤਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕੋ। + +ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਪ੍ਰੋਡਕਟ ਫੀਡਬੈਕ ਹੈ ਜਾਂ ਬਿਲਡਿੰਗ ਦੌਰਾਨ ਸਵਾਲ ਹਨ ਤਾਂ ਸਾਡੇ [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) 'ਤੇ ਜਾਓ। + +## ਪ੍ਰਸ਼ਨੋੱਤਰੀ +> **ਕੁਇਜ਼ਾਂ ਬਾਰੇ ਇੱਕ ਨੋਟ**: ਸਾਰੀਆਂ ਕੁਇਜ਼ਾਂ Quiz-app ਫੋਲਡਰ ਵਿੱਚ etc\quiz-app ਵਿੱਚ ਮੌਜੂਦ ਹਨ। ਇਹ ਪਾਠਾਂ ਵਿੱਚੋਂ ਲਿੰਕ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ। ਕੁਇਜ਼ ਐਪ ਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਜਾਂ Azure 'ਤੇ ਡਿਪਲੌਇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ; ਹਦਾਇਤਾਂ `quiz-app` ਫੋਲਡਰ ਵਿੱਚ ਦਿੱਤੀਆਂ ਗਈਆਂ ਹਨ। ਇਹ ਹੌਲੀ-ਹੌਲੀ ਸਥਾਨਕ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਅਨੁਵਾਦਿਤ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ। +## ਮਦਦ ਦੀ ਲੋੜ ਹੈ + +ਕੀ ਤੁਹਾਡੇ ਕੋਲ ਸੁਝਾਅ ਹਨ ਜਾਂ ਤੁਸੀਂ ਕੋਈ ਸ਼ਬਦ ਜਾਂ ਕੋਡ ਦੀ ਗਲਤੀ ਲੱਭੀ ਹੈ? ਇੱਕ ਇਸ਼ੂ ਰੇਜ਼ ਕਰੋ ਜਾਂ ਪੁਲ ਰਿਕਵੈਸਟ ਬਣਾਓ। + +## ਖਾਸ ਧੰਨਵਾਦ + +* **✍️ ਮੁੱਖ ਲੇਖਕ:** [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com), ਪੀਐਚਡੀ +* **🔥 ਸੰਪਾਦਕ:** [ਜੈਨ ਲੂਪਰ](https://twitter.com/jenlooper), ਪੀਐਚਡੀ +* **🎨 ਸਕੈਚਨੋਟ ਇਲਸਟ੍ਰੇਟਰ:** [ਤੋਮੋਮੀ ਇਮੁਰਾ](https://twitter.com/girlie_mac) +* **✅ ਕਵਿਜ ਬਣਾਉਣ ਵਾਲਾ:** [ਲਤੀਫਾ ਬੈਲੋ](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 ਮੁੱਖ ਯੋਗਦਾਨਕਰਤਾ:** [ਇਵਗੇਨੀ ਪਿਸ਼ਚਿਕ](https://github.com/Pe4enIks) + +## ਹੋਰ ਪਾਠਕ੍ਰਮ + +ਸਾਡੀ ਟੀਮ ਹੋਰ ਪਾਠਕ੍ਰਮ ਤਿਆਰ ਕਰਦੀ ਹੈ! ਜाँच ਕਰੋ: + +- [ਸ਼ੁਰੂਆਤੀ ਲਈ ਜਨਰੇਟਿਵ AI](https://aka.ms/genai-beginners) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ ਜਨਰੇਟਿਵ AI .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [JavaScript ਨਾਲ ਜਨਰੇਟਿਵ AI](https://github.com/microsoft/generative-ai-with-javascript) +- [Java ਨਾਲ ਜਨਰੇਟਿਵ AI](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ AI](https://aka.ms/ai-beginners) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ ਡਾਟਾ ਸਾਇੰਸ](https://aka.ms/datascience-beginners) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ ML](https://aka.ms/ml-beginners) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ ਸਾਇਬਰਸੁਰੱਖਿਆ](https://github.com/microsoft/Security-101) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ](https://aka.ms/webdev-beginners) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ IoT](https://aka.ms/iot-beginners) +- [ਸ਼ੁਰੂਆਤੀ ਲਈ XR ਡਿਵੈਲਪਮੈਂਟ](https://github.com/microsoft/xr-development-for-beginners) +- [Agentic ਵਰਤੋਂ ਲਈ GitHub Copilot ਵਿੱਚ ਨਿਪੁੰਨਤਾ](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [C#/.NET ਡਿਵੈਲਪਰਾਂ ਲਈ GitHub Copilot ਵਿੱਚ ਨਿਪੁੰਨਤਾ](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [ਆਪਣੇ Copilot ਅਡਵੈਂਚਰ ਦੀ ਚੋਣ ਕਰੋ](https://github.com/microsoft/CopilotAdventures) + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/SECURITY.md b/translations/pa/SECURITY.md new file mode 100644 index 00000000..ed49e3af --- /dev/null +++ b/translations/pa/SECURITY.md @@ -0,0 +1,49 @@ + +## ਸੁਰੱਖਿਆ + +ਮਾਈਕਰੋਸਾਫਟ ਆਪਣੇ ਸੌਫਟਵੇਅਰ ਉਤਪਾਦਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਦੀ ਸੁਰੱਖਿਆ ਨੂੰ ਗੰਭੀਰਤਾ ਨਾਲ ਲੈਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਸਾਡੇ GitHub ਸੰਸਥਾਵਾਂ ਰਾਹੀਂ ਪ੍ਰਬੰਧਿਤ ਸਾਰੇ ਸਰੋਤ ਕੋਡ ਰਿਪੋਜ਼ਿਟਰੀ ਸ਼ਾਮਲ ਹਨ, ਜਿਵੇਂ ਕਿ [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), ਅਤੇ [ਸਾਡੀਆਂ GitHub ਸੰਸਥਾਵਾਂ](https://opensource.microsoft.com/)। + +ਜੇ ਤੁਸੀਂ ਮੰਨਦੇ ਹੋ ਕਿ ਤੁਹਾਨੂੰ ਕਿਸੇ ਮਾਈਕਰੋਸਾਫਟ-ਮਾਲਕਾਨ ਵਾਲੇ ਰਿਪੋਜ਼ਿਟਰੀ ਵਿੱਚ ਸੁਰੱਖਿਆ ਦੀ ਕੋਈ ਕਮਜ਼ੋਰੀ ਮਿਲੀ ਹੈ ਜੋ [ਮਾਈਕਰੋਸਾਫਟ ਦੀ ਸੁਰੱਖਿਆ ਕਮਜ਼ੋਰੀ ਦੀ ਪਰਿਭਾਸ਼ਾ](https://aka.ms/opensource/security/definition) 'ਤੇ ਖਰੀ ਉਤਰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਅਨੁਸਾਰ ਸਾਨੂੰ ਇਸ ਬਾਰੇ ਸੂਚਿਤ ਕਰੋ। + +## ਸੁਰੱਖਿਆ ਮੁੱਦੇ ਰਿਪੋਰਟ ਕਰਨਾ + +**ਕਿਰਪਾ ਕਰਕੇ ਸੁਰੱਖਿਆ ਕਮਜ਼ੋਰੀਆਂ ਨੂੰ ਜਨਤਕ GitHub ਮੁੱਦਿਆਂ ਰਾਹੀਂ ਰਿਪੋਰਟ ਨਾ ਕਰੋ।** + +ਇਸ ਦੀ ਬਜਾਏ, ਕਿਰਪਾ ਕਰਕੇ ਮਾਈਕਰੋਸਾਫਟ ਸੁਰੱਖਿਆ ਜਵਾਬ ਕੇਂਦਰ (MSRC) ਨੂੰ [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) 'ਤੇ ਰਿਪੋਰਟ ਕਰੋ। + +ਜੇ ਤੁਸੀਂ ਲੌਗਇਨ ਕੀਤੇ ਬਿਨਾਂ ਜਮ੍ਹਾਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ [secure@microsoft.com](mailto:secure@microsoft.com) 'ਤੇ ਈਮੇਲ ਭੇਜੋ। ਜੇ ਸੰਭਵ ਹੋਵੇ, ਤਾਂ ਸਾਡੇ PGP ਕੁੰਜੀ ਨਾਲ ਆਪਣੇ ਸੁਨੇਹੇ ਨੂੰ ਇਨਕ੍ਰਿਪਟ ਕਰੋ; ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਨੂੰ [ਮਾਈਕਰੋਸਾਫਟ ਸੁਰੱਖਿਆ ਜਵਾਬ ਕੇਂਦਰ PGP ਕੁੰਜੀ ਪੰਨਾ](https://aka.ms/opensource/security/pgpkey) ਤੋਂ ਡਾਊਨਲੋਡ ਕਰੋ। + +ਤੁਹਾਨੂੰ 24 ਘੰਟਿਆਂ ਦੇ ਅੰਦਰ ਜਵਾਬ ਮਿਲਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਕਿਸੇ ਕਾਰਨ ਕਰਕੇ ਤੁਹਾਨੂੰ ਜਵਾਬ ਨਹੀਂ ਮਿਲਦਾ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਈਮੇਲ ਰਾਹੀਂ ਫਾਲੋ-ਅੱਪ ਕਰੋ ਕਿ ਸਾਨੂੰ ਤੁਹਾਡਾ ਮੂਲ ਸੁਨੇਹਾ ਮਿਲ ਗਿਆ ਹੈ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) 'ਤੇ ਜਾਓ। + +ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਕਰੋ (ਜਿੰਨੀ ਤੁਸੀਂ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦੇ ਹੋ) ਤਾਂ ਜੋ ਸਾਨੂੰ ਸੰਭਾਵਿਤ ਮੁੱਦੇ ਦੀ ਪ੍ਰਕਿਰਤੀ ਅਤੇ ਪੱਧਰ ਨੂੰ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇ: + + * ਮੁੱਦੇ ਦੀ ਕਿਸਮ (ਜਿਵੇਂ ਕਿ ਬਫਰ ਓਵਰਫਲੋ, SQL ਇੰਜੈਕਸ਼ਨ, ਕ੍ਰਾਸ-ਸਾਈਟ ਸਕ੍ਰਿਪਟਿੰਗ, ਆਦਿ) + * ਮੁੱਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਸਰੋਤ ਫਾਈਲ(ਜ਼) ਦੇ ਪੂਰੇ ਪਾਥ + * ਪ੍ਰਭਾਵਿਤ ਸਰੋਤ ਕੋਡ ਦਾ ਸਥਾਨ (ਟੈਗ/ਸ਼ਾਖਾ/ਕਮਿਟ ਜਾਂ ਸਿੱਧਾ URL) + * ਮੁੱਦੇ ਨੂੰ ਦੁਹਰਾਉਣ ਲਈ ਕੋਈ ਖਾਸ ਸੰਰਚਨਾ ਦੀ ਲੋੜ ਹੋਵੇ ਤਾਂ + * ਮੁੱਦੇ ਨੂੰ ਦੁਹਰਾਉਣ ਲਈ ਕਦਮ-ਦਰ-ਕਦਮ ਹਦਾਇਤਾਂ + * ਪ੍ਰੂਫ-ਆਫ-ਕੰਸੈਪਟ ਜਾਂ ਐਕਸਪਲੋਇਟ ਕੋਡ (ਜੇ ਸੰਭਵ ਹੋਵੇ) + * ਮੁੱਦੇ ਦਾ ਪ੍ਰਭਾਵ, ਜਿਸ ਵਿੱਚ ਇਹ ਵੀ ਸ਼ਾਮਲ ਹੈ ਕਿ ਹਮਲਾਵਰ ਇਸ ਮੁੱਦੇ ਦਾ ਫਾਇਦਾ ਕਿਵੇਂ ਚੁੱਕ ਸਕਦਾ ਹੈ + +ਇਹ ਜਾਣਕਾਰੀ ਸਾਨੂੰ ਤੁਹਾਡੀ ਰਿਪੋਰਟ ਨੂੰ ਜਲਦੀ ਤਰਜੀਹ ਦੇਣ ਵਿੱਚ ਮਦਦ ਕਰੇਗੀ। + +ਜੇ ਤੁਸੀਂ ਬੱਗ ਬਾਊਂਟੀ ਲਈ ਰਿਪੋਰਟ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਵਧੇਰੇ ਪੂਰੀ ਰਿਪੋਰਟਾਂ ਵਧੇਰੇ ਬਾਊਂਟੀ ਇਨਾਮ ਵਿੱਚ ਯੋਗਦਾਨ ਪਾ ਸਕਦੀਆਂ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਸਰਗਰਮ ਪ੍ਰੋਗਰਾਮਾਂ ਬਾਰੇ ਹੋਰ ਵੇਰਵੇ ਲਈ [ਮਾਈਕਰੋਸਾਫਟ ਬੱਗ ਬਾਊਂਟੀ ਪ੍ਰੋਗਰਾਮ](https://aka.ms/opensource/security/bounty) ਪੰਨੇ 'ਤੇ ਜਾਓ। + +## ਪਸੰਦੀਦਾ ਭਾਸ਼ਾਵਾਂ + +ਅਸੀਂ ਸਾਰੀਆਂ ਸੰਚਾਰਵਾਰਤਾਵਾਂ ਨੂੰ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰਨਾ ਪਸੰਦ ਕਰਦੇ ਹਾਂ। + +## ਨੀਤੀ + +ਮਾਈਕਰੋਸਾਫਟ [ਸੰਯੋਜਿਤ ਕਮਜ਼ੋਰੀ ਖੁਲਾਸਾ](https://aka.ms/opensource/security/cvd) ਦੇ ਸਿਧਾਂਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ। + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/etc/CODE_OF_CONDUCT.md b/translations/pa/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..87006488 --- /dev/null +++ b/translations/pa/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# ਮਾਈਕਰੋਸਾਫਟ ਓਪਨ ਸੋਰਸ ਕੋਡ ਆਫ ਕੰਡਕਟ + +ਇਸ ਪ੍ਰੋਜੈਕਟ ਨੇ [ਮਾਈਕਰੋਸਾਫਟ ਓਪਨ ਸੋਰਸ ਕੋਡ ਆਫ ਕੰਡਕਟ](https://opensource.microsoft.com/codeofconduct/) ਨੂੰ ਅਪਨਾਇਆ ਹੈ। + +ਸਰੋਤ: + +- [ਮਾਈਕਰੋਸਾਫਟ ਓਪਨ ਸੋਰਸ ਕੋਡ ਆਫ ਕੰਡਕਟ](https://opensource.microsoft.com/codeofconduct/) +- [ਮਾਈਕਰੋਸਾਫਟ ਕੋਡ ਆਫ ਕੰਡਕਟ ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ](https://opensource.microsoft.com/codeofconduct/faq/) +- ਸਵਾਲਾਂ ਜਾਂ ਚਿੰਤਾਵਾਂ ਲਈ [opencode@microsoft.com](mailto:opencode@microsoft.com) ਨਾਲ ਸੰਪਰਕ ਕਰੋ + +**ਅਸਵੀਕਾਰ:** +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੋਕਤਾ ਹੋ ਸਕਦੀ ਹੈ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/etc/CONTRIBUTING.md b/translations/pa/etc/CONTRIBUTING.md new file mode 100644 index 00000000..37933841 --- /dev/null +++ b/translations/pa/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# ਯੋਗਦਾਨ ਦੇਣਾ + +ਇਹ ਪ੍ਰੋਜੈਕਟ ਯੋਗਦਾਨ ਅਤੇ ਸੁਝਾਵਾਂ ਦਾ ਸਵਾਗਤ ਕਰਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਯੋਗਦਾਨ ਲਈ ਤੁਹਾਨੂੰ ਇੱਕ ਯੋਗਦਾਨਕਾਰ ਲਾਇਸੈਂਸ ਸਮਝੌਤਾ (CLA) ਨਾਲ ਸਹਿਮਤ ਹੋਣਾ ਪਵੇਗਾ, ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ ਇਹ ਘੋਸ਼ਣਾ ਕਰਦੇ ਹੋ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਸਾਡੇ ਨਾਲ ਆਪਣਾ ਯੋਗਦਾਨ ਸਾਂਝਾ ਕਰਨ ਦੇ ਅਧਿਕਾਰ ਹਨ ਅਤੇ ਤੁਸੀਂ ਸਾਨੂੰ ਇਸਨੂੰ ਵਰਤਣ ਦੇ ਅਧਿਕਾਰ ਦਿੰਦੇ ਹੋ। ਵਿਸਥਾਰ ਲਈ, https://cla.microsoft.com 'ਤੇ ਜਾਓ। + +ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਪੁਲ ਰਿਕਵੈਸਟ ਜਮ੍ਹਾਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਇੱਕ CLA-ਬੋਟ ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ ਇਹ ਨਿਰਧਾਰਤ ਕਰੇਗਾ ਕਿ ਕੀ ਤੁਹਾਨੂੰ CLA ਪ੍ਰਦਾਨ ਕਰਨ ਦੀ ਲੋੜ ਹੈ ਅਤੇ PR ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਸਜਾਵੇਗਾ (ਉਦਾਹਰਨ ਲਈ, ਲੇਬਲ, ਟਿੱਪਣੀ)। ਬਸ ਬੋਟ ਦੁਆਰਾ ਦਿੱਤੇ ਗਏ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ। ਤੁਹਾਨੂੰ ਸਿਰਫ ਇੱਕ ਵਾਰ ਸਾਰੇ ਰਿਪੋਜ਼ਿਟਰੀਜ਼ ਵਿੱਚ ਇਹ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ ਜੋ ਸਾਡੇ CLA ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। + +ਇਸ ਪ੍ਰੋਜੈਕਟ ਨੇ [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) ਨੂੰ ਅਪਨਾਇਆ ਹੈ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) ਵੇਖੋ ਜਾਂ [opencode@microsoft.com](mailto:opencode@microsoft.com) 'ਤੇ ਸੰਪਰਕ ਕਰੋ ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਹੋਰ ਸਵਾਲ ਜਾਂ ਟਿੱਪਣੀਆਂ ਹਨ। + +# ਯੋਗਦਾਨ ਲਈ ਖੋਜ ਰਹੇ ਹਾਂ + +ਅਸੀਂ ਇਸ ਸਮੇਂ ਹੇਠਾਂ ਦਿੱਤੇ ਵਿਸ਼ਿਆਂ 'ਤੇ ਯੋਗਦਾਨ ਲਈ ਸਰਗਰਮ ਤੌਰ 'ਤੇ ਖੋਜ ਕਰ ਰਹੇ ਹਾਂ: + +- [ ] ਡੀਪ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ 'ਤੇ ਸੈਕਸ਼ਨ ਲਿਖੋ +- [ ] ਓਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ 'ਤੇ ਸੈਕਸ਼ਨ + ਨੋਟਬੁੱਕ ਨੂੰ ਸੁਧਾਰੋ +- [ ] PyTorch Lightning (ਇਸ ਸੈਕਸ਼ਨ ਲਈ: [ਇੱਥੇ](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Named Entity Recognition 'ਤੇ ਸੈਕਸ਼ਨ + ਨਮੂਨੇ ਲਿਖੋ +- [ ] ਸਾਡੇ ਆਪਣੇ embeddings ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਨਮੂਨੇ ਬਣਾਓ (ਇਸ ਸੈਕਸ਼ਨ ਲਈ: [ਇੱਥੇ](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling)) + +**ਅਸਵੀਕਾਰਨ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/etc/Mindmap.md b/translations/pa/etc/Mindmap.md new file mode 100644 index 00000000..f5a56504 --- /dev/null +++ b/translations/pa/etc/Mindmap.md @@ -0,0 +1,85 @@ + +# AI + +## [AI ਦਾ ਪਰਿਚਯ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - AI ਦੀ ਪਰਿਭਾਸ਼ਾ + - AI ਦਾ ਇਤਿਹਾਸ + - AI ਦੇ ਪਹੁੰਚੇ ਹੋਏ ਤਰੀਕੇ + - ਟਾਪ-ਡਾਊਨ/ਸੰਕੇਤਕ + - ਬਾਟਮ-ਅੱਪ/ਨਿਊਰਲ + - ਇਵੋਲੂਸ਼ਨਰੀ + - ਸਿਨਰਜੈਟਿਕ / ਉਭਰਦਾ AI + - [ਮਾਈਕਰੋਸਾਫਟ AI ਬਿਜ਼ਨਸ ਸਕੂਲ](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [ਸੰਕੇਤਕ AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - ਗਿਆਨ ਪ੍ਰਸਤੁਤੀਕਰਨ + - [ਐਕਸਪਰਟ ਸਿਸਟਮ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [ਓਨਟੋਲੋਜੀਜ਼](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - ਸੈਮੈਂਟਿਕ ਵੈੱਬ + +## [ਨਿਊਰਲ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [ਪਰਸੈਪਟ੍ਰਾਨ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [ਮਲਟੀ-ਲੇਅਰਡ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [ਫ੍ਰੇਮਵਰਕਸ ਦਾ ਪਰਿਚਯ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [ਪਾਈਟਾਰਚ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [ਟੈਂਸਰਫਲੋ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [ਓਵਰਫਿਟਿੰਗ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - MS Learn 'ਤੇ + - [AI Fundamentals: ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਖੋਜ ਕਰੋ](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [ਪਾਈਟਾਰਚ ਨਾਲ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [ਟੈਂਸਰਫਲੋ ਨਾਲ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦਾ ਪਰਿਚਯ. ਓਪਨਸਿਵੀ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [ਕਨਵੋਲੂਸ਼ਨਲ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [CNN ਆਰਕੀਟੈਕਚਰ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [ਟ੍ਰੇਨਿੰਗ ਟ੍ਰਿਕਸ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [ਆਟੋਇੰਕੋਡਰ ਅਤੇ VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [ਜਨਰੇਟਿਵ ਐਡਵਰਸਰੀਅਲ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [ਸਟਾਈਲ ਟ੍ਰਾਂਸਫਰ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [ਸੈਗਮੈਂਟੇਸ਼ਨ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - MS Learn 'ਤੇ + - [AI Fundamentals: NLP ਦੀ ਖੋਜ ਕਰੋ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [ਪਾਈਟਾਰਚ ਨਾਲ NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [ਟੈਂਸਰਫਲੋ ਨਾਲ NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [ਟੈਕਸਟ ਪ੍ਰਸਤੁਤੀਕਰਨ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - ਬੈਗ ਆਫ ਵਰਡਸ + - TF/IDF + - [ਸੈਮੈਂਟਿਕ ਐਮਬੈਡਿੰਗ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - ਵਰਡ2ਵੈਕ + - ਗਲੋਵ + - [ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [ਰੀਕਰਨਟ ਨਿਊਰਲ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [ਜਨਰੇਟਿਵ ਰੀਕਰਨਟ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ਟ੍ਰਾਂਸਫਾਰਮਰ ਅਤੇ BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [ਨੇਮਡ ਐਂਟਿਟੀ ਰਿਕਗਨੀਸ਼ਨ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਅਤੇ GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## ਹੋਰ ਤਕਨੀਕਾਂ + - [ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [ਡੀਪ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [AI ਨੈਤਿਕਤਾ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [ਜਿੰਮੇਵਾਰ AI 'ਤੇ MS Learn](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## ਵਾਧੂ + - [ਮਲਟੀਮੋਡਲ ਨੈੱਟਵਰਕ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/etc/SUPPORT.md b/translations/pa/etc/SUPPORT.md new file mode 100644 index 00000000..a1cae4e2 --- /dev/null +++ b/translations/pa/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# ਸਹਾਇਤਾ + +## ਮਸਲੇ ਦਰਜ ਕਰਨ ਅਤੇ ਮਦਦ ਪ੍ਰਾਪਤ ਕਰਨ ਦਾ ਤਰੀਕਾ + +ਇਹ ਪ੍ਰੋਜੈਕਟ ਬੱਗਸ ਅਤੇ ਫੀਚਰ ਦੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਟ੍ਰੈਕ ਕਰਨ ਲਈ GitHub Issues ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਨਵੇਂ ਮਸਲੇ ਦਰਜ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਮੌਜੂਦਾ ਮਸਲਿਆਂ ਨੂੰ ਖੋਜੋ ਤਾਂ ਜੋ ਦੁਹਰਾਅ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕੇ। ਨਵੇਂ ਮਸਲਿਆਂ ਲਈ, ਆਪਣੇ ਬੱਗ ਜਾਂ ਫੀਚਰ ਦੀ ਬੇਨਤੀ ਨੂੰ ਇੱਕ ਨਵੇਂ Issue ਵਜੋਂ ਦਰਜ ਕਰੋ। + +ਇਸ ਪ੍ਰੋਜੈਕਟ ਦੀ ਵਰਤੋਂ ਬਾਰੇ ਮਦਦ ਅਤੇ ਸਵਾਲਾਂ ਲਈ, Discussion Boards ਦੀ ਵਰਤੋਂ ਕਰੋ। + +## Microsoft ਸਹਾਇਤਾ ਨੀਤੀ + +ਇਸ ਪ੍ਰੋਜੈਕਟ ਲਈ ਸਹਾਇਤਾ ਉਪਰੋਕਤ ਸਾਧਨਾਂ ਤੱਕ ਸੀਮਿਤ ਹੈ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਲਿਖਿਆ ਰੂਪ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/etc/TRANSLATIONS.md b/translations/pa/etc/TRANSLATIONS.md new file mode 100644 index 00000000..b6c375a6 --- /dev/null +++ b/translations/pa/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# ਪਾਠਾਂ ਦਾ ਅਨੁਵਾਦ ਕਰਕੇ ਯੋਗਦਾਨ ਦਿਓ + +ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਪਾਠਾਂ ਦੇ ਅਨੁਵਾਦਾਂ ਦਾ ਸਵਾਗਤ ਕਰਦੇ ਹਾਂ! + +## ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ + +ਹਰ ਪਾਠ ਫੋਲਡਰ ਅਤੇ ਪਾਠ ਪਰਿਚਯ ਫੋਲਡਰ ਵਿੱਚ ਅਨੁਵਾਦਿਤ ਮਾਰਕਡਾਊਨ ਫਾਈਲਾਂ ਸ਼ਾਮਲ ਹਨ। + +> ਧਿਆਨ ਦਿਓ, ਕਿਰਪਾ ਕਰਕੇ ਕੋਡ ਨਮੂਨਾ ਫਾਈਲਾਂ ਵਿੱਚ ਕੋਈ ਵੀ ਕੋਡ ਅਨੁਵਾਦ ਨਾ ਕਰੋ; ਸਿਰਫ README, ਅਸਾਈਨਮੈਂਟਸ, ਅਤੇ ਕਵਿਜ਼ ਨੂੰ ਹੀ ਅਨੁਵਾਦ ਕਰੋ। ਧੰਨਵਾਦ! + +ਅਨੁਵਾਦਿਤ ਫਾਈਲਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਨਾਂਕਰਨ ਰੂਪ-ਰੇਖਾ ਦਾ ਪਾਲਣ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ: + +**README._[language]_.md** + +ਜਿੱਥੇ _[language]_ ISO 639-1 ਮਾਪਦੰਡ ਅਨੁਸਾਰ ਦੋ ਅੱਖਰਾਂ ਦੀ ਭਾਸ਼ਾ ਦਾ ਸੰਕੇਤਕ ਹੈ (ਉਦਾਹਰਨ ਲਈ, `README.es.md` ਸਪੈਨਿਸ਼ ਲਈ ਅਤੇ `README.nl.md` ਡੱਚ ਲਈ)। + +**assignment._[language]_.md** + +README ਦੀ ਤਰ੍ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਅਸਾਈਨਮੈਂਟਸ ਦਾ ਵੀ ਅਨੁਵਾਦ ਕਰੋ। + +**ਕਵਿਜ਼** + +1. ਆਪਣੇ ਅਨੁਵਾਦ ਨੂੰ ਕਵਿਜ਼-ਐਪ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ, ਇੱਥੇ ਇੱਕ ਫਾਈਲ ਜੋੜ ਕੇ: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, ਸਹੀ ਨਾਂਕਰਨ ਰੂਪ-ਰੇਖਾ ਨਾਲ (en.json, fr.json)। **ਕਿਰਪਾ ਕਰਕੇ 'true' ਜਾਂ 'false' ਸ਼ਬਦਾਂ ਨੂੰ ਸਥਾਨਕਕਰਣ ਨਾ ਕਰੋ। ਧੰਨਵਾਦ!** + +2. ਕਵਿਜ਼-ਐਪ ਦੀ ਡ੍ਰੌਪਡਾਊਨ ਸੂਚੀ ਵਿੱਚ ਆਪਣੀ ਭਾਸ਼ਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ, ਜੋ App.vue ਫਾਈਲ ਵਿੱਚ ਹੈ। + +3. ਕਵਿਜ਼-ਐਪ ਦੀ [translations index.js ਫਾਈਲ](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) ਨੂੰ ਸੋਧੋ ਅਤੇ ਆਪਣੀ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰੋ। + +4. ਅੰਤ ਵਿੱਚ, ਆਪਣੇ ਅਨੁਵਾਦਿਤ README.md ਫਾਈਲਾਂ ਵਿੱਚ ਸਾਰੇ ਕਵਿਜ਼ ਲਿੰਕਾਂ ਨੂੰ ਸੋਧੋ ਤਾਂ ਜੋ ਉਹ ਸਿੱਧੇ ਤੁਹਾਡੇ ਅਨੁਵਾਦਿਤ ਕਵਿਜ਼ ਵੱਲ ਸੰਕੇਤ ਕਰਨ: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 ਨੂੰ https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id ਵਿੱਚ ਬਦਲੋ। + +**ਧੰਨਵਾਦ** + +ਅਸੀਂ ਤੁਹਾਡੇ ਯਤਨਾਂ ਦੀ ਸੱਚਮੁੱਚ ਕਦਰ ਕਰਦੇ ਹਾਂ! + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/etc/quiz-app/README.md b/translations/pa/etc/quiz-app/README.md new file mode 100644 index 00000000..3422874d --- /dev/null +++ b/translations/pa/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# ਕਵਿਜ਼ + +ਇਹ ਕਵਿਜ਼ AI ਕਰੀਕੁਲਮ ਲਈ ਲੈਕਚਰ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਦੇ ਕਵਿਜ਼ ਹਨ: https://aka.ms/ai-beginners + +## ਅਨੁਵਾਦਿਤ ਕਵਿਜ਼ ਸੈੱਟ ਸ਼ਾਮਲ ਕਰਨਾ + +ਕਵਿਜ਼ ਦਾ ਅਨੁਵਾਦ ਸ਼ਾਮਲ ਕਰਨ ਲਈ, `assets/translations` ਫੋਲਡਰਾਂ ਵਿੱਚ ਮਿਲਦੇ ਜੁਲਦੇ ਕਵਿਜ਼ ਸਟ੍ਰਕਚਰ ਬਣਾਓ। ਮੂਲ ਕਵਿਜ਼ `assets/translations/en` ਵਿੱਚ ਹਨ। ਕਵਿਜ਼ਾਂ ਨੂੰ ਪਾਠਾਂ ਅਨੁਸਾਰ ਕਈ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਗਿਣਤੀ ਸਹੀ ਕਵਿਜ਼ ਸੈਕਸ਼ਨ ਨਾਲ ਮਿਲਦੀ ਹੋਵੇ। ਇਸ ਕਰੀਕੁਲਮ ਵਿੱਚ ਕੁੱਲ 40 ਕਵਿਜ਼ ਹਨ, ਅਤੇ ਗਿਣਤੀ 0 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। + +ਅਨੁਵਾਦਾਂ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਅਨੁਵਾਦ ਫੋਲਡਰ ਵਿੱਚ `index.js` ਫਾਈਲ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ ਅਤੇ `en` ਵਿੱਚ ਦਿੱਤੇ ਗਏ ਰਿਵਾਜਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਿਆਂ ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ। + +`assets/translations` ਵਿੱਚ `index.js` ਫਾਈਲ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ ਅਤੇ ਨਵੀਆਂ ਅਨੁਵਾਦਿਤ ਫਾਈਲਾਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ। + +ਫਿਰ, ਇਸ ਐਪ ਵਿੱਚ `App.vue` ਵਿੱਚ ਡ੍ਰੌਪਡਾਊਨ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ ਅਤੇ ਆਪਣੀ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰੋ। ਸਥਾਨਕ ਭਾਸ਼ਾ ਦੇ ਸੰਕੇਤ ਨੂੰ ਆਪਣੀ ਭਾਸ਼ਾ ਦੇ ਫੋਲਡਰ ਦੇ ਨਾਮ ਨਾਲ ਮਿਲਾਓ। + +ਅੰਤ ਵਿੱਚ, ਅਨੁਵਾਦਿਤ ਪਾਠਾਂ ਵਿੱਚ ਸਾਰੇ ਕਵਿਜ਼ ਲਿੰਕਾਂ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ, ਜੇ ਉਹ ਮੌਜੂਦ ਹਨ, ਤਾਂ ਕਿ ਇਸ ਸਥਾਨਕਕਰਨ ਨੂੰ ਇੱਕ ਕਵੈਰੀ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਵੇ: ਉਦਾਹਰਨ ਲਈ `?loc=fr`। + +## ਪ੍ਰੋਜੈਕਟ ਸੈਟਅੱਪ + +``` +npm install +``` + +### ਵਿਕਾਸ ਲਈ ਕੰਪਾਇਲ ਅਤੇ ਹੌਟ-ਰੀਲੋਡ + +``` +npm run serve +``` + +### ਪ੍ਰੋਡਕਸ਼ਨ ਲਈ ਕੰਪਾਇਲ ਅਤੇ ਮਿਨੀਫਾਈ + +``` +npm run build +``` + +### ਫਾਈਲਾਂ ਨੂੰ ਲਿੰਟ ਅਤੇ ਠੀਕ ਕਰਦਾ ਹੈ + +``` +npm run lint +``` + +### ਸੰਰਚਨਾ ਨੂੰ ਕਸਟਮਾਈਜ਼ ਕਰੋ + +[ਸੰਰਚਨਾ ਸੰਬੰਧੀ ਰਿਫਰੈਂਸ](https://cli.vuejs.org/config/) ਵੇਖੋ। + +ਸ਼ੁਕਰੀਆ: ਇਸ ਕਵਿਜ਼ ਐਪ ਦੇ ਮੂਲ ਸੰਸਕਰਣ ਲਈ ਧੰਨਵਾਦ: https://github.com/arpan45/simple-quiz-vue + +## ਐਜ਼ਰ 'ਤੇ ਡਿਪਲੌਇੰਗ + +ਇੱਥੇ ਇੱਕ ਕਦਮ-ਦਰ-ਕਦਮ ਗਾਈਡ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਸ਼ੁਰੂਆਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗੀ: + +1. GitHub ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਫੋਰਕ ਕਰੋ +ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਤੁਹਾਡਾ ਸਟੈਟਿਕ ਵੈੱਬ ਐਪ ਕੋਡ ਤੁਹਾਡੇ GitHub ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਹੈ। ਇਸ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਫੋਰਕ ਕਰੋ। + +2. ਇੱਕ ਐਜ਼ਰ ਸਟੈਟਿਕ ਵੈੱਬ ਐਪ ਬਣਾਓ +- ਇੱਕ [ਐਜ਼ਰ ਖਾਤਾ](http://azure.microsoft.com) ਬਣਾਓ +- [ਐਜ਼ਰ ਪੋਰਟਲ](https://portal.azure.com) 'ਤੇ ਜਾਓ +- “Create a resource” 'ਤੇ ਕਲਿਕ ਕਰੋ ਅਤੇ “Static Web App” ਲਈ ਖੋਜ ਕਰੋ। +- “Create” 'ਤੇ ਕਲਿਕ ਕਰੋ। + +3. ਸਟੈਟਿਕ ਵੈੱਬ ਐਪ ਨੂੰ ਸੰਰਚਿਤ ਕਰੋ +- #### ਬੇਸਿਕਸ: + - ਸਬਸਕ੍ਰਿਪਸ਼ਨ: ਆਪਣੀ ਐਜ਼ਰ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਚੁਣੋ। + - ਰਿਸੋਰਸ ਗਰੁੱਪ: ਇੱਕ ਨਵਾਂ ਰਿਸੋਰਸ ਗਰੁੱਪ ਬਣਾਓ ਜਾਂ ਮੌਜੂਦਾ ਵਰਤੋ। + - ਨਾਮ: ਆਪਣੇ ਸਟੈਟਿਕ ਵੈੱਬ ਐਪ ਲਈ ਇੱਕ ਨਾਮ ਦਿਓ। + - ਖੇਤਰ: ਆਪਣੇ ਯੂਜ਼ਰਾਂ ਦੇ ਸਭ ਤੋਂ ਨੇੜੇ ਖੇਤਰ ਨੂੰ ਚੁਣੋ। + +- #### ਡਿਪਲੌਇਮੈਂਟ ਵੇਰਵੇ: + - ਸਰੋਤ: “GitHub” ਚੁਣੋ। + - GitHub ਖਾਤਾ: ਐਜ਼ਰ ਨੂੰ ਤੁਹਾਡੇ GitHub ਖਾਤੇ ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿਓ। + - ਸੰਗਠਨ: ਆਪਣਾ GitHub ਸੰਗਠਨ ਚੁਣੋ। + - ਰਿਪੋਜ਼ਟਰੀ: ਉਹ ਰਿਪੋਜ਼ਟਰੀ ਚੁਣੋ ਜਿਸ ਵਿੱਚ ਤੁਹਾਡਾ ਸਟੈਟਿਕ ਵੈੱਬ ਐਪ ਹੈ। + - ਸ਼ਾਖਾ: ਉਹ ਸ਼ਾਖਾ ਚੁਣੋ ਜਿਸ ਤੋਂ ਤੁਸੀਂ ਡਿਪਲੌਇ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। + +- #### ਬਿਲਡ ਵੇਰਵੇ: + - ਬਿਲਡ ਪ੍ਰੀਸੈਟਸ: ਉਹ ਫਰੇਮਵਰਕ ਚੁਣੋ ਜਿਸ ਨਾਲ ਤੁਹਾਡਾ ਐਪ ਬਣਾਇਆ ਗਿਆ ਹੈ (ਜਿਵੇਂ React, Angular, Vue, ਆਦਿ)। + - ਐਪ ਸਥਾਨ: ਉਹ ਫੋਲਡਰ ਦਰਸਾਓ ਜਿਸ ਵਿੱਚ ਤੁਹਾਡਾ ਐਪ ਕੋਡ ਹੈ (ਜਿਵੇਂ ਕਿ / ਜੇਕਰ ਇਹ ਰੂਟ ਵਿੱਚ ਹੈ)। + - API ਸਥਾਨ: ਜੇ ਤੁਹਾਡੇ ਕੋਲ API ਹੈ, ਤਾਂ ਇਸ ਦਾ ਸਥਾਨ ਦਰਸਾਓ (ਵਿਕਲਪਿਕ)। + - ਆਉਟਪੁੱਟ ਸਥਾਨ: ਉਹ ਫੋਲਡਰ ਦਰਸਾਓ ਜਿੱਥੇ ਬਿਲਡ ਆਉਟਪੁੱਟ ਤਿਆਰ ਹੁੰਦਾ ਹੈ (ਜਿਵੇਂ ਕਿ build ਜਾਂ dist)। + +4. ਸਮੀਖਿਆ ਕਰੋ ਅਤੇ ਬਣਾਓ +ਆਪਣੀ ਸੈਟਿੰਗ ਦੀ ਸਮੀਖਿਆ ਕਰੋ ਅਤੇ “Create” 'ਤੇ ਕਲਿਕ ਕਰੋ। ਐਜ਼ਰ ਜ਼ਰੂਰੀ ਸਰੋਤ ਸੈਟਅੱਪ ਕਰੇਗਾ ਅਤੇ ਤੁਹਾਡੇ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਇੱਕ GitHub Actions ਵਰਕਫਲੋ ਬਣਾਏਗਾ। + +5. GitHub Actions ਵਰਕਫਲੋ +ਐਜ਼ਰ ਤੁਹਾਡੇ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਸਵੈਚਾਲਿਤ ਤੌਰ 'ਤੇ ਇੱਕ GitHub Actions ਵਰਕਫਲੋ ਫਾਈਲ ਬਣਾਏਗਾ (.github/workflows/azure-static-web-apps-.yml)। ਇਹ ਵਰਕਫਲੋ ਬਿਲਡ ਅਤੇ ਡਿਪਲੌਇਮੈਂਟ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੰਭਾਲੇਗਾ। + +6. ਡਿਪਲੌਇਮੈਂਟ ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ +ਤੁਹਾਡੇ GitHub ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ “Actions” ਟੈਬ 'ਤੇ ਜਾਓ। +ਤੁਹਾਨੂੰ ਇੱਕ ਵਰਕਫਲੋ ਚਲਦਾ ਹੋਇਆ ਦਿਖਾਈ ਦੇਵੇਗਾ। ਇਹ ਵਰਕਫਲੋ ਤੁਹਾਡੇ ਸਟੈਟਿਕ ਵੈੱਬ ਐਪ ਨੂੰ ਐਜ਼ਰ 'ਤੇ ਬਿਲਡ ਅਤੇ ਡਿਪਲੌਇ ਕਰੇਗਾ। +ਜਦੋਂ ਵਰਕਫਲੋ ਪੂਰਾ ਹੋ ਜਾਵੇ, ਤੁਹਾਡਾ ਐਪ ਪ੍ਰਦੱਤ ਐਜ਼ਰ URL 'ਤੇ ਲਾਈਵ ਹੋਵੇਗਾ। + +### ਉਦਾਹਰਣ ਵਰਕਫਲੋ ਫਾਈਲ + +ਇੱਥੇ ਇੱਕ ਉਦਾਹਰਣ ਹੈ ਕਿ GitHub Actions ਵਰਕਫਲੋ ਫਾਈਲ ਕਿਵੇਂ ਲੱਗ ਸਕਦੀ ਹੈ: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### ਵਾਧੂ ਸਰੋਤ +- [ਐਜ਼ਰ ਸਟੈਟਿਕ ਵੈੱਬ ਐਪਸ ਡੌਕਯੂਮੈਂਟੇਸ਼ਨ](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions ਡੌਕਯੂਮੈਂਟੇਸ਼ਨ](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/0-course-setup/for-teachers.md b/translations/pa/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..26450daf --- /dev/null +++ b/translations/pa/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# ਸਿੱਖਿਆਕਾਰਾਂ ਲਈ + +ਕੀ ਤੁਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਨੂੰ ਆਪਣੇ ਕਲਾਸਰੂਮ ਵਿੱਚ ਵਰਤਣਾ ਚਾਹੋਗੇ? ਬੇਝਿਜਕ ਵਰਤੋ! + +ਅਸਲ ਵਿੱਚ, ਤੁਸੀਂ ਇਸਨੂੰ GitHub ਵਿੱਚ ਹੀ GitHub Classroom ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਰਤ ਸਕਦੇ ਹੋ। + +ਇਸ ਲਈ, ਇਸ ਰਿਪੋ ਨੂੰ ਫੋਰਕ ਕਰੋ। ਤੁਹਾਨੂੰ ਹਰ ਪਾਠ ਲਈ ਇੱਕ ਰਿਪੋ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੋਵੇਗੀ, ਇਸ ਲਈ ਤੁਹਾਨੂੰ ਹਰ ਫੋਲਡਰ ਨੂੰ ਇੱਕ ਵੱਖਰੇ ਰਿਪੋ ਵਿੱਚ ਕੱਢਣਾ ਪਵੇਗਾ। ਇਸ ਤਰ੍ਹਾਂ, [GitHub Classroom](https://classroom.github.com/classrooms) ਹਰ ਪਾਠ ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਚੁਣ ਸਕੇਗਾ। + +ਇਹ [ਪੂਰੀਆਂ ਹਦਾਇਤਾਂ](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ਤੁਹਾਨੂੰ ਦੱਸਣਗੀਆਂ ਕਿ ਆਪਣੇ ਕਲਾਸਰੂਮ ਨੂੰ ਕਿਵੇਂ ਸੈਟਅੱਪ ਕਰਨਾ ਹੈ। + +## ਰਿਪੋ ਨੂੰ ਜਿਵੇਂ ਹੈ ਤਿਵੇਂ ਵਰਤਣਾ + +ਜੇ ਤੁਸੀਂ ਇਸ ਰਿਪੋ ਨੂੰ ਇਸਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ ਵਿੱਚ ਹੀ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਬਿਨਾਂ GitHub Classroom ਦੀ ਵਰਤੋਂ ਕੀਤੇ, ਤਾਂ ਇਹ ਵੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਆਪਣੇ ਵਿਦਿਆਰਥੀਆਂ ਨਾਲ ਸੰਚਾਰ ਕਰਨਾ ਪਵੇਗਾ ਕਿ ਕਿਹੜੇ ਪਾਠ 'ਤੇ ਇਕੱਠੇ ਕੰਮ ਕਰਨਾ ਹੈ। + +ਆਨਲਾਈਨ ਫਾਰਮੈਟ (Zoom, Teams, ਜਾਂ ਹੋਰ) ਵਿੱਚ, ਤੁਸੀਂ ਕਵਿਜ਼ਾਂ ਲਈ ਬ੍ਰੇਕਆਉਟ ਰੂਮ ਬਣਾਉਣ ਦੀ ਯੋਜਨਾ ਬਣਾ ਸਕਦੇ ਹੋ, ਅਤੇ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਸਿੱਖਣ ਲਈ ਤਿਆਰ ਕਰਨ ਵਿੱਚ ਮਦਦ ਦੇ ਸਕਦੇ ਹੋ। ਫਿਰ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਕਵਿਜ਼ਾਂ ਲਈ ਸੱਦਾ ਦਿਓ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਜਵਾਬ 'issues' ਦੇ ਰੂਪ ਵਿੱਚ ਇੱਕ ਨਿਰਧਾਰਿਤ ਸਮੇਂ 'ਤੇ ਜਮ੍ਹਾਂ ਕਰਨ ਲਈ ਕਹੋ। ਤੁਸੀਂ ਇਹੀ ਤਰੀਕਾ ਅਸਾਈਨਮੈਂਟਾਂ ਨਾਲ ਵੀ ਅਪਣਾ ਸਕਦੇ ਹੋ, ਜੇ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਵਿਦਿਆਰਥੀ ਖੁੱਲ੍ਹੇ ਤੌਰ 'ਤੇ ਸਹਿਯੋਗੀ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਨ। + +ਜੇ ਤੁਸੀਂ ਇੱਕ ਹੋਰ ਨਿੱਜੀ ਫਾਰਮੈਟ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਆਪਣੇ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਕਹੋ ਕਿ ਪਾਠਕ੍ਰਮ ਨੂੰ ਪਾਠ ਦਰ ਪਾਠ ਆਪਣੇ GitHub ਰਿਪੋਜ਼ ਵਿੱਚ ਫੋਰਕ ਕਰਨ, ਜੋ ਕਿ ਨਿੱਜੀ ਰਿਪੋਜ਼ ਹੋਣ। ਅਤੇ ਤੁਹਾਨੂੰ ਪਹੁੰਚ ਦਿਓ। ਫਿਰ ਉਹ ਕਵਿਜ਼ਾਂ ਅਤੇ ਅਸਾਈਨਮੈਂਟਾਂ ਨੂੰ ਨਿੱਜੀ ਤੌਰ 'ਤੇ ਪੂਰਾ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਤੁਹਾਨੂੰ ਆਪਣੇ ਕਲਾਸਰੂਮ ਰਿਪੋ 'ਤੇ 'issues' ਰਾਹੀਂ ਜਮ੍ਹਾਂ ਕਰਵਾ ਸਕਦੇ ਹਨ। + +ਆਨਲਾਈਨ ਕਲਾਸਰੂਮ ਫਾਰਮੈਟ ਵਿੱਚ ਇਸਨੂੰ ਕੰਮਯੋਗ ਬਣਾਉਣ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਦੱਸੋ ਕਿ ਤੁਹਾਡੇ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਕੀ ਕੰਮ ਕਰਦਾ ਹੈ! + +## ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਆਪਣੀ ਰਾਏ ਦਿਓ + +ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਇਹ ਪਾਠਕ੍ਰਮ ਤੁਹਾਡੇ ਅਤੇ ਤੁਹਾਡੇ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਲਾਭਦਾਇਕ ਹੋਵੇ। ਕਿਰਪਾ ਕਰਕੇ ਡਿਸਕਸ਼ਨ ਬੋਰਡਾਂ ਵਿੱਚ ਸਾਨੂੰ ਆਪਣਾ ਫੀਡਬੈਕ ਦਿਓ! + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/0-course-setup/how-to-run.md b/translations/pa/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..a214e338 --- /dev/null +++ b/translations/pa/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# ਕੋਡ ਕਿਵੇਂ ਚਲਾਉਣਾ ਹੈ + +ਇਸ ਕੋਰਸ ਵਿੱਚ ਕਈ ਚਲਣਯੋਗ ਉਦਾਹਰਨਾਂ ਅਤੇ ਪ੍ਰਯੋਗਸ਼ਾਲਾਵਾਂ ਸ਼ਾਮਲ ਹਨ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਚਲਾਉਣਾ ਚਾਹੋਗੇ। ਇਹ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇਸ ਕੋਰਸ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਦਿੱਤੇ ਗਏ Jupyter Notebooks ਵਿੱਚ Python ਕੋਡ ਚਲਾਉਣ ਦੀ ਸਮਰੱਥਾ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਕੋਡ ਚਲਾਉਣ ਲਈ ਤੁਹਾਡੇ ਕੋਲ ਕਈ ਵਿਕਲਪ ਹਨ: + +## ਆਪਣੇ ਕੰਪਿਊਟਰ 'ਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚਲਾਓ + +ਕੋਡ ਨੂੰ ਆਪਣੇ ਕੰਪਿਊਟਰ 'ਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚਲਾਉਣ ਲਈ, ਤੁਹਾਡੇ ਕੋਲ Python ਦਾ ਕੋਈ ਸੰਸਕਰਣ ਇੰਸਟਾਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਮੈਂ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ **[miniconda](https://conda.io/en/latest/miniconda.html)** ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦਾ ਹਾਂ - ਇਹ ਇੱਕ ਹਲਕਾ ਇੰਸਟਾਲੇਸ਼ਨ ਹੈ ਜੋ ਵੱਖ-ਵੱਖ Python **ਵਰਚੁਅਲ ਇਨਵਾਇਰਮੈਂਟਸ** ਲਈ `conda` ਪੈਕੇਜ ਮੈਨੇਜਰ ਨੂੰ ਸਹਾਇਕ ਬਣਾਉਂਦਾ ਹੈ। + +Miniconda ਇੰਸਟਾਲ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਤੁਹਾਨੂੰ ਰਿਪੋਜ਼ਟਰੀ ਕਲੋਨ ਕਰਨੀ ਹੋਵੇਗੀ ਅਤੇ ਇਸ ਕੋਰਸ ਲਈ ਵਰਤਣ ਲਈ ਇੱਕ ਵਰਚੁਅਲ ਇਨਵਾਇਰਮੈਂਟ ਬਣਾਉਣਾ ਹੋਵੇਗਾ: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Python ਐਕਸਟੈਂਸ਼ਨ ਨਾਲ Visual Studio Code ਵਰਤਣਾ + +ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਇਸ ਕੋਰਸ ਨੂੰ [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) ਵਿੱਚ [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) ਨਾਲ ਖੋਲ੍ਹੋ। + +> **Note**: ਜਦੋਂ ਤੁਸੀਂ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਕਲੋਨ ਕਰਕੇ VS Code ਵਿੱਚ ਖੋਲ੍ਹਦੇ ਹੋ, ਤਾਂ ਇਹ ਤੁਹਾਨੂੰ Python ਐਕਸਟੈਂਸ਼ਨ ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰੇਗਾ। ਤੁਹਾਨੂੰ ਉਪਰ ਦਿੱਤੇ ਗਏ ਤਰੀਕੇ ਅਨੁਸਾਰ Miniconda ਵੀ ਇੰਸਟਾਲ ਕਰਨੀ ਪਵੇਗੀ। + +> **Note**: ਜੇਕਰ VS Code ਤੁਹਾਨੂੰ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਦੁਬਾਰਾ ਖੋਲ੍ਹਣ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਸਥਾਨਕ Python ਇੰਸਟਾਲੇਸ਼ਨ ਵਰਤਣ ਲਈ ਅਸਵੀਕਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। + +### ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ Jupyter ਵਰਤਣਾ + +ਤੁਸੀਂ ਆਪਣੇ ਕੰਪਿਊਟਰ 'ਤੇ ਬ੍ਰਾਊਜ਼ਰ ਤੋਂ ਸਿੱਧੇ Jupyter ਇਨਵਾਇਰਮੈਂਟ ਵੀ ਵਰਤ ਸਕਦੇ ਹੋ। ਦਰਅਸਲ, ਕਲਾਸਿਕ Jupyter ਅਤੇ Jupyter Hub ਦੋਵੇਂ ਆਟੋ-ਕੰਪਲੀਸ਼ਨ, ਕੋਡ ਹਾਈਲਾਈਟਿੰਗ ਆਦਿ ਨਾਲ ਕਾਫ਼ੀ ਸੁਵਿਧਾਜਨਕ ਵਿਕਾਸ ਵਾਤਾਵਰਣ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। + +ਸਥਾਨਕ ਤੌਰ 'ਤੇ Jupyter ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਕੋਰਸ ਦੀ ਡਾਇਰੈਕਟਰੀ 'ਤੇ ਜਾਓ ਅਤੇ ਇਹ ਚਲਾਓ: + +```bash +jupyter notebook +``` +ਜਾਂ +```bash +jupyterhub +``` +ਫਿਰ ਤੁਸੀਂ ਕਿਸੇ ਵੀ `.ipynb` ਫਾਈਲ 'ਤੇ ਜਾ ਸਕਦੇ ਹੋ, ਇਸਨੂੰ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ ਅਤੇ ਕੰਮ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ। + +### ਕੰਟੇਨਰ ਵਿੱਚ ਚਲਾਉਣਾ + +Python ਇੰਸਟਾਲੇਸ਼ਨ ਦਾ ਇੱਕ ਵਿਕਲਪ ਇਹ ਹੈ ਕਿ ਕੋਡ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਚਲਾਇਆ ਜਾਵੇ। ਕਿਉਂਕਿ ਸਾਡੀ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਇੱਕ ਵਿਸ਼ੇਸ਼ `.devcontainer` ਫੋਲਡਰ ਸ਼ਾਮਲ ਹੈ ਜੋ ਇਸ ਰਿਪੋਜ਼ਟਰੀ ਲਈ ਕੰਟੇਨਰ ਬਣਾਉਣ ਦੇ ਨਿਰਦੇਸ਼ ਦਿੰਦਾ ਹੈ, VS Code ਤੁਹਾਨੂੰ ਕੋਡ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਦੁਬਾਰਾ ਖੋਲ੍ਹਣ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰੇਗਾ। ਇਸ ਲਈ Docker ਇੰਸਟਾਲੇਸ਼ਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ, ਅਤੇ ਇਹ ਕੁਝ ਜਟਿਲ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਅਨੁਭਵੀ ਯੂਜ਼ਰਾਂ ਲਈ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ। + +## ਕਲਾਉਡ ਵਿੱਚ ਚਲਾਉਣਾ + +ਜੇਕਰ ਤੁਸੀਂ Python ਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਇੰਸਟਾਲ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ, ਅਤੇ ਤੁਹਾਡੇ ਕੋਲ ਕੁਝ ਕਲਾਉਡ ਸਰੋਤਾਂ ਦੀ ਪਹੁੰਚ ਹੈ - ਤਾਂ ਇੱਕ ਵਧੀਆ ਵਿਕਲਪ ਕਲਾਉਡ ਵਿੱਚ ਕੋਡ ਚਲਾਉਣਾ ਹੋਵੇਗਾ। ਇਸ ਲਈ ਕਈ ਤਰੀਕੇ ਹਨ: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** ਵਰਤਣਾ, ਜੋ GitHub 'ਤੇ ਤੁਹਾਡੇ ਲਈ ਬਣਾਇਆ ਗਿਆ ਇੱਕ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਹੈ, ਜੋ VS Code ਬ੍ਰਾਊਜ਼ਰ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ ਹੈ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ Codespaces ਦੀ ਪਹੁੰਚ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਸਿਰਫ **Code** ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰਕੇ Codespace ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਤੁਰੰਤ ਕੰਮ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ। +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** ਵਰਤਣਾ। [Binder](https://mybinder.org) ਇੱਕ ਮੁਫ਼ਤ ਕਲਾਉਡ ਸਰੋਤ ਹੈ ਜੋ ਤੁਹਾਡੇ ਵਰਗੇ ਲੋਕਾਂ ਲਈ GitHub 'ਤੇ ਕੁਝ ਕੋਡ ਟੈਸਟ ਕਰਨ ਲਈ ਉਪਲਬਧ ਹੈ। ਮੁੱਖ ਪੰਨੇ 'ਤੇ ਇੱਕ ਬਟਨ ਹੈ ਜੋ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ Binder ਵਿੱਚ ਖੋਲ੍ਹਣ ਲਈ ਹੈ - ਇਹ ਤੁਹਾਨੂੰ ਜਲਦੀ Binder ਸਾਈਟ 'ਤੇ ਲੈ ਜਾਵੇਗਾ, ਜੋ ਅਧਾਰਭੂਤ ਕੰਟੇਨਰ ਬਣਾਏਗਾ ਅਤੇ ਤੁਹਾਡੇ ਲਈ Jupyter ਵੈੱਬ ਇੰਟਰਫੇਸ ਸ਼ੁਰੂ ਕਰੇਗਾ। + +> **Note**: ਗਲਤ ਵਰਤੋਂ ਨੂੰ ਰੋਕਣ ਲਈ, Binder ਨੂੰ ਕੁਝ ਵੈੱਬ ਸਰੋਤਾਂ ਤੱਕ ਪਹੁੰਚ ਰੋਕੀ ਗਈ ਹੈ। ਇਹ ਕੁਝ ਕੋਡ ਨੂੰ ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਸਕਦਾ ਹੈ, ਜੋ ਜਨਤਕ ਇੰਟਰਨੈਟ ਤੋਂ ਮਾਡਲਾਂ ਅਤੇ/ਜਾਂ ਡਾਟਾਸੈਟ ਲਿਆਉਂਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਕੁਝ ਵੱਖਰੇ ਹੱਲ ਲੱਭਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, Binder ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੇ ਗਏ ਕੰਪਿਊਟ ਸਰੋਤ ਕਾਫ਼ੀ ਮੂਲਭੂਤ ਹਨ, ਇਸ ਲਈ ਖਾਸ ਕਰਕੇ ਬਾਅਦ ਦੇ ਜਟਿਲ ਪਾਠਾਂ ਵਿੱਚ ਟ੍ਰੇਨਿੰਗ ਧੀਮੀ ਹੋਵੇਗੀ। + +## GPU ਦੇ ਨਾਲ ਕਲਾਉਡ ਵਿੱਚ ਚਲਾਉਣਾ + +ਇਸ ਕੋਰਸ ਦੇ ਕੁਝ ਬਾਅਦ ਦੇ ਪਾਠਾਂ ਵਿੱਚ GPU ਸਹਾਇਤਾ ਤੋਂ ਕਾਫ਼ੀ ਲਾਭ ਹੋਵੇਗਾ, ਕਿਉਂਕਿ ਨਹੀਂ ਤਾਂ ਟ੍ਰੇਨਿੰਗ ਬਹੁਤ ਹੀ ਧੀਮੀ ਹੋਵੇਗੀ। ਕੁਝ ਵਿਕਲਪ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਅਪਣਾਉ ਸਕਦੇ ਹੋ, ਖਾਸ ਕਰਕੇ ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ਜਾਂ ਆਪਣੇ ਸੰਸਥਾਨ ਰਾਹੀਂ ਕਲਾਉਡ ਦੀ ਪਹੁੰਚ ਹੈ: + +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) ਬਣਾਓ ਅਤੇ ਇਸਨੂੰ Jupyter ਰਾਹੀਂ ਕਨੈਕਟ ਕਰੋ। ਫਿਰ ਤੁਸੀਂ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਸਿੱਧੇ ਮਸ਼ੀਨ 'ਤੇ ਕਲੋਨ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਸਿੱਖਣਾ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ। NC-ਸਿਰੀਜ਼ VMs ਵਿੱਚ GPU ਸਹਾਇਤਾ ਹੁੰਦੀ ਹੈ। + +> **Note**: ਕੁਝ ਸਬਸਕ੍ਰਿਪਸ਼ਨ, ਜਿਵੇਂ ਕਿ Azure for Students, ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ GPU ਸਹਾਇਤਾ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦੇ। ਤੁਹਾਨੂੰ ਤਕਨੀਕੀ ਸਹਾਇਤਾ ਬੇਨਤੀ ਰਾਹੀਂ ਵਾਧੂ GPU ਕੋਰਜ਼ ਦੀ ਬੇਨਤੀ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) ਬਣਾਓ ਅਤੇ ਫਿਰ ਉੱਥੇ ਨੋਟਬੁੱਕ ਫੀਚਰ ਵਰਤੋ। [ਇਹ ਵੀਡੀਓ](https://azure-for-academics.github.io/quickstart/azureml-papers/) ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ Azure ML ਨੋਟਬੁੱਕ ਵਿੱਚ ਕਿਵੇਂ ਕਲੋਨ ਕਰਨਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ। + +ਤੁਸੀਂ Google Colab ਵੀ ਵਰਤ ਸਕਦੇ ਹੋ, ਜੋ ਕੁਝ ਮੁਫ਼ਤ GPU ਸਹਾਇਤਾ ਦੇ ਨਾਲ ਆਉਂਦਾ ਹੈ, ਅਤੇ ਉੱਥੇ Jupyter Notebooks ਨੂੰ ਇੱਕ-ਇੱਕ ਕਰਕੇ ਅਪਲੋਡ ਕਰਕੇ ਚਲਾ ਸਕਦੇ ਹੋ। + +**ਅਸਵੀਕਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/0-course-setup/setup.md b/translations/pa/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..a568e137 --- /dev/null +++ b/translations/pa/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# ਇਸ ਕੋਰਸ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ + +## ਕੀ ਤੁਸੀਂ ਵਿਦਿਆਰਥੀ ਹੋ? + +ਹੇਠਾਂ ਦਿੱਤੇ ਸਰੋਤਾਂ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ: + +* [ਵਿਦਿਆਰਥੀ ਹੱਬ ਪੇਜ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) ਇਸ ਪੇਜ 'ਤੇ, ਤੁਹਾਨੂੰ ਸ਼ੁਰੂਆਤੀ ਸਰੋਤ, ਵਿਦਿਆਰਥੀ ਪੈਕਸ, ਅਤੇ ਮੁਫ਼ਤ ਸਰਟੀਫਿਕੇਟ ਵਾਊਚਰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਤਰੀਕੇ ਮਿਲਣਗੇ। ਇਹ ਇੱਕ ਪੇਜ ਹੈ ਜਿਸਨੂੰ ਤੁਸੀਂ ਬੁੱਕਮਾਰਕ ਕਰਨਾ ਚਾਹੋਗੇ ਅਤੇ ਸਮੇਂ-ਸਮੇਂ 'ਤੇ ਚੈੱਕ ਕਰਨਾ ਚਾਹੋਗੇ ਕਿਉਂਕਿ ਅਸੀਂ ਘੱਟੋ-ਘੱਟ ਮਹੀਨਾਵਾਰ ਸਮੱਗਰੀ ਬਦਲਦੇ ਰਹਿੰਦੇ ਹਾਂ। +* [ਮਾਈਕਰੋਸਾਫਟ ਵਿਦਿਆਰਥੀ ਲਰਨ ਐਮਬੈਸਡਰ](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) ਵਿਦਿਆਰਥੀਆਂ ਦੇ ਗਲੋਬਲ ਸਮੁਦਾਇ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ, ਇਹ ਮਾਈਕਰੋਸਾਫਟ ਵਿੱਚ ਤੁਹਾਡਾ ਰਸਤਾ ਹੋ ਸਕਦਾ ਹੈ। + +**ਵਿਦਿਆਰਥੀ**, ਇਸ ਕੋਰਸ ਨੂੰ ਵਰਤਣ ਦੇ ਕੁਝ ਤਰੀਕੇ ਹਨ। ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਸੀਂ ਸਿਰਫ਼ ਟੈਕਸਟ ਪੜ੍ਹ ਸਕਦੇ ਹੋ ਅਤੇ GitHub 'ਤੇ ਕੋਡ ਦੇਖ ਸਕਦੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਨੋਟਬੁੱਕ ਵਿੱਚ ਕੋਡ ਚਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ - [ਸਾਡੇ ਨਿਰਦੇਸ਼ ਪੜ੍ਹੋ](./etc/how-to-run.md), ਅਤੇ ਇਸ ਨੂੰ ਕਰਨ ਦੇ ਹੋਰ ਸੁਝਾਅ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) ਵਿੱਚ ਲੱਭੋ। + +> **Note**: [ਇਸ ਕੋਰਸ ਵਿੱਚ ਕੋਡ ਚਲਾਉਣ ਦੇ ਨਿਰਦੇਸ਼](./how-to-run.md) + +## ਸਵੈ-ਅਧਿਐਨ + +ਜੇ ਤੁਸੀਂ ਇਸ ਕੋਰਸ ਨੂੰ ਸਵੈ-ਅਧਿਐਨ ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ ਲੈਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਅਸੀਂ ਸੁਝਾਅ ਦਿੰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਪੂਰੇ ਰਿਪੋ ਨੂੰ ਆਪਣੇ GitHub ਅਕਾਊਂਟ 'ਤੇ ਫੋਰਕ ਕਰੋ ਅਤੇ ਆਪਣੇ ਆਪ ਜਾਂ ਇੱਕ ਸਮੂਹ ਨਾਲ ਅਭਿਆਸ ਪੂਰਾ ਕਰੋ: + +* ਲੈਕਚਰ ਤੋਂ ਪਹਿਲਾਂ ਕਵਿਜ਼ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। +* ਲੈਕਚਰ ਲਈ ਇੰਟਰੋ ਟੈਕਸਟ ਪੜ੍ਹੋ। +* ਜੇ ਲੈਕਚਰ ਵਿੱਚ ਵਾਧੂ ਨੋਟਬੁੱਕ ਹਨ, ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਪੜ੍ਹੋ ਅਤੇ ਕੋਡ ਚਲਾਓ। ਜੇ TensorFlow ਅਤੇ PyTorch ਦੋਨੋ ਨੋਟਬੁੱਕ ਦਿੱਤੇ ਗਏ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਇੱਕ 'ਤੇ ਧਿਆਨ ਦੇ ਸਕਦੇ ਹੋ - ਆਪਣਾ ਮਨਪਸੰਦ ਫਰੇਮਵਰਕ ਚੁਣੋ। +* ਨੋਟਬੁੱਕ ਵਿੱਚ ਅਕਸਰ ਕੁਝ ਚੁਣੌਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਕੋਡ ਵਿੱਚ ਕੁਝ ਬਦਲਾਅ ਕਰਨ ਦੀ ਲੋੜ ਪਾਉਂਦੀਆਂ ਹਨ। +* ਲੈਕਚਰ ਤੋਂ ਬਾਅਦ ਕਵਿਜ਼ ਲਵੋ। +* ਜੇ ਮੌਡਿਊਲ ਨਾਲ ਲੈਬ ਜੁੜੀ ਹੋਈ ਹੈ - ਅਸਾਈਨਮੈਂਟ ਪੂਰਾ ਕਰੋ। +* [ਚਰਚਾ ਬੋਰਡ](https://github.com/microsoft/AI-For-Beginners/discussions) 'ਤੇ ਜਾਓ "ਜਾਣਕਾਰੀ ਸਾਂਝੀ ਕਰਨ ਲਈ।" + +> ਅਗਲੇ ਅਧਿਐਨ ਲਈ, ਅਸੀਂ ਇਹ [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) ਮੌਡਿਊਲ ਅਤੇ ਲਰਨਿੰਗ ਪਾਥਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ। + +**ਅਧਿਆਪਕ**, ਅਸੀਂ [ਕੁਝ ਸੁਝਾਅ ਸ਼ਾਮਲ ਕੀਤੇ ਹਨ](/for-teachers.md) ਕਿ ਇਸ ਕੋਰਸ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ। + +--- + +## ਪੈਡਾਗੌਜੀ + +ਅਸੀਂ ਇਸ ਕੋਰਸ ਨੂੰ ਬਣਾਉਣ ਦੌਰਾਨ ਦੋ ਪੈਡਾਗੌਜੀਕਲ ਸਿਧਾਂਤਾਂ ਨੂੰ ਚੁਣਿਆ ਹੈ: ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਇਹ **ਪ੍ਰੋਜੈਕਟ-ਅਧਾਰਿਤ** ਹੈ ਅਤੇ ਇਹ **ਅਕਸਰ ਕਵਿਜ਼** ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। + +ਸਮੱਗਰੀ ਨੂੰ ਪ੍ਰੋਜੈਕਟਾਂ ਨਾਲ ਅਨੁਕੂਲ ਬਣਾਉਣ ਨਾਲ, ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਹੋਰ ਰੁਚਿਕਰ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਧਾਰਨਾਵਾਂ ਦੀ ਯਾਦਸ਼ਕਤੀ ਵਧਾਈ ਜਾਂਦੀ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕਲਾਸ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਘੱਟ-ਦਬਾਅ ਵਾਲਾ ਕਵਿਜ਼ ਵਿਦਿਆਰਥੀ ਨੂੰ ਵਿਸ਼ੇ ਨੂੰ ਸਿੱਖਣ ਦੀ ਨਿਯਤ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ, ਜਦਕਿ ਕਲਾਸ ਤੋਂ ਬਾਅਦ ਦੂਜਾ ਕਵਿਜ਼ ਹੋਰ ਯਾਦਸ਼ਕਤੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਕੋਰਸ ਲਚਕੀਲਾ ਅਤੇ ਮਨੋਰੰਜਕ ਬਣਾਇਆ ਗਿਆ ਸੀ ਅਤੇ ਇਸਨੂੰ ਪੂਰੇ ਜਾਂ ਅੰਸ਼ਿਕ ਤੌਰ 'ਤੇ ਲਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਪ੍ਰੋਜੈਕਟ ਛੋਟੇ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ ਅਤੇ 12-ਹਫ਼ਤੇ ਦੇ ਚੱਕਰ ਦੇ ਅੰਤ ਤੱਕ ਵਧਦੇ ਜਟਿਲ ਹੋ ਜਾਂਦੇ ਹਨ। + +> **ਕਵਿਜ਼ ਬਾਰੇ ਇੱਕ ਨੋਟ**: ਸਾਰੇ ਕਵਿਜ਼ [ਇਸ ਐਪ](https://red-field-0a6ddfd03.1.azurestaticapps.net/) ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ, ਕੁੱਲ 50 ਕਵਿਜ਼, ਹਰ ਇੱਕ ਵਿੱਚ ਤਿੰਨ ਪ੍ਰਸ਼ਨ। ਇਹ ਪਾਠਾਂ ਵਿੱਚੋਂ ਲਿੰਕ ਕੀਤੇ ਗਏ ਹਨ ਪਰ ਕਵਿਜ਼ ਐਪ ਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ; `etc/quiz-app` ਫੋਲਡਰ ਵਿੱਚ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ। + +## ਆਫਲਾਈਨ ਪਹੁੰਚ + +ਤੁਸੀਂ [Docsify](https://docsify.js.org/#/) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਆਫਲਾਈਨ ਚਲਾ ਸਕਦੇ ਹੋ। ਇਸ ਰਿਪੋ ਨੂੰ ਫੋਰਕ ਕਰੋ, [Docsify ਇੰਸਟਾਲ ਕਰੋ](https://docsify.js.org/#/quickstart) ਆਪਣੇ ਸਥਾਨਕ ਮਸ਼ੀਨ 'ਤੇ, ਅਤੇ ਫਿਰ ਇਸ ਰਿਪੋ ਦੇ ਰੂਟ ਫੋਲਡਰ ਵਿੱਚ, `docsify serve` ਟਾਈਪ ਕਰੋ। ਵੈਬਸਾਈਟ ਤੁਹਾਡੇ localhost 'ਤੇ ਪੋਰਟ 3000 'ਤੇ ਸਰਵ ਕੀਤੀ ਜਾਵੇਗੀ: `localhost:3000`। ਕੋਰਸ ਦਾ ਇੱਕ PDF [ਇਸ ਲਿੰਕ](../../../../../../../../../etc/pdf/readme.pdf) 'ਤੇ ਉਪਲਬਧ ਹੈ। + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/1-Intro/README.md b/translations/pa/lessons/1-Intro/README.md new file mode 100644 index 00000000..6b3b5610 --- /dev/null +++ b/translations/pa/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> ਚਿੱਤਰ [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com) ਦੁਆਰਾ + +ਜਿਵੇਂ ਜਿਵੇਂ ਸਮਾਂ ਬੀਤਦਾ ਗਿਆ, ਕੰਪਿਊਟਿੰਗ ਸਰੋਤ ਸਸਤੇ ਹੋ ਗਏ ਅਤੇ ਹੋਰ ਡਾਟਾ ਉਪਲਬਧ ਹੋਇਆ, ਇਸ ਲਈ ਨਿਊਰਲ ਨੈਟਵਰਕ ਪਹੁੰਚਾਂ ਨੇ ਕਈ ਖੇਤਰਾਂ ਵਿੱਚ ਮਨੁੱਖਾਂ ਨਾਲ ਮੁਕਾਬਲਾ ਕਰਨ ਵਿੱਚ ਸ਼ਾਨਦਾਰ ਪ੍ਰਦਰਸ਼ਨ ਦਿਖਾਇਆ, ਜਿਵੇਂ ਕਿ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਜਾਂ ਬੋਲਚਾਲ ਦੀ ਸਮਝ। ਪਿਛਲੇ ਦਹਾਕੇ ਵਿੱਚ, "ਕ੍ਰਿਤਰਿਮ ਬੁੱਧੀ" ਸ਼ਬਦ ਨੂੰ ਜ਼ਿਆਦਾਤਰ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦਾ ਪਰਿਆਏਵਾਚੀ ਮੰਨਿਆ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਜ਼ਿਆਦਾਤਰ AI ਸਫਲਤਾਵਾਂ ਜੋ ਅਸੀਂ ਸੁਣਦੇ ਹਾਂ, ਉਹ ਇਨ੍ਹਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹਨ। + +ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਪਹੁੰਚਾਂ ਕਿਵੇਂ ਬਦਲੀਆਂ, ਉਦਾਹਰਣ ਲਈ, ਸ਼ਤਰੰਜ ਖੇਡਣ ਵਾਲੇ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮ ਬਣਾਉਣ ਵਿੱਚ: + +* ਸ਼ੁਰੂਆਤੀ ਸ਼ਤਰੰਜ ਪ੍ਰੋਗਰਾਮ ਖੋਜ 'ਤੇ ਆਧਾਰਿਤ ਸਨ - ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਵਿਰੋਧੀ ਦੇ ਸੰਭਾਵਿਤ ਚਾਲਾਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਸੀ ਅਤੇ ਕੁਝ ਚਾਲਾਂ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਣ ਵਾਲੇ ਵਧੀਆ ਸਥਾਨ ਦੇ ਆਧਾਰ 'ਤੇ ਇੱਕ ਵਧੀਆ ਚਾਲ ਚੁਣਦਾ ਸੀ। ਇਸ ਨੇ [ਅਲਫਾ-ਬੀਟਾ ਪ੍ਰੂਨਿੰਗ](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) ਖੋਜ ਐਲਗੋਰਿਥਮ ਦੇ ਵਿਕਾਸ ਨੂੰ ਜਨਮ ਦਿੱਤਾ। +* ਖੋਜ ਰਣਨੀਤੀਆਂ ਖੇਡ ਦੇ ਅੰਤ ਵਿੱਚ ਚੰਗਾ ਕੰਮ ਕਰਦੀਆਂ ਹਨ, ਜਿੱਥੇ ਖੋਜ ਸਥਾਨ ਕੁਝ ਸੰਭਾਵਿਤ ਚਾਲਾਂ ਦੁਆਰਾ ਸੀਮਿਤ ਹੁੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਖੇਡ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ, ਖੋਜ ਸਥਾਨ ਬਹੁਤ ਵੱਡਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਐਲਗੋਰਿਥਮ ਨੂੰ ਮਨੁੱਖੀ ਖਿਡਾਰੀਆਂ ਦੇ ਮੌਜੂਦਾ ਮੈਚਾਂ ਤੋਂ ਸਿੱਖਣ ਦੁਆਰਾ ਸੁਧਾਰਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਅਗਲੇ ਪ੍ਰਯੋਗਾਂ ਨੇ [ਕੇਸ-ਅਧਾਰਿਤ ਤਰਕ](https://en.wikipedia.org/wiki/Case-based_reasoning) ਨੂੰ ਰੁਜ਼ਗਾਰ ਦਿੱਤਾ, ਜਿੱਥੇ ਪ੍ਰੋਗਰਾਮ ਮੌਜੂਦਾ ਸਥਿਤੀ ਦੇ ਨਾਲ ਬਹੁਤ ਹੀ ਮਿਲਦੇ ਜੁਲਦੇ ਕੇਸਾਂ ਨੂੰ ਗਿਆਨ ਅਧਾਰ ਵਿੱਚ ਲੱਭਦਾ ਸੀ। +* ਆਧੁਨਿਕ ਪ੍ਰੋਗਰਾਮ ਜੋ ਮਨੁੱਖੀ ਖਿਡਾਰੀਆਂ ਨੂੰ ਹਰਾਉਂਦੇ ਹਨ, ਨਿਊਰਲ ਨੈਟਵਰਕ ਅਤੇ [ਰਿਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ](https://en.wikipedia.org/wiki/Reinforcement_learning) 'ਤੇ ਆਧਾਰਿਤ ਹਨ, ਜਿੱਥੇ ਪ੍ਰੋਗਰਾਮ ਸਿਰਫ ਆਪਣੇ ਆਪ ਨਾਲ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਖੇਡ ਕੇ ਅਤੇ ਆਪਣੀਆਂ ਗਲਤੀਆਂ ਤੋਂ ਸਿੱਖ ਕੇ ਖੇਡਣਾ ਸਿੱਖਦੇ ਹਨ - ਬਿਲਕੁਲ ਮਨੁੱਖਾਂ ਦੀ ਤਰ੍ਹਾਂ। ਹਾਲਾਂਕਿ, ਇੱਕ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮ ਬਹੁਤ ਘੱਟ ਸਮੇਂ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀਆਂ ਖੇਡਾਂ ਖੇਡ ਸਕਦਾ ਹੈ ਅਤੇ ਇਸ ਲਈ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਸਿੱਖ ਸਕਦਾ ਹੈ। + +✅ AI ਦੁਆਰਾ ਖੇਡੀਆਂ ਗਈਆਂ ਹੋਰ ਖੇਡਾਂ ਬਾਰੇ ਕੁਝ ਖੋਜ ਕਰੋ। + +ਇਸੇ ਤਰ੍ਹਾਂ, ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ "ਬੋਲਣ ਵਾਲੇ ਪ੍ਰੋਗਰਾਮ" (ਜੋ ਟਿਊਰਿੰਗ ਟੈਸਟ ਪਾਸ ਕਰ ਸਕਦੇ ਹਨ) ਬਣਾਉਣ ਵੱਲ ਪਹੁੰਚ ਕਿਵੇਂ ਬਦਲੀ: + +* ਇਸ ਕਿਸਮ ਦੇ ਸ਼ੁਰੂਆਤੀ ਪ੍ਰੋਗਰਾਮ, ਜਿਵੇਂ ਕਿ [Eliza](https://en.wikipedia.org/wiki/ELIZA), ਬਹੁਤ ਹੀ ਸਧਾਰਨ ਵਿਆਕਰਣਕ ਨਿਯਮਾਂ ਅਤੇ ਇਨਪੁਟ ਵਾਕ ਨੂੰ ਇੱਕ ਸਵਾਲ ਵਿੱਚ ਦੁਬਾਰਾ ਬਣਾਉਣ 'ਤੇ ਆਧਾਰਿਤ ਸਨ। +* ਆਧੁਨਿਕ ਸਹਾਇਕ, ਜਿਵੇਂ ਕਿ Cortana, Siri ਜਾਂ Google Assistant, ਸਾਰੇ ਹਾਈਬ੍ਰਿਡ ਸਿਸਟਮ ਹਨ ਜੋ ਬੋਲਚਾਲ ਨੂੰ ਟੈਕਸਟ ਵਿੱਚ ਬਦਲਣ ਅਤੇ ਸਾਡੀ ਮੰਨਸ਼ਾ ਨੂੰ ਪਛਾਣਣ ਲਈ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ, ਅਤੇ ਫਿਰ ਜ਼ਰੂਰੀ ਕਾਰਵਾਈ ਕਰਨ ਲਈ ਕੁਝ ਤਰਕ ਜਾਂ ਸਪਸ਼ਟ ਐਲਗੋਰਿਥਮ ਨੂੰ ਰੁਜ਼ਗਾਰ ਦਿੰਦੇ ਹਨ। +* ਭਵਿੱਖ ਵਿੱਚ, ਅਸੀਂ ਉਮੀਦ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਡਾਇਲਾਗ ਨੂੰ ਆਪਣੇ ਆਪ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਿਊਰਲ-ਅਧਾਰਿਤ ਮਾਡਲ। ਹਾਲ ਹੀ ਦੇ GPT ਅਤੇ [Turing-NLG](https://turing.microsoft.com/) ਨਿਊਰਲ ਨੈਟਵਰਕ ਪਰਿਵਾਰ ਇਸ ਵਿੱਚ ਸ਼ਾਨਦਾਰ ਸਫਲਤਾ ਦਿਖਾਉਂਦੇ ਹਨ। + +> ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ ਦੁਆਰਾ ਚਿੱਤਰ, [ਫੋਟੋ](https://unsplash.com/photos/r8LmVbUKgns) ਮਰੀਨਾ ਅਬਰੋਸਿਮੋਵਾ ਦੁਆਰਾ [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## ਹਾਲੀਆ AI ਖੋਜ + +ਨਿਊਰਲ ਨੈਟਵਰਕ ਖੋਜ ਵਿੱਚ ਹਾਲੀਆ ਵੱਡੀ ਵਾਧਾ 2010 ਦੇ ਆਸਪਾਸ ਸ਼ੁਰੂ ਹੋਈ, ਜਦੋਂ ਵੱਡੇ ਜਨਤਕ ਡਾਟਾਸੈਟ ਉਪਲਬਧ ਹੋਣ ਲੱਗੇ। ਚਿੱਤਰਾਂ ਦਾ ਇੱਕ ਵੱਡਾ ਸੰਗ੍ਰਹਿ [ImageNet](https://en.wikipedia.org/wiki/ImageNet), ਜਿਸ ਵਿੱਚ ਲਗਭਗ 14 ਮਿਲੀਅਨ ਐਨੋਟੇਟ ਚਿੱਤਰ ਹਨ, ਨੇ [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) ਨੂੰ ਜਨਮ ਦਿੱਤਾ। + +![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> ਚਿੱਤਰ [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com) ਦੁਆਰਾ + +2012 ਵਿੱਚ, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) ਪਹਿਲੀ ਵਾਰ ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਵਿੱਚ ਵਰਤੀ ਗਈਆਂ, ਜਿਸ ਨਾਲ ਵਰਗੀਕਰਨ ਗਲਤੀਆਂ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਕਮੀ ਆਈ (ਲਗਭਗ 30% ਤੋਂ 16.4% ਤੱਕ)। 2015 ਵਿੱਚ, ਮਾਈਕਰੋਸਾਫਟ ਰਿਸਰਚ ਦੀ ResNet ਆਰਕੀਟੈਕਚਰ ਨੇ [ਮਨੁੱਖੀ-ਸਤਰ ਦੀ ਸ਼ੁੱਧਤਾ ਹਾਸਲ ਕੀਤੀ](https://doi.org/10.1109/ICCV.2015.123)। + +ਤਦ ਤੋਂ, ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੇ ਕਈ ਕੰਮਾਂ ਵਿੱਚ ਬਹੁਤ ਸਫਲ ਵਿਹਾਰ ਦਿਖਾਇਆ ਹੈ: + +--- + +ਸਾਲ | ਮਨੁੱਖੀ ਸਮਰੱਥਾ ਹਾਸਲ ਕੀਤੀ +-----|-------- +2015 | [ਚਿੱਤਰ ਵਰਗੀਕਰਨ](https://doi.org/10.1109/ICCV.2015.123) +2016 | [ਵਾਤਚੀਤ ਵਾਲੀ ਬੋਲਚਾਲ ਦੀ ਪਛਾਣ](https://arxiv.org/abs/1610.05256) +2018 | [ਆਟੋਮੈਟਿਕ ਮਸ਼ੀਨ ਅਨੁਵਾਦ](https://arxiv.org/abs/1803.05567) (ਚੀਨੀ ਤੋਂ ਅੰਗਰੇਜ਼ੀ) +2020 | [ਚਿੱਤਰ ਕੈਪਸ਼ਨਿੰਗ](https://arxiv.org/abs/2009.13682) + +ਪਿਛਲੇ ਕੁਝ ਸਾਲਾਂ ਵਿੱਚ, ਬਰਟ ਅਤੇ GPT-3 ਵਰਗੇ ਵੱਡੇ ਭਾਸ਼ਾ ਮਾਡਲਾਂ ਨਾਲ ਬਹੁਤ ਸਫਲਤਾਵਾਂ ਦੇਖੀਆਂ ਗਈਆਂ ਹਨ। ਇਹ ਜ਼ਿਆਦਾਤਰ ਇਸ ਗੱਲ ਕਰਕੇ ਹੋਇਆ ਕਿ ਬਹੁਤ ਸਾਰਾ ਆਮ ਟੈਕਸਟ ਡਾਟਾ ਉਪਲਬਧ ਹੈ ਜੋ ਸਾਨੂੰ ਮਾਡਲਾਂ ਨੂੰ ਟੈਕਸਟ ਦੀ ਬਣਤਰ ਅਤੇ ਅਰਥ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਲਈ ਸਿਖਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਉਨ੍ਹਾਂ ਨੂੰ ਆਮ ਟੈਕਸਟ ਸੰਗ੍ਰਹਿ 'ਤੇ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਉਨ੍ਹਾਂ ਮਾਡਲਾਂ ਨੂੰ ਹੋਰ ਵਿਸ਼ੇਸ਼ ਕੰਮਾਂ ਲਈ ਮਾਹਰ ਬਣਾਉਂਦਾ ਹੈ। ਅਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ ਬਾਅਦ ਵਿੱਚ [Natural Language Processing](../5-NLP/README.md) ਬਾਰੇ ਹੋਰ ਸਿੱਖਾਂਗੇ। + +## 🚀 ਚੁਣੌਤੀ + +ਇੰਟਰਨੈਟ ਦਾ ਦੌਰਾ ਕਰੋ ਅਤੇ ਇਹ ਨਿਰਧਾਰਤ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਵਿਚਾਰ ਵਿੱਚ, AI ਸਭ ਤੋਂ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਨਾਲ ਕਿੱਥੇ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਕੀ ਇਹ ਮੈਪਿੰਗ ਐਪ ਵਿੱਚ ਹੈ, ਜਾਂ ਕੋਈ ਬੋਲ-ਤੋਂ-ਟੈਕਸਟ ਸੇਵਾ ਜਾਂ ਕੋਈ ਵੀਡੀਓ ਗੇਮ? ਖੋਜ ਕਰੋ ਕਿ ਸਿਸਟਮ ਕਿਵੇਂ ਬਣਾਇਆ ਗਿਆ ਸੀ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +AI ਅਤੇ ML ਦੇ ਇਤਿਹਾਸ ਦੀ ਸਮੀਖਿਆ ਕਰੋ [ਇਸ ਪਾਠ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) ਨੂੰ ਪੜ੍ਹ ਕੇ। ਉਸ ਪਾਠ ਦੇ ਸਿਖੇਚਨੋਟ ਦੇ ਸਿਖਰ ਤੋਂ ਜਾਂ ਇਸ ਪਾਠ ਤੋਂ ਇੱਕ ਤੱਤ ਲਓ ਅਤੇ ਇਸ ਦੇ ਵਿਕਾਸ ਨੂੰ ਜਾਣਨ ਲਈ ਇਸ ਦੇ ਸੱਭਿਆਚਾਰਕ ਸੰਦਰਭ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਨਾਲ ਖੋਜ ਕਰੋ। + +**ਅਸਾਈਨਮੈਂਟ**: [Game Jam](assignment.md) + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/1-Intro/assignment.md b/translations/pa/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..660a365c --- /dev/null +++ b/translations/pa/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# ਗੇਮ ਜੈਮ + +ਗੇਮਜ਼ ਇੱਕ ਖੇਤਰ ਹਨ ਜੋ AI ਅਤੇ ML ਦੇ ਵਿਕਾਸ ਨਾਲ ਬਹੁਤ ਪ੍ਰਭਾਵਿਤ ਹੋਏ ਹਨ। ਇਸ ਅਸਾਈਨਮੈਂਟ ਵਿੱਚ, ਉਸ ਗੇਮ ਬਾਰੇ ਇੱਕ ਛੋਟਾ ਲੇਖ ਲਿਖੋ ਜੋ ਤੁਹਾਨੂੰ ਪਸੰਦ ਹੈ ਅਤੇ ਜੋ AI ਦੇ ਵਿਕਾਸ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਹੋਈ ਹੈ। ਇਹ ਗੇਮ ਕਾਫੀ ਪੁਰਾਣੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਤਾਂ ਜੋ ਕਈ ਤਰ੍ਹਾਂ ਦੇ ਕੰਪਿਊਟਰ ਪ੍ਰੋਸੈਸਿੰਗ ਸਿਸਟਮਾਂ ਦੁਆਰਾ ਪ੍ਰਭਾਵਿਤ ਹੋ ਸਕੇ। ਇੱਕ ਵਧੀਆ ਉਦਾਹਰਨ ਸ਼ਤਰੰਜ ਜਾਂ ਗੋ ਹੈ, ਪਰ ਵੀਡੀਓ ਗੇਮਜ਼ ਜਿਵੇਂ ਕਿ ਪੋਂਗ ਜਾਂ ਪੈਕ-ਮੈਨ ਨੂੰ ਵੀ ਦੇਖੋ। ਇੱਕ ਲੇਖ ਲਿਖੋ ਜੋ ਗੇਮ ਦੇ ਭੂਤਕਾਲ, ਵਰਤਮਾਨ, ਅਤੇ AI ਦੇ ਭਵਿੱਖ ਬਾਰੇ ਚਰਚਾ ਕਰੇ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/2-Symbolic/README.md b/translations/pa/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..8a91b20f --- /dev/null +++ b/translations/pa/lessons/2-Symbolic/README.md @@ -0,0 +1,124 @@ + +# ਗਿਆਨ ਪ੍ਰਸਤੁਤੀ ਅਤੇ ਮਾਹਿਰ ਪ੍ਰਣਾਲੀਆਂ + +![ਸੰਕੇਤਕ AI ਸਮੱਗਰੀ ਦਾ ਸਾਰ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pa.png) + +> ਸਕੈਚਨੋਟ [ਟੋਮੋਮੀ ਇਮੂਰਾ](https://twitter.com/girlie_mac) ਵੱਲੋਂ + +ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਦੀ ਖੋਜ ਦਾ ਅਧਾਰ ਗਿਆਨ ਦੀ ਖੋਜ 'ਤੇ ਹੈ, ਦੁਨੀਆ ਨੂੰ ਸਮਝਣ ਲਈ ਜਿਵੇਂ ਮਨੁੱਖ ਕਰਦੇ ਹਨ। ਪਰ ਇਹ ਕਿਵੇਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ? + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਪ੍ਰਸ਼ਨੋਤਰੀ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI ਦੇ ਸ਼ੁਰੂਆਤੀ ਦਿਨਾਂ ਵਿੱਚ, ਬੁੱਧੀਮਾਨ ਪ੍ਰਣਾਲੀਆਂ ਬਣਾਉਣ ਲਈ ਟੌਪ-ਡਾਊਨ ਪਹੁੰਚ (ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਚਰਚਾ ਕੀਤੀ ਗਈ) ਪ੍ਰਸਿੱਧ ਸੀ। ਇਹ ਵਿਚਾਰ ਸੀ ਕਿ ਲੋਕਾਂ ਤੋਂ ਗਿਆਨ ਨੂੰ ਮਸ਼ੀਨ-ਪੜ੍ਹਨਯੋਗ ਰੂਪ ਵਿੱਚ ਕੱਢਿਆ ਜਾਵੇ ਅਤੇ ਫਿਰ ਇਸਨੂੰ ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਵੇ। ਇਸ ਪਹੁੰਚ ਦਾ ਅਧਾਰ ਦੋ ਵੱਡੇ ਵਿਚਾਰਾਂ 'ਤੇ ਸੀ: + +* ਗਿਆਨ ਪ੍ਰਸਤੁਤੀ +* ਤਰਕ + +## ਗਿਆਨ ਪ੍ਰਸਤੁਤੀ + +ਸੰਕੇਤਕ AI ਦੇ ਮਹੱਤਵਪੂਰਨ ਵਿਚਾਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ **ਗਿਆਨ**। ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਗਿਆਨ ਨੂੰ *ਜਾਣਕਾਰੀ* ਜਾਂ *ਡਾਟਾ* ਤੋਂ ਵੱਖਰਾ ਕੀਤਾ ਜਾਵੇ। ਉਦਾਹਰਣ ਲਈ, ਕੋਈ ਕਹਿ ਸਕਦਾ ਹੈ ਕਿ ਕਿਤਾਬਾਂ ਵਿੱਚ ਗਿਆਨ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਕਿਤਾਬਾਂ ਪੜ੍ਹ ਕੇ ਕੋਈ ਮਾਹਿਰ ਬਣ ਸਕਦਾ ਹੈ। ਪਰ, ਕਿਤਾਬਾਂ ਵਿੱਚ ਜੋ ਹੁੰਦਾ ਹੈ, ਉਸਨੂੰ ਅਸਲ ਵਿੱਚ *ਡਾਟਾ* ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਕਿਤਾਬਾਂ ਪੜ੍ਹ ਕੇ ਅਤੇ ਇਸ ਡਾਟਾ ਨੂੰ ਸਾਡੇ ਸੰਸਾਰ ਮਾਡਲ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਕੇ ਅਸੀਂ ਇਸਨੂੰ ਗਿਆਨ ਵਿੱਚ ਬਦਲ ਦਿੰਦੇ ਹਾਂ। + +> ✅ **ਗਿਆਨ** ਉਹ ਚੀਜ਼ ਹੈ ਜੋ ਸਾਡੇ ਮਨ ਵਿੱਚ ਹੁੰਦੀ ਹੈ ਅਤੇ ਸਾਡੇ ਦੁਨੀਆ ਦੇ ਸਮਝਣ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਇਹ ਇੱਕ ਸਰਗਰਮ **ਸਿੱਖਣ** ਪ੍ਰਕਿਰਿਆ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਹੁੰਦੀ ਹੈ, ਜੋ ਸਾਨੂੰ ਮਿਲਣ ਵਾਲੀ ਜਾਣਕਾਰੀ ਦੇ ਟੁਕੜਿਆਂ ਨੂੰ ਸਾਡੇ ਸਰਗਰਮ ਮਾਡਲ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ। + +ਅਕਸਰ, ਅਸੀਂ ਗਿਆਨ ਨੂੰ ਸਖਤੀ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਕਰਦੇ, ਪਰ ਅਸੀਂ ਇਸਨੂੰ ਹੋਰ ਸੰਬੰਧਤ ਵਿਚਾਰਾਂ ਨਾਲ [DIKW ਪਿਰਾਮਿਡ](https://en.wikipedia.org/wiki/DIKW_pyramid) ਦੀ ਮਦਦ ਨਾਲ ਜੋੜਦੇ ਹਾਂ। ਇਸ ਵਿੱਚ ਹੇਠ ਲਿਖੇ ਵਿਚਾਰ ਸ਼ਾਮਲ ਹਨ: + +* **ਡਾਟਾ** ਉਹ ਚੀਜ਼ ਹੈ ਜੋ ਭੌਤਿਕ ਮੀਡੀਆ ਵਿੱਚ ਦਰਸਾਈ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਲਿਖਤ ਪਾਠ ਜਾਂ ਬੋਲੀ ਗਈਆਂ ਗੱਲਾਂ। ਡਾਟਾ ਮਨੁੱਖਾਂ ਤੋਂ ਆਜ਼ਾਦ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਲੋਕਾਂ ਵਿੱਚ ਸਾਂਝਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। +* **ਜਾਣਕਾਰੀ** ਉਹ ਹੈ ਜਿਵੇਂ ਅਸੀਂ ਡਾਟਾ ਨੂੰ ਆਪਣੇ ਮਨ ਵਿੱਚ ਸਮਝਦੇ ਹਾਂ। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਅਸੀਂ ਸ਼ਬਦ *ਕੰਪਿਊਟਰ* ਸੁਣਦੇ ਹਾਂ, ਤਾਂ ਸਾਡੇ ਕੋਲ ਇਸਦੀ ਕੁਝ ਸਮਝ ਹੁੰਦੀ ਹੈ। +* **ਗਿਆਨ** ਉਹ ਜਾਣਕਾਰੀ ਹੈ ਜੋ ਸਾਡੇ ਸੰਸਾਰ ਮਾਡਲ ਵਿੱਚ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਅਸੀਂ ਸਿੱਖ ਲੈਂਦੇ ਹਾਂ ਕਿ ਕੰਪਿਊਟਰ ਕੀ ਹੈ, ਤਾਂ ਸਾਡੇ ਕੋਲ ਇਸਦੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ, ਕੀਮਤ ਅਤੇ ਇਸਦੇ ਉਪਯੋਗ ਬਾਰੇ ਕੁਝ ਵਿਚਾਰ ਹੁੰਦੇ ਹਨ। ਇਹ ਆਪਸੀ ਸੰਬੰਧਿਤ ਵਿਚਾਰਾਂ ਦਾ ਜਾਲ ਸਾਡੇ ਗਿਆਨ ਨੂੰ ਬਣਾਉਂਦਾ ਹੈ। +* **ਬੁੱਧੀਮਾਨੀ** ਸਾਡੇ ਸੰਸਾਰ ਦੀ ਸਮਝ ਦਾ ਇੱਕ ਹੋਰ ਪੱਧਰ ਹੈ, ਅਤੇ ਇਹ *ਮੈਟਾ-ਗਿਆਨ* ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਇਹ ਸਮਝ ਕਿ ਗਿਆਨ ਕਿਵੇਂ ਅਤੇ ਕਦੋਂ ਵਰਤਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। +> **ਨੋਟ**: ਇਹ ਉਦਾਹਰਨ ਕਾਫੀ ਸਧਾਰਨ ਹੈ, ਅਤੇ ਸਿਰਫ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਇੱਕ ਮਾਹਰ ਸਿਸਟਮ ਕਿਵੇਂ ਦਿਖਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਤਰ੍ਹਾਂ ਦਾ ਸਿਸਟਮ ਬਣਾਉਣਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਵਿੱਚ ਕੁਝ *ਸਮਝਦਾਰ* ਵਿਹਾਰ ਸਿਰਫ ਤਦ ਹੀ ਨਜ਼ਰ ਆਏਗਾ ਜਦੋਂ ਤੁਸੀਂ ਲਗਭਗ 200+ ਨਿਯਮਾਂ ਤੱਕ ਪਹੁੰਚ ਜਾਓਗੇ। ਇੱਕ ਸਮੇਂ 'ਤੇ, ਨਿਯਮ ਬਹੁਤ ਜਟਿਲ ਹੋ ਜਾਂਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸਾਰੇ ਯਾਦ ਰੱਖਣਾ ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਸ ਸਮੇਂ 'ਤੇ ਤੁਸੀਂ ਸੋਚਣ ਲੱਗਦੇ ਹੋ ਕਿ ਸਿਸਟਮ ਨੇ ਕੁਝ ਫੈਸਲੇ ਕਿਉਂ ਕੀਤੇ। ਹਾਲਾਂਕਿ, ਗਿਆਨ-ਅਧਾਰਿਤ ਸਿਸਟਮਾਂ ਦੀ ਮਹੱਤਵਪੂਰਨ ਵਿਸ਼ੇਸ਼ਤਾ ਇਹ ਹੈ ਕਿ ਤੁਸੀਂ ਹਮੇਸ਼ਾ *ਸਪਸ਼ਟ* ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਕਿਸੇ ਵੀ ਫੈਸਲੇ ਨੂੰ ਕਿਵੇਂ ਲਿਆ ਗਿਆ। +## ਓਨਟੋਲੋਜੀ ਅਤੇ ਸੈਮੈਂਟਿਕ ਵੈਬ + +20ਵੀਂ ਸਦੀ ਦੇ ਅੰਤ ਵਿੱਚ, ਇੰਟਰਨੈਟ ਸਰੋਤਾਂ ਨੂੰ ਗਿਆਨ ਪ੍ਰਸਤੁਤੀਕਰਨ ਨਾਲ ਐਨੋਟੇਟ ਕਰਨ ਦੀ ਇੱਕ ਪਹਿਲ ਕੀਤੀ ਗਈ ਸੀ, ਤਾਂ ਜੋ ਇਹ ਸੰਭਵ ਹੋ ਸਕੇ ਕਿ ਬਹੁਤ ਹੀ ਵਿਸ਼ੇਸ਼ ਪੁੱਛਗਿੱਛਾਂ ਦੇ ਅਨੁਕੂਲ ਸਰੋਤਾਂ ਨੂੰ ਖੋਜਿਆ ਜਾ ਸਕੇ। ਇਸ ਗਤੀਵਿਧੀ ਨੂੰ **ਸੈਮੈਂਟਿਕ ਵੈਬ** ਕਿਹਾ ਗਿਆ, ਅਤੇ ਇਹ ਕਈ ਧਾਰਨਾਵਾਂ 'ਤੇ ਆਧਾਰਿਤ ਸੀ: + +- **[ਡਿਸਕ੍ਰਿਪਸ਼ਨ ਲੌਜਿਕਸ](https://en.wikipedia.org/wiki/Description_logic)** (DL) 'ਤੇ ਆਧਾਰਿਤ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਗਿਆਨ ਪ੍ਰਸਤੁਤੀਕਰਨ। ਇਹ ਫਰੇਮ ਗਿਆਨ ਪ੍ਰਸਤੁਤੀਕਰਨ ਦੇ ਸਮਾਨ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗੁਣਾਂ ਦੇ ਨਾਲ ਵਸਤੂਆਂ ਦੀ ਇੱਕ ਹਾਇਰਾਰਕੀ ਬਣਾਉਂਦਾ ਹੈ, ਪਰ ਇਸ ਵਿੱਚ ਰਸਮੀ ਤਰਕ ਸੈਮਾਂਟਿਕਸ ਅਤੇ ਨਿਰਣੇ ਹਨ। DLs ਦਾ ਇੱਕ ਪੂਰਾ ਪਰਿਵਾਰ ਹੈ ਜੋ ਪ੍ਰਗਟਤਾ ਅਤੇ ਨਿਰਣੇ ਦੀ ਅਲਗੋਰਿਥਮਿਕ ਜਟਿਲਤਾ ਦੇ ਵਿਚਕਾਰ ਸੰਤੁਲਨ ਬਣਾਉਂਦਾ ਹੈ। +- ਵਿਖੰਡਿਤ ਗਿਆਨ ਪ੍ਰਸਤੁਤੀਕਰਨ, ਜਿੱਥੇ ਸਾਰੇ ਧਾਰਨਾਵਾਂ ਨੂੰ ਇੱਕ ਗਲੋਬਲ URI ਪਛਾਣਕਰਤਾ ਦੁਆਰਾ ਪ੍ਰਸਤੁਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਇੰਟਰਨੈਟ 'ਤੇ ਫੈਲੀਆਂ ਗਿਆਨ ਹਾਇਰਾਰਕੀ ਬਣਾਉਣ ਦੀ ਸੰਭਾਵਨਾ ਬਣਦੀ ਹੈ। +- XML-ਅਧਾਰਿਤ ਭਾਸ਼ਾਵਾਂ ਦਾ ਇੱਕ ਪਰਿਵਾਰ ਗਿਆਨ ਵਰਣਨ ਲਈ: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language)। + +ਸੈਮੈਂਟਿਕ ਵੈਬ ਵਿੱਚ ਇੱਕ ਮੁੱਖ ਧਾਰਨਾ **ਓਨਟੋਲੋਜੀ** ਦੀ ਹੈ। ਇਹ ਕਿਸੇ ਸਮੱਸਿਆ ਖੇਤਰ ਦੀ ਰਸਮੀ ਗਿਆਨ ਪ੍ਰਸਤੁਤੀਕਰਨ ਦੀ ਸਪਸ਼ਟ ਵਿਵਰਣ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਸਭ ਤੋਂ ਸਧਾਰਨ ਓਨਟੋਲੋਜੀ ਸਿਰਫ ਸਮੱਸਿਆ ਖੇਤਰ ਵਿੱਚ ਵਸਤੂਆਂ ਦੀ ਇੱਕ ਹਾਇਰਾਰਕੀ ਹੋ ਸਕਦੀ ਹੈ, ਪਰ ਜਟਿਲ ਓਨਟੋਲੋਜੀਆਂ ਵਿੱਚ ਉਹ ਨਿਯਮ ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ ਜੋ ਨਿਰਣੇ ਲਈ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +ਸੈਮੈਂਟਿਕ ਵੈਬ ਵਿੱਚ, ਸਾਰੇ ਪ੍ਰਸਤੁਤੀਕਰਨ ਤਿੰਨ-ਤੱਕੇ (triplets) 'ਤੇ ਆਧਾਰਿਤ ਹੁੰਦੇ ਹਨ। ਹਰ ਵਸਤੂ ਅਤੇ ਹਰ ਸੰਬੰਧ URI ਦੁਆਰਾ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਪਛਾਣੇ ਜਾਂਦੇ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਜੇਕਰ ਅਸੀਂ ਇਹ ਦੱਸਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਇਹ AI Curriculum ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ ਦੁਆਰਾ 1 ਜਨਵਰੀ, 2022 ਨੂੰ ਵਿਕਸਿਤ ਕੀਤਾ ਗਿਆ ਸੀ - ਇੱਥੇ ਉਹ ਤਿੰਨ-ਤੱਕੇ ਹਨ ਜੋ ਅਸੀਂ ਵਰਤ ਸਕਦੇ ਹਾਂ: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ ਇੱਥੇ `http://www.example.com/terms/creation-date` ਅਤੇ `http://purl.org/dc/elements/1.1/creator` ਕੁਝ ਪ੍ਰਸਿੱਧ ਅਤੇ ਵਿਸ਼ਵ-ਪ੍ਰਮਾਣਿਤ URIs ਹਨ ਜੋ *creator* ਅਤੇ *creation date* ਦੇ ਧਾਰਨਾਵਾਂ ਨੂੰ ਪ੍ਰਗਟ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। + +ਇੱਕ ਹੋਰ ਜਟਿਲ ਮਾਮਲੇ ਵਿੱਚ, ਜੇਕਰ ਅਸੀਂ ਰਚਨਾਕਾਰਾਂ ਦੀ ਇੱਕ ਸੂਚੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ RDF ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੁਝ ਡਾਟਾ ਸਟ੍ਰਕਚਰਾਂ ਨੂੰ ਵਰਤ ਸਕਦੇ ਹਾਂ। + + + +> ਉੱਪਰਲੇ ਡਾਇਗ੍ਰਾਮ [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com) ਦੁਆਰਾ। + +ਸੈਮੈਂਟਿਕ ਵੈਬ ਬਣਾਉਣ ਦੀ ਪ੍ਰਗਤੀ ਨੂੰ ਖੋਜ ਇੰਜਨਾਂ ਅਤੇ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਤਕਨੀਕਾਂ ਦੀ ਸਫਲਤਾ ਦੁਆਰਾ ਕੁਝ ਹੱਦ ਤੱਕ ਰੋਕਿਆ ਗਿਆ, ਜੋ ਪਾਠ ਤੋਂ ਸੰਰਚਿਤ ਡਾਟਾ ਕੱਢਣ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਕੁਝ ਖੇਤਰਾਂ ਵਿੱਚ ਓਨਟੋਲੋਜੀਆਂ ਅਤੇ ਗਿਆਨ ਅਧਾਰਾਂ ਨੂੰ ਬਣਾਉਣ ਲਈ ਅਜੇ ਵੀ ਮਹੱਤਵਪੂਰਨ ਯਤਨ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ। ਕੁਝ ਪ੍ਰੋਜੈਕਟ ਜੋ ਧਿਆਨ ਦੇਣ ਯੋਗ ਹਨ: + +* [WikiData](https://wikidata.org/) ਇੱਕ ਮਸ਼ੀਨ ਪੜ੍ਹਨ ਯੋਗ ਗਿਆਨ ਅਧਾਰਾਂ ਦਾ ਸੰਗ੍ਰਹਿ ਹੈ ਜੋ Wikipedia ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਡਾਟਾ Wikipedia *InfoBoxes* ਤੋਂ ਖੋਜਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ Wikipedia ਪੰਨਿਆਂ ਦੇ ਅੰਦਰ ਸੰਰਚਿਤ ਸਮੱਗਰੀ ਦੇ ਟੁਕੜੇ ਹਨ। ਤੁਸੀਂ [SPARQL](https://query.wikidata.org/) ਵਿੱਚ WikiData ਨੂੰ ਪੁੱਛਗਿੱਛ ਕਰ ਸਕਦੇ ਹੋ, ਜੋ ਸੈਮੈਂਟਿਕ ਵੈਬ ਲਈ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਪੁੱਛਗਿੱਛ ਭਾਸ਼ਾ ਹੈ। ਇੱਥੇ ਇੱਕ ਨਮੂਨਾ ਪੁੱਛਗਿੱਛ ਹੈ ਜੋ ਮਨੁੱਖਾਂ ਵਿੱਚ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਅੱਖਾਂ ਦੇ ਰੰਗ ਦਿਖਾਉਂਦੀ ਹੈ: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) WikiData ਦੇ ਸਮਾਨ ਇੱਕ ਹੋਰ ਯਤਨ ਹੈ। + +> ✅ ਜੇਕਰ ਤੁਸੀਂ ਆਪਣੀਆਂ ਓਨਟੋਲੋਜੀਆਂ ਬਣਾਉਣ ਜਾਂ ਮੌਜੂਦਾ ਓਨਟੋਲੋਜੀਆਂ ਨੂੰ ਖੋਲ੍ਹਣ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇੱਕ ਸ਼ਾਨਦਾਰ ਵਿਜ਼ੂਅਲ ਓਨਟੋਲੋਜੀ ਐਡੀਟਰ ਹੈ ਜਿਸਨੂੰ [Protégé](https://protege.stanford.edu/) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਸਨੂੰ ਡਾਊਨਲੋਡ ਕਰੋ ਜਾਂ ਆਨਲਾਈਨ ਵਰਤੋ। + + + +*Web Protégé ਐਡੀਟਰ Romanov Family ਓਨਟੋਲੋਜੀ ਨਾਲ ਖੁੱਲ੍ਹਾ। ਸਕ੍ਰੀਨਸ਼ਾਟ ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ ਦੁਆਰਾ।* + +## ✍️ ਅਭਿਆਸ: ਇੱਕ ਪਰਿਵਾਰ ਓਨਟੋਲੋਜੀ + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) ਨੂੰ ਦੇਖੋ, ਜੋ ਪਰਿਵਾਰਕ ਸੰਬੰਧਾਂ ਬਾਰੇ ਸੈਮੈਂਟਿਕ ਵੈਬ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਉਦਾਹਰਣ ਹੈ। ਅਸੀਂ GEDCOM ਫਾਰਮੈਟ ਵਿੱਚ ਪ੍ਰਸਤੁਤ ਇੱਕ ਪਰਿਵਾਰਕ ਰੁੱਖ ਅਤੇ ਪਰਿਵਾਰਕ ਸੰਬੰਧਾਂ ਦੀ ਓਨਟੋਲੋਜੀ ਲੈ ਕੇ ਦਿੱਤੇ ਗਏ ਵਿਅਕਤੀਆਂ ਦੇ ਸੈੱਟ ਲਈ ਸਾਰੇ ਪਰਿਵਾਰਕ ਸੰਬੰਧਾਂ ਦਾ ਇੱਕ ਗ੍ਰਾਫ ਬਣਾਵਾਂਗੇ। + +## ਮਾਈਕਰੋਸਾਫਟ ਕਾਂਸੈਪਟ ਗ੍ਰਾਫ + +ਜ਼ਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਓਨਟੋਲੋਜੀਆਂ ਨੂੰ ਧਿਆਨ ਨਾਲ ਹੱਥੋਂ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਵੀ ਸੰਭਵ ਹੈ ਕਿ **ਅਸੰਰਚਿਤ ਡਾਟਾ** ਤੋਂ ਓਨਟੋਲੋਜੀਆਂ ਨੂੰ **ਖੋਜਿਆ** ਜਾਵੇ, ਉਦਾਹਰਣ ਲਈ, ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪਾਠਾਂ ਤੋਂ। + +ਇੱਕ ਇਸ ਤਰ੍ਹਾਂ ਦਾ ਯਤਨ ਮਾਈਕਰੋਸਾਫਟ ਰਿਸਰਚ ਦੁਆਰਾ ਕੀਤਾ ਗਿਆ ਸੀ, ਅਤੇ ਇਸਦਾ ਨਤੀਜਾ [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) ਸੀ। + +ਇਹ ਵਸਤੂਆਂ ਦਾ ਇੱਕ ਵੱਡਾ ਸੰਗ੍ਰਹਿ ਹੈ ਜੋ `is-a` ਵਿਰਾਸਤ ਸੰਬੰਧ ਦੁਆਰਾ ਇਕੱਠੇ ਕੀਤੇ ਗਏ ਹਨ। ਇਹ "ਮਾਈਕਰੋਸਾਫਟ ਕੀ ਹੈ?" ਵਰਗੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ - ਜਵਾਬ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਹੋ ਸਕਦਾ ਹੈ "ਇੱਕ ਕੰਪਨੀ 0.87 ਸੰਭਾਵਨਾ ਨਾਲ, ਅਤੇ ਇੱਕ ਬ੍ਰਾਂਡ 0.75 ਸੰਭਾਵਨਾ ਨਾਲ।" + +ਗ੍ਰਾਫ REST API ਦੇ ਰੂਪ ਵਿੱਚ ਉਪਲਬਧ ਹੈ, ਜਾਂ ਇੱਕ ਵੱਡੇ ਡਾਊਨਲੋਡਯੋਗ ਟੈਕਸਟ ਫਾਈਲ ਦੇ ਰੂਪ ਵਿੱਚ ਜੋ ਸਾਰੇ ਵਸਤੂ ਜੋੜੇ ਦੀ ਸੂਚੀ ਦਿੰਦੀ ਹੈ। + +## ✍️ ਅਭਿਆਸ: ਇੱਕ ਕਾਂਸੈਪਟ ਗ੍ਰਾਫ + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) ਨੋਟਬੁੱਕ ਨੂੰ ਅਜ਼ਮਾਓ ਤਾਂ ਜੋ ਅਸੀਂ ਦੇਖ ਸਕੀਏ ਕਿ ਮਾਈਕਰੋਸਾਫਟ ਕਾਂਸੈਪਟ ਗ੍ਰਾਫ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖ਼ਬਰਾਂ ਦੇ ਲੇਖਾਂ ਨੂੰ ਕਈ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਕਿਵੇਂ ਸਮੂਹਬੱਧ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + +## ਨਿਸਕਰਸ਼ + +ਅੱਜਕਲ, AI ਨੂੰ ਅਕਸਰ *ਮਸ਼ੀਨ ਲਰਨਿੰਗ* ਜਾਂ *ਨਿਊਰਲ ਨੈਟਵਰਕਸ* ਦਾ ਪਰਯਾਇ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇੱਕ ਮਨੁੱਖ ਸਪਸ਼ਟ ਤਰਕ ਵੀ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਜੋ ਕੁਝ ਅਜੇ ਤੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਰਿਹਾ। ਅਸਲ ਦੁਨੀਆ ਦੇ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ, ਸਪਸ਼ਟ ਤਰਕ ਅਜੇ ਵੀ ਉਹ ਕੰਮ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਵਿਆਖਿਆਵਾਂ ਦੀ ਲੋੜ ਰੱਖਦੇ ਹਨ, ਜਾਂ ਸਿਸਟਮ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਢੰਗ ਨਾਲ ਬਦਲਣ ਦੀ ਯੋਗਤਾ ਦੀ ਲੋੜ ਰੱਖਦੇ ਹਨ। + +## 🚀 ਚੁਣੌਤੀ + +ਇਸ ਪਾਠ ਨਾਲ ਸੰਬੰਧਿਤ ਪਰਿਵਾਰ ਓਨਟੋਲੋਜੀ ਨੋਟਬੁੱਕ ਵਿੱਚ, ਹੋਰ ਪਰਿਵਾਰਕ ਸੰਬੰਧਾਂ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰਨ ਦਾ ਮੌਕਾ ਹੈ। ਪਰਿਵਾਰਕ ਰੁੱਖ ਵਿੱਚ ਲੋਕਾਂ ਦੇ ਵਿਚਕਾਰ ਨਵੇਂ ਸੰਬੰਧਾਂ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। + +## [ਪਾਠ-ਪ੍ਰਸਚਾਤ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਇੰਟਰਨੈਟ 'ਤੇ ਕੁਝ ਖੋਜ ਕਰੋ ਤਾਂ ਜੋ ਉਹ ਖੇਤਰ ਪਤਾ ਲਗ ਸਕਣ ਜਿੱਥੇ ਮਨੁੱਖਾਂ ਨੇ ਗਿਆਨ ਨੂੰ ਮਾਪਣ ਅਤੇ ਕੋਡਿਫਾਈ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ। Bloom's Taxonomy ਦੇਖੋ, ਅਤੇ ਇਤਿਹਾਸ ਵਿੱਚ ਵਾਪਸ ਜਾਓ ਤਾਂ ਜੋ ਇਹ ਸਿੱਖਿਆ ਜਾ ਸਕੇ ਕਿ ਮਨੁੱਖਾਂ ਨੇ ਆਪਣੇ ਸੰਸਾਰ ਨੂੰ ਸਮਝਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਿਵੇਂ ਕੀਤੀ। Linnaeus ਦੇ ਕੰਮ ਨੂੰ ਦੇਖੋ ਕਿ ਜਿਵੇਂ ਉਸਨੇ ਜੀਵਾਂ ਦੀ ਇੱਕ ਟੈਕਸੋਨੋਮੀ ਬਣਾਈ, ਅਤੇ ਇਹ ਦੇਖੋ ਕਿ ਦਿਮਿਤਰੀ ਮੇਂਡੇਲੀਵ ਨੇ ਰਸਾਇਣਕ ਤੱਤਾਂ ਨੂੰ ਵਰਣਨ ਅਤੇ ਸਮੂਹਬੱਧ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਕਿਵੇਂ ਬਣਾਇਆ। ਕੀ ਤੁਸੀਂ ਹੋਰ ਦਿਲਚਸਪ ਉਦਾਹਰਣ ਲੱਭ ਸਕਦੇ ਹੋ? + +**ਅਸਾਈਨਮੈਂਟ**: [ਓਨਟੋਲੋਜੀ ਬਣਾਓ](assignment.md) + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/2-Symbolic/assignment.md b/translations/pa/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..8220da48 --- /dev/null +++ b/translations/pa/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# ਓਂਟੋਲੋਜੀ ਬਣਾਓ + +ਗਿਆਨ ਅਧਾਰ ਬਣਾਉਣਾ ਇੱਕ ਮਾਡਲ ਨੂੰ ਵਰਗਬੱਧ ਕਰਨ ਬਾਰੇ ਹੈ ਜੋ ਕਿਸੇ ਵਿਸ਼ੇ ਨਾਲ ਸੰਬੰਧਿਤ ਤੱਥਾਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਇੱਕ ਵਿਸ਼ਾ ਚੁਣੋ - ਜਿਵੇਂ ਕਿ ਕੋਈ ਵਿਅਕਤੀ, ਥਾਂ ਜਾਂ ਚੀਜ਼ - ਅਤੇ ਫਿਰ ਉਸ ਵਿਸ਼ੇ ਦਾ ਮਾਡਲ ਬਣਾਓ। ਇਸ ਪਾਠ ਵਿੱਚ ਵਰਣਨ ਕੀਤੀਆਂ ਕੁਝ ਤਕਨੀਕਾਂ ਅਤੇ ਮਾਡਲ-ਬਿਲਡਿੰਗ ਰਣਨੀਤੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇੱਕ ਉਦਾਹਰਣ ਹੋ ਸਕਦੀ ਹੈ ਕਿ ਕਿਵੇਂ ਇੱਕ ਲਿਵਿੰਗ ਰੂਮ ਦੀ ਓਂਟੋਲੋਜੀ ਬਣਾਈ ਜਾਵੇ ਜਿਸ ਵਿੱਚ ਫਰਨੀਚਰ, ਲਾਈਟਾਂ ਆਦਿ ਸ਼ਾਮਲ ਹਨ। ਲਿਵਿੰਗ ਰੂਮ ਕਿਥੇ ਕਿਚਨ ਤੋਂ ਵੱਖਰਾ ਹੈ? ਬਾਥਰੂਮ ਤੋਂ? ਤੁਹਾਨੂੰ ਕਿਵੇਂ ਪਤਾ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ ਲਿਵਿੰਗ ਰੂਮ ਹੈ ਨਾ ਕਿ ਡਾਈਨਿੰਗ ਰੂਮ? ਆਪਣੀ ਓਂਟੋਲੋਜੀ ਬਣਾਉਣ ਲਈ [Protégé](https://protege.stanford.edu/) ਦੀ ਵਰਤੋਂ ਕਰੋ। + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/pa/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..60ac997e --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦਾ ਪਰਚੇ: ਪਰਸੈਪਟ੍ਰਾਨ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +ਸਮਕਾਲੀ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਰਗੇ ਕੁਝ ਬਣਾਉਣ ਦੇ ਪਹਿਲੇ ਯਤਨ 1957 ਵਿੱਚ ਕੋਰਨੇਲ ਏਰੋਨਾਟਿਕਲ ਲੈਬੋਰਟਰੀ ਦੇ ਫ੍ਰੈਂਕ ਰੋਜ਼ਨਬਲਾਟ ਦੁਆਰਾ ਕੀਤੇ ਗਏ ਸਨ। ਇਹ ਇੱਕ ਹਾਰਡਵੇਅਰ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਸੀ ਜਿਸਨੂੰ "ਮਾਰਕ-1" ਕਿਹਾ ਜਾਂਦਾ ਸੀ, ਜੋ ਤਿਕੋਣ, ਵਰਗ ਅਤੇ ਗੋਲਾਕਾਰ ਵਰਗੇ ਆਦਿ ਜਾਮਿਤੀ ਆਕਾਰਾਂ ਨੂੰ ਪਛਾਣਨ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ ਗਿਆ ਸੀ। + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> ਚਿੱਤਰ [ਵਿਕੀਪੀਡੀਆ ਤੋਂ](https://en.wikipedia.org/wiki/Perceptron) + +ਇੱਕ ਇਨਪੁਟ ਚਿੱਤਰ ਨੂੰ 20x20 ਫੋਟੋਸੈਲ ਐਰੇ ਦੁਆਰਾ ਦਰਸਾਇਆ ਗਿਆ ਸੀ, ਇਸ ਲਈ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਿੱਚ 400 ਇਨਪੁਟ ਅਤੇ ਇੱਕ ਬਾਈਨਰੀ ਆਉਟਪੁਟ ਸੀ। ਇੱਕ ਸਧਾਰਨ ਨੈਟਵਰਕ ਵਿੱਚ ਇੱਕ ਨਿਊਰਾਨ ਹੁੰਦਾ ਸੀ, ਜਿਸਨੂੰ **ਥ੍ਰੈਸ਼ਹੋਲਡ ਲਾਜਿਕ ਯੂਨਿਟ** ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੇ ਵਜ਼ਨ ਪੋਟੈਂਸ਼ੀਓਮੀਟਰ ਵਾਂਗ ਕੰਮ ਕਰਦੇ ਸਨ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਹੱਥੋਂ ਸਹੀ ਕੀਤਾ ਜਾਣਾ ਲੋੜੀਂਦਾ ਸੀ। + +> ✅ ਪੋਟੈਂਸ਼ੀਓਮੀਟਰ ਇੱਕ ਜੰਤਰ ਹੈ ਜੋ ਉਪਭੋਗਤਾ ਨੂੰ ਸਰਕਟ ਦੀ ਰੋਧਕਤਾ ਨੂੰ ਸਹੀ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। + +> ਉਸ ਸਮੇਂ ਨਿਊਯਾਰਕ ਟਾਈਮਜ਼ ਨੇ ਪਰਸੈਪਟ੍ਰਾਨ ਬਾਰੇ ਲਿਖਿਆ: *ਇਲੈਕਟ੍ਰਾਨਿਕ ਕੰਪਿਊਟਰ ਦਾ ਭ੍ਰੂਣ ਜਿਸਦੀ [ਨੈਵੀ] ਉਮੀਦ ਕਰਦੀ ਹੈ ਕਿ ਇਹ ਤੁਰ ਸਕੇਗਾ, ਗੱਲ ਕਰ ਸਕੇਗਾ, ਵੇਖ ਸਕੇਗਾ, ਲਿਖ ਸਕੇਗਾ, ਆਪਣੇ ਆਪ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣ ਸਕੇਗਾ ਅਤੇ ਆਪਣੇ ਅਸਤੀਤਵ ਦਾ ਜਾਗਰੂਕ ਹੋਵੇਗਾ।* + +## ਪਰਸੈਪਟ੍ਰਾਨ ਮਾਡਲ + +ਮੰਨ ਲਓ ਕਿ ਸਾਡੇ ਮਾਡਲ ਵਿੱਚ N ਫੀਚਰ ਹਨ, ਇਸ ਸਥਿਤੀ ਵਿੱਚ ਇਨਪੁਟ ਵੇਕਟਰ N ਆਕਾਰ ਦਾ ਇੱਕ ਵੇਕਟਰ ਹੋਵੇਗਾ। ਪਰਸੈਪਟ੍ਰਾਨ ਇੱਕ **ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ** ਮਾਡਲ ਹੈ, ਅਰਥਾਤ ਇਹ ਇਨਪੁਟ ਡਾਟਾ ਦੇ ਦੋ ਵਰਗਾਂ ਵਿੱਚ ਅੰਤਰ ਕਰ ਸਕਦਾ ਹੈ। ਅਸੀਂ ਮੰਨਦੇ ਹਾਂ ਕਿ ਹਰ ਇਨਪੁਟ ਵੇਕਟਰ x ਲਈ ਸਾਡੇ ਪਰਸੈਪਟ੍ਰਾਨ ਦਾ ਆਉਟਪੁਟ +1 ਜਾਂ -1 ਹੋਵੇਗਾ, ਇਹ ਵਰਗ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਆਉਟਪੁਟ ਹੇਠਾਂ ਦਿੱਤੇ ਫਾਰਮੂਲੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਗਣਨਾ ਕੀਤੀ ਜਾਵੇਗੀ: + +y(x) = f(wTx) + +ਜਿੱਥੇ f ਇੱਕ ਸਟੀਪ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ ਹੈ + + + + +## ਪਰਸੈਪਟ੍ਰਾਨ ਦੀ ਟ੍ਰੇਨਿੰਗ + +ਪਰਸੈਪਟ੍ਰਾਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਸਾਨੂੰ ਇੱਕ ਵਜ਼ਨ ਵੇਕਟਰ w ਲੱਭਣ ਦੀ ਲੋੜ ਹੈ ਜੋ ਜ਼ਿਆਦਾਤਰ ਮੁੱਲਾਂ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਕਲਾਸੀਫਾਈ ਕਰਦਾ ਹੈ, ਅਰਥਾਤ ਸਭ ਤੋਂ ਘੱਟ **ਗਲਤੀ** ਦਾ ਨਤੀਜਾ ਦਿੰਦਾ ਹੈ। ਇਹ ਗਲਤੀ E ਨੂੰ **ਪਰਸੈਪਟ੍ਰਾਨ ਮਾਪਦੰਡ** ਦੁਆਰਾ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ: + +E(w) = -∑wTxiti + +ਜਿੱਥੇ: + +* ਜੋ ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਪੌਇੰਟ i ਗਲਤ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਨਤੀਜਾ ਦਿੰਦੇ ਹਨ, ਉਨ੍ਹਾਂ 'ਤੇ ਜੋੜ ਲਿਆ ਜਾਂਦਾ ਹੈ +* xi ਇਨਪੁਟ ਡਾਟਾ ਹੈ, ਅਤੇ ti ਨਕਾਰਾਤਮਕ ਅਤੇ ਸਕਾਰਾਤਮਕ ਉਦਾਹਰਣਾਂ ਲਈ -1 ਜਾਂ +1 ਹੈ। + +ਇਸ ਮਾਪਦੰਡ ਨੂੰ ਵਜ਼ਨ w ਦੇ ਫੰਕਸ਼ਨ ਵਜੋਂ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਇਸਨੂੰ ਘਟਾਉਣ ਦੀ ਲੋੜ ਹੈ। ਅਕਸਰ, ਇੱਕ ਵਿਧੀ ਜਿਸਨੂੰ **ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਵਰਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਅਸੀਂ ਕੁਝ ਸ਼ੁਰੂਆਤੀ ਵਜ਼ਨ w(0) ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ ਹਰ ਕਦਮ 'ਤੇ ਹੇਠਾਂ ਦਿੱਤੇ ਫਾਰਮੂਲੇ ਦੇ ਅਨੁਸਾਰ ਵਜ਼ਨ ਅਪਡੇਟ ਕਰਦੇ ਹਾਂ: + +w(t+1) = w(t) - η∇E(w) + +ਇੱਥੇ η ਨੂੰ **ਲਰਨਿੰਗ ਰੇਟ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ∇E(w) E ਦਾ **ਗ੍ਰੇਡੀਅੰਟ** ਦਰਸਾਉਂਦਾ ਹੈ। ਜਦੋਂ ਅਸੀਂ ਗ੍ਰੇਡੀਅੰਟ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਨਤੀਜੇ 'ਤੇ ਪਹੁੰਚਦੇ ਹਾਂ: + +w(t+1) = w(t) + ∑ηxiti + +ਪਾਈਥਨ ਵਿੱਚ ਐਲਗੋਰਿਥਮ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਦਾ ਹੈ: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## ਨਿਸਕਰਸ਼ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਪਰਸੈਪਟ੍ਰਾਨ ਬਾਰੇ ਸਿੱਖਿਆ, ਜੋ ਕਿ ਇੱਕ ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਵਜ਼ਨ ਵੇਕਟਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟ੍ਰੇਨ ਕਰਨ ਦਾ ਤਰੀਕਾ। + +## 🚀 ਚੁਣੌਤੀ + +ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਪਰਸੈਪਟ੍ਰਾਨ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ [ਮਾਈਕਰੋਸਾਫਟ ਲਰਨ](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) 'ਤੇ ਇਸ ਲੈਬ ਨੂੰ ਅਜ਼ਮਾਓ ਜੋ [Azure ML ਡਿਜ਼ਾਈਨਰ](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਇਹ ਦੇਖਣ ਲਈ ਕਿ ਅਸੀਂ ਪਰਸੈਪਟ੍ਰਾਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਖਿਲੌਣਾ ਸਮੱਸਿਆ ਅਤੇ ਅਸਲ-ਜੀਵਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖਣ ਲਈ - [ਪਰਸੈਪਟ੍ਰਾਨ](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) ਨੋਟਬੁੱਕ 'ਤੇ ਜਾਓ। + +ਇਹ ਇੱਕ ਦਿਲਚਸਪ [ਲੇਖ ਪਰਸੈਪਟ੍ਰਾਨ ਬਾਰੇ](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) ਵੀ ਹੈ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਟਾਸਕ ਲਈ ਇੱਕ ਪਰਸੈਪਟ੍ਰਾਨ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਇਸਦੀ ਵਰਤੋਂ ਦੋ ਹੱਥੋਂ ਲਿਖੇ ਅੰਕਾਂ ਵਿੱਚ ਅੰਤਰ ਕਰਨ ਲਈ ਕੀਤੀ ਹੈ। ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਅੰਕਾਂ ਦੀ ਪਛਾਣ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹੱਲ ਕਰਨ ਲਈ ਕਿਹਾ ਗਿਆ ਹੈ, ਅਰਥਾਤ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਕਿ ਦਿੱਤੇ ਗਏ ਚਿੱਤਰ ਨਾਲ ਸਭ ਤੋਂ ਵੱਧ ਸੰਭਾਵਿਤ ਅੰਕ ਕਿਹੜਾ ਹੈ। + +* [ਹਦਾਇਤਾਂ](lab/README.md) +* [ਨੋਟਬੁੱਕ](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣੀਕਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/pa/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..b473d8ef --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# ਪੈਰਸੈਪਟ੍ਰਾਨ ਨਾਲ ਮਲਟੀ-ਕਲਾਸ ਵਰਗੀਕਰਨ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +ਇਸ ਪਾਠ ਵਿੱਚ MNIST ਹੱਥੋਂ ਲਿਖੇ ਅੰਕਾਂ ਦੀ ਬਾਈਨਰੀ ਵਰਗੀਕਰਨ ਲਈ ਵਿਕਸਿਤ ਕੀਤੇ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਇੱਕ ਮਲਟੀ-ਕਲਾਸ ਵਰਗੀਕਰਨ ਬਣਾਓ ਜੋ ਕਿਸੇ ਵੀ ਅੰਕ ਨੂੰ ਪਛਾਣ ਸਕੇ। ਟ੍ਰੇਨ ਅਤੇ ਟੈਸਟ ਡਾਟਾਸੈਟ 'ਤੇ ਵਰਗੀਕਰਨ ਦੀ ਸ਼ੁੱਧਤਾ ਦੀ ਗਣਨਾ ਕਰੋ ਅਤੇ ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਪ੍ਰਿੰਟ ਕਰੋ। + +## ਸੁਝਾਅ + +1. ਹਰ ਅੰਕ ਲਈ, "ਇਹ ਅੰਕ ਬਨਾਮ ਸਾਰੇ ਹੋਰ ਅੰਕ" ਦੇ ਬਾਈਨਰੀ ਵਰਗੀਕਰਨ ਲਈ ਇੱਕ ਡਾਟਾਸੈਟ ਬਣਾਓ। +1. ਬਾਈਨਰੀ ਵਰਗੀਕਰਨ ਲਈ 10 ਵੱਖ-ਵੱਖ ਪੈਰਸੈਪਟ੍ਰਾਨ ਟ੍ਰੇਨ ਕਰੋ (ਹਰ ਅੰਕ ਲਈ ਇੱਕ)। +1. ਇੱਕ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ ਜੋ ਇਨਪੁਟ ਅੰਕ ਨੂੰ ਵਰਗੀਕ੍ਰਿਤ ਕਰੇ। + +> **ਸੁਝਾਅ**: ਜੇਕਰ ਅਸੀਂ ਸਾਰੇ 10 ਪੈਰਸੈਪਟ੍ਰਾਨ ਦੇ ਵਜ਼ਨਾਂ ਨੂੰ ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਵਿੱਚ ਜੋੜੀਏ, ਤਾਂ ਅਸੀਂ ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਗੁਣਾ ਕਰਕੇ ਸਾਰੇ 10 ਪੈਰਸੈਪਟ੍ਰਾਨ ਨੂੰ ਇਨਪੁਟ ਅੰਕਾਂ 'ਤੇ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਭ ਤੋਂ ਸੰਭਾਵਿਤ ਅੰਕ ਨੂੰ ਫਿਰ `argmax` ਓਪਰੇਸ਼ਨ ਲਾਗੂ ਕਰਕੇ ਆਸਾਨੀ ਨਾਲ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। + +## ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ + +ਲੈਬ ਸ਼ੁਰੂ ਕਰਨ ਲਈ [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) ਖੋਲ੍ਹੋ। + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/pa/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..aebd0f26 --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਦਾ ਪਰਿਚਯ। ਮਲਟੀ-ਲੇਅਰਡ ਪਰਸੈਪਟ੍ਰਾਨ + +ਪਿਛਲੇ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ ਸਭ ਤੋਂ ਸਧਾਰਣ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਮਾਡਲ - ਇੱਕ-ਲੇਅਰਡ ਪਰਸੈਪਟ੍ਰਾਨ, ਜੋ ਕਿ ਇੱਕ ਰੇਖੀ ਦੋ-ਵਰਗੀਕਰਨ ਮਾਡਲ ਹੈ, ਬਾਰੇ ਸਿੱਖਿਆ। + +ਇਸ ਭਾਗ ਵਿੱਚ ਅਸੀਂ ਇਸ ਮਾਡਲ ਨੂੰ ਇੱਕ ਹੋਰ ਲਚਕੀਲੇ ਢਾਂਚੇ ਵਿੱਚ ਵਧਾਉਂਦੇ ਹਾਂ, ਜੋ ਸਾਨੂੰ ਇਹ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ: + +* ਦੋ-ਵਰਗੀਕਰਨ ਤੋਂ ਇਲਾਵਾ **ਮਲਟੀ-ਵਰਗੀਕਰਨ** ਕਰਨਾ +* ਵਰਗੀਕਰਨ ਤੋਂ ਇਲਾਵਾ **ਰੈਗ੍ਰੈਸ਼ਨ ਸਮੱਸਿਆਵਾਂ** ਦਾ ਹੱਲ ਕਰਨਾ +* ਉਹ ਵਰਗ ਵੱਖਰੇ ਕਰਨਾ ਜੋ ਰੇਖੀ ਤੌਰ 'ਤੇ ਵੱਖਰੇ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ + +ਅਸੀਂ ਪਾਇਥਨ ਵਿੱਚ ਆਪਣਾ ਮੋਡੀਊਲਰ ਢਾਂਚਾ ਵੀ ਵਿਕਸਿਤ ਕਰਾਂਗੇ ਜੋ ਸਾਨੂੰ ਵੱਖ-ਵੱਖ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਆਰਕੀਟੈਕਚਰ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਫਾਰਮਲਾਈਜ਼ੇਸ਼ਨ + +ਆਓ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਮੱਸਿਆ ਨੂੰ ਫਾਰਮਲ ਕਰਕੇ ਸ਼ੁਰੂ ਕਰੀਏ। ਮੰਨ ਲਓ ਸਾਡੇ ਕੋਲ ਇੱਕ ਟ੍ਰੇਨਿੰਗ ਡੇਟਾਸੈੱਟ **X** ਹੈ ਜਿਸ ਦੇ ਲੇਬਲ **Y** ਹਨ, ਅਤੇ ਸਾਨੂੰ ਇੱਕ ਮਾਡਲ *f* ਬਣਾਉਣਾ ਹੈ ਜੋ ਸਭ ਤੋਂ ਸਹੀ ਅਨੁਮਾਨ ਲਗਾ ਸਕੇ। ਅਨੁਮਾਨਾਂ ਦੀ ਗੁਣਵੱਤਾ ਨੂੰ **ਲਾਸ ਫੰਕਸ਼ਨ** ℒ ਦੁਆਰਾ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਲਾਸ ਫੰਕਸ਼ਨ ਅਕਸਰ ਵਰਤੇ ਜਾਂਦੇ ਹਨ: + +* ਰੈਗ੍ਰੈਸ਼ਨ ਸਮੱਸਿਆ ਲਈ, ਜਦੋਂ ਸਾਨੂੰ ਇੱਕ ਨੰਬਰ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨੀ ਹੁੰਦੀ ਹੈ, ਅਸੀਂ **ਐਬਸੋਲਿਊਟ ਐਰਰ** ∑i|f(x(i))-y(i)| ਜਾਂ **ਸਕਵੇਅਰਡ ਐਰਰ** ∑i(f(x(i))-y(i))2 ਵਰਤ ਸਕਦੇ ਹਾਂ। +* ਵਰਗੀਕਰਨ ਲਈ, ਅਸੀਂ **0-1 ਲਾਸ** (ਜੋ ਮੂਲ ਤੌਰ 'ਤੇ ਮਾਡਲ ਦੀ **ਸਹੀਤਾ** ਦੇ ਬਰਾਬਰ ਹੈ) ਜਾਂ **ਲੌਜਿਸਟਿਕ ਲਾਸ** ਵਰਤਦੇ ਹਾਂ। + +ਇੱਕ-ਪੱਧਰੀ ਪਰਸੈਪਟ੍ਰਾਨ ਲਈ, ਫੰਕਸ਼ਨ *f* ਨੂੰ ਇੱਕ ਰੇਖੀ ਫੰਕਸ਼ਨ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਸੀ *f(x)=wx+b* (ਇੱਥੇ *w* ਭਾਰ ਮੈਟ੍ਰਿਕਸ ਹੈ, *x* ਇਨਪੁਟ ਫੀਚਰਜ਼ ਦਾ ਵੇਕਟਰ ਹੈ, ਅਤੇ *b* ਬਾਇਸ ਵੇਕਟਰ ਹੈ)। ਵੱਖ-ਵੱਖ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਆਰਕੀਟੈਕਚਰਾਂ ਲਈ, ਇਹ ਫੰਕਸ਼ਨ ਹੋਰ ਜਟਿਲ ਰੂਪ ਲੈ ਸਕਦਾ ਹੈ। + +> ਵਰਗੀਕਰਨ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਅਕਸਰ ਇਹ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਨੈੱਟਵਰਕ ਆਉਟਪੁਟ ਵਜੋਂ ਸੰਬੰਧਿਤ ਵਰਗਾਂ ਦੀ ਸੰਭਾਵਨਾ ਮਿਲੇ। ਅੰਕਾਂ ਨੂੰ ਸੰਭਾਵਨਾਵਾਂ ਵਿੱਚ ਬਦਲਣ ਲਈ (ਜਿਵੇਂ ਆਉਟਪੁਟ ਨੂੰ ਨਾਰਮਲਾਈਜ਼ ਕਰਨ ਲਈ), ਅਸੀਂ ਅਕਸਰ **ਸੌਫਟਮੈਕਸ** ਫੰਕਸ਼ਨ σ ਵਰਤਦੇ ਹਾਂ, ਅਤੇ ਫੰਕਸ਼ਨ *f* ਬਣ ਜਾਂਦਾ ਹੈ *f(x)=σ(wx+b)*। + +ਉਪਰੋਕਤ *f* ਦੀ ਪਰਿਭਾਸ਼ਾ ਵਿੱਚ, *w* ਅਤੇ *b* ਨੂੰ **ਪੈਰਾਮੀਟਰਜ਼** θ=⟨*w,b*⟩ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਦਿੱਤੇ ਗਏ ਡੇਟਾਸੈੱਟ ⟨**X**,**Y**⟩ ਦੇ ਆਧਾਰ 'ਤੇ, ਅਸੀਂ ਪੂਰੇ ਡੇਟਾਸੈੱਟ 'ਤੇ ਕੁੱਲ ਗਲਤੀ ਨੂੰ ਪੈਰਾਮੀਟਰਜ਼ θ ਦੇ ਫੰਕਸ਼ਨ ਵਜੋਂ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ। + +> ✅ **ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਟ੍ਰੇਨਿੰਗ ਦਾ ਮਕਸਦ ਪੈਰਾਮੀਟਰਜ਼ θ ਨੂੰ ਬਦਲ ਕੇ ਗਲਤੀ ਨੂੰ ਘਟਾਉਣਾ ਹੈ।** + +## ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ + +ਫੰਕਸ਼ਨ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਦਾ ਇੱਕ ਪ੍ਰਸਿੱਧ ਤਰੀਕਾ **ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ** ਹੈ। ਇਸ ਵਿਚਾਰਧਾਰਾ ਇਹ ਹੈ ਕਿ ਅਸੀਂ ਲਾਸ ਫੰਕਸ਼ਨ ਦਾ ਡੈਰੀਵੇਟਿਵ (ਬਹੁ-ਪੱਖੀ ਮਾਮਲੇ ਵਿੱਚ **ਗ੍ਰੇਡੀਅੰਟ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ) ਪੈਰਾਮੀਟਰਜ਼ ਦੇ ਸਬੰਧ ਵਿੱਚ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਪੈਰਾਮੀਟਰਜ਼ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹਾਂ ਕਿ ਗਲਤੀ ਘਟੇ। ਇਸ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਨਾਲ ਫਾਰਮਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: + +* ਪੈਰਾਮੀਟਰਜ਼ ਨੂੰ ਕੁਝ ਰੈਂਡਮ ਮੁੱਲਾਂ w(0), b(0) ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। +* ਹੇਠਾਂ ਦਿੱਤੇ ਕਦਮ ਕਈ ਵਾਰ ਦੁਹਰਾਓ: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ, ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਕਦਮ ਪੂਰੇ ਡੇਟਾਸੈੱਟ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਗਣਨਾ ਕੀਤੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ (ਯਾਦ ਰੱਖੋ ਕਿ ਲਾਸ ਸਾਰੇ ਟ੍ਰੇਨਿੰਗ ਨਮੂਨਿਆਂ ਦੇ ਜੋੜ ਵਜੋਂ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ)। ਹਾਲਾਂਕਿ, ਅਸਲ ਜ਼ਿੰਦਗੀ ਵਿੱਚ ਅਸੀਂ ਡੇਟਾਸੈੱਟ ਦੇ ਛੋਟੇ ਹਿੱਸੇ ਲੈਂਦੇ ਹਾਂ, ਜਿਨ੍ਹਾਂ ਨੂੰ **ਮਿਨੀਬੈਚਜ਼** ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਡੇਟਾ ਦੇ ਇੱਕ ਉਪਸੈੱਟ ਦੇ ਆਧਾਰ 'ਤੇ ਗ੍ਰੇਡੀਅੰਟ ਗਣਨਾ ਕਰਦੇ ਹਾਂ। ਕਿਉਂਕਿ ਹਰ ਵਾਰ ਉਪਸੈੱਟ ਰੈਂਡਮ ਤੌਰ 'ਤੇ ਲਿਆ ਜਾਂਦਾ ਹੈ, ਇਸ ਤਰੀਕੇ ਨੂੰ **ਸਟੋਕੈਸਟਿਕ ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ** (SGD) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +## ਮਲਟੀ-ਲੇਅਰਡ ਪਰਸੈਪਟ੍ਰਾਨ ਅਤੇ ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ + +ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਉਪਰ ਦੇਖਿਆ, ਇੱਕ-ਪੱਧਰੀ ਨੈੱਟਵਰਕ ਰੇਖੀ ਤੌਰ 'ਤੇ ਵੱਖਰੇ ਕੀਤੇ ਜਾ ਸਕਣ ਵਾਲੇ ਵਰਗਾਂ ਦਾ ਵਰਗੀਕਰਨ ਕਰਨ ਦੇ ਯੋਗ ਹੈ। ਇੱਕ ਹੋਰ ਧਨਾਢ ਮਾਡਲ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਨੈੱਟਵਰਕ ਦੇ ਕਈ ਪੱਧਰ ਜੋੜ ਸਕਦੇ ਹਾਂ। ਗਣਿਤਕ ਤੌਰ 'ਤੇ ਇਸਦਾ ਅਰਥ ਇਹ ਹੋਵੇਗਾ ਕਿ ਫੰਕਸ਼ਨ *f* ਹੋਰ ਜਟਿਲ ਰੂਪ ਲਵੇਗਾ, ਅਤੇ ਕਈ ਕਦਮਾਂ ਵਿੱਚ ਗਣਨਾ ਕੀਤੀ ਜਾਵੇਗੀ: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +ਇੱਥੇ, α ਇੱਕ **ਗੈਰ-ਰੇਖੀ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ** ਹੈ, σ ਇੱਕ ਸੌਫਟਮੈਕਸ ਫੰਕਸ਼ਨ ਹੈ, ਅਤੇ ਪੈਰਾਮੀਟਰਜ਼ θ=<*w1,b1,w2,b2*> ਹਨ। + +ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ ਐਲਗੋਰਿਦਮ ਉਹੀ ਰਹੇਗਾ, ਪਰ ਗ੍ਰੇਡੀਅੰਟ ਦੀ ਗਣਨਾ ਕਰਨਾ ਹੋਰ ਮੁਸ਼ਕਲ ਹੋਵੇਗਾ। ਚੇਨ ਡਿਫਰੈਂਸ਼ੀਏਸ਼ਨ ਨਿਯਮ ਦੇ ਆਧਾਰ 'ਤੇ, ਅਸੀਂ ਡੈਰੀਵੇਟਿਵਜ਼ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਨਾਲ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ ਚੇਨ ਡਿਫਰੈਂਸ਼ੀਏਸ਼ਨ ਨਿਯਮ ਨੂੰ ਲਾਸ ਫੰਕਸ਼ਨ ਦੇ ਪੈਰਾਮੀਟਰਜ਼ ਦੇ ਸਬੰਧ ਵਿੱਚ ਡੈਰੀਵੇਟਿਵਜ਼ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। + +ਯਾਦ ਰੱਖੋ ਕਿ ਸਾਰੇ ਹਿਸਾਬਾਂ ਦੇ ਖੱਬੇ ਪਾਸੇ ਦਾ ਹਿੱਸਾ ਇੱਕੋ ਜਿਹਾ ਹੈ, ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਲਾਸ ਫੰਕਸ਼ਨ ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਅਤੇ ਗਣਨਾ ਗ੍ਰਾਫ ਦੇ "ਪਿੱਛੇ" ਜਾ ਕੇ ਡੈਰੀਵੇਟਿਵਜ਼ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਨਾਲ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਸ ਤਰ੍ਹਾਂ, ਮਲਟੀ-ਲੇਅਰਡ ਪਰਸੈਪਟ੍ਰਾਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ **ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ**, ਜਾਂ 'ਬੈਕਪ੍ਰੋਪ' ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +ਕੰਪਿਊਟ ਗ੍ਰਾਫ + +> TODO: ਚਿੱਤਰ ਦਾ ਹਵਾਲਾ + +> ✅ ਅਸੀਂ ਆਪਣੇ ਨੋਟਬੁੱਕ ਉਦਾਹਰਨ ਵਿੱਚ ਬੈਕਪ੍ਰੋਪ ਬਾਰੇ ਹੋਰ ਵਿਸਥਾਰ ਨਾਲ ਕਵਰ ਕਰਾਂਗੇ। + +## ਨਿਸ਼ਕਰਸ਼ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਆਪਣੀ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਲਾਇਬ੍ਰੇਰੀ ਬਣਾਈ ਹੈ, ਅਤੇ ਅਸੀਂ ਇਸਨੂੰ ਇੱਕ ਸਧਾਰਣ ਦੋ-ਪੱਖੀ ਵਰਗੀਕਰਨ ਕੰਮ ਲਈ ਵਰਤਿਆ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +ਸੰਲਗਨ ਨੋਟਬੁੱਕ ਵਿੱਚ, ਤੁਸੀਂ ਮਲਟੀ-ਲੇਅਰਡ ਪਰਸੈਪਟ੍ਰਾਨ ਬਣਾਉਣ ਅਤੇ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਆਪਣਾ ਢਾਂਚਾ ਲਾਗੂ ਕਰੋਗੇ। ਤੁਸੀਂ ਵੇਖ ਸਕੋਗੇ ਕਿ ਆਧੁਨਿਕ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ। + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) ਨੋਟਬੁੱਕ 'ਤੇ ਜਾਓ ਅਤੇ ਇਸਨੂੰ ਪੂਰਾ ਕਰੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ AI ਅਤੇ ML ਵਿੱਚ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਇੱਕ ਆਮ ਐਲਗੋਰਿਦਮ ਹੈ, ਜਿਸਨੂੰ [ਹੋਰ ਵਿਸਥਾਰ ਨਾਲ](https://wikipedia.org/wiki/Backpropagation) ਪੜ੍ਹਨ ਯੋਗ ਹੈ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਇਸ ਪਾਠ ਵਿੱਚ ਬਣਾਏ ਢਾਂਚੇ ਨੂੰ ਵਰਤ ਕੇ MNIST ਹੱਥ ਨਾਲ ਲਿਖੇ ਅੰਕਾਂ ਦੇ ਵਰਗੀਕਰਨ ਦੀ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ ਲਈ ਕਿਹਾ ਗਿਆ ਹੈ। + +* [ਹਦਾਇਤਾਂ](lab/README.md) +* [ਨੋਟਬੁੱਕ](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/pa/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..25994165 --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# ਐਮਐਨਆਈਐਸਟੀ ਵਰਗੀਕਰਨ ਆਪਣੇ ਫਰੇਮਵਰਕ ਨਾਲ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +1-, 2- ਅਤੇ 3-ਲੇਅਰ ਵਾਲੇ ਪਰਸੈਪਟ੍ਰਾਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਐਮਐਨਆਈਐਸਟੀ ਹੱਥ ਨਾਲ ਲਿਖੇ ਅੰਕਾਂ ਦੀ ਵਰਗੀਕਰਨ ਦੀ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕਰੋ। ਉਸ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੋ ਅਸੀਂ ਪਾਠ ਵਿੱਚ ਵਿਕਸਿਤ ਕੀਤਾ ਹੈ। + +## ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ + +ਲੈਬ ਨੂੰ [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) ਖੋਲ੍ਹ ਕੇ ਸ਼ੁਰੂ ਕਰੋ। + +## ਪ੍ਰਸ਼ਨ + +ਇਸ ਲੈਬ ਦੇ ਨਤੀਜੇ ਵਜੋਂ, ਹੇਠਾਂ ਦਿੱਤੇ ਪ੍ਰਸ਼ਨਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ: + +- ਕੀ ਇੰਟਰ-ਲੇਅਰ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ ਨੈੱਟਵਰਕ ਦੇ ਪ੍ਰਦਰਸ਼ਨ 'ਤੇ ਅਸਰ ਪਾਉਂਦਾ ਹੈ? +- ਕੀ ਇਸ ਕੰਮ ਲਈ ਸਾਨੂੰ 2- ਜਾਂ 3-ਲੇਅਰ ਵਾਲੇ ਨੈੱਟਵਰਕ ਦੀ ਲੋੜ ਹੈ? +- ਕੀ ਤੁਹਾਨੂੰ ਨੈੱਟਵਰਕ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਵਿੱਚ ਕੋਈ ਸਮੱਸਿਆ ਆਈ? ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਲੇਅਰਾਂ ਦੀ ਗਿਣਤੀ ਵਧੀ। +- ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਨੈੱਟਵਰਕ ਦੇ ਵਜ਼ਨਾਂ ਦਾ ਵਿਹਾਰ ਕਿਵੇਂ ਹੁੰਦਾ ਹੈ? ਤੁਸੀਂ ਵਜ਼ਨਾਂ ਦੇ ਵੱਧ ਤੋਂ ਵੱਧ ਐਬਸੋਲਿਊਟ ਮੁੱਲ ਨੂੰ ਐਪੋਕ ਦੇ ਮੁਕਾਬਲੇ ਪਲਾਟ ਕਰਕੇ ਇਸ ਸੰਬੰਧ ਨੂੰ ਸਮਝ ਸਕਦੇ ਹੋ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/pa/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..7a2f3026 --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,129 @@ + +# ਨਿਊਰਲ ਨੈਟਵਰਕ ਫ੍ਰੇਮਵਰਕਸ + +ਜਿਵੇਂ ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਸਿੱਖ ਚੁੱਕੇ ਹਾਂ, ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਸਾਨੂੰ ਦੋ ਗੱਲਾਂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ: + +* ਟੈਂਸਰਸ 'ਤੇ ਕੰਮ ਕਰਨਾ, ਜਿਵੇਂ ਗੁਣਾ ਕਰਨਾ, ਜੋੜਨਾ, ਅਤੇ ਕੁਝ ਫੰਕਸ਼ਨ ਜਿਵੇਂ ਕਿ ਸਿਗਮਾਇਡ ਜਾਂ ਸੌਫਟਮੈਕਸ ਦੀ ਗਣਨਾ ਕਰਨੀ +* ਸਾਰੇ ਐਕਸਪ੍ਰੈਸ਼ਨਜ਼ ਦੇ ਗ੍ਰੇਡੀਐਂਟਸ ਦੀ ਗਣਨਾ ਕਰਨੀ, ਤਾਂ ਜੋ ਗ੍ਰੇਡੀਐਂਟ ਡਿਸੈਂਟ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਕੀਤੀ ਜਾ ਸਕੇ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +ਜਦੋਂ ਕਿ `numpy` ਲਾਇਬ੍ਰੇਰੀ ਪਹਿਲੇ ਹਿੱਸੇ ਨੂੰ ਕਰ ਸਕਦੀ ਹੈ, ਸਾਨੂੰ ਗ੍ਰੇਡੀਐਂਟਸ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਕੁਝ ਮਕੈਨਿਜ਼ਮ ਦੀ ਲੋੜ ਹੈ। [ਸਾਡੇ ਫ੍ਰੇਮਵਰਕ](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) ਵਿੱਚ, ਜੋ ਅਸੀਂ ਪਿਛਲੇ ਭਾਗ ਵਿੱਚ ਵਿਕਸਿਤ ਕੀਤਾ ਸੀ, ਸਾਨੂੰ ਸਾਰੇ ਡੈਰੀਵੇਟਿਵ ਫੰਕਸ਼ਨਜ਼ ਨੂੰ ਹੱਥੋਂ `backward` ਮੈਥਡ ਵਿੱਚ ਪ੍ਰੋਗਰਾਮ ਕਰਨਾ ਪੈਂਦਾ ਸੀ, ਜੋ ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ ਕਰਦਾ ਹੈ। ਆਦਰਸ਼ ਤੌਰ 'ਤੇ, ਇੱਕ ਫ੍ਰੇਮਵਰਕ ਸਾਨੂੰ *ਕਿਸੇ ਵੀ ਐਕਸਪ੍ਰੈਸ਼ਨ* ਦੇ ਗ੍ਰੇਡੀਐਂਟਸ ਦੀ ਗਣਨਾ ਕਰਨ ਦਾ ਮੌਕਾ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਅਸੀਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਾਂ। + +ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ ਗਣਨਾਵਾਂ ਨੂੰ GPU ਜਾਂ ਕਿਸੇ ਹੋਰ ਵਿਸ਼ੇਸ਼ ਕੰਪਿਊਟ ਯੂਨਿਟ, ਜਿਵੇਂ ਕਿ [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) 'ਤੇ ਕਰਨਾ ਯੋਗ ਹੋਵੇ। ਡੀਪ ਨਿਊਰਲ ਨੈਟਵਰਕ ਟ੍ਰੇਨਿੰਗ ਲਈ *ਬਹੁਤ ਸਾਰੀਆਂ* ਗਣਨਾਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ GPU 'ਤੇ ਉਹਨਾਂ ਗਣਨਾਵਾਂ ਨੂੰ ਪੈਰਲਲ ਕਰਨਾ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। + +> ✅ 'ਪੈਰਲਲਾਈਜ਼' ਸ਼ਬਦ ਦਾ ਮਤਲਬ ਹੈ ਗਣਨਾਵਾਂ ਨੂੰ ਕਈ ਡਿਵਾਈਸਾਂ 'ਤੇ ਵੰਡਣਾ। + +ਇਸ ਸਮੇਂ, ਦੋ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਨਿਊਰਲ ਫ੍ਰੇਮਵਰਕ ਹਨ: [TensorFlow](http://TensorFlow.org) ਅਤੇ [PyTorch](https://pytorch.org/)। ਦੋਵੇਂ CPU ਅਤੇ GPU 'ਤੇ ਟੈਂਸਰਸ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਇੱਕ ਲੋ-ਲੈਵਲ API ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। ਲੋ-ਲੈਵਲ API ਦੇ ਉੱਪਰ, ਇੱਕ ਹਾਈ-ਲੈਵਲ API ਵੀ ਹੈ, ਜਿਸਨੂੰ [Keras](https://keras.io/) ਅਤੇ [PyTorch Lightning](https://pytorchlightning.ai/) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**ਲੋ-ਲੈਵਲ API** ਦੋਵੇਂ ਫ੍ਰੇਮਵਰਕਸ ਵਿੱਚ ਤੁਹਾਨੂੰ **ਕੰਪਿਊਟੇਸ਼ਨਲ ਗ੍ਰਾਫਸ** ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ। ਇਹ ਗ੍ਰਾਫ ਇਹ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਕਿ ਦਿੱਤੇ ਗਏ ਇਨਪੁਟ ਪੈਰਾਮੀਟਰਾਂ ਨਾਲ ਆਉਟਪੁੱਟ (ਆਮ ਤੌਰ 'ਤੇ ਲਾਸ ਫੰਕਸ਼ਨ) ਕਿਵੇਂ ਗਣਨਾ ਕਰਨੀ ਹੈ, ਅਤੇ ਜੇ GPU ਉਪਲਬਧ ਹੈ ਤਾਂ ਇਸਨੂੰ ਗਣਨਾ ਲਈ GPU 'ਤੇ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਗ੍ਰਾਫ ਨੂੰ ਡਿਫਰੈਂਸ਼ੀਏਟ ਕਰਨ ਅਤੇ ਗ੍ਰੇਡੀਐਂਟਸ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਹਨ, ਜੋ ਫਿਰ ਮਾਡਲ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਅਪਟੀਮਾਈਜ਼ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +**ਹਾਈ-ਲੈਵਲ API** ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਮੁੱਖ ਤੌਰ 'ਤੇ **ਲੇਅਰਜ਼ ਦੀ ਲੜੀ** ਵਜੋਂ ਦੇਖਦੇ ਹਨ, ਅਤੇ ਜ਼ਿਆਦਾਤਰ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਬਣਾਉਣਾ ਬਹੁਤ ਆਸਾਨ ਬਣਾ ਦਿੰਦੇ ਹਨ। ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਆਮ ਤੌਰ 'ਤੇ ਡਾਟਾ ਤਿਆਰ ਕਰਨ ਅਤੇ ਫਿਰ `fit` ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। + +ਹਾਈ-ਲੈਵਲ API ਤੁਹਾਨੂੰ ਆਮ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਬਿਨਾਂ ਬਹੁਤ ਸਾਰੀਆਂ ਵਿਸਥਾਰਾਂ ਦੀ ਚਿੰਤਾ ਕੀਤੇ। ਇਸੇ ਸਮੇਂ, ਲੋ-ਲੈਵਲ API ਟ੍ਰੇਨਿੰਗ ਪ੍ਰਕਿਰਿਆ 'ਤੇ ਕਾਫ਼ੀ ਜ਼ਿਆਦਾ ਕੰਟਰੋਲ ਦਿੰਦੇ ਹਨ, ਅਤੇ ਇਸ ਲਈ ਇਹ ਖੋਜ ਵਿੱਚ ਬਹੁਤ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਜਦੋਂ ਤੁਸੀਂ ਨਵੇਂ ਨਿਊਰਲ ਨੈਟਵਰਕ ਆਰਕੀਟੈਕਚਰਜ਼ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹੋ। + +ਇਹ ਸਮਝਣਾ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਤੁਸੀਂ ਦੋਵੇਂ API ਨੂੰ ਇਕੱਠੇ ਵਰਤ ਸਕਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਲੋ-ਲੈਵਲ API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੀ ਨੈਟਵਰਕ ਲੇਅਰ ਆਰਕੀਟੈਕਚਰ ਵਿਕਸਿਤ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਫਿਰ ਇਸਨੂੰ ਵੱਡੇ ਨੈਟਵਰਕ ਦੇ ਅੰਦਰ ਵਰਤ ਸਕਦੇ ਹੋ ਜੋ ਹਾਈ-ਲੈਵਲ API ਨਾਲ ਬਣਾਇਆ ਅਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਾਂ ਤੁਸੀਂ ਹਾਈ-ਲੈਵਲ API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲੇਅਰਜ਼ ਦੀ ਲੜੀ ਵਜੋਂ ਨੈਟਵਰਕ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਫਿਰ ਆਪਣੇ ਲੋ-ਲੈਵਲ ਟ੍ਰੇਨਿੰਗ ਲੂਪ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਕਰ ਸਕਦੇ ਹੋ। ਦੋਵੇਂ API ਇੱਕੋ ਜਿਹੇ ਮੁੱਢਲੇ ਸੰਕਲਪਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ, ਅਤੇ ਇਹ ਇਕੱਠੇ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਗਏ ਹਨ। + +## ਸਿੱਖਣਾ + +ਇਸ ਕੋਰਸ ਵਿੱਚ, ਅਸੀਂ ਜ਼ਿਆਦਾਤਰ ਸਮੱਗਰੀ PyTorch ਅਤੇ TensorFlow ਦੋਵਾਂ ਲਈ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਾਂ। ਤੁਸੀਂ ਆਪਣਾ ਮਨਪਸੰਦ ਫ੍ਰੇਮਵਰਕ ਚੁਣ ਸਕਦੇ ਹੋ ਅਤੇ ਸਿਰਫ਼ ਸੰਬੰਧਿਤ ਨੋਟਬੁੱਕਸ ਦੇਖ ਸਕਦੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਕਿ ਕਿਹੜਾ ਫ੍ਰੇਮਵਰਕ ਚੁਣਨਾ ਹੈ, ਤਾਂ **PyTorch vs. TensorFlow** ਬਾਰੇ ਇੰਟਰਨੈਟ 'ਤੇ ਕੁਝ ਚਰਚਾਵਾਂ ਪੜ੍ਹੋ। ਤੁਸੀਂ ਦੋਵੇਂ ਫ੍ਰੇਮਵਰਕਸ ਨੂੰ ਵੇਖ ਕੇ ਵੀ ਬਿਹਤਰ ਸਮਝ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। + +ਜਿੱਥੇ ਸੰਭਵ ਹੋਵੇ, ਸਾਦਗੀ ਲਈ ਅਸੀਂ ਹਾਈ-ਲੈਵਲ API ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। ਹਾਲਾਂਕਿ, ਅਸੀਂ ਮੰਨਦੇ ਹਾਂ ਕਿ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਜ਼ਮੀਨ ਤੋਂ ਉੱਪਰ ਤੱਕ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ ਇਹ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਇਸ ਲਈ ਸ਼ੁਰੂ ਵਿੱਚ ਅਸੀਂ ਲੋ-ਲੈਵਲ API ਅਤੇ ਟੈਂਸਰਸ ਨਾਲ ਕੰਮ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ। ਹਾਲਾਂਕਿ, ਜੇ ਤੁਸੀਂ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਵਧਣਾ ਚਾਹੁੰਦੇ ਹੋ ਅਤੇ ਇਹ ਵਿਸਥਾਰ ਸਿੱਖਣ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਮਾਂ ਨਹੀਂ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ, ਤਾਂ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹੋ ਅਤੇ ਸਿੱਧੇ ਹਾਈ-ਲੈਵਲ API ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਜਾ ਸਕਦੇ ਹੋ। + +## ✍️ ਅਭਿਆਸ: ਫ੍ਰੇਮਵਰਕਸ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +ਫ੍ਰੇਮਵਰਕਸ ਵਿੱਚ ਮਾਹਰ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਆਓ ਓਵਰਫਿਟਿੰਗ ਦੇ ਧਾਰਣਾ ਨੂੰ ਦੁਹਰਾਈਏ। + +# ਓਵਰਫਿਟਿੰਗ + +ਓਵਰਫਿਟਿੰਗ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਬਹੁਤ ਹੀ ਮਹੱਤਵਪੂਰਨ ਧਾਰਣਾ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਮਝਣਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ! + +ਹੇਠਾਂ ਦਿੱਤੇ ਸਮੱਸਿਆ ਨੂੰ ਵਿਚਾਰੋ ਜਿਸ ਵਿੱਚ 5 ਬਿੰਦੂਆਂ ਨੂੰ ਅਨੁਮਾਨਿਤ ਕਰਨਾ ਹੈ (ਗ੍ਰਾਫ ਵਿੱਚ `x` ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pa.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pa.jpg) +-------------------------|-------------------------- +**ਲਿਨੀਅਰ ਮਾਡਲ, 2 ਪੈਰਾਮੀਟਰ** | **ਨਾਨ-ਲਿਨੀਅਰ ਮਾਡਲ, 7 ਪੈਰਾਮੀਟਰ** +ਟ੍ਰੇਨਿੰਗ ਐਰਰ = 5.3 | ਟ੍ਰੇਨਿੰਗ ਐਰਰ = 0 +ਵੈਲੀਡੇਸ਼ਨ ਐਰਰ = 5.1 | ਵੈਲੀਡੇਸ਼ਨ ਐਰਰ = 20 + +* ਖੱਬੇ ਪਾਸੇ, ਅਸੀਂ ਇੱਕ ਚੰਗੀ ਸਿੱਧੀ ਰੇਖਾ ਦੇ ਅਨੁਮਾਨ ਨੂੰ ਵੇਖਦੇ ਹਾਂ। ਕਿਉਂਕਿ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਗਿਣਤੀ ਯੋਗ ਹੈ, ਮਾਡਲ ਬਿੰਦੂਆਂ ਦੇ ਵੰਡਣ ਦੇ ਪੈਟਰਨ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਮਝਦਾ ਹੈ। +* ਸੱਜੇ ਪਾਸੇ, ਮਾਡਲ ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ। ਕਿਉਂਕਿ ਸਾਡੇ ਕੋਲ ਸਿਰਫ਼ 5 ਬਿੰਦੂ ਹਨ ਅਤੇ ਮਾਡਲ ਵਿੱਚ 7 ਪੈਰਾਮੀਟਰ ਹਨ, ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਢਲ ਸਕਦਾ ਹੈ ਕਿ ਸਾਰੇ ਬਿੰਦੂਆਂ ਵਿੱਚੋਂ ਲੰਘ ਸਕੇ, ਜਿਸ ਨਾਲ ਟ੍ਰੇਨਿੰਗ ਐਰਰ 0 ਹੋ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਸ ਨਾਲ ਮਾਡਲ ਡਾਟਾ ਦੇ ਪਿੱਛੇ ਸਹੀ ਪੈਟਰਨ ਨੂੰ ਸਮਝਣ ਤੋਂ ਰੋਕਦਾ ਹੈ, ਇਸ ਲਈ ਵੈਲੀਡੇਸ਼ਨ ਐਰਰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੈ। + +ਇਹ ਮਾਡਲ ਦੀ ਸ਼ਕਤੀਸ਼ਾਲੀਤਾ (ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਗਿਣਤੀ) ਅਤੇ ਟ੍ਰੇਨਿੰਗ ਨਮੂਨਿਆਂ ਦੀ ਗਿਣਤੀ ਦੇ ਵਿਚਕਾਰ ਸਹੀ ਸੰਤੁਲਨ ਬਣਾਉਣਾ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। + +## ਓਵਰਫਿਟਿੰਗ ਕਿਉਂ ਹੁੰਦੀ ਹੈ + + * ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੀ ਘਾਟ + * ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਮਾਡਲ + * ਇਨਪੁਟ ਡਾਟਾ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸ਼ੋਰ + +## ਓਵਰਫਿਟਿੰਗ ਨੂੰ ਕਿਵੇਂ ਪਛਾਣਨਾ + +ਜਿਵੇਂ ਤੁਸੀਂ ਉੱਪਰ ਦਿੱਤੇ ਗ੍ਰਾਫ ਤੋਂ ਵੇਖ ਸਕਦੇ ਹੋ, ਓਵਰਫਿਟਿੰਗ ਨੂੰ ਬਹੁਤ ਘੱਟ ਟ੍ਰੇਨਿੰਗ ਐਰਰ ਅਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੈਲੀਡੇਸ਼ਨ ਐਰਰ ਦੁਆਰਾ ਪਛਾਣਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਅਸੀਂ ਵੇਖਾਂਗੇ ਕਿ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਵੈਲੀਡੇਸ਼ਨ ਦੋਵੇਂ ਐਰਰ ਘਟਣ ਲੱਗਦੇ ਹਨ, ਅਤੇ ਫਿਰ ਕਿਸੇ ਸਮੇਂ ਵੈਲੀਡੇਸ਼ਨ ਐਰਰ ਘਟਣਾ ਬੰਦ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਵਧਣਾ ਸ਼ੁਰੂ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਓਵਰਫਿਟਿੰਗ ਦਾ ਸੰਕੇਤ ਹੋਵੇਗਾ, ਅਤੇ ਇਹ ਦਰਸਾਵੇਗਾ ਕਿ ਸਾਨੂੰ ਇਸ ਸਮੇਂ ਟ੍ਰੇਨਿੰਗ ਰੋਕ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ (ਜਾਂ ਘੱਟੋ-ਘੱਟ ਮਾਡਲ ਦਾ ਸਨੈਪਸ਼ਾਟ ਲੈਣਾ ਚਾਹੀਦਾ ਹੈ)। + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pa.png) + +## ਓਵਰਫਿਟਿੰਗ ਨੂੰ ਕਿਵੇਂ ਰੋਕਣਾ + +ਜੇ ਤੁਸੀਂ ਵੇਖਦੇ ਹੋ ਕਿ ਓਵਰਫਿਟਿੰਗ ਹੋ ਰਹੀ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਗੱਲਾਂ ਕਰ ਸਕਦੇ ਹੋ: + + * ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੀ ਮਾਤਰਾ ਵਧਾਓ + * ਮਾਡਲ ਦੀ ਜਟਿਲਤਾ ਘਟਾਓ + * ਕੁਝ [ਰੇਗੂਲਰਾਈਜ਼ੇਸ਼ਨ ਤਕਨੀਕ](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) ਵਰਤੋ, ਜਿਵੇਂ ਕਿ [ਡ੍ਰੌਪਆਉਟ](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), ਜਿਸਨੂੰ ਅਸੀਂ ਬਾਅਦ ਵਿੱਚ ਵਿਚਾਰਾਂਗੇ। + +## ਓਵਰਫਿਟਿੰਗ ਅਤੇ ਬਾਇਸ-ਵੈਰੀਅੰਸ ਟ੍ਰੇਡਆਫ਼ + +ਓਵਰਫਿਟਿੰਗ ਅਸਲ ਵਿੱਚ ਅੰਕੜਾ ਵਿਗਿਆਨ ਵਿੱਚ ਇੱਕ ਹੋਰ ਜਨਰਲ ਸਮੱਸਿਆ ਦਾ ਕੇਸ ਹੈ ਜਿਸਨੂੰ [ਬਾਇਸ-ਵੈਰੀਅੰਸ ਟ੍ਰੇਡਆਫ਼](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਜੇ ਅਸੀਂ ਆਪਣੇ ਮਾਡਲ ਵਿੱਚ ਗਲਤੀ ਦੇ ਸੰਭਾਵਿਤ ਸਰੋਤਾਂ ਨੂੰ ਵਿਚਾਰ ਕਰੀਏ, ਤਾਂ ਅਸੀਂ ਦੋ ਕਿਸਮ ਦੀਆਂ ਗਲਤੀਆਂ ਵੇਖ ਸਕਦੇ ਹਾਂ: + +* **ਬਾਇਸ ਗਲਤੀਆਂ** ਜੋ ਸਾਡੇ ਐਲਗੋਰਿਥਮ ਦੁਆਰਾ ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੇ ਸਹੀ ਸੰਬੰਧ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ ਹੋਣ ਕਾਰਨ ਹੁੰਦੀਆਂ ਹਨ। ਇਹ ਇਸ ਗੱਲ ਦਾ ਨਤੀਜਾ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਸਾਡਾ ਮਾਡਲ ਕਾਫ਼ੀ ਸ਼ਕਤੀਸ਼ਾਲੀ ਨਹੀਂ ਹੈ (**ਅੰਡਰਫਿਟਿੰਗ**)। +* **ਵੈਰੀਅੰਸ ਗਲਤੀਆਂ**, ਜੋ ਮਾਡਲ ਦੁਆਰਾ ਇਨਪੁਟ ਡਾਟਾ ਵਿੱਚ ਸ਼ੋਰ ਨੂੰ ਅਨੁਮਾਨਿਤ ਕਰਨ ਕਾਰਨ ਹੁੰਦੀਆਂ ਹਨ ਬਜਾਏ ਕਿ ਅਰਥਪੂਰਨ ਸੰਬੰਧ (**ਓਵਰਫਿਟਿੰਗ**)। + +ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ, ਬਾਇਸ ਗਲਤੀ ਘਟਦੀ ਹੈ (ਜਿਵੇਂ ਸਾਡਾ ਮਾਡਲ ਡਾਟਾ ਨੂੰ ਅਨੁਮਾਨਿਤ ਕਰਨਾ ਸਿੱਖਦਾ ਹੈ), ਅਤੇ ਵੈਰੀਅੰਸ ਗਲਤੀ ਵਧਦੀ ਹੈ। ਓਵਰਫਿਟਿੰਗ ਨੂੰ ਰੋਕਣ ਲਈ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਰੋਕਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ - ਜਾਂ ਤਾਂ ਮੈਨੁਅਲ ਤੌਰ 'ਤੇ (ਜਦੋਂ ਅਸੀਂ ਓਵਰਫਿਟਿੰਗ ਦਾ ਪਤਾ ਲਗਾਉਂਦੇ ਹਾਂ) ਜਾਂ ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ (ਰੇਗੂਲਰਾਈਜ਼ੇਸ਼ਨ ਲਾਗੂ ਕਰਕੇ)। + +## ਨਤੀਜਾ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਦੋ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ AI ਫ੍ਰੇਮਵਰਕਸ, TensorFlow ਅਤੇ PyTorch ਲਈ ਵੱਖ-ਵੱਖ API ਦੇ ਫਰਕਾਂ ਬਾਰੇ ਸਿੱਖਿਆ। ਇਸਦੇ ਨਾਲ ਹੀ, ਤੁਸੀਂ ਇੱਕ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਵਿਸ਼ਾ, ਓਵਰਫਿਟਿੰਗ ਬਾਰੇ ਵੀ ਸਿੱਖਿਆ। + +## 🚀 ਚੁਣੌਤੀ + +ਸੰਬੰਧਿਤ ਨੋਟਬੁੱਕਸ ਵਿੱਚ, ਤੁਸੀਂ 'ਟਾਸਕਸ' ਨੂੰ ਹੇਠਾਂ ਪਾਵੋਗੇ; ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਕੰਮ ਕਰੋ ਅਤੇ ਟਾਸਕਸ ਪੂਰੇ ਕਰੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਹੇਠਾਂ ਦਿੱਤੇ ਵਿਸ਼ਿਆਂ 'ਤੇ ਕੁਝ ਖੋਜ ਕਰੋ: + +- TensorFlow +- PyTorch +- ਓਵਰਫਿਟਿੰਗ + +ਆਪਣੇ ਆਪ ਤੋਂ ਹੇਠਾਂ ਦਿੱਤੇ ਸਵਾਲ ਪੁੱਛੋ: + +- TensorFlow ਅਤੇ PyTorch ਵਿੱਚ ਕੀ ਫਰਕ ਹੈ? +- ਓਵਰਫਿਟਿੰਗ ਅਤੇ ਅੰਡਰਫਿਟਿੰਗ ਵਿੱਚ ਕੀ ਫਰਕ ਹੈ? + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਹਾਨੂੰ PyTorch ਜਾਂ TensorFlow ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿੰਗਲ- ਅਤੇ ਮਲਟੀ-ਲੇਅਰਡ ਫੁੱਲੀ-ਕ + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/pa/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..4358dd61 --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# ਪਾਈਟਾਰਚ/ਟੈਂਸਰਫਲੋ ਨਾਲ ਵਰਗੀਕਰਨ + +[AI ਫਾਰ ਬਿਗਿਨਰਜ਼ ਕਰਿਕੁਲਮ](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +ਪਾਈਟਾਰਚ ਜਾਂ ਟੈਂਸਰਫਲੋ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦੋ ਵਰਗੀਕਰਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰੋ, ਇੱਕ-ਪਤਰੀ ਅਤੇ ਬਹੁ-ਪਤਰੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜੁੜੇ ਨੈੱਟਵਰਕਾਂ ਦੀ ਮਦਦ ਨਾਲ: + +1. **[ਆਇਰਿਸ ਵਰਗੀਕਰਨ](https://en.wikipedia.org/wiki/Iris_flower_data_set)** ਸਮੱਸਿਆ - ਇਹ ਇੱਕ ਉਦਾਹਰਣ ਹੈ ਜਿਸ ਵਿੱਚ ਟੇਬੂਲਰ ਇਨਪੁਟ ਡਾਟਾ ਹੁੰਦਾ ਹੈ, ਜਿਸਨੂੰ ਕਲਾਸੀਕਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਾਲ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਤੁਹਾਡਾ ਮਕਸਦ 4 ਗਿਣਤੀ ਪੈਰਾਮੀਟਰਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਆਇਰਿਸ ਨੂੰ 3 ਵਰਗਾਂ ਵਿੱਚ ਵਰਗੀਕ੍ਰਿਤ ਕਰਨਾ ਹੋਵੇਗਾ। +1. **MNIST** ਹੱਥ ਨਾਲ ਲਿਖੇ ਅੰਕਾਂ ਦੀ ਵਰਗੀਕਰਨ ਸਮੱਸਿਆ, ਜਿਸਨੂੰ ਅਸੀਂ ਪਹਿਲਾਂ ਵੇਖ ਚੁੱਕੇ ਹਾਂ। + +ਸਭ ਤੋਂ ਵਧੀਆ ਸਹੀਤਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਨੈੱਟਵਰਕ ਆਰਕੀਟੈਕਚਰਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। + +## ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ + +ਲੈਬ ਸ਼ੁਰੂ ਕਰਨ ਲਈ [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) ਖੋਲ੍ਹੋ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/3-NeuralNetworks/README.md b/translations/pa/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..cb98d386 --- /dev/null +++ b/translations/pa/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ ਦਾ ਪਰਿਚਯ + +![ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ ਸਮੱਗਰੀ ਦਾ ਸਾਰ](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pa.png) + +ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਪਰਿਚਯ ਵਿੱਚ ਚਰਚਾ ਕੀਤੀ ਸੀ, ਬੁੱਧੀ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਇੱਕ ਤਰੀਕਾ **ਕੰਪਿਊਟਰ ਮਾਡਲ** ਜਾਂ ਇੱਕ **ਕ੍ਰਿਤ੍ਰਿਮ ਦਿਮਾਗ** ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ। 20ਵੀਂ ਸਦੀ ਦੇ ਮੱਧ ਤੋਂ, ਖੋਜਕਰਤਾਵਾਂ ਨੇ ਵੱਖ-ਵੱਖ ਗਣਿਤ ਮਾਡਲਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ, ਜਦੋਂ ਤੱਕ ਕਿ ਹਾਲੀਆ ਸਾਲਾਂ ਵਿੱਚ ਇਹ ਦਿਸ਼ਾ ਬਹੁਤ ਸਫਲ ਸਾਬਤ ਨਹੀਂ ਹੋਈ। ਦਿਮਾਗ ਦੇ ਅਜਿਹੇ ਗਣਿਤ ਮਾਡਲਾਂ ਨੂੰ **ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +> ਕਈ ਵਾਰ ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ ਨੂੰ *ਕ੍ਰਿਤ੍ਰਿਮ ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ* (ANNs) ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਜੋ ਇਹ ਦਰਸਾਇਆ ਜਾ ਸਕੇ ਕਿ ਅਸੀਂ ਮਾਡਲਾਂ ਦੀ ਗੱਲ ਕਰ ਰਹੇ ਹਾਂ, ਨਾ ਕਿ ਅਸਲ ਨਿਊਰੋਨ ਨੈੱਟਵਰਕਸ ਦੀ। + +## ਮਸ਼ੀਨ ਲਰਨਿੰਗ + +ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ ਇੱਕ ਵੱਡੇ ਵਿਭਾਗ ਦਾ ਹਿੱਸਾ ਹਨ, ਜਿਸਨੂੰ **ਮਸ਼ੀਨ ਲਰਨਿੰਗ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਸਦਾ ਮਕਸਦ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੰਪਿਊਟਰ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ, ਜੋ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਦਾ ਇੱਕ ਵੱਡਾ ਹਿੱਸਾ ਹੈ, ਪਰ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਅਸੀਂ ਰਵਾਇਤੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਕਵਰ ਨਹੀਂ ਕਰਦੇ। + +> ਰਵਾਇਤੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ ਸਾਡੇ ਵੱਖਰੇ **[ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਫਾਰ ਬਿਗਿਨਰਜ਼](http://github.com/microsoft/ml-for-beginners)** ਪਾਠਕ੍ਰਮ ਨੂੰ ਵੇਖੋ। + +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ, ਅਸੀਂ ਮੰਨਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਕੋਲ ਕੁਝ ਉਦਾਹਰਣਾਂ ਦਾ ਡਾਟਾਸੈੱਟ **X** ਹੈ, ਅਤੇ ਇਸਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਆਉਟਪੁੱਟ ਮੁੱਲ **Y** ਹਨ। ਉਦਾਹਰਣ ਅਕਸਰ N-ਮਾਪ ਵਾਲੇ ਵੇਕਟਰ ਹੁੰਦੇ ਹਨ, ਜੋ **ਫੀਚਰਜ਼** 'ਤੇ ਆਧਾਰਿਤ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਆਉਟਪੁੱਟ ਨੂੰ **ਲੇਬਲਜ਼** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +ਅਸੀਂ ਦੋ ਸਭ ਤੋਂ ਆਮ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਵੇਖਾਂਗੇ: + +* **ਵਰਗੀਕਰਨ (Classification)**, ਜਿੱਥੇ ਸਾਨੂੰ ਇੱਕ ਇਨਪੁੱਟ ਆਬਜੈਕਟ ਨੂੰ ਦੋ ਜਾਂ ਵੱਧ ਵਰਗਾਂ ਵਿੱਚ ਵਰਗੀਕ੍ਰਿਤ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। +* **ਰੈਗ੍ਰੈਸ਼ਨ (Regression)**, ਜਿੱਥੇ ਸਾਨੂੰ ਹਰ ਇਨਪੁੱਟ ਨਮੂਨੇ ਲਈ ਇੱਕ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨੀ ਹੁੰਦੀ ਹੈ। + +> ਜਦੋਂ ਇਨਪੁੱਟ ਅਤੇ ਆਉਟਪੁੱਟ ਨੂੰ ਟੈਂਸਰ ਦੇ ਰੂਪ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਨਪੁੱਟ ਡਾਟਾਸੈੱਟ M×N ਮਾਪ ਦੇ ਮੈਟ੍ਰਿਕਸ ਦੇ ਰੂਪ ਵਿੱਚ ਹੁੰਦਾ ਹੈ, ਜਿੱਥੇ M ਨਮੂਨਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ ਅਤੇ N ਫੀਚਰਜ਼ ਦੀ ਗਿਣਤੀ ਹੈ। ਆਉਟਪੁੱਟ ਲੇਬਲ **Y** M ਮਾਪ ਦੇ ਵੇਕਟਰ ਹੁੰਦੇ ਹਨ। + +ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਅਸੀਂ ਸਿਰਫ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਮਾਡਲਾਂ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। + +## ਨਿਊਰੋਨ ਦਾ ਮਾਡਲ + +ਜੀਵ ਵਿਗਿਆਨ ਤੋਂ ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਸਾਡਾ ਦਿਮਾਗ ਨਿਊਰਲ ਸੈਲਾਂ ਤੋਂ ਬਣਿਆ ਹੁੰਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਕਈ "ਇਨਪੁੱਟ" (ਐਕਸੋਨ) ਅਤੇ ਇੱਕ ਆਉਟਪੁੱਟ (ਡੈਂਡਰਾਈਟ) ਹੁੰਦਾ ਹੈ। ਐਕਸੋਨ ਅਤੇ ਡੈਂਡਰਾਈਟ ਬਿਜਲਈ ਸੰਕੇਤਾਂ ਨੂੰ ਚਲਾਉਣ ਦੇ ਯੋਗ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਐਕਸੋਨ ਅਤੇ ਡੈਂਡਰਾਈਟ ਦੇ ਵਿਚਕਾਰ ਦੇ ਸੰਪਰਕ ਵੱਖ-ਵੱਖ ਪੱਧਰ ਦੀ ਚਾਲਕਤਾ ਦਰਸਾ ਸਕਦੇ ਹਨ (ਜੋ ਨਿਊਰੋਮੀਡੀਏਟਰਾਂ ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਹੁੰਦੀ ਹੈ)। + +![ਨਿਊਰੋਨ ਦਾ ਮਾਡਲ](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pa.jpg) | ![ਨਿਊਰੋਨ ਦਾ ਮਾਡਲ](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pa.png) +----|---- +ਅਸਲ ਨਿਊਰੋਨ *([ਵਿਕੀਪੀਡੀਆ ਤੋਂ ਚਿੱਤਰ](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg))* | ਕ੍ਰਿਤ੍ਰਿਮ ਨਿਊਰੋਨ *(ਲੇਖਕ ਦੁਆਰਾ ਚਿੱਤਰ)* + +ਇਸ ਤਰ੍ਹਾਂ, ਨਿਊਰੋਨ ਦਾ ਸਭ ਤੋਂ ਸਧਾਰਨ ਗਣਿਤ ਮਾਡਲ ਕਈ ਇਨਪੁੱਟ X1, ..., XN ਅਤੇ ਇੱਕ ਆਉਟਪੁੱਟ Y, ਅਤੇ ਕਈ ਵਜ਼ਨ W1, ..., WN ਰੱਖਦਾ ਹੈ। ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +ਜਿੱਥੇ f ਕੁਝ ਗੈਰ-ਰੇਖਿਕ **ਸਰਗਰਮੀ ਫੰਕਸ਼ਨ** ਹੈ। + +> ਨਿਊਰੋਨ ਦੇ ਸ਼ੁਰੂਆਤੀ ਮਾਡਲਾਂ ਨੂੰ 1943 ਵਿੱਚ ਵਾਰਨ ਮੈਕਕੁਲੌਕ ਅਤੇ ਵਾਲਟਰ ਪਿਟਸ ਦੁਆਰਾ ਲਿਖੇ ਕਲਾਸਿਕ ਪੇਪਰ [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) ਵਿੱਚ ਵਰਣਿਤ ਕੀਤਾ ਗਿਆ ਸੀ। ਡੋਨਾਲਡ ਹੈਬ ਨੇ ਆਪਣੀ ਕਿਤਾਬ "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" ਵਿੱਚ ਦਰਸਾਇਆ ਕਿ ਇਹ ਨੈੱਟਵਰਕਸ ਕਿਵੇਂ ਟ੍ਰੇਨ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +## ਇਸ ਭਾਗ ਵਿੱਚ + +ਇਸ ਭਾਗ ਵਿੱਚ ਅਸੀਂ ਸਿੱਖਾਂਗੇ: +* [ਪਰਸੈਪਟ੍ਰਾਨ](03-Perceptron/README.md), ਦੋ-ਵਰਗ ਵਰਗੀਕਰਨ ਲਈ ਸਭ ਤੋਂ ਪਹਿਲੇ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਮਾਡਲਾਂ ਵਿੱਚੋਂ ਇੱਕ +* [ਮਲਟੀ-ਲੇਅਰਡ ਨੈੱਟਵਰਕਸ](04-OwnFramework/README.md) ਅਤੇ ਇਸ ਨਾਲ ਜੁੜਿਆ ਨੋਟਬੁੱਕ [ਅਪਣਾ ਫਰੇਮਵਰਕ ਬਣਾਉਣਾ](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਫਰੇਮਵਰਕਸ](05-Frameworks/README.md), ਅਤੇ ਇਹ ਨੋਟਬੁੱਕਸ: [ਪਾਈਟਾਰਚ](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ਅਤੇ [ਕੇਰਾਸ/ਟੈਂਸਰਫਲੋ](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [ਓਵਰਫਿਟਿੰਗ](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/pa/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..e1df1b94 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦਾ ਪਰਚੇ + +[ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ](https://wikipedia.org/wiki/Computer_vision) ਇੱਕ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ ਜਿਸਦਾ ਉਦੇਸ਼ ਕੰਪਿਊਟਰਾਂ ਨੂੰ ਡਿਜ਼ਿਟਲ ਚਿੱਤਰਾਂ ਦੀ ਉੱਚ-ਸਤਹ ਦੀ ਸਮਝ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਣਾ ਹੈ। ਇਹ ਇੱਕ ਕਾਫ਼ੀ ਵਿਆਪਕ ਪਰਿਭਾਸ਼ਾ ਹੈ, ਕਿਉਂਕਿ *ਸਮਝਣਾ* ਕਈ ਵੱਖ-ਵੱਖ ਚੀਜ਼ਾਂ ਦਾ ਮਤਲਬ ਹੋ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਚਿੱਤਰ ਵਿੱਚ ਇੱਕ ਵਸਤੂ ਨੂੰ ਖੋਜਣਾ (**ਵਸਤੂ ਪਛਾਣ**), ਜੋ ਕੁਝ ਹੋ ਰਿਹਾ ਹੈ ਉਸ ਨੂੰ ਸਮਝਣਾ (**ਘਟਨਾ ਪਛਾਣ**), ਚਿੱਤਰ ਨੂੰ ਲਿਖਤ ਵਿੱਚ ਵਰਣਨ ਕਰਨਾ, ਜਾਂ 3D ਵਿੱਚ ਦ੍ਰਿਸ਼ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣਾ। ਮਨੁੱਖੀ ਚਿੱਤਰਾਂ ਨਾਲ ਸੰਬੰਧਿਤ ਕੁਝ ਵਿਸ਼ੇਸ਼ ਕਾਰਜ ਵੀ ਹਨ: ਉਮਰ ਅਤੇ ਭਾਵਨਾ ਅਨੁਮਾਨ, ਚਿਹਰਾ ਪਛਾਣ ਅਤੇ ਸਨਾਖਤ, ਅਤੇ 3D ਪੋਜ਼ ਅਨੁਮਾਨ, ਆਦਿ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦਾ ਇੱਕ ਸਭ ਤੋਂ ਸਧਾਰਨ ਕਾਰਜ **ਚਿੱਤਰ ਵਰਗੀਕਰਨ** ਹੈ। + +ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਨੂੰ ਅਕਸਰ AI ਦੀ ਇੱਕ ਸ਼ਾਖਾ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਅੱਜਕਲ, ਜ਼ਿਆਦਾਤਰ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਕਾਰਜ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੱਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਅਸੀਂ ਇਸ ਅਧਿਆਇ ਵਿੱਚ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੇ ਵਿਸ਼ੇਸ਼ ਪ੍ਰਕਾਰ [ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕ](../07-ConvNets/README.md) ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਾਂਗੇ। + +ਹਾਲਾਂਕਿ, ਚਿੱਤਰ ਨੂੰ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਿੱਚ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ, ਕਈ ਕੇਸਾਂ ਵਿੱਚ ਚਿੱਤਰ ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਕੁਝ ਅਲਗੋਰਿਦਮਿਕ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸਹੀ ਹੁੰਦਾ ਹੈ। + +ਚਿੱਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਕਈ Python ਲਾਇਬ੍ਰੇਰੀਆਂ ਉਪਲਬਧ ਹਨ: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** ਵੱਖ-ਵੱਖ ਚਿੱਤਰ ਫਾਰਮੈਟਾਂ ਨੂੰ ਪੜ੍ਹਨ/ਲਿਖਣ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਹ ffmpeg ਨੂੰ ਵੀ ਸਹਿਯੋਗ ਦਿੰਦੀ ਹੈ, ਜੋ ਵੀਡੀਓ ਫਰੇਮਾਂ ਨੂੰ ਚਿੱਤਰਾਂ ਵਿੱਚ ਬਦਲਣ ਲਈ ਇੱਕ ਉਪਯੋਗ ਟੂਲ ਹੈ। +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (ਜਿਸ ਨੂੰ PIL ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ) ਹੋਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ ਅਤੇ ਕੁਝ ਚਿੱਤਰ ਮੈਨਿਪੂਲੇਸ਼ਨ ਜਿਵੇਂ ਕਿ ਮੋਰਫਿੰਗ, ਪੈਲੇਟ ਸਹੀਕਰਨ, ਆਦਿ ਦਾ ਸਹਿਯੋਗ ਦਿੰਦੀ ਹੈ। +* **[OpenCV](https://opencv.org/)** ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਚਿੱਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਜੋ C++ ਵਿੱਚ ਲਿਖੀ ਗਈ ਹੈ ਅਤੇ ਚਿੱਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ *ਡਿ ਫੈਕਟੋ* ਮਿਆਰ ਬਣ ਗਈ ਹੈ। ਇਸਦਾ ਇੱਕ ਸੁਵਿਧਾਜਨਕ Python ਇੰਟਰਫੇਸ ਹੈ। +* **[dlib](http://dlib.net/)** ਇੱਕ C++ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਜੋ ਕਈ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਅਲਗੋਰਿਦਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੁਝ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਅਲਗੋਰਿਦਮ ਵੀ ਸ਼ਾਮਲ ਹਨ। ਇਸਦਾ ਇੱਕ Python ਇੰਟਰਫੇਸ ਹੈ ਅਤੇ ਇਹ ਚਿਹਰਾ ਅਤੇ ਚਿਹਰੇ ਦੇ ਲੈਂਡਮਾਰਕ ਪਛਾਣ ਵਰਗੇ ਚੁਣੌਤੀਪੂਰਨ ਕਾਰਜਾਂ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ। + +## OpenCV + +[OpenCV](https://opencv.org/) ਨੂੰ ਚਿੱਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ *ਡਿ ਫੈਕਟੋ* ਮਿਆਰ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਕਈ ਉਪਯੋਗ ਅਲਗੋਰਿਦਮ ਹਨ, ਜੋ C++ ਵਿੱਚ ਲਾਗੂ ਕੀਤੇ ਗਏ ਹਨ। ਤੁਸੀਂ OpenCV ਨੂੰ Python ਤੋਂ ਵੀ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ। + +OpenCV ਸਿੱਖਣ ਲਈ ਇੱਕ ਚੰਗੀ ਜਗ੍ਹਾ [ਇਹ Learn OpenCV ਕੋਰਸ](https://learnopencv.com/getting-started-with-opencv/) ਹੈ। ਸਾਡੇ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਸਾਡਾ ਉਦੇਸ਼ OpenCV ਸਿੱਖਣਾ ਨਹੀਂ ਹੈ, ਬਲਕਿ ਤੁਹਾਨੂੰ ਕੁਝ ਉਦਾਹਰਨ ਦਿਖਾਉਣਾ ਹੈ ਕਿ ਕਦੋਂ ਇਹ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ ਅਤੇ ਕਿਵੇਂ। + +### ਚਿੱਤਰ ਲੋਡ ਕਰਨਾ + +Python ਵਿੱਚ ਚਿੱਤਰਾਂ ਨੂੰ NumPy arrays ਦੁਆਰਾ ਸੁਵਿਧਾਜਨਕ ਤਰੀਕੇ ਨਾਲ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, 320x200 ਪਿਕਸਲ ਦੇ ਸਧਾਰਨ ਚਿੱਟੇ-ਕਾਲੇ ਚਿੱਤਰਾਂ ਨੂੰ 200x320 ਐਰੇ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਉਹੀ ਆਕਾਰ ਦੇ ਰੰਗੀਨ ਚਿੱਤਰਾਂ ਦਾ ਆਕਾਰ 200x320x3 (3 ਰੰਗ ਚੈਨਲਾਂ ਲਈ) ਹੋਵੇਗਾ। ਚਿੱਤਰ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਵਰਤ ਸਕਦੇ ਹੋ: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +ਪ੍ਰੰਪਰਾਗਤ ਤੌਰ 'ਤੇ, OpenCV ਰੰਗੀਨ ਚਿੱਤਰਾਂ ਲਈ BGR (Blue-Green-Red) ਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜਦਕਿ Python ਦੇ ਬਾਕੀ ਟੂਲ ਰਵਾਇਤੀ RGB (Red-Green-Blue) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਚਿੱਤਰ ਨੂੰ ਸਹੀ ਦਿਖਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਇਸਨੂੰ RGB ਰੰਗ ਸਪੇਸ ਵਿੱਚ ਬਦਲਣਾ ਪਵੇਗਾ, ਜਾਂ ਤਾਂ NumPy ਐਰੇ ਵਿੱਚ ਮਾਪਾਂ ਦੀ ਅਦਲ-ਬਦਲ ਕਰਕੇ, ਜਾਂ OpenCV ਫੰਕਸ਼ਨ ਕਾਲ ਕਰਕੇ: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +ਇਹੀ `cvtColor` ਫੰਕਸ਼ਨ ਹੋਰ ਰੰਗ ਸਪੇਸ ਰੂਪਾਂਤਰਨ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਚਿੱਤਰ ਨੂੰ ਚਿੱਟੇ-ਕਾਲੇ ਜਾਂ HSV (Hue-Saturation-Value) ਰੰਗ ਸਪੇਸ ਵਿੱਚ ਬਦਲਣਾ। + +ਤੁਸੀਂ OpenCV ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੀਡੀਓ ਨੂੰ ਫਰੇਮ-ਦਰ-ਫਰੇਮ ਲੋਡ ਕਰ ਸਕਦੇ ਹੋ - ਇਸਦਾ ਉਦਾਹਰਣ [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ਵਿੱਚ ਦਿੱਤਾ ਗਿਆ ਹੈ। + +### ਚਿੱਤਰ ਪ੍ਰੋਸੈਸਿੰਗ + +ਚਿੱਤਰ ਨੂੰ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਿੱਚ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਸੀਂ ਕੁਝ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ ਕਦਮ ਲਾਗੂ ਕਰਨਾ ਚਾਹੋਗੇ। OpenCV ਕਈ ਚੀਜ਼ਾਂ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ: + +* **ਚਿੱਤਰ ਦਾ ਆਕਾਰ ਬਦਲਣਾ** `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` ਦੀ ਵਰਤੋਂ ਕਰਕੇ +* **ਚਿੱਤਰ ਨੂੰ ਧੁੰਦਲਾ ਕਰਨਾ** `im = cv2.medianBlur(im,3)` ਜਾਂ `im = cv2.GaussianBlur(im, (3,3), 0)` ਦੀ ਵਰਤੋਂ ਕਰਕੇ +* ਚਿੱਤਰ ਦੀ **ਚਮਕ ਅਤੇ ਕਨਟਰਾਸਟ** ਨੂੰ NumPy ਐਰੇ ਮੈਨਿਪੂਲੇਸ਼ਨ ਦੁਆਰਾ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ [ਇਸ Stackoverflow ਨੋਟ](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) ਵਿੱਚ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ। +* [ਥ੍ਰੈਸ਼ਹੋਲਡਿੰਗ](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) ਦੀ ਵਰਤੋਂ ਕਰਕੇ `cv2.threshold`/`cv2.adaptiveThreshold` ਫੰਕਸ਼ਨ ਕਾਲ ਕਰਨਾ, ਜੋ ਅਕਸਰ ਚਮਕ ਜਾਂ ਕਨਟਰਾਸਟ ਨੂੰ ਸਹੀ ਕਰਨ ਨਾਲ ਬਿਹਤਰ ਹੁੰਦਾ ਹੈ। +* ਚਿੱਤਰ 'ਤੇ ਵੱਖ-ਵੱਖ [ਰੂਪਾਂਤਰਨ](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) ਲਾਗੂ ਕਰਨਾ: + - **[ਐਫਾਈਨ ਰੂਪਾਂਤਰਨ](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** ਜਦੋਂ ਤੁਹਾਨੂੰ ਚਿੱਤਰ ਵਿੱਚ ਤਿੰਨ ਬਿੰਦੂਆਂ ਦੇ ਸਰੋਤ ਅਤੇ ਗੰਤਵ ਸਥਾਨ ਪਤਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਘੁੰਮਾਉਣਾ, ਆਕਾਰ ਬਦਲਣਾ ਅਤੇ ਝੁਕਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਐਫਾਈਨ ਰੂਪਾਂਤਰਨ ਸਮਾਂਤਰ ਲਾਈਨਾਂ ਨੂੰ ਸਮਾਂਤਰ ਰੱਖਦੇ ਹਨ। + - **[ਪਰਸਪੈਕਟਿਵ ਰੂਪਾਂਤਰਨ](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** ਜਦੋਂ ਤੁਹਾਨੂੰ ਚਿੱਤਰ ਵਿੱਚ 4 ਬਿੰਦੂਆਂ ਦੇ ਸਰੋਤ ਅਤੇ ਗੰਤਵ ਸਥਾਨ ਪਤਾ ਹੁੰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜੇ ਤੁਸੀਂ ਸਮਾਰਟਫੋਨ ਕੈਮਰੇ ਦੁਆਰਾ ਕਿਸੇ ਕੋਣ ਤੋਂ ਇੱਕ ਆਯਤਾਕਾਰ ਦਸਤਾਵੇਜ਼ ਦੀ ਤਸਵੀਰ ਲੈਂਦੇ ਹੋ, ਅਤੇ ਤੁਸੀਂ ਦਸਤਾਵੇਜ਼ ਦੀ ਆਯਤਾਕਾਰ ਚਿੱਤਰ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ। +* ਚਿੱਤਰ ਦੇ ਅੰਦਰ ਗਤੀ ਨੂੰ ਸਮਝਣਾ **[optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** ਦੀ ਵਰਤੋਂ ਕਰਕੇ। + +## ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਵਰਤੋਂ ਦੇ ਉਦਾਹਰਨ + +ਸਾਡੇ [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ਵਿੱਚ, ਅਸੀਂ ਕੁਝ ਉਦਾਹਰਨ ਦਿੰਦੇ ਹਾਂ ਕਿ ਕਦੋਂ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਨੂੰ ਵਿਸ਼ੇਸ਼ ਕਾਰਜ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ: + +* **ਬ੍ਰੇਲ ਬੁੱਕ ਦੀ ਤਸਵੀਰ ਦੀ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ**। ਅਸੀਂ ਧਿਆਨ ਦਿੰਦੇ ਹਾਂ ਕਿ ਕਿਵੇਂ ਅਸੀਂ thresholding, feature detection, perspective transformation ਅਤੇ NumPy ਮੈਨਿਪੂਲੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਅਕਤੀਗਤ ਬ੍ਰੇਲ ਚਿੰਨ੍ਹਾਂ ਨੂੰ ਵੱਖ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੋ ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੁਆਰਾ ਵਰਗੀਕਰਨ ਲਈ ਤਿਆਰ ਹੁੰਦੇ ਹਨ। + +![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pa.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pa.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pa.png) +----|-----|----- + +> ਚਿੱਤਰ [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ਤੋਂ + +* **ਫਰੇਮ ਡਿਫਰੈਂਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੀਡੀਓ ਵਿੱਚ ਗਤੀ ਪਛਾਣਣਾ**। ਜੇ ਕੈਮਰਾ ਸਥਿਰ ਹੈ, ਤਾਂ ਕੈਮਰੇ ਫੀਡ ਤੋਂ ਫਰੇਮ ਇੱਕ ਦੂਜੇ ਨਾਲ ਕਾਫ਼ੀ ਮਿਲਦੇ-ਜੁਲਦੇ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। ਕਿਉਂਕਿ ਫਰੇਮ ਐਰੇ ਦੇ ਰੂਪ ਵਿੱਚ ਦਰਸਾਏ ਜਾਂਦੇ ਹਨ, ਸਿਰਫ਼ ਉਹਨਾਂ ਐਰੇਜ਼ ਨੂੰ ਦੋ ਲਗਾਤਾਰ ਫਰੇਮਾਂ ਲਈ ਘਟਾ ਕੇ ਅਸੀਂ ਪਿਕਸਲ ਡਿਫਰੈਂਸ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੋ ਸਥਿਰ ਫਰੇਮਾਂ ਲਈ ਘੱਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਚਿੱਤਰ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਗਤੀ ਹੋਣ 'ਤੇ ਵਧ ਜਾਵੇਗਾ। + +![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pa.png) + +> ਚਿੱਤਰ [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ਤੋਂ + +* **Optical Flow ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਗਤੀ ਪਛਾਣਣਾ**। [Optical flow](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ਸਾਨੂੰ ਸਮਝਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਵੀਡੀਓ ਫਰੇਮਾਂ 'ਤੇ ਵਿਅਕਤੀਗਤ ਪਿਕਸਲ ਕਿਵੇਂ ਹਿਲਦੇ ਹਨ। Optical flow ਦੇ ਦੋ ਪ੍ਰਕਾਰ ਹਨ: + + - **Dense Optical Flow** ਹਰ ਪਿਕਸਲ ਲਈ ਵੇਕਟਰ ਫੀਲਡ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਇਹ ਕਿੱਥੇ ਹਿਲ ਰਿਹਾ ਹੈ। + - **Sparse Optical Flow** ਚਿੱਤਰ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ ਲੱਛਣ (ਜਿਵੇਂ ਕਿ edges) ਲੈਣ 'ਤੇ ਆਧਾਰਿਤ ਹੈ, ਅਤੇ ਫਰੇਮ ਤੋਂ ਫਰੇਮ ਤੱਕ ਉਹਨਾਂ ਦੀ ਪਤਾਅ ਬਣਾਉਂਦਾ ਹੈ। + +![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pa.png) + +> ਚਿੱਤਰ [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ਤੋਂ + +## ✍️ ਉਦਾਹਰਨ ਨੋਟਬੁੱਕ: OpenCV [OpenCV in Action ਦੀ ਖੋਜ ਕਰੋ](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +ਆਓ OpenCV ਨਾਲ ਕੁਝ ਪ੍ਰਯੋਗ ਕਰੀਏ ਅਤੇ [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ਦੀ ਖੋਜ ਕਰੀਏ। + +## ਨਿਸ਼ਕਰਸ਼ + +ਕਈ ਵਾਰ, ਜਟਿਲ ਕਾਰਜ ਜਿਵੇਂ ਕਿ ਗਤੀ ਪਛਾਣ ਜਾਂ ਫਿੰਗਰਟਿਪ ਪਛਾਣ ਸਿਰਫ਼ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੁਆਰਾ ਹੱਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਇਸ ਲਈ, ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀਆਂ ਮੂਲ ਤਕਨੀਕਾਂ ਅਤੇ OpenCV ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਕੀ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਇਹ ਜਾਣਨਾ ਬਹੁਤ ਲਾਭਦਾਇਕ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +AI ਸ਼ੋ ਤੋਂ [ਇਹ ਵੀਡੀਓ](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) ਦੇਖੋ ਤਾਂ ਜੋ Cortic Tigers ਪ੍ਰੋਜੈਕਟ ਬਾਰੇ ਜਾਣ ਸਕੋ ਅਤੇ ਕਿਵੇਂ ਉਹਨਾਂ ਨੇ ਰੋਬੋਟ ਦੁਆਰਾ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਕਾਰਜਾਂ ਨੂੰ ਲੋਕਤੰਤਰਕਰਨ ਲਈ ਇੱਕ ਬਲਾਕ-ਅਧਾਰਿਤ ਹੱਲ ਬਣਾਇਆ। ਇਸ ਖੇਤਰ ਵਿੱਚ ਨਵੇਂ ਸਿੱਖਣ ਵਾਲਿਆਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੇ ਹੋਰ ਪ੍ਰੋਜੈਕਟਾਂ 'ਤੇ ਖੋਜ ਕਰੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ + +Optical flow ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ [ਇਸ ਸ਼ਾਨਦਾਰ ਟਿਊਟੋਰਿਅਲ](https://learnopencv.com/optical-flow-in-opencv/) ਵਿੱਚ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਸੀਂ ਸਧਾਰਨ ਇਸ਼ਾਰਿਆਂ ਵਾਲੀ ਵੀਡੀਓ ਲਵੋਗੇ, ਅਤੇ ਤੁਹਾਡਾ ਉਦੇਸ਼ Optical Flow ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉੱਪਰ/ਹੇਠਾਂ/ਖੱਬੇ/ਸੱਜੇ ਗਤੀ ਨੂੰ ਕੱਢਣਾ ਹੋਵੇਗਾ। + +Palm Movement Frame + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/pa/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..3fe91ef9 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# ਆਪਟੀਕਲ ਫਲੋ ਦੀ ਵਰਤੋਂ ਨਾਲ ਹਿਲਚਲ ਦੀ ਪਛਾਣ + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +[ਇਸ ਵੀਡੀਓ](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) ਨੂੰ ਦੇਖੋ, ਜਿਸ ਵਿੱਚ ਇੱਕ ਵਿਅਕਤੀ ਦੀ ਹਥੇਲੀ ਸਥਿਰ ਪਿਛੋਕੜ 'ਤੇ ਖੱਬੇ/ਸੱਜੇ/ਉੱਪਰ/ਹੇਠਾਂ ਹਿਲਦੀ ਹੈ। + +**ਤੁਹਾਡਾ ਮਕਸਦ** ਆਪਟੀਕਲ ਫਲੋ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਹੋਵੇਗਾ ਕਿ ਵੀਡੀਓ ਦੇ ਕਿਹੜੇ ਹਿੱਸੇ ਵਿੱਚ ਉੱਪਰ/ਹੇਠਾਂ/ਖੱਬੇ/ਸੱਜੇ ਦੀ ਹਿਲਚਲ ਹੈ। + +**ਵਧੇਰੇ ਚੁਣੌਤੀਪੂਰਨ ਮਕਸਦ** ਇਹ ਹੋਵੇਗਾ ਕਿ ਹਥੇਲੀ/ਉਂਗਲ ਦੀ ਹਿਲਚਲ ਨੂੰ ਚਮੜੀ ਦੇ ਰੰਗ ਦੀ ਮਦਦ ਨਾਲ ਟ੍ਰੈਕ ਕੀਤਾ ਜਾਵੇ, ਜਿਵੇਂ ਕਿ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ਜਾਂ [ਇੱਥੇ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) ਵਿੱਚ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ। + +## ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ + +ਲੈਬ ਨੂੰ [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) ਖੋਲ੍ਹ ਕੇ ਸ਼ੁਰੂ ਕਰੋ। + +## ਸਿੱਖਣ ਵਾਲੀ ਗੱਲ + +ਕਈ ਵਾਰ, ਹਿਲਚਲ ਦੀ ਪਛਾਣ ਜਾਂ ਉਂਗਲ ਦੀ ਨੋਕ ਦੀ ਪਛਾਣ ਵਰਗੇ ਮੁਕੰਮਲ ਕੰਮ ਸਿਰਫ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਮਦਦ ਨਾਲ ਹੱਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਇਸ ਲਈ, ਇਹ ਜਾਣਨਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ OpenCV ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਕੀ ਕਰ ਸਕਦੀਆਂ ਹਨ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/pa/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..20b26554 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# ਪ੍ਰਸਿੱਧ CNN ਆਰਕੀਟੈਕਚਰ + +### VGG-16 + +VGG-16 ਇੱਕ ਨੈਟਵਰਕ ਹੈ ਜਿਸ ਨੇ 2014 ਵਿੱਚ ImageNet top-5 ਵਰਗੀਕਰਨ ਵਿੱਚ 92.7% ਸਹੀਤਾ ਪ੍ਰਾਪਤ ਕੀਤੀ। ਇਸ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਲੇਅਰ ਸਟ੍ਰਕਚਰ ਹਨ: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pa.jpg) + +ਜਿਵੇਂ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ, VGG ਇੱਕ ਪਰੰਪਰਾਗਤ ਪਿਰਾਮਿਡ ਆਰਕੀਟੈਕਚਰ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਕਨਵੋਲੂਸ਼ਨ-ਪੂਲਿੰਗ ਲੇਅਰਾਂ ਦੀ ਲੜੀ ਹੈ। + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pa.jpg) + +> ਚਿੱਤਰ [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ਤੋਂ + +### ResNet + +ResNet ਮਾਈਕਰੋਸਾਫਟ ਰਿਸਰਚ ਦੁਆਰਾ 2015 ਵਿੱਚ ਪ੍ਰਸਤਾਵਿਤ ਮਾਡਲਾਂ ਦਾ ਇੱਕ ਪਰਿਵਾਰ ਹੈ। ResNet ਦਾ ਮੁੱਖ ਵਿਚਾਰ **ਰੈਜ਼ੀਡੂਅਲ ਬਲਾਕ** ਵਰਤਣਾ ਹੈ: + + + +> ਚਿੱਤਰ [ਇਸ ਪੇਪਰ](https://arxiv.org/pdf/1512.03385.pdf) ਤੋਂ + +ਇਸ ਵਿੱਚ ਪਛਾਣ ਪਾਸ-ਥਰੂ ਵਰਤਣ ਦਾ ਕਾਰਨ ਇਹ ਹੈ ਕਿ ਸਾਡੀ ਲੇਅਰ ਪਿਛਲੇ ਲੇਅਰ ਦੇ ਨਤੀਜੇ ਅਤੇ ਰੈਜ਼ੀਡੂਅਲ ਬਲਾਕ ਦੇ ਆਉਟਪੁੱਟ ਦੇ ਵਿਚਕਾਰ **ਫਰਕ** ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰੇ - ਇਸ ਲਈ ਇਸ ਨੂੰ *ਰੈਜ਼ੀਡੂਅਲ* ਨਾਮ ਦਿੱਤਾ ਗਿਆ। ਇਹ ਬਲਾਕਾਂ ਨੂੰ ਸਿਖਾਉਣਾ ਕਾਫੀ ਆਸਾਨ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਕੋਈ ਵਿਅਕਤੀ ਸੈਂਕੜੇ ਬਲਾਕਾਂ ਨਾਲ ਨੈਟਵਰਕ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੁੰਦਾ ਹੈ (ਸਭ ਤੋਂ ਆਮ ਰੂਪਾਂ ResNet-52, ResNet-101 ਅਤੇ ResNet-152 ਹਨ)। + +ਤੁਸੀਂ ਇਸ ਨੈਟਵਰਕ ਨੂੰ ਡਾਟਾਸੈਟ ਦੇ ਮੁਤਾਬਕ ਆਪਣੀ ਜਟਿਲਤਾ ਨੂੰ ਢਾਲਨ ਦੇ ਯੋਗ ਸਮਝ ਸਕਦੇ ਹੋ। ਸ਼ੁਰੂ ਵਿੱਚ, ਜਦੋਂ ਤੁਸੀਂ ਨੈਟਵਰਕ ਨੂੰ ਸਿਖਾਉਣਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਵਜ਼ਨ ਦੀਆਂ ਕੀਮਤਾਂ ਛੋਟੀ ਹੁੰਦੀਆਂ ਹਨ, ਅਤੇ ਜ਼ਿਆਦਾਤਰ ਸਿਗਨਲ ਪਾਸ-ਥਰੂ ਪਛਾਣ ਲੇਅਰਾਂ ਵਿੱਚੋਂ ਜਾਂਦਾ ਹੈ। ਜਿਵੇਂ ਸਿਖਲਾਈ ਅੱਗੇ ਵਧਦੀ ਹੈ ਅਤੇ ਵਜ਼ਨ ਵੱਡੇ ਹੋ ਜਾਂਦੇ ਹਨ, ਨੈਟਵਰਕ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਮਹੱਤਤਾ ਵਧਦੀ ਹੈ, ਅਤੇ ਨੈਟਵਰਕ ਸਿਖਲਾਈ ਚਿੱਤਰਾਂ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਵਰਗਬੱਧ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਪ੍ਰਗਟਾਵਾ ਸ਼ਕਤੀ ਨੂੰ ਢਾਲਦਾ ਹੈ। + +### Google Inception + +Google Inception ਆਰਕੀਟੈਕਚਰ ਇਸ ਵਿਚਾਰ ਨੂੰ ਇੱਕ ਕਦਮ ਅੱਗੇ ਲੈ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਹਰ ਨੈਟਵਰਕ ਲੇਅਰ ਨੂੰ ਕਈ ਵੱਖ-ਵੱਖ ਪਾਥਾਂ ਦੇ ਸੰਯੋਜਨ ਵਜੋਂ ਬਣਾਉਂਦਾ ਹੈ: + + + +> ਚਿੱਤਰ [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) ਤੋਂ + +ਇੱਥੇ, ਸਾਨੂੰ 1x1 ਕਨਵੋਲੂਸ਼ਨ ਦੀ ਭੂਮਿਕਾ 'ਤੇ ਜ਼ੋਰ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ, ਕਿਉਂਕਿ ਸ਼ੁਰੂ ਵਿੱਚ ਇਹ ਸਮਝ ਨਹੀਂ ਆਉਂਦਾ। ਅਸੀਂ 1x1 ਫਿਲਟਰ ਨਾਲ ਚਿੱਤਰ ਵਿੱਚ ਕਿਉਂ ਦੌੜਾਂਗੇ? ਹਾਲਾਂਕਿ, ਤੁਹਾਨੂੰ ਯਾਦ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕਨਵੋਲੂਸ਼ਨ ਫਿਲਟਰ ਕਈ ਡੈਪਥ ਚੈਨਲਾਂ ਨਾਲ ਵੀ ਕੰਮ ਕਰਦੇ ਹਨ (ਮੂਲ ਰੂਪ ਵਿੱਚ - RGB ਰੰਗ, ਅਗਲੇ ਲੇਅਰਾਂ ਵਿੱਚ - ਵੱਖ-ਵੱਖ ਫਿਲਟਰਾਂ ਲਈ ਚੈਨਲ), ਅਤੇ 1x1 ਕਨਵੋਲੂਸ਼ਨ ਨੂੰ ਵੱਖ-ਵੱਖ ਸਿਖਲਾਈ ਯੋਗ ਵਜ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਹਨਾਂ ਇਨਪੁਟ ਚੈਨਲਾਂ ਨੂੰ ਇਕੱਠੇ ਮਿਲਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਸਨੂੰ ਚੈਨਲ ਡਾਇਮੈਂਸ਼ਨ 'ਤੇ ਡਾਊਨਸੈਂਪਲਿੰਗ (ਪੂਲਿੰਗ) ਵਜੋਂ ਵੀ ਦੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ। + +ਇਸ ਵਿਸ਼ੇ 'ਤੇ [ਇੱਕ ਚੰਗਾ ਬਲੌਗ ਪੋਸਟ](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) ਅਤੇ [ਮੂਲ ਪੇਪਰ](https://arxiv.org/pdf/1312.4400.pdf) ਹੈ। + +### MobileNet + +MobileNet ਮਾਡਲਾਂ ਦਾ ਇੱਕ ਪਰਿਵਾਰ ਹੈ ਜਿਸਦਾ ਆਕਾਰ ਘਟਾਇਆ ਗਿਆ ਹੈ, ਜੋ ਮੋਬਾਈਲ ਡਿਵਾਈਸਾਂ ਲਈ ਉਚਿਤ ਹੈ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਸੰਸਾਧਨਾਂ ਦੀ ਘਾਟ ਹੈ ਅਤੇ ਤੁਸੀਂ ਕੁਝ ਸਹੀਤਾ ਦੀ ਕੁਰਬਾਨੀ ਦੇ ਸਕਦੇ ਹੋ, ਤਾਂ ਇਹਨਾਂ ਨੂੰ ਵਰਤੋ। ਇਸ ਦੇ ਪਿੱਛੇ ਮੁੱਖ ਵਿਚਾਰ **ਡੈਪਥਵਾਈਜ਼ ਸੈਪਰੇਬਲ ਕਨਵੋਲੂਸ਼ਨ** ਹੈ, ਜੋ ਕਨਵੋਲੂਸ਼ਨ ਫਿਲਟਰਾਂ ਨੂੰ ਸਪੇਸ਼ਲ ਕਨਵੋਲੂਸ਼ਨ ਅਤੇ ਡੈਪਥ ਚੈਨਲਾਂ 'ਤੇ 1x1 ਕਨਵੋਲੂਸ਼ਨ ਦੇ ਸੰਯੋਜਨ ਦੁਆਰਾ ਪ੍ਰਸਤੁਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਕਾਫੀ ਘਟਾ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਨੈਟਵਰਕ ਆਕਾਰ ਵਿੱਚ ਛੋਟਾ ਹੋ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਘੱਟ ਡਾਟਾ ਨਾਲ ਸਿਖਾਉਣਾ ਵੀ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ। + +ਇੱਥੇ [MobileNet 'ਤੇ ਇੱਕ ਚੰਗਾ ਬਲੌਗ ਪੋਸਟ](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) ਹੈ। + +## ਨਿਸ਼ਕਰਸ਼ + +ਇਸ ਯੂਨਿਟ ਵਿੱਚ, ਤੁਸੀਂ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਨਿਊਰਲ ਨੈਟਵਰਕਾਂ ਦੇ ਮੁੱਖ ਵਿਚਾਰ - ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕਾਂ ਬਾਰੇ ਸਿੱਖਿਆ। ਅਸਲ-ਜੀਵਨ ਆਰਕੀਟੈਕਚਰ ਜੋ ਚਿੱਤਰ ਵਰਗੀਕਰਨ, ਵਸਤੂ ਪਛਾਣ, ਅਤੇ ਇੱਥੋਂ ਤੱਕ ਕਿ ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ ਨੈਟਵਰਕਾਂ ਨੂੰ ਸ਼ਕਤੀ ਦਿੰਦੇ ਹਨ, ਸਾਰੇ CNNs 'ਤੇ ਅਧਾਰਿਤ ਹਨ, ਸਿਰਫ਼ ਹੋਰ ਲੇਅਰਾਂ ਅਤੇ ਕੁਝ ਵਾਧੂ ਸਿਖਲਾਈ ਚਾਲਾਂ ਦੇ ਨਾਲ। + +## 🚀 ਚੁਣੌਤੀ + +ਸੰਲਗਨ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ, ਵਧੇਰੇ ਸਹੀਤਾ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਬਾਰੇ ਹੇਠਾਂ ਨੋਟ ਹਨ। ਕੁਝ ਪ੍ਰਯੋਗ ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਵਧੇਰੇ ਸਹੀਤਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਜਦੋਂ ਕਿ CNNs ਨੂੰ ਅਕਸਰ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਕਾਰਜਾਂ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਫਿਕਸ-ਸਾਈਜ਼ ਪੈਟਰਨਾਂ ਨੂੰ ਕੱਢਣ ਲਈ ਚੰਗੇ ਹੁੰਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ ਅਸੀਂ ਧੁਨੀਆਂ ਨਾਲ ਨਿਪਟ ਰਹੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਆਡੀਓ ਸਿਗਨਲ ਵਿੱਚ ਕੁਝ ਖਾਸ ਪੈਟਰਨਾਂ ਦੀ ਭਾਲ ਕਰਨ ਲਈ CNNs ਨੂੰ ਵੀ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹਾਂ - ਜਿਸ ਵਿੱਚ ਫਿਲਟਰ 1-ਡਾਇਮੈਂਸ਼ਨਲ ਹੋਣਗੇ (ਅਤੇ ਇਸ CNN ਨੂੰ 1D-CNN ਕਿਹਾ ਜਾਵੇਗਾ)। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕਈ ਵਾਰ 3D-CNN ਵੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਬਹੁ-ਡਾਇਮੈਂਸ਼ਨਲ ਸਪੇਸ ਵਿੱਚ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਕੱਢਿਆ ਜਾ ਸਕੇ, ਜਿਵੇਂ ਕਿ ਵੀਡੀਓ 'ਤੇ ਹੋ ਰਹੇ ਕੁਝ ਘਟਨਾਵਾਂ - CNN ਸਮੇਂ ਦੇ ਨਾਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਬਦਲਣ ਦੇ ਕੁਝ ਪੈਟਰਨਾਂ ਨੂੰ ਕੈਪਚਰ ਕਰ ਸਕਦਾ ਹੈ। CNNs ਨਾਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹੋਰ ਕਾਰਜਾਂ ਬਾਰੇ ਕੁਝ ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ ਕਰੋ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਵੱਖ-ਵੱਖ ਬਿੱਲੀਆਂ ਅਤੇ ਕੁੱਤਿਆਂ ਦੀਆਂ ਜਾਤਾਂ ਨੂੰ ਵਰਗਬੱਧ ਕਰਨ ਦਾ ਕੰਮ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਇਹ ਚਿੱਤਰ MNIST ਡਾਟਾਸੈਟ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਜਟਿਲ ਹਨ ਅਤੇ ਉੱਚ ਡਾਇਮੈਂਸ਼ਨ ਦੇ ਹਨ, ਅਤੇ 10 ਤੋਂ ਵੱਧ ਕਲਾਸਾਂ ਹਨ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/pa/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..09666324 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ + +ਅਸੀਂ ਪਹਿਲਾਂ ਦੇਖਿਆ ਹੈ ਕਿ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਚਿੱਤਰਾਂ ਨਾਲ ਨਿਪਟਣ ਵਿੱਚ ਕਾਫ਼ੀ ਚੰਗੇ ਹਨ, ਅਤੇ ਇੱਕ-ਲੇਅਰ ਪਰਸੈਪਟ੍ਰਾਨ ਵੀ MNIST ਡੇਟਾਸੈੱਟ ਤੋਂ ਹੱਥ ਨਾਲ ਲਿਖੇ ਅੰਕਾਂ ਨੂੰ ਵਾਜਬ ਸਹੀਤਾ ਨਾਲ ਪਛਾਣ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, MNIST ਡੇਟਾਸੈੱਟ ਬਹੁਤ ਵਿਸ਼ੇਸ਼ ਹੈ, ਅਤੇ ਸਾਰੇ ਅੰਕ ਚਿੱਤਰ ਦੇ ਅੰਦਰ ਕੇਂਦਰਿਤ ਹਨ, ਜਿਸ ਨਾਲ ਕੰਮ ਸੌਖਾ ਹੋ ਜਾਂਦਾ ਹੈ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +ਅਸਲ ਜ਼ਿੰਦਗੀ ਵਿੱਚ, ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਚਿੱਤਰ ਵਿੱਚ ਕਿਸੇ ਵੀ ਸਥਾਨ ਤੋਂ ਵਸਤੂਆਂ ਨੂੰ ਪਛਾਣ ਸਕੀਏ। ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਆਮ ਵਰਗੀਕਰਨ ਤੋਂ ਵੱਖ ਹੈ, ਕਿਉਂਕਿ ਜਦੋਂ ਅਸੀਂ ਚਿੱਤਰ ਵਿੱਚ ਕਿਸੇ ਖਾਸ ਵਸਤੂ ਨੂੰ ਲੱਭਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਚਿੱਤਰ ਨੂੰ ਸਕੈਨ ਕਰਦੇ ਹਾਂ ਅਤੇ ਕੁਝ ਖਾਸ **ਪੈਟਰਨਜ਼** ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਸੰਯੋਜਨਾਂ ਦੀ ਭਾਲ ਕਰਦੇ ਹਾਂ। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਅਸੀਂ ਬਿੱਲੀ ਦੀ ਭਾਲ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਪਹਿਲਾਂ ਅਸੀਂ ਆੜੀ ਲਾਈਨਾਂ ਦੀ ਭਾਲ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੋ ਮੂੰਹ ਦੇ ਬਾਲ ਬਣ ਸਕਦੇ ਹਨ, ਅਤੇ ਫਿਰ ਮੂੰਹ ਦੇ ਬਾਲਾਂ ਦੇ ਕੁਝ ਖਾਸ ਸੰਯੋਜਨ ਸਾਨੂੰ ਦੱਸ ਸਕਦੇ ਹਨ ਕਿ ਇਹ ਅਸਲ ਵਿੱਚ ਬਿੱਲੀ ਦੀ ਤਸਵੀਰ ਹੈ। ਕੁਝ ਪੈਟਰਨਜ਼ ਦੀ ਸਬੰਧਿਤ ਸਥਿਤੀ ਅਤੇ ਮੌਜੂਦਗੀ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਨਾ ਕਿ ਚਿੱਤਰ ਵਿੱਚ ਉਨ੍ਹਾਂ ਦੀ ਸਹੀ ਸਥਿਤੀ। + +ਪੈਟਰਨਜ਼ ਨੂੰ ਕੱਢਣ ਲਈ, ਅਸੀਂ **ਕਨਵੋਲੂਸ਼ਨਲ ਫਿਲਟਰਜ਼** ਦੀ ਧਾਰਨਾ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਜਾਣਦੇ ਹੋ, ਇੱਕ ਚਿੱਤਰ ਨੂੰ 2D-ਮੈਟ੍ਰਿਕਸ ਜਾਂ ਰੰਗ ਦੀ ਗਹਿਰਾਈ ਵਾਲੇ 3D-ਟੈਂਸਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਫਿਲਟਰ ਲਾਗੂ ਕਰਨ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਇੱਕ ਛੋਟੀ **ਫਿਲਟਰ ਕਰਨਲ** ਮੈਟ੍ਰਿਕਸ ਲੈਂਦੇ ਹਾਂ, ਅਤੇ ਮੂਲ ਚਿੱਤਰ ਵਿੱਚ ਹਰ ਪਿਕਸਲ ਲਈ ਅਸੀਂ ਪੜੋਸੀ ਬਿੰਦੂਆਂ ਨਾਲ ਵਜ਼ਨੀ ਔਸਤ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਇਸਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਇੱਕ ਛੋਟੀ ਖਿੜਕੀ ਪੂਰੇ ਚਿੱਤਰ 'ਤੇ ਸਲਾਈਡ ਕਰ ਰਹੀ ਹੈ, ਅਤੇ ਫਿਲਟਰ ਕਰਨਲ ਮੈਟ੍ਰਿਕਸ ਵਿੱਚ ਵਜ਼ਨਾਂ ਦੇ ਅਨੁਸਾਰ ਸਾਰੇ ਪਿਕਸਲਾਂ ਨੂੰ ਔਸਤ ਕਰ ਰਹੀ ਹੈ। + +![ਵਰਟੀਕਲ ਐਜ ਫਿਲਟਰ](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pa.png) | ![ਹੋਰਿਜ਼ੋਂਟਲ ਐਜ ਫਿਲਟਰ](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pa.png) +----|---- + +> ਚਿੱਤਰ: ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ + +ਉਦਾਹਰਣ ਲਈ, ਜੇ ਅਸੀਂ MNIST ਅੰਕਾਂ 'ਤੇ 3x3 ਵਰਟੀਕਲ ਐਜ ਅਤੇ ਹੋਰਿਜ਼ੋਂਟਲ ਐਜ ਫਿਲਟਰ ਲਾਗੂ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਹਾਈਲਾਈਟਸ (ਜਿਵੇਂ ਕਿ ਉੱਚ ਮੁੱਲ) ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ ਜਿੱਥੇ ਸਾਡੇ ਮੂਲ ਚਿੱਤਰ ਵਿੱਚ ਵਰਟੀਕਲ ਅਤੇ ਹੋਰਿਜ਼ੋਂਟਲ ਐਜ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ ਇਹ ਦੋ ਫਿਲਟਰ "ਐਜ" ਦੀ ਭਾਲ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਇਸੇ ਤਰ੍ਹਾਂ, ਅਸੀਂ ਹੋਰ ਨੀਚਲੇ-ਸਤਹ ਦੇ ਪੈਟਰਨਜ਼ ਦੀ ਭਾਲ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਫਿਲਟਰ ਡਿਜ਼ਾਈਨ ਕਰ ਸਕਦੇ ਹਾਂ: + +> ਚਿੱਤਰ: [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +ਹਾਲਾਂਕਿ, ਜਦੋਂ ਕਿ ਅਸੀਂ ਕੁਝ ਪੈਟਰਨਜ਼ ਨੂੰ ਕੱਢਣ ਲਈ ਫਿਲਟਰਜ਼ ਨੂੰ ਹੱਥੋਂ ਡਿਜ਼ਾਈਨ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਸੀਂ ਨੈਟਵਰਕ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਵੀ ਡਿਜ਼ਾਈਨ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਇਹ ਪੈਟਰਨਜ਼ ਨੂੰ ਆਪਣੇ ਆਪ ਸਿੱਖੇ। ਇਹ CNN ਦੇ ਪਿੱਛੇ ਮੁੱਖ ਵਿਚਾਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। + +## CNN ਦੇ ਮੁੱਖ ਵਿਚਾਰ + +CNNs ਦੇ ਕੰਮ ਕਰਨ ਦਾ ਤਰੀਕਾ ਹੇਠਾਂ ਦਿੱਤੇ ਮਹੱਤਵਪੂਰਨ ਵਿਚਾਰਾਂ 'ਤੇ ਅਧਾਰਿਤ ਹੈ: + +* ਕਨਵੋਲੂਸ਼ਨਲ ਫਿਲਟਰਜ਼ ਪੈਟਰਨਜ਼ ਕੱਢ ਸਕਦੇ ਹਨ +* ਅਸੀਂ ਨੈਟਵਰਕ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਡਿਜ਼ਾਈਨ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਫਿਲਟਰਜ਼ ਆਪਣੇ ਆਪ ਸਿੱਖੇ ਜਾਂ ਸਿਖਾਏ ਜਾਣ +* ਅਸੀਂ ਇਹੀ ਤਰੀਕਾ ਉੱਚ-ਸਤਹ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿੱਚ ਪੈਟਰਨਜ਼ ਲੱਭਣ ਲਈ ਵਰਤ ਸਕਦੇ ਹਾਂ, ਸਿਰਫ਼ ਮੂਲ ਚਿੱਤਰ ਵਿੱਚ ਹੀ ਨਹੀਂ। ਇਸ ਤਰ੍ਹਾਂ CNN ਵਿਸ਼ੇਸ਼ਤਾ ਕੱਢਣ ਦਾ ਕੰਮ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਇੱਕ ਹਾਇਰਾਰਕੀ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਨੀਚਲੇ-ਸਤਹ ਦੇ ਪਿਕਸਲ ਸੰਯੋਜਨਾਂ ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਚਿੱਤਰ ਦੇ ਹਾਈ-ਲੈਵਲ ਹਿੱਸਿਆਂ ਦੇ ਸੰਯੋਜਨ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ। + +![ਹਾਇਰਾਰਕਲ ਵਿਸ਼ੇਸ਼ਤਾ ਕੱਢਣ](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pa.png) + +> ਚਿੱਤਰ: [Hislop-Lynch ਦੇ ਪੇਪਰ](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), [ਉਨ੍ਹਾਂ ਦੇ ਰਿਸਰਚ](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) ਦੇ ਅਧਾਰ 'ਤੇ + +## ✍️ ਅਭਿਆਸ: ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ + +ਆਓ ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਦੀ ਜਾਂਚ ਜਾਰੀ ਰੱਖੀਏ, ਅਤੇ ਸਿਖਣਯੋਗ ਫਿਲਟਰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਸਮਝਣ ਲਈ ਸੰਬੰਧਿਤ ਨੋਟਬੁੱਕਸ 'ਤੇ ਕੰਮ ਕਰੀਏ: + +* [ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## ਪਿਰਾਮਿਡ ਆਰਕੀਟੈਕਚਰ + +ਚਿੱਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਜ਼ਿਆਦਾਤਰ CNNs ਨੂੰ ਪਿਰਾਮਿਡ ਆਰਕੀਟੈਕਚਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਮੂਲ ਚਿੱਤਰਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤੀ ਗਈ ਪਹਿਲੀ ਕਨਵੋਲੂਸ਼ਨਲ ਲੇਅਰ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਫਿਲਟਰਜ਼ ਦੀ ਸੰਖਿਆ ਘੱਟ ਹੁੰਦੀ ਹੈ (8-16), ਜੋ ਵੱਖ-ਵੱਖ ਪਿਕਸਲ ਸੰਯੋਜਨਾਂ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਆੜੀ/ਲੰਬੀ ਲਾਈਨਾਂ ਜਾਂ ਸਟ੍ਰੋਕਸ। ਅਗਲੇ ਪੱਧਰ 'ਤੇ, ਅਸੀਂ ਨੈਟਵਰਕ ਦੇ ਸਪੇਸ਼ਲ ਡਾਇਮੈਂਸ਼ਨ ਨੂੰ ਘਟਾਉਂਦੇ ਹਾਂ, ਅਤੇ ਫਿਲਟਰਜ਼ ਦੀ ਸੰਖਿਆ ਵਧਾਉਂਦੇ ਹਾਂ, ਜੋ ਸਧਾਰਨ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਹੋਰ ਸੰਭਾਵਿਤ ਸੰਯੋਜਨਾਂ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਹਰ ਲੇਅਰ ਦੇ ਨਾਲ, ਜਦੋਂ ਅਸੀਂ ਅੰਤਮ ਵਰਗੀਕਰਨ ਵੱਲ ਵਧਦੇ ਹਾਂ, ਚਿੱਤਰ ਦੇ ਸਪੇਸ਼ਲ ਡਾਇਮੈਂਸ਼ਨ ਘਟਦੇ ਹਨ, ਅਤੇ ਫਿਲਟਰਜ਼ ਦੀ ਗਿਣਤੀ ਵਧਦੀ ਹੈ। + +ਉਦਾਹਰਣ ਵਜੋਂ, ਆਓ VGG-16 ਦੀ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਦੇਖੀਏ, ਇੱਕ ਨੈਟਵਰਕ ਜਿਸ ਨੇ 2014 ਵਿੱਚ ImageNet ਦੇ ਟਾਪ-5 ਵਰਗੀਕਰਨ ਵਿੱਚ 92.7% ਸਹੀਤਾ ਹਾਸਲ ਕੀਤੀ: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pa.jpg) + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pa.jpg) + +> ਚਿੱਤਰ: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ CNN ਆਰਕੀਟੈਕਚਰਜ਼ + +[ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ CNN ਆਰਕੀਟੈਕਚਰਜ਼ ਬਾਰੇ ਆਪਣਾ ਅਧਿਐਨ ਜਾਰੀ ਰੱਖੋ](CNN_Architectures.md) + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/pa/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..c4b0457c --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦੇ ਚਿਹਰਿਆਂ ਦੀ ਵਰਗੀਕਰਨ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦੇ ਨਰਸਰੀ ਲਈ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਵਿਕਸਿਤ ਕਰਨੀ ਹੈ ਜੋ ਸਾਰੇ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਨੂੰ ਕੈਟਾਲੌਗ ਕਰ ਸਕੇ। ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਇੱਕ ਸ਼ਾਨਦਾਰ ਵਿਸ਼ੇਸ਼ਤਾ ਇਹ ਹੋਵੇਗੀ ਕਿ ਫੋਟੋ ਤੋਂ ਬ੍ਰੀਡ ਨੂੰ ਆਟੋਮੈਟਿਕ ਤੌਰ 'ਤੇ ਪਛਾਣਿਆ ਜਾ ਸਕੇ। ਇਹ ਕੰਮ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੀ ਮਦਦ ਨਾਲ ਸਫਲਤਾਪੂਰਵਕ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + +ਤੁਹਾਨੂੰ **Pet Faces** ਡੇਟਾਸੈੱਟ ਦੀ ਵਰਤੋਂ ਕਰਦਿਆਂ ਬਿੱਲੀਆਂ ਅਤੇ ਕੁੱਤਿਆਂ ਦੀਆਂ ਵੱਖ-ਵੱਖ ਬ੍ਰੀਡਾਂ ਨੂੰ ਵਰਗੀਕ੍ਰਿਤ ਕਰਨ ਲਈ ਇੱਕ ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ। + +## ਡੇਟਾਸੈੱਟ + +ਅਸੀਂ **Pet Faces** ਡੇਟਾਸੈੱਟ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਜੋ ਕਿ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦੇ ਡੇਟਾਸੈੱਟ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। ਇਸ ਵਿੱਚ ਕੁੱਤਿਆਂ ਅਤੇ ਬਿੱਲੀਆਂ ਦੀਆਂ 35 ਵੱਖ-ਵੱਖ ਬ੍ਰੀਡਾਂ ਸ਼ਾਮਲ ਹਨ। + +![ਜਿਸ ਡੇਟਾਸੈੱਟ ਨਾਲ ਅਸੀਂ ਕੰਮ ਕਰਾਂਗੇ](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pa.png) + +ਡੇਟਾਸੈੱਟ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਸਨਿੱਪਟ ਦੀ ਵਰਤੋਂ ਕਰੋ: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## ਨੋਟਬੁੱਕ ਸ਼ੁਰੂ ਕਰਨਾ + +ਲੈਬ ਸ਼ੁਰੂ ਕਰਨ ਲਈ [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) ਖੋਲ੍ਹੋ। + +## ਸਿੱਖਣ ਵਾਲੀ ਗੱਲ + +ਤੁਸੀਂ ਸ਼ੁਰੂ ਤੋਂ ਇੱਕ ਸੰਕਲਨਾਤਮਕ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕੀਤਾ ਹੈ ਜੋ ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ! ਕਾਫ਼ੀ ਸਾਰੀਆਂ ਕਲਾਸਾਂ ਸਨ, ਪਰ ਫਿਰ ਵੀ ਤੁਸੀਂ ਵਧੀਆ ਸਹੀ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕੀਤੇ! ਇਹ ਵੀ ਸਮਝਦਾਰੀ ਵਾਲੀ ਗੱਲ ਹੈ ਕਿ ਟੌਪ-k ਸਹੀਤਾ ਨੂੰ ਮਾਪਿਆ ਜਾਵੇ, ਕਿਉਂਕਿ ਕੁਝ ਕਲਾਸਾਂ ਨੂੰ ਗਲਤ ਸਮਝਣਾ ਆਸਾਨ ਹੈ, ਜਿਹਨਾਂ ਵਿੱਚ ਮਨੁੱਖਾਂ ਲਈ ਵੀ ਸਪਸ਼ਟ ਅੰਤਰ ਨਹੀਂ ਹੈ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/pa/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..ab6932bc --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨੈਟਵਰਕ ਅਤੇ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ + +CNNs ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਵਿੱਚ ਕਾਫ਼ੀ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ, ਅਤੇ ਇਸ ਕੰਮ ਲਈ ਕਾਫ਼ੀ ਡਾਟਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਹਾਲਾਂਕਿ, ਜ਼ਿਆਦਾਤਰ ਸਮਾਂ ਉਹਨਾਂ ਬਿਹਤਰ ਲੋਅ-ਲੇਵਲ ਫਿਲਟਰਾਂ ਨੂੰ ਸਿੱਖਣ ਵਿੱਚ ਲੱਗਦਾ ਹੈ ਜੋ ਨੈਟਵਰਕ ਚਿੱਤਰਾਂ ਵਿੱਚੋਂ ਪੈਟਰਨ ਕੱਢਣ ਲਈ ਵਰਤ ਸਕਦਾ ਹੈ। ਇੱਕ ਕੁਦਰਤੀ ਸਵਾਲ ਉੱਠਦਾ ਹੈ - ਕੀ ਅਸੀਂ ਇੱਕ ਡਾਟਾਸੈਟ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਗਏ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੂੰ ਵਰਤ ਕੇ ਵੱਖ-ਵੱਖ ਚਿੱਤਰਾਂ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਲਈ ਅਡਾਪਟ ਕਰ ਸਕਦੇ ਹਾਂ ਬਿਨਾਂ ਪੂਰੇ ਟ੍ਰੇਨਿੰਗ ਪ੍ਰਕਿਰਿਆ ਦੀ ਲੋੜ ਪਏ? + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +ਇਸ ਪਹੁੰਚ ਨੂੰ **ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਕਿਉਂਕਿ ਅਸੀਂ ਇੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕ ਮਾਡਲ ਤੋਂ ਦੂਜੇ ਵਿੱਚ ਕੁਝ ਗਿਆਨ ਟ੍ਰਾਂਸਫਰ ਕਰਦੇ ਹਾਂ। ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਵਿੱਚ, ਅਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਮਾਡਲ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਜੋ ਕਿ ਕਿਸੇ ਵੱਡੇ ਚਿੱਤਰ ਡਾਟਾਸੈਟ, ਜਿਵੇਂ ਕਿ **ImageNet**, 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੁੰਦਾ ਹੈ। ਇਹ ਮਾਡਲ ਪਹਿਲਾਂ ਹੀ ਜਨਰਲ ਚਿੱਤਰਾਂ ਵਿੱਚੋਂ ਵੱਖ-ਵੱਖ ਫੀਚਰ ਕੱਢਣ ਵਿੱਚ ਵਧੀਆ ਕੰਮ ਕਰ ਸਕਦੇ ਹਨ, ਅਤੇ ਕਈ ਕੇਸਾਂ ਵਿੱਚ ਉਹਨਾਂ ਕੱਢੇ ਗਏ ਫੀਚਰਾਂ ਦੇ ਉੱਪਰ ਸਿਰਫ਼ ਇੱਕ ਕਲਾਸੀਫਾਇਰ ਬਣਾਉਣਾ ਚੰਗੇ ਨਤੀਜੇ ਦੇ ਸਕਦਾ ਹੈ। + +> ✅ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਇੱਕ ਸ਼ਬਦ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਹੋਰ ਅਕਾਦਮਿਕ ਖੇਤਰਾਂ ਵਿੱਚ ਵੀ ਮਿਲਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਿੱਖਿਆ। ਇਹ ਉਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਖੇਤਰ ਤੋਂ ਗਿਆਨ ਲੈ ਕੇ ਦੂਜੇ ਵਿੱਚ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। + +## ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਮਾਡਲ ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਟਰ ਵਜੋਂ + +ਪਿਛਲੇ ਸੈਕਸ਼ਨ ਵਿੱਚ ਜਿਨ੍ਹਾਂ ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕਸ ਦੀ ਗੱਲ ਕੀਤੀ ਗਈ ਸੀ, ਉਹ ਕਈ ਲੇਅਰਾਂ 'ਤੇ ਮੌਜੂਦ ਹੁੰਦੇ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਚਿੱਤਰ ਵਿੱਚੋਂ ਕੁਝ ਫੀਚਰ ਕੱਢਣ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੁੰਦਾ ਹੈ। ਇਹ ਲੇਅਰ ਨੀਵੀਂ ਪੱਧਰ ਦੀਆਂ ਪਿਕਸਲ ਕਾਮਬੀਨੇਸ਼ਨ (ਜਿਵੇਂ ਕਿ ਹੋਰਿਜ਼ਾਂਟਲ/ਵਰਟੀਕਲ ਲਾਈਨ ਜਾਂ ਸਟ੍ਰੋਕ) ਤੋਂ ਲੈ ਕੇ ਉੱਚ ਪੱਧਰ ਦੇ ਫੀਚਰਾਂ ਦੇ ਕਾਮਬੀਨੇਸ਼ਨ ਤੱਕ ਪਹੁੰਚਦੇ ਹਨ, ਜੋ ਕਿ ਕਿਸੇ ਚੀਜ਼ (ਜਿਵੇਂ ਕਿ ਅੱਗ ਦੀਆਂ ਅੱਖਾਂ) ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਜੇ ਅਸੀਂ CNN ਨੂੰ ਜਨਰਲ ਅਤੇ ਵੱਖ-ਵੱਖ ਚਿੱਤਰਾਂ ਦੇ ਕਾਫ਼ੀ ਵੱਡੇ ਡਾਟਾਸੈਟ 'ਤੇ ਟ੍ਰੇਨ ਕਰੀਏ, ਤਾਂ ਨੈਟਵਰਕ ਉਹ ਆਮ ਫੀਚਰ ਸਿੱਖ ਲਵੇਗਾ। + +Keras ਅਤੇ PyTorch ਦੋਵੇਂ ਵਿੱਚ ਕੁਝ ਆਮ ਆਰਕੀਟੈਕਚਰਾਂ ਲਈ ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਜ਼ਨ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਲੋਡ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ ਜ਼ਿਆਦਾਤਰ ImageNet ਚਿੱਤਰਾਂ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਗਏ ਹਨ। ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਮਾਡਲ ਪਿਛਲੇ ਪਾਠ ਦੇ [CNN Architectures](../07-ConvNets/CNN_Architectures.md) ਪੰਨੇ 'ਤੇ ਵਰਣਨ ਕੀਤੇ ਗਏ ਹਨ। ਖਾਸ ਤੌਰ 'ਤੇ, ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਮਾਡਲਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਨੂੰ ਵਰਤਣ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹੋ: + +* **VGG-16/VGG-19** ਜੋ ਸਧਾਰਣ ਮਾਡਲ ਹਨ ਪਰ ਫਿਰ ਵੀ ਚੰਗੀ ਐਕੁਰੇਸੀ ਦਿੰਦੇ ਹਨ। ਅਕਸਰ VGG ਨੂੰ ਪਹਿਲੀ ਕੋਸ਼ਿਸ਼ ਵਜੋਂ ਵਰਤਣਾ ਚੰਗਾ ਚੋਣ ਹੁੰਦਾ ਹੈ ਇਹ ਵੇਖਣ ਲਈ ਕਿ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਕਿਵੇਂ ਕੰਮ ਕਰ ਰਹੀ ਹੈ। +* **ResNet** ਮਾਈਕਰੋਸਾਫਟ ਰਿਸਰਚ ਦੁਆਰਾ 2015 ਵਿੱਚ ਪ੍ਰਸਤਾਵਿਤ ਮਾਡਲਾਂ ਦਾ ਪਰਿਵਾਰ ਹੈ। ਇਹਨਾਂ ਵਿੱਚ ਵੱਧ ਲੇਅਰ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਇਹ ਵੱਧ ਰਿਸੋਰਸ ਲੈਂਦੇ ਹਨ। +* **MobileNet** ਛੋਟੇ ਆਕਾਰ ਵਾਲੇ ਮਾਡਲਾਂ ਦਾ ਪਰਿਵਾਰ ਹੈ, ਜੋ ਮੋਬਾਈਲ ਡਿਵਾਈਸਾਂ ਲਈ ਉਚਿਤ ਹਨ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਰਿਸੋਰਸ ਘੱਟ ਹਨ ਅਤੇ ਤੁਸੀਂ ਕੁਝ ਐਕੁਰੇਸੀ ਕੁਰਬਾਨ ਕਰ ਸਕਦੇ ਹੋ, ਤਾਂ ਇਹਨਾਂ ਨੂੰ ਵਰਤੋ। + +ਇੱਥੇ VGG-16 ਨੈਟਵਰਕ ਦੁਆਰਾ ਇੱਕ ਬਿੱਲੀ ਦੀ ਤਸਵੀਰ ਵਿੱਚੋਂ ਕੱਢੇ ਗਏ ਫੀਚਰਾਂ ਦੇ ਨਮੂਨੇ ਹਨ: + +![Features extracted by VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pa.png) + +## ਬਿੱਲੀਆਂ ਵਸ. ਕੁੱਤੇ ਡਾਟਾਸੈਟ + +ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ [ਬਿੱਲੀਆਂ ਅਤੇ ਕੁੱਤੇ](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) ਡਾਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਜੋ ਕਿ ਇੱਕ ਅਸਲ-ਜੀਵਨ ਚਿੱਤਰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਸਥਿਤੀ ਦੇ ਬਹੁਤ ਨੇੜੇ ਹੈ। + +## ✍️ ਅਭਿਆਸ: ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ + +ਆਓ ਸੰਬੰਧਤ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲਤਾ ਵਿੱਚ ਦੇਖੀਏ: + +* [ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## ਵਿਜ਼ੁਅਲਾਈਜ਼ਿੰਗ ਐਡਵਰਸਰੀਅਲ ਬਿੱਲੀ + +ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੇ *ਦਿਮਾਗ* ਵਿੱਚ ਵੱਖ-ਵੱਖ ਪੈਟਰਨ ਹੁੰਦੇ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ **ਆਦਰਸ਼ ਬਿੱਲੀ** (ਤੇ ਨਾਲ ਹੀ ਆਦਰਸ਼ ਕੁੱਤਾ, ਆਦਰਸ਼ ਜ਼ੀਬਰਾ, ਆਦਿ) ਦੇ ਧਾਰਨਾ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ। ਇਹ ਦਿਲਚਸਪ ਹੋਵੇਗਾ ਕਿ ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ ਇਸ ਚਿੱਤਰ ਨੂੰ **ਦਿਖਾਇਆ ਜਾਵੇ**। ਹਾਲਾਂਕਿ, ਇਹ ਸੌਖਾ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਪੈਟਰਨ ਨੈਟਵਰਕ ਦੇ ਵਜ਼ਨਾਂ ਵਿੱਚ ਫੈਲੇ ਹੋਏ ਹਨ ਅਤੇ ਇੱਕ ਹਾਇਰਾਰਕੀਕਲ ਸਟ੍ਰਕਚਰ ਵਿੱਚ ਆਯੋਜਿਤ ਹਨ। + +ਇੱਕ ਪਹੁੰਚ ਜੋ ਅਸੀਂ ਅਪਣਾਉ ਸਕਦੇ ਹਾਂ ਉਹ ਹੈ ਇੱਕ ਰੈਂਡਮ ਚਿੱਤਰ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨਾ, ਅਤੇ ਫਿਰ **ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ** ਤਕਨੀਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਸ ਚਿੱਤਰ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸਹੀ ਕਰਨਾ ਕਿ ਨੈਟਵਰਕ ਸੋਚੇ ਕਿ ਇਹ ਬਿੱਲੀ ਹੈ। + +![Image Optimization Loop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pa.png) + +ਹਾਲਾਂਕਿ, ਜੇ ਅਸੀਂ ਇਹ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਸਾਨੂੰ ਕੁਝ ਰੈਂਡਮ ਸ਼ੋਰ ਵਰਗਾ ਮਿਲੇਗਾ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ *ਨੈਟਵਰਕ ਨੂੰ ਇਹ ਸੋਚਣ ਲਈ ਕਈ ਤਰੀਕੇ ਹਨ ਕਿ ਇਨਪੁਟ ਚਿੱਤਰ ਬਿੱਲੀ ਹੈ*, ਜਿਸ ਵਿੱਚ ਕੁਝ ਵਿਜ਼ੂਅਲ ਤੌਰ 'ਤੇ ਸਮਝਦਾਰ ਨਹੀਂ ਹੁੰਦੇ। ਜਦੋਂ ਕਿ ਉਹ ਚਿੱਤਰ ਬਿੱਲੀ ਲਈ ਆਮ ਪੈਟਰਨ ਸ਼ਾਮਲ ਕਰਦੇ ਹਨ, ਉਨ੍ਹਾਂ ਨੂੰ ਵਿਜ਼ੂਅਲ ਤੌਰ 'ਤੇ ਵੱਖਰਾ ਬਣਾਉਣ ਲਈ ਕੁਝ ਵੀ ਨਹੀਂ ਹੈ। + +ਨਤੀਜੇ ਨੂੰ ਸੁਧਾਰਨ ਲਈ, ਅਸੀਂ ਲਾਸ ਫੰਕਸ਼ਨ ਵਿੱਚ ਇੱਕ ਹੋਰ ਟਰਮ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹਾਂ, ਜਿਸਨੂੰ **ਵੈਰੀਏਸ਼ਨ ਲਾਸ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਇੱਕ ਮੈਟ੍ਰਿਕ ਹੈ ਜੋ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਚਿੱਤਰ ਦੇ ਪਾਸ ਪਾਸ ਦੇ ਪਿਕਸਲ ਕਿੰਨੇ ਮਿਲਦੇ-ਜੁਲਦੇ ਹਨ। ਵੈਰੀਏਸ਼ਨ ਲਾਸ ਨੂੰ ਘਟਾਉਣ ਨਾਲ ਚਿੱਤਰ ਹੌਲੀ ਹੁੰਦਾ ਹੈ ਅਤੇ ਸ਼ੋਰ ਦੂਰ ਹੁੰਦਾ ਹੈ - ਇਸ ਤਰ੍ਹਾਂ ਹੋਰ ਵਿਜ਼ੂਅਲ ਤੌਰ 'ਤੇ ਆਕਰਸ਼ਕ ਪੈਟਰਨ ਸਾਹਮਣੇ ਆਉਂਦੇ ਹਨ। ਇੱਥੇ ਉਹ "ਆਦਰਸ਼" ਚਿੱਤਰਾਂ ਦੇ ਉਦਾਹਰਨ ਹਨ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਬਿੱਲੀ ਅਤੇ ਜ਼ੀਬਰਾ ਵਜੋਂ ਉੱਚ ਸੰਭਾਵਨਾ ਨਾਲ ਕਲਾਸੀਫਾਈ ਕੀਤਾ ਗਿਆ ਹੈ: + +![Ideal Cat](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pa.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pa.png) +-----|----- + *ਆਦਰਸ਼ ਬਿੱਲੀ* | *ਆਦਰਸ਼ ਜ਼ੀਬਰਾ* + +ਇਸੇ ਪਹੁੰਚ ਨੂੰ ਵਰਤ ਕੇ ਨਿਊਰਲ ਨੈਟਵਰਕ 'ਤੇ **ਐਡਵਰਸਰੀਅਲ ਅਟੈਕਸ** ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਮੰਨ ਲਵੋ ਕਿ ਅਸੀਂ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੂੰ ਧੋਖਾ ਦੇਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਅਤੇ ਇੱਕ ਕੁੱਤੇ ਨੂੰ ਬਿੱਲੀ ਵਜੋਂ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਜੇ ਅਸੀਂ ਕੁੱਤੇ ਦੀ ਤਸਵੀਰ ਲੈਂਦੇ ਹਾਂ, ਜਿਸਨੂੰ ਨੈਟਵਰਕ ਦੁਆਰਾ ਕੁੱਤੇ ਵਜੋਂ ਪਛਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਸਹੀ ਕਰ ਸਕਦੇ ਹਾਂ ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਜਦ ਤੱਕ ਨੈਟਵਰਕ ਇਸਨੂੰ ਬਿੱਲੀ ਵਜੋਂ ਕਲਾਸੀਫਾਈ ਕਰਨਾ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰਦਾ: + +![Picture of a Dog](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pa.png) | ![Picture of a dog classified as a cat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pa.png) +-----|----- +*ਕੁੱਤੇ ਦੀ ਮੂਲ ਤਸਵੀਰ* | *ਕੁੱਤੇ ਦੀ ਤਸਵੀਰ ਜੋ ਬਿੱਲੀ ਵਜੋਂ ਕਲਾਸੀਫਾਈ ਕੀਤੀ ਗਈ ਹੈ* + +ਉਪਰੋਕਤ ਨਤੀਜਿਆਂ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣ ਲਈ ਕੋਡ ਹੇਠਾਂ ਦਿੱਤੀ ਨੋਟਬੁੱਕ ਵਿੱਚ ਵੇਖੋ: + +* [ਆਦਰਸ਼ ਅਤੇ ਐਡਵਰਸਰੀਅਲ ਬਿੱਲੀ - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## ਨਤੀਜਾ + +ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਇੱਕ ਕਸਟਮ ਆਬਜੈਕਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਟਾਸਕ ਲਈ ਤੇਜ਼ੀ ਨਾਲ ਇੱਕ ਕਲਾਸੀਫਾਇਰ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਉੱਚ ਐਕੁਰੇਸੀ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਹੁਣ ਅਸੀਂ ਜਿਹੜੇ ਹੋਰ ਜਟਿਲ ਟਾਸਕ ਹੱਲ ਕਰ ਰਹੇ ਹਾਂ ਉਹ ਵੱਧ ਕੰਪਿਊਟੇਸ਼ਨਲ ਪਾਵਰ ਦੀ ਲੋੜ ਕਰਦੇ ਹਨ ਅਤੇ ਆਸਾਨੀ ਨਾਲ CPU 'ਤੇ ਹੱਲ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ। ਅਗਲੇ ਯੂਨਿਟ ਵਿੱਚ, ਅਸੀਂ ਘੱਟ ਕੰਪਿਊਟ ਰਿਸੋਰਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਹੀ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਇੱਕ ਹੋਰ ਹਲਕੀ ਵਰਜਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ, ਜਿਸ ਨਾਲ ਸਿਰਫ਼ ਥੋੜ੍ਹੀ ਘੱਟ ਐਕੁਰੇਸੀ ਮਿਲਦੀ ਹੈ। + +## 🚀 ਚੈਲੈਂਜ + +ਸਾਥੀ ਨੋਟਬੁੱਕਸ ਵਿੱਚ, ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ ਦੇ ਕੁਝ ਹੱਦ ਤੱਕ ਸਮਾਨ ਹੋਣ ਨਾਲ ਟ੍ਰਾਂਸਫਰ ਗਿਆਨ ਕਿਵੇਂ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ, ਇਸ ਬਾਰੇ ਨੋਟਸ ਹਨ (ਸ਼ਾਇਦ ਕਿਸੇ ਨਵੇਂ ਪ੍ਰਾਣੀ ਦੀ ਕਿਸਮ)। ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਵੇਂ ਕਿਸਮ ਦੇ ਚਿੱਤਰਾਂ ਨਾਲ ਕੁਝ ਪ੍ਰਯੋਗ ਕਰੋ ਇਹ ਵੇਖਣ ਲਈ ਕਿ ਤੁਹਾਡੇ ਟ੍ਰਾਂਸਫਰ ਗਿਆਨ ਮਾਡਲ ਕਿੰਨਾ ਚੰਗਾ ਜਾਂ ਮਾੜਾ ਪ੍ਰਦਰਸ਼ਨ ਕਰਦੇ ਹਨ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +[TrainingTricks.md](TrainingTricks.md) ਨੂੰ ਪੜ੍ਹੋ ਤਾਂ ਜੋ ਆਪਣੇ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਬਾਰੇ ਆਪਣਾ ਗਿਆਨ ਵਧਾ ਸਕੋ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਲੈਬ ਵਿੱਚ, ਅਸੀਂ ਅਸਲ-ਜੀਵਨ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) ਪੈਟਸ ਡਾਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ ਜਿਸ ਵਿੱਚ ਬਿੱਲੀਆਂ ਅਤੇ ਕੁੱਤਿਆਂ ਦੀਆਂ 35 ਬ੍ਰੀਡਾਂ ਹਨ, ਅਤੇ ਅਸੀਂ ਇੱਕ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਕਲਾਸੀਫਾਇਰ ਬਣਾਵਾਂਗੇ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/pa/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..334f1d11 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,113 @@ + +# ਡੀਪ ਲਰਨਿੰਗ ਟ੍ਰੇਨਿੰਗ ਟ੍ਰਿਕਸ + +ਜਿਵੇਂ ਨਿਊਰਲ ਨੈਟਵਰਕ ਗਹਿਰੇ ਹੁੰਦੇ ਹਨ, ਉਨ੍ਹਾਂ ਦੀ ਟ੍ਰੇਨਿੰਗ ਦੀ ਪ੍ਰਕਿਰਿਆ ਹੋਰ ਅਤੇ ਹੋਰ ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦੀ ਹੈ। ਇੱਕ ਵੱਡੀ ਸਮੱਸਿਆ [ਵੈਨਿਸਿੰਗ ਗ੍ਰੇਡੀਅੰਟ](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ਜਾਂ [ਐਕਸਪਲੋਡਿੰਗ ਗ੍ਰੇਡੀਅੰਟ](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) ਹੈ। [ਇਹ ਪੋਸਟ](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ਉਨ੍ਹਾਂ ਸਮੱਸਿਆਵਾਂ ਬਾਰੇ ਚੰਗੀ ਜਾਣਕਾਰੀ ਦਿੰਦੀ ਹੈ। + +ਡੀਪ ਨੈਟਵਰਕ ਦੀ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਹੋਰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਬਣਾਉਣ ਲਈ ਕੁਝ ਤਕਨੀਕਾਂ ਵਰਤੀ ਜਾ ਸਕਦੀਆਂ ਹਨ। + +## ਮੁੱਲਾਂ ਨੂੰ ਵਾਜਬ ਇੰਟਰਵਲ ਵਿੱਚ ਰੱਖਣਾ + +ਸੰਖਿਆਤਮਕ ਗਣਨਾਵਾਂ ਨੂੰ ਹੋਰ ਸਥਿਰ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੇ ਸਾਰੇ ਮੁੱਲ ਵਾਜਬ ਪੈਮਾਨੇ ਵਿੱਚ ਹਨ, ਆਮ ਤੌਰ 'ਤੇ [-1..1] ਜਾਂ [0..1]। ਇਹ ਕੋਈ ਬਹੁਤ ਸਖਤ ਜ਼ਰੂਰਤ ਨਹੀਂ ਹੈ, ਪਰ ਫਲੋਟਿੰਗ ਪੌਇੰਟ ਗਣਨਾਵਾਂ ਦੀ ਪ੍ਰਕਿਰਤੀ ਅਜਿਹੀ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਮੈਗਨੀਟਿਊਡ ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਇਕੱਠੇ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਮੈਨਿਪੁਲੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਉਦਾਹਰਨ ਲਈ, ਜੇ ਅਸੀਂ 10-10 ਅਤੇ 1010 ਨੂੰ ਜੋੜਦੇ ਹਾਂ, ਤਾਂ ਸਾਨੂੰ ਸੰਭਾਵਨਾ ਹੈ ਕਿ 1010 ਮਿਲੇਗਾ, ਕਿਉਂਕਿ ਛੋਟਾ ਮੁੱਲ "ਵੱਡੇ" ਦੇ ਆਰਡਰ ਵਿੱਚ ਬਦਲਿਆ ਜਾਵੇਗਾ, ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਮਾਂਟਿਸਾ ਖਤਮ ਹੋ ਜਾਵੇਗੀ। + +ਜਿਆਦਾਤਰ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ [-1..1] ਦੇ ਆਸ-ਪਾਸ ਗੈਰ-ਰੇਖਿਕਤਾ ਰੱਖਦੇ ਹਨ, ਇਸ ਲਈ ਸਾਰੇ ਇਨਪੁਟ ਡਾਟਾ ਨੂੰ [-1..1] ਜਾਂ [0..1] ਇੰਟਰਵਲ ਵਿੱਚ ਸਕੇਲ ਕਰਨਾ ਵਾਜਬ ਹੈ। + +## ਸ਼ੁਰੂਆਤੀ ਵਜ਼ਨ ਇਨਿਸ਼ੀਅਲਾਈਜ਼ੇਸ਼ਨ + +ਆਦਰਸ਼ ਤੌਰ 'ਤੇ, ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਨੈਟਵਰਕ ਲੇਅਰਾਂ ਵਿੱਚੋਂ ਗੁਜ਼ਰਨ ਤੋਂ ਬਾਅਦ ਮੁੱਲ ਇੱਕੋ ਪੈਮਾਨੇ ਵਿੱਚ ਰਹਿਣ। ਇਸ ਲਈ, ਵਜ਼ਨਾਂ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਮੁੱਲਾਂ ਦੇ ਵੰਡਨ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਿਆ ਜਾ ਸਕੇ। + +**N(0,1)** ਵਰਗਾ ਨਾਰਮਲ ਵੰਡਨ ਚੰਗਾ ਵਿਚਾਰ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਜੇ ਸਾਡੇ ਕੋਲ *n* ਇਨਪੁਟ ਹਨ, ਤਾਂ ਆਉਟਪੁੱਟ ਦਾ ਸਟੈਂਡਰਡ ਡਿਵਿਏਸ਼ਨ *n* ਹੋਵੇਗਾ, ਅਤੇ ਮੁੱਲ [0..1] ਇੰਟਰਵਲ ਤੋਂ ਬਾਹਰ ਚਲੇ ਜਾਣ ਦੀ ਸੰਭਾਵਨਾ ਹੈ। + +ਨਿਮਨਲਿਖਤ ਇਨਿਸ਼ੀਅਲਾਈਜ਼ੇਸ਼ਨ ਅਕਸਰ ਵਰਤੇ ਜਾਂਦੇ ਹਨ: + +* ਯੂਨੀਫਾਰਮ ਵੰਡਨ -- `uniform` +* **N(0,1/n)** -- `gaussian` +* **N(0,1/√n_in)** ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਇਨਪੁਟ ਦਾ ਮੀਨ ਜ਼ੀਰੋ ਹੈ ਅਤੇ ਸਟੈਂਡਰਡ ਡਿਵਿਏਸ਼ਨ 1 ਹੈ, ਤਾਂ ਉਹੀ ਮੀਨ/ਸਟੈਂਡਰਡ ਡਿਵਿਏਸ਼ਨ ਬਰਕਰਾਰ ਰਹੇਗਾ। +* **N(0,√2/(n_in+n_out))** -- **Xavier initialization** (`glorot`), ਇਹ ਸਿਗਨਲਾਂ ਨੂੰ ਫਾਰਵਰਡ ਅਤੇ ਬੈਕਵਰਡ ਪ੍ਰੋਪਾਗੇਸ਼ਨ ਦੌਰਾਨ ਪੈਮਾਨੇ ਵਿੱਚ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। + +## ਬੈਚ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ + +ਸਹੀ ਵਜ਼ਨ ਇਨਿਸ਼ੀਅਲਾਈਜ਼ੇਸ਼ਨ ਦੇ ਨਾਲ ਵੀ, ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਵਜ਼ਨ ਬਹੁਤ ਵੱਡੇ ਜਾਂ ਛੋਟੇ ਹੋ ਸਕਦੇ ਹਨ, ਅਤੇ ਇਹ ਸਿਗਨਲਾਂ ਨੂੰ ਸਹੀ ਪੈਮਾਨੇ ਤੋਂ ਬਾਹਰ ਲੈ ਜਾ ਸਕਦੇ ਹਨ। ਅਸੀਂ **ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ** ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿਗਨਲਾਂ ਨੂੰ ਵਾਪਸ ਸਹੀ ਪੈਮਾਨੇ ਵਿੱਚ ਲਿਆ ਸਕਦੇ ਹਾਂ। ਜਦਕਿ ਕਈ ਤਕਨੀਕਾਂ ਹਨ (Weight Normalization, Layer Normalization), ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਤਕਨੀਕ ਬੈਚ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ ਹੈ। + +**ਬੈਚ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ** ਦਾ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਮਿਨੀਬੈਚ ਦੇ ਸਾਰੇ ਮੁੱਲਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ, ਅਤੇ ਉਨ੍ਹਾਂ ਮੁੱਲਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ ਕਰਨਾ (ਜਾਂ ਮੀਨ ਘਟਾਉਣਾ ਅਤੇ ਸਟੈਂਡਰਡ ਡਿਵਿਏਸ਼ਨ ਨਾਲ ਵੰਡਣਾ)। ਇਹ ਇੱਕ ਨੈਟਵਰਕ ਲੇਅਰ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਵਜ਼ਨਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਪਰ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ ਕਰਦਾ ਹੈ। ਇਸ ਦੇ ਨਤੀਜੇ ਵਜੋਂ, ਅਸੀਂ ਆਖਰੀ ਸਹੀਤਾ ਵਿੱਚ ਵਾਧਾ ਅਤੇ ਤੇਜ਼ ਟ੍ਰੇਨਿੰਗ ਦੇਖ ਸਕਦੇ ਹਾਂ। + +ਇਹ ਹੈ [ਅਸਲ ਪੇਪਰ](https://arxiv.org/pdf/1502.03167.pdf) ਬੈਚ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ 'ਤੇ, [ਵਿਕੀਪੀਡੀਆ 'ਤੇ ਵਿਆਖਿਆ](https://en.wikipedia.org/wiki/Batch_normalization), ਅਤੇ [ਇੱਕ ਚੰਗੀ ਸ਼ੁਰੂਆਤੀ ਬਲੌਗ ਪੋਸਟ](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (ਅਤੇ ਇੱਕ [ਰੂਸੀ ਵਿੱਚ](https://habrahabr.ru/post/309302/))। + +## ਡ੍ਰੌਪਆਉਟ + +**ਡ੍ਰੌਪਆਉਟ** ਇੱਕ ਦਿਲਚਸਪ ਤਕਨੀਕ ਹੈ ਜੋ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਕੁਝ ਪ੍ਰਤੀਸ਼ਤ ਰੈਂਡਮ ਨਿਊਰੋਨ ਨੂੰ ਹਟਾ ਦਿੰਦੀ ਹੈ। ਇਹ ਇੱਕ ਲੇਅਰ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਪੈਰਾਮੀਟਰ ਹੁੰਦਾ ਹੈ (ਹਟਾਏ ਜਾਣ ਵਾਲੇ ਨਿਊਰੋਨ ਦਾ ਪ੍ਰਤੀਸ਼ਤ, ਆਮ ਤੌਰ 'ਤੇ 10%-50%), ਅਤੇ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਇਹ ਇਨਪੁਟ ਵੇਕਟਰ ਦੇ ਰੈਂਡਮ ਤੱਤਾਂ ਨੂੰ ਜ਼ੀਰੋ ਕਰ ਦਿੰਦਾ ਹੈ, ਇਸਨੂੰ ਅਗਲੇ ਲੇਅਰ ਵਿੱਚ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ। + +ਜਦਕਿ ਇਹ ਇੱਕ ਅਜੀਬ ਵਿਚਾਰ ਲੱਗ ਸਕਦਾ ਹੈ, ਤੁਸੀਂ MNIST ਡਿਜਿਟ ਕਲਾਸੀਫਾਇਰ ਦੀ ਟ੍ਰੇਨਿੰਗ 'ਤੇ ਡ੍ਰੌਪਆਉਟ ਦੇ ਪ੍ਰਭਾਵ ਨੂੰ [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) ਨੋਟਬੁੱਕ ਵਿੱਚ ਦੇਖ ਸਕਦੇ ਹੋ। ਇਹ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਤੇਜ਼ ਕਰਦਾ ਹੈ ਅਤੇ ਘੱਟ ਟ੍ਰੇਨਿੰਗ ਇਪੋਕਸ ਵਿੱਚ ਉੱਚ ਸਹੀਤਾ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਸਹਾਇਕ ਹੈ। + +ਇਸ ਪ੍ਰਭਾਵ ਨੂੰ ਕਈ ਤਰੀਕਿਆਂ ਨਾਲ ਸਮਝਾਇਆ ਜਾ ਸਕਦਾ ਹੈ: + +* ਇਸਨੂੰ ਮਾਡਲ ਲਈ ਇੱਕ ਰੈਂਡਮ ਸ਼ਾਕਿੰਗ ਫੈਕਟਰ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਸਥਾਨਕ ਮਿਨੀਮਮ ਤੋਂ ਬਾਹਰ ਆਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਲੈ ਜਾਂਦਾ ਹੈ। +* ਇਸਨੂੰ *implicit model averaging* ਵਜੋਂ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਅਸੀਂ ਕਹਿ ਸਕਦੇ ਹਾਂ ਕਿ ਡ੍ਰੌਪਆਉਟ ਦੌਰਾਨ ਅਸੀਂ ਥੋੜ੍ਹਾ ਵੱਖਰਾ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰ ਰਹੇ ਹਾਂ। + +> *ਕੁਝ ਲੋਕ ਕਹਿੰਦੇ ਹਨ ਕਿ ਜਦੋਂ ਇੱਕ ਨਸ਼ੇ ਵਿੱਚ ਹੋਇਆ ਵਿਅਕਤੀ ਕੁਝ ਸਿੱਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਉਹ ਇਸਨੂੰ ਅਗਲੇ ਸਵੇਰੇ ਬਿਹਤਰ ਯਾਦ ਕਰਦਾ ਹੈ, ਮੁਕਾਬਲੇ ਇੱਕ ਸਧਾਰਨ ਵਿਅਕਤੀ ਦੇ, ਕਿਉਂਕਿ ਕੁਝ ਖਰਾਬ ਨਿਊਰੋਨ ਵਾਲਾ ਦਿਮਾਗ ਮਤਲਬ ਨੂੰ ਸਮਝਣ ਲਈ ਬਿਹਤਰ ਅਨੁਕੂਲ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। ਅਸੀਂ ਕਦੇ ਆਪਣੇ ਆਪ ਇਸਨੂੰ ਸੱਚ ਜਾਂ ਝੂਠ ਨਹੀਂ ਪਰਖਿਆ।* + +## ਓਵਰਫਿਟਿੰਗ ਨੂੰ ਰੋਕਣਾ + +ਡੀਪ ਲਰਨਿੰਗ ਦੇ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਪਹਲੂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ [ਓਵਰਫਿਟਿੰਗ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ਨੂੰ ਰੋਕਣ ਦੀ ਯੋਗਤਾ। ਜਦਕਿ ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਨਿਊਰਲ ਨੈਟਵਰਕ ਮਾਡਲ ਵਰਤਣ ਦਾ ਲਾਲਚ ਹੋ ਸਕਦਾ ਹੈ, ਅਸੀਂ ਹਮੇਸ਼ਾ ਮਾਡਲ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਨਮੂਨਿਆਂ ਦੀ ਗਿਣਤੀ ਨਾਲ ਸੰਤੁਲਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। + +> ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ [ਓਵਰਫਿਟਿੰਗ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ਦੇ ਸੰਕਲਪ ਨੂੰ ਸਮਝਦੇ ਹੋ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਪੇਸ਼ ਕੀਤਾ ਹੈ! + +ਓਵਰਫਿਟਿੰਗ ਨੂੰ ਰੋਕਣ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ: + +* ਅਗੇ ਰੋਕਣਾ -- ਵੈਲੀਡੇਸ਼ਨ ਸੈਟ 'ਤੇ ਗਲਤੀ ਨੂੰ ਲਗਾਤਾਰ ਮਾਨਟਰ ਕਰਨਾ ਅਤੇ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਰੋਕਣਾ ਜਦੋਂ ਵੈਲੀਡੇਸ਼ਨ ਗਲਤੀ ਵਧਣ ਲੱਗਦੀ ਹੈ। +* Explicit Weight Decay / Regularization -- ਲੌਸ ਫੰਕਸ਼ਨ ਵਿੱਚ ਵਜ਼ਨਾਂ ਦੇ ਉੱਚ ਅਬਸੋਲਿਊਟ ਮੁੱਲਾਂ ਲਈ ਇੱਕ ਵਾਧੂ ਜੁਰਮਾਨਾ ਸ਼ਾਮਲ ਕਰਨਾ, ਜੋ ਮਾਡਲ ਨੂੰ ਬਹੁਤ ਅਸਥਿਰ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। +* ਮਾਡਲ ਐਵਰੇਜਿੰਗ -- ਕਈ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਅਤੇ ਫਿਰ ਨਤੀਜੇ ਨੂੰ ਐਵਰੇਜ ਕਰਨਾ। ਇਹ ਵੈਰੀਅੰਸ ਨੂੰ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। +* ਡ੍ਰੌਪਆਉਟ (Implicit Model Averaging) + +## ਓਪਟੀਮਾਈਜ਼ਰ / ਟ੍ਰੇਨਿੰਗ ਐਲਗੋਰਿਥਮ + +ਟ੍ਰੇਨਿੰਗ ਦਾ ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਪਹਲੂ ਚੰਗੇ ਟ੍ਰੇਨਿੰਗ ਐਲਗੋਰਿਥਮ ਦੀ ਚੋਣ ਕਰਨਾ ਹੈ। ਜਦਕਿ ਕਲਾਸਿਕ **gradient descent** ਇੱਕ ਵਾਜਬ ਚੋਣ ਹੈ, ਇਹ ਕਈ ਵਾਰ ਬਹੁਤ ਹੌਲੀ ਹੋ ਸਕਦੀ ਹੈ, ਜਾਂ ਹੋਰ ਸਮੱਸਿਆਵਾਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀ ਹੈ। + +ਡੀਪ ਲਰਨਿੰਗ ਵਿੱਚ, ਅਸੀਂ **Stochastic Gradient Descent** (SGD) ਵਰਤਦੇ ਹਾਂ, ਜੋ ਕਿ ਮਿਨੀਬੈਚਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤਾ ਗਿਆ gradient descent ਹੈ, ਜੋ ਟ੍ਰੇਨਿੰਗ ਸੈਟ ਤੋਂ ਰੈਂਡਮ ਤਰੀਕੇ ਨਾਲ ਚੁਣੇ ਜਾਂਦੇ ਹਨ। ਵਜ਼ਨਾਂ ਨੂੰ ਇਸ ਫਾਰਮੂਲੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: + +wt+1 = wt - η∇ℒ + +### ਮੋਮੈਂਟਮ + +**momentum SGD** ਵਿੱਚ, ਅਸੀਂ ਪਿਛਲੇ ਕਦਮਾਂ ਤੋਂ ਗ੍ਰੇਡੀਅੰਟ ਦਾ ਇੱਕ ਹਿੱਸਾ ਰੱਖਦੇ ਹਾਂ। ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਹੈ ਜਿਵੇਂ ਅਸੀਂ ਜਦੋਂ ਕਿਸੇ ਦਿਸ਼ਾ ਵਿੱਚ ਜਾ ਰਹੇ ਹੁੰਦੇ ਹਾਂ ਅਤੇ ਸਾਨੂੰ ਇੱਕ ਵੱਖਰੀ ਦਿਸ਼ਾ ਵਿੱਚ ਝਟਕਾ ਮਿਲਦਾ ਹੈ, ਤਾਂ ਸਾਡੀ ਰਾਹਦਾਰੀ ਤੁਰੰਤ ਨਹੀਂ ਬਦਲਦੀ, ਪਰ ਅਸਲ ਮੂਵਮੈਂਟ ਦਾ ਕੁਝ ਹਿੱਸਾ ਰੱਖਦੀ ਹੈ। ਇੱਥੇ ਅਸੀਂ *speed* ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਇੱਕ ਹੋਰ ਵੇਕਟਰ v ਪੇਸ਼ ਕਰਦੇ ਹਾਂ: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +ਇੱਥੇ ਪੈਰਾਮੀਟਰ γ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਜੜਤ ਨੂੰ ਕਿੰਨਾ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ: γ=0 ਕਲਾਸਿਕ SGD ਦੇ ਸਮਾਨ ਹੈ; γ=1 ਇੱਕ ਸ਼ੁੱਧ ਮੋਸ਼ਨ ਸਮੀਕਰਨ ਹੈ। + +### Adam, Adagrad, ਆਦਿ + +ਜਦੋਂ ਹਰ ਲੇਅਰ ਵਿੱਚ ਅਸੀਂ ਸਿਗਨਲਾਂ ਨੂੰ ਕੁਝ ਮੈਟ੍ਰਿਕਸ Wi ਨਾਲ ਗੁਣਾ ਕਰਦੇ ਹਾਂ, ||Wi|| ਦੇ ਆਧਾਰ 'ਤੇ, ਗ੍ਰੇਡੀਅੰਟ ਜਾਂ ਤਾਂ ਘਟ ਸਕਦਾ ਹੈ ਅਤੇ 0 ਦੇ ਨੇੜੇ ਹੋ ਸਕਦਾ ਹੈ, ਜਾਂ ਬੇਹਦ ਵਧ ਸਕਦਾ ਹੈ। ਇਹ Exploding/Vanishing Gradients ਸਮੱਸਿਆ ਦਾ ਮੂਲ ਹੈ। + +ਇਸ ਸਮੱਸਿਆ ਦਾ ਇੱਕ ਹੱਲ ਇਹ ਹੈ ਕਿ ਸਮੀਕਰਨ ਵਿੱਚ ਗ੍ਰੇਡੀਅੰਟ ਦੀ ਸਿਰਫ ਦਿਸ਼ਾ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਵੇ, ਅਤੇ ਅਬਸੋਲਿਊਟ ਮੁੱਲ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾਵੇ, ਜਿਵੇਂ: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), ਜਿੱਥੇ ||∇ℒ|| = √∑(∇ℒ)2 + +ਇਸ ਐਲਗੋਰਿਥਮ ਨੂੰ **Adagrad** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਹੋਰ ਐਲਗੋਰਿਥਮ ਜੋ ਇਹੀ ਵਿਚਾਰ ਵਰਤਦੇ ਹਨ: **RMSProp**, **Adam** + +> **Adam** ਨੂੰ ਕਈ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਬਹੁਤ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਐਲਗੋਰਿਥਮ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਜੇ ਤੁਸੀਂ ਇਹ ਨਹੀਂ ਜਾਣਦੇ ਕਿ ਕਿਹੜਾ ਵਰਤਣਾ ਹੈ - Adam ਵਰਤੋ। + +### Gradient clipping + +Gradient clipping ਉਪਰੋਕਤ ਵਿਚਾਰ ਦਾ ਇੱਕ ਵਧਾਉ ਹੈ। ਜਦੋਂ ||∇ℒ|| ≤ θ ਹੁੰਦਾ ਹੈ, ਅਸੀਂ ਵਜ਼ਨ ਅਨੁਕੂਲਤਾ ਵਿੱਚ ਅਸਲ ਗ੍ਰੇਡੀਅੰਟ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ, ਅਤੇ ਜਦੋਂ ||∇ℒ|| > θ ਹੁੰਦਾ ਹੈ - ਅਸੀਂ ਗ੍ਰੇਡੀਅੰਟ ਨੂੰ ਇਸਦੇ ਨਾਰਮ ਨਾਲ ਵੰਡ ਦਿੰਦੇ ਹਾਂ। ਇੱਥੇ θ ਇੱਕ ਪੈਰਾਮੀਟਰ ਹੈ, ਜਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ ਅਸੀਂ θ=1 ਜਾਂ θ=10 ਲੈ ਸਕਦੇ ਹਾਂ। + +### Learning rate decay + +ਟ੍ਰੇਨਿੰਗ ਦੀ ਸਫਲਤਾ ਅਕਸਰ ਲਰਨਿੰਗ ਰੇਟ ਪੈਰਾਮੀਟਰ η 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। ਇਹ ਤਰਕਸੰਗਤ ਹੈ ਕਿ η ਦੇ ਵੱਡੇ ਮੁੱਲ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਤੇਜ਼ ਕਰਦੇ ਹਨ, ਜੋ ਕਿ ਅਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਟ੍ਰੇਨਿੰਗ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਚਾਹੁੰਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ η ਦੇ ਛੋਟੇ ਮੁੱਲ ਨੈਟਵਰਕ ਨੂੰ ਫਾਈਨ-ਟਿਊਨ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ। ਇਸ ਲਈ, ਜਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ ਅਸੀਂ ਟ੍ਰੇਨਿੰਗ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ η ਨੂੰ ਘਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। + +ਇਹ ਟ੍ਰੇਨਿੰਗ ਦੇ ਹਰ ਇਪੋਕ ਦੇ ਬਾਅਦ η ਨੂੰ ਕੁਝ ਸੰਖਿਆ (ਜਿਵੇਂ 0.98) ਨਾਲ ਗੁਣਾ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜਾਂ ਹੋਰ ਜਟਿਲ **learning rate schedule** ਦੀ ਵਰਤੋਂ ਕਰਕੇ। + +## ਵੱਖ-ਵੱਖ ਨੈਟਵਰਕ ਆਰਕੀਟੈਕਚਰ + +ਤੁਹਾਡੇ ਸਮੱਸਿਆ ਲਈ ਸਹੀ ਨੈਟਵਰਕ ਆਰਕੀਟੈਕਚਰ ਦੀ ਚੋਣ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ, ਅਸੀਂ ਇੱਕ ਆਰਕੀਟੈਕਚਰ ਲੈਂਦੇ ਹਾਂ ਜੋ ਸਾਡੇ ਵਿਸ਼ੇਸ਼ ਕੰਮ (ਜਾਂ ਇਸਦੇ ਸਮਾਨ) ਲਈ ਸਫਲ ਸਾਬਤ ਹੋਇਆ ਹੈ। ਇੱਥੇ ਇੱਕ [ਚੰਗਾ ਜਾਇਜ਼ਾ](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) ਹੈ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਲਈ + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/pa/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..e21a098a --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# ਆਕਸਫੋਰਡ ਪੈਟਸ ਦੀ ਵਰਗੀਕਰਨ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਪੈਟ ਨਰਸਰੀ ਲਈ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਵਿਕਸਿਤ ਕਰਨੀ ਹੈ ਜੋ ਸਾਰੇ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਨੂੰ ਕੈਟਾਲੌਗ ਕਰ ਸਕੇ। ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਇੱਕ ਸ਼ਾਨਦਾਰ ਵਿਸ਼ੇਸ਼ਤਾ ਇਹ ਹੋਵੇਗੀ ਕਿ ਇਹ ਫੋਟੋ ਤੋਂ ਬ੍ਰੀਡ ਨੂੰ ਆਟੋਮੈਟਿਕ ਪਛਾਣ ਸਕੇ। ਇਸ ਅਸਾਈਨਮੈਂਟ ਵਿੱਚ, ਅਸੀਂ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) ਪੈਟਸ ਡੇਟਾਸੈਟ ਤੋਂ ਅਸਲੀ ਜ਼ਿੰਦਗੀ ਦੇ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦੀਆਂ ਤਸਵੀਰਾਂ ਦੀ ਵਰਗੀਕਰਨ ਕਰਾਂਗੇ। + +## ਡੇਟਾਸੈਟ + +ਅਸੀਂ ਮੂਲ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) ਪੈਟਸ ਡੇਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਜਿਸ ਵਿੱਚ ਕੁੱਤਿਆਂ ਅਤੇ ਬਿਲੀਆਂ ਦੀਆਂ 35 ਵੱਖ-ਵੱਖ ਬ੍ਰੀਡਾਂ ਸ਼ਾਮਲ ਹਨ। + +ਡੇਟਾਸੈਟ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ, ਇਸ ਕੋਡ ਸਨਿੱਪਟ ਦੀ ਵਰਤੋਂ ਕਰੋ: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## ਨੋਟਬੁੱਕ ਸ਼ੁਰੂ ਕਰਨਾ + +ਲੈਬ ਸ਼ੁਰੂ ਕਰਨ ਲਈ [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) ਖੋਲ੍ਹੋ। + +## ਸਿੱਖਣ ਵਾਲੀਆਂ ਗੱਲਾਂ + +ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ ਅਤੇ ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨੈਟਵਰਕ ਸਾਨੂੰ ਅਸਲੀ ਜ਼ਿੰਦਗੀ ਦੇ ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸੌਖੇ ਤਰੀਕੇ ਨਾਲ ਹੱਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨੈਟਵਰਕ ਉਹਨਾਂ ਚਿੱਤਰਾਂ 'ਤੇ ਚੰਗਾ ਕੰਮ ਕਰਦੇ ਹਨ ਜੋ ਇੱਕੋ ਕਿਸਮ ਦੇ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਜੇ ਅਸੀਂ ਬਹੁਤ ਵੱਖਰੇ ਚਿੱਤਰਾਂ (ਜਿਵੇਂ ਕਿ ਮੈਡੀਕਲ ਚਿੱਤਰਾਂ) ਦੀ ਵਰਗੀਕਰਨ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਸਾਨੂੰ ਕਾਫ਼ੀ ਮਾੜੇ ਨਤੀਜੇ ਮਿਲ ਸਕਦੇ ਹਨ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/pa/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..0e5b7f72 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# ਆਟੋਇਨਕੋਡਰਜ਼ + +ਜਦੋਂ CNNs ਨੂੰ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ, ਇੱਕ ਮੁੱਖ ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਸਾਨੂੰ ਬਹੁਤ ਸਾਰੇ ਲੇਬਲ ਕੀਤੇ ਡਾਟਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਸਾਨੂੰ ਚਿੱਤਰਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਵਰਗਾਂ ਵਿੱਚ ਵੰਡਣਾ ਪੈਂਦਾ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਮੈਨੂਅਲ ਪ੍ਰਕਿਰਿਆ ਹੈ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +ਹਾਲਾਂਕਿ, ਅਸੀਂ ਕਈ ਵਾਰ ਕੱਚੇ (ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ) ਡਾਟਾ ਨੂੰ CNN ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਟਰਜ਼ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਿਸਨੂੰ **ਸਵੈ-ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਲੇਬਲਾਂ ਦੀ ਥਾਂ, ਅਸੀਂ ਟ੍ਰੇਨਿੰਗ ਚਿੱਤਰਾਂ ਨੂੰ ਨੈਟਵਰਕ ਦੇ ਇਨਪੁਟ ਅਤੇ ਆਉਟਪੁਟ ਦੋਵਾਂ ਵਜੋਂ ਵਰਤਾਂਗੇ। **ਆਟੋਇਨਕੋਡਰ** ਦਾ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਸਾਡੇ ਕੋਲ ਇੱਕ **ਇਨਕੋਡਰ ਨੈਟਵਰਕ** ਹੋਵੇਗਾ ਜੋ ਇਨਪੁਟ ਚਿੱਤਰ ਨੂੰ ਕੁਝ **ਲੇਟੈਂਟ ਸਪੇਸ** ਵਿੱਚ ਬਦਲਦਾ ਹੈ (ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਕੁਝ ਛੋਟੇ ਆਕਾਰ ਦੇ ਵੇਕਟਰ ਹੁੰਦੇ ਹਨ), ਫਿਰ **ਡੀਕੋਡਰ ਨੈਟਵਰਕ**, ਜਿਸਦਾ ਮਕਸਦ ਮੂਲ ਚਿੱਤਰ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣਾ ਹੁੰਦਾ ਹੈ। + +> ✅ ਇੱਕ [ਆਟੋਇਨਕੋਡਰ](https://wikipedia.org/wiki/Autoencoder) "ਕਿਸੇ ਵੀ ਲੇਬਲ ਰਹਿਤ ਡਾਟਾ ਦੇ ਕੁਸ਼ਲ ਕੋਡਿੰਗ ਸਿੱਖਣ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਕ੍ਰਿਤ੍ਰਿਮ ਨਰਵਸ ਨੈਟਵਰਕ ਹੈ।" + +ਜਦੋਂ ਅਸੀਂ ਆਟੋਇਨਕੋਡਰ ਨੂੰ ਮੂਲ ਚਿੱਤਰ ਤੋਂ ਜਿੰਨੀ ਜ਼ਿਆਦਾ ਜਾਣਕਾਰੀ ਕੈਪਚਰ ਕਰ ਸਕੀਏ, ਉਸਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਦੁਬਾਰਾ ਬਣਾਉਣ ਲਈ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਨੈਟਵਰਕ ਇਨਪੁਟ ਚਿੱਤਰਾਂ ਦੇ ਸਭ ਤੋਂ ਵਧੀਆ **ਐਮਬੈਡਿੰਗ** ਲੱਭਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। + +![ਆਟੋਇਨਕੋਡਰ ਡਾਇਗ੍ਰਾਮ](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pa.jpg) + +> ਚਿੱਤਰ [Keras ਬਲੌਗ](https://blog.keras.io/building-autoencoders-in-keras.html) ਤੋਂ + +## ਆਟੋਇਨਕੋਡਰਜ਼ ਦੇ ਵਰਤੋਂ ਦੇ ਸਨਰੀਓਜ਼ + +ਹਾਲਾਂਕਿ ਮੂਲ ਚਿੱਤਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣਾ ਆਪਣੇ ਆਪ ਵਿੱਚ ਬਹੁਤ ਲਾਭਦਾਇਕ ਨਹੀਂ ਲੱਗਦਾ, ਕੁਝ ਸਨਰੀਓਜ਼ ਹਨ ਜਿੱਥੇ ਆਟੋਇਨਕੋਡਰਜ਼ ਖਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੁੰਦੇ ਹਨ: + +* **ਚਿੱਤਰਾਂ ਦੇ ਡਾਇਮੈਂਸ਼ਨ ਨੂੰ ਘਟਾਉਣਾ** ਜਾਂ **ਚਿੱਤਰ ਐਮਬੈਡਿੰਗ ਟ੍ਰੇਨ ਕਰਨਾ**। ਆਮ ਤੌਰ 'ਤੇ ਆਟੋਇਨਕੋਡਰਜ਼ PCA ਨਾਲੋਂ ਵਧੀਆ ਨਤੀਜੇ ਦਿੰਦੇ ਹਨ, ਕਿਉਂਕਿ ਇਹ ਚਿੱਤਰਾਂ ਦੀ ਸਪੈਸ਼ਲ ਪ੍ਰਕਿਰਤੀ ਅਤੇ ਹਾਇਰਾਰਕੀਕਲ ਫੀਚਰਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹਨ। +* **ਡਿਨੋਇਜ਼ਿੰਗ**, ਅਰਥਾਤ ਚਿੱਤਰ ਤੋਂ ਸ਼ੋਰ ਨੂੰ ਹਟਾਉਣਾ। ਕਿਉਂਕਿ ਸ਼ੋਰ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀ ਬੇਕਾਰ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ, ਆਟੋਇਨਕੋਡਰ ਇਸਨੂੰ ਛੋਟੀ ਲੇਟੈਂਟ ਸਪੇਸ ਵਿੱਚ ਫਿੱਟ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਇਸ ਲਈ ਇਹ ਸਿਰਫ਼ ਚਿੱਤਰ ਦੇ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸੇ ਨੂੰ ਕੈਪਚਰ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਡਿਨੋਇਜ਼ਰਜ਼ ਨੂੰ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ, ਅਸੀਂ ਮੂਲ ਚਿੱਤਰਾਂ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ ਅਤੇ ਆਟੋਇਨਕੋਡਰ ਲਈ ਇਨਪੁਟ ਵਜੋਂ ਕ੍ਰਿਤ੍ਰਿਮ ਤੌਰ 'ਤੇ ਸ਼ੋਰ ਸ਼ਾਮਲ ਕੀਤੇ ਚਿੱਤਰਾਂ ਨੂੰ ਵਰਤਦੇ ਹਾਂ। +* **ਸੁਪਰ-ਰੈਜ਼ੋਲੂਸ਼ਨ**, ਚਿੱਤਰ ਰੈਜ਼ੋਲੂਸ਼ਨ ਵਧਾਉਣਾ। ਅਸੀਂ ਉੱਚ ਰੈਜ਼ੋਲੂਸ਼ਨ ਵਾਲੇ ਚਿੱਤਰਾਂ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ ਅਤੇ ਘੱਟ ਰੈਜ਼ੋਲੂਸ਼ਨ ਵਾਲੇ ਚਿੱਤਰ ਨੂੰ ਆਟੋਇਨਕੋਡਰ ਦੇ ਇਨਪੁਟ ਵਜੋਂ ਵਰਤਦੇ ਹਾਂ। +* **ਜਨਰੇਟਿਵ ਮਾਡਲਜ਼**। ਜਦੋਂ ਅਸੀਂ ਆਟੋਇਨਕੋਡਰ ਨੂੰ ਟ੍ਰੇਨ ਕਰ ਲੈਂਦੇ ਹਾਂ, ਤਾਂ ਡੀਕੋਡਰ ਹਿੱਸੇ ਨੂੰ ਰੈਂਡਮ ਲੇਟੈਂਟ ਵੇਕਟਰਜ਼ ਤੋਂ ਨਵੇਂ ਆਬਜੈਕਟ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। + +## ਵੈਰੀਏਸ਼ਨਲ ਆਟੋਇਨਕੋਡਰਜ਼ (VAE) + +ਪਾਰੰਪਰਿਕ ਆਟੋਇਨਕੋਡਰਜ਼ ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ ਇਨਪੁਟ ਡਾਟਾ ਦੇ ਡਾਇਮੈਂਸ਼ਨ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ, ਇਨਪੁਟ ਚਿੱਤਰਾਂ ਦੇ ਮਹੱਤਵਪੂਰਨ ਫੀਚਰਾਂ ਨੂੰ ਲੱਭਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਲੇਟੈਂਟ ਵੇਕਟਰਜ਼ ਅਕਸਰ ਬਹੁਤ ਵੱਧ ਮਾਇਨੇ ਨਹੀਂ ਰੱਖਦੇ। ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, MNIST ਡਾਟਾਸੈੱਟ ਨੂੰ ਉਦਾਹਰਣ ਵਜੋਂ ਲੈਂਦੇ ਹੋਏ, ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਕਿ ਵੱਖ-ਵੱਖ ਲੇਟੈਂਟ ਵੇਕਟਰਜ਼ ਕਿਹੜੇ ਅੰਕਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ, ਇੱਕ ਆਸਾਨ ਕੰਮ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਨੇੜਲੇ ਲੇਟੈਂਟ ਵੇਕਟਰਜ਼ ਲਾਜ਼ਮੀ ਨਹੀਂ ਕਿ ਉਹੀ ਅੰਕ ਦਰਸਾਉਣ। + +ਦੂਜੇ ਪਾਸੇ, ਜਨਰੇਟਿਵ ਮਾਡਲਜ਼ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਲੇਟੈਂਟ ਸਪੇਸ ਦੀ ਕੁਝ ਸਮਝ ਹੋਣਾ ਬਿਹਤਰ ਹੈ। ਇਹ ਵਿਚਾਰ ਸਾਨੂੰ **ਵੈਰੀਏਸ਼ਨਲ ਆਟੋਇਨਕੋਡਰ** (VAE) ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ। + +VAE ਇੱਕ ਆਟੋਇਨਕੋਡਰ ਹੈ ਜੋ ਲੇਟੈਂਟ ਪੈਰਾਮੀਟਰਾਂ ਦੇ *ਸੰਭਾਵਨਾਤਮਕ ਵੰਡ* ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨਾ ਸਿੱਖਦਾ ਹੈ, ਜਿਸਨੂੰ **ਲੇਟੈਂਟ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਲੇਟੈਂਟ ਵੇਕਟਰਜ਼ ਕੁਝ ਮਤਲਬ zmean ਅਤੇ ਮਿਆਰੀ ਵਿਸਪੋਟ zsigma ਨਾਲ ਆਮ ਤੌਰ 'ਤੇ ਵੰਡੇ ਜਾਣ (ਦੋਵੇਂ ਮਤਲਬ ਅਤੇ ਮਿਆਰੀ ਵਿਸਪੋਟ ਕੁਝ ਡਾਇਮੈਂਸ਼ਨਲਟੀ d ਦੇ ਵੇਕਟਰ ਹਨ)। VAE ਵਿੱਚ ਇਨਕੋਡਰ ਇਹ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਡੀਕੋਡਰ ਇਸ ਵੰਡ ਤੋਂ ਇੱਕ ਰੈਂਡਮ ਵੇਕਟਰ ਲੈਂਦਾ ਹੈ ਤਾਂ ਜੋ ਆਬਜੈਕਟ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਇਆ ਜਾ ਸਕੇ। + +ਸੰਖੇਪ ਵਿੱਚ: + +* ਇਨਪੁਟ ਵੇਕਟਰ ਤੋਂ, ਅਸੀਂ `z_mean` ਅਤੇ `z_log_sigma` ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦੇ ਹਾਂ (ਮਿਆਰੀ ਵਿਸਪੋਟ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨ ਦੀ ਥਾਂ, ਅਸੀਂ ਇਸਦੇ ਲੌਗਾਰਿਦਮ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦੇ ਹਾਂ) +* ਅਸੀਂ ਵੰਡ N(zmean,exp(zlog_sigma)) ਤੋਂ ਇੱਕ ਵੇਕਟਰ `sample` ਲੈਂਦੇ ਹਾਂ +* ਡੀਕੋਡਰ `sample` ਨੂੰ ਇਨਪੁਟ ਵੇਕਟਰ ਵਜੋਂ ਵਰਤ ਕੇ ਮੂਲ ਚਿੱਤਰ ਨੂੰ ਡੀਕੋਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ + + + +> ਚਿੱਤਰ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ਤੋਂ, ਲੇਖਕ: Isaak Dykeman + +ਵੈਰੀਏਸ਼ਨਲ ਆਟੋਇਨਕੋਡਰਜ਼ ਇੱਕ ਜਟਿਲ ਲਾਸ ਫੰਕਸ਼ਨ ਵਰਤਦੇ ਹਨ ਜੋ ਦੋ ਹਿੱਸਿਆਂ 'ਤੇ ਆਧਾਰਿਤ ਹੁੰਦਾ ਹੈ: + +* **ਰੀਕੰਸਟਰਕਸ਼ਨ ਲਾਸ** - ਇਹ ਲਾਸ ਫੰਕਸ਼ਨ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਦੁਬਾਰਾ ਬਣਾਇਆ ਚਿੱਤਰ ਟਾਰਗੇਟ ਦੇ ਕਿੰਨਾ ਨੇੜੇ ਹੈ (ਇਹ Mean Squared Error ਜਾਂ MSE ਹੋ ਸਕਦਾ ਹੈ)। ਇਹ ਆਮ ਆਟੋਇਨਕੋਡਰਜ਼ ਵਿੱਚ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਲਾਸ ਫੰਕਸ਼ਨ ਵਰਗਾ ਹੀ ਹੁੰਦਾ ਹੈ। +* **KL ਲਾਸ**, ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਲੇਟੈਂਟ ਵੇਰੀਏਬਲ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਆਮ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਦੇ ਨੇੜੇ ਰਹੇ। ਇਹ [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) ਦੇ ਧਾਰਨਾ 'ਤੇ ਆਧਾਰਿਤ ਹੈ - ਦੋ ਸੰਭਾਵਨਾਤਮਕ ਵੰਡਾਂ ਦੇ ਸਮਾਨਤਾ ਨੂੰ ਅੰਕਣ ਕਰਨ ਲਈ ਇੱਕ ਮਾਪ। + +VAE ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਫਾਇਦਾ ਇਹ ਹੈ ਕਿ ਇਹ ਸਾਨੂੰ ਨਵੇਂ ਚਿੱਤਰ ਬਹੁਤ ਆਸਾਨੀ ਨਾਲ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਸਾਨੂੰ ਪਤਾ ਹੁੰਦਾ ਹੈ ਕਿ ਲੇਟੈਂਟ ਵੇਕਟਰਜ਼ ਨੂੰ ਕਿਹੜੀ ਵੰਡ ਤੋਂ ਲੈਣਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜੇ ਅਸੀਂ MNIST 'ਤੇ 2D ਲੇਟੈਂਟ ਵੇਕਟਰ ਨਾਲ VAE ਨੂੰ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਲੇਟੈਂਟ ਵੇਕਟਰ ਦੇ ਹਿੱਸਿਆਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਕਰਕੇ ਵੱਖ-ਵੱਖ ਅੰਕ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ: + +vaemnist + +> ਚਿੱਤਰ [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com) ਦੁਆਰਾ + +ਨੋਟ ਕਰੋ ਕਿ ਚਿੱਤਰ ਕਿਵੇਂ ਇੱਕ-ਦੂਜੇ ਵਿੱਚ ਮਿਲਦੇ ਹਨ, ਜਦੋਂ ਅਸੀਂ ਲੇਟੈਂਟ ਪੈਰਾਮੀਟਰ ਸਪੇਸ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸਿਆਂ ਤੋਂ ਲੇਟੈਂਟ ਵੇਕਟਰ ਲੈਂਦੇ ਹਾਂ। ਅਸੀਂ ਇਸ ਸਪੇਸ ਨੂੰ 2D ਵਿੱਚ ਵੀ ਵਿਜੁਅਲਾਈਜ਼ ਕਰ ਸਕਦੇ ਹਾਂ: + +vaemnist cluster + +> ਚਿੱਤਰ [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com) ਦੁਆਰਾ + +## ✍️ ਅਭਿਆਸ: ਆਟੋਇਨਕੋਡਰਜ਼ + +ਇਹਨਾਂ ਸੰਬੰਧਤ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ ਆਟੋਇਨਕੋਡਰਜ਼ ਬਾਰੇ ਹੋਰ ਸਿੱਖੋ: + +* [ਟੈਂਸਰਫਲੋ ਵਿੱਚ ਆਟੋਇਨਕੋਡਰਜ਼](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [ਪਾਈਟਾਰਚ ਵਿੱਚ ਆਟੋਇਨਕੋਡਰਜ਼](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## ਆਟੋਇਨਕੋਡਰਜ਼ ਦੇ ਗੁਣ + +* **ਡਾਟਾ-ਵਿਸ਼ੇਸ਼** - ਇਹ ਸਿਰਫ਼ ਉਸ ਤਰ੍ਹਾਂ ਦੇ ਚਿੱਤਰਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ 'ਤੇ ਇਹ ਟ੍ਰੇਨ ਕੀਤੇ ਗਏ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਜੇ ਅਸੀਂ ਫੁੱਲਾਂ 'ਤੇ ਸੁਪਰ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਨੈਟਵਰਕ ਨੂੰ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਇਹ ਪੋਰਟਰੇਟਸ 'ਤੇ ਚੰਗਾ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਨੈਟਵਰਕ ਉੱਚ ਰੈਜ਼ੋਲੂਸ਼ਨ ਵਾਲੇ ਚਿੱਤਰ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਡਾਟਾਸੈੱਟ ਤੋਂ ਸਿੱਖੇ ਗਏ ਫੀਚਰਾਂ ਤੋਂ ਬਰੀਕ ਵੇਰਵੇ ਲੈ ਕੇ ਬਣਾਉਂਦਾ ਹੈ। +* **ਲੌਸੀ** - ਦੁਬਾਰਾ ਬਣਾਇਆ ਚਿੱਤਰ ਮੂਲ ਚਿੱਤਰ ਦੇ ਬਰਾਬਰ ਨਹੀਂ ਹੁੰਦਾ। ਲਾਸ ਦੀ ਪ੍ਰਕਿਰਤੀ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਵਰਤੇ ਗਏ *ਲਾਸ ਫੰਕਸ਼ਨ* ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਹੁੰਦੀ ਹੈ। +* **ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ ਡਾਟਾ** 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## ਨਿਸ਼ਕਰਸ਼ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਵੱਖ-ਵੱਖ ਕਿਸਮ ਦੇ ਆਟੋਇਨਕੋਡਰਜ਼ ਬਾਰੇ ਸਿੱਖਿਆ ਜੋ ਇੱਕ AI ਵਿਗਿਆਨੀ ਲਈ ਉਪਲਬਧ ਹਨ। ਤੁਸੀਂ ਇਹ ਵੀ ਸਿੱਖਿਆ ਕਿ ਇਹਨਾਂ ਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ ਅਤੇ ਚਿੱਤਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣ ਲਈ ਇਹਨਾਂ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ। ਤੁਸੀਂ VAE ਬਾਰੇ ਵੀ ਸਿੱਖਿਆ ਅਤੇ ਇਸਨੂੰ ਨਵੇਂ ਚਿੱਤਰ ਬਣਾਉਣ ਲਈ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਚਿੱਤਰਾਂ ਲਈ ਆਟੋਇਨਕੋਡਰਜ਼ ਦੀ ਵਰਤੋਂ ਬਾਰੇ ਸਿੱਖਿਆ। ਪਰ ਇਹ ਸੰਗੀਤ ਲਈ ਵੀ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ! ਮਜੈਂਟਾ ਪ੍ਰੋਜੈਕਟ ਦੇ [MusicVAE](https://magenta.tensorflow.org/music-vae) ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਦੇਖੋ, ਜੋ ਸੰਗੀਤ ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਉਣ ਲਈ ਆਟੋਇਨਕੋਡਰਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਕੁਝ [ਤਜਰਬੇ](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) ਕਰੋ ਅਤੇ ਦੇਖੋ ਕਿ ਤੁਸੀਂ ਕੀ ਬਣਾਉ ਸਕਦੇ ਹੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਹਵਾਲੇ ਲਈ, ਇਹਨਾਂ ਸਰੋਤਾਂ ਵਿੱਚ ਆਟੋਇਨਕੋਡਰਜ਼ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ: + +* [Keras ਵਿੱਚ ਆਟੋਇਨਕੋਡਰਜ਼ ਬਣਾਉਣਾ](https://blog.keras.io/building-autoencoders-in-keras.html) +* [ਨਿਊਰੋਹਾਈਵ 'ਤੇ ਬਲੌਗ ਪੋਸਟ](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [ਵੈਰੀਏਸ਼ਨਲ ਆਟੋਇਨਕੋਡਰਜ਼ ਦੀ ਵਿਆਖਿਆ](https://kvfrans.com/variational-autoencoders-explained/) +* [ਕੰਡੀਸ਼ਨਲ ਵੈਰੀਏਸ਼ਨਲ ਆਟੋਇਨਕੋਡਰਜ਼](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## ਅਸਾਈਨਮੈਂਟ + +[ਟੈਂਸਰਫਲੋ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇਸ ਨੋਟਬੁੱਕ](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) ਦੇ ਅੰਤ ਵਿੱਚ ਤੁਹਾਨੂੰ ਇੱਕ 'ਟਾਸਕ' ਮਿਲੇਗਾ - ਇਸਨੂੰ ਆਪਣੀ ਅਸਾਈਨਮੈਂਟ ਵਜੋਂ ਵਰਤੋ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/10-GANs/README.md b/translations/pa/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..15a70596 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# ਜਨਰੇਟਿਵ ਐਡਵਰਸਰੀਅਲ ਨੈਟਵਰਕਸ + +ਪਿਛਲੇ ਸੈਕਸ਼ਨ ਵਿੱਚ, ਅਸੀਂ **ਜਨਰੇਟਿਵ ਮਾਡਲਸ** ਬਾਰੇ ਸਿੱਖਿਆ: ਮਾਡਲ ਜੋ ਟ੍ਰੇਨਿੰਗ ਡੇਟਾਸੈਟ ਵਿੱਚ ਮੌਜੂਦ ਚਿੱਤਰਾਂ ਦੇ ਸਮਾਨ ਨਵੇਂ ਚਿੱਤਰ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹਨ। VAE ਜਨਰੇਟਿਵ ਮਾਡਲ ਦਾ ਇੱਕ ਵਧੀਆ ਉਦਾਹਰਨ ਸੀ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +ਹਾਲਾਂਕਿ, ਜੇ ਅਸੀਂ ਕੁਝ ਵਾਕਈ ਮਹੱਤਵਪੂਰਨ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਇੱਕ ਉੱਚ ਰਿਜ਼ੋਲੂਸ਼ਨ ਵਾਲੀ ਪੇਂਟਿੰਗ, VAE ਨਾਲ, ਤਾਂ ਅਸੀਂ ਦੇਖਾਂਗੇ ਕਿ ਟ੍ਰੇਨਿੰਗ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸੰਮਤ ਨਹੀਂ ਹੁੰਦੀ। ਇਸ ਵਰਤੋਂ ਦੇ ਕੇਸ ਲਈ, ਸਾਨੂੰ ਜਨਰੇਟਿਵ ਮਾਡਲਸ ਲਈ ਖਾਸ ਤੌਰ 'ਤੇ ਟਾਰਗੇਟ ਕੀਤੀ ਗਈ ਇੱਕ ਹੋਰ ਆਰਕੀਟੈਕਚਰ ਬਾਰੇ ਸਿੱਖਣਾ ਚਾਹੀਦਾ ਹੈ - **ਜਨਰੇਟਿਵ ਐਡਵਰਸਰੀਅਲ ਨੈਟਵਰਕਸ**, ਜਾਂ GANs। + +GAN ਦਾ ਮੁੱਖ ਵਿਚਾਰ ਦੋ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਇੱਕ ਦੂਜੇ ਦੇ ਵਿਰੁੱਧ ਟ੍ਰੇਨ ਕਰਨ ਦਾ ਹੈ: + + + +> ਚਿੱਤਰ [Dmitry Soshnikov](http://soshnikov.com) ਦੁਆਰਾ + +> ✅ ਕੁਝ ਸ਼ਬਦਾਵਲੀ: +> * **ਜਨਰੇਟਰ** ਇੱਕ ਨੈਟਵਰਕ ਹੈ ਜੋ ਕੁਝ ਰੈਂਡਮ ਵੈਕਟਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ ਚਿੱਤਰ ਪੈਦਾ ਕਰਦਾ ਹੈ। +> * **ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ** ਇੱਕ ਨੈਟਵਰਕ ਹੈ ਜੋ ਇੱਕ ਚਿੱਤਰ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਇਹ ਦੱਸਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕੀ ਇਹ ਇੱਕ ਅਸਲੀ ਚਿੱਤਰ ਹੈ (ਟ੍ਰੇਨਿੰਗ ਡੇਟਾਸੈਟ ਤੋਂ), ਜਾਂ ਇਹ ਜਨਰੇਟਰ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਸੀ। ਇਹ ਅਸਲ ਵਿੱਚ ਇੱਕ ਚਿੱਤਰ ਵਰਗੀਕਰ ਹੈ। + +### ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ + +ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੀ ਆਰਕੀਟੈਕਚਰ ਇੱਕ ਆਮ ਚਿੱਤਰ ਵਰਗੀਕਰ ਨੈਟਵਰਕ ਤੋਂ ਵੱਖਰੀ ਨਹੀਂ ਹੈ। ਸਭ ਤੋਂ ਸਧਾਰਨ ਕੇਸ ਵਿੱਚ ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜੁੜੇ ਹੋਏ ਵਰਗੀਕਰ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਸਭ ਸੰਭਾਵਨਾ ਨਾਲ ਇਹ ਇੱਕ [ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕ](../07-ConvNets/README.md) ਹੋਵੇਗਾ। + +> ✅ ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕਸ 'ਤੇ ਆਧਾਰਿਤ GAN ਨੂੰ [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +ਇੱਕ CNN ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਤਹਿ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ: ਕਈ ਕਨਵੋਲੂਸ਼ਨ+ਪੂਲਿੰਗ (ਘਟਦੇ ਹੋਏ ਸਪੇਸ਼ਲ ਆਕਾਰ ਨਾਲ) ਅਤੇ, "ਫੀਚਰ ਵੈਕਟਰ" ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇੱਕ ਜਾਂ ਵੱਧ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜੁੜੇ ਹੋਏ ਤਹਿ, ਅੰਤਮ ਦੋ-ਵਿਕਲਪਕ ਵਰਗੀਕਰ। + +> ✅ 'ਪੂਲਿੰਗ' ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਇੱਕ ਤਕਨੀਕ ਹੈ ਜੋ ਚਿੱਤਰ ਦਾ ਆਕਾਰ ਘਟਾਉਂਦੀ ਹੈ। "ਪੂਲਿੰਗ ਤਹਿ ਡੇਟਾ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਂਦੀਆਂ ਹਨ, ਇੱਕ ਤਹਿ ਵਿੱਚ ਨਿਊਰਾਨ ਕਲਸਟਰਾਂ ਦੇ ਆਉਟਪੁੱਟ ਨੂੰ ਅਗਲੀ ਤਹਿ ਵਿੱਚ ਇੱਕ ਨਿਊਰਾਨ ਵਿੱਚ ਮਿਲਾਉਂਦੀਆਂ ਹਨ।" - [ਸਰੋਤ](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### ਜਨਰੇਟਰ + +ਜਨਰੇਟਰ ਥੋੜਾ ਜਿਆਦਾ ਜਟਿਲ ਹੈ। ਤੁਸੀਂ ਇਸਨੂੰ ਇੱਕ ਉਲਟੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਵਜੋਂ ਮੰਨ ਸਕਦੇ ਹੋ। ਲੈਟੈਂਟ ਵੈਕਟਰ (ਫੀਚਰ ਵੈਕਟਰ ਦੀ ਜਗ੍ਹਾ) ਤੋਂ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋਏ, ਇਸ ਵਿੱਚ ਇਸਨੂੰ ਲੋੜੀਂਦੇ ਆਕਾਰ/ਆਕਾਰ ਵਿੱਚ ਬਦਲਣ ਲਈ ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜੁੜੀ ਹੋਈ ਤਹਿ ਹੁੰਦੀ ਹੈ, ਜਿਸਦੇ ਬਾਅਦ ਡੀਕਨਵੋਲੂਸ਼ਨ+ਅੱਪਸਕੇਲਿੰਗ ਹੁੰਦੀ ਹੈ। ਇਹ [ਆਟੋਇੰਕੋਡਰ](../09-Autoencoders/README.md) ਦੇ *ਡਿਕੋਡਰ* ਹਿੱਸੇ ਦੇ ਸਮਾਨ ਹੈ। + +> ✅ ਕਿਉਂਕਿ ਕਨਵੋਲੂਸ਼ਨ ਤਹਿ ਚਿੱਤਰ ਨੂੰ ਲੀਨੀਅਰ ਫਿਲਟਰ ਵਜੋਂ ਪਾਰ ਕਰਕੇ ਲਾਗੂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਡੀਕਨਵੋਲੂਸ਼ਨ ਅਸਲ ਵਿੱਚ ਕਨਵੋਲੂਸ਼ਨ ਦੇ ਸਮਾਨ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਉਹੀ ਤਹਿ ਲਾਜ਼ਮਾਂਤ ਵਰਤ ਕੇ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + + + +> ਚਿੱਤਰ [Dmitry Soshnikov](http://soshnikov.com) ਦੁਆਰਾ + +### GAN ਦੀ ਟ੍ਰੇਨਿੰਗ + +GANs ਨੂੰ **ਐਡਵਰਸਰੀਅਲ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਜਨਰੇਟਰ ਅਤੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੇ ਵਿਚਕਾਰ ਲਗਾਤਾਰ ਮੁਕਾਬਲਾ ਹੁੰਦਾ ਹੈ। ਇਸ ਮੁਕਾਬਲੇ ਦੌਰਾਨ, ਜਨਰੇਟਰ ਅਤੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੋਵੇਂ ਸੁਧਾਰਦੇ ਹਨ, ਇਸ ਤਰ੍ਹਾਂ ਨੈਟਵਰਕ ਵਧੀਆ ਅਤੇ ਵਧੀਆ ਚਿੱਤਰ ਬਣਾਉਣ ਸਿੱਖਦਾ ਹੈ। + +ਟ੍ਰੇਨਿੰਗ ਦੋ ਪੜਾਅ ਵਿੱਚ ਹੁੰਦੀ ਹੈ: + +* **ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੀ ਟ੍ਰੇਨਿੰਗ**। ਇਹ ਕੰਮ ਕਾਫੀ ਸਧਾਰਨ ਹੈ: ਅਸੀਂ ਜਨਰੇਟਰ ਦੁਆਰਾ ਚਿੱਤਰਾਂ ਦਾ ਇੱਕ ਬੈਚ ਪੈਦਾ ਕਰਦੇ ਹਾਂ, ਉਨ੍ਹਾਂ ਨੂੰ 0 ਲੇਬਲ ਕਰਦੇ ਹਾਂ, ਜੋ ਕਿ ਨਕਲੀ ਚਿੱਤਰ ਲਈ ਖੜ੍ਹਾ ਹੈ, ਅਤੇ ਇਨਪੁਟ ਡੇਟਾਸੈਟ ਤੋਂ ਚਿੱਤਰਾਂ ਦਾ ਇੱਕ ਬੈਚ ਲੈਂਦੇ ਹਾਂ (ਲੇਬਲ 1, ਅਸਲੀ ਚਿੱਤਰ ਨਾਲ)। ਅਸੀਂ ਕੁਝ *ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਲਾਸ* ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਬੈਕਪ੍ਰੋਪ ਕਰਦੇ ਹਾਂ। +* **ਜਨਰੇਟਰ ਦੀ ਟ੍ਰੇਨਿੰਗ**। ਇਹ ਥੋੜਾ ਜਿਆਦਾ ਜਟਿਲ ਹੈ, ਕਿਉਂਕਿ ਅਸੀਂ ਜਨਰੇਟਰ ਲਈ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਉਮੀਦਵਾਰ ਆਉਟਪੁੱਟ ਨਹੀਂ ਜਾਣਦੇ। ਅਸੀਂ ਪੂਰੇ GAN ਨੈਟਵਰਕ ਨੂੰ ਜਨਰੇਟਰ ਅਤੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੇ ਨਾਲ ਲੈਂਦੇ ਹਾਂ, ਇਸਨੂੰ ਕੁਝ ਰੈਂਡਮ ਵੈਕਟਰਾਂ ਨਾਲ ਫੀਡ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਨਤੀਜੇ ਨੂੰ 1 ਦੀ ਉਮੀਦ ਕਰਦੇ ਹਾਂ (ਅਸਲੀ ਚਿੱਤਰਾਂ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ)। ਫਿਰ ਅਸੀਂ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੇ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਫ੍ਰੀਜ਼ ਕਰਦੇ ਹਾਂ (ਅਸੀਂ ਇਸ ਪੜਾਅ 'ਤੇ ਇਸਨੂੰ ਟ੍ਰੇਨ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ), ਅਤੇ ਬੈਕਪ੍ਰੋਪ ਕਰਦੇ ਹਾਂ। + +ਇਸ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ, ਜਨਰੇਟਰ ਅਤੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੋਵੇਂ ਦੇ ਲਾਸਜ਼ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਘਟਦੇ ਨਹੀਂ ਹਨ। ਆਦਰਸ਼ ਸਥਿਤੀ ਵਿੱਚ, ਉਹ ਝੂਲਦੇ ਹੋਏ ਦਿਖਾਈ ਦੇਣੇ ਚਾਹੀਦੇ ਹਨ, ਜੋ ਦੋਵੇਂ ਨੈਟਵਰਕਸ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਸੁਧਾਰ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। + +## ✍️ ਅਭਿਆਸ: GANs + +* [GAN ਨੋਟਬੁੱਕ TensorFlow/Keras ਵਿੱਚ](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN ਨੋਟਬੁੱਕ PyTorch ਵਿੱਚ](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN ਟ੍ਰੇਨਿੰਗ ਨਾਲ ਸਮੱਸਿਆਵਾਂ + +GANs ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਖਾਸ ਤੌਰ 'ਤੇ ਮੁਸ਼ਕਲ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਇੱਥੇ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਹਨ: + +* **ਮੋਡ ਕਲੈਪਸ**। ਇਸ ਸ਼ਬਦ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜਨਰੇਟਰ ਇੱਕ ਸਫਲ ਚਿੱਤਰ ਬਣਾਉਣਾ ਸਿੱਖਦਾ ਹੈ ਜੋ ਜਨਰੇਟਰ ਨੂੰ ਚਕਮਾ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਵੱਖ-ਵੱਖ ਚਿੱਤਰਾਂ ਦੀ ਕਿਸਮ ਨਹੀਂ। +* **ਹਾਈਪਰਪੈਰਾਮੀਟਰਾਂ ਲਈ ਸੰਵੇਦਨਸ਼ੀਲਤਾ**। ਅਕਸਰ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ GAN ਬਿਲਕੁਲ ਸੰਮਤ ਨਹੀਂ ਹੁੰਦਾ, ਅਤੇ ਫਿਰ ਅਚਾਨਕ ਲਰਨਿੰਗ ਰੇਟ ਵਿੱਚ ਘਟਾਅ ਸੰਮਤਤਾ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ। +* ਜਨਰੇਟਰ ਅਤੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੇ ਵਿਚਕਾਰ **ਸੰਤੁਲਨ** ਰੱਖਣਾ। ਕਈ ਕੇਸਾਂ ਵਿੱਚ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਲਾਸ ਕਾਫੀ ਜਲਦੀ ਜ਼ੀਰੋ 'ਤੇ ਡਿੱਗ ਸਕਦਾ ਹੈ, ਜਿਸਦਾ ਨਤੀਜਾ ਇਹ ਹੁੰਦਾ ਹੈ ਕਿ ਜਨਰੇਟਰ ਅੱਗੇ ਟ੍ਰੇਨ ਨਹੀਂ ਹੋ ਸਕਦਾ। ਇਸਨੂੰ ਦੂਰ ਕਰਨ ਲਈ, ਅਸੀਂ ਜਨਰੇਟਰ ਅਤੇ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਲਈ ਵੱਖ-ਵੱਖ ਲਰਨਿੰਗ ਰੇਟ ਸੈਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹਾਂ, ਜਾਂ ਜੇ ਲਾਸ ਪਹਿਲਾਂ ਹੀ ਬਹੁਤ ਘੱਟ ਹੈ ਤਾਂ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹਾਂ। +* **ਉੱਚ ਰਿਜ਼ੋਲੂਸ਼ਨ** ਲਈ ਟ੍ਰੇਨਿੰਗ। ਆਟੋਇੰਕੋਡਰਸ ਨਾਲ ਇੱਕੋ ਸਮੱਸਿਆ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹੋਏ, ਇਹ ਸਮੱਸਿਆ ਇਸ ਲਈ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਕਿਉਂਕਿ ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕ ਦੇ ਬਹੁਤ ਸਾਰੇ ਤਹਿ ਦੁਬਾਰਾ ਬਣਾਉਣ ਨਾਲ ਆਰਟਿਫੈਕਟ ਪੈਦਾ ਹੁੰਦੇ ਹਨ। ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ **ਪ੍ਰੋਗਰੈਸਿਵ ਗ੍ਰੋਇੰਗ** ਨਾਲ ਹੱਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਪਹਿਲਾਂ ਕੁਝ ਤਹਿ ਘੱਟ-ਰਿਜ਼ੋਲੂਸ਼ਨ ਚਿੱਤਰਾਂ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਫਿਰ ਤਹਿ "ਅਨਬਲਾਕ" ਜਾਂ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਇੱਕ ਹੋਰ ਹੱਲ ਤਹਿ ਦੇ ਵਿਚਕਾਰ ਵਾਧੂ ਕਨੈਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰਨਾ ਅਤੇ ਇੱਕ ਵਾਰ ਵਿੱਚ ਕਈ ਰਿਜ਼ੋਲੂਸ਼ਨ ਟ੍ਰੇਨ ਕਰਨਾ ਹੋਵੇਗਾ - ਵੇਰਵੇ ਲਈ ਇਸ [ਮਲਟੀ-ਸਕੇਲ ਗ੍ਰੇਡੀਅੰਟ GANs ਪੇਪਰ](https://arxiv.org/abs/1903.06048) ਨੂੰ ਦੇਖੋ। + +## ਸਟਾਈਲ ਟ੍ਰਾਂਸਫਰ + +GANs ਕਲਾ ਦੇ ਚਿੱਤਰ ਬਣਾਉਣ ਦਾ ਇੱਕ ਵਧੀਆ ਤਰੀਕਾ ਹੈ। ਇੱਕ ਹੋਰ ਦਿਲਚਸਪ ਤਕਨੀਕ **ਸਟਾਈਲ ਟ੍ਰਾਂਸਫਰ** ਹੈ, ਜੋ ਇੱਕ **ਕੰਟੈਂਟ ਚਿੱਤਰ** ਲੈਂਦੀ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਵੱਖਰੇ ਸਟਾਈਲ ਵਿੱਚ ਦੁਬਾਰਾ ਬਣਾਉਂਦੀ ਹੈ, **ਸਟਾਈਲ ਚਿੱਤਰ** ਤੋਂ ਫਿਲਟਰ ਲਾਗੂ ਕਰਦੀ ਹੈ। + +ਇਹ ਤਰੀਕਾ ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ: +* ਅਸੀਂ ਇੱਕ ਰੈਂਡਮ ਸ਼ੋਰ ਚਿੱਤਰ (ਜਾਂ ਇੱਕ ਕੰਟੈਂਟ ਚਿੱਤਰ ਨਾਲ, ਪਰ ਸਮਝਣ ਲਈ ਰੈਂਡਮ ਸ਼ੋਰ ਤੋਂ ਸ਼ੁਰੂ ਕਰਨਾ ਆਸਾਨ ਹੈ) ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ। +* ਸਾਡਾ ਲਕਸ਼ ਇਹ ਚਿੱਤਰ ਬਣਾਉਣਾ ਹੋਵੇਗਾ, ਜੋ ਕੰਟੈਂਟ ਚਿੱਤਰ ਅਤੇ ਸਟਾਈਲ ਚਿੱਤਰ ਦੋਵਾਂ ਦੇ ਨੇੜੇ ਹੋਵੇ। ਇਹ ਦੋ ਲਾਸ ਫੰਕਸ਼ਨਾਂ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾਵੇਗਾ: + - **ਕੰਟੈਂਟ ਲਾਸ** ਮੌਜੂਦਾ ਚਿੱਤਰ ਅਤੇ ਕੰਟੈਂਟ ਚਿੱਤਰ ਤੋਂ ਕੁਝ ਤਹਿ 'ਤੇ CNN ਦੁਆਰਾ ਕੱਢੇ ਗਏ ਫੀਚਰਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। + - **ਸਟਾਈਲ ਲਾਸ** ਮੌਜੂਦਾ ਚਿੱਤਰ ਅਤੇ ਸਟਾਈਲ ਚਿੱਤਰ ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਚਤੁਰ ਤਰੀਕੇ ਨਾਲ ਗ੍ਰਾਮ ਮੈਟ੍ਰਿਸਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ (ਹੋਰ ਵੇਰਵੇ [ਉਦਾਹਰਨ ਨੋਟਬੁੱਕ](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) ਵਿੱਚ)। +* ਚਿੱਤਰ ਨੂੰ ਹੌਲੀ ਅਤੇ ਸ਼ੋਰ ਨੂੰ ਹਟਾਉਣ ਲਈ, ਅਸੀਂ **ਵੈਰੀਏਸ਼ਨ ਲਾਸ** ਵੀ ਸ਼ਾਮਲ ਕਰਦੇ ਹਾਂ, ਜੋ ਪੜੋਸੀ ਪਿਕਸਲਾਂ ਦੇ ਦਰਮਿਆਨ ਔਸਤ ਦੂਰੀ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ। +* ਮੁੱਖ ਅਪਟਿਮਾਈਜ਼ੇਸ਼ਨ ਲੂਪ ਮੌਜੂਦਾ ਚਿੱਤਰ ਨੂੰ ਗ੍ਰੇਡੀਅੰਟ ਡਿਸੈਂਟ (ਜਾਂ ਕੁਝ ਹੋਰ ਅਪਟਿਮਾਈਜ਼ੇਸ਼ਨ ਐਲਗੋਰਿਥਮ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੁੱਲ ਲਾਸ ਨੂੰ ਘਟਾਉਣ ਲਈ ਸਮਾਯੋਜਿਤ ਕਰਦਾ ਹੈ, ਜੋ ਸਾਰੀਆਂ ਤਿੰਨ ਲਾਸਜ਼ ਦਾ ਵਜ਼ਨੀ ਜੋੜ ਹੈ। + +## ✍️ ਉਦਾਹਰਨ: [ਸਟਾਈਲ ਟ੍ਰਾਂਸਫਰ](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## ਨਤੀਜਾ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ GANs ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਦੇ ਤਰੀਕੇ ਬਾਰੇ ਸਿੱਖਿਆ। ਤੁਸੀਂ ਇਸ ਕਿਸਮ ਦੇ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਨੂੰ ਦਰਪੇਸ਼ ਖਾਸ ਚੁਣੌਤੀਆਂ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਪਾਰ ਕਰਨ ਦੇ ਕੁਝ ਰਣਨੀਤੀਆਂ ਬਾਰੇ ਵੀ ਸਿੱਖਿਆ। + +## 🚀 ਚੁਣੌਤੀ + +[ਸਟਾਈਲ ਟ੍ਰਾਂਸਫਰ ਨੋਟਬੁੱਕ](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) ਨੂੰ ਆਪਣੇ ਚਿੱਤਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਲਾਓ। + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਹਵਾਲੇ ਲਈ, ਇਨ੍ਹਾਂ ਸਰੋਤਾਂ ਵਿੱਚ GANs ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ: + +* ਮਾਰਕੋ ਪਾਸਿਨੀ, [10 ਸਬਕ ਜੋ ਮੈਂ ਇੱਕ ਸਾਲ ਲਈ GANs ਟ੍ਰੇਨ ਕਰਦੇ ਹੋਏ ਸਿੱਖੇ](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [ਸਟਾਈਲGAN](https://en.wikipedia.org/wiki/StyleGAN), ਇੱਕ *ਡਿ ਫੈਕਟੋ* GAN ਆਰਕੀਟੈਕਚਰ ਵਿਚਾਰ ਕਰਨ ਲਈ +* [Azure ML 'ਤੇ GANs ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਨਰੇਟਿਵ ਕਲਾ ਬਣਾਉਣਾ](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## ਅਸਾਈਨਮੈਂਟ + +ਇਸ ਪਾਠ ਨਾਲ ਸੰਬੰਧਿਤ ਦੋ ਨੋਟਬੁੱਕਸ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਦੁਬਾਰਾ ਵੇਖੋ ਅਤੇ GAN ਨੂੰ ਆਪਣੇ ਚਿੱਤਰਾਂ 'ਤੇ ਦੁਬਾਰਾ ਟ੍ਰੇਨ ਕਰੋ। ਤੁਸੀਂ ਕੀ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ? + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/pa/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..852d52da --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,174 @@ + +# ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ + +ਜੋ ਇਮੇਜ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲਾਂ ਨਾਲ ਅਸੀਂ ਹੁਣ ਤੱਕ ਕੰਮ ਕੀਤਾ ਹੈ, ਉਹ ਇੱਕ ਤਸਵੀਰ ਲੈਂਦੇ ਹਨ ਅਤੇ ਇੱਕ ਸ਼੍ਰੇਣੀਬੱਧ ਨਤੀਜਾ ਪੈਦਾ ਕਰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ MNIST ਸਮੱਸਿਆ ਵਿੱਚ 'ਨੰਬਰ' ਕਲਾਸ। ਹਾਲਾਂਕਿ, ਕਈ ਕੇਸਾਂ ਵਿੱਚ ਅਸੀਂ ਸਿਰਫ ਇਹ ਨਹੀਂ ਜਾਣਨਾ ਚਾਹੁੰਦੇ ਕਿ ਇੱਕ ਤਸਵੀਰ ਵਿੱਚ ਆਬਜੈਕਟ ਹਨ, ਸਗੋਂ ਅਸੀਂ ਇਹ ਵੀ ਪਤਾ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਉਹ ਕਿੱਥੇ ਸਥਿਤ ਹਨ। ਇਹੀ **ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ** ਦਾ ਮੁੱਖ ਉਦੇਸ਼ ਹੈ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Object Detection](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pa.png) + +> ਤਸਵੀਰ [YOLO v2 ਵੈੱਬਸਾਈਟ](https://pjreddie.com/darknet/yolov2/) ਤੋਂ + +## ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਲਈ ਇੱਕ ਸਧਾਰਨ ਪਹੁੰਚ + +ਮੰਨੋ ਕਿ ਅਸੀਂ ਇੱਕ ਤਸਵੀਰ ਵਿੱਚ ਬਿੱਲੀ ਨੂੰ ਲੱਭਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਤਾਂ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਲਈ ਇੱਕ ਬਹੁਤ ਹੀ ਸਧਾਰਨ ਪਹੁੰਚ ਇਹ ਹੋਵੇਗੀ: + +1. ਤਸਵੀਰ ਨੂੰ ਕਈ ਟਾਈਲਾਂ ਵਿੱਚ ਵੰਡੋ। +2. ਹਰ ਟਾਈਲ 'ਤੇ ਇਮੇਜ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਚਲਾਓ। +3. ਉਹ ਟਾਈਲਾਂ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਕਾਫ਼ੀ ਉੱਚੀ ਐਕਟੀਵੇਸ਼ਨ ਆਉਂਦੀ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਉਸ ਆਬਜੈਕਟ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੀਆਂ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ। + +![Naive Object Detection](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pa.png) + +> *ਤਸਵੀਰ [ਐਕਸਰਸਾਈਜ਼ ਨੋਟਬੁੱਕ](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) ਤੋਂ* + +ਹਾਲਾਂਕਿ, ਇਹ ਪਹੁੰਚ ਆਦਰਸ਼ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਐਲਗੋਰਿਦਮ ਨੂੰ ਆਬਜੈਕਟ ਦੇ ਬਾਉਂਡਿੰਗ ਬਾਕਸ ਨੂੰ ਬਹੁਤ ਹੀ ਅਸਪਸ਼ਟ ਢੰਗ ਨਾਲ ਸਥਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ। ਜ਼ਿਆਦਾ ਸਹੀ ਸਥਿਤੀ ਲਈ, ਸਾਨੂੰ ਬਾਉਂਡਿੰਗ ਬਾਕਸ ਦੇ ਕੋਆਰਡੀਨੇਟਸ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਲਈ ਕਿਸੇ ਤਰ੍ਹਾਂ ਦੀ **ਰਿਗ੍ਰੈਸ਼ਨ** ਚਲਾਉਣ ਦੀ ਲੋੜ ਹੈ - ਅਤੇ ਇਸ ਲਈ ਸਾਨੂੰ ਖਾਸ ਡੇਟਾਸੈਟ ਦੀ ਲੋੜ ਹੈ। + +## ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਲਈ ਰਿਗ੍ਰੈਸ਼ਨ + +[ਇਹ ਬਲੌਗ ਪੋਸਟ](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) ਸ਼ੇਪਸ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਇੱਕ ਬਹੁਤ ਹੀ ਆਸਾਨ ਸ਼ੁਰੂਆਤ ਦਿੰਦੀ ਹੈ। + +## ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਲਈ ਡੇਟਾਸੈਟ + +ਤੁਸੀਂ ਇਸ ਕੰਮ ਲਈ ਹੇਠ ਲਿਖੇ ਡੇਟਾਸੈਟਾਂ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 ਕਲਾਸਾਂ +* [COCO](http://cocodataset.org/#home) - ਸਧਾਰਨ ਸੰਦਰਭ ਵਿੱਚ ਆਬਜੈਕਟ। 80 ਕਲਾਸਾਂ, ਬਾਉਂਡਿੰਗ ਬਾਕਸ ਅਤੇ ਸੈਗਮੈਂਟੇਸ਼ਨ ਮਾਸਕ + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pa.jpg) + +## ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਮੈਟ੍ਰਿਕਸ + +### ਇੰਟਰਸੈਕਸ਼ਨ ਓਵਰ ਯੂਨੀਅਨ + +ਜਦੋਂ ਕਿ ਇਮੇਜ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਇਹ ਮਾਪਣਾ ਆਸਾਨ ਹੈ ਕਿ ਐਲਗੋਰਿਦਮ ਕਿੰਨਾ ਚੰਗਾ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ, ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਲਈ ਸਾਨੂੰ ਕਲਾਸ ਦੀ ਸਹੀਤਾ ਅਤੇ ਬਾਉਂਡਿੰਗ ਬਾਕਸ ਸਥਿਤੀ ਦੀ ਸਹੀਤਾ ਦੋਵਾਂ ਨੂੰ ਮਾਪਣਾ ਪੈਂਦਾ ਹੈ। ਇਸ ਲਈ, ਅਸੀਂ **ਇੰਟਰਸੈਕਸ਼ਨ ਓਵਰ ਯੂਨੀਅਨ** (IoU) ਵਰਤਦੇ ਹਾਂ, ਜੋ ਮਾਪਦਾ ਹੈ ਕਿ ਦੋ ਬਾਕਸ (ਜਾਂ ਦੋ ਖੇਤਰ) ਕਿੰਨੇ ਓਵਰਲੈਪ ਕਰਦੇ ਹਨ। + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pa.png) + +> *ਤਸਵੀਰ 2 [ਇਸ ਸ਼ਾਨਦਾਰ ਬਲੌਗ ਪੋਸਟ](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) ਤੋਂ* + +ਇਸ ਦਾ ਸਿਧਾਂਤ ਸਧਾਰਨ ਹੈ - ਅਸੀਂ ਦੋ ਆਕ੍ਰਿਤੀਆਂ ਦੇ ਇੰਟਰਸੈਕਸ਼ਨ ਦੇ ਖੇਤਰ ਨੂੰ ਉਹਨਾਂ ਦੇ ਯੂਨੀਅਨ ਦੇ ਖੇਤਰ ਨਾਲ ਵੰਡ ਦਿੰਦੇ ਹਾਂ। ਦੋ ਇਕਸਾਰ ਖੇਤਰਾਂ ਲਈ, IoU 1 ਹੋਵੇਗਾ, ਜਦੋਂ ਕਿ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਲੱਗ ਖੇਤਰਾਂ ਲਈ ਇਹ 0 ਹੋਵੇਗਾ। ਨਹੀਂ ਤਾਂ ਇਹ 0 ਤੋਂ 1 ਤੱਕ ਵੱਖ-ਵੱਖ ਹੋਵੇਗਾ। ਅਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਸਿਰਫ ਉਹਨਾਂ ਬਾਉਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ ਜਿਨ੍ਹਾਂ ਲਈ IoU ਇੱਕ ਨਿਰਧਾਰਤ ਮੁੱਲ ਤੋਂ ਵੱਧ ਹੈ। + +### ਐਵਰੇਜ ਪ੍ਰਿਸੀਸ਼ਨ + +ਮੰਨੋ ਕਿ ਅਸੀਂ ਕਿਸੇ ਦਿੱਤੀ ਗਈ ਕਲਾਸ $C$ ਦੀ ਪਛਾਣ ਦੀ ਕੁਸ਼ਲਤਾ ਨੂੰ ਮਾਪਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਇਸ ਲਈ ਅਸੀਂ **ਐਵਰੇਜ ਪ੍ਰਿਸੀਸ਼ਨ** ਮੈਟ੍ਰਿਕਸ ਵਰਤਦੇ ਹਾਂ, ਜੋ ਹੇਠ ਲਿਖੇ ਤਰੀਕੇ ਨਾਲ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ: + +1. ਪ੍ਰਿਸੀਸ਼ਨ-ਰੀਕਾਲ ਕਰਵ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਡਿਟੈਕਸ਼ਨ ਥ੍ਰੈਸ਼ਹੋਲਡ ਮੁੱਲ (0 ਤੋਂ 1 ਤੱਕ) ਦੇ ਆਧਾਰ 'ਤੇ ਸਹੀਤਾ ਕਿਵੇਂ ਬਦਲਦੀ ਹੈ। +2. ਥ੍ਰੈਸ਼ਹੋਲਡ ਦੇ ਆਧਾਰ 'ਤੇ, ਸਾਨੂੰ ਤਸਵੀਰ ਵਿੱਚ ਵੱਧ ਜਾਂ ਘੱਟ ਆਬਜੈਕਟ ਮਿਲਦੇ ਹਨ, ਅਤੇ ਪ੍ਰਿਸੀਸ਼ਨ ਅਤੇ ਰੀਕਾਲ ਦੇ ਵੱਖ-ਵੱਖ ਮੁੱਲ ਮਿਲਦੇ ਹਨ। +3. ਕਰਵ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗੇਗਾ: + + + +> *ਤਸਵੀਰ [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) ਤੋਂ* + +ਦਿੱਤੀ ਗਈ ਕਲਾਸ $C$ ਲਈ ਐਵਰੇਜ ਪ੍ਰਿਸੀਸ਼ਨ ਇਸ ਕਰਵ ਦੇ ਹੇਠਾਂ ਦੇ ਖੇਤਰ ਦੇ ਬਰਾਬਰ ਹੁੰਦੀ ਹੈ। ਹੋਰ ਵਿਸਥਾਰ ਨਾਲ, ਰੀਕਾਲ ਧੁਰੇ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ 10 ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਪ੍ਰਿਸੀਸ਼ਨ ਨੂੰ ਉਹਨਾਂ ਸਾਰੇ ਬਿੰਦੂਆਂ 'ਤੇ ਔਸਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP ਅਤੇ IoU + +ਅਸੀਂ ਸਿਰਫ ਉਹਨਾਂ ਡਿਟੈਕਸ਼ਨਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਾਂਗੇ, ਜਿਨ੍ਹਾਂ ਲਈ IoU ਇੱਕ ਨਿਰਧਾਰਤ ਮੁੱਲ ਤੋਂ ਵੱਧ ਹੈ। ਉਦਾਹਰਣ ਲਈ, PASCAL VOC ਡੇਟਾਸੈਟ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ $\mbox{IoU Threshold} = 0.5$ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਕਿ COCO ਵਿੱਚ ਵੱਖ-ਵੱਖ $\mbox{IoU Threshold}$ ਮੁੱਲਾਂ ਲਈ AP ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ। + + + +> *ਤਸਵੀਰ [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) ਤੋਂ* + +### ਮੀਨ ਐਵਰੇਜ ਪ੍ਰਿਸੀਸ਼ਨ - mAP + +ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਲਈ ਮੁੱਖ ਮੈਟ੍ਰਿਕਸ ਨੂੰ **ਮੀਨ ਐਵਰੇਜ ਪ੍ਰਿਸੀਸ਼ਨ** ਜਾਂ **mAP** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਐਵਰੇਜ ਪ੍ਰਿਸੀਸ਼ਨ ਦਾ ਮੁੱਲ ਹੁੰਦਾ ਹੈ, ਜੋ ਸਾਰੀਆਂ ਆਬਜੈਕਟ ਕਲਾਸਾਂ 'ਤੇ ਔਸਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਕਈ ਵਾਰ $\mbox{IoU Threshold}$ 'ਤੇ ਵੀ। mAP ਦੀ ਗਣਨਾ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਹੋਰ ਵਿਸਥਾਰ ਨਾਲ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) ਵਿੱਚ ਵਰਣਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਤੇ [ਇੱਥੇ ਕੋਡ ਨਮੂਨਿਆਂ ਨਾਲ](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) ਵੀ। + +## ਵੱਖ-ਵੱਖ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਪਹੁੰਚਾਂ + +ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਐਲਗੋਰਿਦਮਾਂ ਦੇ ਦੋ ਮੁੱਖ ਸ਼੍ਰੇਣੀਆਂ ਹਨ: + +* **ਰੀਜਨ ਪ੍ਰਪੋਜ਼ਲ ਨੈੱਟਵਰਕਸ** (R-CNN, ਫਾਸਟ R-CNN, ਫਾਸਟਰ R-CNN)। ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ **ਰੀਜਨਜ਼ ਆਫ ਇੰਟਰੈਸਟ** (ROI) ਬਣਾਏ ਜਾਣ ਅਤੇ ਉਹਨਾਂ 'ਤੇ CNN ਚਲਾਇਆ ਜਾਵੇ, ਵੱਧ ਤੋਂ ਵੱਧ ਐਕਟੀਵੇਸ਼ਨ ਲੱਭਣ ਲਈ। ਇਹ ਪਹੁੰਚ ਕੁਝ ਹੱਦ ਤੱਕ ਸਧਾਰਨ ਪਹੁੰਚ ਵਰਗੀ ਹੈ, ਪਰ ROI ਨੂੰ ਹੋਰ ਚਤੁਰਾਈ ਨਾਲ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਤਰੀਕਿਆਂ ਦਾ ਇੱਕ ਮੁੱਖ ਨੁਕਸਾਨ ਇਹ ਹੈ ਕਿ ਇਹ ਹੌਲੇ ਹਨ, ਕਿਉਂਕਿ ਸਾਨੂੰ ਤਸਵੀਰ 'ਤੇ CNN ਕਲਾਸੀਫਾਇਰ ਦੇ ਕਈ ਪਾਸੇ ਚਲਾਉਣੇ ਪੈਂਦੇ ਹਨ। +* **ਇੱਕ-ਪਾਸੇ** (YOLO, SSD, ਰੇਟੀਨਾ ਨੈੱਟ) ਤਰੀਕੇ। ਇਹਨਾਂ ਆਰਕੀਟੈਕਚਰਾਂ ਵਿੱਚ ਅਸੀਂ ਨੈੱਟਵਰਕ ਨੂੰ ਇੱਕ ਪਾਸੇ ਵਿੱਚ ਕਲਾਸਾਂ ਅਤੇ ROI ਦੋਵਾਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਲਈ ਡਿਜ਼ਾਈਨ ਕਰਦੇ ਹਾਂ। + +### R-CNN: ਰੀਜਨ-ਬੇਸਡ CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [ਸਿਲੈਕਟਿਵ ਸਰਚ](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ROI ਖੇਤਰਾਂ ਦੀ ਹਾਇਰਾਰਕੀ ਬਣਾਉਣ ਲਈ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਫਿਰ CNN ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਟਰ ਅਤੇ SVM ਕਲਾਸੀਫਾਇਰਾਂ ਰਾਹੀਂ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਆਬਜੈਕਟ ਕਲਾਸ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ, ਅਤੇ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਉਂਡਿੰਗ ਬਾਕਸ ਕੋਆਰਡੀਨੇਟਸ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ। [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pa.png) + +> *ਤਸਵੀਰ ਵੈਨ ਡੇ ਸੈਂਡ ਆਦਿ ICCV’11 ਤੋਂ* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pa.png) + +> *ਤਸਵੀਰਾਂ [ਇਸ ਬਲੌਗ](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) ਤੋਂ* + +### ਫਾਸਟ R-CNN + +ਇਹ ਪਹੁੰਚ R-CNN ਵਰਗੀ ਹੀ ਹੈ, ਪਰ ਖੇਤਰਾਂ ਨੂੰ ਕਨਵੋਲੂਸ਼ਨ ਲੇਅਰਾਂ ਦੇ ਲਾਗੂ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pa.png) + +> ਤਸਵੀਰ [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 ਤੋਂ + +### ਫਾਸਟਰ R-CNN + +ਇਸ ਪਹੁੰਚ ਦਾ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ROI ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਲਈ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਵੇ - ਜਿਸਨੂੰ *ਰੀਜਨ ਪ੍ਰਪੋਜ਼ਲ ਨੈੱਟਵਰਕ* ਕਿਹਾ ਜਾਂਦਾ ਹੈ। [ਪੇਪਰ](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pa.png) + +> ਤਸਵੀਰ [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://arxiv.org/pdf/1506.01497.pdf) ਤੋਂ + +### R-FCN: ਰੀਜਨ-ਬੇਸਡ ਫੁੱਲੀ ਕਨਵੋਲੂਸ਼ਨਲ ਨੈੱਟਵਰਕ + +ਇਹ ਐਲਗੋਰਿਦਮ ਫਾਸਟਰ R-CNN ਨਾਲੋਂ ਵੀ ਤੇਜ਼ ਹੈ। ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ: + +1. ਅਸੀਂ ResNet-101 ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫੀਚਰ ਐਕਸਟ੍ਰੈਕਟ ਕਰਦੇ ਹਾਂ। +2. ਫੀਚਰਾਂ ਨੂੰ **ਪੋਜ਼ੀਸ਼ਨ-ਸੈਂਸਿਟਿਵ ਸਕੋਰ ਮੈਪ** ਦੁਆਰਾ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। $C$ ਕਲਾਸਾਂ ਵਿੱਚੋਂ ਹਰ ਆਬਜੈਕਟ ਨੂੰ $k\times k$ ਖੇਤਰਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਆਬਜੈਕਟ ਦੇ ਹਿੱਸਿਆਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ। +3. $k\times k$ ਖੇਤਰਾਂ ਵਿੱਚੋਂ ਹਰ ਹਿੱਸੇ ਲਈ ਸਾਰੇ ਨੈੱਟਵਰਕ ਆਬਜੈਕਟ ਕਲਾਸਾਂ ਲਈ ਵੋਟ ਕਰਦੇ ਹਨ, ਅਤੇ ਵੱਧ ਤੋਂ ਵੱਧ ਵੋਟ ਵਾਲੀ ਆਬਜੈਕਟ ਕਲਾਸ ਚੁਣੀ ਜਾਂਦੀ ਹੈ। + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pa.png) + +> ਤਸਵੀਰ [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://arxiv.org/abs/1605.06409) ਤੋਂ + +### YOLO - ਯੂ ਓਨਲੀ ਲੁੱਕ ਵੰਸ + +YOLO ਇੱਕ ਰੀਅਲਟਾਈਮ ਇੱਕ-ਪਾਸੇ ਐਲਗੋਰਿਦਮ ਹੈ। ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ: + + * ਤਸਵੀਰ ਨੂੰ $S\times S$ ਖੇਤਰਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ। + * ਹਰ ਖੇਤਰ ਲਈ, **CNN** $n$ ਸੰਭਾਵਿਤ ਆਬਜੈਕਟਾਂ, *ਬਾਉਂਡਿੰਗ ਬਾਕਸ* ਕੋਆਰਡੀਨੇਟਸ ਅਤੇ *ਕੌਂਫਿਡੈਂਸ*=*ਪ੍ਰਾਬਬਿਲਿਟੀ* * IoU ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਦਾ ਹੈ। + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pa.png) + +> ਤਸਵੀਰ [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://arxiv.org/abs/1506.02640) ਤੋਂ + +### ਹੋਰ ਐਲਗੋਰਿਦਮ + +* ਰੇਟੀਨਾ ਨੈੱਟ: [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://arxiv.org/abs/1708.02002) + - [Torchvision ਵਿੱਚ PyTorch ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ](https://github.com/fizyr/keras-retinanet) + - [Keras ਸੈਂਪਲਜ਼ ਵਿੱਚ ਰੇਟੀਨਾ ਨੈੱਟ ਨਾਲ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ](https://keras.io/examples/vision/retinanet/) +* SSD (ਸਿੰਗਲ ਸ਼ਾਟ ਡਿਟੈਕਟਰ): [ਆਧਿਕਾਰਿਕ ਪੇਪਰ](https://arxiv.org/abs/1512.02325) + +## ✍️ ਅਭਿਆਸ: ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## ਨਿਸ਼ਕਰਸ਼ + +ਇਸ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਸਾਰੇ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਦਾ ਇੱਕ ਸੰਖੇਪ ਜਾਇਜ਼ਾ ਲਿਆ ਕਿ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਕਿਵੇਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ! + +## 🚀 ਚੁਣੌਤੀ + +ਇਹ ਲੇਖਾਂ ਅਤੇ ਨੋਟਬੁੱਕਾਂ ਬਾਰੇ ਪੜ੍ਹੋ ਜੋ YOLO ਬਾਰੇ ਹਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਖੁਦ ਅਜ਼ਮਾਓ: + +* [ਚੰਗੀ ਬਲੌਗ ਪੋਸਟ](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) ਜੋ YOLO ਨੂੰ ਵਰਣਨ ਕਰਦੀ ਹੈ। + * [ਆਧਿਕਾਰਿਕ ਸਾਈਟ](https://pjreddie.com/darknet/yolo/) + * YOLO: [Keras ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ](https://github.com/experiencor/keras-yolo2), [ਸਟੈਪ-ਬਾਈ-ਸਟੈਪ ਨੋਟਬੁੱਕ](https:// + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/pa/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..e1ab1755 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# ਹਾਲੀਵੁੱਡ ਹੈਡਸ ਡੇਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਨਾਲ ਸਿਰ ਦੀ ਪਛਾਣ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +ਵੀਡੀਓ ਨਿਗਰਾਨੀ ਕੈਮਰੇ ਦੇ ਸਟ੍ਰੀਮ 'ਤੇ ਲੋਕਾਂ ਦੀ ਗਿਣਤੀ ਕਰਨਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਕੰਮ ਹੈ, ਜੋ ਸਾਨੂੰ ਦੁਕਾਨਾਂ ਵਿੱਚ ਆਉਣ ਵਾਲੇ ਵਿਜ਼ਟਰਾਂ ਦੀ ਗਿਣਤੀ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ, ਰੈਸਟੋਰੈਂਟ ਦੇ ਵਿਆਸਤ ਘੰਟਿਆਂ ਦੀ ਪਛਾਣ ਕਰਨ ਆਦਿ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਇਸ ਕੰਮ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਵੱਖ-ਵੱਖ ਕੋਣਾਂ ਤੋਂ ਮਨੁੱਖੀ ਸਿਰਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਨੁੱਖੀ ਸਿਰਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ, ਅਸੀਂ [ਹਾਲੀਵੁੱਡ ਹੈਡਸ ਡੇਟਾਸੈਟ](https://www.di.ens.fr/willow/research/headdetection/) ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ। + +## ਡੇਟਾਸੈਟ + +[ਹਾਲੀਵੁੱਡ ਹੈਡਸ ਡੇਟਾਸੈਟ](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) ਵਿੱਚ 369,846 ਮਨੁੱਖੀ ਸਿਰ ਸ਼ਾਮਲ ਹਨ, ਜੋ ਕਿ ਹਾਲੀਵੁੱਡ ਫਿਲਮਾਂ ਦੇ 224,740 ਫਰੇਮਾਂ ਵਿੱਚ ਐਨੋਟੇਟ ਕੀਤੇ ਗਏ ਹਨ। ਇਹ [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) ਫਾਰਮੈਟ ਵਿੱਚ ਪ੍ਰਦਾਨ ਕੀਤਾ ਗਿਆ ਹੈ, ਜਿੱਥੇ ਹਰ ਚਿੱਤਰ ਲਈ ਇੱਕ XML ਵੇਰਵਾ ਫਾਈਲ ਵੀ ਹੁੰਦੀ ਹੈ, ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦੀ ਹੈ: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +ਇਸ ਡੇਟਾਸੈਟ ਵਿੱਚ ਸਿਰਫ ਇੱਕ ਆਬਜੈਕਟ ਕਲਾਸ ਹੈ `head`, ਅਤੇ ਹਰ ਸਿਰ ਲਈ, ਤੁਹਾਨੂੰ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੇ ਕੋਆਰਡੀਨੇਟਸ ਮਿਲਦੇ ਹਨ। ਤੁਸੀਂ XML ਨੂੰ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪਾਰਸ ਕਰ ਸਕਦੇ ਹੋ, ਜਾਂ [ਇਸ ਲਾਇਬ੍ਰੇਰੀ](https://pypi.org/project/pascal-voc/) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿੱਧੇ PASCAL VOC ਫਾਰਮੈਟ ਨਾਲ ਕੰਮ ਕਰ ਸਕਦੇ ਹੋ। + +## ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਟ੍ਰੇਨਿੰਗ + +ਤੁਸੀਂ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਮਾਡਲ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟ੍ਰੇਨ ਕਰ ਸਕਦੇ ਹੋ: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) ਅਤੇ ਇਸਦੀ Python API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਲਾਉਡ ਵਿੱਚ ਮਾਡਲ ਨੂੰ ਪ੍ਰੋਗਰਾਮਮੈਟਿਕ ਤਰੀਕੇ ਨਾਲ ਟ੍ਰੇਨ ਕਰੋ। ਕਸਟਮ ਵਿਜ਼ਨ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਕੁਝ ਸੌ ਚਿੱਤਰਾਂ ਤੋਂ ਵੱਧ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕੇਗਾ, ਇਸ ਲਈ ਤੁਹਾਨੂੰ ਡੇਟਾਸੈਟ ਨੂੰ ਸੀਮਿਤ ਕਰਨਾ ਪਵੇਗਾ। +* [Keras ਟਿਊਟੋਰਿਯਲ](https://keras.io/examples/vision/retinanet/) ਦੇ ਉਦਾਹਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ RetunaNet ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰੋ। +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) ਵਿੱਚ ਮੌਜੂਦ ਬਿਲਟ-ਇਨ ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਰੋ। + +## ਸਿੱਖਣ ਵਾਲੀਆਂ ਗੱਲਾਂ + +ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਇੱਕ ਅਜਿਹਾ ਕੰਮ ਹੈ ਜੋ ਉਦਯੋਗ ਵਿੱਚ ਅਕਸਰ ਲੋੜੀਂਦਾ ਹੁੰਦਾ ਹੈ। ਜਦੋਂ ਕਿ ਕੁਝ ਸੇਵਾਵਾਂ ਹਨ ਜੋ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਕਰਨ ਲਈ ਵਰਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ (ਜਿਵੇਂ ਕਿ [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), ਇਹ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/pa/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..443927d7 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# ਸੈਗਮੈਂਟੇਸ਼ਨ + +ਅਸੀਂ ਪਹਿਲਾਂ Object Detection ਬਾਰੇ ਸਿੱਖਿਆ ਹੈ, ਜੋ ਸਾਨੂੰ ਚਿੱਤਰ ਵਿੱਚ ਵਸਤੂਆਂ ਨੂੰ ਲੱਭਣ ਲਈ ਉਨ੍ਹਾਂ ਦੇ *bounding boxes* ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਕੁਝ ਕੰਮਾਂ ਲਈ ਸਾਨੂੰ ਸਿਰਫ਼ bounding boxes ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ, ਸਗੋਂ ਵਸਤੂਆਂ ਦੀ ਹੋਰ ਸਹੀ ਸਥਿਤੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਸ ਕੰਮ ਨੂੰ **ਸੈਗਮੈਂਟੇਸ਼ਨ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +ਸੈਗਮੈਂਟੇਸ਼ਨ ਨੂੰ **ਪਿਕਸਲ ਕਲਾਸੀਫਿਕੇਸ਼ਨ** ਵਜੋਂ ਦੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿੱਥੇ **ਹਰ** ਪਿਕਸਲ ਲਈ ਸਾਨੂੰ ਇਸ ਦੀ ਕਲਾਸ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨੀ ਪੈਂਦੀ ਹੈ (*ਪਿਛੋਕੜ* ਵੀ ਇੱਕ ਕਲਾਸ ਹੈ)। ਸੈਗਮੈਂਟੇਸ਼ਨ ਦੇ ਦੋ ਮੁੱਖ ਐਲਗੋਰਿਥਮ ਹਨ: + +* **ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ** ਸਿਰਫ ਪਿਕਸਲ ਦੀ ਕਲਾਸ ਦੱਸਦੀ ਹੈ, ਅਤੇ ਇੱਕੋ ਕਲਾਸ ਦੀਆਂ ਵੱਖ-ਵੱਖ ਵਸਤੂਆਂ ਵਿੱਚ ਫਰਕ ਨਹੀਂ ਕਰਦੀ। +* **ਇੰਸਟੈਂਸ ਸੈਗਮੈਂਟੇਸ਼ਨ** ਕਲਾਸਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ instances ਵਿੱਚ ਵੰਡਦੀ ਹੈ। + +ਉਦਾਹਰਣ ਲਈ, ਇੰਸਟੈਂਸ ਸੈਗਮੈਂਟੇਸ਼ਨ ਵਿੱਚ ਇਹ ਭੇਡਾਂ ਵੱਖ-ਵੱਖ ਵਸਤੂਆਂ ਹਨ, ਪਰ ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ ਵਿੱਚ ਸਾਰੀਆਂ ਭੇਡਾਂ ਨੂੰ ਇੱਕ ਕਲਾਸ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ। + + + +> ਚਿੱਤਰ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। + +ਸੈਗਮੈਂਟੇਸ਼ਨ ਲਈ ਵੱਖ-ਵੱਖ ਨਿਊਰਲ ਆਰਕੀਟੈਕਚਰ ਹਨ, ਪਰ ਇਹ ਸਾਰੇ ਇੱਕੋ ਢਾਂਚੇ ਵਾਲੇ ਹਨ। ਇੱਕ ਤਰੀਕੇ ਨਾਲ, ਇਹ ਉਸ autoencoder ਵਰਗਾ ਹੈ ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖਿਆ ਸੀ, ਪਰ ਅਸਲ ਚਿੱਤਰ ਨੂੰ ਡਿਕੋਡ ਕਰਨ ਦੀ ਬਜਾਏ, ਸਾਡਾ ਮਕਸਦ ਇੱਕ **ਮਾਸਕ** ਨੂੰ ਡਿਕੋਡ ਕਰਨਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਸੈਗਮੈਂਟੇਸ਼ਨ ਨੈਟਵਰਕ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਹਿੱਸੇ ਹੁੰਦੇ ਹਨ: + +* **Encoder** ਇਨਪੁਟ ਚਿੱਤਰ ਤੋਂ ਫੀਚਰ ਕੱਢਦਾ ਹੈ। +* **Decoder** ਉਹਨਾਂ ਫੀਚਰਾਂ ਨੂੰ **ਮਾਸਕ ਚਿੱਤਰ** ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਜਿਸਦਾ ਆਕਾਰ ਅਤੇ ਚੈਨਲਾਂ ਦੀ ਗਿਣਤੀ ਕਲਾਸਾਂ ਦੀ ਗਿਣਤੀ ਦੇ ਅਨੁਸਾਰ ਹੁੰਦੀ ਹੈ। + + + +> ਚਿੱਤਰ [ਇਸ ਪ੍ਰਕਾਸ਼ਨ](https://arxiv.org/pdf/2001.05566.pdf) ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। + +ਸਾਨੂੰ ਖਾਸ ਤੌਰ 'ਤੇ ਸੈਗਮੈਂਟੇਸ਼ਨ ਲਈ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਲਾਸ ਫੰਕਸ਼ਨ ਦਾ ਜ਼ਿਕਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਜਦੋਂ ਕਲਾਸਿਕਲ autoencoders ਵਰਤਦੇ ਹਾਂ, ਸਾਨੂੰ ਦੋ ਚਿੱਤਰਾਂ ਦੇ ਵਿਚਕਾਰ ਸਮਾਨਤਾ ਨੂੰ ਮਾਪਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਅਸੀਂ mean square error (MSE) ਵਰਤ ਸਕਦੇ ਹਾਂ। ਸੈਗਮੈਂਟੇਸ਼ਨ ਵਿੱਚ, ਟਾਰਗੇਟ ਮਾਸਕ ਚਿੱਤਰ ਵਿੱਚ ਹਰ ਪਿਕਸਲ ਕਲਾਸ ਨੰਬਰ (ਤੀਜੀ ਡਾਇਮੈਂਸ਼ਨ ਦੇ ਨਾਲ one-hot-encoded) ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਇਸ ਲਈ ਸਾਨੂੰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਖਾਸ ਲਾਸ ਫੰਕਸ਼ਨ ਵਰਤਣੀ ਪੈਂਦੀ ਹੈ - cross-entropy loss, ਜੋ ਸਾਰੇ ਪਿਕਸਲਾਂ 'ਤੇ ਐਵਰੇਜ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਮਾਸਕ ਬਾਈਨਰੀ ਹੈ - **binary cross-entropy loss** (BCE) ਵਰਤੀ ਜਾਂਦੀ ਹੈ। + +> ✅ One-hot encoding ਇੱਕ ਤਰੀਕਾ ਹੈ ਜਿਸ ਨਾਲ ਕਲਾਸ ਲੇਬਲ ਨੂੰ ਕਲਾਸਾਂ ਦੀ ਗਿਣਤੀ ਦੇ ਬਰਾਬਰ ਲੰਬਾਈ ਵਾਲੇ ਵੇਕਟਰ ਵਿੱਚ encode ਕੀਤਾ ਜਾਂਦਾ ਹੈ। [ਇਸ ਲੇਖ](https://datagy.io/sklearn-one-hot-encode/) ਵਿੱਚ ਇਸ ਤਕਨੀਕ ਬਾਰੇ ਵੇਖੋ। + +## ਮੈਡੀਕਲ ਇਮੇਜਿੰਗ ਲਈ ਸੈਗਮੈਂਟੇਸ਼ਨ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਮੈਡੀਕਲ ਚਿੱਤਰਾਂ ਵਿੱਚ ਮਨੁੱਖੀ nevi (ਜਿਨ੍ਹਾਂ ਨੂੰ ਮੋਲੇ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ) ਨੂੰ ਪਛਾਣਨ ਲਈ ਨੈਟਵਰਕ ਨੂੰ ਟ੍ਰੇਨ ਕਰਕੇ ਸੈਗਮੈਂਟੇਸ਼ਨ ਨੂੰ ਕਾਰਵਾਈ ਵਿੱਚ ਦੇਖਾਂਗੇ। ਅਸੀਂ ਚਿੱਤਰ ਸਰੋਤ ਵਜੋਂ PH2 ਡੇਟਾਬੇਸ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। ਇਸ ਡੇਟਾਸੈਟ ਵਿੱਚ ਤਿੰਨ ਕਲਾਸਾਂ ਦੇ 200 ਚਿੱਤਰ ਹਨ: typical nevus, atypical nevus, ਅਤੇ melanoma। ਸਾਰੇ ਚਿੱਤਰਾਂ ਵਿੱਚ ਇੱਕ **ਮਾਸਕ** ਵੀ ਸ਼ਾਮਲ ਹੈ ਜੋ nevus ਨੂੰ outline ਕਰਦਾ ਹੈ। + +> ✅ ਇਹ ਤਕਨੀਕ ਖਾਸ ਤੌਰ 'ਤੇ ਇਸ ਕਿਸਮ ਦੀ ਮੈਡੀਕਲ ਇਮੇਜਿੰਗ ਲਈ ਉਚਿਤ ਹੈ, ਪਰ ਤੁਸੀਂ ਹੋਰ ਕਿਹੜੀਆਂ ਹਕੀਕਤੀ ਦੁਨੀਆ ਦੀਆਂ ਐਪਲੀਕੇਸ਼ਨਸ ਦੀ ਕਲਪਨਾ ਕਰ ਸਕਦੇ ਹੋ? + +navi + +> ਚਿੱਤਰ PH2 ਡੇਟਾਬੇਸ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। + +ਅਸੀਂ ਮਾਡਲ ਨੂੰ ਕਿਸੇ ਵੀ nevus ਨੂੰ ਇਸਦੇ ਪਿਛੋਕੜ ਤੋਂ ਸੈਗਮੈਂਟ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕਰਾਂਗੇ। + +## ✍️ ਅਭਿਆਸ: ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕ ਖੋਲ੍ਹੋ ਤਾਂ ਜੋ ਵੱਖ-ਵੱਖ ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ ਆਰਕੀਟੈਕਚਰਾਂ ਬਾਰੇ ਹੋਰ ਜਾਣ ਸਕੋ, ਉਨ੍ਹਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਪ੍ਰੈਕਟਿਸ ਕਰੋ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਕਾਰਵਾਈ ਵਿੱਚ ਦੇਖੋ। + +* [ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## ਨਿਸ਼ਕਰਸ਼ + +ਸੈਗਮੈਂਟੇਸ਼ਨ ਚਿੱਤਰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਇੱਕ ਬਹੁਤ ਹੀ ਸ਼ਕਤੀਸ਼ਾਲੀ ਤਕਨੀਕ ਹੈ, ਜੋ bounding boxes ਤੋਂ ਅੱਗੇ ਵੱਧ ਕੇ ਪਿਕਸਲ-ਪੱਧਰ ਦੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਤੱਕ ਪਹੁੰਚਦੀ ਹੈ। ਇਹ ਮੈਡੀਕਲ ਇਮੇਜਿੰਗ ਸਮੇਤ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨਸ ਵਿੱਚ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +ਬੌਡੀ ਸੈਗਮੈਂਟੇਸ਼ਨ ਚਿੱਤਰਾਂ ਨਾਲ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਆਮ ਕੰਮਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਕੰਮਾਂ ਵਿੱਚ **ਸਕੈਲੇਟਨ ਡਿਟੈਕਸ਼ਨ** ਅਤੇ **ਪੋਜ਼ ਡਿਟੈਕਸ਼ਨ** ਸ਼ਾਮਲ ਹਨ। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਅਜ਼ਮਾਓ ਅਤੇ ਵੇਖੋ ਕਿ ਪੋਜ਼ ਡਿਟੈਕਸ਼ਨ ਕਿਵੇਂ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ। + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਇਹ [ਵਿਕੀਪੀਡੀਆ ਲੇਖ](https://wikipedia.org/wiki/Image_segmentation) ਇਸ ਤਕਨੀਕ ਦੇ ਵੱਖ-ਵੱਖ ਐਪਲੀਕੇਸ਼ਨਸ ਦਾ ਚੰਗਾ ਜਾਇਜ਼ਾ ਦਿੰਦਾ ਹੈ। ਇਸ ਖੇਤਰ ਵਿੱਚ Instance segmentation ਅਤੇ Panoptic segmentation ਦੇ ਉਪ-ਡੋਮੇਨ ਬਾਰੇ ਖੁਦ ਹੋਰ ਸਿੱਖੋ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਲੈਬ ਵਿੱਚ, **ਮਨੁੱਖੀ ਬੌਡੀ ਸੈਗਮੈਂਟੇਸ਼ਨ** ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ਨੂੰ Kaggle ਤੋਂ ਵਰਤ ਕੇ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/pa/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..1d9f2ad4 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# ਮਨੁੱਖੀ ਸਰੀਰ ਸੈਗਮੈਂਟੇਸ਼ਨ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਟਾਸਕ + +ਵੀਡੀਓ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ, ਉਦਾਹਰਨ ਵਜੋਂ, ਮੌਸਮ ਦੀ ਪੇਸ਼ਕਸ਼ਾਂ ਵਿੱਚ, ਅਕਸਰ ਸਾਨੂੰ ਕੈਮਰੇ ਤੋਂ ਮਨੁੱਖੀ ਚਿੱਤਰ ਨੂੰ ਕੱਟ ਕੇ ਕਿਸੇ ਹੋਰ ਫੁਟੇਜ ਦੇ ਉੱਪਰ ਰੱਖਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਆਮ ਤੌਰ 'ਤੇ **ਕ੍ਰੋਮਾ ਕੀ** ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਮਨੁੱਖ ਨੂੰ ਇੱਕ ਸਾਰੇ ਰੰਗ ਦੇ ਪਿਛੋਕੜ ਦੇ ਸਾਹਮਣੇ ਫਿਲਮਾਇਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਫਿਰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਲੈਬ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕ ਮਾਡਲ ਨੂੰ ਮਨੁੱਖੀ ਸਿਲੂਐਟ ਕੱਟਣ ਲਈ ਟ੍ਰੇਨ ਕਰਾਂਗੇ। + +## ਡਾਟਾਸੈਟ + +ਅਸੀਂ Kaggle ਤੋਂ [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। Kaggle ਤੋਂ ਡਾਟਾਸੈਟ ਨੂੰ ਹੱਥੋਂ ਡਾਊਨਲੋਡ ਕਰੋ। + +## ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ + +ਲੈਬ ਨੂੰ [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) ਖੋਲ੍ਹ ਕੇ ਸ਼ੁਰੂ ਕਰੋ। + +## ਸਿੱਖਣ ਵਾਲੀ ਗੱਲ + +ਸਰੀਰ ਸੈਗਮੈਂਟੇਸ਼ਨ ਮਨੁੱਖੀ ਚਿੱਤਰਾਂ ਨਾਲ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਆਮ ਕੰਮਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਕੰਮਾਂ ਵਿੱਚ **ਸਕੈਲੇਟਨ ਡਿਟੈਕਸ਼ਨ** ਅਤੇ **ਪੋਜ਼ ਡਿਟੈਕਸ਼ਨ** ਸ਼ਾਮਲ ਹਨ। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਵੇਖੋ ਕਿ ਇਹ ਕੰਮ ਕਿਵੇਂ ਲਾਗੂ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਚਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/4-ComputerVision/README.md b/translations/pa/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..fb2c2266 --- /dev/null +++ b/translations/pa/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ + +![ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਸਮੱਗਰੀ ਦਾ ਇੱਕ ਡੂਡਲ ਵਿੱਚ ਸਾਰ](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pa.png) + +ਇਸ ਭਾਗ ਵਿੱਚ ਅਸੀਂ ਸਿੱਖਾਂਗੇ: + +* [ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਅਤੇ OpenCV ਦਾ ਪਰਿਚਯ](06-IntroCV/README.md) +* [ਕਨਵੋਲੂਸ਼ਨਲ ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ](07-ConvNets/README.md) +* [ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਨੈੱਟਵਰਕਸ ਅਤੇ ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ](08-TransferLearning/README.md) +* [ਆਟੋਇਨਕੋਡਰਜ਼](09-Autoencoders/README.md) +* [ਜਨਰੇਟਿਵ ਐਡਵਰਸਰੀਅਲ ਨੈੱਟਵਰਕਸ](10-GANs/README.md) +* [ਆਬਜੈਕਟ ਡਿਟੈਕਸ਼ਨ](11-ObjectDetection/README.md) +* [ਸੈਮੈਂਟਿਕ ਸੈਗਮੈਂਟੇਸ਼ਨ](12-Segmentation/README.md) + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਭਵਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/13-TextRep/README.md b/translations/pa/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..ffd802a1 --- /dev/null +++ b/translations/pa/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# ਟੈਕਸਟ ਨੂੰ ਟੈਂਸਰ ਵਜੋਂ ਦਰਸਾਉਣਾ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## ਟੈਕਸਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ + +ਇਸ ਸੈਕਸ਼ਨ ਦੇ ਪਹਿਲੇ ਹਿੱਸੇ ਦੌਰਾਨ, ਅਸੀਂ **ਟੈਕਸਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ** ਟਾਸਕ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। ਅਸੀਂ [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) ਡਾਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਜਿਸ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਜਿਹੇ ਖ਼ਬਰਾਂ ਦੇ ਲੇਖ ਸ਼ਾਮਲ ਹਨ: + +* ਸ਼੍ਰੇਣੀ: ਸਾਇ/ਟੈਕ +* ਸਿਰਲੇਖ: Ky. ਕੰਪਨੀ ਨੇ ਪੈਪਟਾਈਡਸ ਦਾ ਅਧਿਐਨ ਕਰਨ ਲਈ ਗ੍ਰਾਂਟ ਜਿੱਤੀ (AP) +* ਬਾਡੀ: AP - ਲੂਈਵਿਲ ਯੂਨੀਵਰਸਿਟੀ ਦੇ ਰਸਾਇਣ ਵਿਗਿਆਨ ਦੇ ਖੋਜਕਰਤਾ ਦੁਆਰਾ ਸਥਾਪਿਤ ਇੱਕ ਕੰਪਨੀ ਨੇ ਵਿਕਾਸ ਲਈ ਗ੍ਰਾਂਟ ਜਿੱਤੀ... + +ਸਾਡਾ ਲਕਸ਼ ਖ਼ਬਰਾਂ ਦੇ ਲੇਖ ਨੂੰ ਟੈਕਸਟ ਦੇ ਆਧਾਰ 'ਤੇ ਇੱਕ ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਵੰਡਣਾ ਹੋਵੇਗਾ। + +## ਟੈਕਸਟ ਨੂੰ ਦਰਸਾਉਣਾ + +ਜੇਕਰ ਅਸੀਂ ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ (NLP) ਟਾਸਕ ਨੂੰ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨਾਲ ਹੱਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਤਾਂ ਸਾਨੂੰ ਟੈਕਸਟ ਨੂੰ ਟੈਂਸਰ ਵਜੋਂ ਦਰਸਾਉਣ ਦਾ ਕੋਈ ਤਰੀਕਾ ਲੋੜੀਂਦਾ ਹੈ। ਕੰਪਿਊਟਰ ਪਹਿਲਾਂ ਹੀ ਟੈਕਸਟ ਦੇ ਅੱਖਰਾਂ ਨੂੰ ਅੰਕਾਂ ਵਜੋਂ ਦਰਸਾਉਂਦੇ ਹਨ ਜੋ ਤੁਹਾਡੇ ਸਕ੍ਰੀਨ 'ਤੇ ਫੌਂਟਸ ਨਾਲ ਮੈਪ ਹੁੰਦੇ ਹਨ, ASCII ਜਾਂ UTF-8 ਵਰਗੀਆਂ ਐਨਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ। + +ਇੱਕ ਚਿੱਤਰ ਜੋ ਇੱਕ ਅੱਖਰ ਨੂੰ ASCII ਅਤੇ ਬਾਈਨਰੀ ਪ੍ਰਤੀਨਿਧਤਾ ਨਾਲ ਮੈਪ ਕਰਦਾ ਹੈ + +> [ਚਿੱਤਰ ਸਰੋਤ](https://www.seobility.net/en/wiki/ASCII) + +ਇਨਸਾਨਾਂ ਵਜੋਂ, ਅਸੀਂ ਸਮਝਦੇ ਹਾਂ ਕਿ ਹਰ ਅੱਖਰ **ਕੀ ਦਰਸਾਉਂਦਾ ਹੈ**, ਅਤੇ ਸਾਰੇ ਅੱਖਰ ਇਕੱਠੇ ਹੋ ਕੇ ਵਾਕ ਦੇ ਸ਼ਬਦ ਬਣਾਉਂਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਕੰਪਿਊਟਰ ਆਪਣੇ ਆਪ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਸਮਝ ਨਹੀਂ ਰੱਖਦੇ, ਅਤੇ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਅਰਥ ਸਿੱਖਣਾ ਪੈਂਦਾ ਹੈ। + +ਇਸ ਲਈ, ਅਸੀਂ ਟੈਕਸਟ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਵਰਤ ਸਕਦੇ ਹਾਂ: + +* **ਕਿਰਦਾਰ-ਪੱਧਰ ਦੀ ਪ੍ਰਤੀਨਿਧਤਾ**, ਜਦੋਂ ਅਸੀਂ ਟੈਕਸਟ ਨੂੰ ਹਰ ਅੱਖਰ ਨੂੰ ਇੱਕ ਅੰਕ ਵਜੋਂ ਮੰਨ ਕੇ ਦਰਸਾਉਂਦੇ ਹਾਂ। ਜੇਕਰ ਸਾਡੇ ਟੈਕਸਟ ਕੋਰਪਸ ਵਿੱਚ *C* ਵੱਖ-ਵੱਖ ਅੱਖਰ ਹਨ, ਤਾਂ ਸ਼ਬਦ *Hello* ਨੂੰ 5x*C* ਟੈਂਸਰ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾਵੇਗਾ। ਹਰ ਅੱਖਰ ਇੱਕ-ਹਾਟ ਐਨਕੋਡਿੰਗ ਵਿੱਚ ਟੈਂਸਰ ਕਾਲਮ ਦੇ ਅਨੁਸਾਰ ਹੋਵੇਗਾ। +* **ਸ਼ਬਦ-ਪੱਧਰ ਦੀ ਪ੍ਰਤੀਨਿਧਤਾ**, ਜਿਸ ਵਿੱਚ ਅਸੀਂ ਆਪਣੇ ਟੈਕਸਟ ਵਿੱਚ ਸਾਰੇ ਸ਼ਬਦਾਂ ਦੀ ਇੱਕ **ਵਰਡ ਕੋਸ਼** ਬਣਾਉਂਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ ਸ਼ਬਦਾਂ ਨੂੰ ਇੱਕ-ਹਾਟ ਐਨਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਰਸਾਉਂਦੇ ਹਾਂ। ਇਹ ਤਰੀਕਾ ਕੁਝ ਹੱਦ ਤੱਕ ਬਿਹਤਰ ਹੈ, ਕਿਉਂਕਿ ਹਰ ਅੱਖਰ ਆਪਣੇ ਆਪ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਅਰਥ ਨਹੀਂ ਰੱਖਦਾ, ਅਤੇ ਇਸ ਲਈ ਉੱਚ-ਪੱਧਰੀ ਸੈਮੈਂਟਿਕ ਧਾਰਨਾਵਾਂ - ਸ਼ਬਦਾਂ - ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਸੀਂ ਨਿਊਰਲ ਨੈਟਵਰਕ ਲਈ ਕੰਮ ਸੌਖਾ ਕਰ ਦਿੰਦੇ ਹਾਂ। ਹਾਲਾਂਕਿ, ਵੱਡੇ ਡਿਕਸ਼ਨਰੀ ਆਕਾਰ ਦੇ ਕਾਰਨ, ਸਾਨੂੰ ਉੱਚ-ਮਾਪਦੰਡ ਵਾਲੇ sparse ਟੈਂਸਰਾਂ ਨਾਲ ਨਜਿੱਠਣਾ ਪੈਂਦਾ ਹੈ। + +ਕਿਸੇ ਵੀ ਪ੍ਰਤੀਨਿਧਤਾ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਟੈਕਸਟ ਨੂੰ **ਟੋਕਨਜ਼** ਦੀ ਲੜੀ ਵਿੱਚ ਬਦਲਣਾ ਪੈਂਦਾ ਹੈ, ਇੱਕ ਟੋਕਨ ਜਾਂ ਤਾਂ ਇੱਕ ਅੱਖਰ, ਇੱਕ ਸ਼ਬਦ, ਜਾਂ ਕਈ ਵਾਰ ਇੱਕ ਸ਼ਬਦ ਦਾ ਹਿੱਸਾ ਹੁੰਦਾ ਹੈ। ਫਿਰ, ਅਸੀਂ ਟੋਕਨ ਨੂੰ ਇੱਕ ਅੰਕ ਵਿੱਚ ਬਦਲਦੇ ਹਾਂ, ਆਮ ਤੌਰ 'ਤੇ **ਵਰਡ ਕੋਸ਼** ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਅਤੇ ਇਹ ਅੰਕ ਇੱਕ-ਹਾਟ ਐਨਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਿੱਚ ਫੀਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + +## N-Grams + +ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਵਿੱਚ, ਸ਼ਬਦਾਂ ਦਾ ਸਹੀ ਅਰਥ ਸਿਰਫ ਸੰਦਰਭ ਵਿੱਚ ਹੀ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, *neural network* ਅਤੇ *fishing network* ਦੇ ਅਰਥ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵੱਖਰੇ ਹਨ। ਇਸਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਦੇ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਕਿ ਅਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਸ਼ਬਦਾਂ ਦੇ ਜੋੜਿਆਂ 'ਤੇ ਬਣਾਈਏ, ਅਤੇ ਸ਼ਬਦ ਜੋੜਿਆਂ ਨੂੰ ਵੱਖਰੇ ਵਰਡ ਕੋਸ਼ ਟੋਕਨਜ਼ ਵਜੋਂ ਮੰਨਿਆ ਜਾਵੇ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਵਾਕ *I like to go fishing* ਹੇਠਾਂ ਦਿੱਤੇ ਟੋਕਨਜ਼ ਦੀ ਲੜੀ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾਵੇਗਾ: *I like*, *like to*, *to go*, *go fishing*। ਇਸ ਤਰੀਕੇ ਨਾਲ ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਡਿਕਸ਼ਨਰੀ ਦਾ ਆਕਾਰ ਕਾਫ਼ੀ ਵੱਧ ਜਾਂਦਾ ਹੈ, ਅਤੇ *go fishing* ਅਤੇ *go shopping* ਵਰਗੇ ਜੋੜੇ ਵੱਖਰੇ ਟੋਕਨਜ਼ ਦੁਆਰਾ ਦਰਸਾਏ ਜਾਂਦੇ ਹਨ, ਜੋ ਕਿ ਕੋਈ ਵੀ ਸੈਮੈਂਟਿਕ ਸਮਾਨਤਾ ਸਾਂਝੀ ਨਹੀਂ ਕਰਦੇ, ਭਾਵੇਂ ਕਿ ਕ੍ਰਿਆ ਇੱਕੋ ਹੀ ਹੈ। + +ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਅਸੀਂ tri-grams -- ਤਿੰਨ ਸ਼ਬਦਾਂ ਦੇ ਜੋੜੇ -- ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਵੀ ਸੋਚ ਸਕਦੇ ਹਾਂ। ਇਸ ਤਰੀਕੇ ਨੂੰ ਅਕਸਰ **n-grams** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਵੀ ਸਮਝਦਾਰ ਹੈ ਕਿ n-grams ਨੂੰ ਕਿਰਦਾਰ-ਪੱਧਰ ਦੀ ਪ੍ਰਤੀਨਿਧਤਾ ਨਾਲ ਵਰਤਿਆ ਜਾਵੇ, ਜਿਸ ਵਿੱਚ n-grams ਲਗਭਗ ਵੱਖ-ਵੱਖ ਸਿਲੇਬਲਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। + +## Bag-of-Words ਅਤੇ TF/IDF + +ਜਦੋਂ ਅਸੀਂ ਟੈਕਸਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਰਗੇ ਟਾਸਕ ਹੱਲ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਸਾਨੂੰ ਟੈਕਸਟ ਨੂੰ ਇੱਕ ਫਿਕਸਡ-ਸਾਈਜ਼ ਵੇਕਟਰ ਦੁਆਰਾ ਦਰਸਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਸਨੂੰ ਅਸੀਂ ਅੰਤਮ ਡੈਂਸ ਕਲਾਸੀਫਾਇਰ ਵਿੱਚ ਇਨਪੁਟ ਵਜੋਂ ਵਰਤਾਂਗੇ। ਇਸਦਾ ਸਭ ਤੋਂ ਸੌਖਾ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਸਾਰੇ ਵਿਅਕਤੀਗਤ ਸ਼ਬਦ ਪ੍ਰਤੀਨਿਧਤਾਵਾਂ ਨੂੰ ਜੋੜ ਦਿੱਤਾ ਜਾਵੇ। ਜੇਕਰ ਅਸੀਂ ਹਰ ਸ਼ਬਦ ਦੀ ਇੱਕ-ਹਾਟ ਐਨਕੋਡਿੰਗ ਨੂੰ ਜੋੜੀਏ, ਤਾਂ ਅਸੀਂ ਫ੍ਰੀਕਵੈਂਸੀਜ਼ ਦੇ ਇੱਕ ਵੇਕਟਰ 'ਤੇ ਪਹੁੰਚਾਂਗੇ, ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਹਰ ਸ਼ਬਦ ਟੈਕਸਟ ਵਿੱਚ ਕਿੰਨੀ ਵਾਰ ਆਉਂਦਾ ਹੈ। ਟੈਕਸਟ ਦੀ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਪ੍ਰਤੀਨਿਧਤਾ ਨੂੰ **bag of words** (BoW) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + + + +> ਲੇਖਕ ਦੁਆਰਾ ਚਿੱਤਰ + +BoW ਅਸਲ ਵਿੱਚ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਸ਼ਬਦ ਟੈਕਸਟ ਵਿੱਚ ਆਉਂਦੇ ਹਨ ਅਤੇ ਕਿਹੜੀਆਂ ਮਾਤਰਾਵਾਂ ਵਿੱਚ, ਜੋ ਕਿ ਅਕਸਰ ਇਹ ਦਰਸਾਉਣ ਲਈ ਇੱਕ ਵਧੀਆ ਸੰਕੇਤ ਹੁੰਦਾ ਹੈ ਕਿ ਟੈਕਸਟ ਕਿਸ ਬਾਰੇ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਰਾਜਨੀਤੀ 'ਤੇ ਖ਼ਬਰਾਂ ਦੇ ਲੇਖ ਵਿੱਚ ਸੰਭਾਵਨਾ ਹੈ ਕਿ *president* ਅਤੇ *country* ਵਰਗੇ ਸ਼ਬਦ ਸ਼ਾਮਲ ਹੋਣਗੇ, ਜਦਕਿ ਵਿਗਿਆਨਕ ਪ੍ਰਕਾਸ਼ਨ ਵਿੱਚ *collider*, *discovered* ਆਦਿ ਵਰਗੇ ਸ਼ਬਦ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ, ਸ਼ਬਦਾਂ ਦੀਆਂ ਮਾਤਰਾਵਾਂ ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ ਟੈਕਸਟ ਦੇ ਸਮੱਗਰੀ ਦੇ ਬਾਰੇ ਇੱਕ ਵਧੀਆ ਸੰਕੇਤ ਹੋ ਸਕਦੀਆਂ ਹਨ। + +BoW ਨਾਲ ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਕੁਝ ਆਮ ਸ਼ਬਦ, ਜਿਵੇਂ ਕਿ *and*, *is*, ਆਦਿ ਜ਼ਿਆਦਾਤਰ ਟੈਕਸਟ ਵਿੱਚ ਆਉਂਦੇ ਹਨ, ਅਤੇ ਉਹ ਸਭ ਤੋਂ ਉੱਚੀਆਂ ਮਾਤਰਾਵਾਂ ਰੱਖਦੇ ਹਨ, ਜੋ ਸੱਚਮੁੱਚ ਮਹੱਤਵਪੂਰਨ ਸ਼ਬਦਾਂ ਨੂੰ ਛੁਪਾ ਦਿੰਦੇ ਹਨ। ਅਸੀਂ ਉਹਨਾਂ ਸ਼ਬਦਾਂ ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਘਟਾ ਸਕਦੇ ਹਾਂ ਜੇਕਰ ਅਸੀਂ ਪੂਰੇ ਦਸਤਾਵੇਜ਼ ਸੰਗ੍ਰਹਿ ਵਿੱਚ ਸ਼ਬਦਾਂ ਦੇ ਆਵਿਰਤੀ ਦਰ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖੀਏ। ਇਹ TF/IDF ਤਰੀਕੇ ਦੇ ਪਿੱਛੇ ਮੁੱਖ ਵਿਚਾਰ ਹੈ, ਜਿਸਨੂੰ ਇਸ ਪਾਠ ਨਾਲ ਜੁੜੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਵਧੇਰੇ ਵਿਸਥਾਰ ਨਾਲ ਕਵਰ ਕੀਤਾ ਗਿਆ ਹੈ। + +ਹਾਲਾਂਕਿ, ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਟੈਕਸਟ ਦੇ **ਸੈਮੈਂਟਿਕਸ** ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਧਿਆਨ ਵਿੱਚ ਨਹੀਂ ਰੱਖ ਸਕਦਾ। ਸਾਨੂੰ ਇਸ ਲਈ ਹੋਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਨਿਊਰਲ ਨੈਟਵਰਕ ਮਾਡਲਾਂ ਦੀ ਲੋੜ ਹੈ, ਜਿਸ ਬਾਰੇ ਅਸੀਂ ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ ਬਾਅਦ ਵਿੱਚ ਚਰਚਾ ਕਰਾਂਗੇ। + +## ✍️ ਅਭਿਆਸ: ਟੈਕਸਟ ਪ੍ਰਤੀਨਿਧਤਾ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +* [ਪਾਈਟਾਰਚ ਨਾਲ ਟੈਕਸਟ ਪ੍ਰਤੀਨਿਧਤਾ](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [ਟੈਂਸਰਫਲੋ ਨਾਲ ਟੈਕਸਟ ਪ੍ਰਤੀਨਿਧਤਾ](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## ਨਿਸਕਰਸ਼ + +ਅਜੇ ਤੱਕ, ਅਸੀਂ ਉਹ ਤਕਨੀਕਾਂ ਪੜ੍ਹੀਆਂ ਹਨ ਜੋ ਵੱਖ-ਵੱਖ ਸ਼ਬਦਾਂ ਨੂੰ ਆਵਿਰਤੀ ਵਜ਼ਨ ਦੇ ਸਕਦੀਆਂ ਹਨ। ਹਾਲਾਂਕਿ, ਇਹ ਅਰਥ ਜਾਂ ਕ੍ਰਮ ਨੂੰ ਦਰਸਾਉਣ ਵਿੱਚ ਅਸਮਰੱਥ ਹਨ। ਪ੍ਰਸਿੱਧ ਭਾਸ਼ਾਵਿਦ ਜੇ. ਆਰ. ਫਰਥ ਨੇ 1935 ਵਿੱਚ ਕਿਹਾ ਸੀ, "ਸ਼ਬਦ ਦਾ ਪੂਰਾ ਅਰਥ ਹਮੇਸ਼ਾ ਸੰਦਰਭਕ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਸੰਦਰਭ ਤੋਂ ਬਿਨਾਂ ਅਰਥ ਦਾ ਕੋਈ ਅਧਿਐਨ ਗੰਭੀਰਤਾ ਨਾਲ ਨਹੀਂ ਲਿਆ ਜਾ ਸਕਦਾ।" ਅਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ ਬਾਅਦ ਵਿੱਚ ਸਿੱਖਾਂਗੇ ਕਿ ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੈਕਸਟ ਤੋਂ ਸੰਦਰਭਕ ਜਾਣਕਾਰੀ ਕਿਵੇਂ ਕੈਪਚਰ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। + +## 🚀 ਚੈਲੈਂਜ + +Bag-of-words ਅਤੇ ਵੱਖ-ਵੱਖ ਡਾਟਾ ਮਾਡਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੁਝ ਹੋਰ ਅਭਿਆਸ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਤੁਸੀਂ ਇਸ [Kaggle ਮੁਕਾਬਲੇ](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) ਤੋਂ ਪ੍ਰੇਰਿਤ ਹੋ ਸਕਦੇ ਹੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +[ਮਾਈਕਰੋਸਾਫਟ ਲਰਨ](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) 'ਤੇ ਟੈਕਸਟ ਐਮਬੈਡਿੰਗ ਅਤੇ bag-of-words ਤਕਨੀਕਾਂ ਨਾਲ ਆਪਣੀਆਂ ਹੁਨਰਾਂ ਦਾ ਅਭਿਆਸ ਕਰੋ। + +## [ਅਸਾਈਨਮੈਂਟ: ਨੋਟਬੁੱਕਸ](assignment.md) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਜੋ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/13-TextRep/assignment.md b/translations/pa/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..2790fbe0 --- /dev/null +++ b/translations/pa/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# ਅਸਾਈਨਮੈਂਟ: ਨੋਟਬੁੱਕਸ + +ਇਸ ਪਾਠ ਨਾਲ ਸੰਬੰਧਿਤ ਨੋਟਬੁੱਕਸ (ਚਾਹੇ PyTorch ਜਾਂ TensorFlow ਵਰਜਨ) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਆਪਣੇ ਡਾਟਾਸੈੱਟ ਨਾਲ ਦੁਬਾਰਾ ਚਲਾਓ, ਸ਼ਾਇਦ Kaggle ਤੋਂ ਇੱਕ, ਜੋ ਸਹੀ ਸ਼੍ਰੇਯ ਦੇ ਨਾਲ ਵਰਤਿਆ ਗਿਆ ਹੋਵੇ। ਨੋਟਬੁੱਕ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖੋ ਤਾਂ ਜੋ ਤੁਹਾਡੇ ਆਪਣੇ ਨਤੀਜੇ ਹਾਈਲਾਈਟ ਹੋਣ। ਕੁਝ ਨਵਾਟੀ ਡਾਟਾਸੈੱਟਸ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੋ ਹੈਰਾਨ ਕਰਨ ਵਾਲੇ ਸਾਬਤ ਹੋ ਸਕਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ [ਇਹ UFO ਦੇ ਦ੍ਰਿਸ਼ਟਾਂਤਾਂ ਬਾਰੇ](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) NUFORC ਤੋਂ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਇਸਤੇਮਾਲ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/14-Embeddings/README.md b/translations/pa/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..d49508c9 --- /dev/null +++ b/translations/pa/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# ਐਮਬੈਡਿੰਗਜ਼ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +ਜਦੋਂ BoW ਜਾਂ TF/IDF ਅਧਾਰਿਤ ਕਲਾਸੀਫਾਇਰਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਸੀਂ `vocab_size` ਦੀ ਲੰਬਾਈ ਵਾਲੇ ਉੱਚ-ਡਾਈਮੇਨਸ਼ਨਲ ਬੈਗ-ਆਫ-ਵਰਡਜ਼ ਵੇਕਟਰਾਂ 'ਤੇ ਕੰਮ ਕਰਦੇ ਸੀ, ਅਤੇ ਅਸੀਂ ਖੁਦ-ਡਾਈਮੇਨਸ਼ਨਲ ਪੋਜ਼ੀਸ਼ਨਲ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਵੇਕਟਰਾਂ ਨੂੰ sparse one-hot ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਵਿੱਚ ਬਦਲ ਰਹੇ ਸੀ। ਇਹ one-hot ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ, ਹਾਲਾਂਕਿ, ਮੈਮੋਰੀ-ਇਫ਼ਿਸ਼ੈਂਟ ਨਹੀਂ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਹਰ ਸ਼ਬਦ ਨੂੰ ਇੱਕ-ਦੂਜੇ ਤੋਂ ਅਜ਼ਾਦ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ, ਜ਼ਿਆਦਾਤਰ ਇੱਕ-ਹਾਟ ਕੋਡ ਕੀਤੇ ਵੇਕਟਰ ਸ਼ਬਦਾਂ ਦੇ semantic ਸਮਾਨਤਾ ਨੂੰ ਪ੍ਰਗਟ ਨਹੀਂ ਕਰਦੇ। + +**ਐਮਬੈਡਿੰਗ** ਦਾ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਸ਼ਬਦਾਂ ਨੂੰ ਘੱਟ-ਡਾਈਮੇਨਸ਼ਨਲ ਡੈਂਸ ਵੇਕਟਰਾਂ ਦੁਆਰਾ ਪ੍ਰਸਤੁਤ ਕੀਤਾ ਜਾਵੇ, ਜੋ ਕਿਸੇ ਤਰ੍ਹਾਂ ਸ਼ਬਦ ਦੇ semantic ਅਰਥ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਅਸੀਂ ਬਾਅਦ ਵਿੱਚ ਚਰਚਾ ਕਰਾਂਗੇ ਕਿ ਅਰਥਪੂਰਨ ਸ਼ਬਦ ਐਮਬੈਡਿੰਗਜ਼ ਕਿਵੇਂ ਬਣਾਈਆਂ ਜਾਣ, ਪਰ ਇਸ ਸਮੇਂ ਲਈ, ਆਓ ਐਮਬੈਡਿੰਗਜ਼ ਨੂੰ ਸ਼ਬਦ ਵੇਕਟਰ ਦੀ ਡਾਈਮੇਨਸ਼ਨਲਟੀ ਨੂੰ ਘਟਾਉਣ ਦੇ ਤਰੀਕੇ ਵਜੋਂ ਸੋਚੀਏ। + +ਇਸ ਲਈ, ਐਮਬੈਡਿੰਗ ਲੇਅਰ ਇੱਕ ਸ਼ਬਦ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਲਵੇਗੀ ਅਤੇ ਨਿਰਧਾਰਤ `embedding_size` ਦਾ ਆਉਟਪੁੱਟ ਵੇਕਟਰ ਪੈਦਾ ਕਰੇਗੀ। ਇੱਕ ਅਰਥ ਵਿੱਚ, ਇਹ `Linear` ਲੇਅਰ ਦੇ ਬਹੁਤ ਹੀ ਸਮਾਨ ਹੈ, ਪਰ ਇੱਕ-ਹਾਟ ਕੋਡ ਕੀਤੇ ਵੇਕਟਰ ਨੂੰ ਲੈਣ ਦੀ ਬਜਾਏ, ਇਹ ਇੱਕ ਸ਼ਬਦ ਨੰਬਰ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਲੈਣ ਦੇ ਯੋਗ ਹੋਵੇਗੀ, ਜਿਸ ਨਾਲ ਸਾਨੂੰ ਵੱਡੇ ਇੱਕ-ਹਾਟ-ਕੋਡ ਕੀਤੇ ਵੇਕਟਰ ਬਣਾਉਣ ਤੋਂ ਬਚਣ ਦੀ ਆਗਿਆ ਮਿਲੇਗੀ। + +ਐਮਬੈਡਿੰਗ ਲੇਅਰ ਨੂੰ ਸਾਡੇ ਕਲਾਸੀਫਾਇਰ ਨੈਟਵਰਕ ਵਿੱਚ ਪਹਿਲੀ ਲੇਅਰ ਵਜੋਂ ਵਰਤ ਕੇ, ਅਸੀਂ ਬੈਗ-ਆਫ-ਵਰਡਜ਼ ਤੋਂ **embedding bag** ਮਾਡਲ ਵਿੱਚ ਸਵਿੱਚ ਕਰ ਸਕਦੇ ਹਾਂ, ਜਿੱਥੇ ਅਸੀਂ ਪਹਿਲਾਂ ਆਪਣੇ ਟੈਕਸਟ ਵਿੱਚ ਹਰ ਸ਼ਬਦ ਨੂੰ ਸੰਬੰਧਿਤ ਐਮਬੈਡਿੰਗ ਵਿੱਚ ਬਦਲਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ ਸਾਰੇ ਐਮਬੈਡਿੰਗਜ਼ 'ਤੇ ਕੁਝ ਸਮੁੱਚੇ ਫੰਕਸ਼ਨ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ `sum`, `average` ਜਾਂ `max`। + +![ਪੰਜ ਸੀਕਵੈਂਸ ਸ਼ਬਦਾਂ ਲਈ ਐਮਬੈਡਿੰਗ ਕਲਾਸੀਫਾਇਰ ਦਿਖਾਉਣ ਵਾਲੀ ਚਿੱਤਰ।](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pa.png) + +> ਲੇਖਕ ਦੁਆਰਾ ਚਿੱਤਰ + +## ✍️ ਅਭਿਆਸ: ਐਮਬੈਡਿੰਗਜ਼ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ ਆਪਣਾ ਸਿੱਖਣਾ ਜਾਰੀ ਰੱਖੋ: +* [PyTorch ਨਾਲ ਐਮਬੈਡਿੰਗਜ਼](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow ਨਾਲ ਐਮਬੈਡਿੰਗਜ਼](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## ਸੈਮਾਂਟਿਕ ਐਮਬੈਡਿੰਗਜ਼: Word2Vec + +ਹਾਲਾਂਕਿ ਐਮਬੈਡਿੰਗ ਲੇਅਰ ਨੇ ਸ਼ਬਦਾਂ ਨੂੰ ਵੇਕਟਰ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਵਿੱਚ ਮੈਪ ਕਰਨਾ ਸਿੱਖਿਆ, ਪਰ ਇਹ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਜ਼ਰੂਰੀ ਨਹੀਂ ਕਿ semantic ਅਰਥ ਰੱਖਦਾ ਹੋਵੇ। ਇਹ ਚੰਗਾ ਹੋਵੇਗਾ ਕਿ ਇੱਕ ਵੇਕਟਰ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਸਿੱਖਿਆ ਜਾਵੇ ਜਿਸ ਵਿੱਚ ਸਮਾਨ ਸ਼ਬਦ ਜਾਂ synonyms ਉਹਨਾਂ ਵੇਕਟਰਾਂ ਦੇ ਨੇੜੇ ਹੋਣ ਜੋ ਕੁਝ ਵੇਕਟਰ ਦੂਰੀ (ਜਿਵੇਂ ਕਿ Euclidean ਦੂਰੀ) ਦੇ ਅਨੁਸਾਰ ਹੋਣ। + +ਇਸ ਨੂੰ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਤਰੀਕੇ ਨਾਲ ਟੈਕਸਟ ਦੇ ਵੱਡੇ ਸੰਗ੍ਰਹਿ 'ਤੇ ਆਪਣੇ ਐਮਬੈਡਿੰਗ ਮਾਡਲ ਨੂੰ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ। semantic ਐਮਬੈਡਿੰਗਜ਼ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਦੋ ਮੁੱਖ ਆਰਕੀਟੈਕਚਰਾਂ 'ਤੇ ਅਧਾਰਿਤ ਹੈ ਜੋ ਸ਼ਬਦਾਂ ਦੀ ਵਿਤਰਿਤ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਪੈਦਾ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ: + + - **ਕੰਟਿਨਿਊਅਸ ਬੈਗ-ਆਫ-ਵਰਡਜ਼** (CBoW) — ਇਸ ਆਰਕੀਟੈਕਚਰ ਵਿੱਚ, ਅਸੀਂ ਮਾਡਲ ਨੂੰ ਆਸ-ਪਾਸ ਦੇ ਸੰਦਰਭ ਤੋਂ ਇੱਕ ਸ਼ਬਦ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕਰਦੇ ਹਾਂ। ਦਿੱਤੇ ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, ਮਾਡਲ ਦਾ ਉਦੇਸ਼ $(W_{-2},W_{-1},W_1,W_2)$ ਤੋਂ $W_0$ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨਾ ਹੈ। + - **ਕੰਟਿਨਿਊਅਸ ਸਕਿਪ-ਗ੍ਰਾਮ** CBoW ਦੇ ਉਲਟ ਹੈ। ਮਾਡਲ ਸੰਦਰਭ ਸ਼ਬਦਾਂ ਦੀ ਵਿੰਡੋ ਨੂੰ ਵਰਤਦਾ ਹੈ ਤਾਂ ਜੋ ਮੌਜੂਦਾ ਸ਼ਬਦ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕੀਤੀ ਜਾ ਸਕੇ। + +CBoW ਤੇਜ਼ ਹੈ, ਜਦਕਿ ਸਕਿਪ-ਗ੍ਰਾਮ ਹੌਲੀ ਹੈ, ਪਰ ਅਲਭ ਸ਼ਬਦਾਂ ਦੀ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਕਰਨ ਵਿੱਚ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ। + +![CBoW ਅਤੇ ਸਕਿਪ-ਗ੍ਰਾਮ ਅਲਗੋਰਿਥਮ ਦਿਖਾਉਣ ਵਾਲੀ ਚਿੱਤਰ।](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pa.png) + +> [ਇਸ ਪੇਪਰ](https://arxiv.org/pdf/1301.3781.pdf) ਤੋਂ ਚਿੱਤਰ + +Word2Vec ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕੀਤੇ ਐਮਬੈਡਿੰਗਜ਼ (ਜਿਵੇਂ ਕਿ ਹੋਰ ਸਮਾਨ ਮਾਡਲ, ਜਿਵੇਂ GloVe) ਨੂੰ ਨਿਊਰਲ ਨੈਟਵਰਕ ਵਿੱਚ ਐਮਬੈਡਿੰਗ ਲੇਅਰ ਦੀ ਜਗ੍ਹਾ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਸਾਨੂੰ ਸ਼ਬਦਾਵਲੀ ਨਾਲ ਨਿਪਟਣਾ ਪਵੇਗਾ, ਕਿਉਂਕਿ Word2Vec/GloVe ਨੂੰ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤੀ ਗਈ ਸ਼ਬਦਾਵਲੀ ਸਾਡੇ ਟੈਕਸਟ ਕੋਰਪਸ ਵਿੱਚ ਸ਼ਬਦਾਵਲੀ ਤੋਂ ਵੱਖਰੀ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਹੈ। ਉਪਰੋਕਤ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ ਦੇਖੋ ਕਿ ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + +## ਸੰਦਰਭਕ ਐਮਬੈਡਿੰਗਜ਼ + +ਪ੍ਰਚੀਨ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕੀਤੇ ਐਮਬੈਡਿੰਗ ਰਿਪ੍ਰਜ਼ੇਨਟੇਸ਼ਨ ਜਿਵੇਂ Word2Vec ਦੀ ਇੱਕ ਮੁੱਖ ਸੀਮਾ ਸ਼ਬਦ ਅਰਥ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਸਮੱਸਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕੀਤੇ ਐਮਬੈਡਿੰਗਜ਼ ਸ਼ਬਦਾਂ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਕੁਝ ਅਰਥ ਨੂੰ ਕੈਪਚਰ ਕਰ ਸਕਦੇ ਹਨ, ਇੱਕ ਸ਼ਬਦ ਦਾ ਹਰ ਸੰਭਾਵਿਤ ਅਰਥ ਇੱਕੋ ਐਮਬੈਡਿੰਗ ਵਿੱਚ ਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਡਾਊਨਸਟ੍ਰੀਮ ਮਾਡਲਾਂ ਵਿੱਚ ਸਮੱਸਿਆ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਬਹੁਤ ਸਾਰੇ ਸ਼ਬਦ ਜਿਵੇਂ 'play' ਦਾ ਅਰਥ ਸੰਦਰਭ ਦੇ ਅਨੁਸਾਰ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ। + +ਉਦਾਹਰਨ ਲਈ, 'play' ਸ਼ਬਦ ਦਾ ਅਰਥ ਹੇਠਾਂ ਦਿੱਤੇ ਦੋ ਵਾਕਾਂ ਵਿੱਚ ਬਹੁਤ ਵੱਖਰਾ ਹੈ: + +- ਮੈਂ ਥੀਏਟਰ ਵਿੱਚ ਇੱਕ **play** ਦੇਖਣ ਗਿਆ। +- ਜੌਨ ਆਪਣੇ ਦੋਸਤਾਂ ਨਾਲ **play** ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ। + +ਉਪਰੋਕਤ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕੀਤੇ ਐਮਬੈਡਿੰਗਜ਼ 'play' ਸ਼ਬਦ ਦੇ ਦੋਵੇਂ ਅਰਥਾਂ ਨੂੰ ਇੱਕੋ ਐਮਬੈਡਿੰਗ ਵਿੱਚ ਰਿਪ੍ਰਜ਼ੇਨਟ ਕਰਦੇ ਹਨ। ਇਸ ਸੀਮਾ ਨੂੰ ਦੂਰ ਕਰਨ ਲਈ, ਸਾਨੂੰ **ਭਾਸ਼ਾ ਮਾਡਲ** ਦੇ ਅਧਾਰ 'ਤੇ ਐਮਬੈਡਿੰਗਜ਼ ਬਣਾਉਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ, ਜੋ ਟੈਕਸਟ ਦੇ ਵੱਡੇ ਸੰਗ੍ਰਹਿ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ *ਜਾਣਦਾ ਹੈ* ਕਿ ਸ਼ਬਦਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਸੰਦਰਭਾਂ ਵਿੱਚ ਕਿਵੇਂ ਇਕੱਠਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਸੰਦਰਭਕ ਐਮਬੈਡਿੰਗਜ਼ ਦੀ ਚਰਚਾ ਇਸ ਟਿਊਟੋਰਿਅਲ ਦੇ ਦਾਇਰੇ ਤੋਂ ਬਾਹਰ ਹੈ, ਪਰ ਅਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ ਬਾਅਦ ਵਿੱਚ ਭਾਸ਼ਾ ਮਾਡਲਾਂ ਬਾਰੇ ਗੱਲ ਕਰਦੇ ਸਮੇਂ ਵਾਪਸ ਆਵਾਂਗੇ। + +## ਨਿਸਕਰਸ਼ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ TensorFlow ਅਤੇ PyTorch ਵਿੱਚ ਐਮਬੈਡਿੰਗ ਲੇਅਰਾਂ ਨੂੰ ਬਣਾਉਣ ਅਤੇ ਵਰਤਣ ਦਾ ਪਤਾ ਲਗਾਇਆ, ਤਾਂ ਜੋ ਸ਼ਬਦਾਂ ਦੇ semantic ਅਰਥਾਂ ਨੂੰ ਬਿਹਤਰ ਰਿਪ੍ਰਜ਼ੇਨਟ ਕੀਤਾ ਜਾ ਸਕੇ। + +## 🚀 ਚੁਣੌਤੀ + +Word2Vec ਨੂੰ ਕੁਝ ਦਿਲਚਸਪ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਵਰਤਿਆ ਗਿਆ ਹੈ, ਜਿਵੇਂ ਕਿ ਗੀਤਾਂ ਦੇ ਬੋਲ ਅਤੇ ਕਵਿਤਾ ਪੈਦਾ ਕਰਨਾ। [ਇਸ ਲੇਖ](https://www.politetype.com/blog/word2vec-color-poems) ਨੂੰ ਵੇਖੋ ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਲੇਖਕ ਨੇ Word2Vec ਨੂੰ ਕਵਿਤਾ ਪੈਦਾ ਕਰਨ ਲਈ ਕਿਵੇਂ ਵਰਤਿਆ। [ਡੈਨ ਸ਼ਿਫਮੈਨ ਦੁਆਰਾ ਇਹ ਵੀਡੀਓ](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) ਵੀ ਦੇਖੋ ਤਾਂ ਜੋ ਇਸ ਤਕਨੀਕ ਦੀ ਵੱਖਰੀ ਵਿਆਖਿਆ ਪਤਾ ਲਗ ਸਕੇ। ਫਿਰ ਇਸ ਤਕਨੀਕ ਨੂੰ ਆਪਣੇ ਟੈਕਸਟ ਕੋਰਪਸ 'ਤੇ ਲਾਗੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ, ਸ਼ਾਇਦ Kaggle ਤੋਂ ਸੰਗ੍ਰਹਿ ਕੀਤਾ ਗਿਆ ਹੋਵੇ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ + +Word2Vec 'ਤੇ ਇਸ ਪੇਪਰ ਨੂੰ ਪੜ੍ਹੋ: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [ਅਸਾਈਨਮੈਂਟ: ਨੋਟਬੁੱਕ](assignment.md) + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/14-Embeddings/assignment.md b/translations/pa/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..769019b0 --- /dev/null +++ b/translations/pa/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# ਅਸਾਈਨਮੈਂਟ: ਨੋਟਬੁੱਕਸ + +ਇਸ ਪਾਠ ਨਾਲ ਸੰਬੰਧਿਤ ਨੋਟਬੁੱਕਸ (ਚਾਹੇ PyTorch ਜਾਂ TensorFlow ਵਰਜਨ) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਆਪਣੇ ਡਾਟਾਸੈੱਟ ਨਾਲ ਉਨ੍ਹਾਂ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਓ, ਸ਼ਾਇਦ Kaggle ਤੋਂ ਇੱਕ ਡਾਟਾਸੈੱਟ, ਜਿਸਦਾ ਸਹੀ ਸ੍ਰੋਤ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ। ਨੋਟਬੁੱਕ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖੋ ਤਾਂ ਜੋ ਤੁਹਾਡੇ ਆਪਣੇ ਨਤੀਜੇ ਹਾਈਲਾਈਟ ਹੋਣ। ਇੱਕ ਵੱਖਰੇ ਕਿਸਮ ਦੇ ਡਾਟਾਸੈੱਟ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਅਤੇ ਆਪਣੇ ਨਤੀਜਿਆਂ ਨੂੰ ਦਸਤਾਵੇਜ਼ਬੱਧ ਕਰੋ, ਜਿਵੇਂ ਕਿ [ਇਹ Beatles ਗੀਤਾਂ ਦੇ ਬੋਲ](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) ਵਰਤ ਕੇ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/15-LanguageModeling/README.md b/translations/pa/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..a79bf6d9 --- /dev/null +++ b/translations/pa/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ + +ਸੈਮੈਂਟਿਕ ਐਮਬੈੱਡਿੰਗਜ਼, ਜਿਵੇਂ ਕਿ Word2Vec ਅਤੇ GloVe, ਅਸਲ ਵਿੱਚ **ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ** ਵੱਲ ਪਹਿਲਾ ਕਦਮ ਹਨ - ਅਜਿਹੇ ਮਾਡਲ ਬਣਾਉਣਾ ਜੋ ਕਿਸੇ ਤਰ੍ਹਾਂ ਭਾਸ਼ਾ ਦੀ ਕੁਦਰਤ ਨੂੰ *ਸਮਝਣ* (ਜਾਂ *ਪ੍ਰਸਤੁਤ ਕਰਨ*) ਦੇ ਯੋਗ ਹੋਣ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ ਦੇ ਪਿੱਛੇ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਉਨ੍ਹਾਂ ਨੂੰ ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ ਡਾਟਾਸੈਟਸ 'ਤੇ ਅਨਸੁਪਰਵਾਈਜ਼ਡ ਢੰਗ ਨਾਲ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾਵੇ। ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿਉਂਕਿ ਸਾਡੇ ਕੋਲ ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ ਪਾਠ ਦਾ ਬਹੁਤ ਵੱਡਾ ਮਾਤਰਾ ਉਪਲਬਧ ਹੈ, ਜਦਕਿ ਲੇਬਲ ਵਾਲੇ ਪਾਠ ਦੀ ਮਾਤਰਾ ਹਮੇਸ਼ਾਂ ਉਸ ਮਿਹਨਤ ਨਾਲ ਸੀਮਿਤ ਰਹੇਗੀ ਜੋ ਅਸੀਂ ਲੇਬਲਿੰਗ 'ਤੇ ਲਗਾ ਸਕਦੇ ਹਾਂ। ਜ਼ਿਆਦਾਤਰ, ਅਸੀਂ ਅਜਿਹੇ ਭਾਸ਼ਾ ਮਾਡਲ ਬਣਾ ਸਕਦੇ ਹਾਂ ਜੋ ਪਾਠ ਵਿੱਚੋਂ **ਗੁੰਮ ਸ਼ਬਦਾਂ ਦੀ ਭਵਿੱਖਵਾਣੀ** ਕਰ ਸਕਦੇ ਹਨ, ਕਿਉਂਕਿ ਪਾਠ ਵਿੱਚੋਂ ਕਿਸੇ ਵੀ ਰੈਂਡਮ ਸ਼ਬਦ ਨੂੰ ਮਾਸਕ ਕਰਨਾ ਅਤੇ ਇਸਨੂੰ ਟ੍ਰੇਨਿੰਗ ਨਮੂਨੇ ਵਜੋਂ ਵਰਤਣਾ ਆਸਾਨ ਹੈ। + +## ਐਮਬੈੱਡਿੰਗਜ਼ ਦੀ ਟ੍ਰੇਨਿੰਗ + +ਸਾਡੇ ਪਿਛਲੇ ਉਦਾਹਰਣਾਂ ਵਿੱਚ, ਅਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਟ੍ਰੇਨ ਕੀਤੀਆਂ ਸੈਮੈਂਟਿਕ ਐਮਬੈੱਡਿੰਗਜ਼ ਵਰਤੀਆਂ ਸਨ, ਪਰ ਇਹ ਦੇਖਣਾ ਦਿਲਚਸਪ ਹੈ ਕਿ ਇਹ ਐਮਬੈੱਡਿੰਗਜ਼ ਕਿਵੇਂ ਟ੍ਰੇਨ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਕੁਝ ਸੰਭਾਵਿਤ ਵਿਚਾਰ ਹਨ ਜੋ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ: + +* **ਐਨ-ਗ੍ਰਾਮ** ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ, ਜਦੋਂ ਅਸੀਂ ਪਿਛਲੇ ਐਨ ਟੋਕਨਜ਼ ਨੂੰ ਦੇਖ ਕੇ ਇੱਕ ਟੋਕਨ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦੇ ਹਾਂ (ਐਨ-ਗ੍ਰਾਮ)। +* **ਕੰਟਿਨਿਊਅਸ ਬੈਗ-ਆਫ-ਵਰਡਜ਼** (CBoW), ਜਦੋਂ ਅਸੀਂ ਇੱਕ ਟੋਕਨ ਕ੍ਰਮ ਵਿੱਚ ਵਿਚਕਾਰਲੇ ਟੋਕਨ $W_0$ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦੇ ਹਾਂ $W_{-N}$, ..., $W_N$। +* **ਸਕਿਪ-ਗ੍ਰਾਮ**, ਜਿੱਥੇ ਅਸੀਂ ਵਿਚਕਾਰਲੇ ਟੋਕਨ $W_0$ ਤੋਂ ਪਾਸੇ ਦੇ ਟੋਕਨਜ਼ {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦੇ ਹਾਂ। + +![ਸ਼ਬਦਾਂ ਨੂੰ ਵੇਕਟਰ ਵਿੱਚ ਬਦਲਣ ਲਈ ਪੇਪਰ ਤੋਂ ਚਿੱਤਰ](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pa.png) + +> ਚਿੱਤਰ [ਇਸ ਪੇਪਰ](https://arxiv.org/pdf/1301.3781.pdf) ਤੋਂ + +## ✍️ ਉਦਾਹਰਣ ਨੋਟਬੁੱਕਸ: CBoW ਮਾਡਲ ਦੀ ਟ੍ਰੇਨਿੰਗ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +* [ਟੈਂਸਰਫਲੋ ਨਾਲ CBoW Word2Vec ਦੀ ਟ੍ਰੇਨਿੰਗ](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [ਪਾਈਟਾਰਚ ਨਾਲ CBoW Word2Vec ਦੀ ਟ੍ਰੇਨਿੰਗ](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## ਨਤੀਜਾ + +ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਅਸੀਂ ਦੇਖਿਆ ਕਿ ਸ਼ਬਦ ਐਮਬੈੱਡਿੰਗਜ਼ ਜਾਦੂ ਵਾਂਗ ਕੰਮ ਕਰਦੀਆਂ ਹਨ! ਹੁਣ ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਸ਼ਬਦ ਐਮਬੈੱਡਿੰਗਜ਼ ਦੀ ਟ੍ਰੇਨਿੰਗ ਕਰਨਾ ਬਹੁਤ ਜਟਿਲ ਕੰਮ ਨਹੀਂ ਹੈ, ਅਤੇ ਜੇ ਲੋੜ ਹੋਵੇ ਤਾਂ ਅਸੀਂ ਖਾਸ ਖੇਤਰ ਦੇ ਪਾਠ ਲਈ ਆਪਣੀਆਂ ਐਮਬੈੱਡਿੰਗਜ਼ ਟ੍ਰੇਨ ਕਰ ਸਕਦੇ ਹਾਂ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## ਸਮੀਖਿਆ ਅਤੇ ਖੁਦ ਅਧਿਐਨ + +* [ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ 'ਤੇ ਅਧਿਕਾਰਕ ਪਾਈਟਾਰਚ ਟਿਊਟੋਰਿਅਲ](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)। +* [Word2Vec ਮਾਡਲ ਦੀ ਟ੍ਰੇਨਿੰਗ 'ਤੇ ਅਧਿਕਾਰਕ ਟੈਂਸਰਫਲੋ ਟਿਊਟੋਰਿਅਲ](https://www.TensorFlow.org/tutorials/text/word2vec)। +* ਕੁਝ ਲਾਈਨਾਂ ਦੇ ਕੋਡ ਵਿੱਚ ਸਭ ਤੋਂ ਆਮ ਵਰਤੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਐਮਬੈੱਡਿੰਗਜ਼ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ **gensim** ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ [ਇਸ ਡੌਕਯੂਮੈਂਟੇਸ਼ਨ](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) ਵਿੱਚ ਵਰਣਿਤ ਹੈ। + +## 🚀 [ਅਸਾਈਨਮੈਂਟ: ਸਕਿਪ-ਗ੍ਰਾਮ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋ](lab/README.md) + +ਲੈਬ ਵਿੱਚ, ਅਸੀਂ ਤੁਹਾਨੂੰ ਇਸ ਪਾਠ ਦੇ ਕੋਡ ਨੂੰ ਸੋਧਣ ਦੀ ਚੁਣੌਤੀ ਦਿੰਦੇ ਹਾਂ ਤਾਂ ਜੋ CBoW ਦੀ ਬਜਾਏ ਸਕਿਪ-ਗ੍ਰਾਮ ਮਾਡਲ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾ ਸਕੇ। [ਵੇਰਵੇ ਪੜ੍ਹੋ](lab/README.md) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/pa/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..9b524fef --- /dev/null +++ b/translations/pa/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# ਸਕਿਪ-ਗ੍ਰਾਮ ਮਾਡਲ ਦੀ ਟ੍ਰੇਨਿੰਗ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਟਾਸਕ + +ਇਸ ਲੈਬ ਵਿੱਚ, ਅਸੀਂ ਤੁਹਾਨੂੰ ਚੁਣੌਤੀ ਦਿੰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਸਕਿਪ-ਗ੍ਰਾਮ ਤਕਨੀਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ Word2Vec ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋ। ਇੱਕ ਨੈੱਟਵਰਕ ਨੂੰ ਐਮਬੈਡਿੰਗ ਨਾਲ ਟ੍ਰੇਨ ਕਰੋ ਤਾਂ ਜੋ ਇਹ $N$-ਟੋਕਨ-ਵਿਸ਼ਾਲ ਸਕਿਪ-ਗ੍ਰਾਮ ਵਿੰਡੋ ਵਿੱਚ ਨੇੜਲੇ ਸ਼ਬਦਾਂ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰ ਸਕੇ। ਤੁਸੀਂ [ਇਸ ਪਾਠ ਤੋਂ ਕੋਡ](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸਨੂੰ ਥੋੜ੍ਹਾ ਬਦਲ ਸਕਦੇ ਹੋ। + +## ਡਾਟਾਸੈੱਟ + +ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਕਿਤਾਬ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਹਾਨੂੰ [Project Gutenberg](https://www.gutenberg.org/) 'ਤੇ ਬਹੁਤ ਸਾਰੇ ਮੁਫ਼ਤ ਪਾਠ ਮਿਲ ਸਕਦੇ ਹਨ। ਉਦਾਹਰਣ ਵਜੋਂ, ਇੱਥੇ [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) ਲੇਖਕ ਲੂਇਸ ਕੈਰੋਲ ਦੀ ਸਿੱਧੀ ਲਿੰਕ ਹੈ। ਜਾਂ, ਤੁਸੀਂ ਸ਼ੇਕਸਪੀਅਰ ਦੇ ਨਾਟਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## ਖੋਜ ਕਰੋ! + +ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਸਮਾਂ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਸ ਵਿਸ਼ੇ ਵਿੱਚ ਹੋਰ ਡੂੰਘਾਈ ਵਿੱਚ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਚੀਜ਼ਾਂ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ: + +* ਐਮਬੈਡਿੰਗ ਦਾ ਆਕਾਰ ਨਤੀਜਿਆਂ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ? +* ਵੱਖ-ਵੱਖ ਲਿਖਣ ਦੇ ਅੰਦਾਜ਼ ਨਤੀਜੇ 'ਤੇ ਕਿਵੇਂ ਅਸਰ ਕਰਦੇ ਹਨ? +* ਕੁਝ ਬਹੁਤ ਵੱਖਰੇ ਕਿਸਮ ਦੇ ਸ਼ਬਦ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਪਰ੍ਯਾਏਵਾਚੀ ਲਵੋ, ਉਨ੍ਹਾਂ ਦੇ ਵੇਕਟਰ ਪ੍ਰਸਤੁਤੀਆਂ ਪ੍ਰਾਪਤ ਕਰੋ, ਪੀਸੀਏ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਈਮੇਂਸ਼ਨ ਨੂੰ 2 ਤੱਕ ਘਟਾਓ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ 2D ਸਪੇਸ ਵਿੱਚ ਪਲਾਟ ਕਰੋ। ਕੀ ਤੁਹਾਨੂੰ ਕੋਈ ਪੈਟਰਨ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ? + +**ਅਸਵੀਕਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/16-RNN/README.md b/translations/pa/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..1ce66dc4 --- /dev/null +++ b/translations/pa/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# ਰਿਕਰੰਟ ਨਿਊਰਲ ਨੈਟਵਰਕਸ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +ਪਿਛਲੇ ਸੈਕਸ਼ਨਾਂ ਵਿੱਚ, ਅਸੀਂ ਟੈਕਸਟ ਦੇ ਸਮਰੱਥ ਸੈਮਾਂਟਿਕ ਪ੍ਰਤੀਨਿਧੀਆਂ ਅਤੇ ਐਮਬੈਡਿੰਗ ਦੇ ਉੱਪਰ ਇੱਕ ਸਧਾਰਨ ਲੀਨੀਅਰ ਕਲਾਸੀਫਾਇਰ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਸਾਂ। ਇਹ ਆਰਕੀਟੈਕਚਰ ਵਾਕਾਂਸ਼ ਵਿੱਚ ਸ਼ਬਦਾਂ ਦੇ ਸਮੁੱਚਿਤ ਅਰਥ ਨੂੰ ਕੈਪਚਰ ਕਰਦਾ ਹੈ, ਪਰ ਇਹ ਸ਼ਬਦਾਂ ਦੇ **ਕ੍ਰਮ** ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਹੀਂ ਰੱਖਦਾ, ਕਿਉਂਕਿ ਐਮਬੈਡਿੰਗ ਦੇ ਉੱਪਰ ਅਗਰੀਗੇਸ਼ਨ ਓਪਰੇਸ਼ਨ ਨੇ ਮੂਲ ਟੈਕਸਟ ਤੋਂ ਇਹ ਜਾਣਕਾਰੀ ਹਟਾ ਦਿੱਤੀ। ਕਿਉਂਕਿ ਇਹ ਮਾਡਲ ਸ਼ਬਦ ਕ੍ਰਮਬੱਧਤਾ ਨੂੰ ਮਾਡਲ ਨਹੀਂ ਕਰ ਸਕਦੇ, ਇਹ ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਜਾਂ ਪ੍ਰਸ਼ਨ ਉੱਤਰ ਦੇਣ ਵਰਗੇ ਜਟਿਲ ਜਾਂ ਅਸਪਸ਼ਟ ਕੰਮਾਂ ਨੂੰ ਹੱਲ ਨਹੀਂ ਕਰ ਸਕਦੇ। + +ਟੈਕਸਟ ਕ੍ਰਮ ਦਾ ਅਰਥ ਕੈਪਚਰ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਇੱਕ ਹੋਰ ਨਿਊਰਲ ਨੈਟਵਰਕ ਆਰਕੀਟੈਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਜਿਸਨੂੰ **ਰਿਕਰੰਟ ਨਿਊਰਲ ਨੈਟਵਰਕ**, ਜਾਂ RNN ਕਿਹਾ ਜਾਂਦਾ ਹੈ। RNN ਵਿੱਚ, ਅਸੀਂ ਆਪਣਾ ਵਾਕਾਂਸ਼ ਨੈਟਵਰਕ ਵਿੱਚ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਚਿੰਨ੍ਹ ਦੇ ਕੇ ਪਾਸ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਨੈਟਵਰਕ ਕੁਝ **ਸਟੇਟ** ਪੈਦਾ ਕਰਦਾ ਹੈ, ਜਿਸਨੂੰ ਅਸੀਂ ਅਗਲੇ ਚਿੰਨ੍ਹ ਦੇ ਨਾਲ ਮੁੜ ਨੈਟਵਰਕ ਵਿੱਚ ਪਾਸ ਕਰਦੇ ਹਾਂ। + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pa.png) + +> ਲੇਖਕ ਦੁਆਰਾ ਚਿੱਤਰ + +ਟੋਕਨ ਦੇ ਇਨਪੁਟ ਕ੍ਰਮ X0,...,Xn ਨੂੰ ਦੇਖਦੇ ਹੋਏ, RNN ਨਿਊਰਲ ਨੈਟਵਰਕ ਬਲਾਕਾਂ ਦੀ ਇੱਕ ਲੜੀ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ ਇਸ ਲੜੀ ਨੂੰ ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅੰਤ-ਤੱਕ ਸਿਖਾਉਂਦਾ ਹੈ। ਹਰ ਨੈਟਵਰਕ ਬਲਾਕ (Xi,Si) ਦੀ ਜੋੜੀ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ Si+1 ਪੈਦਾ ਕਰਦਾ ਹੈ। ਅੰਤਮ ਸਟੇਟ Sn ਜਾਂ (ਆਉਟਪੁਟ Yn) ਨੂੰ ਨਤੀਜਾ ਪੈਦਾ ਕਰਨ ਲਈ ਲੀਨੀਅਰ ਕਲਾਸੀਫਾਇਰ ਵਿੱਚ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸਾਰੇ ਨੈਟਵਰਕ ਬਲਾਕ ਇੱਕੋ ਜਿਹੇ ਵਜ਼ਨ ਸਾਂਝੇ ਕਰਦੇ ਹਨ, ਅਤੇ ਇੱਕ ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ ਪਾਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅੰਤ-ਤੱਕ ਸਿਖਾਏ ਜਾਂਦੇ ਹਨ। + +ਕਿਉਂਕਿ ਸਟੇਟ ਵੈਕਟਰ S0,...,Sn ਨੈਟਵਰਕ ਵਿੱਚ ਪਾਸ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਇਹ ਸ਼ਬਦਾਂ ਦੇ ਕ੍ਰਮਬੱਧ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਿੱਖਣ ਦੇ ਯੋਗ ਹੁੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜਦੋਂ ਸ਼ਬਦ *not* ਕ੍ਰਮ ਵਿੱਚ ਕਿਤੇ ਵੀ ਆਉਂਦਾ ਹੈ, ਇਹ ਸਟੇਟ ਵੈਕਟਰ ਦੇ ਕੁਝ ਤੱਤਾਂ ਨੂੰ ਨਕਾਰਤਮਕ ਕਰਨ ਲਈ ਸਿੱਖ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਨਕਾਰਾਤਮਕਤਾ ਹੁੰਦੀ ਹੈ। + +> ✅ ਕਿਉਂਕਿ ਉੱਪਰ ਦਿੱਤੇ ਚਿੱਤਰ ਵਿੱਚ ਸਾਰੇ RNN ਬਲਾਕਾਂ ਦੇ ਵਜ਼ਨ ਸਾਂਝੇ ਹਨ, ਇੱਕੋ ਚਿੱਤਰ ਨੂੰ ਇੱਕ ਬਲਾਕ (ਸੱਜੇ ਪਾਸੇ) ਵਜੋਂ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਰਿਕਰੰਟ ਫੀਡਬੈਕ ਲੂਪ ਹੁੰਦਾ ਹੈ, ਜੋ ਨੈਟਵਰਕ ਦੇ ਆਉਟਪੁਟ ਸਟੇਟ ਨੂੰ ਮੁੜ ਇਨਪੁਟ ਵਿੱਚ ਪਾਸ ਕਰਦਾ ਹੈ। + +## RNN ਸੈਲ ਦੀ ਬਣਤਰ + +ਆਓ ਵੇਖੀਏ ਕਿ ਇੱਕ ਸਧਾਰਨ RNN ਸੈਲ ਕਿਵੇਂ ਸੰਗਠਿਤ ਹੈ। ਇਹ ਪਿਛਲੇ ਸਟੇਟ Si-1 ਅਤੇ ਮੌਜੂਦਾ ਚਿੰਨ੍ਹ Xi ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ, ਅਤੇ Si (ਕਈ ਵਾਰ, ਅਸੀਂ ਕੁਝ ਹੋਰ ਆਉਟਪੁਟ Yi ਵਿੱਚ ਵੀ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਜਨਰੇਟਿਵ ਨੈਟਵਰਕਸ ਦੇ ਮਾਮਲੇ ਵਿੱਚ) ਪੈਦਾ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। + +ਇੱਕ ਸਧਾਰਨ RNN ਸੈਲ ਵਿੱਚ ਦੋ ਵਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਹੁੰਦੀਆਂ ਹਨ: ਇੱਕ ਇਨਪੁਟ ਚਿੰਨ੍ਹ ਨੂੰ ਰੂਪਾਂਤਰਿਤ ਕਰਦੀ ਹੈ (ਇਸਨੂੰ W ਕਹੋ), ਅਤੇ ਦੂਜੀ ਇਨਪੁਟ ਸਟੇਟ ਨੂੰ ਰੂਪਾਂਤਰਿਤ ਕਰਦੀ ਹੈ (H)। ਇਸ ਮਾਮਲੇ ਵਿੱਚ ਨੈਟਵਰਕ ਦਾ ਆਉਟਪੁਟ σ(W×Xi+H×Si-1+b) ਵਜੋਂ ਗਣਨਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿੱਥੇ σ ਐਕਟੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ ਹੈ ਅਤੇ b ਵਾਧੂ ਬਾਇਸ ਹੈ। + +RNN Cell Anatomy + +> ਲੇਖਕ ਦੁਆਰਾ ਚਿੱਤਰ + +ਕਈ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਇਨਪੁਟ ਟੋਕਨ RNN ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਐਮਬੈਡਿੰਗ ਲੇਅਰ ਵਿੱਚ ਪਾਸ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਜੋ ਡਾਇਮੈਂਸ਼ਨਲਿਟੀ ਘਟਾਈ ਜਾ ਸਕੇ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਜੇਕਰ ਇਨਪੁਟ ਵੈਕਟਰ ਦਾ ਡਾਇਮੈਂਸ਼ਨ *emb_size* ਹੈ, ਅਤੇ ਸਟੇਟ ਵੈਕਟਰ *hid_size* ਹੈ - ਤਾਂ W ਦਾ ਆਕਾਰ *emb_size*×*hid_size* ਹੈ, ਅਤੇ H ਦਾ ਆਕਾਰ *hid_size*×*hid_size* ਹੈ। + +## ਲਾਂਗ ਸ਼ਾਰਟ ਟਰਮ ਮੈਮਰੀ (LSTM) + +ਕਲਾਸੀਕਲ RNNs ਦੀ ਇੱਕ ਮੁੱਖ ਸਮੱਸਿਆ **ਵੈਨਿਸ਼ਿੰਗ ਗ੍ਰੇਡੀਅੰਟਸ** ਸਮੱਸਿਆ ਹੈ। ਕਿਉਂਕਿ RNNs ਨੂੰ ਇੱਕ ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ ਪਾਸ ਵਿੱਚ ਅੰਤ-ਤੱਕ ਸਿਖਾਇਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਨੈਟਵਰਕ ਦੇ ਪਹਿਲੇ ਲੇਅਰਾਂ ਵਿੱਚ ਗਲਤੀ ਨੂੰ ਪ੍ਰਚਾਰਿਤ ਕਰਨ ਵਿੱਚ ਮੁਸ਼ਕਲ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਇਸ ਲਈ ਨੈਟਵਰਕ ਦੂਰ-ਦੂਰ ਦੇ ਟੋਕਨ ਦੇ ਰਿਸ਼ਤਿਆਂ ਨੂੰ ਸਿੱਖ ਨਹੀਂ ਸਕਦਾ। ਇਸ ਸਮੱਸਿਆ ਤੋਂ ਬਚਣ ਦੇ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਇੱਕ **ਗੇਟਸ** ਦੀ ਵਰਤੋਂ ਕਰਕੇ **ਸਪਸ਼ਟ ਸਟੇਟ ਪ੍ਰਬੰਧਨ** ਪੇਸ਼ ਕਰਨਾ ਹੈ। ਇਸ ਕਿਸਮ ਦੀਆਂ ਦੋ ਪ੍ਰਸਿੱਧ ਆਰਕੀਟੈਕਚਰ ਹਨ: **ਲਾਂਗ ਸ਼ਾਰਟ ਟਰਮ ਮੈਮਰੀ** (LSTM) ਅਤੇ **ਗੇਟਡ ਰੀਲੇਅ ਯੂਨਿਟ** (GRU)। + +![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> ਚਿੱਤਰ ਸਰੋਤ TBD + +LSTM ਨੈਟਵਰਕ RNN ਦੇ ਸਮਾਨ ਢੰਗ ਨਾਲ ਸੰਗਠਿਤ ਹੈ, ਪਰ ਦੋ ਸਟੇਟ ਹਨ ਜੋ ਲੇਅਰ ਤੋਂ ਲੇਅਰ ਵਿੱਚ ਪਾਸ ਕੀਤੇ ਜਾਂਦੇ ਹਨ: ਅਸਲ ਸਟੇਟ C, ਅਤੇ ਲੁਕਿਆ ਹੋਇਆ ਵੈਕਟਰ H। ਹਰ ਯੂਨਿਟ ਵਿੱਚ, ਲੁਕਿਆ ਹੋਇਆ ਵੈਕਟਰ Hi ਇਨਪੁਟ Xi ਨਾਲ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਹ **ਗੇਟਸ** ਰਾਹੀਂ ਸਟੇਟ C ਵਿੱਚ ਕੀ ਹੁੰਦਾ ਹੈ ਇਸਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਦੇ ਹਨ। ਹਰ ਗੇਟ ਇੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕ ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸਿਗਮਾਇਡ ਐਕਟੀਵੇਸ਼ਨ ਹੁੰਦੀ ਹੈ (ਆਉਟਪੁਟ [0,1] ਦੀ ਰੇਂਜ ਵਿੱਚ), ਜਿਸਨੂੰ ਸਟੇਟ ਵੈਕਟਰ ਨਾਲ ਗੁਣਾ ਕਰਨ ਸਮੇਂ ਬਿਟਵਾਈਜ਼ ਮਾਸਕ ਵਜੋਂ ਸੋਚਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਗੇਟ ਹਨ (ਚਿੱਤਰ ਵਿੱਚ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਤੱਕ): + +* **ਫੋਰਗੇਟ ਗੇਟ** ਲੁਕਿਆ ਹੋਇਆ ਵੈਕਟਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ ਸਟੇਟ C ਦੇ ਕਿਹੜੇ ਤੱਤਾਂ ਨੂੰ ਭੁੱਲਣਾ ਹੈ, ਅਤੇ ਕਿਹੜੇ ਪਾਸ ਕਰਨਾ ਹੈ। +* **ਇਨਪੁਟ ਗੇਟ** ਇਨਪੁਟ ਅਤੇ ਲੁਕਿਆ ਹੋਏ ਵੈਕਟਰਾਂ ਤੋਂ ਕੁਝ ਜਾਣਕਾਰੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਸਟੇਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। +* **ਆਉਟਪੁਟ ਗੇਟ** ਸਟੇਟ ਨੂੰ *tanh* ਐਕਟੀਵੇਸ਼ਨ ਨਾਲ ਲੀਨੀਅਰ ਲੇਅਰ ਰਾਹੀਂ ਰੂਪਾਂਤਰਿਤ ਕਰਦਾ ਹੈ, ਫਿਰ Hi ਲੁਕਿਆ ਹੋਏ ਵੈਕਟਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸਦੇ ਕੁਝ ਤੱਤਾਂ ਨੂੰ ਚੁਣਦਾ ਹੈ ਤਾਂ ਜੋ ਨਵਾਂ ਸਟੇਟ Ci+1 ਪੈਦਾ ਕੀਤਾ ਜਾ ਸਕੇ। + +ਸਟੇਟ C ਦੇ ਤੱਤਾਂ ਨੂੰ ਕੁਝ ਝੰਡਿਆਂ ਵਜੋਂ ਸੋਚਿਆ ਜਾ ਸਕਦਾ ਹੈ ਜੋ ਚਾਲੂ ਅਤੇ ਬੰਦ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਜਦੋਂ ਅਸੀਂ ਕ੍ਰਮ ਵਿੱਚ *Alice* ਨਾਮ ਨੂੰ ਮਿਲਦੇ ਹਾਂ, ਅਸੀਂ ਮੰਨ ਸਕਦੇ ਹਾਂ ਕਿ ਇਹ ਇੱਕ ਮਹਿਲਾ ਪਾਤਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ ਸਟੇਟ ਵਿੱਚ ਝੰਡਾ ਚੁੱਕਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਕੋਲ ਵਾਕਾਂਸ਼ ਵਿੱਚ ਇੱਕ ਮਹਿਲਾ ਸੰਗਿਆ ਹੈ। ਜਦੋਂ ਅਸੀਂ ਅਗਲੇ ਵਾਕਾਂਸ਼ *and Tom* ਨੂੰ ਮਿਲਦੇ ਹਾਂ, ਅਸੀਂ ਝੰਡਾ ਚੁੱਕਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਕੋਲ ਬਹੁਵਚਨ ਸੰਗਿਆ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਸਟੇਟ ਨੂੰ ਮੈਨਿਪੁਲੇਟ ਕਰਕੇ ਅਸੀਂ ਵਾਕਾਂਸ਼ ਦੇ ਹਿੱਸਿਆਂ ਦੇ ਵਿਆਕਰਣਕ ਗੁਣਾਂ ਦਾ ਟ੍ਰੈਕ ਰੱਖ ਸਕਦੇ ਹਾਂ। + +> ✅ LSTM ਦੇ ਅੰਦਰੂਨੀ ਹਿੱਸਿਆਂ ਨੂੰ ਸਮਝਣ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਸਰੋਤ ਇਹ ਵਧੀਆ ਲੇਖ ਹੈ [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) ਕ੍ਰਿਸਟੋਫਰ ਓਲਾਹ ਦੁਆਰਾ। + +## ਬਾਈਡਾਇਰੈਕਸ਼ਨਲ ਅਤੇ ਮਲਟੀਲੇਅਰ RNNs + +ਅਸੀਂ ਰਿਕਰੰਟ ਨੈਟਵਰਕਸ ਦੀ ਚਰਚਾ ਕੀਤੀ ਹੈ ਜੋ ਇੱਕ ਦਿਸ਼ਾ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹਨ, ਕ੍ਰਮ ਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਅੰਤ ਤੱਕ। ਇਹ ਕੁਦਰਤੀ ਲੱਗਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਉਸ ਤਰੀਕੇ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਿਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਪੜ੍ਹਦੇ ਅਤੇ ਬੋਲਦੇ ਹਾਂ। ਹਾਲਾਂਕਿ, ਕਈ ਪ੍ਰਯੋਗਿਕ ਮਾਮਲਿਆਂ ਵਿੱਚ ਸਾਡੇ ਕੋਲ ਇਨਪੁਟ ਕ੍ਰਮ ਤੱਕ ਰੈਂਡਮ ਪਹੁੰਚ ਹੁੰਦੀ ਹੈ, ਇਹ ਦੋਵੇਂ ਦਿਸ਼ਾਵਾਂ ਵਿੱਚ ਰਿਕਰੰਟ ਗਣਨਾ ਚਲਾਉਣ ਲਈ ਸਮਝਦਾਰ ਹੋ ਸਕਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਨੈਟਵਰਕਸ ਨੂੰ **ਬਾਈਡਾਇਰੈਕਸ਼ਨਲ** RNNs ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਬਾਈਡਾਇਰੈਕਸ਼ਨਲ ਨੈਟਵਰਕ ਨਾਲ ਨਜਿੱਠਣ ਸਮੇਂ, ਸਾਨੂੰ ਦੋ ਲੁਕਿਆ ਹੋਏ ਸਟੇਟ ਵੈਕਟਰਾਂ ਦੀ ਲੋੜ ਹੋਵੇਗੀ, ਇੱਕ ਹਰ ਦਿਸ਼ਾ ਲਈ। + +ਇੱਕ ਰਿਕਰੰਟ ਨੈਟਵਰਕ, ਚਾਹੇ ਇੱਕ-ਦਿਸ਼ਾ ਵਾਲਾ ਹੋਵੇ ਜਾਂ ਬਾਈਡਾਇਰੈਕਸ਼ਨਲ, ਕ੍ਰਮ ਵਿੱਚ ਕੁਝ ਪੈਟਰਨਾਂ ਨੂੰ ਕੈਪਚਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਸਟੇਟ ਵੈਕਟਰ ਵਿੱਚ ਸਟੋਰ ਕਰਦਾ ਹੈ ਜਾਂ ਆਉਟਪੁਟ ਵਿੱਚ ਪਾਸ ਕਰਦਾ ਹੈ। ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕਸ ਦੀ ਤਰ੍ਹਾਂ, ਅਸੀਂ ਪਹਿਲੇ ਲੇਅਰ ਦੁਆਰਾ ਕੈਪਚਰ ਕੀਤੇ ਗਏ ਨੀਵੀਂ-ਸਤਰ ਦੇ ਪੈਟਰਨਾਂ ਤੋਂ ਉੱਚ-ਸਤਰ ਦੇ ਪੈਟਰਨਾਂ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਲਈ ਪਹਿਲੇ ਲੇਅਰ ਦੇ ਉੱਪਰ ਇੱਕ ਹੋਰ ਰਿਕਰੰਟ ਲੇਅਰ ਬਣਾਉਣ ਲਈ ਬਣਾਉਣ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਸ ਨਾਲ ਸਾਨੂੰ **ਮਲਟੀ-ਲੇਅਰ RNN** ਦਾ ਧਾਰਨਾ ਮਿਲਦੀ ਹੈ ਜੋ ਦੋ ਜਾਂ ਵੱਧ ਰਿਕਰੰਟ ਨੈਟਵਰਕਸ ਤੋਂ ਬਣਦਾ ਹੈ, ਜਿੱਥੇ ਪਿਛਲੇ ਲੇਅਰ ਦਾ ਆਉਟਪੁਟ ਅਗਲੇ ਲੇਅਰ ਵਿੱਚ ਇਨਪੁਟ ਵਜੋਂ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। + +![Image showing a Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pa.jpg) + +*ਚਿੱਤਰ [ਇਸ ਸ਼ਾਨਦਾਰ ਪੋਸਟ](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) ਫਰਨਾਂਡੋ ਲੋਪੇਜ਼ ਦੁਆਰਾ* + +## ✍️ ਅਭਿਆਸ: ਐਮਬੈਡਿੰਗਸ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਆਪਣਾ ਸਿੱਖਣਾ ਜਾਰੀ ਰੱਖੋ: + +* [PyTorch ਨਾਲ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow ਨਾਲ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## ਨਿਸਕਰਸ਼ + +ਇਸ ਯੂਨਿਟ ਵਿੱਚ, ਅਸੀਂ ਵੇਖਿਆ ਕਿ RNNs ਨੂੰ ਕ੍ਰਮ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਪਰ ਅਸਲ ਵਿੱਚ, ਇਹ ਕਈ ਹੋਰ ਕੰਮਾਂ ਨੂੰ ਸੰਭਾਲ ਸਕਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ, ਮਸ਼ੀਨ ਅਨੁਵਾਦ, ਅਤੇ ਹੋਰ। ਅਸੀਂ ਅਗਲੇ ਯੂਨਿਟ ਵਿੱਚ ਉਹ ਕੰਮਾਂ ਵਿਚਾਰਾਂਗੇ। + +## 🚀 ਚੁਣੌਤੀ + +LSTMs ਬਾਰੇ ਕੁਝ ਸਾਹਿਤ ਪੜ੍ਹੋ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਐਪਲੀਕੇਸ਼ਨਸ ਬਾਰੇ ਵਿਚਾਰ ਕਰੋ: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## ਸਮੀਖਾ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) ਕ੍ਰਿਸਟੋਫਰ ਓਲਾਹ ਦੁਆਰਾ। + +## [ਅਸਾਈਨਮੈਂਟ: ਨੋਟਬੁੱਕਸ](assignment.md) + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/16-RNN/assignment.md b/translations/pa/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..3165c497 --- /dev/null +++ b/translations/pa/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# ਅਸਾਈਨਮੈਂਟ: ਨੋਟਬੁੱਕਸ + +ਇਸ ਪਾਠ ਨਾਲ ਜੁੜੀਆਂ ਨੋਟਬੁੱਕਸ (ਚਾਹੇ PyTorch ਜਾਂ TensorFlow ਵਰਜਨ) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਆਪਣੇ ਖੁਦ ਦੇ ਡਾਟਾਸੈਟ ਨਾਲ ਇਨ੍ਹਾਂ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਓ। ਸ਼ਾਇਦ ਕੋਈ ਡਾਟਾਸੈਟ Kaggle ਤੋਂ ਲਵੋ, ਜਿਸਦਾ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਹਵਾਲਾ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ। ਨੋਟਬੁੱਕ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖੋ ਅਤੇ ਆਪਣੇ ਖੁਦ ਦੇ ਨਤੀਜੇ ਹਾਈਲਾਈਟ ਕਰੋ। ਕਿਸੇ ਵੱਖਰੇ ਕਿਸਮ ਦੇ ਡਾਟਾਸੈਟ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਅਤੇ ਆਪਣੇ ਨਤੀਜਿਆਂ ਨੂੰ ਦਸਤਾਵੇਜ਼ਬੱਧ ਕਰੋ, ਜਿਵੇਂ ਕਿ [ਇਹ Kaggle ਮੁਕਾਬਲੇ ਦਾ ਡਾਟਾਸੈਟ ਮੌਸਮ ਟਵੀਟਸ ਬਾਰੇ](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/pa/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..88c906de --- /dev/null +++ b/translations/pa/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# ਜਨਰੇਟਿਵ ਨੈਟਵਰਕਸ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +ਰਿਕਰੰਟ ਨਿਊਰਲ ਨੈਟਵਰਕਸ (RNNs) ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਗੇਟਡ ਸੈੱਲ ਵੈਰੀਐਂਟਸ ਜਿਵੇਂ ਕਿ ਲਾਂਗ ਸ਼ਾਰਟ ਟਰਮ ਮੈਮੋਰੀ ਸੈੱਲਜ਼ (LSTMs) ਅਤੇ ਗੇਟਡ ਰਿਕਰੰਟ ਯੂਨਿਟਸ (GRUs) ਨੇ ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ ਲਈ ਇੱਕ ਮਕੈਨਿਜ਼ਮ ਪ੍ਰਦਾਨ ਕੀਤਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਸ਼ਬਦਾਂ ਦੀ ਕ੍ਰਮਵਾਰਤਾ ਸਿੱਖ ਸਕਦੇ ਹਨ ਅਤੇ ਕ੍ਰਮ ਵਿੱਚ ਅਗਲੇ ਸ਼ਬਦ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰ ਸਕਦੇ ਹਨ। ਇਸ ਨਾਲ ਸਾਨੂੰ RNNs ਨੂੰ **ਜਨਰੇਟਿਵ ਕੰਮਾਂ** ਲਈ ਵਰਤਣ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਆਮ ਪਾਠ ਜਨਰੇਸ਼ਨ, ਮਸ਼ੀਨ ਅਨੁਵਾਦ, ਅਤੇ ਇਮੇਜ ਕੈਪਸ਼ਨਿੰਗ। + +> ✅ ਸੋਚੋ ਕਿ ਤੁਸੀਂ ਕਿੰਨੀ ਵਾਰ ਪਾਠ ਪੂਰਨ ਕਰਨ ਵਰਗੀਆਂ ਜਨਰੇਟਿਵ ਕੰਮਾਂ ਤੋਂ ਲਾਭ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ। ਆਪਣੀਆਂ ਮਨਪਸੰਦ ਐਪਲੀਕੇਸ਼ਨਾਂ ਬਾਰੇ ਖੋਜ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਉਨ੍ਹਾਂ ਨੇ RNNs ਦਾ ਸਹਾਰਾ ਲਿਆ ਸੀ। + +ਪਿਛਲੇ ਯੂਨਿਟ ਵਿੱਚ ਚਰਚਾ ਕੀਤੇ RNN ਆਰਕੀਟੈਕਚਰ ਵਿੱਚ, ਹਰ RNN ਯੂਨਿਟ ਨੇ ਆਉਟਪੁੱਟ ਵਜੋਂ ਅਗਲਾ ਹਿਡਨ ਸਟੇਟ ਤਿਆਰ ਕੀਤਾ। ਹਾਲਾਂਕਿ, ਅਸੀਂ ਹਰ ਰਿਕਰੰਟ ਯੂਨਿਟ ਵਿੱਚ ਇੱਕ ਹੋਰ ਆਉਟਪੁੱਟ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੋ ਸਾਨੂੰ ਇੱਕ **ਕ੍ਰਮ** (ਜੋ ਮੂਲ ਕ੍ਰਮ ਦੇ ਬਰਾਬਰ ਲੰਬਾਈ ਦਾ ਹੈ) ਤਿਆਰ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਅਸੀਂ RNN ਯੂਨਿਟਸ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਹਰ ਕਦਮ 'ਤੇ ਇਨਪੁਟ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰਦੇ, ਸਿਰਫ਼ ਕੁਝ ਸ਼ੁਰੂਆਤੀ ਸਟੇਟ ਵੇਕਟਰ ਲੈਂਦੇ ਹਨ, ਅਤੇ ਫਿਰ ਆਉਟਪੁੱਟ ਦਾ ਕ੍ਰਮ ਤਿਆਰ ਕਰਦੇ ਹਨ। + +ਇਹ ਵੱਖ-ਵੱਖ ਨਿਊਰਲ ਆਰਕੀਟੈਕਚਰਾਂ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਹੇਠਾਂ ਦਿੱਤੇ ਚਿੱਤਰ ਵਿੱਚ ਦਿਖਾਏ ਗਏ ਹਨ: + +![ਆਮ ਰਿਕਰੰਟ ਨਿਊਰਲ ਨੈਟਵਰਕ ਪੈਟਰਨ ਦਿਖਾਉਂਦਾ ਚਿੱਤਰ।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pa.jpg) + +> ਚਿੱਤਰ ਬਲੌਗ ਪੋਸਟ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) ਤੋਂ [Andrej Karpaty](http://karpathy.github.io/) ਦੁਆਰਾ + +* **ਵਨ-ਟੂ-ਵਨ** ਇੱਕ ਪਰੰਪਰਾਗਤ ਨਿਊਰਲ ਨੈਟਵਰਕ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਇਨਪੁਟ ਅਤੇ ਇੱਕ ਆਉਟਪੁੱਟ ਹੁੰਦਾ ਹੈ। +* **ਵਨ-ਟੂ-ਮੇਨੀ** ਇੱਕ ਜਨਰੇਟਿਵ ਆਰਕੀਟੈਕਚਰ ਹੈ ਜੋ ਇੱਕ ਇਨਪੁਟ ਮੁੱਲ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ ਅਤੇ ਆਉਟਪੁੱਟ ਮੁੱਲਾਂ ਦਾ ਕ੍ਰਮ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜੇ ਅਸੀਂ ਇੱਕ **ਇਮੇਜ ਕੈਪਸ਼ਨਿੰਗ** ਨੈਟਵਰਕ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ ਤਸਵੀਰ ਦਾ ਵਰਣਨ ਪਾਠ ਰੂਪ ਵਿੱਚ ਤਿਆਰ ਕਰੇ, ਤਾਂ ਅਸੀਂ ਇੱਕ ਤਸਵੀਰ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਲੈ ਸਕਦੇ ਹਾਂ, ਇਸਨੂੰ ਇੱਕ CNN ਰਾਹੀਂ ਪਾਸ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਇਸਦਾ ਹਿਡਨ ਸਟੇਟ ਪ੍ਰਾਪਤ ਹੋਵੇ, ਅਤੇ ਫਿਰ ਇੱਕ ਰਿਕਰੰਟ ਚੇਨ ਸ਼ਬਦ-ਦਰ-ਸ਼ਬਦ ਕੈਪਸ਼ਨ ਤਿਆਰ ਕਰ ਸਕੇ। +* **ਮੇਨੀ-ਟੂ-ਵਨ** ਉਹ RNN ਆਰਕੀਟੈਕਚਰਾਂ ਨਾਲ ਸਬੰਧਤ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਪਿਛਲੇ ਯੂਨਿਟ ਵਿੱਚ ਚਰਚਾ ਕੀਤੀ ਗਈ ਸੀ, ਜਿਵੇਂ ਕਿ ਪਾਠ ਵਰਗੀਕਰਨ। +* **ਮੇਨੀ-ਟੂ-ਮੇਨੀ**, ਜਾਂ **ਸਿਕਵੈਂਸ-ਟੂ-ਸਿਕਵੈਂਸ**, ਉਹ ਕੰਮਾਂ ਨਾਲ ਸਬੰਧਤ ਹੈ ਜਿਵੇਂ ਕਿ **ਮਸ਼ੀਨ ਅਨੁਵਾਦ**, ਜਿੱਥੇ ਪਹਿਲਾਂ RNN ਇਨਪੁਟ ਕ੍ਰਮ ਤੋਂ ਸਾਰੀ ਜਾਣਕਾਰੀ ਹਿਡਨ ਸਟੇਟ ਵਿੱਚ ਇਕੱਠੀ ਕਰਦਾ ਹੈ, ਅਤੇ ਦੂਜਾ RNN ਚੇਨ ਇਸ ਸਟੇਟ ਨੂੰ ਆਉਟਪੁੱਟ ਕ੍ਰਮ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। + +ਇਸ ਯੂਨਿਟ ਵਿੱਚ, ਅਸੀਂ ਸਧਾਰਣ ਜਨਰੇਟਿਵ ਮਾਡਲਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਾਂਗੇ ਜੋ ਸਾਨੂੰ ਪਾਠ ਤਿਆਰ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ। ਸਧਾਰਣਤਾ ਲਈ, ਅਸੀਂ ਕਿਰਦਾਰ-ਪੱਧਰ ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। + +ਅਸੀਂ ਇਸ RNN ਨੂੰ ਪਾਠ ਕਦਮ-ਦਰ-ਕਦਮ ਤਿਆਰ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕਰਾਂਗੇ। ਹਰ ਕਦਮ 'ਤੇ, ਅਸੀਂ `nchars` ਲੰਬਾਈ ਦੇ ਕਿਰਦਾਰਾਂ ਦੇ ਕ੍ਰਮ ਨੂੰ ਲਵਾਂਗੇ, ਅਤੇ ਨੈਟਵਰਕ ਨੂੰ ਹਰ ਇਨਪੁਟ ਕਿਰਦਾਰ ਲਈ ਅਗਲਾ ਆਉਟਪੁੱਟ ਕਿਰਦਾਰ ਤਿਆਰ ਕਰਨ ਲਈ ਕਹਾਂਗੇ: + +![ਚਿੱਤਰ 'HELLO' ਸ਼ਬਦ ਦੇ RNN ਜਨਰੇਸ਼ਨ ਦਾ ਉਦਾਹਰਣ ਦਿਖਾਉਂਦਾ ਹੈ।](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pa.png) + +ਜਦੋਂ ਪਾਠ ਤਿਆਰ ਕਰਦੇ ਹਾਂ (ਇਨਫਰੈਂਸ ਦੌਰਾਨ), ਅਸੀਂ ਕੁਝ **ਪ੍ਰਾਂਪਟ** ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਜਿਸਨੂੰ RNN ਸੈੱਲਾਂ ਰਾਹੀਂ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਇਸਦਾ ਇੰਟਰਮੀਡੀਏਟ ਸਟੇਟ ਤਿਆਰ ਹੋਵੇ, ਅਤੇ ਫਿਰ ਇਸ ਸਟੇਟ ਤੋਂ ਜਨਰੇਸ਼ਨ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਅਸੀਂ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਕਿਰਦਾਰ ਤਿਆਰ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਸਟੇਟ ਅਤੇ ਤਿਆਰ ਕੀਤਾ ਕਿਰਦਾਰ ਦੂਜੇ RNN ਸੈੱਲ ਨੂੰ ਪਾਸ ਕਰਦੇ ਹਾਂ ਤਾਂ ਜੋ ਅਗਲਾ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕੇ, ਜਦੋਂ ਤੱਕ ਅਸੀਂ ਕਾਫ਼ੀ ਕਿਰਦਾਰ ਤਿਆਰ ਨਾ ਕਰ ਲਵਾਂ। + + + +> ਚਿੱਤਰ ਲੇਖਕ ਦੁਆਰਾ + +## ✍️ ਅਭਿਆਸ: ਜਨਰੇਟਿਵ ਨੈਟਵਰਕਸ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +* [PyTorch ਨਾਲ ਜਨਰੇਟਿਵ ਨੈਟਵਰਕਸ](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow ਨਾਲ ਜਨਰੇਟਿਵ ਨੈਟਵਰਕਸ](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## ਨਰਮ ਪਾਠ ਜਨਰੇਸ਼ਨ ਅਤੇ ਟੈਂਪਰੇਚਰ + +ਹਰ RNN ਸੈੱਲ ਦਾ ਆਉਟਪੁੱਟ ਕਿਰਦਾਰਾਂ ਦਾ ਸੰਭਾਵਨਾ ਵੰਡ ਹੈ। ਜੇਕਰ ਅਸੀਂ ਹਮੇਸ਼ਾਂ ਜਨਰੇਟ ਕੀਤੇ ਗਏ ਪਾਠ ਵਿੱਚ ਅਗਲੇ ਕਿਰਦਾਰ ਵਜੋਂ ਸਭ ਤੋਂ ਉੱਚੀ ਸੰਭਾਵਨਾ ਵਾਲੇ ਕਿਰਦਾਰ ਨੂੰ ਲੈਂਦੇ ਹਾਂ, ਤਾਂ ਪਾਠ ਅਕਸਰ "ਚੱਕਰਵਾਦੀ" ਹੋ ਸਕਦਾ ਹੈ, ਜਿੱਥੇ ਉਹ ਵਾਰ-ਵਾਰ ਇੱਕੋ ਜਿਹੇ ਕਿਰਦਾਰ ਕ੍ਰਮਾਂ ਵਿੱਚ ਫਸ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ: + +``` +today of the second the company and a second the company ... +``` + +ਹਾਲਾਂਕਿ, ਜੇ ਅਸੀਂ ਅਗਲੇ ਕਿਰਦਾਰ ਲਈ ਸੰਭਾਵਨਾ ਵੰਡ ਨੂੰ ਵੇਖਦੇ ਹਾਂ, ਤਾਂ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਸਭ ਤੋਂ ਉੱਚੀਆਂ ਸੰਭਾਵਨਾਵਾਂ ਵਿੱਚ ਵੱਡਾ ਅੰਤਰ ਨਾ ਹੋਵੇ, ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਕਿਰਦਾਰ ਦੀ ਸੰਭਾਵਨਾ 0.2 ਹੋ ਸਕਦੀ ਹੈ, ਅਤੇ ਦੂਜੇ ਦੀ 0.19। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਕ੍ਰਮ '*play*' ਵਿੱਚ ਅਗਲੇ ਕਿਰਦਾਰ ਦੀ ਭਾਲ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਗਲਾ ਕਿਰਦਾਰ ਜਿਵੇਂ **ਖਾਲੀ ਜਗ੍ਹਾ** ਜਾਂ **e** (ਜਿਵੇਂ ਸ਼ਬਦ *player* ਵਿੱਚ) ਹੋ ਸਕਦਾ ਹੈ। + +ਇਸ ਨਾਲ ਸਾਨੂੰ ਇਹ ਨਤੀਜਾ ਨਿਕਲਦਾ ਹੈ ਕਿ ਹਮੇਸ਼ਾਂ ਸਭ ਤੋਂ ਉੱਚੀ ਸੰਭਾਵਨਾ ਵਾਲੇ ਕਿਰਦਾਰ ਨੂੰ ਚੁਣਨਾ "ਨਿਆਂਸੰਗਤ" ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਦੂਜੀ ਸਭ ਤੋਂ ਉੱਚੀ ਸੰਭਾਵਨਾ ਵਾਲੇ ਕਿਰਦਾਰ ਨੂੰ ਚੁਣਨਾ ਵੀ ਅਰਥਪੂਰਨ ਪਾਠ ਤਿਆਰ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਜ਼ਿਆਦਾ ਸਮਝਦਾਰੀ ਵਾਲੀ ਗੱਲ ਹੈ ਕਿ ਨੈਟਵਰਕ ਆਉਟਪੁੱਟ ਦੁਆਰਾ ਦਿੱਤੀ ਗਈ ਸੰਭਾਵਨਾ ਵੰਡ ਤੋਂ ਕਿਰਦਾਰਾਂ ਨੂੰ **ਨਮੂਨਾ** ਬਣਾਇਆ ਜਾਵੇ। ਅਸੀਂ ਇੱਕ ਪੈਰਾਮੀਟਰ, **ਟੈਂਪਰੇਚਰ**, ਦੀ ਵੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਸੰਭਾਵਨਾ ਵੰਡ ਨੂੰ ਚੌੜਾ ਕਰ ਸਕਦਾ ਹੈ, ਜੇ ਅਸੀਂ ਹੋਰ ਬੇਤਰਤੀਬੀ ਸ਼ਾਮਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਾਂ ਇਸਨੂੰ ਹੋਰ ਖੜਾ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੇ ਅਸੀਂ ਸਭ ਤੋਂ ਉੱਚੀ-ਸੰਭਾਵਨਾ ਵਾਲੇ ਕਿਰਦਾਰਾਂ ਨਾਲ ਜ਼ਿਆਦਾ ਚਿਪਕਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। + +ਉਪਰ ਦਿੱਤੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਵੇਖੋ ਕਿ ਇਹ ਨਰਮ ਪਾਠ ਜਨਰੇਸ਼ਨ ਕਿਵੇਂ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ। + +## ਨਤੀਜਾ + +ਜਦੋਂ ਕਿ ਪਾਠ ਜਨਰੇਸ਼ਨ ਆਪਣੇ ਆਪ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਮੁੱਖ ਲਾਭ ਇਹ ਹੈ ਕਿ RNNs ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੁਝ ਸ਼ੁਰੂਆਤੀ ਫੀਚਰ ਵੇਕਟਰ ਤੋਂ ਪਾਠ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਪਾਠ ਜਨਰੇਸ਼ਨ ਨੂੰ ਮਸ਼ੀਨ ਅਨੁਵਾਦ (ਸਿਕਵੈਂਸ-ਟੂ-ਸਿਕਵੈਂਸ, ਇਸ ਮਾਮਲੇ ਵਿੱਚ *ਐਨਕੋਡਰ* ਤੋਂ ਸਟੇਟ ਵੇਕਟਰ ਨੂੰ ਵਰਤ ਕੇ ਅਨੁਵਾਦਿਤ ਸੁਨੇਹਾ *ਡਿਕੋਡ* ਕੀਤਾ ਜਾਂਦਾ ਹੈ) ਜਾਂ ਤਸਵੀਰ ਦਾ ਪਾਠ ਰੂਪ ਵਿੱਚ ਵਰਣਨ ਤਿਆਰ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ (ਜਿਸ ਮਾਮਲੇ ਵਿੱਚ ਫੀਚਰ ਵੇਕਟਰ CNN ਐਕਸਟ੍ਰੈਕਟਰ ਤੋਂ ਆਉਂਦਾ ਹੈ)। + +## 🚀 ਚੁਣੌਤੀ + +ਮਾਈਕਰੋਸੌਫਟ ਲਰਨ 'ਤੇ ਇਸ ਵਿਸ਼ੇ 'ਤੇ ਕੁਝ ਪਾਠ ਲਵੋ + +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) ਨਾਲ ਪਾਠ ਜਨਰੇਸ਼ਨ + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਇਹ ਲੇਖ ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਨੂੰ ਵਧਾਉਣ ਲਈ ਹਨ: + +* ਮਾਰਕੋਵ ਚੇਨ, LSTM ਅਤੇ GPT-2 ਨਾਲ ਪਾਠ ਜਨਰੇਸ਼ਨ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ: [ਬਲੌਗ ਪੋਸਟ](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras ਡੌਕਯੂਮੈਂਟੇਸ਼ਨ](https://keras.io/examples/generative/lstm_character_level_text_generation/) ਵਿੱਚ ਪਾਠ ਜਨਰੇਸ਼ਨ ਦਾ ਉਦਾਹਰਣ + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਅਸੀਂ ਵੇਖਿਆ ਕਿ ਕਿਵੇਂ ਕਿਰਦਾਰ-ਦਰ-ਕਿਰਦਾਰ ਪਾਠ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਲੈਬ ਵਿੱਚ, ਤੁਸੀਂ ਸ਼ਬਦ-ਪੱਧਰ ਪਾਠ ਜਨਰੇਸ਼ਨ ਦੀ ਪੜਚੋਲ ਕਰੋਗੇ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/pa/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..be80d954 --- /dev/null +++ b/translations/pa/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# ਸ਼ਬਦ-ਪੱਧਰੀ ਪਾਠ ਉਤਪੱਤੀ RNNs ਦੀ ਵਰਤੋਂ ਕਰਕੇ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਕੰਮ + +ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਕਿਸੇ ਵੀ ਕਿਤਾਬ ਨੂੰ ਲੈਣਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਡਾਟਾਸੈਟ ਵਜੋਂ ਵਰਤ ਕੇ ਸ਼ਬਦ-ਪੱਧਰੀ ਪਾਠ ਉਤਪੱਤੀ ਲਈ ਮਸ਼ੀਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ। + +## ਡਾਟਾਸੈਟ + +ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਕਿਤਾਬ ਨੂੰ ਵਰਤ ਸਕਦੇ ਹੋ। ਤੁਹਾਨੂੰ ਬਹੁਤ ਸਾਰੀਆਂ ਮੁਫ਼ਤ ਕਿਤਾਬਾਂ [Project Gutenberg](https://www.gutenberg.org/) 'ਤੇ ਮਿਲ ਸਕਦੀਆਂ ਹਨ। ਉਦਾਹਰਣ ਵਜੋਂ, ਇੱਥੇ [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) ਲੇਖਕ ਲੂਇਸ ਕੈਰੋਲ ਦੀ ਸਿੱਧੀ ਲਿੰਕ ਹੈ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/18-Transformers/README.md b/translations/pa/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..f6e6decf --- /dev/null +++ b/translations/pa/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ ਅਤੇ ਟ੍ਰਾਂਸਫਾਰਮਰ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP ਖੇਤਰ ਵਿੱਚ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ **ਮਸ਼ੀਨ ਅਨੁਵਾਦ**, ਜੋ ਕਿ Google Translate ਵਰਗੇ ਟੂਲਾਂ ਦੇ ਆਧਾਰ ਤਹਿਤ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਕੰਮ ਹੈ। ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਮਸ਼ੀਨ ਅਨੁਵਾਦ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਾਂਗੇ, ਜਾਂ, ਵੱਧ ਜਨਰਲ ਤੌਰ 'ਤੇ, ਕਿਸੇ ਵੀ *ਸਿਕਵੈਂਸ-ਟੂ-ਸਿਕਵੈਂਸ* ਕੰਮ 'ਤੇ (ਜਿਸਨੂੰ **ਵਾਕ ਅਨੁਵਾਦ** ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ)। + +RNNs ਨਾਲ, ਸਿਕਵੈਂਸ-ਟੂ-ਸਿਕਵੈਂਸ ਦੋ ਰਿਕਰੰਟ ਨੈੱਟਵਰਕਾਂ ਦੁਆਰਾ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿੱਥੇ ਇੱਕ ਨੈੱਟਵਰਕ, **ਐਨਕੋਡਰ**, ਇੱਕ ਇਨਪੁਟ ਸਿਕਵੈਂਸ ਨੂੰ ਇੱਕ ਹਿਡਨ ਸਟੇਟ ਵਿੱਚ ਸੰਗ੍ਰਹਿ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਦੂਜਾ ਨੈੱਟਵਰਕ, **ਡੀਕੋਡਰ**, ਇਸ ਹਿਡਨ ਸਟੇਟ ਨੂੰ ਇੱਕ ਅਨੁਵਾਦਿਤ ਨਤੀਜੇ ਵਿੱਚ ਬਾਹਰ ਕੱਢਦਾ ਹੈ। ਇਸ ਪਹੁੰਚ ਨਾਲ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਹਨ: + +* ਐਨਕੋਡਰ ਨੈੱਟਵਰਕ ਦੀ ਆਖਰੀ ਸਟੇਟ ਨੂੰ ਵਾਕ ਦੇ ਸ਼ੁਰੂ ਨੂੰ ਯਾਦ ਰੱਖਣ ਵਿੱਚ ਮੁਸ਼ਕਲ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਕਾਰਨ ਲੰਬੇ ਵਾਕਾਂ ਲਈ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਘਟ ਜਾਂਦੀ ਹੈ। +* ਸਿਕਵੈਂਸ ਦੇ ਸਾਰੇ ਸ਼ਬਦਾਂ ਦਾ ਨਤੀਜੇ 'ਤੇ ਇੱਕੋ ਜਿਹਾ ਪ੍ਰਭਾਵ ਹੁੰਦਾ ਹੈ। ਹਕੀਕਤ ਵਿੱਚ, ਹਾਲਾਂਕਿ, ਇਨਪੁਟ ਸਿਕਵੈਂਸ ਵਿੱਚ ਕੁਝ ਖਾਸ ਸ਼ਬਦਾਂ ਦਾ ਅਗਲੇ ਨਤੀਜਿਆਂ 'ਤੇ ਵੱਧ ਪ੍ਰਭਾਵ ਹੁੰਦਾ ਹੈ। + +**ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ** RNN ਦੇ ਹਰ ਆਉਟਪੁੱਟ ਅਨੁਮਾਨ 'ਤੇ ਹਰ ਇਨਪੁਟ ਵੇਕਟਰ ਦੇ ਸੰਦਰਭਕ ਪ੍ਰਭਾਵ ਨੂੰ ਵਜਨ ਦੇਣ ਦਾ ਇੱਕ ਢੰਗ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। ਇਹ ਇਸ ਤਰੀਕੇ ਨਾਲ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਇਨਪੁਟ RNN ਅਤੇ ਆਉਟਪੁੱਟ RNN ਦੇ ਵਿਚਕਾਰ ਸ਼ਾਰਟਕੱਟ ਬਣਾਏ ਜਾਂਦੇ ਹਨ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਜਦੋਂ ਆਉਟਪੁੱਟ ਪ੍ਰਤੀਕ yt ਤਿਆਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਸੀਂ ਸਾਰੇ ਇਨਪੁਟ ਹਿਡਨ ਸਟੇਟ hi ਨੂੰ ਵੱਖ-ਵੱਖ ਵਜਨ ਗੁਣਾਂਕ αt,i ਦੇ ਨਾਲ ਧਿਆਨ ਵਿੱਚ ਰੱਖਾਂਗੇ। + +![ਇੱਕ ਐਨਕੋਡਰ/ਡੀਕੋਡਰ ਮਾਡਲ ਨੂੰ ਐਡਿਟਿਵ ਧਿਆਨ ਲੇਅਰ ਦੇ ਨਾਲ ਦਿਖਾਉਂਦੀ ਚਿੱਤਰ](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pa.png) + +> ਐਨਕੋਡਰ-ਡੀਕੋਡਰ ਮਾਡਲ ਐਡਿਟਿਵ ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ ਦੇ ਨਾਲ [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) ਵਿੱਚ, [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) ਤੋਂ ਲਿਆ ਗਿਆ। + +ਧਿਆਨ ਮੈਟ੍ਰਿਕਸ {αi,j} ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਸ ਹੱਦ ਤੱਕ ਕੁਝ ਇਨਪੁਟ ਸ਼ਬਦ ਇੱਕ ਦਿੱਤੇ ਗਏ ਆਉਟਪੁੱਟ ਸਿਕਵੈਂਸ ਵਿੱਚ ਸ਼ਬਦ ਦੀ ਪੈਦਾਵਾਰ ਵਿੱਚ ਭੂਮਿਕਾ ਨਿਭਾਉਂਦੇ ਹਨ। ਹੇਠਾਂ ਇੱਕ ਉਦਾਹਰਣ ਵਜੋਂ ਇਸ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਦਿਖਾਇਆ ਗਿਆ ਹੈ: + +![RNNsearch-50 ਦੁਆਰਾ ਲੱਭੀ ਇੱਕ ਨਮੂਨਾ ਅਲਾਈਨਮੈਂਟ ਦਿਖਾਉਂਦੀ ਚਿੱਤਰ, Bahdanau - arviz.org ਤੋਂ ਲਿਆ ਗਿਆ](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pa.png) + +> ਚਿੱਤਰ [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) ਤੋਂ (ਫਿਗ.3) + +ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ NLP ਵਿੱਚ ਮੌਜੂਦਾ ਜਾਂ ਲਗਭਗ ਮੌਜੂਦਾ ਸਥਿਤੀ ਦੇ ਕਲਾ ਦੇ ਜ਼ਿੰਮੇਵਾਰ ਹਨ। ਹਾਲਾਂਕਿ ਧਿਆਨ ਸ਼ਾਮਲ ਕਰਨ ਨਾਲ ਮਾਡਲ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਗਿਣਤੀ ਵਿੱਚ ਕਾਫ਼ੀ ਵਾਧਾ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਕਾਰਨ RNNs ਨਾਲ ਸਕੇਲਿੰਗ ਸਮੱਸਿਆਵਾਂ ਆਈਆਂ। RNNs ਨੂੰ ਸਕੇਲ ਕਰਨ ਦੀ ਇੱਕ ਮੁੱਖ ਰੋਕਾਵਟ ਇਹ ਹੈ ਕਿ ਮਾਡਲਾਂ ਦੀ ਰਿਕਰੰਟ ਪ੍ਰਕਿਰਤੀ ਟ੍ਰੇਨਿੰਗ ਨੂੰ ਬੈਚ ਅਤੇ ਪੈਰਲਲਾਈਜ਼ ਕਰਨਾ ਮੁਸ਼ਕਲ ਬਣਾ ਦਿੰਦੀ ਹੈ। RNN ਵਿੱਚ ਸਿਕਵੈਂਸ ਦੇ ਹਰ ਤੱਤ ਨੂੰ ਲਗਾਤਾਰ ਕ੍ਰਮ ਵਿੱਚ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਇਸਨੂੰ ਆਸਾਨੀ ਨਾਲ ਪੈਰਲਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। + +![ਧਿਆਨ ਦੇ ਨਾਲ ਐਨਕੋਡਰ ਡੀਕੋਡਰ](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> ਚਿੱਤਰ [ਗੂਗਲ ਦੇ ਬਲੌਗ](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) ਤੋਂ + +ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ ਦੀ ਗ੍ਰਹਿਣਸ਼ੀਲਤਾ ਅਤੇ ਇਸ ਰੋਕਾਵਟ ਦੇ ਮਿਲਾਪ ਨੇ ਅੱਜ ਦੇ ਸਥਿਤੀ ਦੇ ਕਲਾ ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲਾਂ ਦੀ ਰਚਨਾ ਲਈ ਰਾਹ ਪ੍ਰਦਾਨ ਕੀਤਾ, ਜਿਵੇਂ ਕਿ BERT ਤੋਂ Open-GPT3 ਤੱਕ। + +## ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲ + +ਟ੍ਰਾਂਸਫਾਰਮਰਾਂ ਦੇ ਪਿੱਛੇ ਇੱਕ ਮੁੱਖ ਵਿਚਾਰ RNNs ਦੀ ਲਗਾਤਾਰ ਪ੍ਰਕਿਰਤੀ ਤੋਂ ਬਚਣਾ ਅਤੇ ਇੱਕ ਮਾਡਲ ਬਣਾਉਣਾ ਹੈ ਜੋ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਪੈਰਲਲਾਈਜ਼ ਕੀਤਾ ਜਾ ਸਕੇ। ਇਹ ਦੋ ਵਿਚਾਰਾਂ ਨੂੰ ਲਾਗੂ ਕਰਕੇ ਹਾਸਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: + +* ਸਥਿਤੀ ਕੋਡਿੰਗ +* RNNs (ਜਾਂ CNNs) ਦੀ ਥਾਂ ਪੈਟਰਨ ਕੈਪਚਰ ਕਰਨ ਲਈ ਸਵੈ-ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ ਦੀ ਵਰਤੋਂ (ਇਸੇ ਕਰਕੇ ਟ੍ਰਾਂਸਫਾਰਮਰਾਂ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਵਾਲੇ ਪੇਪਰ ਦਾ ਨਾਮ ਹੈ *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### ਸਥਿਤੀ ਕੋਡਿੰਗ/ਐਮਬੈਡਿੰਗ + +ਸਥਿਤੀ ਕੋਡਿੰਗ ਦਾ ਵਿਚਾਰ ਇਹ ਹੈ: +1. RNNs ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਟੋਕਨ ਦੀ ਰਿਸ਼ਤੇਦਾਰ ਸਥਿਤੀ ਕਦਮਾਂ ਦੀ ਗਿਣਤੀ ਦੁਆਰਾ ਦਰਸਾਈ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਇਸ ਲਈ ਇਸਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਦਰਸਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ। +2. ਹਾਲਾਂਕਿ, ਜਦੋਂ ਅਸੀਂ ਧਿਆਨ 'ਤੇ ਸਵਿੱਚ ਕਰਦੇ ਹਾਂ, ਸਾਨੂੰ ਸਿਕਵੈਂਸ ਦੇ ਅੰਦਰ ਟੋਕਨ ਦੀਆਂ ਰਿਸ਼ਤੇਦਾਰ ਸਥਿਤੀਆਂ ਬਾਰੇ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। +3. ਸਥਿਤੀ ਕੋਡਿੰਗ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਅਸੀਂ ਆਪਣੇ ਟੋਕਨ ਸਿਕਵੈਂਸ ਨੂੰ ਸਿਕਵੈਂਸ ਵਿੱਚ ਟੋਕਨ ਸਥਿਤੀਆਂ ਦੇ ਸਿਕਵੈਂਸ ਨਾਲ ਵਧਾਉਂਦੇ ਹਾਂ (ਜਿਵੇਂ ਕਿ 0,1, ... ਦੀ ਗਿਣਤੀ ਦਾ ਸਿਕਵੈਂਸ)। +4. ਫਿਰ ਅਸੀਂ ਟੋਕਨ ਸਥਿਤੀ ਨੂੰ ਟੋਕਨ ਐਮਬੈਡਿੰਗ ਵੇਕਟਰ ਨਾਲ ਮਿਲਾਉਂਦੇ ਹਾਂ। ਸਥਿਤੀ (ਪੂਰਨ ਅੰਕ) ਨੂੰ ਇੱਕ ਵੇਕਟਰ ਵਿੱਚ ਬਦਲਣ ਲਈ, ਅਸੀਂ ਵੱਖ-ਵੱਖ ਪਹੁੰਚਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ: + +* ਟ੍ਰੇਨ ਕਰਨ ਯੋਗ ਐਮਬੈਡਿੰਗ, ਟੋਕਨ ਐਮਬੈਡਿੰਗ ਦੇ ਸਮਾਨ। ਇਹ ਪਹੁੰਚ ਅਸੀਂ ਇੱਥੇ ਵਿਚਾਰ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਟੋਕਨ ਅਤੇ ਉਨ੍ਹਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਦੋਵਾਂ 'ਤੇ ਐਮਬੈਡਿੰਗ ਲੇਅਰਾਂ ਲਾਗੂ ਕਰਦੇ ਹਾਂ, ਜਿਸ ਨਾਲ ਇੱਕੋ ਹੀ ਪਰਿਮਾਣ ਦੇ ਐਮਬੈਡਿੰਗ ਵੇਕਟਰ ਪ੍ਰਾਪਤ ਹੁੰਦੇ ਹਨ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਅਸੀਂ ਫਿਰ ਇਕੱਠੇ ਜੋੜ ਦਿੰਦੇ ਹਾਂ। +* ਮੂਲ ਪੇਪਰ ਵਿੱਚ ਪ੍ਰਸਤਾਵਿਤ ਸਥਿਰ ਸਥਿਤੀ ਕੋਡਿੰਗ ਫੰਕਸ਼ਨ। + + + +> ਲੇਖਕ ਦੁਆਰਾ ਚਿੱਤਰ + +ਸਥਿਤੀ ਐਮਬੈਡਿੰਗ ਦੇ ਨਾਲ ਪ੍ਰਾਪਤ ਨਤੀਜਾ ਮੂਲ ਟੋਕਨ ਅਤੇ ਇਸਦੀ ਸਿਕਵੈਂਸ ਦੇ ਅੰਦਰ ਸਥਿਤੀ ਦੋਵਾਂ ਨੂੰ ਐਮਬੈਡ ਕਰਦਾ ਹੈ। + +### ਮਲਟੀ-ਹੈੱਡ ਸਵੈ-ਧਿਆਨ + +ਅਗਲਾ, ਸਾਨੂੰ ਆਪਣੇ ਸਿਕਵੈਂਸ ਦੇ ਅੰਦਰ ਕੁਝ ਪੈਟਰਨ ਕੈਪਚਰ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਲਈ, ਟ੍ਰਾਂਸਫਾਰਮਰ **ਸਵੈ-ਧਿਆਨ** ਮਕੈਨਿਜ਼ਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ, ਜੋ ਕਿ ਮੂਲ ਤੌਰ 'ਤੇ ਧਿਆਨ ਹੈ ਜੋ ਇਨਪੁਟ ਅਤੇ ਆਉਟਪੁੱਟ ਦੇ ਤੌਰ 'ਤੇ ਇੱਕੋ ਸਿਕਵੈਂਸ 'ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ। ਸਵੈ-ਧਿਆਨ ਲਾਗੂ ਕਰਨ ਨਾਲ ਸਾਨੂੰ ਵਾਕ ਦੇ ਅੰਦਰ **ਸੰਦਰਭ** ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ, ਅਤੇ ਦੇਖਣ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ ਕਿ ਕਿਹੜੇ ਸ਼ਬਦ ਆਪਸ ਵਿੱਚ ਜੁੜੇ ਹੋਏ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਇਹ ਸਾਨੂੰ ਇਹ ਦੇਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਸ਼ਬਦਾਂ ਨੂੰ ਕੋਰਫਰੈਂਸ ਦੁਆਰਾ ਦਰਸਾਇਆ ਗਿਆ ਹੈ, ਜਿਵੇਂ ਕਿ *ਇਹ*, ਅਤੇ ਸੰਦਰਭ ਨੂੰ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦਾ ਹੈ: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pa.png) + +> ਚਿੱਤਰ [ਗੂਗਲ ਬਲੌਗ](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) ਤੋਂ + +ਟ੍ਰਾਂਸਫਾਰਮਰਾਂ ਵਿੱਚ, ਅਸੀਂ **ਮਲਟੀ-ਹੈੱਡ ਧਿਆਨ** ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਤਾਂ ਜੋ ਨੈੱਟਵਰਕ ਨੂੰ ਕਈ ਵੱਖ-ਵੱਖ ਕਿਸਮ ਦੇ ਨਾਤਿਆਂ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਦੀ ਤਾਕਤ ਮਿਲੇ, ਜਿਵੇਂ ਕਿ ਲੰਬੇ ਸਮੇਂ ਦੇ ਬਦਲਾਵਾਂ ਵਿਰੁੱਧ ਛੋਟੇ ਸਮੇਂ ਦੇ ਬਦਲਾਵਾਂ, ਕੋ-ਰੈਫਰੈਂਸ ਵਿਰੁੱਧ ਕੁਝ ਹੋਰ, ਆਦਿ। + +[ਟੈਂਸਰਫਲੋ ਨੋਟਬੁੱਕ](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) ਵਿੱਚ ਟ੍ਰਾਂਸਫਾਰਮਰ ਲੇਅਰਾਂ ਦੇ ਲਾਗੂ ਕਰਨ ਬਾਰੇ ਹੋਰ ਵੇਰਵੇ ਹਨ। + +### ਐਨਕੋਡਰ-ਡੀਕੋਡਰ ਧਿਆਨ + +ਟ੍ਰਾਂਸਫਾਰਮਰਾਂ ਵਿੱਚ, ਧਿਆਨ ਦੋ ਥਾਵਾਂ 'ਤੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ: + +* ਇਨਪੁਟ ਪਾਠ ਦੇ ਅੰਦਰ ਪੈਟਰਨ ਕੈਪਚਰ ਕਰਨ ਲਈ ਸਵੈ-ਧਿਆਨ ਦੀ ਵਰਤੋਂ +* ਸਿਕਵੈਂਸ ਅਨੁਵਾਦ ਕਰਨ ਲਈ - ਇਹ ਐਨਕੋਡਰ ਅਤੇ ਡੀਕੋਡਰ ਦੇ ਵਿਚਕਾਰ ਧਿਆਨ ਲੇਅਰ ਹੈ। + +ਐਨਕੋਡਰ-ਡੀਕੋਡਰ ਧਿਆਨ RNNs ਵਿੱਚ ਵਰਤੇ ਗਏ ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ ਦੇ ਬਹੁਤ ਹੀ ਸਮਾਨ ਹੈ, ਜਿਵੇਂ ਕਿ ਇਸ ਭਾਗ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਐਨੀਮੇਟਡ ਡਾਇਗ੍ਰਾਮ ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲਾਂ ਵਿੱਚ ਐਨਕੋਡਰ-ਡੀਕੋਡਰ ਧਿਆਨ ਦੀ ਭੂਮਿਕਾ ਨੂੰ ਸਮਝਾਉਂਦਾ ਹੈ। + +![ਐਨੀਮੇਟਡ GIF ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲਾਂ ਵਿੱਚ ਮੁਲਾਂਕਣ ਕਿਵੇਂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +ਕਿਉਂਕਿ ਹਰ ਇਨਪੁਟ ਸਥਿਤੀ ਨੂੰ ਹਰ ਆਉਟਪੁੱਟ ਸਥਿਤੀ ਨਾਲ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਨਕਸ਼ਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਟ੍ਰਾਂਸਫਾਰਮਰ RNNs ਨਾਲੋਂ ਵਧੀਆ ਪੈਰਲਲਾਈਜ਼ ਕਰ ਸਕਦੇ ਹਨ, ਜੋ ਕਿ ਕਾਫ਼ੀ ਵੱਡੇ ਅਤੇ ਵਧੇਰੇ ਪ੍ਰਗਟਵਾਦੀ ਭਾਸ਼ਾ ਮਾਡਲਾਂ ਨੂੰ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ। ਹਰ ਧਿਆਨ ਹੈੱਡ ਨੂੰ ਸ਼ਬਦਾਂ ਦੇ ਵਿਚਕਾਰ ਵੱਖ-ਵੱਖ ਰਿਸ਼ਤਿਆਂ ਨੂੰ ਸਿੱਖਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਡਾਊਨਸਟ੍ਰੀਮ ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ ਕੰਮਾਂ ਨੂੰ ਸੁਧਾਰਦਾ ਹੈ। + +## BERT + +**BERT** (ਬਿਡਾਇਰੈਕਸ਼ਨਲ ਐਨਕੋਡਰ ਰਿਪ੍ਰਜ਼ੈਂਟੇਸ਼ਨਜ਼ ਫ੍ਰੌਮ ਟ੍ਰਾਂਸਫਾਰਮਰਜ਼) ਇੱਕ ਬਹੁਤ ਵੱਡਾ ਮਲਟੀ ਲੇਅਰ ਟ੍ਰਾਂਸਫਾਰਮਰ ਨੈੱਟਵਰਕ ਹੈ ਜਿਸ ਵਿੱਚ *BERT-ਬੇਸ* ਲਈ 12 ਲੇਅਰ ਹਨ, ਅਤੇ *BERT-ਲਾਰਜ* ਲਈ 24। ਮਾਡਲ ਨੂੰ ਪਹਿਲਾਂ ਇੱਕ ਵੱਡੇ ਪਾਠ ਡਾਟਾ ਕਾਰਪਸ (ਵਿਕੀਪੀਡੀਆ + ਕਿਤਾਬਾਂ) 'ਤੇ ਅਨਸੁਪਰਵਾਈਜ਼ਡ ਟ੍ਰੇਨਿੰਗ (ਵਾਕ ਵਿੱਚ ਮਾਸਕ ਕੀਤੇ ਸ਼ਬਦਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦੇ ਹੋਏ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਪ੍ਰੀ-ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਮਾਡਲ ਭਾਸ਼ਾ ਦੀ ਸਮਝ ਦੇ ਮਹੱਤਵਪੂਰਨ ਪੱਧਰਾਂ ਨੂੰ ਅਧਿਗ੍ਰਹਣ ਕਰਦਾ ਹੈ, ਜਿਸਨੂੰ ਫਿਰ ਹੋਰ ਡਾਟਾਸੈਟਾਂ ਨਾਲ ਫਾਈਨ ਟਿਊਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਭਕਾਰੀ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ **ਟ੍ਰਾਂਸਫਰ ਲਰਨਿੰਗ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +![ਚਿੱਤਰ http://jalammar.github.io/illustrated-bert/ ਤੋਂ](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pa.png) + +> ਚਿੱਤਰ [ਸਰੋਤ](http://jalammar.github.io/illustrated-bert/) + +## ✍️ ਅਭਿਆਸ: ਟ੍ਰਾਂਸਫਾਰਮਰ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +* [ਪਾਈਟੌਰਚ ਵਿੱਚ ਟ੍ਰਾਂਸਫਾਰਮਰ](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [ਟੈਂਸਰਫਲੋ ਵਿੱਚ ਟ੍ਰਾਂਸਫਾਰਮਰ](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## ਨਿਸ਼ਕਰਸ਼ + +ਇਸ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਟ੍ਰਾਂਸਫਾਰਮਰ ਅਤੇ ਧਿਆਨ ਮਕੈਨਿਜ਼ਮ ਬਾਰੇ ਸਿੱਖਿਆ, ਜੋ ਕਿ NLP ਟੂਲਬਾਕਸ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਸੰਦ ਹਨ। ਟ੍ਰਾਂਸਫਾਰਮਰ ਆਰਕੀਟੈਕਚਰਾਂ ਦੇ ਕਈ ਰੂਪ ਹਨ ਜਿਵੇਂ ਕਿ BERT, DistilBERT, BigBird, OpenGPT3 ਅਤੇ ਹੋਰ ਜੋ ਕਿ ਫਾਈਨ ਟਿਊਨ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। [HuggingFace ਪੈਕੇਜ](https://github.com/huggingface/) ਪਾਈਟੌਰਚ ਅਤੇ ਟੈਂਸਰਫਲੋ ਦੋਵਾਂ ਨਾਲ ਕਈ ਆਰਕੀਟੈਕਚਰਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਰਿਪੋਜ਼ਟਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +* [ਬਲੌਗ ਪੋਸਟ](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), ਜੋ ਕਿ ਟ੍ਰਾਂਸਫਾਰਮਰਾਂ 'ਤੇ ਕਲਾਸਿਕ [Attention is all you need](https://arxiv.org/abs/1706.03762) ਪੇਪਰ ਨੂੰ ਸਮਝਾਉਂਦੀ ਹੈ। +* [ਬਲੌਗ ਪੋਸਟਾਂ ਦੀ ਲੜੀ](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) ਟ੍ਰਾਂਸਫਾਰਮਰਾਂ 'ਤੇ, ਜੋ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਵਿਸਥਾਰ ਵਿੱਚ ਸਮਝਾਉਂਦੀ ਹੈ। + +## [ਅਸਾਈਨਮੈਂਟ](assignment.md) + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/18-Transformers/assignment.md b/translations/pa/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..0d2c75c8 --- /dev/null +++ b/translations/pa/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# ਅਸਾਈਨਮੈਂਟ: ਟ੍ਰਾਂਸਫਾਰਮਰਜ਼ + +HuggingFace 'ਤੇ ਟ੍ਰਾਂਸਫਾਰਮਰਜ਼ ਨਾਲ ਅਨੁਭਵ ਕਰੋ! ਉਹਨਾਂ ਦੇ ਵੱਖ-ਵੱਖ ਮਾਡਲਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਉਪਲਬਧ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ: https://huggingface.co/docs/transformers/run_scripts। ਉਹਨਾਂ ਦੇ ਡੇਟਾਸੈਟਾਂ ਵਿੱਚੋਂ ਇੱਕ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ, ਫਿਰ ਇਸ ਕੋਰਸ ਜਾਂ Kaggle ਤੋਂ ਆਪਣਾ ਡੇਟਾ ਆਯਾਤ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਤੁਸੀਂ ਦਿਲਚਸਪ ਟੈਕਸਟ ਜਨਰੇਟ ਕਰ ਸਕਦੇ ਹੋ। ਆਪਣੇ ਨਤੀਜਿਆਂ ਨਾਲ ਇੱਕ ਨੋਟਬੁੱਕ ਤਿਆਰ ਕਰੋ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/19-NER/README.md b/translations/pa/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..599f8f1d --- /dev/null +++ b/translations/pa/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# ਨਾਂਦਤ ਇਕਾਈ ਪਛਾਣ + +ਅਜੇ ਤੱਕ, ਅਸੀਂ ਜ਼ਿਆਦਾਤਰ ਇੱਕ NLP ਕੰਮ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕੀਤਾ ਹੈ - ਵਰਗੀਕਰਨ। ਹਾਲਾਂਕਿ, ਨਰਲ ਨੈੱਟਵਰਕ ਦੀ ਮਦਦ ਨਾਲ ਹੋਰ NLP ਕੰਮ ਵੀ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਉਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਕੰਮ ਹੈ **[ਨਾਂਦਤ ਇਕਾਈ ਪਛਾਣ](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ਜੋ ਪਾਠ ਵਿੱਚ ਖਾਸ ਇਕਾਈਆਂ ਨੂੰ ਪਛਾਣਨ ਨਾਲ ਸਬੰਧਿਤ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਥਾਨ, ਵਿਅਕਤੀ ਦੇ ਨਾਮ, ਮਿਤੀ-ਸਮਾਂ ਅੰਤਰਾਲ, ਰਸਾਇਣਕ ਫਾਰਮੂਲੇ ਆਦਿ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER ਦੀ ਵਰਤੋਂ ਦਾ ਉਦਾਹਰਨ + +ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਇੱਕ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਚੈਟ ਬੌਟ ਵਿਕਸਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ ਐਮਾਜ਼ਾਨ ਐਲੇਕਸਾ ਜਾਂ ਗੂਗਲ ਅਸਿਸਟੈਂਟ। ਸਮਾਰਟ ਚੈਟ ਬੌਟ ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦੇ ਹਨ ਕਿ ਉਹ ਵਰਤੋਂਕਾਰ ਦੀ ਇੱਛਾ ਨੂੰ ਸਮਝਣ ਲਈ ਇਨਪੁਟ ਵਾਕ 'ਤੇ ਪਾਠ ਵਰਗੀਕਰਨ ਕਰਦੇ ਹਨ। ਇਸ ਵਰਗੀਕਰਨ ਦਾ ਨਤੀਜਾ **ਇਰਾਦਾ** ਹੁੰਦਾ ਹੈ, ਜੋ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ ਚੈਟ ਬੌਟ ਨੂੰ ਕੀ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। + +Bot NER + +> ਚਿੱਤਰ ਲੇਖਕ ਦੁਆਰਾ + +ਹਾਲਾਂਕਿ, ਵਰਤੋਂਕਾਰ ਵਾਕ ਦਾ ਹਿੱਸਾ ਬਣਾਉਂਦੇ ਹੋਏ ਕੁਝ ਪੈਰਾਮੀਟਰ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜਦੋਂ ਮੌਸਮ ਬਾਰੇ ਪੁੱਛਿਆ ਜਾਂਦਾ ਹੈ, ਉਹ ਸਥਾਨ ਜਾਂ ਮਿਤੀ ਦੱਸ ਸਕਦੀ ਹੈ। ਬੌਟ ਨੂੰ ਉਹਨਾਂ ਇਕਾਈਆਂ ਨੂੰ ਸਮਝਣ ਅਤੇ ਕਾਰਵਾਈ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪੈਰਾਮੀਟਰ ਸਲਾਟ ਭਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹੀ ਜਗ੍ਹਾ ਹੈ ਜਿੱਥੇ NER ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ। + +> ✅ ਇੱਕ ਹੋਰ ਉਦਾਹਰਨ ਹੋ ਸਕਦੀ ਹੈ [ਵਿਗਿਆਨਕ ਚਿਕਿਤਸਾ ਪੇਪਰਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)। ਸਾਡੇ ਲਈ ਮੁੱਖ ਗੱਲ ਇਹ ਹੈ ਕਿ ਖਾਸ ਚਿਕਿਤਸਾ ਸ਼ਬਦਾਵਲੀ, ਜਿਵੇਂ ਬਿਮਾਰੀਆਂ ਅਤੇ ਦਵਾਈਆਂ ਦੇ ਨਾਮ, ਨੂੰ ਲੱਭਣਾ। ਜਦੋਂ ਕਿ ਕੁਝ ਬਿਮਾਰੀਆਂ ਨੂੰ ਸ਼ਾਇਦ ਸਬਸਟਰਿੰਗ ਖੋਜ ਨਾਲ ਲੱਭਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਟਿਲ ਇਕਾਈਆਂ, ਜਿਵੇਂ ਰਸਾਇਣਕ ਯੋਗਿਕ ਅਤੇ ਦਵਾਈਆਂ ਦੇ ਨਾਮ, ਲਈ ਇੱਕ ਹੋਰ ਜਟਿਲ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। + +## NER ਨੂੰ ਟੋਕਨ ਵਰਗੀਕਰਨ ਵਜੋਂ ਦੇਖਣਾ + +NER ਮਾਡਲ ਅਸਲ ਵਿੱਚ **ਟੋਕਨ ਵਰਗੀਕਰਨ ਮਾਡਲ** ਹੁੰਦੇ ਹਨ, ਕਿਉਂਕਿ ਸਾਨੂੰ ਹਰ ਇਨਪੁਟ ਟੋਕਨ ਲਈ ਇਹ ਫੈਸਲਾ ਕਰਨਾ ਹੁੰਦਾ ਹੈ ਕਿ ਕੀ ਇਹ ਕਿਸੇ ਇਕਾਈ ਨਾਲ ਸਬੰਧਿਤ ਹੈ ਜਾਂ ਨਹੀਂ, ਅਤੇ ਜੇ ਹੈ - ਤਾਂ ਕਿਹੜੀ ਇਕਾਈ ਵਰਗ ਨਾਲ। + +ਇਹ ਪੇਪਰ ਸਿਰਲੇਖ ਨੂੰ ਦੇਖੋ: + +**Tricuspid valve regurgitation** ਅਤੇ **lithium carbonate** **toxicity** ਇੱਕ ਨਵਜਾਤ ਸ਼ਿਸ਼ੂ ਵਿੱਚ। + +ਇਥੇ ਇਕਾਈਆਂ ਹਨ: + +* Tricuspid valve regurgitation ਇੱਕ ਬਿਮਾਰੀ ਹੈ (`DIS`) +* Lithium carbonate ਇੱਕ ਰਸਾਇਣਕ ਪਦਾਰਥ ਹੈ (`CHEM`) +* Toxicity ਵੀ ਇੱਕ ਬਿਮਾਰੀ ਹੈ (`DIS`) + +ਧਿਆਨ ਦਿਓ ਕਿ ਇੱਕ ਇਕਾਈ ਕਈ ਟੋਕਨਾਂ 'ਤੇ ਫੈਲ ਸਕਦੀ ਹੈ। ਅਤੇ, ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਸਾਨੂੰ ਦੋ ਲਗਾਤਾਰ ਇਕਾਈਆਂ ਵਿੱਚ ਫਰਕ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਇਸ ਲਈ, ਹਰ ਇਕਾਈ ਲਈ ਦੋ ਵਰਗਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਆਮ ਹੈ - ਇੱਕ ਜੋ ਇਕਾਈ ਦੇ ਪਹਿਲੇ ਟੋਕਨ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ (ਅਕਸਰ `B-` ਪ੍ਰੀਫਿਕਸ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, **ਸ਼ੁਰੂਆਤ** ਲਈ), ਅਤੇ ਦੂਜਾ - ਇਕਾਈ ਦੇ ਅੰਦਰਲੇ ਟੋਕਨ ਲਈ (`I-`, **ਅੰਦਰਲਾ ਟੋਕਨ** ਲਈ)। ਅਸੀਂ `O` ਨੂੰ ਵਰਗ ਵਜੋਂ ਵਰਤਦੇ ਹਾਂ ਸਾਰੇ **ਹੋਰ** ਟੋਕਨਾਂ ਨੂੰ ਦਰਸਾਉਣ ਲਈ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਟੋਕਨ ਟੈਗਿੰਗ ਨੂੰ [BIO ਟੈਗਿੰਗ](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ਜਾਂ IOB) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਟੈਗ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਸਾਡਾ ਸਿਰਲੇਖ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗੇਗਾ: + +ਟੋਕਨ | ਟੈਗ +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O + +ਕਿਉਂਕਿ ਸਾਨੂੰ ਟੋਕਨਾਂ ਅਤੇ ਵਰਗਾਂ ਦੇ ਵਿਚਕਾਰ ਇੱਕ-ਤੋਂ-ਇੱਕ ਸੰਬੰਧ ਬਣਾਉਣਾ ਪੈਂਦਾ ਹੈ, ਅਸੀਂ ਇਸ ਤਸਵੀਰ ਤੋਂ ਇੱਕ ਸਹੀ **ਬਹੁਤ-ਤੋਂ-ਬਹੁਤ** ਨਰਲ ਨੈੱਟਵਰਕ ਮਾਡਲ ਨੂੰ ਪ੍ਰਸ਼ਿਕਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਾਂ: + +![ਸਧਾਰਨ ਰਿਕਰੰਟ ਨਰਲ ਨੈੱਟਵਰਕ ਪੈਟਰਨ ਦਿਖਾਉਂਦੀ ਚਿੱਤਰ।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pa.jpg) + +> *ਚਿੱਤਰ [ਇਸ ਬਲੌਗ ਪੋਸਟ](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) ਤੋਂ [Andrej Karpathy](http://karpathy.github.io/) ਦੁਆਰਾ। NER ਟੋਕਨ ਵਰਗੀਕਰਨ ਮਾਡਲ ਇਸ ਚਿੱਤਰ ਦੇ ਸਭ ਤੋਂ ਸੱਜੇ ਪਾਸੇ ਦੇ ਨੈੱਟਵਰਕ ਆਰਕੀਟੈਕਚਰ ਨਾਲ ਮਿਲਦੇ ਹਨ।* + +## NER ਮਾਡਲਾਂ ਦੀ ਪ੍ਰਸ਼ਿਕਸ਼ਣ + +ਕਿਉਂਕਿ ਇੱਕ NER ਮਾਡਲ ਅਸਲ ਵਿੱਚ ਇੱਕ ਟੋਕਨ ਵਰਗੀਕਰਨ ਮਾਡਲ ਹੈ, ਅਸੀਂ ਇਸ ਕੰਮ ਲਈ ਉਹ RNN ਵਰਤ ਸਕਦੇ ਹਾਂ ਜਿਨ੍ਹਾਂ ਨਾਲ ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਜਾਣੂ ਹਾਂ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਰਿਕਰੰਟ ਨੈੱਟਵਰਕ ਦਾ ਹਰ ਬਲੌਕ ਟੋਕਨ ID ਵਾਪਸ ਕਰੇਗਾ। ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਕਿ ਟੋਕਨ ਵਰਗੀਕਰਨ ਲਈ LSTM ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਸ਼ਿਕਸ਼ਿਤ ਕਰਨਾ ਹੈ। + +## ✍️ ਉਦਾਹਰਨ ਨੋਟਬੁੱਕ: NER + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਸਿੱਖਣਾ ਜਾਰੀ ਰੱਖੋ: + +* [TensorFlow ਨਾਲ NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## ਨਿਸ਼ਕਰਸ਼ + +ਇੱਕ NER ਮਾਡਲ ਇੱਕ **ਟੋਕਨ ਵਰਗੀਕਰਨ ਮਾਡਲ** ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਇਸਨੂੰ ਟੋਕਨ ਵਰਗੀਕਰਨ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ NLP ਵਿੱਚ ਇੱਕ ਬਹੁਤ ਆਮ ਕੰਮ ਹੈ, ਜੋ ਪਾਠ ਵਿੱਚ ਖਾਸ ਇਕਾਈਆਂ ਨੂੰ ਪਛਾਣਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਸਥਾਨ, ਨਾਮ, ਮਿਤੀਆਂ ਆਦਿ। + +## 🚀 ਚੁਣੌਤੀ + +ਹੇਠਾਂ ਦਿੱਤੇ ਅਸਾਈਨਮੈਂਟ ਨੂੰ ਪੂਰਾ ਕਰੋ ਜਿਸ ਵਿੱਚ ਚਿਕਿਤਸਾ ਸ਼ਬਦਾਵਲੀ ਲਈ ਇੱਕ ਨਾਂਦਤ ਇਕਾਈ ਪਛਾਣ ਮਾਡਲ ਪ੍ਰਸ਼ਿਕਸ਼ਿਤ ਕਰਨਾ ਹੈ, ਅਤੇ ਫਿਰ ਇਸਨੂੰ ਇੱਕ ਵੱਖਰੇ ਡਾਟਾਸੈਟ 'ਤੇ ਅਜ਼ਮਾਓ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## ਸਮੀਖਿਆ ਅਤੇ ਖੁਦ ਅਧਿਐਨ + +ਬਲੌਗ [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) ਨੂੰ ਪੜ੍ਹੋ ਅਤੇ ਉਸ ਲੇਖ ਵਿੱਚ ਦਿੱਤੇ Further Reading ਸੈਕਸ਼ਨ ਦੇ ਨਾਲ ਅੱਗੇ ਵਧੋ ਤਾਂ ਜੋ ਆਪਣਾ ਗਿਆਨ ਗਹਿਰਾ ਕਰ ਸਕੋ। + +## [ਅਸਾਈਨਮੈਂਟ](lab/README.md) + +ਇਸ ਪਾਠ ਦੇ ਅਸਾਈਨਮੈਂਟ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਇੱਕ ਚਿਕਿਤਸਾ ਇਕਾਈ ਪਛਾਣ ਮਾਡਲ ਪ੍ਰਸ਼ਿਕਸ਼ਿਤ ਕਰਨਾ ਹੋਵੇਗਾ। ਤੁਸੀਂ ਇਸ ਪਾਠ ਵਿੱਚ ਵਰਣਨ ਕੀਤੇ ਗਏ LSTM ਮਾਡਲ ਨਾਲ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਫਿਰ BERT ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਸਾਰੇ ਵੇਰਵੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ [ਹਦਾਇਤਾਂ](lab/README.md) ਪੜ੍ਹੋ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/19-NER/lab/README.md b/translations/pa/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..34d0e806 --- /dev/null +++ b/translations/pa/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) ਤੋਂ ਲੈਬ ਅਸਾਈਨਮੈਂਟ। + +## ਟਾਸਕ + +ਇਸ ਲੈਬ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਮੈਡੀਕਲ ਸ਼ਬਦਾਵਲੀ ਲਈ named entity recognition ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ। + +## ਡੇਟਾਸੈਟ + +NER ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਮੈਡੀਕਲ ਐਂਟਿਟੀਜ਼ ਨਾਲ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਲੇਬਲ ਕੀਤਾ ਹੋਇਆ ਡੇਟਾਸੈਟ ਚਾਹੀਦਾ ਹੈ। [BC5CDR ਡੇਟਾਸੈਟ](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) ਵਿੱਚ 1500 ਤੋਂ ਵੱਧ ਪੇਪਰਾਂ ਵਿੱਚੋਂ ਲੇਬਲ ਕੀਤੀਆਂ ਬਿਮਾਰੀਆਂ ਅਤੇ ਰਸਾਇਣਕ ਐਂਟਿਟੀਜ਼ ਸ਼ਾਮਲ ਹਨ। ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਦੀ ਵੈਬਸਾਈਟ 'ਤੇ ਰਜਿਸਟਰ ਕਰਨ ਤੋਂ ਬਾਅਦ ਡੇਟਾਸੈਟ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ। + +BC5CDR ਡੇਟਾਸੈਟ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਦਾ ਹੈ: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +ਇਸ ਡੇਟਾਸੈਟ ਵਿੱਚ, ਪਹਿਲੀਆਂ ਦੋ ਲਾਈਨਾਂ ਵਿੱਚ ਪੇਪਰ ਦਾ ਸਿਰਲੇਖ ਅਤੇ ਸਾਰ ਹੈ, ਅਤੇ ਫਿਰ ਵਿਅਕਤੀਗਤ ਐਂਟਿਟੀਜ਼ ਹਨ, ਜਿਨ੍ਹਾਂ ਦੇ ਸਿਰਲੇਖ+ਸਾਰ ਬਲਾਕ ਵਿੱਚ ਸ਼ੁਰੂ ਅਤੇ ਅੰਤ ਦੇ ਸਥਾਨ ਦਿੱਤੇ ਗਏ ਹਨ। ਐਂਟਿਟੀ ਦੀ ਕਿਸਮ ਦੇ ਇਲਾਵਾ, ਤੁਹਾਨੂੰ ਇਸ ਐਂਟਿਟੀ ਦਾ ਓਂਟੋਲੋਜੀ ID ਵੀ ਮਿਲਦਾ ਹੈ ਜੋ ਕਿਸੇ ਮੈਡੀਕਲ ਓਂਟੋਲੋਜੀ ਵਿੱਚ ਹੈ। + +ਤੁਹਾਨੂੰ ਇਸਨੂੰ BIO ਐਨਕੋਡਿੰਗ ਵਿੱਚ ਕਨਵਰਟ ਕਰਨ ਲਈ ਕੁਝ Python ਕੋਡ ਲਿਖਣ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। + +## ਨੈਟਵਰਕ + +NER ਲਈ ਪਹਿਲੀ ਕੋਸ਼ਿਸ਼ LSTM ਨੈਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਪਾਠ ਦੌਰਾਨ ਉਦਾਹਰਣ ਵਿੱਚ ਵੇਖਿਆ। ਹਾਲਾਂਕਿ, NLP ਟਾਸਕਾਂ ਵਿੱਚ, [ਟ੍ਰਾਂਸਫਾਰਮਰ ਆਰਕੀਟੈਕਚਰ](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) ਅਤੇ ਖਾਸ ਕਰਕੇ [BERT ਭਾਸ਼ਾ ਮਾਡਲ](https://en.wikipedia.org/wiki/BERT_(language_model)) ਬਹੁਤ ਹੀ ਵਧੀਆ ਨਤੀਜੇ ਦਿਖਾਉਂਦੇ ਹਨ। ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕੀਤੇ BERT ਮਾਡਲ ਭਾਸ਼ਾ ਦੀ ਆਮ ਰਚਨਾ ਨੂੰ ਸਮਝਦੇ ਹਨ ਅਤੇ ਛੋਟੇ ਡੇਟਾਸੈਟ ਅਤੇ ਘੱਟ ਗਣਨਾਤਮਕ ਖਰਚਿਆਂ ਨਾਲ ਖਾਸ ਟਾਸਕਾਂ ਲਈ ਫਾਈਨ-ਟਿਊਨ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +ਕਿਉਂਕਿ ਅਸੀਂ ਮੈਡੀਕਲ ਸਥਿਤੀ ਵਿੱਚ NER ਲਾਗੂ ਕਰਨ ਦੀ ਯੋਜਨਾ ਬਣਾ ਰਹੇ ਹਾਂ, ਇਸ ਲਈ ਮੈਡੀਕਲ ਟੈਕਸਟਾਂ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ BERT ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸਹੀ ਹੈ। Microsoft Research ਨੇ ਇੱਕ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਮਾਡਲ ਜਾਰੀ ਕੀਤਾ ਹੈ ਜਿਸਨੂੰ [PubMedBERT][PubMedBERT] ([ਪ੍ਰਕਾਸ਼ਨ][PubMedBERT-Pub]) ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਿ [PubMed](https://pubmed.ncbi.nlm.nih.gov/) ਰਿਪੋਜ਼ਟਰੀ ਦੇ ਟੈਕਸਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫਾਈਨ-ਟਿਊਨ ਕੀਤਾ ਗਿਆ ਹੈ। + +ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਮਿਆਰੀ ਲਾਇਬ੍ਰੇਰੀ [Hugging Face Transformers](https://huggingface.co/) ਹੈ। ਇਸ ਵਿੱਚ ਕਈ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਮਾਡਲਾਂ ਦਾ ਰਿਪੋਜ਼ਟਰੀ ਸ਼ਾਮਲ ਹੈ, ਜਿਸ ਵਿੱਚ PubMedBERT ਵੀ ਹੈ। ਇਸ ਮਾਡਲ ਨੂੰ ਲੋਡ ਅਤੇ ਵਰਤਣ ਲਈ ਸਾਨੂੰ ਸਿਰਫ ਕੁਝ ਲਾਈਨਾਂ ਦੇ ਕੋਡ ਦੀ ਲੋੜ ਹੈ: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +ਇਹ ਸਾਨੂੰ `model` ਦਿੰਦਾ ਹੈ, ਜੋ ਕਿ ਟੋਕਨ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਟਾਸਕ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਜਿਸ ਵਿੱਚ `classes` ਦੀ ਗਿਣਤੀ ਹੈ, ਅਤੇ `tokenizer` ਆਬਜੈਕਟ ਜੋ ਇਨਪੁਟ ਟੈਕਸਟ ਨੂੰ ਟੋਕਨ ਵਿੱਚ ਵੰਡ ਸਕਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਡੇਟਾਸੈਟ ਨੂੰ BIO ਫਾਰਮੈਟ ਵਿੱਚ ਕਨਵਰਟ ਕਰਨਾ ਹੋਵੇਗਾ, ਜਿਸ ਵਿੱਚ PubMedBERT ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਹੋਵੇਗਾ। ਤੁਸੀਂ [ਇਸ Python ਕੋਡ](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) ਤੋਂ ਪ੍ਰੇਰਣਾ ਲੈ ਸਕਦੇ ਹੋ। + +## ਸਿੱਖਿਆ + +ਇਹ ਟਾਸਕ ਹਕੀਕਤ ਵਿੱਚ ਉਸ ਟਾਸਕ ਦੇ ਬਹੁਤ ਨੇੜੇ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਵੱਡੇ ਪੱਧਰ 'ਤੇ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਦੇ ਟੈਕਸਟਾਂ ਵਿੱਚ ਅਧਿਕ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕਰਨਾ ਪਵੇਗਾ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਅਸੀਂ ਆਪਣੇ ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲ ਨੂੰ [COVID-ਸੰਬੰਧੀ ਪੇਪਰਾਂ ਦੇ ਡੇਟਾਸੈਟ](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) 'ਤੇ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਅਸੀਂ ਕਿਹੜੀਆਂ ਜਾਣਕਾਰੀਆਂ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ। [ਇਹ ਬਲੌਗ ਪੋਸਟ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) ਅਤੇ [ਇਹ ਪੇਪਰ](https://www.mdpi.com/2504-2289/6/1/4) ਇਸ ਪੇਪਰਾਂ ਦੇ ਸੰਗ੍ਰਹਿ 'ਤੇ NER ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤੀ ਗਈ ਖੋਜ ਦਾ ਵੇਰਵਾ ਦਿੰਦੇ ਹਨ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/20-LangModels/README.md b/translations/pa/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..01f15bb3 --- /dev/null +++ b/translations/pa/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਵੱਡੇ ਭਾਸ਼ਾ ਮਾਡਲ + +ਸਾਡੇ ਪਿਛਲੇ ਸਾਰੇ ਕੰਮਾਂ ਵਿੱਚ, ਅਸੀਂ ਲੇਬਲ ਕੀਤੇ ਡਾਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੂੰ ਇੱਕ ਨਿਰਧਾਰਤ ਕੰਮ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕਰ ਰਹੇ ਸੀ। ਵੱਡੇ ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲਾਂ, ਜਿਵੇਂ ਕਿ BERT, ਨਾਲ ਅਸੀਂ ਸਵੈ-ਸੁਪਰਵਾਈਜ਼ਡ ਢੰਗ ਵਿੱਚ ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਤਾਂ ਜੋ ਇੱਕ ਭਾਸ਼ਾ ਮਾਡਲ ਬਣਾਇਆ ਜਾ ਸਕੇ, ਜਿਸਨੂੰ ਫਿਰ ਖਾਸ ਡਾਊਨਸਟ੍ਰੀਮ ਕੰਮ ਲਈ ਅਗਲੇ ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਟ੍ਰੇਨਿੰਗ ਨਾਲ ਵਿਸ਼ੇਸ਼ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਸਾਬਤ ਹੋਇਆ ਹੈ ਕਿ ਵੱਡੇ ਭਾਸ਼ਾ ਮਾਡਲ ਬਿਨਾਂ ਕਿਸੇ ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਟ੍ਰੇਨਿੰਗ ਦੇ ਕਈ ਕੰਮਾਂ ਨੂੰ ਹੱਲ ਕਰ ਸਕਦੇ ਹਨ। ਮਾਡਲਾਂ ਦਾ ਇੱਕ ਪਰਿਵਾਰ ਜੋ ਇਹ ਕਰਨ ਦੇ ਯੋਗ ਹੈ, **GPT**: ਜਨਰੇਟਿਵ ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਟ੍ਰਾਂਸਫਾਰਮਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਅਤੇ ਪਰਪਲੈਕਸਿਟੀ + +ਇੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੇ ਸਮਰੱਥ ਹੋਣ ਦਾ ਵਿਚਾਰ ਕਿ ਉਹ ਡਾਊਨਸਟ੍ਰੀਮ ਟ੍ਰੇਨਿੰਗ ਤੋਂ ਬਿਨਾਂ ਜਨਰਲ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ, [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) ਪੇਪਰ ਵਿੱਚ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਕਈ ਹੋਰ ਕੰਮਾਂ ਨੂੰ **ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ** ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਟੈਕਸਟ ਨੂੰ ਸਮਝਣਾ ਅਸਲ ਵਿੱਚ ਇਸਨੂੰ ਪੈਦਾ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਹੈ। ਕਿਉਂਕਿ ਮਾਡਲ ਨੂੰ ਬਹੁਤ ਵੱਡੀ ਮਾਤਰਾ ਦੇ ਟੈਕਸਟ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਮਨੁੱਖੀ ਗਿਆਨ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ, ਇਹ ਵੱਖ-ਵੱਖ ਵਿਸ਼ਿਆਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵਾਲਾ ਵੀ ਬਣ ਜਾਂਦਾ ਹੈ। + +> ਟੈਕਸਟ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਪੈਦਾ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਦੁਨੀਆ ਦੇ ਆਸ-ਪਾਸ ਕੁਝ ਜਾਣਨਾ। ਲੋਕ ਵੀ ਵੱਡੇ ਪੱਧਰ 'ਤੇ ਪੜ੍ਹ ਕੇ ਸਿੱਖਦੇ ਹਨ, ਅਤੇ GPT ਨੈਟਵਰਕ ਇਸ ਮਾਮਲੇ ਵਿੱਚ ਇਸਦੇ ਸਮਾਨ ਹੈ। + +ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਨੈਟਵਰਕ ਅਗਲੇ ਸ਼ਬਦ $$P(w_N)$$ ਦੀ ਸੰਭਾਵਨਾ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਕੇ ਕੰਮ ਕਰਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਅਗਲੇ ਸ਼ਬਦ ਦੀ ਬਿਨਾਂ ਸ਼ਰਤਾਂ ਵਾਲੀ ਸੰਭਾਵਨਾ ਟੈਕਸਟ ਕੋਰਪਸ ਵਿੱਚ ਇਸ ਸ਼ਬਦ ਦੀ ਆਵ੍ਰਿਤੀ ਦੇ ਬਰਾਬਰ ਹੁੰਦੀ ਹੈ। GPT ਸਾਨੂੰ ਪਿਛਲੇ ਸ਼ਬਦਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਅਗਲੇ ਸ਼ਬਦ ਦੀ **ਸ਼ਰਤਾਂ ਵਾਲੀ ਸੰਭਾਵਨਾ** ਦੇਣ ਦੇ ਯੋਗ ਹੈ: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> ਤੁਸੀਂ ਸੰਭਾਵਨਾਵਾਂ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹ ਸਕਦੇ ਹੋ ਸਾਡੇ [Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) ਵਿੱਚ। + +ਭਾਸ਼ਾ ਜਨਰੇਸ਼ਨ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਨੂੰ **ਪਰਪਲੈਕਸਿਟੀ** ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਇੱਕ ਅੰਦਰੂਨੀ ਮਾਪ ਹੈ ਜੋ ਸਾਨੂੰ ਕਿਸੇ ਟਾਸਕ-ਵਿਸ਼ੇਸ਼ ਡਾਟਾਸੈਟ ਤੋਂ ਬਿਨਾਂ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਨੂੰ ਮਾਪਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ *ਵਾਕ ਦੀ ਸੰਭਾਵਨਾ* ਦੇ ਧਾਰਨਾ 'ਤੇ ਆਧਾਰਿਤ ਹੈ - ਮਾਡਲ ਉੱਚ ਸੰਭਾਵਨਾ ਉਸ ਵਾਕ ਨੂੰ ਦਿੰਦਾ ਹੈ ਜੋ ਹਕੀਕਤ ਵਿੱਚ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਹੈ (ਅਰਥਾਤ ਮਾਡਲ ਇਸਨੂੰ **ਹੈਰਾਨ** ਨਹੀਂ ਕਰਦਾ), ਅਤੇ ਘੱਟ ਸੰਭਾਵਨਾ ਉਹਨਾਂ ਵਾਕਾਂ ਨੂੰ ਦਿੰਦਾ ਹੈ ਜੋ ਘੱਟ ਅਰਥਵਾਨ ਹੁੰਦੇ ਹਨ (ਜਿਵੇਂ *Can it does what?*)। ਜਦੋਂ ਅਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਅਸਲ ਟੈਕਸਟ ਕੋਰਪਸ ਤੋਂ ਵਾਕ ਦਿੰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਉਨ੍ਹਾਂ ਤੋਂ ਉੱਚ ਸੰਭਾਵਨਾ ਅਤੇ ਘੱਟ **ਪਰਪਲੈਕਸਿਟੀ** ਦੀ ਉਮੀਦ ਕਰਦੇ ਹਾਂ। ਗਣਿਤਕ ਤੌਰ 'ਤੇ, ਇਹ ਟੈਸਟ ਸੈਟ ਦੀ ਨਾਰਮਲਾਈਜ਼ਡ ਇਨਵਰਸ ਸੰਭਾਵਨਾ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**ਤੁਸੀਂ [GPT-powered text editor from Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)** ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰ ਸਕਦੇ ਹੋ। ਇਸ ਐਡੀਟਰ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣਾ ਟੈਕਸਟ ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ, ਅਤੇ **[TAB]** ਦਬਾਉਣ ਨਾਲ ਤੁਹਾਨੂੰ ਕਈ ਪੂਰਨ ਵਿਕਲਪ ਮਿਲਦੇ ਹਨ। ਜੇ ਉਹ ਬਹੁਤ ਛੋਟੇ ਹਨ, ਜਾਂ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨਾਲ ਸੰਤੁਸ਼ਟ ਨਹੀਂ ਹੋ - [TAB] ਨੂੰ ਫਿਰ ਦਬਾਓ, ਅਤੇ ਤੁਹਾਨੂੰ ਹੋਰ ਵਿਕਲਪ ਮਿਲਣਗੇ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਲੰਬੇ ਟੈਕਸਟ ਦੇ ਟੁਕੜੇ ਸ਼ਾਮਲ ਹਨ। + +## GPT ਇੱਕ ਪਰਿਵਾਰ ਹੈ + +GPT ਇੱਕ ਇਕੱਲਾ ਮਾਡਲ ਨਹੀਂ ਹੈ, ਬਲਕਿ [OpenAI](https://openai.com) ਦੁਆਰਾ ਵਿਕਸਿਤ ਅਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲਾਂ ਦਾ ਇੱਕ ਸੰਗ੍ਰਹਿ ਹੈ। + +GPT ਮਾਡਲਾਂ ਦੇ ਅਧੀਨ, ਸਾਡੇ ਕੋਲ ਹਨ: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|ਭਾਸ਼ਾ ਮਾਡਲ ਜਿਸ ਵਿੱਚ 1.5 ਬਿਲੀਅਨ ਪੈਰਾਮੀਟਰ ਹਨ। | ਭਾਸ਼ਾ ਮਾਡਲ ਜਿਸ ਵਿੱਚ 175 ਬਿਲੀਅਨ ਪੈਰਾਮੀਟਰ ਹਨ। | 100T ਪੈਰਾਮੀਟਰ ਅਤੇ ਇਹ ਦੋਵੇਂ ਚਿੱਤਰ ਅਤੇ ਟੈਕਸਟ ਇਨਪੁਟ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟੈਕਸਟ ਆਉਟਪੁਟ ਕਰਦਾ ਹੈ। | + +GPT-3 ਅਤੇ GPT-4 ਮਾਡਲ [Microsoft Azure ਤੋਂ ਇੱਕ ਕਾਗਨੀਟਿਵ ਸੇਵਾ](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) ਵਜੋਂ, ਅਤੇ [OpenAI API](https://openai.com/api/) ਵਜੋਂ ਉਪਲਬਧ ਹਨ। + +## ਪ੍ਰਾਂਪਟ ਇੰਜੀਨੀਅਰਿੰਗ + +ਕਿਉਂਕਿ GPT ਨੂੰ ਭਾਸ਼ਾ ਅਤੇ ਕੋਡ ਨੂੰ ਸਮਝਣ ਲਈ ਵੱਡੀ ਮਾਤਰਾ ਦੇ ਡਾਟਾ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਹ ਇਨਪੁਟ (ਪ੍ਰਾਂਪਟ) ਦੇ ਜਵਾਬ ਵਿੱਚ ਆਉਟਪੁਟ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਪ੍ਰਾਂਪਟ GPT ਇਨਪੁਟ ਜਾਂ ਕਵੈਰੀ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਕੋਈ ਮਾਡਲਾਂ ਨੂੰ ਅਗਲੇ ਕੰਮਾਂ ਦੀਆਂ ਹਦਾਇਤਾਂ ਦਿੰਦਾ ਹੈ। ਇੱਛਿਤ ਨਤੀਜੇ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਪ੍ਰਾਂਪਟ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਸਹੀ ਸ਼ਬਦ, ਫਾਰਮੈਟ, ਵਾਕਾਂਸ਼ ਜਾਂ ਇੱਥੋਂ ਤੱਕ ਕਿ ਚਿੰਨ੍ਹ ਚੁਣਨਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਇਸ ਪਹੁੰਚ ਨੂੰ [Prompt Engineering](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +[ਇਹ ਦਸਤਾਵੇਜ਼](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) ਤੁਹਾਨੂੰ ਪ੍ਰਾਂਪਟ ਇੰਜੀਨੀਅਰਿੰਗ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। + +## ✍️ ਉਦਾਹਰਨ ਨੋਟਬੁੱਕ: [OpenAI-GPT ਨਾਲ ਖੇਡਣਾ](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ ਆਪਣਾ ਸਿੱਖਣਾ ਜਾਰੀ ਰੱਖੋ: + +* [OpenAI-GPT ਅਤੇ Hugging Face Transformers ਨਾਲ ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## ਨਿਸਕਰਸ਼ + +ਨਵੇਂ ਜਨਰਲ ਪ੍ਰੀ-ਟ੍ਰੇਨਡ ਭਾਸ਼ਾ ਮਾਡਲ ਸਿਰਫ਼ ਭਾਸ਼ਾ ਦੀ ਬਣਤਰ ਨੂੰ ਹੀ ਮਾਡਲ ਨਹੀਂ ਕਰਦੇ, ਬਲਕਿ ਬਹੁਤ ਵੱਡੀ ਮਾਤਰਾ ਵਿੱਚ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਨੂੰ ਵੀ ਸ਼ਾਮਲ ਕਰਦੇ ਹਨ। ਇਸ ਲਈ, ਉਹ ਕੁਝ NLP ਕੰਮਾਂ ਨੂੰ ਜ਼ੀਰੋ-ਸ਼ਾਪ ਜਾਂ ਫਿਊ-ਸ਼ਾਪ ਸੈਟਿੰਗ ਵਿੱਚ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਹੱਲ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/5-NLP/README.md b/translations/pa/lessons/5-NLP/README.md new file mode 100644 index 00000000..4b529148 --- /dev/null +++ b/translations/pa/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ + +![NLP ਟਾਸਕਾਂ ਦਾ ਸਾਰ](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pa.png) + +ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ, ਅਸੀਂ **ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ (NLP)** ਨਾਲ ਸੰਬੰਧਿਤ ਟਾਸਕਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੀ ਵਰਤੋਂ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ। ਬਹੁਤ ਸਾਰੇ NLP ਸਮੱਸਿਆਵਾਂ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਕੰਪਿਊਟਰ ਹੱਲ ਕਰ ਸਕਣ: + +* **ਟੈਕਸਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ** ਇੱਕ ਆਮ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਸਮੱਸਿਆ ਹੈ ਜੋ ਟੈਕਸਟ ਸੀਕਵੈਂਸ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ। ਉਦਾਹਰਣਾਂ ਵਿੱਚ ਈਮੇਲ ਸੁਨੇਹਿਆਂ ਨੂੰ ਸਪੈਮ ਅਤੇ ਨੋ-ਸਪੈਮ ਵਜੋਂ ਕਲਾਸੀਫਾਈ ਕਰਨਾ, ਜਾਂ ਲੇਖਾਂ ਨੂੰ ਖੇਡ, ਕਾਰੋਬਾਰ, ਰਾਜਨੀਤੀ ਆਦਿ ਵਜੋਂ ਸ਼੍ਰੇਣੀਬੱਧ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜਦੋਂ ਅਸੀਂ ਚੈਟ ਬੋਟਸ ਵਿਕਸਿਤ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਕਸਰ ਸਾਨੂੰ ਸਮਝਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਕਿ ਉਪਭੋਗਤਾ ਕੀ ਕਹਿਣਾ ਚਾਹੁੰਦਾ ਹੈ—ਇਸ ਮਾਮਲੇ ਵਿੱਚ ਅਸੀਂ **ਇੰਟੈਂਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ** ਨਾਲ ਨਜਿੱਠ ਰਹੇ ਹਾਂ। ਅਕਸਰ, ਇੰਟੈਂਟ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਿੱਚ ਸਾਨੂੰ ਕਈ ਸ਼੍ਰੇਣੀਆਂ ਨਾਲ ਨਜਿੱਠਣਾ ਪੈਂਦਾ ਹੈ। +* **ਸੈਂਟੀਮੈਂਟ ਵਿਸ਼ਲੇਸ਼ਣ** ਇੱਕ ਆਮ ਰਿਗ੍ਰੈਸ਼ਨ ਸਮੱਸਿਆ ਹੈ, ਜਿੱਥੇ ਸਾਨੂੰ ਇੱਕ ਗਿਣਤੀ (ਸੈਂਟੀਮੈਂਟ) ਨੂੰ ਜੁੜਨਾ ਪੈਂਦਾ ਹੈ ਜੋ ਵਾਕ ਦੇ ਅਰਥ ਦੇ ਕਿੰਨੇ ਸਕਾਰਾਤਮਕ/ਨਕਾਰਾਤਮਕ ਹੋਣ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਸੈਂਟੀਮੈਂਟ ਵਿਸ਼ਲੇਸ਼ਣ ਦਾ ਇੱਕ ਹੋਰ ਉੱਚਤਮ ਸੰਸਕਰਣ **ਐਸਪੈਕਟ-ਅਧਾਰਿਤ ਸੈਂਟੀਮੈਂਟ ਵਿਸ਼ਲੇਸ਼ਣ** (ABSA) ਹੈ, ਜਿੱਥੇ ਸਾਨੂੰ ਸੈਂਟੀਮੈਂਟ ਨੂੰ ਪੂਰੇ ਵਾਕ ਨਾਲ ਨਹੀਂ, ਸਗੋਂ ਇਸਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸਿਆਂ (ਐਸਪੈਕਟਸ) ਨਾਲ ਜੋੜਨਾ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ *ਇਸ ਰੈਸਟੋਰੈਂਟ ਵਿੱਚ, ਮੈਨੂੰ ਖਾਣਾ ਪਸੰਦ ਆਇਆ, ਪਰ ਮਾਹੌਲ ਬਹੁਤ ਖਰਾਬ ਸੀ*। +* **ਨਾਮਤ ਐਨਟੀਟੀ ਪਛਾਣ** (NER) ਟੈਕਸਟ ਵਿੱਚ ਕੁਝ ਐਨਟੀਟੀਆਂ ਨੂੰ ਕੱਢਣ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਸਾਨੂੰ ਇਹ ਸਮਝਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ ਕਿ *ਮੈਨੂੰ ਕੱਲ੍ਹ ਪੈਰਿਸ ਜਾਣਾ ਹੈ* ਵਾਕ ਵਿੱਚ *ਕੱਲ੍ਹ* DATE ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ *ਪੈਰਿਸ* LOCATION ਹੈ। +* **ਕੀਵਰਡ ਕੱਢਣਾ** NER ਦੇ ਸਮਾਨ ਹੈ, ਪਰ ਸਾਨੂੰ ਵਾਕ ਦੇ ਅਰਥ ਲਈ ਮਹੱਤਵਪੂਰਨ ਸ਼ਬਦਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਕੱਢਣਾ ਹੁੰਦਾ ਹੈ, ਬਿਨਾਂ ਕਿਸੇ ਖਾਸ ਐਨਟੀਟੀ ਕਿਸਮਾਂ ਲਈ ਪ੍ਰੀ-ਟ੍ਰੇਨਿੰਗ ਕੀਤੇ। +* **ਟੈਕਸਟ ਕਲੱਸਟਰਿੰਗ** ਤਦ ਉਪਯੋਗੀ ਹੋ ਸਕਦੀ ਹੈ ਜਦੋਂ ਅਸੀਂ ਸਮਾਨ ਵਾਕਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਉਦਾਹਰਣ ਲਈ, ਤਕਨੀਕੀ ਸਹਾਇਤਾ ਗੱਲਬਾਤਾਂ ਵਿੱਚ ਸਮਾਨ ਬੇਨਤੀਆਂ। +* **ਸਵਾਲ ਜਵਾਬ** ਇੱਕ ਮਾਡਲ ਦੀ ਸਮਰੱਥਾ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਉਹ ਖਾਸ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦੇ ਸਕੇ। ਮਾਡਲ ਨੂੰ ਇੱਕ ਟੈਕਸਟ ਪੈਸੇਜ ਅਤੇ ਸਵਾਲ ਇਨਪੁਟ ਵਜੋਂ ਮਿਲਦੇ ਹਨ, ਅਤੇ ਇਸਨੂੰ ਟੈਕਸਟ ਵਿੱਚ ਉਹ ਜਗ੍ਹਾ ਪ੍ਰਦਾਨ ਕਰਨੀ ਹੁੰਦੀ ਹੈ ਜਿੱਥੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਮੌਜੂਦ ਹੈ (ਜਾਂ, ਕਈ ਵਾਰ, ਜਵਾਬ ਟੈਕਸਟ ਜਨਰੇਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ)। +* **ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ** ਮਾਡਲ ਦੀ ਸਮਰੱਥਾ ਹੈ ਕਿ ਉਹ ਨਵਾਂ ਟੈਕਸਟ ਜਨਰੇਟ ਕਰ ਸਕੇ। ਇਸਨੂੰ ਇੱਕ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਟਾਸਕ ਵਜੋਂ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ ਜੋ ਕੁਝ *ਟੈਕਸਟ ਪ੍ਰੋਮਪਟ* ਦੇ ਆਧਾਰ 'ਤੇ ਅਗਲਾ ਅੱਖਰ/ਸ਼ਬਦ ਅਨੁਮਾਨ ਲਗਾਉਂਦਾ ਹੈ। ਉੱਚਤਮ ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਮਾਡਲ, ਜਿਵੇਂ GPT-3, **ਪ੍ਰੋਮਪਟ ਪ੍ਰੋਗਰਾਮਿੰਗ** ਜਾਂ **ਪ੍ਰੋਮਪਟ ਇੰਜੀਨੀਅਰਿੰਗ** ਵਰਗੇ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋਰ NLP ਟਾਸਕ ਹੱਲ ਕਰ ਸਕਦੇ ਹਨ। +* **ਟੈਕਸਟ ਸੰਖੇਪਣ** ਇੱਕ ਤਕਨੀਕ ਹੈ ਜਦੋਂ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਕੰਪਿਊਟਰ ਲੰਬੇ ਟੈਕਸਟ ਨੂੰ "ਪੜ੍ਹੇ" ਅਤੇ ਇਸਨੂੰ ਕੁਝ ਵਾਕਾਂ ਵਿੱਚ ਸੰਖੇਪ ਕਰੇ। +* **ਮਸ਼ੀਨ ਅਨੁਵਾਦ** ਨੂੰ ਇੱਕ ਭਾਸ਼ਾ ਵਿੱਚ ਟੈਕਸਟ ਸਮਝਣ ਅਤੇ ਦੂਜੀ ਭਾਸ਼ਾ ਵਿੱਚ ਟੈਕਸਟ ਜਨਰੇਸ਼ਨ ਦੇ ਸੰਯੋਗ ਵਜੋਂ ਦੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ। + +ਸ਼ੁਰੂ ਵਿੱਚ, ਜ਼ਿਆਦਾਤਰ NLP ਟਾਸਕਾਂ ਨੂੰ ਰਵਾਇਤੀ ਤਰੀਕਿਆਂ ਜਿਵੇਂ ਕਿ ਗ੍ਰਾਮਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੱਲ ਕੀਤਾ ਜਾਂਦਾ ਸੀ। ਉਦਾਹਰਣ ਲਈ, ਮਸ਼ੀਨ ਅਨੁਵਾਦ ਵਿੱਚ ਪਾਰਸਰਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਸੀ ਜਿਨ੍ਹਾਂ ਸ਼ੁਰੂਆਤੀ ਵਾਕ ਨੂੰ ਇੱਕ ਸਿੰਟੈਕਸ ਟ੍ਰੀ ਵਿੱਚ ਬਦਲਿਆ, ਫਿਰ ਵਾਕ ਦੇ ਅਰਥ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਉੱਚ ਪੱਧਰ ਦੇ ਸੈਮੈਂਟਿਕ ਸਟ੍ਰਕਚਰ ਕੱਢੇ ਗਏ, ਅਤੇ ਇਸ ਅਰਥ ਅਤੇ ਟਾਰਗਟ ਭਾਸ਼ਾ ਦੇ ਗ੍ਰਾਮਰ ਦੇ ਆਧਾਰ 'ਤੇ ਨਤੀਜਾ ਜਨਰੇਟ ਕੀਤਾ ਗਿਆ। ਅੱਜਕਲ, ਬਹੁਤ ਸਾਰੇ NLP ਟਾਸਕ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜ਼ਿਆਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਹੱਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। + +> ਬਹੁਤ ਸਾਰੇ ਕਲਾਸੀਕਲ NLP ਤਰੀਕੇ [ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ ਟੂਲਕਿਟ (NLTK)](https://www.nltk.org) ਪਾਇਥਨ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਲਾਗੂ ਕੀਤੇ ਗਏ ਹਨ। ਇੱਕ ਸ਼ਾਨਦਾਰ [NLTK ਬੁੱਕ](https://www.nltk.org/book/) ਆਨਲਾਈਨ ਉਪਲਬਧ ਹੈ ਜੋ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ NLP ਟਾਸਕ NLTK ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੱਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +ਸਾਡੇ ਕੋਰਸ ਵਿੱਚ, ਅਸੀਂ ਮੁੱਖ ਤੌਰ 'ਤੇ NLP ਲਈ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੀ ਵਰਤੋਂ 'ਤੇ ਧਿਆਨ ਦੇਵਾਂਗੇ, ਅਤੇ ਜਿੱਥੇ ਲੋੜ ਹੋਵੇਗੀ, ਅਸੀਂ NLTK ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। + +ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਸਿੱਖ ਚੁੱਕੇ ਹਾਂ ਕਿ ਟੇਬੂਲਰ ਡੇਟਾ ਅਤੇ ਚਿੱਤਰਾਂ ਨਾਲ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਉਹ ਡੇਟਾ ਕਿਸਮਾਂ ਅਤੇ ਟੈਕਸਟ ਦੇ ਵਿਚਕਾਰ ਮੁੱਖ ਅੰਤਰ ਇਹ ਹੈ ਕਿ ਟੈਕਸਟ ਇੱਕ ਵੈਰੀਏਬਲ ਲੰਬਾਈ ਦਾ ਸੀਕਵੈਂਸ ਹੈ, ਜਦਕਿ ਚਿੱਤਰਾਂ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਇਨਪੁਟ ਸਾਈਜ਼ ਪਹਿਲਾਂ ਤੋਂ ਜਾਣਿਆ ਹੁੰਦਾ ਹੈ। ਜਦਕਿ ਕਨਵੋਲੂਸ਼ਨਲ ਨੈਟਵਰਕਸ ਇਨਪੁਟ ਡੇਟਾ ਤੋਂ ਪੈਟਰਨ ਕੱਢ ਸਕਦੇ ਹਨ, ਟੈਕਸਟ ਵਿੱਚ ਪੈਟਰਨ ਹੋਰ ਜਟਿਲ ਹੁੰਦੇ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਨਕਾਰਾਤਮਕਤਾ ਵਿਸ਼ੇ ਤੋਂ ਕਈ ਸ਼ਬਦਾਂ ਦੁਆਰਾ ਵੱਖ ਹੋ ਸਕਦੀ ਹੈ (ਜਿਵੇਂ *ਮੈਨੂੰ ਸੰਤਰੇ ਪਸੰਦ ਨਹੀਂ*, ਬਨਾਮ *ਮੈਨੂੰ ਉਹ ਵੱਡੇ ਰੰਗੀਨ ਸੁਆਦਿਸ਼ਟ ਸੰਤਰੇ ਪਸੰਦ ਨਹੀਂ*), ਅਤੇ ਇਸਨੂੰ ਫਿਰ ਵੀ ਇੱਕ ਪੈਟਰਨ ਵਜੋਂ ਵਿਆਖਿਆ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਲਈ, ਭਾਸ਼ਾ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸਾਨੂੰ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਦੇ ਨਵੇਂ ਕਿਸਮਾਂ, ਜਿਵੇਂ ਕਿ *ਰੀਕਰਨਟ ਨੈਟਵਰਕਸ* ਅਤੇ *ਟ੍ਰਾਂਸਫਾਰਮਰਸ* ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। + +## ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਸਟਾਲ ਕਰੋ + +ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਕੋਰਸ ਨੂੰ ਚਲਾਉਣ ਲਈ ਸਥਾਨਕ ਪਾਇਥਨ ਇੰਸਟਾਲੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ NLP ਲਈ ਸਾਰੀਆਂ ਲੋੜੀਂਦੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ: + +**ਪਾਈਟਾਰਚ ਲਈ** +```bash +pip install -r requirements-torch.txt +``` +**ਟੈਂਸਰਫਲੋ ਲਈ** +```bash +pip install -r requirements-tf.txt +``` + +> ਤੁਸੀਂ [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) 'ਤੇ ਟੈਂਸਰਫਲੋ ਨਾਲ NLP ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ। + +## GPU ਚੇਤਾਵਨੀ + +ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ, ਕੁਝ ਉਦਾਹਰਣਾਂ ਵਿੱਚ ਅਸੀਂ ਕਾਫ਼ੀ ਵੱਡੇ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਾਂਗੇ। +* **GPU-ਸਮਰੱਥ ਕੰਪਿਊਟਰ ਦੀ ਵਰਤੋਂ ਕਰੋ**: ਵੱਡੇ ਮਾਡਲਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਉਡੀਕ ਦੇ ਸਮੇਂ ਨੂੰ ਘਟਾਉਣ ਲਈ ਆਪਣੇ ਨੋਟਬੁੱਕਸ ਨੂੰ GPU-ਸਮਰੱਥ ਕੰਪਿਊਟਰ 'ਤੇ ਚਲਾਉਣਾ ਸਲਾਹਯੋਗ ਹੈ। +* **GPU ਮੈਮਰੀ ਸੀਮਾਵਾਂ**: GPU 'ਤੇ ਚਲਾਉਣ ਨਾਲ ਉਹ ਸਥਿਤੀਆਂ ਬਣ ਸਕਦੀਆਂ ਹਨ ਜਿੱਥੇ ਤੁਸੀਂ GPU ਮੈਮਰੀ ਖਤਮ ਕਰ ਲੈਂਦੇ ਹੋ, ਖਾਸ ਕਰਕੇ ਵੱਡੇ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਦੇ ਸਮੇਂ। +* **GPU ਮੈਮਰੀ ਖਪਤ**: ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ GPU ਮੈਮਰੀ ਦੀ ਖਪਤ ਕਈ ਕਾਰਕਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਮਿਨੀਬੈਚ ਸਾਈਜ਼। +* **ਮਿਨੀਬੈਚ ਸਾਈਜ਼ ਘਟਾਓ**: ਜੇਕਰ ਤੁਹਾਨੂੰ GPU ਮੈਮਰੀ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਤਾਂ ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਮਿਨੀਬੈਚ ਸਾਈਜ਼ ਨੂੰ ਘਟਾਉਣ ਨੂੰ ਇੱਕ ਸੰਭਾਵਿਤ ਹੱਲ ਵਜੋਂ ਵਿਚਾਰ ਕਰੋ। +* **ਟੈਂਸਰਫਲੋ GPU ਮੈਮਰੀ ਰਿਲੀਜ਼**: ਟੈਂਸਰਫਲੋ ਦੇ ਪੁਰਾਣੇ ਸੰਸਕਰਣ ਇੱਕ ਹੀ ਪਾਇਥਨ ਕਰਨਲ ਵਿੱਚ ਕਈ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਦੇ ਸਮੇਂ GPU ਮੈਮਰੀ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਰਿਲੀਜ਼ ਨਹੀਂ ਕਰ ਸਕਦੇ। GPU ਮੈਮਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਟੈਂਸਰਫਲੋ ਨੂੰ GPU ਮੈਮਰੀ ਨੂੰ ਸਿਰਫ ਜਦੋਂ ਲੋੜ ਹੋਵੇ ਤਦ ਹੀ ਅਲੋਕੇਟ ਕਰਨ ਲਈ ਸੰਰਚਿਤ ਕਰ ਸਕਦੇ ਹੋ। +* **ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ**: ਟੈਂਸਰਫਲੋ ਨੂੰ GPU ਮੈਮਰੀ ਅਲੋਕੇਸ਼ਨ ਨੂੰ ਸਿਰਫ ਜਦੋਂ ਲੋੜ ਹੋਵੇ ਤਦ ਵਧਾਉਣ ਲਈ, ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਆਪਣੇ ਨੋਟਬੁੱਕਸ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +ਜੇਕਰ ਤੁਸੀਂ ਕਲਾਸੀਕਲ ML ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਤੋਂ NLP ਬਾਰੇ ਸਿੱਖਣ ਵਿੱਚ ਰੁਚੀ ਰੱਖਦੇ ਹੋ, ਤਾਂ [ਇਹ ਪਾਠਾਂ ਦੀ ਸੂਟ](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) 'ਤੇ ਜਾਓ। + +## ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ +ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ ਅਸੀਂ ਸਿੱਖਾਂਗੇ: + +* [ਟੈਕਸਟ ਨੂੰ ਟੈਂਸਰ ਵਜੋਂ ਦਰਸਾਉਣਾ](13-TextRep/README.md) +* [ਵਰਡ ਐਮਬੈਡਿੰਗ](14-Emdeddings/README.md) +* [ਭਾਸ਼ਾ ਮਾਡਲਿੰਗ](15-LanguageModeling/README.md) +* [ਰੀਕਰਨਟ ਨਿਊਰਲ ਨੈਟਵਰਕਸ](16-RNN/README.md) +* [ਜਨਰੇਟਿਵ ਨੈਟਵਰਕਸ](17-GenerativeNetworks/README.md) +* [ਟ੍ਰਾਂਸਫਾਰਮਰਸ](18-Transformers/README.md) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/pa/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..1a3790b8 --- /dev/null +++ b/translations/pa/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ** (GA) ਇੱਕ **ਵਿਕਾਸੀ ਦ੍ਰਿਸ਼ਟੀਕੋਣ** 'ਤੇ ਆਧਾਰਿਤ AI ਪদ্ধਤੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਇੱਕ ਸਮੱਸਿਆ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਹੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਜਨਸੰਖਿਆ ਦੇ ਵਿਕਾਸ ਦੇ ਤਰੀਕੇ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਇਹ 1975 ਵਿੱਚ [ਜੌਨ ਹੈਨਰੀ ਹੌਲੈਂਡ](https://wikipedia.org/wiki/John_Henry_Holland) ਦੁਆਰਾ ਪ੍ਰਸਤਾਵਿਤ ਕੀਤੇ ਗਏ ਸਨ। + +ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਹੇਠਾਂ ਦਿੱਤੇ ਵਿਚਾਰਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹਨ: + +* ਸਮੱਸਿਆ ਦੇ ਵੈਧ ਹੱਲਾਂ ਨੂੰ **ਜੀਨਸ** ਵਜੋਂ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ +* **ਕਰਾਸਓਵਰ** ਸਾਨੂੰ ਦੋ ਹੱਲਾਂ ਨੂੰ ਮਿਲਾ ਕੇ ਇੱਕ ਨਵਾਂ ਵੈਧ ਹੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ +* **ਚੋਣ** ਨੂੰ ਕੁਝ **ਫਿਟਨਸ ਫੰਕਸ਼ਨ** ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਧੀਆ ਹੱਲਾਂ ਦੀ ਚੋਣ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ +* **ਮਿਊਟੇਸ਼ਨ** ਨੂੰ ਅਨੁਕੂਲਤਾ ਨੂੰ ਅਸਥਿਰ ਕਰਨ ਅਤੇ ਸਥਾਨਕ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਤੋਂ ਬਾਹਰ ਨਿਕਲਣ ਲਈ ਪੇਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ + +ਜੇ ਤੁਸੀਂ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਲਾਗੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਚੀਜ਼ਾਂ ਦੀ ਲੋੜ ਹੋਵੇਗੀ: + + * **ਜੀਨਸ** g∈Γ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਮੱਸਿਆ ਦੇ ਹੱਲਾਂ ਨੂੰ ਕੋਡ ਕਰਨ ਦਾ ਤਰੀਕਾ ਲੱਭੋ + * ਜੀਨਸ Γ ਦੇ ਸੈਟ 'ਤੇ **ਫਿਟਨਸ ਫੰਕਸ਼ਨ** fit: Γ→**R** ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ। ਛੋਟੇ ਫੰਕਸ਼ਨ ਮੁੱਲ ਵਧੀਆ ਹੱਲਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। + * ਦੋ ਜੀਨਸ ਨੂੰ ਮਿਲਾ ਕੇ ਇੱਕ ਨਵਾਂ ਵੈਧ ਹੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ **ਕਰਾਸਓਵਰ** ਮਕੈਨਿਜ਼ਮ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ crossover: Γ2→Γ। + * **ਮਿਊਟੇਸ਼ਨ** ਮਕੈਨਿਜ਼ਮ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ mutate: Γ→Γ। + +ਕਈ ਕੇਸਾਂ ਵਿੱਚ, ਕਰਾਸਓਵਰ ਅਤੇ ਮਿਊਟੇਸ਼ਨ ਅਕਸਰ ਸਧਾਰਨ ਐਲਗੋਰਿਦਮ ਹੁੰਦੇ ਹਨ ਜੋ ਜੀਨਸ ਨੂੰ ਸੰਖਿਆਤਮਕ ਕ੍ਰਮਾਂਕਾਂ ਜਾਂ ਬਿਟ ਵੇਕਟਰਾਂ ਵਜੋਂ ਮੈਨਿਪੁਲੇਟ ਕਰਦੇ ਹਨ। + +ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਦੀ ਵਿਸ਼ੇਸ਼ ਲਾਗੂ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕੇਸ ਤੋਂ ਕੇਸ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਹੋ ਸਕਦੀ ਹੈ, ਪਰ ਸਮੁੱਚੀ ਬਣਤਰ ਹੇਠਾਂ ਦਿੱਤੀ ਗਈ ਹੈ: + +1. ਸ਼ੁਰੂਆਤੀ ਜਨਸੰਖਿਆ G⊂Γ ਦੀ ਚੋਣ ਕਰੋ +2. ਬੇਤਰਤੀਬੀ ਨਾਲ ਇੱਕ ਕਾਰਵਾਈ ਦੀ ਚੋਣ ਕਰੋ ਜੋ ਇਸ ਕਦਮ 'ਤੇ ਕੀਤੀ ਜਾਵੇਗੀ: ਕਰਾਸਓਵਰ ਜਾਂ ਮਿਊਟੇਸ਼ਨ +3. **ਕਰਾਸਓਵਰ**: + * ਬੇਤਰਤੀਬੀ ਨਾਲ ਦੋ ਜੀਨਸ g1, g2 ∈ G ਦੀ ਚੋਣ ਕਰੋ + * ਕਰਾਸਓਵਰ ਦੀ ਗਣਨਾ ਕਰੋ g=crossover(g1,g2) + * ਜੇ fit(g)1) ਜਾਂ fit(g)2) - ਜਨਸੰਖਿਆ ਵਿੱਚ ਸੰਬੰਧਿਤ ਜੀਨ ਨੂੰ g ਨਾਲ ਬਦਲੋ। +4. **ਮਿਊਟੇਸ਼ਨ** - ਬੇਤਰਤੀਬੀ ਨਾਲ g∈G ਜੀਨ ਦੀ ਚੋਣ ਕਰੋ ਅਤੇ ਇਸ ਨੂੰ mutate(g) ਨਾਲ ਬਦਲੋ +5. ਕਦਮ 2 ਤੋਂ ਦੁਹਰਾਓ, ਜਦੋਂ ਤੱਕ fit ਦਾ ਮੁੱਲ ਕਾਫ਼ੀ ਛੋਟਾ ਨਾ ਹੋ ਜਾਵੇ, ਜਾਂ ਜਦੋਂ ਤੱਕ ਕਦਮਾਂ ਦੀ ਗਿਣਤੀ ਦੀ ਸੀਮਾ ਪੂਰੀ ਨਾ ਹੋ ਜਾਵੇ। + +## ਆਮ ਕੰਮ + +ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਦੁਆਰਾ ਹੱਲ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਆਮ ਕੰਮਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ: + +1. ਸ਼ਡਿਊਲ ਅਨੁਕੂਲਤਾ +1. ਵਧੀਆ ਪੈਕਿੰਗ +1. ਵਧੀਆ ਕਟਾਈ +1. ਥਕਾਵਟ ਭਰਪੂਰ ਖੋਜ ਨੂੰ ਤੇਜ਼ ਕਰਨਾ + +## ✍️ ਅਭਿਆਸ: ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਆਪਣਾ ਸਿੱਖਣਾ ਜਾਰੀ ਰੱਖੋ: + +[ਇਸ ਨੋਟਬੁੱਕ](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) 'ਤੇ ਜਾਓ ਜਿੱਥੇ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਦੇ ਦੋ ਉਦਾਹਰਨ ਦਿੱਤੇ ਗਏ ਹਨ: + +1. ਖਜ਼ਾਨੇ ਦੀ ਨਿਆਂਪੂਰਕ ਵੰਡ +1. 8 ਕਵੀਨਸ ਸਮੱਸਿਆ + +## ਨਿਸਕਰਸ਼ + +ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਨੂੰ ਕਈ ਸਮੱਸਿਆਵਾਂ, ਜਿਵੇਂ ਕਿ ਲਾਜਿਸਟਿਕਸ ਅਤੇ ਖੋਜ ਸਮੱਸਿਆਵਾਂ, ਹੱਲ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਖੇਤਰ ਮਨੋਵਿਗਿਆਨ ਅਤੇ ਕੰਪਿਊਟਰ ਸਾਇੰਸ ਦੇ ਵਿਸ਼ਿਆਂ ਨੂੰ ਮਿਲਾ ਕੇ ਕੀਤੇ ਗਏ ਖੋਜ ਤੋਂ ਪ੍ਰੇਰਿਤ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +"ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਲਾਗੂ ਕਰਨ ਲਈ ਸਧਾਰਨ ਹਨ, ਪਰ ਉਨ੍ਹਾਂ ਦੇ ਵਿਹਾਰ ਨੂੰ ਸਮਝਣਾ ਮੁਸ਼ਕਲ ਹੈ।" [ਸਰੋਤ](https://wikipedia.org/wiki/Genetic_algorithm)। ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਦੇ ਲਾਗੂ ਕਰਨ ਦਾ ਕੋਈ ਉਦਾਹਰਨ ਲੱਭੋ, ਜਿਵੇਂ ਕਿ ਸੁਡੋਕੂ ਪਜ਼ਲ ਹੱਲ ਕਰਨਾ, ਅਤੇ ਇਸ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਸਕੈਚ ਜਾਂ ਫਲੋਚਾਰਟ ਵਜੋਂ ਵਿਆਖਿਆ ਕਰੋ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +[ਇਹ ਸ਼ਾਨਦਾਰ ਵੀਡੀਓ](https://www.youtube.com/watch?v=qv6UVOQ0F44) ਦੇਖੋ ਜੋ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਕਿਵੇਂ ਕੰਪਿਊਟਰ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਦਮ ਦੁਆਰਾ ਪ੍ਰਸ਼ਿਕਸ਼ਿਤ ਨਿਊਰਲ ਨੈਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੁਪਰ ਮਾਰੀਓ ਖੇਡਣਾ ਸਿੱਖ ਸਕਦਾ ਹੈ। ਅਸੀਂ ਅਗਲੇ ਭਾਗ ਵਿੱਚ [ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਖੇਡਾਂ ਖੇਡਣ ਲਈ ਕੰਪਿਊਟਰ ਸਿੱਖਣ ਬਾਰੇ](../22-DeepRL/README.md) ਹੋਰ ਸਿੱਖਾਂਗੇ। + +## [ਅਸਾਈਨਮੈਂਟ: ਡਾਇਓਫੈਂਟਾਈਨ ਸਮੀਕਰਨ](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +ਤੁਹਾਡਾ ਉਦੇਸ਼ ਇਸੇ-ਕਹੇ ਜਾਣ ਵਾਲੇ **ਡਾਇਓਫੈਂਟਾਈਨ ਸਮੀਕਰਨ** - ਇੱਕ ਸਮੀਕਰਨ ਜਿਸ ਦੇ ਪੂਰਨ ਅੱਖਰ ਰੂਟ ਹੁੰਦੇ ਹਨ - ਨੂੰ ਹੱਲ ਕਰਨਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, a+2b+3c+4d=30 ਸਮੀਕਰਨ ਨੂੰ ਵੇਖੋ। ਤੁਹਾਨੂੰ ਉਹ ਪੂਰਨ ਅੱਖਰ ਰੂਟ ਲੱਭਣੇ ਹਨ ਜੋ ਇਸ ਸਮੀਕਰਨ ਨੂੰ ਪੂਰਾ ਕਰਦੇ ਹਨ। + +*ਇਹ ਅਸਾਈਨਮੈਂਟ [ਇਸ ਪੋਸਟ](https://habr.com/post/128704/) ਤੋਂ ਪ੍ਰੇਰਿਤ ਹੈ।* + +ਸੁਝਾਅ: + +1. ਤੁਸੀਂ ਰੂਟਾਂ ਨੂੰ [0;30] ਅੰਤਰਾਲ ਵਿੱਚ ਮੰਨ ਸਕਦੇ ਹੋ +1. ਜੀਨ ਵਜੋਂ, ਰੂਟ ਮੁੱਲਾਂ ਦੀ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਸੋਚੋ + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) ਨੂੰ ਸ਼ੁਰੂਆਤੀ ਬਿੰਦੂ ਵਜੋਂ ਵਰਤੋ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/6-Other/22-DeepRL/README.md b/translations/pa/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..80341d35 --- /dev/null +++ b/translations/pa/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# ਡੀਪ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ + +ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ (RL) ਨੂੰ ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਅਤੇ ਅਨਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਦੇ ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਮੁੱਖ ਪੈਰਾਡਾਈਮਾਂ ਵਿੱਚੋਂ ਇੱਕ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਕਿ ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਵਿੱਚ ਅਸੀਂ ਜਾਣੇ-ਪਛਾਣੇ ਨਤੀਜਿਆਂ ਵਾਲੇ ਡਾਟਾਸੈਟ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਾਂ, RL **ਕਰ ਕੇ ਸਿੱਖਣ** 'ਤੇ ਅਧਾਰਿਤ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜਦੋਂ ਅਸੀਂ ਪਹਿਲੀ ਵਾਰ ਕੋਈ ਕੰਪਿਊਟਰ ਗੇਮ ਦੇਖਦੇ ਹਾਂ, ਅਸੀਂ ਖੇਡਣਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਭਾਵੇਂ ਸਾਨੂੰ ਨਿਯਮਾਂ ਦਾ ਪਤਾ ਨਹੀਂ ਹੁੰਦਾ, ਅਤੇ ਜਲਦੀ ਹੀ ਅਸੀਂ ਸਿਰਫ ਖੇਡਣ ਅਤੇ ਆਪਣੇ ਵਿਹਾਰ ਨੂੰ ਢਾਲ ਕੇ ਆਪਣੀਆਂ ਕੁਸ਼ਲਤਾਵਾਂ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਦੇ ਯੋਗ ਹੋ ਜਾਂਦੇ ਹਾਂ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL ਕਰਨ ਲਈ, ਸਾਨੂੰ ਲੋੜ ਹੈ: + +* **ਇਨਵਾਇਰਮੈਂਟ** ਜਾਂ **ਸਿਮੂਲੇਟਰ**, ਜੋ ਗੇਮ ਦੇ ਨਿਯਮ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ। ਸਾਨੂੰ ਸਿਮੂਲੇਟਰ ਵਿੱਚ ਪ੍ਰਯੋਗ ਚਲਾਉਣ ਅਤੇ ਨਤੀਜੇ ਦੇਖਣ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। +* ਕੁਝ **ਰਿਵਾਰਡ ਫੰਕਸ਼ਨ**, ਜੋ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਸਾਡਾ ਪ੍ਰਯੋਗ ਕਿੰਨਾ ਸਫਲ ਰਿਹਾ। ਜੇਕਰ ਕੰਪਿਊਟਰ ਗੇਮ ਖੇਡਣ ਦੀ ਸਿੱਖਿਆ ਦੀ ਗੱਲ ਕਰੀਏ, ਤਾਂ ਰਿਵਾਰਡ ਸਾਡਾ ਅੰਤਮ ਸਕੋਰ ਹੋਵੇਗਾ। + +ਰਿਵਾਰਡ ਫੰਕਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਸਾਨੂੰ ਆਪਣੇ ਵਿਹਾਰ ਨੂੰ ਢਾਲਣ ਅਤੇ ਆਪਣੀਆਂ ਕੁਸ਼ਲਤਾਵਾਂ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਤਾਂ ਜੋ ਅਗਲੀ ਵਾਰ ਅਸੀਂ ਬਿਹਤਰ ਖੇਡ ਸਕੀਏ। ਹੋਰ ਕਿਸਮਾਂ ਦੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਅਤੇ RL ਵਿੱਚ ਮੁੱਖ ਅੰਤਰ ਇਹ ਹੈ ਕਿ RL ਵਿੱਚ ਅਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਨਹੀਂ ਜਾਣਦੇ ਕਿ ਅਸੀਂ ਜਿੱਤਦੇ ਹਾਂ ਜਾਂ ਹਾਰਦੇ ਹਾਂ ਜਦੋਂ ਤੱਕ ਗੇਮ ਖਤਮ ਨਹੀਂ ਹੁੰਦੀ। ਇਸ ਲਈ, ਅਸੀਂ ਇਹ ਨਹੀਂ ਕਹਿ ਸਕਦੇ ਕਿ ਕੋਈ ਵਿਸ਼ੇਸ਼ ਚਾਲ ਆਪਣੇ ਆਪ ਵਿੱਚ ਚੰਗੀ ਹੈ ਜਾਂ ਨਹੀਂ - ਸਾਨੂੰ ਸਿਰਫ ਗੇਮ ਦੇ ਅੰਤ ਵਿੱਚ ਰਿਵਾਰਡ ਮਿਲਦਾ ਹੈ। + +RL ਦੌਰਾਨ, ਅਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਕਈ ਪ੍ਰਯੋਗ ਕਰਦੇ ਹਾਂ। ਹਰ ਪ੍ਰਯੋਗ ਦੌਰਾਨ, ਸਾਨੂੰ ਹੁਣ ਤੱਕ ਸਿੱਖੀ ਗਈ ਸ੍ਰੇਸ਼ਠ ਰਣਨੀਤੀ ਦੀ ਪਾਲਣਾ ਕਰਨ (**ਸ਼ੋਸ਼ਣ**) ਅਤੇ ਨਵੇਂ ਸੰਭਾਵਿਤ ਰਾਜਾਂ ਦੀ ਖੋਜ ਕਰਨ (**ਖੋਜ**) ਦੇ ਵਿਚਕਾਰ ਸੰਤੁਲਨ ਬਣਾਉਣਾ ਪੈਂਦਾ ਹੈ। + +## OpenAI Gym + +RL ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਟੂਲ [OpenAI Gym](https://gym.openai.com/) ਹੈ - ਇੱਕ **ਸਿਮੂਲੇਸ਼ਨ ਇਨਵਾਇਰਮੈਂਟ**, ਜੋ ਕਈ ਵੱਖ-ਵੱਖ ਇਨਵਾਇਰਮੈਂਟਾਂ ਨੂੰ ਸਿਮੂਲੇਟ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ Atari ਗੇਮਾਂ ਤੋਂ ਲੈ ਕੇ ਪੋਲ ਬੈਲੈਂਸਿੰਗ ਦੇ ਭੌਤਿਕ ਵਿਗਿਆਨ ਤੱਕ। ਇਹ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਐਲਗੋਰਿਥਮਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਸਿਮੂਲੇਸ਼ਨ ਇਨਵਾਇਰਮੈਂਟਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਅਤੇ ਇਸਨੂੰ [OpenAI](https://openai.com/) ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ। + +> **Note**: ਤੁਸੀਂ OpenAI Gym ਤੋਂ ਉਪਲਬਧ ਸਾਰੇ ਇਨਵਾਇਰਮੈਂਟ [ਇਥੇ](https://gym.openai.com/envs/#classic_control) ਦੇਖ ਸਕਦੇ ਹੋ। + +## CartPole Balancing + +ਤੁਹਾਨੂੰ ਸ਼ਾਇਦ ਸਾਰੇ ਆਧੁਨਿਕ ਬੈਲੈਂਸਿੰਗ ਡਿਵਾਈਸਾਂ ਜਿਵੇਂ ਕਿ *Segway* ਜਾਂ *Gyroscooters* ਦੇਖੇ ਹੋਣਗੇ। ਇਹ ਆਪਣੇ ਪਹੀਏ ਨੂੰ ਐਕਸਲੇਰੋਮੀਟਰ ਜਾਂ ਗਾਇਰੋਸਕੋਪ ਤੋਂ ਸਿਗਨਲ ਦੇ ਜਵਾਬ ਵਿੱਚ ਢਾਲ ਕੇ ਆਪਣੇ ਆਪ ਨੂੰ ਬੈਲੈਂਸ ਕਰਨ ਦੇ ਯੋਗ ਹੁੰਦੇ ਹਨ। ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਸਮਾਨ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਦੀ ਸਿੱਖਿਆ ਲਵਾਂਗੇ - ਇੱਕ ਪੋਲ ਨੂੰ ਬੈਲੈਂਸ ਕਰਨਾ। ਇਹ ਉਸ ਸਥਿਤੀ ਦੇ ਸਮਾਨ ਹੈ ਜਦੋਂ ਇੱਕ ਸਰਕਸ ਪਰਫਾਰਮਰ ਨੂੰ ਆਪਣੇ ਹੱਥ 'ਤੇ ਪੋਲ ਬੈਲੈਂਸ ਕਰਨਾ ਪੈਂਦਾ ਹੈ - ਪਰ ਇਹ ਪੋਲ ਬੈਲੈਂਸਿੰਗ ਸਿਰਫ 1D ਵਿੱਚ ਹੁੰਦੀ ਹੈ। + +ਬੈਲੈਂਸਿੰਗ ਦਾ ਇੱਕ ਸਰਲ ਵਰਜਨ **CartPole** ਸਮੱਸਿਆ ਦੇ ਨਾਮ ਨਾਲ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ। CartPole ਦੁਨੀਆ ਵਿੱਚ, ਸਾਡੇ ਕੋਲ ਇੱਕ ਹੋਰਿਜ਼ਾਂਟਲ ਸਲਾਈਡਰ ਹੁੰਦਾ ਹੈ ਜੋ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਵੱਲ ਹਿਲ ਸਕਦਾ ਹੈ, ਅਤੇ ਉਦੇਸ਼ ਸਲਾਈਡਰ ਦੇ ਉੱਪਰ ਇੱਕ ਵਰਟਿਕਲ ਪੋਲ ਨੂੰ ਬੈਲੈਂਸ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। + +a cartpole + +ਇਸ ਇਨਵਾਇਰਮੈਂਟ ਨੂੰ ਬਣਾਉਣ ਅਤੇ ਇਸਨੂੰ ਵਰਤਣ ਲਈ, ਸਾਨੂੰ ਕੁਝ ਪਾਈਥਨ ਕੋਡ ਦੀ ਲਾਈਨਾਂ ਦੀ ਲੋੜ ਹੈ: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +ਹਰ ਇਨਵਾਇਰਮੈਂਟ ਨੂੰ ਬਿਲਕੁਲ ਇੱਕੋ ਤਰੀਕੇ ਨਾਲ ਐਕਸੈਸ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: +* `env.reset` ਇੱਕ ਨਵਾਂ ਪ੍ਰਯੋਗ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ +* `env.step` ਇੱਕ ਸਿਮੂਲੇਸ਼ਨ ਸਟੈਪ ਕਰਦਾ ਹੈ। ਇਹ **ਐਕਸ਼ਨ** ਨੂੰ **ਐਕਸ਼ਨ ਸਪੇਸ** ਤੋਂ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਅਤੇ **ਅਬਜ਼ਰਵੇਸ਼ਨ** (ਅਬਜ਼ਰਵੇਸ਼ਨ ਸਪੇਸ ਤੋਂ), ਰਿਵਾਰਡ ਅਤੇ ਟਰਮੀਨੇਸ਼ਨ ਫਲੈਗ ਵਾਪਸ ਕਰਦਾ ਹੈ। + +ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਿੱਚ ਅਸੀਂ ਹਰ ਸਟੈਪ 'ਤੇ ਇੱਕ ਰੈਂਡਮ ਐਕਸ਼ਨ ਕਰਦੇ ਹਾਂ, ਜਿਸ ਕਰਕੇ ਪ੍ਰਯੋਗ ਦੀ ਉਮਰ ਬਹੁਤ ਛੋਟੀ ਹੁੰਦੀ ਹੈ: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RL ਐਲਗੋਰਿਥਮ ਦਾ ਉਦੇਸ਼ ਇੱਕ ਮਾਡਲ - ਜਿਸਨੂੰ **ਪਾਲਿਸੀ** π ਕਿਹਾ ਜਾਂਦਾ ਹੈ - ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ, ਜੋ ਦਿੱਤੇ ਗਏ ਰਾਜ ਦੇ ਜਵਾਬ ਵਿੱਚ ਐਕਸ਼ਨ ਵਾਪਸ ਕਰੇਗਾ। ਅਸੀਂ ਪਾਲਿਸੀ ਨੂੰ ਸੰਭਾਵਿਤ ਵੀ ਮੰਨ ਸਕਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਕਿਸੇ ਵੀ ਰਾਜ *s* ਅਤੇ ਐਕਸ਼ਨ *a* ਲਈ ਇਹ ਸੰਭਾਵਨਾ π(*a*|*s*) ਵਾਪਸ ਕਰੇਗਾ ਕਿ ਸਾਨੂੰ ਰਾਜ *s* ਵਿੱਚ *a* ਲੈਣਾ ਚਾਹੀਦਾ ਹੈ। + +## ਪਾਲਿਸੀ ਗ੍ਰੇਡੀਅੰਟਸ ਐਲਗੋਰਿਥਮ + +ਪਾਲਿਸੀ ਨੂੰ ਮਾਡਲ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਸਪਸ਼ਟ ਤਰੀਕਾ ਇੱਕ ਨਿਊਰਲ ਨੈਟਵਰਕ ਬਣਾਉਣਾ ਹੈ ਜੋ ਰਾਜਾਂ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਲਵੇਗਾ ਅਤੇ ਸੰਬੰਧਿਤ ਐਕਸ਼ਨ (ਜਾਂ ਸਾਰੇ ਐਕਸ਼ਨਾਂ ਦੀਆਂ ਸੰਭਾਵਨਾਵਾਂ) ਵਾਪਸ ਕਰੇਗਾ। ਇੱਕ ਅਰਥ ਵਿੱਚ, ਇਹ ਇੱਕ ਆਮ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਟਾਸਕ ਦੇ ਸਮਾਨ ਹੋਵੇਗਾ, ਇੱਕ ਵੱਡੇ ਅੰਤਰ ਨਾਲ - ਅਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਨਹੀਂ ਜਾਣਦੇ ਕਿ ਹਰ ਸਟੈਪ 'ਤੇ ਸਾਨੂੰ ਕਿਹੜੇ ਐਕਸ਼ਨ ਲੈਣੇ ਚਾਹੀਦੇ ਹਨ। + +ਇੱਥੇ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਉਹ ਸੰਭਾਵਨਾਵਾਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਇਆ ਜਾਵੇ। ਅਸੀਂ **ਕੁਮੂਲਟਿਵ ਰਿਵਾਰਡਸ** ਦਾ ਇੱਕ ਵੈਕਟਰ ਬਣਾਉਂਦੇ ਹਾਂ ਜੋ ਪ੍ਰਯੋਗ ਦੇ ਹਰ ਸਟੈਪ 'ਤੇ ਸਾਡਾ ਕੁੱਲ ਰਿਵਾਰਡ ਦਿਖਾਉਂਦਾ ਹੈ। ਅਸੀਂ **ਰਿਵਾਰਡ ਡਿਸਕਾਊਂਟਿੰਗ** ਨੂੰ ਵੀ ਲਾਗੂ ਕਰਦੇ ਹਾਂ, ਪਹਿਲਾਂ ਦੇ ਰਿਵਾਰਡਸ ਨੂੰ ਕੁਝ ਗੁਣਕ γ=0.99 ਨਾਲ ਗੁਣਾ ਕਰਕੇ, ਪਹਿਲਾਂ ਦੇ ਰਿਵਾਰਡਸ ਦੀ ਭੂਮਿਕਾ ਨੂੰ ਘਟਾਉਣ ਲਈ। ਫਿਰ, ਅਸੀਂ ਉਹਨਾਂ ਸਟੈਪਾਂ ਨੂੰ ਮਜ਼ਬੂਤ ​​ਕਰਦੇ ਹਾਂ ਜੋ ਵੱਡੇ ਰਿਵਾਰਡਸ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। + +> ਪਾਲਿਸੀ ਗ੍ਰੇਡੀਅੰਟ ਐਲਗੋਰਿਥਮ ਬਾਰੇ ਹੋਰ ਸਿੱਖੋ ਅਤੇ ਇਸਨੂੰ ਕਾਰਵਾਈ ਵਿੱਚ [ਉਦਾਹਰਨ ਨੋਟਬੁੱਕ](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) ਵਿੱਚ ਦੇਖੋ। + +## ਐਕਟਰ-ਕ੍ਰਿਟਿਕ ਐਲਗੋਰਿਥਮ + +ਪਾਲਿਸੀ ਗ੍ਰੇਡੀਅੰਟਸ ਪਹੁੰਚ ਦਾ ਇੱਕ ਸੁਧਾਰਤ ਵਰਜਨ **ਐਕਟਰ-ਕ੍ਰਿਟਿਕ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਸਦੇ ਪਿੱਛੇ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਨਿਊਰਲ ਨੈਟਵਰਕ ਨੂੰ ਦੋ ਚੀਜ਼ਾਂ ਵਾਪਸ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾਵੇਗਾ: + +* ਪਾਲਿਸੀ, ਜੋ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜਾ ਐਕਸ਼ਨ ਲੈਣਾ ਹੈ। ਇਸ ਭਾਗ ਨੂੰ **ਐਕਟਰ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। +* ਕੁੱਲ ਰਿਵਾਰਡ ਦਾ ਅੰਦਾਜ਼ਾ ਜੋ ਅਸੀਂ ਇਸ ਰਾਜ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਉਮੀਦ ਕਰ ਸਕਦੇ ਹਾਂ - ਇਸ ਭਾਗ ਨੂੰ **ਕ੍ਰਿਟਿਕ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +ਇੱਕ ਅਰਥ ਵਿੱਚ, ਇਹ ਇੱਕ [GAN](../../4-ComputerVision/10-GANs/README.md) ਦੇ ਸਮਾਨ ਹੈ, ਜਿੱਥੇ ਸਾਡੇ ਕੋਲ ਦੋ ਨੈਟਵਰਕ ਹਨ ਜੋ ਇੱਕ ਦੂਜੇ ਦੇ ਵਿਰੁੱਧ ਟ੍ਰੇਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਐਕਟਰ-ਕ੍ਰਿਟਿਕ ਮਾਡਲ ਵਿੱਚ, ਐਕਟਰ ਉਹ ਐਕਸ਼ਨ ਪ੍ਰਸਤਾਵਿਤ ਕਰਦਾ ਹੈ ਜੋ ਸਾਨੂੰ ਲੈਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਕ੍ਰਿਟਿਕ ਨਤੀਜੇ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਸਾਡਾ ਉਦੇਸ਼ ਉਹਨਾਂ ਨੈਟਵਰਕਾਂ ਨੂੰ ਇਕੱਠੇ ਟ੍ਰੇਨ ਕਰਨਾ ਹੈ। + +ਕਿਉਂਕਿ ਸਾਨੂੰ ਪ੍ਰਯੋਗ ਦੌਰਾਨ ਅਸਲ ਕੁਮੂਲਟਿਵ ਰਿਵਾਰਡਸ ਅਤੇ ਕ੍ਰਿਟਿਕ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ ਨਤੀਜੇ ਦੋਵੇਂ ਪਤਾ ਹਨ, ਇਹ ਅਸਲ ਵਿੱਚ ਉਹਨਾਂ ਦੇ ਵਿਚਕਾਰ ਅੰਤਰ ਨੂੰ ਘਟਾਉਣ ਵਾਲਾ ਲਾਸ ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਆਸਾਨ ਹੈ। ਇਹ ਸਾਨੂੰ **ਕ੍ਰਿਟਿਕ ਲਾਸ** ਦੇਵੇਗਾ। ਅਸੀਂ **ਐਕਟਰ ਲਾਸ** ਨੂੰ ਪਾਲਿਸੀ ਗ੍ਰੇਡੀਅੰਟ ਐਲਗੋਰਿਥਮ ਦੇ ਸਮਾਨ ਪਹੁੰਚ ਵਰਤ ਕੇ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ। + +ਇਹਨਾਂ ਐਲਗੋਰਿਥਮਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਚਲਾਉਣ ਦੇ ਬਾਅਦ, ਅਸੀਂ ਆਪਣੇ CartPole ਤੋਂ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਵਿਹਾਰ ਦੀ ਉਮੀਦ ਕਰ ਸਕਦੇ ਹਾਂ: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ ਅਭਿਆਸ: ਪਾਲਿਸੀ ਗ੍ਰੇਡੀਅੰਟਸ ਅਤੇ ਐਕਟਰ-ਕ੍ਰਿਟਿਕ RL + +ਹੇਠਾਂ ਦਿੱਤੇ ਨੋਟਬੁੱਕਾਂ ਵਿੱਚ ਆਪਣੀ ਸਿੱਖਿਆ ਜਾਰੀ ਰੱਖੋ: + +* [RL in TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL in PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## ਹੋਰ RL ਟਾਸਕ + +ਅੱਜਕਲ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਖੋਜ ਦਾ ਇੱਕ ਤੇਜ਼ੀ ਨਾਲ ਵਧਦਾ ਖੇਤਰ ਹੈ। ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦੇ ਕੁਝ ਦਿਲਚਸਪ ਉਦਾਹਰਨ ਹਨ: + +* ਕੰਪਿਊਟਰ ਨੂੰ **Atari Games** ਖੇਡਣ ਦੀ ਸਿੱਖਿਆ ਦੇਣਾ। ਇਸ ਸਮੱਸਿਆ ਵਿੱਚ ਚੁਣੌਤੀਪੂਰਨ ਹਿੱਸਾ ਇਹ ਹੈ ਕਿ ਸਾਡੇ ਕੋਲ ਸਧਾਰਨ ਰਾਜ ਨਹੀਂ ਹੁੰਦਾ ਜੋ ਇੱਕ ਵੈਕਟਰ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾ ਸਕੇ, ਪਰ ਇੱਕ ਸਕ੍ਰੀਨਸ਼ਾਟ ਹੁੰਦਾ ਹੈ - ਅਤੇ ਸਾਨੂੰ ਇਸ ਸਕ੍ਰੀਨ ਚਿੱਤਰ ਨੂੰ ਇੱਕ ਫੀਚਰ ਵੈਕਟਰ ਵਿੱਚ ਬਦਲਣ ਲਈ ਜਾਂ ਰਿਵਾਰਡ ਜਾਣਕਾਰੀ ਕੱਢਣ ਲਈ CNN ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। Atari ਗੇਮਾਂ Gym ਵਿੱਚ ਉਪਲਬਧ ਹਨ। +* ਕੰਪਿਊਟਰ ਨੂੰ ਬੋਰਡ ਗੇਮਾਂ, ਜਿਵੇਂ ਕਿ Chess ਅਤੇ Go, ਖੇਡਣ ਦੀ ਸਿੱਖਿਆ ਦੇਣਾ। ਹਾਲ ਹੀ ਵਿੱਚ **Alpha Zero** ਵਰਗੇ ਸਟੇਟ-ਆਫ-ਦ-ਆਰਟ ਪ੍ਰੋਗਰਾਮ ਦੋ ਏਜੰਟਾਂ ਦੁਆਰਾ ਇੱਕ ਦੂਜੇ ਦੇ ਵਿਰੁੱਧ ਖੇਡ ਕੇ ਅਤੇ ਹਰ ਸਟੈਪ 'ਤੇ ਸੁਧਾਰ ਕਰਕੇ ਸ਼ੁਰੂ ਤੋਂ ਟ੍ਰੇਨ ਕੀਤੇ ਗਏ। +* ਉਦਯੋਗ ਵਿੱਚ, RL ਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਤੋਂ ਕੰਟਰੋਲ ਸਿਸਟਮ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਸੇਵਾ [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) ਇਸਦੇ ਲਈ ਖਾਸ ਤੌਰ 'ਤੇ ਡਿਜ਼ਾਈਨ ਕੀਤੀ ਗਈ ਹੈ। + +## ਨਿਸਕਰਸ਼ + +ਅਸੀਂ ਹੁਣ ਸਿੱਖ ਚੁੱਕੇ ਹਾਂ ਕਿ ਕੇਵਲ ਇੱਕ ਰਿਵਾਰਡ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਕੇ, ਜੋ ਗੇਮ ਦੀ ਇੱਛਿਤ ਸਥਿਤੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਸੂਝਵਾਨ ਤਰੀਕੇ ਨਾਲ ਖੋਜ ਕਰਨ ਦਾ ਮੌਕਾ ਦੇ ਕੇ, ਏਜੰਟਾਂ ਨੂੰ ਚੰਗੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕਰਨਾ ਕਿਵੇਂ ਹੈ। ਅਸੀਂ ਸਫਲਤਾਪੂਰਵਕ ਦੋ ਐਲਗੋਰਿਥਮਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ ਅਤੇ ਇੱਕ ਸੰਬੰਧਿਤ ਛੋਟੇ ਸਮੇਂ ਵਿੱਚ ਚੰਗਾ ਨਤੀਜਾ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਤੁਹਾਡੇ RL ਵਿੱਚ ਯਾਤਰਾ ਦੀ ਸਿਰਫ ਸ਼ੁਰੂਆਤ ਹੈ, ਅਤੇ ਜੇਕਰ ਤੁਸੀਂ ਹੋਰ ਡੂੰਘਾਈ ਵਿੱਚ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਨਿਸਚਿਤ ਤੌਰ 'ਤੇ ਇੱਕ ਵੱਖਰਾ ਕੋਰਸ ਕਰਨ ਬਾਰੇ ਸੋਚਣਾ ਚਾਹੀਦਾ ਹੈ। + +## 🚀 ਚੁਣੌਤੀ + +'ਹੋਰ RL ਟਾਸਕ' ਭਾਗ ਵਿੱਚ ਦਿੱਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਖੋਜ ਕਰੋ ਅਤੇ ਇੱਕ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ! + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਸਾਡੇ [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) ਵਿੱਚ ਕਲਾਸੀਕਲ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਬਾਰੇ ਹੋਰ ਸਿੱਖੋ। + +ਇਹ ਸ਼ਾਨਦਾਰ ਵੀਡੀਓ [ਇਥੇ](https://www.youtube.com/watch?v=qv6UVOQ0F44) ਦੇਖੋ ਜੋ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਕੰਪਿਊਟਰ Super Mario ਖੇਡਣ ਦੀ ਸਿੱਖਿਆ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹੈ। + +## ਅਸਾਈਨਮੈਂਟ: [Train a Mountain Car](lab/README.md) + +ਤੁਹਾਡਾ ਉਦੇਸ਼ ਇਸ ਅਸਾਈਨਮੈਂਟ ਦੌਰਾਨ ਇੱਕ ਵੱਖਰੇ Gym ਇਨਵਾਇਰਮੈਂਟ - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ ਹੋਵੇਗਾ। + +**ਅਸਵੀਕਾਰਨ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਜੋ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/6-Other/22-DeepRL/lab/README.md b/translations/pa/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..671b97e8 --- /dev/null +++ b/translations/pa/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## ਪਰਿਵਰਤਨਸ਼ੀਲ + +ਮਾਊਂਟੇਨ ਕਾਰ ਵਾਤਾਵਰਣ ਵਿੱਚ ਇੱਕ ਕਾਰ ਇੱਕ ਘਾਟੀ ਵਿੱਚ ਫਸੀ ਹੋਈ ਹੈ। ਤੁਹਾਡਾ ਮਕਸਦ ਘਾਟੀ ਤੋਂ ਬਾਹਰ ਛਾਲ ਮਾਰ ਕੇ ਝੰਡੇ ਤੱਕ ਪਹੁੰਚਣਾ ਹੈ। ਤੁਸੀਂ ਜੋ ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦੇ ਹੋ ਉਹ ਹਨ: ਖੱਬੇ ਵੱਲ ਤੇਜ਼ੀ ਨਾਲ ਜਾਣਾ, ਸੱਜੇ ਵੱਲ ਤੇਜ਼ੀ ਨਾਲ ਜਾਣਾ, ਜਾਂ ਕੁਝ ਨਾ ਕਰਨਾ। ਤੁਸੀਂ ਕਾਰ ਦੀ x-ਅਕਸ ਦੇ ਨਾਲ ਸਥਿਤੀ ਅਤੇ ਗਤੀ ਦਾ ਅਵਲੋਕਨ ਕਰ ਸਕਦੇ ਹੋ। + +## ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ + +ਲੈਬ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) ਖੋਲ੍ਹੋ। + +## ਸਿੱਖਣ ਵਾਲੀ ਗੱਲ + +ਤੁਹਾਨੂੰ ਇਸ ਲੈਬ ਦੌਰਾਨ ਇਹ ਸਿੱਖਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਨਵੇਂ ਵਾਤਾਵਰਣ ਲਈ RL ਐਲਗੋਰਿਥਮ ਨੂੰ ਅਪਨਾਉਣਾ ਅਕਸਰ ਕਾਫ਼ੀ ਸਿੱਧਾ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ OpenAI Gym ਦੇ ਸਾਰੇ ਵਾਤਾਵਰਣਾਂ ਲਈ ਇੱਕੋ ਜਿਹਾ ਇੰਟਰਫੇਸ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਐਲਗੋਰਿਥਮ ਵਾਤਾਵਰਣ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦੇ। ਤੁਸੀਂ ਪਾਇਥਨ ਕੋਡ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੁਬਾਰਾ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ ਸਕਦੇ ਹੋ ਕਿ ਕੋਈ ਵੀ ਵਾਤਾਵਰਣ RL ਐਲਗੋਰਿਥਮ ਨੂੰ ਇੱਕ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕੀਤਾ ਜਾ ਸਕੇ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/6-Other/23-MultiagentSystems/README.md b/translations/pa/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..d0f95399 --- /dev/null +++ b/translations/pa/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,106 @@ + +# ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮ + +ਬੁੱਧਿਮਾਨੀ ਹਾਸਲ ਕਰਨ ਦੇ ਸੰਭਾਵਿਤ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਜਿਸਨੂੰ **ਉਤਪੰਨ** (ਜਾਂ **ਸਹਿਯੋਗੀ**) ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਆਧਾਰਿਤ ਹੈ ਕਿ ਕਈ ਸਧਾਰਣ ਏਜੰਟਾਂ ਦੇ ਮਿਲੇ-ਜੁਲੇ ਵਿਵਹਾਰ ਨਾਲ ਪੂਰੇ ਸਿਸਟਮ ਦਾ ਕੁੱਲ ਵਿਵਹਾਰ ਜ਼ਿਆਦਾ ਜਟਿਲ (ਜਾਂ ਬੁੱਧਿਮਾਨ) ਹੋ ਸਕਦਾ ਹੈ। ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ, ਇਹ [ਸੰਯੁਕਤ ਬੁੱਧਿਮਾਨੀ](https://en.wikipedia.org/wiki/Collective_intelligence), [ਉਤਪੰਨਵਾਦ](https://en.wikipedia.org/wiki/Global_brain) ਅਤੇ [ਵਿਕਾਸੀ ਸਾਇਬਰਨੈਟਿਕਸ](https://en.wikipedia.org/wiki/Global_brain) ਦੇ ਸਿਧਾਂਤਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹੈ, ਜੋ ਕਹਿੰਦੇ ਹਨ ਕਿ ਉੱਚ-ਪੱਧਰੀ ਸਿਸਟਮ ਨੂੰ ਨੀਵੇਂ ਪੱਧਰ ਦੇ ਸਿਸਟਮਾਂ ਨੂੰ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਜੋੜਨ 'ਤੇ ਕੁਝ ਵਾਧੂ ਮੁੱਲ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ (ਜਿਸਨੂੰ *ਮੈਟਾਸਿਸਟਮ ਟ੍ਰਾਂਜ਼ੀਸ਼ਨ ਦਾ ਸਿਧਾਂਤ* ਕਿਹਾ ਜਾਂਦਾ ਹੈ)। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮਾਂ** ਦੀ ਦਿਸ਼ਾ 1990 ਦੇ ਦਹਾਕੇ ਵਿੱਚ ਇੰਟਰਨੈਟ ਅਤੇ ਵੰਡੇ ਹੋਏ ਸਿਸਟਮਾਂ ਦੇ ਵਾਧੇ ਦੇ ਜਵਾਬ ਵਜੋਂ AI ਵਿੱਚ ਉਭਰੀ। ਕਲਾਸਿਕ AI ਦੀਆਂ ਕਿਤਾਬਾਂ ਵਿੱਚੋਂ ਇੱਕ, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮਾਂ ਦੇ ਨਜ਼ਰੀਏ ਤੋਂ ਕਲਾਸਿਕ AI ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦੀ ਹੈ। + +ਮਲਟੀ-ਏਜੰਟ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਦਾ ਕੇਂਦਰ **ਏਜੰਟ** ਦੀ ਧਾਰਣਾ ਹੈ - ਇੱਕ ਐਕਾਈ ਜੋ ਕਿਸੇ **ਵਾਤਾਵਰਣ** ਵਿੱਚ ਰਹਿੰਦੀ ਹੈ, ਜਿਸਨੂੰ ਇਹ ਸਮਝ ਸਕਦੀ ਹੈ ਅਤੇ ਇਸ 'ਤੇ ਕਾਰਵਾਈ ਕਰ ਸਕਦੀ ਹੈ। ਇਹ ਇੱਕ ਬਹੁਤ ਹੀ ਵਿਸ਼ਾਲ ਪਰਿਭਾਸ਼ਾ ਹੈ, ਅਤੇ ਇਸ ਵਿੱਚ ਕਈ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਅਤੇ ਵਰਗੀਕਰਨਾਂ ਦੇ ਏਜੰਟ ਹੋ ਸਕਦੇ ਹਨ: + +* ਉਨ੍ਹਾਂ ਦੀ ਤਰਕ ਕਰਨ ਦੀ ਯੋਗਤਾ ਦੇ ਅਧਾਰ 'ਤੇ: + - **ਪ੍ਰਤੀਕ੍ਰਿਆਸ਼ੀਲ** ਏਜੰਟ ਆਮ ਤੌਰ 'ਤੇ ਸਧਾਰਣ ਬੇਨਤੀ-ਜਵਾਬ ਕਿਸਮ ਦੇ ਵਿਵਹਾਰ ਵਾਲੇ ਹੁੰਦੇ ਹਨ। + - **ਵਿਚਾਰਸ਼ੀਲ** ਏਜੰਟ ਕਿਸੇ ਤਰ੍ਹਾਂ ਦੀ ਤਰਕਸ਼ੀਲ ਸੋਚ ਅਤੇ/ਜਾਂ ਯੋਜਨਾ ਬਣਾਉਣ ਦੀ ਸਮਰੱਥਾ ਵਰਤਦੇ ਹਨ। +* ਜਿੱਥੇ ਏਜੰਟ ਆਪਣਾ ਕੋਡ ਚਲਾਉਂਦੇ ਹਨ: + - **ਸਥਿਰ** ਏਜੰਟ ਇੱਕ ਸਮਰਪਿਤ ਨੈੱਟਵਰਕ ਨੋਡ 'ਤੇ ਕੰਮ ਕਰਦੇ ਹਨ। + - **ਮੋਬਾਈਲ** ਏਜੰਟ ਆਪਣੇ ਕੋਡ ਨੂੰ ਨੈੱਟਵਰਕ ਨੋਡਾਂ ਵਿੱਚ ਹਿਲਾ ਸਕਦੇ ਹਨ। +* ਉਨ੍ਹਾਂ ਦੇ ਵਿਵਹਾਰ ਦੇ ਅਧਾਰ 'ਤੇ: + - **ਨਿਰਜੀਵ ਏਜੰਟ** ਦੇ ਕੋਈ ਖਾਸ ਲਕਸ਼ ਨਹੀਂ ਹੁੰਦੇ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਏਜੰਟ ਬਾਹਰੀ ਉਤਪ੍ਰੇਰਕਾਂ 'ਤੇ ਪ੍ਰਤੀਕ੍ਰਿਆ ਕਰ ਸਕਦੇ ਹਨ, ਪਰ ਖੁਦ ਕੋਈ ਕਾਰਵਾਈ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰਦੇ। + - **ਸਕ੍ਰਿਆ ਏਜੰਟ** ਦੇ ਕੁਝ ਲਕਸ਼ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਦੀ ਇਹ ਪਾਲਣਾ ਕਰਦੇ ਹਨ। + - **ਸੰਵੇਦਨਸ਼ੀਲ ਏਜੰਟ** ਵਿੱਚ ਜਟਿਲ ਯੋਜਨਾ ਅਤੇ ਤਰਕ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। + +ਅੱਜਕੱਲ੍ਹ ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮ ਕਈ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਵਰਤੇ ਜਾਂਦੇ ਹਨ: + +* ਖੇਡਾਂ ਵਿੱਚ, ਕਈ ਗੈਰ-ਖਿਡਾਰੀ ਪਾਤਰ ਕਿਸੇ ਤਰ੍ਹਾਂ ਦੀ AI ਵਰਤਦੇ ਹਨ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਬੁੱਧਿਮਾਨ ਏਜੰਟ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ। +* ਵੀਡੀਓ ਉਤਪਾਦਨ ਵਿੱਚ, ਭੀੜਾਂ ਵਾਲੇ ਜਟਿਲ 3D ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਰੇਂਡਰ ਕਰਨ ਲਈ ਆਮ ਤੌਰ 'ਤੇ ਮਲਟੀ-ਏਜੰਟ ਸਿਮੂਲੇਸ਼ਨ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। +* ਸਿਸਟਮ ਮਾਡਲਿੰਗ ਵਿੱਚ, ਮਲਟੀ-ਏਜੰਟ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਨੂੰ ਇੱਕ ਜਟਿਲ ਮਾਡਲ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸਿਮੂਲੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਮਲਟੀ-ਏਜੰਟ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਨੂੰ ਦੁਨੀਆ ਭਰ ਵਿੱਚ COVID-19 ਬਿਮਾਰੀ ਦੇ ਫੈਲਾਅ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਲਈ ਸਫਲਤਾਪੂਰਵਕ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਇਸੇ ਤਰ੍ਹਾਂ ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਨੂੰ ਸ਼ਹਿਰ ਵਿੱਚ ਟ੍ਰੈਫਿਕ ਨੂੰ ਮਾਡਲ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਦੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਟ੍ਰੈਫਿਕ ਨਿਯਮਾਂ ਵਿੱਚ ਬਦਲਾਅ 'ਤੇ ਇਹ ਕਿਵੇਂ ਪ੍ਰਤੀਕ੍ਰਿਆ ਕਰਦਾ ਹੈ। +* ਜਟਿਲ ਆਟੋਮੇਸ਼ਨ ਸਿਸਟਮਾਂ ਵਿੱਚ, ਹਰ ਡਿਵਾਈਸ ਇੱਕ ਸਵਤੰਤਰ ਏਜੰਟ ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ, ਜੋ ਪੂਰੇ ਸਿਸਟਮ ਨੂੰ ਘੱਟ ਮੋਨੋਲਿਥਿਕ ਅਤੇ ਜ਼ਿਆਦਾ ਮਜ਼ਬੂਤ ਬਣਾਉਂਦਾ ਹੈ। + +ਅਸੀਂ ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮਾਂ ਵਿੱਚ ਗਹਿਰਾਈ ਵਿੱਚ ਜਾਣ ਲਈ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਮਾਂ ਨਹੀਂ ਲਗਾਵਾਂਗੇ, ਪਰ **ਮਲਟੀ-ਏਜੰਟ ਮਾਡਲਿੰਗ** ਦੇ ਇੱਕ ਉਦਾਹਰਣ 'ਤੇ ਵਿਚਾਰ ਕਰਾਂਗੇ। + +## ਨੈਟਲੋਗੋ + +[ਨੈਟਲੋਗੋ](https://ccl.northwestern.edu/netlogo/) ਇੱਕ ਮਲਟੀ-ਏਜੰਟ ਮਾਡਲਿੰਗ ਵਾਤਾਵਰਣ ਹੈ ਜੋ [ਲੋਗੋ](https://en.wikipedia.org/wiki/Logo_(programming_language)) ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੇ ਸੰਸ਼ੋਧਿਤ ਸੰਸਕਰਣ 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਭਾਸ਼ਾ ਬੱਚਿਆਂ ਨੂੰ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਸੰਕਲਪ ਸਿਖਾਉਣ ਲਈ ਵਿਕਸਿਤ ਕੀਤੀ ਗਈ ਸੀ, ਅਤੇ ਇਹ ਤੁਹਾਨੂੰ **ਕੱਛੂਏ** ਨਾਮਕ ਇੱਕ ਏਜੰਟ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ, ਜੋ ਹਿਲ ਸਕਦਾ ਹੈ ਅਤੇ ਪਿੱਛੇ ਇੱਕ ਨਿਸ਼ਾਨ ਛੱਡ ਸਕਦਾ ਹੈ। ਇਹ ਜਟਿਲ ਜਾਮਿਤੀ ਆਕਰਤੀਆਂ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਏਜੰਟ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸਮਝਣ ਦਾ ਬਹੁਤ ਹੀ ਦ੍ਰਿਸ਼ਮਾਨ ਤਰੀਕਾ ਹੈ। + +ਨੈਟਲੋਗੋ ਵਿੱਚ, ਅਸੀਂ `create-turtles` ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਈ ਕੱਛੂਏ ਬਣਾ ਸਕਦੇ ਹਾਂ। ਅਸੀਂ ਫਿਰ ਸਾਰੇ ਕੱਛੂਆਂ ਨੂੰ ਕੁਝ ਕਾਰਵਾਈਆਂ ਕਰਨ ਲਈ ਕਹਿ ਸਕਦੇ ਹਾਂ (ਹੇਠਾਂ ਦਿੱਤੇ ਉਦਾਹਰਣ ਵਿੱਚ - 10 ਪੌਇੰਟ ਅੱਗੇ ਵਧੋ): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +ਜ਼ਾਹਰ ਹੈ, ਜਦੋਂ ਸਾਰੇ ਕੱਛੂਏ ਇੱਕੋ ਜਿਹੀ ਚੀਜ਼ ਕਰਦੇ ਹਨ ਤਾਂ ਇਹ ਦਿਲਚਸਪ ਨਹੀਂ ਹੁੰਦਾ, ਇਸ ਲਈ ਅਸੀਂ ਕੁਝ ਕੱਛੂਆਂ ਨੂੰ `ask` ਕਰ ਸਕਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਉਹ ਜੋ ਕਿਸੇ ਖਾਸ ਬਿੰਦੂ ਦੇ ਨੇੜੇ ਹਨ। ਅਸੀਂ `breed [cats cat]` ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੱਖ-ਵੱਖ *ਬ੍ਰੀਡਾਂ* ਦੇ ਕੱਛੂਏ ਵੀ ਬਣਾ ਸਕਦੇ ਹਾਂ। ਇੱਥੇ `cat` ਇੱਕ ਬ੍ਰੀਡ ਦਾ ਨਾਮ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਇਕਵਚਨ ਅਤੇ ਬਹੁਵਚਨ ਦੋਵੇਂ ਸ਼ਬਦਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਕਿਉਂਕਿ ਵੱਖ-ਵੱਖ ਕਮਾਂਡ ਸਪਸ਼ਟਤਾ ਲਈ ਵੱਖ-ਵੱਖ ਰੂਪਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ। + +> ✅ ਅਸੀਂ ਨੈਟਲੋਗੋ ਭਾਸ਼ਾ ਨੂੰ ਸਿੱਖਣ ਵਿੱਚ ਨਹੀਂ ਜਾਵਾਂਗੇ - ਜੇ ਤੁਸੀਂ ਹੋਰ ਸਿੱਖਣ ਵਿੱਚ ਰੁਚੀ ਰੱਖਦੇ ਹੋ ਤਾਂ ਤੁਸੀਂ ਸ਼ਾਨਦਾਰ [ਬਿਗਿਨਰਜ਼ ਇੰਟਰਐਕਟਿਵ ਨੈਟਲੋਗੋ ਡਿਕਸ਼ਨਰੀ](https://ccl.northwestern.edu/netlogo/bind/) ਸਰੋਤ 'ਤੇ ਜਾ ਸਕਦੇ ਹੋ। + +ਤੁਸੀਂ ਨੈਟਲੋਗੋ ਨੂੰ [ਡਾਊਨਲੋਡ](https://ccl.northwestern.edu/netlogo/download.shtml) ਅਤੇ ਇੰਸਟਾਲ ਕਰਕੇ ਇਸਨੂੰ ਅਜ਼ਮਾ ਸਕਦੇ ਹੋ। + +### ਮਾਡਲਾਂ ਦੀ ਲਾਇਬ੍ਰੇਰੀ + +ਨੈਟਲੋਗੋ ਦੀ ਇੱਕ ਵਧੀਆ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਸ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਮਾਡਲਾਂ ਦੀ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਸ਼ਾਮਲ ਹੈ, ਜਿਸਨੂੰ ਤੁਸੀਂ ਅਜ਼ਮਾ ਸਕਦੇ ਹੋ। **File → Models Library** 'ਤੇ ਜਾਓ, ਅਤੇ ਤੁਹਾਡੇ ਕੋਲ ਮਾਡਲਾਂ ਦੀਆਂ ਕਈ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚੋਂ ਚੁਣਨ ਲਈ ਹੈ। + +ਨੈਟਲੋਗੋ ਮਾਡਲਾਂ ਦੀ ਲਾਇਬ੍ਰੇਰੀ + +> ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ ਦੁਆਰਾ ਮਾਡਲ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਸਕ੍ਰੀਨਸ਼ਾਟ + +ਤੁਸੀਂ ਮਾਡਲਾਂ ਵਿੱਚੋਂ ਇੱਕ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ, ਉਦਾਹਰਣ ਲਈ **Biology → Flocking**। + +### ਮੁੱਖ ਸਿਧਾਂਤ + +ਮਾਡਲ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਨੈਟਲੋਗੋ ਦੇ ਮੁੱਖ ਸਕ੍ਰੀਨ 'ਤੇ ਲਿਆਂਦੇ ਜਾਂਦੇ ਹੋ। ਇੱਥੇ ਇੱਕ ਨਮੂਨਾ ਮਾਡਲ ਹੈ ਜੋ ਘਾਸ ਦੇ ਸੀਮਿਤ ਸਰੋਤਾਂ ਦੇ ਨਾਲ ਭੇੜੀਆਂ ਅਤੇ ਭੇੜਾਂ ਦੀ ਆਬਾਦੀ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ। + +![ਨੈਟਲੋਗੋ ਮੁੱਖ ਸਕ੍ਰੀਨ](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pa.png) + +> ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ ਦੁਆਰਾ ਸਕ੍ਰੀਨਸ਼ਾਟ + +ਇਸ ਸਕ੍ਰੀਨ 'ਤੇ, ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ: + +* **ਇੰਟਰਫੇਸ** ਭਾਗ ਜਿਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ: + - ਮੁੱਖ ਖੇਤਰ, ਜਿੱਥੇ ਸਾਰੇ ਏਜੰਟ ਰਹਿੰਦੇ ਹਨ + - ਵੱਖ-ਵੱਖ ਨਿਯੰਤਰਣ: ਬਟਨ, ਸਲਾਈਡਰ, ਆਦਿ + - ਗ੍ਰਾਫ, ਜਿਨ੍ਹਾਂ ਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਸਿਮੂਲੇਸ਼ਨ ਦੇ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਕਰ ਸਕਦੇ ਹੋ +* **ਕੋਡ** ਟੈਬ ਜਿਸ ਵਿੱਚ ਸੰਪਾਦਕ ਸ਼ਾਮਲ ਹੈ, ਜਿੱਥੇ ਤੁਸੀਂ ਨੈਟਲੋਗੋ ਪ੍ਰੋਗਰਾਮ ਲਿਖ ਸਕਦੇ ਹੋ + +ਜਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਇੰਟਰਫੇਸ ਵਿੱਚ ਇੱਕ **ਸੈਟਅੱਪ** ਬਟਨ ਹੁੰਦਾ ਹੈ, ਜੋ ਸਿਮੂਲੇਸ਼ਨ ਦੀ ਸਥਿਤੀ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, ਅਤੇ ਇੱਕ **ਗੋ** ਬਟਨ ਹੁੰਦਾ ਹੈ ਜੋ ਕਾਰਜਨਵਿਤੀ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ। ਇਹ ਸਬੰਧਤ ਹੈਂਡਲਰਾਂ ਦੁਆਰਾ ਸੰਭਾਲੇ ਜਾਂਦੇ ਹਨ ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਦੇਖਦੇ ਹਨ: + +``` +to go [ +... +] +``` + +ਨੈਟਲੋਗੋ ਦੀ ਦੁਨੀਆ ਹੇਠਾਂ ਦਿੱਤੇ ਵਸਤੂਆਂ 'ਤੇ ਆਧਾਰਿਤ ਹੈ: + +* **ਏਜੰਟ** (ਕੱਛੂਏ) ਜੋ ਖੇਤਰ ਵਿੱਚ ਹਿਲ ਸਕਦੇ ਹਨ ਅਤੇ ਕੁਝ ਕਰ ਸਕਦੇ ਹਨ। ਤੁਸੀਂ `ask turtles [...]` ਸਿੰਟੈਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਏਜੰਟਾਂ ਨੂੰ ਹੁਕਮ ਦੇ ਸਕਦੇ ਹੋ, ਅਤੇ ਬ੍ਰੈਕਟਾਂ ਵਿੱਚ ਕੋਡ ਸਾਰੇ ਏਜੰਟਾਂ ਦੁਆਰਾ *ਕੱਛੂਏ ਮੋਡ* ਵਿੱਚ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। +* **ਪੈਚ** ਖੇਤਰ ਦੇ ਵਰਗ ਆਕਾਰ ਦੇ ਖੇਤਰ ਹਨ, ਜਿਨ੍ਹਾਂ 'ਤੇ ਏਜੰਟ ਰਹਿੰਦੇ ਹਨ। ਤੁਸੀਂ ਇੱਕੋ ਪੈਚ 'ਤੇ ਸਾਰੇ ਏਜੰਟਾਂ ਨੂੰ ਸਬੰਧਿਤ ਕਰ ਸਕਦੇ ਹੋ, ਜਾਂ ਤੁਸੀਂ ਪੈਚ ਦੇ ਰੰਗ ਅਤੇ ਕੁਝ ਹੋਰ ਗੁਣ ਬਦਲ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਪੈਚਾਂ ਨੂੰ ਕੁਝ ਕਰਨ ਲਈ `ask patches` ਵੀ ਕਰ ਸਕਦੇ ਹੋ। +* **ਨਿਗਰਾਨੀ ਕਰਨ ਵਾਲਾ** ਇੱਕ ਵਿਲੱਖਣ ਏਜੰਟ ਹੈ ਜੋ ਦੁਨੀਆ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਦਾ ਹੈ। ਸਾਰੇ ਬਟਨ ਹੈਂਡਲਰ *ਨਿਗਰਾਨੀ ਮੋਡ* ਵਿੱਚ ਚਲਾਏ ਜਾਂਦੇ ਹਨ। + +> ✅ ਮਲਟੀ-ਏਜੰਟ ਵਾਤਾਵਰਣ ਦੀ ਖੂਬਸੂਰਤੀ ਇਹ ਹੈ ਕਿ ਕੱਛੂਏ ਮੋਡ ਜਾਂ ਪੈਚ ਮੋਡ ਵਿੱਚ ਚਲਣ ਵਾਲਾ ਕੋਡ ਸਾਰੇ ਏਜੰਟਾਂ ਦੁਆਰਾ ਇੱਕੋ ਸਮੇਂ ਵਿੱਚ ਸਮਾਂਤਰ ਤੌਰ 'ਤੇ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਥੋੜ੍ਹਾ ਜਿਹਾ ਕੋਡ ਲਿਖ ਕੇ ਅਤੇ ਵਿਅਕਤੀਗਤ ਏਜੰਟ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰੋਗਰਾਮ ਕਰਕੇ, ਤੁਸੀਂ ਸਿਮੂਲੇਸ਼ਨ ਸਿਸਟਮ ਦੇ ਕੁੱਲ ਵਿਵਹਾਰ ਨੂੰ ਜਟਿਲ ਬਣਾ ਸਕਦੇ ਹੋ। + +### ਫਲਾਕਿੰਗ + +ਮਲਟੀ-ਏਜੰਟ ਵਿਵਹਾਰ ਦੇ ਇੱਕ ਉਦਾਹਰਣ ਵਜੋਂ, ਆਓ **[ਫਲਾਕਿੰਗ](https://en.wikipedia.org/wiki/Flocking_(behavior))** 'ਤੇ ਵਿਚਾਰ ਕਰੀਏ। + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/pa/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..eae6f37d --- /dev/null +++ b/translations/pa/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# ਨੈਟਲੋਗੋ ਅਸਾਈਨਮੈਂਟ + +ਨੈਟਲੋਗੋ ਦੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਇੱਕ ਮਾਡਲ ਲਓ ਅਤੇ ਇਸਨੂੰ ਹਕੀਕਤ ਵਿੱਚ ਹੋਣ ਵਾਲੀ ਸਥਿਤੀ ਨੂੰ ਜਿੰਨਾ ਹੋ ਸਕੇ ਨਜ਼ਦੀਕੀ ਤਰੀਕੇ ਨਾਲ ਨਕਲ ਕਰਨ ਲਈ ਵਰਤੋ। ਇੱਕ ਵਧੀਆ ਉਦਾਹਰਨ ਇਹ ਹੋਵੇਗੀ ਕਿ ਵਾਇਰਸ ਮਾਡਲ ਨੂੰ ਆਲਟਰਨੇਟਿਵ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨਜ਼ ਫੋਲਡਰ ਵਿੱਚ ਟਵੀਕ ਕਰਕੇ ਦਿਖਾਇਆ ਜਾਵੇ ਕਿ ਇਹ COVID-19 ਦੇ ਫੈਲਾਅ ਨੂੰ ਮਾਡਲ ਕਰਨ ਲਈ ਕਿਵੇਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਇੱਕ ਮਾਡਲ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ ਜੋ ਹਕੀਕਤ ਵਿੱਚ ਵਾਇਰਲ ਫੈਲਾਅ ਦੀ ਨਕਲ ਕਰ ਸਕੇ? + +ਆਪਣਾ ਕੰਮ ਦਿਖਾਉਣ ਲਈ ਇੱਕ ਕਾਪੀ ਸੇਵ ਕਰੋ ਅਤੇ ਇੱਕ ਵੀਡੀਓ ਡੈਮੋ ਬਣਾਓ ਜਿਸ ਵਿੱਚ ਸਮਝਾਇਆ ਜਾਵੇ ਕਿ ਮਾਡਲ ਹਕੀਕਤ ਵਿੱਚ ਹੋਣ ਵਾਲੀ ਸਥਿਤੀ ਨਾਲ ਕਿਵੇਂ ਜੁੜਿਆ ਹੋਇਆ ਹੈ। + +**ਅਸਵੀਕਾਰਨਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਆਟੋਮੈਟਿਕ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/7-Ethics/README.md b/translations/pa/lessons/7-Ethics/README.md new file mode 100644 index 00000000..0bbf1d97 --- /dev/null +++ b/translations/pa/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# ਨੈਤਿਕ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰ AI + +ਤੁਸੀਂ ਇਹ ਕੋਰਸ ਲਗਭਗ ਪੂਰਾ ਕਰ ਲਿਆ ਹੈ, ਅਤੇ ਮੈਨੂੰ ਉਮੀਦ ਹੈ ਕਿ ਹੁਣ ਤੱਕ ਤੁਹਾਨੂੰ ਸਪਸ਼ਟ ਹੋ ਗਿਆ ਹੋਵੇਗਾ ਕਿ AI ਕਈ ਗਣਿਤਕ ਵਿਧੀਆਂ 'ਤੇ ਆਧਾਰਿਤ ਹੈ ਜੋ ਸਾਨੂੰ ਡਾਟਾ ਵਿੱਚ ਸਬੰਧ ਲੱਭਣ ਅਤੇ ਮਾਡਲਾਂ ਨੂੰ ਮਨੁੱਖੀ ਵਿਵਹਾਰ ਦੇ ਕੁਝ ਪੱਖਾਂ ਨੂੰ ਦੁਹਰਾਉਣ ਲਈ ਸਿਖਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ। ਇਸ ਸਮੇਂ, ਅਸੀਂ AI ਨੂੰ ਡਾਟਾ ਵਿੱਚੋਂ ਪੈਟਰਨ ਕੱਢਣ ਅਤੇ ਨਵੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਇੱਕ ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸੰਦ ਮੰਨਦੇ ਹਾਂ। + +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +ਹਾਲਾਂਕਿ, ਵਿਗਿਆਨਕ ਕਲਪਨਾ ਵਿੱਚ ਅਸੀਂ ਅਕਸਰ ਕਹਾਣੀਆਂ ਵੇਖਦੇ ਹਾਂ ਜਿੱਥੇ AI ਮਨੁੱਖਤਾ ਲਈ ਖਤਰਾ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਕਹਾਣੀਆਂ ਕਿਸੇ ਕਿਸਮ ਦੀ AI ਬਗਾਵਤ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਕੇਂਦਰਿਤ ਹੁੰਦੀਆਂ ਹਨ, ਜਦੋਂ AI ਮਨੁੱਖਾਂ ਦਾ ਮੁਕਾਬਲਾ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕਰਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ AI ਵਿੱਚ ਕਿਸੇ ਕਿਸਮ ਦੀ ਭਾਵਨਾ ਹੈ ਜਾਂ ਇਹ ਆਪਣੇ ਡਿਵੈਲਪਰਾਂ ਦੁਆਰਾ ਅਣਦੇਖੇ ਫੈਸਲੇ ਲੈ ਸਕਦਾ ਹੈ। + +ਇਸ ਕੋਰਸ ਵਿੱਚ ਸਿੱਖੀ ਗਈ AI ਕਿਸਮ ਸਿਰਫ਼ ਵੱਡੇ ਮੈਟ੍ਰਿਕਸ ਗਣਿਤ ਤੋਂ ਵੱਧ ਕੁਝ ਨਹੀਂ ਹੈ। ਇਹ ਸਾਡੇ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਨ ਲਈ ਇੱਕ ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸੰਦ ਹੈ, ਅਤੇ ਕਿਸੇ ਹੋਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸੰਦ ਵਾਂਗ - ਇਸਦਾ ਸਹੀ ਅਤੇ ਗਲਤ ਦੋਹਾਂ ਤਰੀਕਿਆਂ ਨਾਲ ਇਸਤੇਮਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਸਦਾ *ਗਲਤ ਇਸਤੇਮਾਲ* ਵੀ ਹੋ ਸਕਦਾ ਹੈ। + +## ਜ਼ਿੰਮੇਵਾਰ AI ਦੇ ਸਿਧਾਂਤ + +AI ਦੇ ਇਸ ਅਣਜਾਣੇ ਜਾਂ ਜਾਨਬੁੱਝ ਕੇ ਗਲਤ ਇਸਤੇਮਾਲ ਤੋਂ ਬਚਣ ਲਈ, ਮਾਈਕਰੋਸਾਫਟ ਨੇ ਮਹੱਤਵਪੂਰਨ [ਜ਼ਿੰਮੇਵਾਰ AI ਦੇ ਸਿਧਾਂਤ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) ਦਿੱਤੇ ਹਨ। ਇਹ ਸਿਧਾਂਤ ਹੇਠਾਂ ਦਿੱਤੇ ਗਏ ਵਿਚਾਰਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹਨ: + +* **ਨਿਆਂਸੰਗਤਾ (Fairness)** ਇਹ *ਮਾਡਲ ਪੱਖਪਾਤ* ਦੀ ਮਹੱਤਵਪੂਰਨ ਸਮੱਸਿਆ ਨਾਲ ਜੁੜੀ ਹੋਈ ਹੈ, ਜੋ ਕਿ ਪੱਖਪਾਤੀ ਡਾਟਾ ਨੂੰ ਸਿਖਲਾਈ ਲਈ ਵਰਤਣ ਨਾਲ ਹੋ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਅਸੀਂ ਕਿਸੇ ਵਿਅਕਤੀ ਲਈ ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਰ ਦੀ ਨੌਕਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਸੰਭਾਵਨਾ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਮਾਡਲ ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਪੁਰਸ਼ਾਂ ਨੂੰ ਵਧੇਰੇ ਤਰਜੀਹ ਦੇਵੇਗਾ - ਸਿਰਫ਼ ਇਸ ਲਈ ਕਿ ਸਿਖਲਾਈ ਡਾਟਾਸੈੱਟ ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਪੁਰਸ਼ ਦਰਸ਼ਕਾਂ ਵੱਲ ਪੱਖਪਾਤੀ ਸੀ। ਸਾਨੂੰ ਸਿਖਲਾਈ ਡਾਟੇ ਨੂੰ ਧਿਆਨ ਨਾਲ ਸੰਤੁਲਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਮਾਡਲ ਦੀ ਜਾਂਚ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਤਾਂ ਜੋ ਪੱਖਪਾਤ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕੇ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ ਮਾਡਲ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦਾ ਹੈ। +* **ਭਰੋਸੇਯੋਗਤਾ ਅਤੇ ਸੁਰੱਖਿਆ (Reliability and Safety)**। ਆਪਣੇ ਸੁਭਾਵ ਦੇ ਕਾਰਨ, AI ਮਾਡਲ ਗਲਤੀਆਂ ਕਰ ਸਕਦੇ ਹਨ। ਇੱਕ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਸੰਭਾਵਨਾਵਾਂ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਅਤੇ ਜਦੋਂ ਅਸੀਂ ਫੈਸਲੇ ਲੈਂਦੇ ਹਾਂ ਤਾਂ ਸਾਨੂੰ ਇਸਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ। ਹਰ ਮਾਡਲ ਦੀ ਕੁਝ ਸਹੀਤਾ ਅਤੇ ਸਦਨਸ਼ੀਲਤਾ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਇਹ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਜੋ ਗਲਤ ਸਲਾਹ ਦੇ ਕਾਰਨ ਹੋ ਸਕਣ ਵਾਲੇ ਨੁਕਸਾਨ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕੇ। +* **ਗੋਪਨੀਯਤਾ ਅਤੇ ਸੁਰੱਖਿਆ (Privacy and Security)** ਦਾ AI-ਵਿਸ਼ੇਸ਼ ਪ੍ਰਭਾਵ ਹੁੰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਅਸੀਂ ਕਿਸੇ ਮਾਡਲ ਨੂੰ ਸਿਖਲਾਈ ਦੇਣ ਲਈ ਕੁਝ ਡਾਟਾ ਵਰਤਦੇ ਹਾਂ, ਤਾਂ ਇਹ ਡਾਟਾ ਕਿਸੇ ਤਰ੍ਹਾਂ ਮਾਡਲ ਵਿੱਚ "ਇੰਟਿਗ੍ਰੇਟ" ਹੋ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਪਾਸੇ, ਇਹ ਸੁਰੱਖਿਆ ਅਤੇ ਗੋਪਨੀਯਤਾ ਵਧਾਉਂਦਾ ਹੈ, ਦੂਜੇ ਪਾਸੇ - ਸਾਨੂੰ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ ਕਿ ਮਾਡਲ ਨੂੰ ਕਿਹੜੇ ਡਾਟੇ 'ਤੇ ਸਿਖਲਾਈ ਦਿੱਤੀ ਗਈ ਸੀ। +* **ਸਮਾਵੇਸ਼ਤਾ (Inclusiveness)** ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ AI ਨੂੰ ਲੋਕਾਂ ਦੀ ਜਗ੍ਹਾ ਲੈਣ ਲਈ ਨਹੀਂ ਬਣਾ ਰਹੇ, ਬਲਕਿ ਲੋਕਾਂ ਨੂੰ ਵਧੀਆ ਬਣਾਉਣ ਅਤੇ ਸਾਡੇ ਕੰਮ ਨੂੰ ਹੋਰ ਰਚਨਾਤਮਕ ਬਣਾਉਣ ਲਈ ਬਣਾ ਰਹੇ ਹਾਂ। ਇਹ ਨਿਆਂਸੰਗਤਾ ਨਾਲ ਵੀ ਜੁੜਿਆ ਹੋਇਆ ਹੈ, ਕਿਉਂਕਿ ਜਦੋਂ ਅਸੀਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਿਤ ਸਮੂਹਾਂ ਨਾਲ ਨਿਪਟਦੇ ਹਾਂ, ਤਾਂ ਸਾਡੇ ਦੁਆਰਾ ਇਕੱਠੇ ਕੀਤੇ ਗਏ ਜ਼ਿਆਦਾਤਰ ਡਾਟਾਸੈੱਟ ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਪੱਖਪਾਤੀ ਹੋਣਗੇ, ਅਤੇ ਸਾਨੂੰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਉਹ ਸਮੂਹ ਸ਼ਾਮਲ ਹਨ ਅਤੇ AI ਦੁਆਰਾ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲੇ ਜਾਂਦੇ ਹਨ। +* **ਪਾਰਦਰਸ਼ਤਾ (Transparency)**। ਇਸ ਵਿੱਚ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਸ਼ਾਮਲ ਹੈ ਕਿ ਅਸੀਂ ਹਮੇਸ਼ਾ ਸਪਸ਼ਟ ਕਰਦੇ ਹਾਂ ਕਿ AI ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਇਸਦੇ ਨਾਲ ਹੀ, ਜਿੱਥੇ ਸੰਭਵ ਹੋਵੇ, ਅਸੀਂ ਉਹ AI ਸਿਸਟਮ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ *ਵਿਆਖਿਆਯੋਗ* ਹੋਣ। +* **ਜਵਾਬਦੇਹੀ (Accountability)**। ਜਦੋਂ AI ਮਾਡਲ ਕੁਝ ਫੈਸਲੇ ਲੈਂਦੇ ਹਨ, ਤਾਂ ਇਹ ਹਮੇਸ਼ਾ ਸਪਸ਼ਟ ਨਹੀਂ ਹੁੰਦਾ ਕਿ ਉਹਨਾਂ ਫੈਸਲਿਆਂ ਲਈ ਜਵਾਬਦੇਹ ਕੌਣ ਹੈ। ਸਾਨੂੰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਅਸੀਂ ਸਮਝਦੇ ਹਾਂ ਕਿ AI ਫੈਸਲਿਆਂ ਦੀ ਜਵਾਬਦੇਹੀ ਕਿੱਥੇ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਮਹੱਤਵਪੂਰਨ ਫੈਸਲੇ ਲੈਣ ਦੇ ਚੱਕਰ ਵਿੱਚ ਮਨੁੱਖਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਵੇ, ਤਾਂ ਜੋ ਅਸਲ ਲੋਕਾਂ ਨੂੰ ਜਵਾਬਦੇਹ ਬਣਾਇਆ ਜਾ ਸਕੇ। + +## ਜ਼ਿੰਮੇਵਾਰ AI ਲਈ ਸੰਦ + +ਮਾਈਕਰੋਸਾਫਟ ਨੇ [ਜ਼ਿੰਮੇਵਾਰ AI ਟੂਲਬਾਕਸ](https://github.com/microsoft/responsible-ai-toolbox) ਵਿਕਸਿਤ ਕੀਤਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸੰਦਾਂ ਦਾ ਇੱਕ ਸੈੱਟ ਸ਼ਾਮਲ ਹੈ: + +* ਵਿਆਖਿਆਯੋਗਤਾ ਡੈਸ਼ਬੋਰਡ (InterpretML) +* ਨਿਆਂਸੰਗਤਾ ਡੈਸ਼ਬੋਰਡ (FairLearn) +* ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਡੈਸ਼ਬੋਰਡ +* ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ ਜਿਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ: + + - EconML - ਕਾਰਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਸੰਦ, ਜੋ ਕਿ "ਜੇਕਰ-ਤਦ" ਪ੍ਰਸ਼ਨਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ + - DiCE - ਕਾਊਂਟਰਫੈਕਚੁਅਲ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਸੰਦ ਜੋ ਤੁਹਾਨੂੰ ਵੇਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਮਾਡਲ ਦੇ ਫੈਸਲੇ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਨ ਲਈ ਕਿਹੜੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਬਦਲਣ ਦੀ ਲੋੜ ਹੈ + +AI ਨੈਤਿਕਤਾ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਪਾਠਕ੍ਰਮ ਵਿੱਚ [ਇਹ ਪਾਠ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) ਵੇਖੋ ਜਿਸ ਵਿੱਚ ਅਸਾਈਨਮੈਂਟ ਸ਼ਾਮਲ ਹਨ। + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਜ਼ਿੰਮੇਵਾਰ AI ਬਾਰੇ ਹੋਰ ਸਿੱਖਣ ਲਈ ਇਹ [ਸਿੱਖਣ ਪਾਥ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) ਲਓ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/README.md b/translations/pa/lessons/README.md new file mode 100644 index 00000000..2ada8a46 --- /dev/null +++ b/translations/pa/lessons/README.md @@ -0,0 +1,17 @@ + +# ਝਲਕ + +![ਝਲਕ ਇੱਕ ਡੂਡਲ ਵਿੱਚ](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pa.png) + +> ਸਕੈਚਨੋਟ [Tomomi Imura](https://twitter.com/girlie_mac) ਦੁਆਰਾ + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/X-Extras/X1-MultiModal/README.md b/translations/pa/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..a7c8a190 --- /dev/null +++ b/translations/pa/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# ਮਲਟੀ-ਮੋਡਲ ਨੈਟਵਰਕ + +NLP ਟਾਸਕਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਟ੍ਰਾਂਸਫਾਰਮਰ ਮਾਡਲਾਂ ਦੀ ਸਫਲਤਾ ਤੋਂ ਬਾਅਦ, ਉਹੀ ਜਾਂ ਇਸਦੇ ਸਮਾਨ ਆਰਕੀਟੈਕਚਰ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਟਾਸਕਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤੇ ਗਏ। ਵਿਜ਼ਨ ਅਤੇ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਦੀਆਂ ਸਮਰਥਾਵਾਂ ਨੂੰ *ਮਿਲਾਉਣ* ਵਾਲੇ ਮਾਡਲ ਬਣਾਉਣ ਵਿੱਚ ਦਿਲਚਸਪੀ ਵਧ ਰਹੀ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਇੱਕ ਯਤਨ ਨੂੰ OpenAI ਦੁਆਰਾ ਕੀਤਾ ਗਿਆ ਸੀ, ਜਿਸਨੂੰ CLIP ਅਤੇ DALL.E ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +## ਕਾਂਟਰਾਸਟਿਵ ਇਮੇਜ ਪ੍ਰੀ-ਟ੍ਰੇਨਿੰਗ (CLIP) + +CLIP ਦਾ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਟੈਕਸਟ ਪ੍ਰੌਮਪਟਸ ਨੂੰ ਇੱਕ ਚਿੱਤਰ ਨਾਲ ਤੁਲਨਾ ਕਰਨ ਅਤੇ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਸਮਰਥਾ ਹੋਵੇ ਕਿ ਚਿੱਤਰ ਪ੍ਰੌਮਪਟ ਨਾਲ ਕਿੰਨਾ ਚੰਗਾ ਮੇਲ ਖਾਂਦਾ ਹੈ। + +![CLIP ਆਰਕੀਟੈਕਚਰ](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pa.png) + +> *ਤਸਵੀਰ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://openai.com/blog/clip/) ਤੋਂ* + +ਮਾਡਲ ਨੂੰ ਇੰਟਰਨੈਟ ਤੋਂ ਪ੍ਰਾਪਤ ਚਿੱਤਰਾਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਕੈਪਸ਼ਨ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਹਰ ਬੈਚ ਲਈ, ਅਸੀਂ (ਚਿੱਤਰ, ਟੈਕਸਟ) ਦੇ N ਜੋੜੇ ਲੈਂਦੇ ਹਾਂ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਕੁਝ ਵੈਕਟਰ ਪ੍ਰਤੀਨਿਧੀਆਂ ਵਿੱਚ ਬਦਲਦੇ ਹਾਂ। + +ਉਹ ਪ੍ਰਤੀਨਿਧੀਆਂ ਨੂੰ ਫਿਰ ਇਕੱਠੇ ਮਿਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਲੌਸ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਜੋੜੇ (ਜਿਵੇਂ I ਅਤੇ T) ਦੇ ਵੈਕਟਰਾਂ ਦੇ ਵਿਚਕਾਰ ਕੋਸਾਈਨ ਸਮਾਨਤਾ ਨੂੰ ਵਧਾਉਣ ਅਤੇ ਸਾਰੇ ਹੋਰ ਜੋੜਿਆਂ ਦੇ ਵਿਚਕਾਰ ਕੋਸਾਈਨ ਸਮਾਨਤਾ ਨੂੰ ਘਟਾਉਣ ਲਈ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸੇ ਕਾਰਨ ਇਸ ਪਹੁੰਚ ਨੂੰ **ਕਾਂਟਰਾਸਟਿਵ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +CLIP ਮਾਡਲ/ਲਾਇਬ੍ਰੇਰੀ [OpenAI GitHub](https://github.com/openai/CLIP) ਤੋਂ ਉਪਲਬਧ ਹੈ। ਇਹ ਪਹੁੰਚ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://openai.com/blog/clip/) ਵਿੱਚ ਵਰਣਨ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ [ਇਸ ਪੇਪਰ](https://arxiv.org/pdf/2103.00020.pdf) ਵਿੱਚ ਵਿਸਤਾਰ ਨਾਲ ਦਿੱਤੀ ਗਈ ਹੈ। + +ਇਸ ਮਾਡਲ ਨੂੰ ਪ੍ਰੀ-ਟ੍ਰੇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਅਸੀਂ ਇਸਨੂੰ ਚਿੱਤਰਾਂ ਦੇ ਬੈਚ ਅਤੇ ਟੈਕਸਟ ਪ੍ਰੌਮਪਟਸ ਦੇ ਬੈਚ ਦੇ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਇਹ ਸਾਨੂੰ ਸੰਭਾਵਨਾਵਾਂ ਦੇ ਟੈਂਸਰ ਦੇ ਰੂਪ ਵਿੱਚ ਨਤੀਜਾ ਦੇਵੇਗਾ। CLIP ਨੂੰ ਕਈ ਟਾਸਕਾਂ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ: + +**ਚਿੱਤਰ ਵਰਗੀਕਰਨ** + +ਮੰਨ ਲਓ ਕਿ ਸਾਨੂੰ ਚਿੱਤਰਾਂ ਨੂੰ ਬਿੱਲੀਆਂ, ਕੁੱਤੇ ਅਤੇ ਮਨੁੱਖਾਂ ਵਿੱਚ ਵਰਗੀਕਰਣ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ ਮਾਡਲ ਨੂੰ ਇੱਕ ਚਿੱਤਰ ਅਤੇ ਟੈਕਸਟ ਪ੍ਰੌਮਪਟਸ ਦੀ ਲੜੀ ਦੇ ਸਕਦੇ ਹਾਂ: "*ਬਿੱਲੀ ਦੀ ਤਸਵੀਰ*", "*ਕੁੱਤੇ ਦੀ ਤਸਵੀਰ*", "*ਮਨੁੱਖ ਦੀ ਤਸਵੀਰ*"। 3 ਸੰਭਾਵਨਾਵਾਂ ਦੇ ਨਤੀਜੇ ਵਾਲੇ ਵੈਕਟਰ ਵਿੱਚ ਸਿਰਫ ਸਭ ਤੋਂ ਉੱਚੇ ਮੁੱਲ ਵਾਲੇ ਇੰਡੈਕਸ ਨੂੰ ਚੁਣਨ ਦੀ ਲੋੜ ਹੈ। + +![ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਲਈ CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pa.png) + +> *ਤਸਵੀਰ [ਇਸ ਬਲੌਗ ਪੋਸਟ](https://openai.com/blog/clip/) ਤੋਂ* + +**ਟੈਕਸਟ-ਅਧਾਰਿਤ ਚਿੱਤਰ ਖੋਜ** + +ਅਸੀਂ ਇਸਦਾ ਉਲਟ ਵੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਜੇਕਰ ਸਾਡੇ ਕੋਲ ਚਿੱਤਰਾਂ ਦਾ ਸੰਗ੍ਰਹਿ ਹੈ, ਅਸੀਂ ਇਸ ਸੰਗ੍ਰਹਿ ਨੂੰ ਮਾਡਲ ਨੂੰ ਦੇ ਸਕਦੇ ਹਾਂ ਅਤੇ ਇੱਕ ਟੈਕਸਟ ਪ੍ਰੌਮਪਟ - ਇਹ ਸਾਨੂੰ ਉਹ ਚਿੱਤਰ ਦੇਵੇਗਾ ਜੋ ਦਿੱਤੇ ਪ੍ਰੌਮਪਟ ਦੇ ਸਭ ਤੋਂ ਵੱਧ ਸਮਾਨ ਹੋਵੇ। + +## ✍️ ਉਦਾਹਰਨ: [ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਅਤੇ ਚਿੱਤਰ ਖੋਜ ਲਈ CLIP ਦੀ ਵਰਤੋਂ](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP ਨੂੰ ਕਾਰਵਾਈ ਵਿੱਚ ਦੇਖਣ ਲਈ [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) ਨੋਟਬੁੱਕ ਖੋਲ੍ਹੋ। + +## VQGAN+CLIP ਨਾਲ ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ + +CLIP ਨੂੰ **ਟੈਕਸਟ ਪ੍ਰੌਮਪਟ** ਤੋਂ ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ ਲਈ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਨੂੰ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਇੱਕ **ਜਨਰੇਟਰ ਮਾਡਲ** ਦੀ ਲੋੜ ਹੈ ਜੋ ਕੁਝ ਵੈਕਟਰ ਇਨਪੁਟ ਦੇ ਆਧਾਰ 'ਤੇ ਚਿੱਤਰ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋਵੇ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਇੱਕ ਮਾਡਲ ਨੂੰ [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। + +VQGAN ਦੇ ਮੁੱਖ ਵਿਚਾਰ ਜੋ ਇਸਨੂੰ ਆਮ [GAN](../../4-ComputerVision/10-GANs/README.md) ਤੋਂ ਵੱਖ ਕਰਦੇ ਹਨ, ਇਹ ਹਨ: +* ਆਟੋਰੈਗਰੈਸਿਵ ਟ੍ਰਾਂਸਫਾਰਮਰ ਆਰਕੀਟੈਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਸੰਦਰਭ-ਭਰਪੂਰ ਵਿਜ਼ੁਅਲ ਹਿੱਸਿਆਂ ਦੀ ਲੜੀ ਬਣਾਉਣ ਲਈ ਜੋ ਚਿੱਤਰ ਨੂੰ ਬਣਾਉਂਦੇ ਹਨ। ਉਹ ਵਿਜ਼ੁਅਲ ਹਿੱਸੇ [CNN](../../4-ComputerVision/07-ConvNets/README.md) ਦੁਆਰਾ ਸਿੱਖੇ ਜਾਂਦੇ ਹਨ। +* ਸਬ-ਚਿੱਤਰ ਡਿਸਕ੍ਰਿਮਿਨੇਟਰ ਦੀ ਵਰਤੋਂ ਜੋ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ ਕਿ ਚਿੱਤਰ ਦੇ ਹਿੱਸੇ "ਅਸਲੀ" ਹਨ ਜਾਂ "ਨਕਲੀ" (ਪ੍ਰੰਪਰਾਗਤ GAN ਵਿੱਚ "ਸਭ-ਜਾਂ-ਕੁਝ-ਨਹੀਂ" ਪਹੁੰਚ ਦੇ ਉਲਟ)। + +VQGAN ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ [Taming Transformers](https://compvis.github.io/taming-transformers/) ਵੈਬਸਾਈਟ 'ਤੇ ਪ੍ਰਾਪਤ ਕਰੋ। + +VQGAN ਅਤੇ ਪ੍ਰੰਪਰਾਗਤ GAN ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਅੰਤਰ ਇਹ ਹੈ ਕਿ ਪੁਰਾਣਾ ਕਿਸੇ ਵੀ ਇਨਪੁਟ ਵੈਕਟਰ ਤੋਂ ਇੱਕ ਢੰਗ ਦਾ ਚਿੱਤਰ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ, ਜਦਕਿ VQGAN ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਇੱਕ ਚਿੱਤਰ ਪੈਦਾ ਕਰੇ ਜੋ ਸੰਗਤਿ ਵਾਲਾ ਨਾ ਹੋਵੇ। ਇਸ ਲਈ, ਸਾਨੂੰ ਚਿੱਤਰ ਬਣਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਹੋਰ ਮਾਰਗਦਰਸ਼ਨ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਅਤੇ ਇਹ CLIP ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + +![VQGAN+CLIP ਆਰਕੀਟੈਕਚਰ](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pa.png) + +ਟੈਕਸਟ ਪ੍ਰੌਮਪਟ ਦੇ ਅਨੁਕੂਲ ਚਿੱਤਰ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਕੁਝ ਰੈਂਡਮ ਐਨਕੋਡਿੰਗ ਵੈਕਟਰ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ ਜੋ VQGAN ਦੁਆਰਾ ਚਿੱਤਰ ਪੈਦਾ ਕਰਨ ਲਈ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਫਿਰ CLIP ਨੂੰ ਇੱਕ ਲੌਸ ਫੰਕਸ਼ਨ ਪੈਦਾ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਚਿੱਤਰ ਟੈਕਸਟ ਪ੍ਰੌਮਪਟ ਨਾਲ ਕਿੰਨਾ ਚੰਗਾ ਮੇਲ ਖਾਂਦਾ ਹੈ। ਫਿਰ ਉਦੇਸ਼ ਇਸ ਲੌਸ ਨੂੰ ਘਟਾਉਣਾ ਹੈ, ਬੈਕ ਪ੍ਰੋਪਾਗੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਨਪੁਟ ਵੈਕਟਰ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਢਾਲਣਾ। + +VQGAN+CLIP ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਾਲੀ ਇੱਕ ਸ਼ਾਨਦਾਰ ਲਾਇਬ੍ਰੇਰੀ [Pixray](http://github.com/pixray/pixray) ਹੈ। + +![Pixray ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਤਸਵੀਰ](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pa.png) | ![Pixray ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਤਸਵੀਰ](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pa.png) | ![Pixray ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਤਸਵੀਰ](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pa.png) +----|----|---- +ਪ੍ਰੌਮਪਟ ਤੋਂ ਬਣਾਈ ਗਈ ਤਸਵੀਰ *ਸਾਹਿਤ ਦੇ ਇੱਕ ਨੌਜਵਾਨ ਪੁਰਸ਼ ਅਧਿਆਪਕ ਦਾ ਇੱਕ ਜਲਰੰਗ ਪੋਰਟਰੇਟ ਜਿਸਦੇ ਕੋਲ ਇੱਕ ਕਿਤਾਬ ਹੈ* | ਪ੍ਰੌਮਪਟ ਤੋਂ ਬਣਾਈ ਗਈ ਤਸਵੀਰ *ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਦੀ ਇੱਕ ਨੌਜਵਾਨ ਮਹਿਲਾ ਅਧਿਆਪਕ ਦਾ ਇੱਕ ਤੇਲ ਪੋਰਟਰੇਟ ਜਿਸਦੇ ਕੋਲ ਇੱਕ ਕੰਪਿਊਟਰ ਹੈ* | ਪ੍ਰੌਮਪਟ ਤੋਂ ਬਣਾਈ ਗਈ ਤਸਵੀਰ *ਗਣਿਤ ਦੇ ਇੱਕ ਬੁਜ਼ੁਰਗ ਪੁਰਸ਼ ਅਧਿਆਪਕ ਦਾ ਇੱਕ ਤੇਲ ਪੋਰਟਰੇਟ ਜੋ ਬਲੈਕਬੋਰਡ ਦੇ ਸਾਹਮਣੇ ਹੈ* + +> **Artificial Teachers** ਕਲੈਕਸ਼ਨ ਤੋਂ ਤਸਵੀਰਾਂ [ਦਿਮਿਤਰੀ ਸੋਸ਼ਨਿਕੋਵ](http://soshnikov.com) ਦੁਆਰਾ + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E GPT-3 ਦਾ ਇੱਕ ਵਰਜਨ ਹੈ ਜੋ ਪ੍ਰੌਮਪਟਸ ਤੋਂ ਚਿੱਤਰ ਪੈਦਾ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ 12-ਬਿਲੀਅਨ ਪੈਰਾਮੀਟਰਾਂ ਨਾਲ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੈ। + +CLIP ਦੇ ਉਲਟ, DALL-E ਟੈਕਸਟ ਅਤੇ ਚਿੱਤਰ ਨੂੰ ਇੱਕ ਸਿੰਗਲ ਟੋਕਨ ਸਟ੍ਰੀਮ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਇਸ ਲਈ, ਕਈ ਪ੍ਰੌਮਪਟਸ ਤੋਂ, ਤੁਸੀਂ ਟੈਕਸਟ ਦੇ ਆਧਾਰ 'ਤੇ ਚਿੱਤਰ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹੋ। + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL.E 1 ਅਤੇ 2 ਦੇ ਵਿਚਕਾਰ ਮੁੱਖ ਅੰਤਰ ਇਹ ਹੈ ਕਿ ਇਹ ਹੋਰ ਹਕੀਕਤਵਾਦੀ ਚਿੱਤਰ ਅਤੇ ਕਲਾ ਪੈਦਾ ਕਰਦਾ ਹੈ। + +DALL-E ਨਾਲ ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ ਦੇ ਉਦਾਹਰਨ: +![Pixray ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਤਸਵੀਰ](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.pa.png) | ![Pixray ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਤਸਵੀਰ](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.pa.png) | ![Pixray ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਤਸਵੀਰ](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.pa.png) +----|----|---- +ਪ੍ਰੌਮਪਟ ਤੋਂ ਬਣਾਈ ਗਈ ਤਸਵੀਰ *ਸਾਹਿਤ ਦੇ ਇੱਕ ਨੌਜਵਾਨ ਪੁਰਸ਼ ਅਧਿਆਪਕ ਦਾ ਇੱਕ ਜਲਰੰਗ ਪੋਰਟਰੇਟ ਜਿਸਦੇ ਕੋਲ ਇੱਕ ਕਿਤਾਬ ਹੈ* | ਪ੍ਰੌਮਪਟ ਤੋਂ ਬਣਾਈ ਗਈ ਤਸਵੀਰ *ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਦੀ ਇੱਕ ਨੌਜਵਾਨ ਮਹਿਲਾ ਅਧਿਆਪਕ ਦਾ ਇੱਕ ਤੇਲ ਪੋਰਟਰੇਟ ਜਿਸਦੇ ਕੋਲ ਇੱਕ ਕੰਪਿਊਟਰ ਹੈ* | ਪ੍ਰੌਮਪਟ ਤੋਂ ਬਣਾਈ ਗਈ ਤਸਵੀਰ *ਗਣਿਤ ਦੇ ਇੱਕ ਬੁਜ਼ੁਰਗ ਪੁਰਸ਼ ਅਧਿਆਪਕ ਦਾ ਇੱਕ ਤੇਲ ਪੋਰਟਰੇਟ ਜੋ ਬਲੈਕਬੋਰਡ ਦੇ ਸਾਹਮਣੇ ਹੈ* + +## ਸੰਦਰਭ + +* VQGAN ਪੇਪਰ: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP ਪੇਪਰ: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/sketchnotes/LICENSE.md b/translations/pa/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..22b81feb --- /dev/null +++ b/translations/pa/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,86 @@ + +ਅਟ੍ਰਿਬਿਊਸ਼ਨ-ਸ਼ੇਅਰਅਲਾਈਕ 4.0 ਇੰਟਰਨੈਸ਼ਨਲ + +======================================================================= + +ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਕਾਰਪੋਰੇਸ਼ਨ ("ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼") ਇੱਕ ਕਾਨੂੰਨੀ ਫਰਮ ਨਹੀਂ ਹੈ ਅਤੇ ਨਾ ਹੀ ਇਹ ਕਾਨੂੰਨੀ ਸੇਵਾਵਾਂ ਜਾਂ ਕਾਨੂੰਨੀ ਸਲਾਹ ਦਿੰਦੀ ਹੈ। ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਪਬਲਿਕ ਲਾਇਸੰਸਾਂ ਦੀ ਵੰਡ ਵਕੀਲ-ਗਾਹਕ ਜਾਂ ਹੋਰ ਰਿਸ਼ਤੇ ਨਹੀਂ ਬਣਾਉਂਦੀ। ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਆਪਣੇ ਲਾਇਸੰਸਾਂ ਅਤੇ ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ ਨੂੰ "ਜਿਵੇਂ ਹੈ" ਅਧਾਰ 'ਤੇ ਉਪਲਬਧ ਕਰਾਉਂਦੀ ਹੈ। ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਆਪਣੇ ਲਾਇਸੰਸਾਂ, ਉਨ੍ਹਾਂ ਦੇ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਲਾਇਸੰਸ ਕੀਤੇ ਗਏ ਕਿਸੇ ਵੀ ਸਮੱਗਰੀ ਜਾਂ ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ ਬਾਰੇ ਕੋਈ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦੀ। ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਉਨ੍ਹਾਂ ਦੇ ਵਰਤੋਂ ਤੋਂ ਹੋਣ ਵਾਲੇ ਨੁਕਸਾਨਾਂ ਲਈ ਸੰਭਵ ਤੌਰ 'ਤੇ ਸਾਰੀ ਜ਼ਿੰਮੇਵਾਰੀ ਤੋਂ ਇਨਕਾਰ ਕਰਦੀ ਹੈ। + +ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਪਬਲਿਕ ਲਾਇਸੰਸਾਂ ਦੀ ਵਰਤੋਂ + +ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਪਬਲਿਕ ਲਾਇਸੰਸਾਂ ਰਚਨਾਤਮਕ ਕੰਮਾਂ ਅਤੇ ਕਾਪੀਰਾਈਟ ਅਤੇ ਹੇਠਾਂ ਦਿੱਤੇ ਪਬਲਿਕ ਲਾਇਸੰਸ ਵਿੱਚ ਨਿਰਧਾਰਤ ਕੁਝ ਹੋਰ ਅਧਿਕਾਰਾਂ ਦੇ ਅਧੀਨ ਹੋਰ ਸਮੱਗਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਰਚਨਾਕਾਰਾਂ ਅਤੇ ਹੋਰ ਅਧਿਕਾਰ ਰੱਖਣ ਵਾਲਿਆਂ ਦੁਆਰਾ ਵਰਤੋਂ ਲਈ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਦਾ ਇੱਕ ਮਿਆਰੀ ਸੈੱਟ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ। ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਗੱਲਾਂ ਸਿਰਫ ਜਾਣਕਾਰੀ ਦੇ ਲਈ ਹਨ, ਪੂਰੀ ਨਹੀਂ ਹਨ, ਅਤੇ ਸਾਡੇ ਲਾਇਸੰਸਾਂ ਦਾ ਹਿੱਸਾ ਨਹੀਂ ਬਣਦੀਆਂ। + + ਲਾਇਸੰਸਰਾਂ ਲਈ ਵਿਚਾਰ: ਸਾਡੇ ਪਬਲਿਕ ਲਾਇਸੰਸਾਂ ਦਾ ਉਦੇਸ਼ ਉਹਨਾਂ ਦੁਆਰਾ ਵਰਤੋਂ ਲਈ ਹੈ ਜੋ ਕਾਪੀਰਾਈਟ ਅਤੇ ਕੁਝ ਹੋਰ ਅਧਿਕਾਰਾਂ ਦੁਆਰਾ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ 'ਤੇ ਲਗਾਈ ਗਈ ਪਾਬੰਦੀਆਂ ਨੂੰ ਹਟਾਉਣ ਲਈ ਜਨਤਾ ਨੂੰ ਅਨੁਮਤੀ ਦੇਣ ਲਈ ਅਧਿਕਾਰਤ ਹਨ। ਸਾਡੇ ਲਾਇਸੰਸ ਅਟੱਲ ਹਨ। ਲਾਇਸੰਸਰਾਂ ਨੂੰ ਲਾਇਸੰਸ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਚੁਣੇ ਗਏ ਲਾਇਸੰਸ ਦੇ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਪੜ੍ਹਨਾ ਅਤੇ ਸਮਝਣਾ ਚਾਹੀਦਾ ਹੈ। ਲਾਇਸੰਸਰਾਂ ਨੂੰ ਸਾਰੇ ਅਧਿਕਾਰ ਸੁਰੱਖਿਅਤ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ ਤਾਂ ਜੋ ਜਨਤਾ ਉਮੀਦ ਦੇ ਅਨੁਸਾਰ ਸਮੱਗਰੀ ਦੀ ਦੁਬਾਰਾ ਵਰਤੋਂ ਕਰ ਸਕੇ। ਲਾਇਸੰਸਰਾਂ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਕੋਈ ਵੀ ਸਮੱਗਰੀ ਜੋ ਲਾਇਸੰਸ ਦੇ ਅਧੀਨ ਨਹੀਂ ਹੈ, ਨੂੰ ਚਿੰਨ੍ਹਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਹੋਰ CC-ਲਾਇਸੰਸ ਕੀਤੀ ਸਮੱਗਰੀ, ਜਾਂ ਕਾਪੀਰਾਈਟ ਲਈ ਛੋਟ ਜਾਂ ਸੀਮਾਵਟਾਂ ਦੇ ਅਧੀਨ ਵਰਤੋਂ ਕੀਤੀ ਸਮੱਗਰੀ ਸ਼ਾਮਲ ਹੈ। ਲਾਇਸੰਸਰਾਂ ਲਈ ਹੋਰ ਵਿਚਾਰ: + wiki.creativecommons.org/Considerations_for_licensors + + ਜਨਤਾ ਲਈ ਵਿਚਾਰ: ਸਾਡੇ ਪਬਲਿਕ ਲਾਇਸੰਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਇੱਕ ਲਾਇਸੰਸਰ ਜਨਤਾ ਨੂੰ ਨਿਰਧਾਰਤ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਲਾਇਸੰਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਅਨੁਮਤੀ ਦਿੰਦਾ ਹੈ। ਜੇਕਰ ਕਿਸੇ ਕਾਰਨ ਲਈ ਲਾਇਸੰਸਰ ਦੀ ਅਨੁਮਤੀ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ—ਉਦਾਹਰਨ ਲਈ, ਕਾਪੀਰਾਈਟ ਲਈ ਕੋਈ ਲਾਗੂ ਛੋਟ ਜਾਂ ਸੀਮਾਵਟ—ਤਾਂ ਉਹ ਵਰਤੋਂ ਲਾਇਸੰਸ ਦੁਆਰਾ ਨਿਯਮਤ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ। ਸਾਡੇ ਲਾਇਸੰਸ ਸਿਰਫ ਕਾਪੀਰਾਈਟ ਅਤੇ ਕੁਝ ਹੋਰ ਅਧਿਕਾਰਾਂ ਦੇ ਅਧੀਨ ਅਨੁਮਤੀਆਂ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਜੋ ਇੱਕ ਲਾਇਸੰਸਰ ਦੇ ਅਧਿਕਾਰ ਵਿੱਚ ਹਨ। ਲਾਇਸੰਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ ਹੋਰ ਕਾਰਨਾਂ ਲਈ ਵੀ ਸੀਮਿਤ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਹੋਰ ਲੋਕਾਂ ਦੇ ਕਾਪੀਰਾਈਟ ਜਾਂ ਸਮੱਗਰੀ ਵਿੱਚ ਹੋਰ ਅਧਿਕਾਰ। ਇੱਕ ਲਾਇਸੰਸਰ ਵਿਸ਼ੇਸ਼ ਬੇਨਤੀਆਂ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਾਰੇ ਬਦਲਾਅ ਨੂੰ ਚਿੰਨ੍ਹਿਤ ਜਾਂ ਵਰਣਨ ਕਰਨ ਦੀ ਬੇਨਤੀ। ਹਾਲਾਂਕਿ ਸਾਡੇ ਲਾਇਸੰਸਾਂ ਦੁਆਰਾ ਲੋੜੀਂਦਾ ਨਹੀਂ ਹੈ, ਤੁਸੀਂ ਉਹਨਾਂ ਬੇਨਤੀਆਂ ਦਾ ਸਤਿਕਾਰ ਕਰਨ ਲਈ ਪ੍ਰੇਰਿਤ ਹੋ। ਜਨਤਾ ਲਈ ਹੋਰ ਵਿਚਾਰ: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਅਟ੍ਰਿਬਿਊਸ਼ਨ-ਸ਼ੇਅਰਅਲਾਈਕ 4.0 ਇੰਟਰਨੈਸ਼ਨਲ ਪਬਲਿਕ ਲਾਇਸੰਸ + +ਲਾਇਸੰਸ ਕੀਤੇ ਅਧਿਕਾਰਾਂ (ਹੇਠਾਂ ਪਰਿਭਾਸ਼ਿਤ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਇਸ ਕ੍ਰੀਏਟਿਵ ਕਾਮਨਜ਼ ਅਟ੍ਰਿਬਿਊਸ਼ਨ-ਸ਼ੇਅਰਅਲਾਈਕ 4.0 ਇੰਟਰਨੈਸ਼ਨਲ ਪਬਲਿਕ ਲਾਇਸੰਸ ("ਪਬਲਿਕ ਲਾਇਸੰਸ") ਦੇ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਹੋਣ ਲਈ ਸਵੀਕਾਰ ਕਰਦੇ ਹੋ। ਜਿੱਥੇ ਤੱਕ ਇਹ ਪਬਲਿਕ ਲਾਇਸੰਸ ਇੱਕ ਠੇਕੇ ਵਜੋਂ ਵਿਆਖਿਆ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਤੁਹਾਨੂੰ ਇਹ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਸਵੀਕਾਰ ਕਰਨ ਦੇ ਬਦਲੇ ਵਿੱਚ ਲਾਇਸੰਸ ਕੀਤੇ ਅਧਿਕਾਰ ਪ੍ਰਦਾਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਲਾਇਸੰਸਰ ਤੁਹਾਨੂੰ ਇਹ ਅਧਿਕਾਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਲਾਇਸੰਸਰ ਨੂੰ ਇਹ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਸਮੱਗਰੀ ਉਪਲਬਧ ਕਰਨ ਤੋਂ ਲਾਭ ਮਿਲਦਾ ਹੈ। + +... +ਅਧਿਕਾਰ, ਫਿਰ ਉਹ ਡੇਟਾਬੇਸ ਜਿਸ ਵਿੱਚ ਤੁਹਾਡੇ ਕੋਲ Sui Generis ਡੇਟਾਬੇਸ ਅਧਿਕਾਰ ਹਨ (ਪਰ ਇਸ ਦੀਆਂ ਵਿਅਕਤੀਗਤ ਸਮੱਗਰੀਆਂ ਨਹੀਂ) ਨੂੰ ਅਨੁਕੂਲਿਤ ਸਮੱਗਰੀ ਮੰਨਿਆ ਜਾਵੇਗਾ, + +ਜਿਸ ਵਿੱਚ ਧਾਰਾ 3(b) ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ ਸ਼ਾਮਲ ਹੈ; ਅਤੇ +c. ਜੇ ਤੁਸੀਂ ਡੇਟਾਬੇਸ ਦੀ ਸਾਰੀ ਜਾਂ ਮਹੱਤਵਪੂਰਨ ਸਮੱਗਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਧਾਰਾ 3(a) ਵਿੱਚ ਦਿੱਤੀਆਂ ਸ਼ਰਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨੀ ਹੋਵੇਗੀ। + +ਸੰਦੇਹ ਤੋਂ ਬਚਣ ਲਈ, ਇਹ ਧਾਰਾ 4 ਤੁਹਾਡੇ ਉੱਤੇ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੇ ਤਹਿਤ ਲਾਗੂ ਹੋਣ ਵਾਲੀਆਂ ਜਿੰਮੇਵਾਰੀਆਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ ਅਤੇ ਜਿੱਥੇ ਲਾਇਸੈਂਸ ਅਧਿਕਾਰਾਂ ਵਿੱਚ ਹੋਰ ਕਾਪੀਰਾਈਟ ਅਤੇ ਸਮਾਨ ਅਧਿਕਾਰ ਸ਼ਾਮਲ ਹਨ, ਉਨ੍ਹਾਂ ਦੀ ਜਗ੍ਹਾ ਨਹੀਂ ਲੈਂਦਾ। + +### ਧਾਰਾ 5 -- ਵਾਰੰਟੀਜ਼ ਤੋਂ ਇਨਕਾਰ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰੀ ਦੀ ਸੀਮਾ। + +a. ਜੇਕਰ ਲਾਇਸੰਸਦਾਤਾ ਵੱਲੋਂ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਕੁਝ ਹੋਰ ਨਹੀਂ ਕਿਹਾ ਗਿਆ, ਤਾਂ ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ, ਲਾਇਸੰਸਦਾਤਾ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਨੂੰ "ਜਿਵੇਂ ਹੈ" ਅਤੇ "ਉਪਲਬਧ ਹੈ" ਦੇ ਤੌਰ 'ਤੇ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਅਤੇ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਬਾਰੇ ਕਿਸੇ ਵੀ ਕਿਸਮ ਦੇ ਪ੍ਰਸਤਾਵਾਂ ਜਾਂ ਵਾਰੰਟੀਜ਼ ਨਹੀਂ ਦਿੰਦਾ, ਚਾਹੇ ਉਹ ਸਪਸ਼ਟ, ਅਗੋਚੇਤ, ਕਾਨੂੰਨੀ ਜਾਂ ਹੋਰ ਹੋਣ। ਇਸ ਵਿੱਚ, ਬਿਨਾਂ ਕਿਸੇ ਸੀਮਾ ਦੇ, ਸਿਰਲੇਖ, ਵਪਾਰਯੋਗਤਾ, ਕਿਸੇ ਖਾਸ ਉਦੇਸ਼ ਲਈ ਯੋਗਤਾ, ਅਧਿਕਾਰਾਂ ਦੀ ਉਲੰਘਣਾ ਨਾ ਹੋਣ, ਲੁਕਵੇਂ ਜਾਂ ਹੋਰ ਦੋਸ਼ਾਂ ਦੀ ਗੈਰਹਾਜ਼ਰੀ, ਸਹੀ ਹੋਣ ਜਾਂ ਗਲਤੀਆਂ ਦੀ ਮੌਜੂਦਗੀ ਜਾਂ ਗੈਰਹਾਜ਼ਰੀ ਸ਼ਾਮਲ ਹੈ, ਚਾਹੇ ਉਹ ਜਾਣੀਆਂ ਜਾਂ ਪਤਾ ਲਗਾਈਆਂ ਗਈਆਂ ਹੋਣ। ਜਿੱਥੇ ਵਾਰੰਟੀਜ਼ ਤੋਂ ਇਨਕਾਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜਾਂ ਅੰਸ਼ਿਕ ਤੌਰ 'ਤੇ ਮਨਜ਼ੂਰ ਨਹੀਂ, ਇਹ ਇਨਕਾਰ ਤੁਹਾਡੇ ਉੱਤੇ ਲਾਗੂ ਨਹੀਂ ਹੋ ਸਕਦਾ। + +b. ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ, ਕਿਸੇ ਵੀ ਹਾਲਤ ਵਿੱਚ ਲਾਇਸੰਸਦਾਤਾ ਤੁਹਾਡੇ ਉੱਤੇ ਕਿਸੇ ਵੀ ਕਾਨੂੰਨੀ ਸਿਧਾਂਤ (ਜਿਸ ਵਿੱਚ, ਬਿਨਾਂ ਸੀਮਾ ਦੇ, ਲਾਪਰਵਾਹੀ ਸ਼ਾਮਲ ਹੈ) ਜਾਂ ਹੋਰ ਕਿਸੇ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹੋਵੇਗਾ, ਜਿਵੇਂ ਕਿ ਸਿੱਧੇ, ਵਿਸ਼ੇਸ਼, ਅਪਰਤੱਖ, ਆਕਸਮਿਕ, ਨਤੀਜਾ-ਸਵਰੂਪ, ਦੰਡਾਤਮਕ, ਉਦਾਹਰਣਾਤਮਕ ਜਾਂ ਹੋਰ ਨੁਕਸਾਨ, ਲਾਗਤਾਂ, ਖਰਚੇ ਜਾਂ ਨੁਕਸਾਨ ਜੋ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਜਾਂ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੁੰਦੇ ਹਨ, ਭਾਵੇਂ ਲਾਇਸੰਸਦਾਤਾ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਨੁਕਸਾਨਾਂ, ਲਾਗਤਾਂ, ਖਰਚਿਆਂ ਜਾਂ ਨੁਕਸਾਨਾਂ ਦੀ ਸੰਭਾਵਨਾ ਬਾਰੇ ਸੂਚਿਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ। ਜਿੱਥੇ ਜ਼ਿੰਮੇਵਾਰੀ ਦੀ ਸੀਮਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜਾਂ ਅੰਸ਼ਿਕ ਤੌਰ 'ਤੇ ਮਨਜ਼ੂਰ ਨਹੀਂ, ਇਹ ਸੀਮਾ ਤੁਹਾਡੇ ਉੱਤੇ ਲਾਗੂ ਨਹੀਂ ਹੋ ਸਕਦੀ। + +c. ਉਪਰੋਕਤ ਵਾਰੰਟੀਜ਼ ਤੋਂ ਇਨਕਾਰ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰੀ ਦੀ ਸੀਮਾ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਵਿਆਖਿਆ ਕੀਤਾ ਜਾਵੇਗਾ ਜੋ ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ, ਪੂਰੀ ਤਰ੍ਹਾਂ ਜ਼ਿੰਮੇਵਾਰੀ ਤੋਂ ਇਨਕਾਰ ਅਤੇ ਛੋਟ ਦੇ ਸਭ ਤੋਂ ਨੇੜੇ ਹੋਵੇ। + +### ਧਾਰਾ 6 -- ਮਿਆਦ ਅਤੇ ਸਮਾਪਤੀ। + +a. ਇਹ ਜਨਤਕ ਲਾਇਸੈਂਸ ਕਾਪੀਰਾਈਟ ਅਤੇ ਸਮਾਨ ਅਧਿਕਾਰਾਂ ਦੀ ਮਿਆਦ ਲਈ ਲਾਗੂ ਹੁੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਜੇ ਤੁਸੀਂ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੀ ਪਾਲਣਾ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦੇ ਹੋ, ਤਾਂ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੇ ਤਹਿਤ ਤੁਹਾਡੇ ਅਧਿਕਾਰ ਸਵੈ-ਚਾਲੂ ਤੌਰ 'ਤੇ ਖਤਮ ਹੋ ਜਾਂਦੇ ਹਨ। + +b. ਜਿੱਥੇ ਧਾਰਾ 6(a) ਦੇ ਤਹਿਤ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦੀ ਵਰਤੋਂ ਦਾ ਤੁਹਾਡਾ ਅਧਿਕਾਰ ਖਤਮ ਹੋ ਗਿਆ ਹੈ, ਇਹ ਮੁੜ ਲਾਗੂ ਹੁੰਦਾ ਹੈ: + +1. ਸਵੈ-ਚਾਲੂ ਤੌਰ 'ਤੇ ਉਸ ਤਾਰੀਖ ਤੋਂ ਜਦੋਂ ਉਲੰਘਣਾ ਠੀਕ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜੇਕਰ ਇਹ ਤੁਹਾਡੇ ਦੁਆਰਾ ਉਲੰਘਣਾ ਪਤਾ ਲਗਣ ਤੋਂ 30 ਦਿਨਾਂ ਦੇ ਅੰਦਰ ਠੀਕ ਕੀਤੀ ਜਾਂਦੀ ਹੈ; ਜਾਂ +2. ਲਾਇਸੰਸਦਾਤਾ ਦੁਆਰਾ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਮੁੜ ਲਾਗੂ ਕਰਨ 'ਤੇ। + +ਸੰਦੇਹ ਤੋਂ ਬਚਣ ਲਈ, ਇਹ ਧਾਰਾ 6(b) ਲਾਇਸੰਸਦਾਤਾ ਦੇ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੀ ਉਲੰਘਣਾ ਲਈ ਇਲਾਜ ਲੱਭਣ ਦੇ ਕਿਸੇ ਵੀ ਅਧਿਕਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰਦਾ। + +c. ਸੰਦੇਹ ਤੋਂ ਬਚਣ ਲਈ, ਲਾਇਸੰਸਦਾਤਾ ਵੱਖਰੇ ਸ਼ਰਤਾਂ ਜਾਂ ਨਿਯਮਾਂ ਦੇ ਤਹਿਤ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਸਕਦਾ ਹੈ ਜਾਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦਾ ਵੰਡਣਾ ਬੰਦ ਕਰ ਸਕਦਾ ਹੈ; ਹਾਲਾਂਕਿ, ਇਸ ਨਾਲ ਇਹ ਜਨਤਕ ਲਾਇਸੈਂਸ ਖਤਮ ਨਹੀਂ ਹੋਵੇਗਾ। + +d. ਧਾਰਾਵਾਂ 1, 5, 6, 7, ਅਤੇ 8 ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੇ ਸਮਾਪਤੀ ਤੋਂ ਬਾਅਦ ਵੀ ਲਾਗੂ ਰਹਿੰਦੀਆਂ ਹਨ। + +### ਧਾਰਾ 7 -- ਹੋਰ ਸ਼ਰਤਾਂ ਅਤੇ ਨਿਯਮ। + +a. ਲਾਇਸੰਸਦਾਤਾ ਤੁਹਾਡੇ ਦੁਆਰਾ ਸੰਚਾਰਿਤ ਕੀਤੀਆਂ ਕਿਸੇ ਵੀ ਵਾਧੂ ਜਾਂ ਵੱਖਰੀਆਂ ਸ਼ਰਤਾਂ ਜਾਂ ਨਿਯਮਾਂ ਨਾਲ ਬੰਨ੍ਹਿਆ ਨਹੀਂ ਜਾਵੇਗਾ ਜਦੋਂ ਤੱਕ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਸਹਿਮਤ ਨਾ ਹੋਵੇ। + +b. ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਬਾਰੇ ਕੋਈ ਵੀ ਵਿਵਸਥਾ, ਸਮਝੌਤਾ ਜਾਂ ਸਮਝ ਜੋ ਇੱਥੇ ਦਿੱਤੀ ਨਹੀਂ ਗਈ, ਉਹ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੀਆਂ ਸ਼ਰਤਾਂ ਅਤੇ ਨਿਯਮਾਂ ਤੋਂ ਵੱਖਰੇ ਅਤੇ ਸੁਤੰਤਰ ਹਨ। + +### ਧਾਰਾ 8 -- ਵਿਆਖਿਆ। + +a. ਸੰਦੇਹ ਤੋਂ ਬਚਣ ਲਈ, ਇਹ ਜਨਤਕ ਲਾਇਸੈਂਸ ਲਾਇਸੈਂਸ ਕੀਤੀ ਸਮੱਗਰੀ ਦੀ ਕਿਸੇ ਵੀ ਵਰਤੋਂ ਨੂੰ ਘਟਾਉਣ, ਸੀਮਿਤ ਕਰਨ, ਰੋਕਣ ਜਾਂ ਸ਼ਰਤਾਂ ਲਗਾਉਣ ਲਈ ਨਹੀਂ ਹੈ ਜੋ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੇ ਬਿਨਾਂ ਕਾਨੂੰਨੀ ਤੌਰ 'ਤੇ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। + +b. ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ, ਜੇ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੀ ਕੋਈ ਵੀ ਪ੍ਰਬੰਧਨਾ ਅਮਲਯੋਗ ਨਹੀਂ ਮੰਨੀ ਜਾਂਦੀ, ਤਾਂ ਇਸਨੂੰ ਘੱਟੋ-ਘੱਟ ਹੱਦ ਤੱਕ ਸੁਧਾਰਿਆ ਜਾਵੇਗਾ ਤਾਂ ਜੋ ਇਹ ਅਮਲਯੋਗ ਬਣੇ। ਜੇ ਪ੍ਰਬੰਧਨਾ ਨੂੰ ਸੁਧਾਰਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਤਾਂ ਇਸਨੂੰ ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਤੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ ਬਿਨਾਂ ਬਾਕੀ ਸ਼ਰਤਾਂ ਅਤੇ ਨਿਯਮਾਂ ਦੀ ਅਮਲਯੋਗਤਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤੇ। + +c. ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਦੀ ਕੋਈ ਵੀ ਸ਼ਰਤ ਜਾਂ ਨਿਯਮ ਛੋੜਿਆ ਨਹੀਂ ਜਾਵੇਗਾ ਅਤੇ ਨਾ ਹੀ ਪਾਲਣਾ ਕਰਨ ਵਿੱਚ ਅਸਫਲਤਾ ਲਈ ਸਹਿਮਤੀ ਦਿੱਤੀ ਜਾਵੇਗੀ ਜਦੋਂ ਤੱਕ ਲਾਇਸੰਸਦਾਤਾ ਦੁਆਰਾ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਸਹਿਮਤ ਨਾ ਹੋਵੇ। + +d. ਇਸ ਜਨਤਕ ਲਾਇਸੈਂਸ ਵਿੱਚ ਕੁਝ ਵੀ ਲਾਇਸੰਸਦਾਤਾ ਜਾਂ ਤੁਹਾਡੇ ਉੱਤੇ ਲਾਗੂ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰਾਂ ਅਤੇ ਛੋਟਾਂ ਨੂੰ ਸੀਮਿਤ ਕਰਨ ਜਾਂ ਛੋੜਨ ਦੇ ਤੌਰ 'ਤੇ ਨਹੀਂ ਮੰਨਿਆ ਜਾਵੇਗਾ। + +======================================================================= + +Creative Commons ਆਪਣੇ ਜਨਤਕ ਲਾਇਸੈਂਸਾਂ ਦਾ ਪੱਖਕਾਰ ਨਹੀਂ ਹੈ। ਹਾਲਾਂਕਿ, Creative Commons ਆਪਣੇ ਜਨਤਕ ਲਾਇਸੈਂਸਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਉਸ ਸਮੱਗਰੀ 'ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਚੁਣ ਸਕਦਾ ਹੈ ਜੋ ਇਹ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਮਾਮਲਿਆਂ ਵਿੱਚ "ਲਾਇਸੰਸਦਾਤਾ" ਮੰਨਿਆ ਜਾਵੇਗਾ। Creative Commons ਜਨਤਕ ਲਾਇਸੈਂਸਾਂ ਦੇ ਪਾਠ ਨੂੰ CC0 ਜਨਤਕ ਡੋਮੇਨ ਸਮਰਪਣ ਦੇ ਤਹਿਤ ਜਨਤਕ ਡੋਮੇਨ ਲਈ ਸਮਰਪਿਤ ਕਰਦਾ ਹੈ। Creative Commons ਦੀਆਂ ਨੀਤੀਆਂ (creativecommons.org/policies) ਵਿੱਚ ਦਿੱਤੇ ਗਏ ਸੀਮਿਤ ਉਦੇਸ਼ਾਂ ਤੋਂ ਇਲਾਵਾ, Creative Commons "Creative Commons" ਟ੍ਰੇਡਮਾਰਕ ਜਾਂ Creative Commons ਦੇ ਕਿਸੇ ਹੋਰ ਟ੍ਰੇਡਮਾਰਕ ਜਾਂ ਲੋਗੋ ਦੀ ਵਰਤੋਂ ਦੀ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ। + +Creative Commons ਨਾਲ ਸੰਪਰਕ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ creativecommons.org 'ਤੇ। + +**ਅਸਵੀਕਰਤਾ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਜੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/pa/lessons/sketchnotes/README.md b/translations/pa/lessons/sketchnotes/README.md new file mode 100644 index 00000000..57741873 --- /dev/null +++ b/translations/pa/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +ਸਾਰੇ ਪਾਠਕ੍ਰਮ ਦੇ ਸਕੈਚਨੋਟ ਇੱਥੋਂ ਡਾਊਨਲੋਡ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। + +🎨 ਬਣਾਇਆ ਗਿਆ: ਟੋਮੋਮੀ ਇਮੁਰਾ (ਟਵਿੱਟਰ: [@girlie_mac](https://twitter.com/girlie_mac), ਗਿਟਹੱਬ: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**ਅਸਵੀਕਰਤੀ**: +ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣਭਵਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file diff --git a/translations/ru/README.md b/translations/ru/README.md index 22454255..e33c23e6 100644 --- a/translations/ru/README.md +++ b/translations/ru/README.md @@ -1,140 +1,155 @@ -[![Лицензия GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![Участники GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![Проблемы GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![Запросы на изменения GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![PRs Приветствуются](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Наблюдатели GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![Форки GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![Звезды GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# Искусственный интеллект для начинающих - Учебный план +# Искусственный интеллект для начинающих - учебная программа -|![Скетчнот от [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| Искусственный интеллект для начинающих - _Скетчнот от [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![Скетчноут от [(@girlie_mac)](https://twitter.com/girlie_mac)](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| Искусственный интеллект для начинающих - _Скетчноут от [@girlie_mac](https://twitter.com/girlie_mac)_ | -Изучите мир **Искусственного Интеллекта** (ИИ) с нашим 12-недельным курсом из 24 уроков! Он включает практические уроки, викторины и лабораторные работы. Учебный план подходит для начинающих и охватывает такие инструменты, как TensorFlow и PyTorch, а также этические аспекты ИИ. +Исследуйте мир **Искусственного интеллекта** (AI) с нашей 12-недельной учебной программой, включающей 24 урока! Она содержит практические занятия, тесты и лабораторные работы. Программа подходит для начинающих и охватывает такие инструменты, как TensorFlow и PyTorch, а также вопросы этики в AI. -## Что вы узнаете +## Чему вы научитесь -**[Майндмэп курса](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Майндмэп курса](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -В этом учебном плане вы узнаете: +В рамках этой учебной программы вы изучите: -* Различные подходы к Искусственному Интеллекту, включая "старый добрый" символический подход с **Представлением Знаний** и рассуждением ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). -* **Нейронные Сети** и **Глубокое Обучение**, которые лежат в основе современного ИИ. Мы проиллюстрируем концепции этих важных тем с помощью кода в двух самых популярных фреймворках - [TensorFlow](http://Tensorflow.org) и [PyTorch](http://pytorch.org). -* **Нейронные Архитектуры** для работы с изображениями и текстом. Мы охватим последние модели, но можем быть немного не в курсе самых современных достижений. -* Менее популярные подходы ИИ, такие как **Генетические Алгоритмы** и **Многоагентные Системы**. +* Различные подходы к искусственному интеллекту, включая "старый добрый" символический подход с **представлением знаний** и рассуждением ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Нейронные сети** и **глубокое обучение**, которые лежат в основе современного AI. Мы объясним концепции этих важных тем с помощью кода в двух самых популярных фреймворках - [TensorFlow](http://Tensorflow.org) и [PyTorch](http://pytorch.org). +* **Нейронные архитектуры** для работы с изображениями и текстом. Мы рассмотрим современные модели, хотя они могут немного уступать передовым. +* Менее популярные подходы к AI, такие как **генетические алгоритмы** и **многокомпонентные системы**. -Что мы не будем охватывать в этом учебном плане: +Чего мы не будем рассматривать в этой учебной программе: -> [Найдите все дополнительные ресурсы для этого курса в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Найдите все дополнительные ресурсы для этого курса в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* Бизнес-кейсы использования **ИИ в бизнесе**. Рассмотрите возможность прохождения учебного пути [Введение в ИИ для бизнес-пользователей](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) на Microsoft Learn или [Школы бизнеса ИИ](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), разработанной в сотрудничестве с [INSEAD](https://www.insead.edu/). -* **Классическое Машинное Обучение**, которое хорошо описано в нашем [Учебном плане Машинного Обучения для Начинающих](http://github.com/Microsoft/ML-for-Beginners). -* Практические приложения ИИ, созданные с использованием **[Когнитивных Сервисов](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Для этого мы рекомендуем начать с модулей Microsoft Learn по [визуализации](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [обработке естественного языка](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Генеративному ИИ с Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** и другим. -* Специфические **облачные фреймворки** для машинного обучения, такие как [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) или [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Рассмотрите возможность использования учебных путей [Создание и управление решениями для машинного обучения с Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) и [Создание и управление решениями для машинного обучения с Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). -* **Разговорный ИИ** и **Чат-боты**. Существует отдельный учебный путь [Создание решений для разговорного ИИ](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), а также вы можете ознакомиться с [этой статьей в блоге](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) для получения более подробной информации. -* **Глубокая математика** глубокого обучения. Для этого мы рекомендуем книгу [Глубокое обучение](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) Иэна Гудфеллоу, Ёшуи Бенгио и Аарона Курвиля, которая также доступна онлайн по адресу [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). +* Бизнес-кейсы использования **AI в бизнесе**. Рекомендуем пройти учебный путь [Введение в AI для бизнес-пользователей](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) на Microsoft Learn или [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), разработанный в сотрудничестве с [INSEAD](https://www.insead.edu/). +* **Классическое машинное обучение**, которое хорошо описано в нашей учебной программе [Машинное обучение для начинающих](http://github.com/Microsoft/ML-for-Beginners). +* Практические приложения AI, созданные с использованием **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Для этого рекомендуем начать с модулей Microsoft Learn для [компьютерного зрения](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [обработки естественного языка](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Генеративного AI с Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** и других. +* Конкретные облачные фреймворки для ML, такие как [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) или [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Рассмотрите учебные пути [Создание и управление решениями машинного обучения с Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) и [Создание и управление решениями машинного обучения с Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **Разговорный AI** и **чат-боты**. Существует отдельный учебный путь [Создание решений для разговорного AI](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), а также можно обратиться к [этому блогу](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) для получения дополнительной информации. +* **Глубокая математика** за глубоким обучением. Для этого рекомендуем книгу [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) авторов Иэна Гудфеллоу, Йошуа Бенджио и Аарона Курвиля, которая также доступна онлайн на [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -Для мягкого введения в темы _ИИ в облаке_ вы можете рассмотреть возможность прохождения учебного пути [Начало работы с искусственным интеллектом на Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). +Для мягкого введения в темы _AI в облаке_ вы можете рассмотреть учебный путь [Начало работы с искусственным интеллектом на Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). -# Содержание +# Содержание -| | Ссылка на урок | PyTorch/Keras/TensorFlow | Лаборатория | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Настройка курса](./lessons/0-course-setup/setup.md) | [Настройка вашей среды разработки](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Введение в ИИ**](./lessons/1-Intro/README.md) | | | -| 01 | [Введение и история ИИ](./lessons/1-Intro/README.md) | - | - | -| II | **Символический ИИ** | -| 02 | [Представление знаний и экспертные системы](./lessons/2-Symbolic/README.md) | [Экспертные системы](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Онтология](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Граф концептов](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Введение в нейронные сети**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [Перцептрон](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Лаборатория](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [Многослойный перцептрон и создание нашего собственного фреймворка](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Лаборатория](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [Введение в фреймворки (PyTorch/TensorFlow) и переобучение](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Лаборатория](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**Компьютерное зрение**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Изучите компьютерное зрение на Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Введение в компьютерное зрение. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Лаборатория](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Сверточные нейронные сети](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Архитектуры CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Лаборатория](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Предобученные сети и перенос обучения](./lessons/4-ComputerVision/08-TransferLearning/README.md) и [Трюки обучения](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Лаборатория](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | -| 09 | [Автокодировщики и VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [Генеративные состязательные сети и перенос художественного стиля](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | -| 11 | [Обнаружение объектов](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Лаборатория](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Семантическая сегментация. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../../../AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | -| V | [**Обработка Естественного Языка**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Изучите Обработку Естественного Языка на Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| | Ссылка на урок | PyTorch/Keras/TensorFlow | Лабораторная работа | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Настройка курса](./lessons/0-course-setup/setup.md) | [Настройка среды разработки](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Введение в AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Введение и история AI](./lessons/1-Intro/README.md) | - | - | +| II | **Символический AI** | +| 02 | [Представление знаний и экспертные системы](./lessons/2-Symbolic/README.md) | [Экспертные системы](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Онтология](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Граф концепций](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Введение в нейронные сети**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Перцептрон](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Ноутбук](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Лабораторная работа](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Многослойный перцептрон и создание собственного фреймворка](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Ноутбук](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Лабораторная работа](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Введение в фреймворки (PyTorch/TensorFlow) и переобучение](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Лабораторная работа](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Компьютерное зрение**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Исследование компьютерного зрения на Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Введение в компьютерное зрение. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Ноутбук](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Лабораторная работа](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Сверточные нейронные сети](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Архитектуры CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Лабораторная работа](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Предобученные сети и перенос обучения](./lessons/4-ComputerVision/08-TransferLearning/README.md) и [Трюки для обучения](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Лабораторная работа](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Автокодировщики и вариационные автокодировщики (VAE)](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Генеративно-состязательные сети и перенос художественного стиля](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Обнаружение объектов](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Лабораторная работа](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Семантическая сегментация. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**Обработка естественного языка**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Изучение обработки естественного языка на Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| | 13 | [Представление текста. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | -| 14 | [Семантические векторные представления. Word2Vec и GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [Языковое Моделирование. Обучение собственных векторных представлений](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Лаборатория](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | -| 16 | [Рекуррентные Нейронные Сети](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [Генеративные Рекуррентные Сети](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Лаборатория](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 14 | [Семантические векторные представления слов. Word2Vec и GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Моделирование языка. Обучение собственных векторных представлений](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Лабораторная работа](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Рекуррентные нейронные сети](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Генеративные рекуррентные сети](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Лабораторная работа](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | | 18 | [Трансформеры. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | -| 19 | [Распознавание Именованных Сущностей](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Лаборатория](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [Большие Языковые Модели, Программирование Запросов и Задачи с Небольшим Количеством Примеров](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | -| VI | **Другие Техники ИИ** || | -| 21 | [Генетические Алгоритмы](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [Глубокое Обучение с Подкреплением](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Лаборатория](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Мультиагентные Системы](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| 19 | [Распознавание именованных сущностей](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Лабораторная работа](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Большие языковые модели, программирование подсказок и задачи с малым количеством примеров](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Другие методы ИИ** || | +| 21 | [Генетические алгоритмы](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Ноутбук](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Глубокое обучение с подкреплением](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Лабораторная работа](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Мультиагентные системы](./lessons/6-Other/23-MultiagentSystems/README.md) | | | | VII | **Этика ИИ** | | | -| 24 | [Этика ИИ и Ответственный ИИ](./lessons/7-Ethics/README.md) | [Microsoft Learn: Принципы Ответственного ИИ](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| 24 | [Этика ИИ и ответственный ИИ](./lessons/7-Ethics/README.md) | [Microsoft Learn: Принципы ответственного ИИ](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | | IX | **Дополнения** | | | -| 25 | [Мульти-модальные Сети, CLIP и VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| 25 | [Мультимодальные сети, CLIP и VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Ноутбук](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | -## Каждое занятие содержит +## Каждая лекция включает -* Материалы для предварительного чтения -* Исполняемые Jupyter Notebooks, которые часто специфичны для фреймворка (**PyTorch** или **TensorFlow**). Исполняемый блокнот также содержит много теоретического материала, поэтому, чтобы понять тему, вам нужно пройти хотя бы одну версию блокнота (либо PyTorch, либо TensorFlow). -* **Лаборатории**, доступные для некоторых тем, которые дают вам возможность попробовать применить изученный материал к конкретной задаче. -* Некоторые разделы содержат ссылки на модули [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), которые охватывают смежные темы. +* Материалы для предварительного изучения +* Исполняемые Jupyter-ноутбуки, которые часто специфичны для фреймворка (**PyTorch** или **TensorFlow**). Исполняемый ноутбук также содержит много теоретического материала, поэтому для понимания темы необходимо изучить хотя бы одну версию ноутбука (PyTorch или TensorFlow). +* **Лабораторные работы**, доступные для некоторых тем, которые дают возможность применить изученный материал к конкретной задаче. +* Некоторые разделы содержат ссылки на модули [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), охватывающие связанные темы. ## Начало работы -- Мы создали [урок по настройке](./lessons/0-course-setup/setup.md), чтобы помочь вам с настройкой вашей рабочей среды. - Для педагогов мы также создали [урок по настройке учебной программы](./lessons/0-course-setup/for-teachers.md)! -- Как [Запустить код в VSCode или Codepace](./lessons/0-course-setup/how-to-run.md) +- Мы создали [урок по настройке](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md), чтобы помочь вам настроить вашу среду разработки. - Для преподавателей мы также создали [урок по настройке учебного плана](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Как [запустить код в VSCode или Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) Следуйте этим шагам: -Сделайте форк репозитория: нажмите на кнопку "Fork" в правом верхнем углу этой страницы. +Сделайте форк репозитория: Нажмите кнопку "Fork" в правом верхнем углу этой страницы. Клонируйте репозиторий: `git clone https://github.com/microsoft/AI-For-Beginners.git` -Не забудьте поставить звезду (🌟) этому репозиторию, чтобы было легче найти его позже. +Не забудьте поставить звезду (🌟) этому репозиторию, чтобы легче найти его позже. -## Встречайте других учащихся +## Познакомьтесь с другими учащимися -Присоединяйтесь к нашему [официальному серверу Discord по ИИ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), чтобы познакомиться и пообщаться с другими учащимися, проходящими этот курс, и получить поддержку. +Присоединяйтесь к нашему [официальному AI Discord серверу](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), чтобы познакомиться и наладить связи с другими учащимися, проходящими этот курс, и получить поддержку. -## Викторины - -> **Замечание о викторинах**: Все викторины содержатся в папке Quiz-app в etc\quiz-app. Они связаны с уроками, приложение для викторин можно запустить локально или развернуть в Azure; следуйте инструкциям в папке `quiz-app`. Они постепенно локализуются. +Если у вас есть отзывы о продукте или вопросы во время разработки, посетите наш [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) +## Викторины +> **Примечание о викторинах**: Все викторины находятся в папке Quiz-app в etc\quiz-app. Они связаны с уроками, и приложение для викторин можно запускать локально или развернуть в Azure; следуйте инструкциям в папке `quiz-app`. Локализация викторин осуществляется постепенно. ## Нужна помощь -У вас есть предложения или вы нашли ошибки в написании или коде? Создайте проблему или создайте запрос на изменение. +Есть предложения или нашли ошибки в коде или орфографии? Создайте issue или pull request. ## Особая благодарность -* **✍️ Главный автор:** [Дмитрий Сошников](http://soshnikov.com), PhD -* **🔥 Редактор:** [Джен Лупер](https://twitter.com/jenlooper), PhD -* **🎨 Иллюстратор скетчей:** [Томоми Имура](https://twitter.com/girlie_mac) -* **✅ Создатель викторин:** [Латифа Белло](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) -* **🙏 Основные участники:** [Евгений Пищик](https://github.com/Pe4enIks) +* **✍️ Основной автор:** [Дмитрий Сошников](http://soshnikov.com), PhD +* **🔥 Редактор:** [Джен Лупер](https://twitter.com/jenlooper), PhD +* **🎨 Иллюстратор скетчнотов:** [Томоми Имура](https://twitter.com/girlie_mac) +* **✅ Создатель викторин:** [Латифа Белло](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Основные участники:** [Евгений Пищик](https://github.com/Pe4enIks) -## Другие учебные программы +## Другие учебные материалы -Наша команда разрабатывает и другие учебные программы! Ознакомьтесь с: +Наша команда создает и другие учебные материалы! Ознакомьтесь: -* [Наука о данных для начинающих](https://aka.ms/ds4beginners) -* [**Версия 2.0** Генеративный ИИ для начинающих](https://aka.ms/genai-beginners) -* [**НОВИНКА** Кибербезопасность для начинающих](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Веб-разработка для начинающих](https://aka.ms/webdev-beginners) -* [IoT для начинающих](https://aka.ms/iot-beginners) -* [Машинное обучение для начинающих](https://aka.ms/ml4beginners) -* [XR Разработка для начинающих](https://aka.ms/xr-dev-for-beginners) -* [Осваиваем GitHub Copilot для парного программирования с ИИ](https://aka.ms/GitHubCopilotAI) +- [Generative AI для начинающих](https://aka.ms/genai-beginners) +- [Generative AI для начинающих .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI с JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI с Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI для начинающих](https://aka.ms/ai-beginners) +- [Data Science для начинающих](https://aka.ms/datascience-beginners) +- [ML для начинающих](https://aka.ms/ml-beginners) +- [Кибербезопасность для начинающих](https://github.com/microsoft/Security-101) +- [Веб-разработка для начинающих](https://aka.ms/webdev-beginners) +- [IoT для начинающих](https://aka.ms/iot-beginners) +- [Разработка XR для начинающих](https://github.com/microsoft/xr-development-for-beginners) +- [Мастерство работы с GitHub Copilot для агентного использования](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Мастерство работы с GitHub Copilot для разработчиков C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Выбери свое приключение с Copilot](https://github.com/microsoft/CopilotAdventures) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/SECURITY.md b/translations/ru/SECURITY.md index 3ff75644..7e70b3d3 100644 --- a/translations/ru/SECURITY.md +++ b/translations/ru/SECURITY.md @@ -1,18 +1,27 @@ + ## Безопасность -Microsoft серьезно относится к безопасности наших программных продуктов и услуг, включая все репозитории исходного кода, управляемые через наши организации на GitHub, такие как [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) и [наши организации на GitHub](https://opensource.microsoft.com/). +Microsoft уделяет серьезное внимание безопасности своих программных продуктов и услуг, включая все репозитории исходного кода, управляемые через наши организации на GitHub, такие как [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) и [наши организации на GitHub](https://opensource.microsoft.com/). -Если вы считаете, что нашли уязвимость безопасности в любом репозитории, принадлежащем Microsoft, которая соответствует [определению уязвимости безопасности Microsoft](https://aka.ms/opensource/security/definition), пожалуйста, сообщите нам об этом, как описано ниже. +Если вы считаете, что обнаружили уязвимость безопасности в любом репозитории, принадлежащем Microsoft, которая соответствует [определению уязвимости безопасности Microsoft](https://aka.ms/opensource/security/definition), пожалуйста, сообщите нам об этом, как описано ниже. -## Сообщение о проблемах с безопасностью +## Сообщение о проблемах безопасности -**Пожалуйста, не сообщайте о уязвимостях безопасности через публичные проблемы на GitHub.** +**Пожалуйста, не сообщайте об уязвимостях безопасности через публичные обсуждения на GitHub.** -Вместо этого сообщите о них в Центр реагирования на безопасность Microsoft (MSRC) по адресу [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). +Вместо этого сообщите о них в Центр реагирования на угрозы безопасности Microsoft (MSRC) по адресу [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). -Если вы предпочитаете отправить сообщение без входа в систему, отправьте электронное письмо на адрес [secure@microsoft.com](mailto:secure@microsoft.com). Если возможно, зашифруйте ваше сообщение с помощью нашего PGP-ключа; пожалуйста, скачайте его со страницы [PGP-ключа Центра реагирования на безопасность Microsoft](https://aka.ms/opensource/security/pgpkey). +Если вы предпочитаете отправить сообщение без входа в систему, отправьте письмо на [secure@microsoft.com](mailto:secure@microsoft.com). Если возможно, зашифруйте ваше сообщение с помощью нашего PGP-ключа; его можно скачать на странице [PGP-ключ Центра реагирования на угрозы безопасности Microsoft](https://aka.ms/opensource/security/pgpkey). -Вы должны получить ответ в течение 24 часов. Если по какой-то причине вы не получили ответ, пожалуйста, напишите нам по электронной почте, чтобы убедиться, что мы получили ваше оригинальное сообщение. Дополнительную информацию можно найти на сайте [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). +Вы должны получить ответ в течение 24 часов. Если по какой-то причине вы его не получили, пожалуйста, отправьте повторное письмо, чтобы убедиться, что мы получили ваше первоначальное сообщение. Дополнительную информацию можно найти на [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). Пожалуйста, включите запрашиваемую информацию, указанную ниже (насколько это возможно), чтобы помочь нам лучше понять природу и масштаб возможной проблемы: @@ -21,20 +30,20 @@ Microsoft серьезно относится к безопасности наш * Местоположение затронутого исходного кода (тег/ветка/коммит или прямой URL) * Любая специальная конфигурация, необходимая для воспроизведения проблемы * Пошаговые инструкции для воспроизведения проблемы - * Код доказательства концепции или эксплойт (если возможно) - * Влияние проблемы, включая то, как злоумышленник может воспользоваться этой проблемой + * Доказательство концепции или эксплойт-код (если возможно) + * Влияние проблемы, включая то, как злоумышленник может использовать эту проблему Эта информация поможет нам быстрее обработать ваш отчет. -Если вы сообщаете о проблеме для программы вознаграждений за ошибки, более полные отчеты могут способствовать более высокой награде. Пожалуйста, посетите нашу страницу [Программы вознаграждений за ошибки Microsoft](https://aka.ms/opensource/security/bounty) для получения дополнительной информации о наших активных программах. +Если вы сообщаете об уязвимости в рамках программы вознаграждения за ошибки, более полные отчеты могут способствовать увеличению размера вознаграждения. Пожалуйста, посетите страницу [Программы вознаграждения за ошибки Microsoft](https://aka.ms/opensource/security/bounty) для получения дополнительной информации о наших активных программах. -## Предпочитаемые языки +## Предпочтительные языки -Мы предпочитаем, чтобы все сообщения были на английском языке. +Мы предпочитаем, чтобы вся коммуникация велась на английском языке. ## Политика Microsoft придерживается принципа [Координированного раскрытия уязвимостей](https://aka.ms/opensource/security/cvd). **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/etc/CODE_OF_CONDUCT.md b/translations/ru/etc/CODE_OF_CONDUCT.md index e3d16ebc..38f24c99 100644 --- a/translations/ru/etc/CODE_OF_CONDUCT.md +++ b/translations/ru/etc/CODE_OF_CONDUCT.md @@ -1,12 +1,21 @@ -# Кодекс поведения Microsoft Open Source + +# Кодекс поведения Microsoft для проектов с открытым исходным кодом -Этот проект принял [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). +Этот проект принял [Кодекс поведения Microsoft для проектов с открытым исходным кодом](https://opensource.microsoft.com/codeofconduct/). Ресурсы: -- [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/) -- [Часто задаваемые вопросы по Кодексу поведения Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) -- Свяжитесь с [opencode@microsoft.com](mailto:opencode@microsoft.com) с вопросами или проблемами +- [Кодекс поведения Microsoft для проектов с открытым исходным кодом](https://opensource.microsoft.com/codeofconduct/) +- [Часто задаваемые вопросы о Кодексе поведения Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Свяжитесь с [opencode@microsoft.com](mailto:opencode@microsoft.com) по вопросам или для выражения обеспокоенности **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/etc/CONTRIBUTING.md b/translations/ru/etc/CONTRIBUTING.md index 4f9acf64..2c3ee8b4 100644 --- a/translations/ru/etc/CONTRIBUTING.md +++ b/translations/ru/etc/CONTRIBUTING.md @@ -1,20 +1,36 @@ -# Участие в проекте + +# Внесение изменений -Этот проект приветствует вклад и предложения. Большинство вкладов требуют от вас согласия с Соглашением о лицензии для участников (CLA), подтверждающим, что вы имеете право и на самом деле предоставляете нам права на использование вашего вклада. Для получения подробной информации посетите https://cla.microsoft.com. +Этот проект приветствует вклад и предложения. Большинство изменений требуют, чтобы вы +согласились с Лицензионным соглашением участника (Contributor License Agreement, CLA), подтверждающим, что у вас есть право, +а также вы действительно предоставляете нам права на использование вашего вклада. Для получения подробной информации посетите +https://cla.microsoft.com. -Когда вы отправляете запрос на изменение, бот CLA автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, добавит метку или комментарий). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наше CLA. +Когда вы отправляете pull request, CLA-бот автоматически определяет, нужно ли вам +предоставить CLA, и соответствующим образом оформляет PR (например, добавляет метку, комментарий). Просто следуйте +инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наш CLA. -Этот проект принял [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). Для получения дополнительной информации смотрите [Часто задаваемые вопросы по Кодексу поведения](https://opensource.microsoft.com/codeofconduct/faq/) или свяжитесь с [opencode@microsoft.com](mailto:opencode@microsoft.com) с любыми дополнительными вопросами или комментариями. +Этот проект принял [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). +Для получения дополнительной информации см. [FAQ по Кодексу поведения](https://opensource.microsoft.com/codeofconduct/faq/) +или свяжитесь с [opencode@microsoft.com](mailto:opencode@microsoft.com) с любыми дополнительными вопросами или комментариями. -# Ищем вкладчиков +# Ищем вклад -В настоящее время мы активно ищем вкладов по следующим темам: +В настоящее время мы активно ищем вклад в следующие темы: -- [ ] Написать раздел о глубоких методах обучения с подкреплением -- [ ] Улучшить раздел и блокнот по Обнаружению объектов +- [ ] Написание раздела о глубоком обучении с подкреплением +- [ ] Улучшение раздела + ноутбука по обнаружению объектов - [ ] PyTorch Lightning (для [этого раздела](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] Написать раздел и примеры по Распознаванию именованных сущностей -- [ ] Создать примеры для обучения наших собственных эмбеддингов для [этого раздела](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) +- [ ] Написание раздела + примеров по распознаванию именованных сущностей +- [ ] Создание примеров для обучения собственных эмбеддингов для [этого раздела](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/etc/Mindmap.md b/translations/ru/etc/Mindmap.md index d94424a6..3b47d9a1 100644 --- a/translations/ru/etc/Mindmap.md +++ b/translations/ru/etc/Mindmap.md @@ -1,3 +1,12 @@ + # ИИ ## [Введение в ИИ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) @@ -8,7 +17,7 @@ - Снизу вверх/Нейронный - Эволюционный - Синергетический / Эмерджентный ИИ - - [Школа бизнеса ИИ от Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) ## [Символический ИИ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - Представление знаний @@ -18,7 +27,7 @@ ## [Нейронные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - [Перцептрон](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - - [Многоуровневые сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Многослойные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - [Введение в фреймворки](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) @@ -26,32 +35,32 @@ ## [Компьютерное зрение](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - На MS Learn - - [Основы ИИ: Изучение компьютерного зрения](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Основы ИИ: изучение компьютерного зрения](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - [Компьютерное зрение с PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - [Компьютерное зрение с TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - [Введение в компьютерное зрение. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - [Сверточные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - [Архитектуры CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - - [Передача обучения](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - - [Трюки обучения](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Трансферное обучение](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Трюки для обучения](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - [Автокодировщики и VAE](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [Генеративные состязательные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - - [Передача стиля](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Генеративно-состязательные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Перенос стиля](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - [Обнаружение объектов](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - [Сегментация](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) - + ## [Обработка естественного языка](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - На MS Learn - - [Основы ИИ: Изучение обработки естественного языка](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [Основы ИИ: изучение обработки естественного языка](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - [Обработка естественного языка с PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - [Обработка естественного языка с TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [Текстовое представление](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - [Представление текста](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - Мешок слов - TF/IDF - - [Семантические встраивания](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - [Семантические эмбеддинги](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - Word2Vec - GloVE - - [Языковое моделирование](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Моделирование языка](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - [Рекуррентные нейронные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - LSTM - GRU @@ -59,13 +68,15 @@ - [Трансформеры и BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - [Распознавание именованных сущностей](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - [Генерация текста и GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + ## Другие техники - [Генетические алгоритмы](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - [Глубокое обучение с подкреплением](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - [Мультиагентные системы](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) ## [Этика ИИ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - - [MS Learn о Ответственном ИИ](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + - [MS Learn о ответственном ИИ](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + ## Дополнительно - [Мультимодальные сети](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) @@ -73,4 +84,4 @@ - VQ-GAN **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/etc/SUPPORT.md b/translations/ru/etc/SUPPORT.md index f857b5ba..1a02f096 100644 --- a/translations/ru/etc/SUPPORT.md +++ b/translations/ru/etc/SUPPORT.md @@ -1,16 +1,23 @@ + # Поддержка ## Как сообщить о проблемах и получить помощь -Этот проект использует GitHub Issues для отслеживания ошибок и запросов на новые функции. Пожалуйста, проверьте существующие -проблемы перед тем, как создавать новые, чтобы избежать дублирования. Для новых проблем создайте ваш баг или -запрос на новую функцию как новую задачу. +Этот проект использует GitHub Issues для отслеживания ошибок и запросов на новые функции. Пожалуйста, проверьте существующие проблемы перед созданием новых, чтобы избежать дублирования. Для новых проблем создайте новый Issue с описанием ошибки или запросом на новую функцию. -Для получения помощи и вопросов о использовании этого проекта, пожалуйста, используйте Доски обсуждений. +Для получения помощи и вопросов по использованию этого проекта воспользуйтесь Дискуссионными досками. ## Политика поддержки Microsoft -Поддержка для этого проекта ограничена ресурсами, перечисленными выше. +Поддержка для этого проекта ограничивается перечисленными выше ресурсами. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/etc/TRANSLATIONS.md b/translations/ru/etc/TRANSLATIONS.md index 3fa50d85..bd40e476 100644 --- a/translations/ru/etc/TRANSLATIONS.md +++ b/translations/ru/etc/TRANSLATIONS.md @@ -1,30 +1,39 @@ -# Внесите свой вклад, переводя уроки + +# Помогите, переводя уроки -Мы приветствуем переводы уроков в этой программе! +Мы приветствуем переводы уроков из этой учебной программы! -## Рекомендации +## Руководство -В каждой папке урока и в папке введения в урок содержатся переведенные файлы в формате markdown. +В каждой папке урока и папке с введением к уроку есть папки, содержащие переведенные файлы в формате Markdown. -> Обратите внимание, пожалуйста, не переводите никакой код в файлах с примерами кода; единственные вещи, которые нужно перевести, это README, задания и викторины. Спасибо! +> Обратите внимание: пожалуйста, не переводите код в файлах с примерами кода; переводить нужно только README, задания и викторины. Спасибо! -Переведенные файлы должны следовать следующему формату именования: +Переведенные файлы должны следовать следующему соглашению об именовании: **README._[язык]_.md** -где _[язык]_ — это двухбуквенное сокращение языка по стандарту ISO 639-1 (например, `README.es.md` для испанского и `README.nl.md` для голландского). +где _[язык]_ — это двухбуквенное обозначение языка в соответствии со стандартом ISO 639-1 (например, `README.es.md` для испанского и `README.nl.md` для нидерландского). **assignment._[язык]_.md** -Аналогично README, пожалуйста, переведите и задания. +Аналогично README, пожалуйста, переводите и задания. **Викторины** -1. Добавьте ваш перевод в quiz-app, добавив файл здесь: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, с правильным именованием (en.json, fr.json). **Пожалуйста, не локализуйте слова 'true' или 'false'. Спасибо!** +1. Добавьте ваш перевод в приложение викторин, добавив файл здесь: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, с правильным соглашением об именовании (en.json, fr.json). **Пожалуйста, не локализуйте слова 'true' или 'false'. Спасибо!** -2. Добавьте код вашего языка в выпадающее меню в файле App.vue приложения викторины. +2. Добавьте код вашего языка в выпадающий список в файле App.vue приложения викторин. -3. Отредактируйте файл [translations index.js приложения викторины](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js), чтобы добавить ваш язык. +3. Отредактируйте [файл index.js переводов](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) приложения викторин, чтобы добавить ваш язык. 4. Наконец, отредактируйте ВСЕ ссылки на викторины в ваших переведенных файлах README.md, чтобы они указывали непосредственно на вашу переведенную викторину: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 становится https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id @@ -33,4 +42,4 @@ Мы искренне ценим ваши усилия! **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/etc/quiz-app/README.md b/translations/ru/etc/quiz-app/README.md index e764085a..b141574c 100644 --- a/translations/ru/etc/quiz-app/README.md +++ b/translations/ru/etc/quiz-app/README.md @@ -1,18 +1,27 @@ + # Викторины -Эти викторины являются предварительными и итоговыми викторинами для учебной программы по ИИ на сайте https://aka.ms/ai-beginners +Эти викторины являются предварительными и итоговыми тестами для учебной программы по искусственному интеллекту, доступной по адресу https://aka.ms/ai-beginners ## Добавление переведенного набора викторин -Добавьте перевод викторины, создав соответствующие структуры викторин в папках `assets/translations`. Канонические викторины находятся в `assets/translations/en`. Викторины разбиты на несколько групп по урокам. Убедитесь, что нумерация соответствует правильному разделу викторины. Всего в этой учебной программе 40 викторин, начиная с 0. +Добавьте перевод викторины, создав соответствующие структуры викторин в папке `assets/translations`. Оригинальные викторины находятся в `assets/translations/en`. Викторины разделены на несколько групп по урокам. Убедитесь, что нумерация соответствует правильному разделу викторин. В этой учебной программе всего 40 викторин, начиная с номера 0. -После редактирования переводов отредактируйте файл index.js в папке перевода, чтобы импортировать все файлы в соответствии с соглашениями в `en`. +После редактирования переводов отредактируйте файл index.js в папке перевода, чтобы импортировать все файлы в соответствии с конвенциями в `en`. Отредактируйте файл `index.js` в `assets/translations`, чтобы импортировать новые переведенные файлы. -Затем отредактируйте выпадающий список в `App.vue` в этом приложении, чтобы добавить ваш язык. Соответствуйте локализованное сокращение имени папки для вашего языка. +Затем отредактируйте выпадающий список в `App.vue` в этом приложении, чтобы добавить ваш язык. Убедитесь, что локализованное сокращение соответствует названию папки для вашего языка. -Наконец, отредактируйте все ссылки на викторины в переведенных уроках, если они существуют, чтобы включить эту локализацию в качестве параметра запроса: `?loc=fr`, например. +Наконец, отредактируйте все ссылки на викторины в переведенных уроках, если они существуют, чтобы включить эту локализацию в качестве параметра запроса: например, `?loc=fr`. ## Настройка проекта @@ -40,57 +49,58 @@ npm run lint ### Настройка конфигурации -Смотрите [Справочник по конфигурации](https://cli.vuejs.org/config/). +См. [Справочник по конфигурации](https://cli.vuejs.org/config/). -Кредиты: Спасибо оригинальной версии этого приложения для викторин: https://github.com/arpan45/simple-quiz-vue +Благодарности: Спасибо за оригинальную версию этого приложения для викторин: https://github.com/arpan45/simple-quiz-vue -## Развертывание в Azure +## Развертывание на Azure -Вот пошаговое руководство, чтобы помочь вам начать: +Вот пошаговое руководство, которое поможет вам начать: -1. Форкните репозиторий на GitHub -Убедитесь, что код вашего статического веб-приложения находится в вашем репозитории на GitHub. Форкните этот репозиторий. +1. Форк репозитория GitHub +Убедитесь, что код вашего статического веб-приложения находится в вашем репозитории GitHub. Сделайте форк этого репозитория. -2. Создайте статическое веб-приложение Azure -- Создайте [учетную запись Azure](http://azure.microsoft.com) -- Перейдите в [портал Azure](https://portal.azure.com) -- Нажмите на "Создать ресурс" и найдите "Статическое веб-приложение". -- Нажмите "Создать". +2. Создайте статическое веб-приложение Azure +- Создайте [аккаунт Azure](http://azure.microsoft.com) +- Перейдите в [портал Azure](https://portal.azure.com) +- Нажмите «Создать ресурс» и найдите «Static Web App». +- Нажмите «Создать». -3. Настройте статическое веб-приложение -- Основы: Подписка: Выберите вашу подписку Azure. -- Группа ресурсов: Создайте новую группу ресурсов или используйте существующую. -- Имя: Укажите имя для вашего статического веб-приложения. -- Регион: Выберите регион, ближайший к вашим пользователям. +3. Настройте статическое веб-приложение +- Основные параметры: + - Подписка: Выберите вашу подписку Azure. + - Группа ресурсов: Создайте новую группу ресурсов или используйте существующую. + - Имя: Укажите имя для вашего статического веб-приложения. + - Регион: Выберите регион, ближайший к вашим пользователям. -- #### Детали развертывания: -- Источник: Выберите "GitHub". -- Учетная запись GitHub: Авторизуйте Azure для доступа к вашей учетной записи GitHub. -- Организация: Выберите вашу организацию на GitHub. -- Репозиторий: Выберите репозиторий, содержащий ваше статическое веб-приложение. -- Ветка: Выберите ветку, из которой хотите развернуть. +- #### Детали развертывания: + - Источник: Выберите «GitHub». + - Аккаунт GitHub: Авторизуйте Azure для доступа к вашему аккаунту GitHub. + - Организация: Выберите вашу организацию GitHub. + - Репозиторий: Выберите репозиторий, содержащий ваше статическое веб-приложение. + - Ветка: Выберите ветку, из которой вы хотите развернуть приложение. -- #### Детали сборки: -- Предустановки сборки: Выберите фреймворк, на котором построено ваше приложение (например, React, Angular, Vue и т.д.). -- Расположение приложения: Укажите папку, содержащую код вашего приложения (например, /, если он находится в корне). -- Расположение API: Если у вас есть API, укажите его расположение (необязательно). -- Расположение вывода: Укажите папку, в которой генерируется вывод сборки (например, build или dist). +- #### Детали сборки: + - Пресеты сборки: Выберите фреймворк, на котором построено ваше приложение (например, React, Angular, Vue и т. д.). + - Расположение приложения: Укажите папку, содержащую код вашего приложения (например, /, если оно находится в корне). + - Расположение API: Если у вас есть API, укажите его расположение (опционально). + - Расположение вывода: Укажите папку, где генерируется результат сборки (например, build или dist). -4. Проверьте и создайте -Проверьте ваши настройки и нажмите "Создать". Azure настроит необходимые ресурсы и создаст рабочий процесс GitHub Actions в вашем репозитории. +4. Проверьте и создайте +Проверьте настройки и нажмите «Создать». Azure настроит необходимые ресурсы и создаст GitHub Actions workflow в вашем репозитории. -5. Рабочий процесс GitHub Actions -Azure автоматически создаст файл рабочего процесса GitHub Actions в вашем репозитории (.github/workflows/azure-static-web-apps-.yml). Этот рабочий процесс будет обрабатывать процесс сборки и развертывания. +5. Workflow GitHub Actions +Azure автоматически создаст файл workflow GitHub Actions в вашем репозитории (.github/workflows/azure-static-web-apps-.yml). Этот workflow будет обрабатывать процесс сборки и развертывания. -6. Мониторинг развертывания -Перейдите на вкладку "Actions" в вашем репозитории на GitHub. -Вы должны увидеть работающий рабочий процесс. Этот рабочий процесс будет собирать и развертывать ваше статическое веб-приложение в Azure. -После завершения рабочего процесса ваше приложение будет доступно по предоставленному URL Azure. +6. Мониторинг развертывания +Перейдите на вкладку «Actions» в вашем репозитории GitHub. +Вы должны увидеть запущенный workflow. Этот workflow соберет и развернет ваше статическое веб-приложение на Azure. +После завершения workflow ваше приложение будет доступно по предоставленному URL-адресу Azure. -### Пример файла рабочего процесса +### Пример файла workflow -Вот пример того, как может выглядеть файл рабочего процесса GitHub Actions: -name: Azure Static Web Apps CI/CD +Вот пример того, как может выглядеть файл workflow GitHub Actions: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Дополнительные ресурсы -- [Документация по статическим веб-приложениям Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [Документация по GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Дополнительные ресурсы +- [Документация по статическим веб-приложениям Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Документация GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/0-course-setup/for-teachers.md b/translations/ru/lessons/0-course-setup/for-teachers.md index 83317f88..16449575 100644 --- a/translations/ru/lessons/0-course-setup/for-teachers.md +++ b/translations/ru/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ -# Для педагогов + +# Для преподавателей -Хотите использовать этот учебный план в своем классе? Пожалуйста, не стесняйтесь! +Хотите использовать эту учебную программу в своем классе? Пожалуйста, не стесняйтесь! -На самом деле, вы можете использовать его непосредственно в GitHub, воспользовавшись GitHub Classroom. +На самом деле, вы можете использовать ее прямо в GitHub, воспользовавшись GitHub Classroom. -Для этого создайте форк этого репозитория. Вам нужно будет создать репозиторий для каждого урока, поэтому вам нужно будет извлечь каждую папку в отдельный репозиторий. Таким образом, [GitHub Classroom](https://classroom.github.com/classrooms) сможет обрабатывать каждый урок отдельно. +Для этого сделайте форк этого репозитория. Вам нужно будет создать отдельный репозиторий для каждого урока, поэтому необходимо извлечь каждую папку в отдельный репозиторий. Таким образом, [GitHub Classroom](https://classroom.github.com/classrooms) сможет обрабатывать каждый урок отдельно. -Эти [полные инструкции](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) дадут вам представление о том, как настроить ваш класс. +Эти [подробные инструкции](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) помогут вам понять, как настроить ваш класс. -## Использование репозитория в текущем виде +## Использование репозитория как есть -Если вы хотите использовать этот репозиторий в его текущем состоянии, не прибегая к GitHub Classroom, это тоже возможно. Вам нужно будет сообщить своим ученикам, какой урок проходить вместе. +Если вы хотите использовать этот репозиторий в его текущем виде, без использования GitHub Classroom, это тоже возможно. Вам нужно будет сообщить вашим студентам, какой урок изучать вместе. -В онлайн-формате (Zoom, Teams или другом) вы можете организовать отдельные комнаты для викторин и наставлять студентов, чтобы помочь им подготовиться к обучению. Затем пригласите студентов на викторины и попросите их отправить свои ответы как 'issues' в определенное время. То же самое можно сделать и с заданиями, если вы хотите, чтобы студенты работали совместно в открытом формате. +В онлайн-формате (Zoom, Teams или другие платформы) вы можете организовать комнаты для обсуждений для выполнения викторин и помогать студентам подготовиться к обучению. Затем пригласите студентов пройти викторины и отправить свои ответы в виде 'issues' в определенное время. То же самое можно сделать с заданиями, если вы хотите, чтобы студенты работали совместно и открыто. -Если вы предпочитаете более закрытый формат, попросите своих студентов сделать форк учебного плана, урок за уроком, в свои собственные приватные репозитории на GitHub и предоставить вам доступ. Тогда они смогут выполнять викторины и задания приватно и отправлять их вам через issues в вашем репозитории класса. +Если вы предпочитаете более приватный формат, попросите студентов форкнуть учебную программу, урок за уроком, в свои собственные приватные репозитории на GitHub и предоставить вам доступ. Тогда они смогут выполнять викторины и задания приватно и отправлять их вам через 'issues' в вашем репозитории для класса. -Существует множество способов организовать это в онлайн-классе. Пожалуйста, дайте нам знать, что работает лучше всего для вас! +Существует множество способов организовать это в формате онлайн-класса. Пожалуйста, дайте нам знать, какой способ лучше всего подходит для вас! -## Пожалуйста, поделитесь своими мыслями +## Поделитесь своими мыслями -Мы хотим сделать этот учебный план удобным для вас и ваших студентов. Пожалуйста, оставьте свои отзывы на дискуссионных форумах! +Мы хотим, чтобы эта учебная программа была полезной для вас и ваших студентов. Пожалуйста, оставляйте свои отзывы на форумах обсуждений! **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/0-course-setup/how-to-run.md b/translations/ru/lessons/0-course-setup/how-to-run.md index 08921f33..d7c95a5c 100644 --- a/translations/ru/lessons/0-course-setup/how-to-run.md +++ b/translations/ru/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ + # Как запустить код -Этот курс содержит множество исполняемых примеров и лабораторных работ, которые вы захотите запустить. Для этого вам необходимо иметь возможность выполнять код на Python в Jupyter Notebooks, предоставленных в рамках этого курса. У вас есть несколько вариантов для запуска кода: +Этот курс содержит множество исполняемых примеров и лабораторных работ, которые вы захотите запустить. Для этого вам нужно иметь возможность выполнять код Python в Jupyter Notebooks, предоставленных в рамках этого курса. У вас есть несколько вариантов запуска кода: ## Запуск локально на вашем компьютере -Чтобы запустить код локально на вашем компьютере, вам нужно установить какую-либо версию Python. Я лично рекомендую установить **[miniconda](https://conda.io/en/latest/miniconda.html)** - это довольно легковесная установка, которая поддерживает менеджер пакетов `conda` для различных **виртуальных окружений** Python. +Чтобы запустить код локально на вашем компьютере, вам нужно установить какую-либо версию Python. Я лично рекомендую установить **[miniconda](https://conda.io/en/latest/miniconda.html)** — это довольно легковесная установка, которая поддерживает менеджер пакетов `conda` для различных **виртуальных окружений** Python. -После установки miniconda вам нужно клонировать репозиторий и создать виртуальное окружение, которое будет использоваться для этого курса: +После установки miniconda вам нужно клонировать репозиторий и создать виртуальное окружение для использования в этом курсе: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -17,51 +26,51 @@ conda activate ai4beg ### Использование Visual Studio Code с расширением Python -Наверное, лучший способ использовать курс - это открыть его в [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) с [расширением Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Вероятно, лучший способ использовать этот курс — открыть его в [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) с [расширением Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Примечание**: После того как вы клонируете и откроете директорию в VS Code, он автоматически предложит вам установить расширения Python. Вам также нужно будет установить miniconda, как описано выше. +> **Note**: После клонирования и открытия директории в VS Code, программа автоматически предложит вам установить расширения для Python. Вам также нужно будет установить miniconda, как описано выше. -> **Примечание**: Если VS Code предложит вам снова открыть репозиторий в контейнере, вам нужно отказаться от этого, чтобы использовать локальную установку Python. +> **Note**: Если VS Code предложит вам открыть репозиторий в контейнере, откажитесь от этого, чтобы использовать локальную установку Python. ### Использование Jupyter в браузере -Вы также можете использовать окружение Jupyter прямо из браузера на вашем компьютере. На самом деле, как классический Jupyter, так и Jupyter Hub предоставляют довольно удобную среду разработки с автозавершением, подсветкой кода и т.д. +Вы также можете использовать Jupyter прямо в браузере на вашем компьютере. На самом деле, как классический Jupyter, так и Jupyter Hub предоставляют удобную среду разработки с автодополнением, подсветкой кода и другими функциями. Чтобы запустить Jupyter локально, перейдите в директорию курса и выполните: ```bash jupyter notebook -``` -или +``` +или ```bash jupyterhub -``` -Затем вы можете перейти в любую папку `.ipynb` files, open them and start working. +``` +После этого вы сможете перейти к любому из файлов `.ipynb`, открыть их и начать работу. -### Running in container +### Запуск в контейнере -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer`, которая указывает, как создать контейнер для этого репозитория, VS Code предложит вам снова открыть код в контейнере. Это потребует установки Docker и будет более сложным, поэтому мы рекомендуем это более опытным пользователям. +Альтернативой установке Python может быть запуск кода в контейнере. Поскольку наш репозиторий содержит специальную папку `.devcontainer`, которая описывает, как создать контейнер для этого репозитория, VS Code предложит вам открыть код в контейнере. Это потребует установки Docker и будет более сложным, поэтому мы рекомендуем этот вариант более опытным пользователям. ## Запуск в облаке -Если вы не хотите устанавливать Python локально и у вас есть доступ к облачным ресурсам, хорошей альтернативой будет запуск кода в облаке. Существует несколько способов сделать это: +Если вы не хотите устанавливать Python локально и имеете доступ к облачным ресурсам, хорошей альтернативой будет запуск кода в облаке. Существует несколько способов сделать это: -* Используя **[GitHub Codespaces](https://github.com/features/codespaces)**, который является виртуальным окружением, созданным для вас на GitHub, доступным через интерфейс браузера VS Code. Если у вас есть доступ к Codespaces, вы можете просто нажать кнопку **Code** в репозитории, начать кодовое пространство и начать работу в кратчайшие сроки. -* Используя **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) - это бесплатные вычислительные ресурсы, предоставляемые в облаке для людей, таких как вы, чтобы протестировать некоторый код на GitHub. На главной странице есть кнопка для открытия репозитория в Binder - это быстро перенаправит вас на сайт binder, который создаст базовый контейнер и запустит веб-интерфейс Jupyter для вас без проблем. +* Использование **[GitHub Codespaces](https://github.com/features/codespaces)** — это виртуальная среда, созданная для вас на GitHub, доступная через интерфейс браузера VS Code. Если у вас есть доступ к Codespaces, просто нажмите кнопку **Code** в репозитории, начните Codespace, и вы сможете быстро приступить к работе. +* Использование **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) предоставляет бесплатные вычислительные ресурсы в облаке, чтобы вы могли протестировать код на GitHub. На главной странице есть кнопка для открытия репозитория в Binder — это быстро перенесет вас на сайт Binder, который создаст контейнер и запустит веб-интерфейс Jupyter для вас. -> **Примечание**: Чтобы предотвратить злоупотребления, Binder имеет доступ к некоторым заблокированным веб-ресурсам. Это может помешать работе некоторого кода, который загружает модели и/или наборы данных из общедоступного Интернета. Вам может понадобиться найти некоторые обходные пути. Кроме того, вычислительные ресурсы, предоставляемые Binder, довольно базовые, поэтому обучение будет медленным, особенно на более сложных уроках. +> **Note**: Чтобы предотвратить злоупотребления, Binder блокирует доступ к некоторым веб-ресурсам. Это может помешать работе кода, который загружает модели и/или наборы данных из Интернета. Вам могут понадобиться обходные пути. Кроме того, вычислительные ресурсы, предоставляемые Binder, довольно ограничены, поэтому обучение будет медленным, особенно в более сложных уроках. -## Запуск в облаке с GPU +## Запуск в облаке с поддержкой GPU -Некоторые из более поздних уроков в этом курсе будут значительно выигрывать от поддержки GPU, потому что в противном случае обучение будет болезненно медленным. У вас есть несколько вариантов, которые вы можете использовать, особенно если у вас есть доступ к облаку либо через [Azure для студентов](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), либо через ваше учебное заведение: +Некоторые из более поздних уроков этого курса значительно выиграют от поддержки GPU, так как иначе обучение будет очень медленным. Есть несколько вариантов, которые вы можете использовать, особенно если у вас есть доступ к облаку через [Azure для студентов](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) или через ваше учебное заведение: -* Создайте [Виртуальную машину для науки о данных](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) и подключитесь к ней через Jupyter. Затем вы можете клонировать репозиторий прямо на машину и начать обучение. Виртуальные машины серии NC имеют поддержку GPU. +* Создайте [виртуальную машину для Data Science](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) и подключитесь к ней через Jupyter. Вы можете клонировать репозиторий прямо на эту машину и начать обучение. Виртуальные машины серии NC поддерживают GPU. -> **Примечание**: Некоторые подписки, включая Azure для студентов, не предоставляют поддержку GPU "из коробки". Вам может понадобиться запросить дополнительные ядра GPU через запрос в техническую поддержку. +> **Note**: Некоторые подписки, включая Azure для студентов, не предоставляют поддержку GPU по умолчанию. Вам может понадобиться запросить дополнительные GPU-ядра через техническую поддержку. -* Создайте [Рабочее пространство Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) и затем используйте там функцию Notebook. [Это видео](https://azure-for-academics.github.io/quickstart/azureml-papers/) показывает, как клонировать репозиторий в блокнот Azure ML и начать его использование. +* Создайте [Workspace Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) и используйте функцию Notebook там. [Это видео](https://azure-for-academics.github.io/quickstart/azureml-papers/) показывает, как клонировать репозиторий в Azure ML Notebook и начать его использование. -Вы также можете использовать Google Colab, который предоставляет некоторую бесплатную поддержку GPU и загружать туда Jupyter Notebooks для их поочередного выполнения. +Вы также можете использовать Google Colab, который предоставляет некоторую бесплатную поддержку GPU, и загружать туда Jupyter Notebooks для выполнения их поочередно. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/0-course-setup/setup.md b/translations/ru/lessons/0-course-setup/setup.md index 94cac058..6f8f5ad8 100644 --- a/translations/ru/lessons/0-course-setup/setup.md +++ b/translations/ru/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ + # Начало работы с этой учебной программой ## Вы студент? Начните с следующих ресурсов: -* [Страница для студентов](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) На этой странице вы найдете ресурсы для начинающих, пакеты для студентов и даже способы получить бесплатный сертификат. Это страница, которую вы захотите добавить в закладки и проверять время от времени, так как мы обновляем контент как минимум раз в месяц. -* [Послы Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Присоединяйтесь к глобальному сообществу студентов-послов, это может стать вашим путём в Microsoft. +* [Страница для студентов](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) На этой странице вы найдете материалы для начинающих, студенческие пакеты и даже способы получить бесплатный ваучер на сертификацию. Это страница, которую стоит добавить в закладки и периодически проверять, так как мы обновляем контент как минимум раз в месяц. +* [Студенческие послы Microsoft Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Присоединяйтесь к глобальному сообществу студенческих послов — это может стать вашим путем в Microsoft. -**Студенты**, есть несколько способов использовать учебный план. Прежде всего, вы можете просто читать текст и просматривать код непосредственно на GitHub. Если вы хотите запустить код в любом из блокнотов - [читайте наши инструкции](./etc/how-to-run.md), и найдите больше советов о том, как это сделать [в этом блоге](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +**Студенты**, есть несколько способов использовать учебную программу. Во-первых, вы можете просто читать текст и просматривать код прямо на GitHub. Если вы хотите запустить код в любом из ноутбуков — [прочитайте наши инструкции](./etc/how-to-run.md) и найдите больше советов о том, как это сделать [в этом блоге](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -> **Примечание**: [Инструкции по запуску кода в этом учебном плане](/how-to-run.md) +> **Note**: [Инструкции о том, как запустить код из этой учебной программы](./how-to-run.md) -## Самостоятельное изучение +## Самостоятельное обучение -Тем не менее, если вы хотите пройти курс в качестве самостоятельного проекта, мы рекомендуем вам сделать форк всего репозитория в ваш собственный аккаунт GitHub и выполнить задания самостоятельно или в группе: +Если вы хотите пройти курс как проект для самостоятельного изучения, мы рекомендуем сделать форк всего репозитория в ваш собственный аккаунт GitHub и выполнять задания самостоятельно или в группе: -* Начните с предлекционного теста. +* Начните с предварительного теста. * Прочитайте вводный текст к лекции. -* Если лекция содержит дополнительные блокноты, пройдите их, читая и выполняя код. Если предоставлены блокноты как для TensorFlow, так и для PyTorch, вы можете сосредоточиться на одном из них - выберите свой любимый фреймворк. -* Блокноты часто содержат некоторые задачи, которые требуют небольших изменений в коде для экспериментов. -* Пройдите постлекционный тест. -* Если к модулю прикреплена лабораторная работа - выполните задание. -* Посетите [Доску обсуждений](https://github.com/microsoft/AI-For-Beginners/discussions), чтобы "учиться вслух". +* Если к лекции прилагаются дополнительные ноутбуки, изучите их, читая и выполняя код. Если предоставлены ноутбуки для TensorFlow и PyTorch, вы можете сосредоточиться на одном из них — выберите любимый фреймворк. +* В ноутбуках часто содержатся задания, которые требуют немного изменить код для экспериментов. +* Пройдите тест после лекции. +* Если к модулю прикреплена лабораторная работа — выполните задание. +* Посетите [доску обсуждений](https://github.com/microsoft/AI-For-Beginners/discussions), чтобы "учиться вслух". -> Для дальнейшего изучения мы рекомендуем следовать этим модулям и учебным путям на [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). +> Для дальнейшего изучения мы рекомендуем пройти эти [модули и учебные пути Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). -**Учителя**, мы [включили некоторые рекомендации](/for-teachers.md) о том, как использовать этот учебный план. +**Преподаватели**, мы [включили несколько рекомендаций](/for-teachers.md) о том, как использовать эту учебную программу. --- ## Педагогика -Мы выбрали два педагогических принципа при создании этого учебного плана: обеспечение практической **проектной** работы и включение **частых тестов**. +При создании этой учебной программы мы выбрали два педагогических принципа: обеспечение практической **проектной направленности** и включение **частых тестов**. -Обеспечивая соответствие контента проектам, процесс становится более увлекательным для студентов, а усвоение концепций увеличивается. Кроме того, тест с низкими ставками перед занятием настраивает студента на изучение темы, в то время как второй тест после занятия обеспечивает дальнейшее усвоение. Этот учебный план был разработан так, чтобы быть гибким и увлекательным, и его можно пройти полностью или частично. Проекты начинаются с простых и становятся все более сложными к концу 12-недельного цикла. +Обеспечивая связь контента с проектами, процесс становится более увлекательным для студентов, а усвоение концепций усиливается. Кроме того, тест с низкими ставками перед занятием настраивает студента на изучение темы, а второй тест после занятия обеспечивает дальнейшее закрепление материала. Эта учебная программа была разработана как гибкая и увлекательная, и ее можно проходить полностью или частично. Проекты начинаются с простых и становятся все более сложными к концу 12-недельного цикла. -> **Примечание о тестах**: Все тесты содержатся [в этом приложении](https://red-field-0a6ddfd03.1.azurestaticapps.net/), всего 50 тестов по три вопроса каждый. Они связаны из уроков, но приложение для тестирования можно запустить локально; следуйте инструкциям в папке `etc/quiz-app`. +> **Примечание о тестах**: Все тесты содержатся [в этом приложении](https://red-field-0a6ddfd03.1.azurestaticapps.net/), всего 50 тестов по три вопроса каждый. Они связаны с уроками, но приложение для тестов можно запустить локально; следуйте инструкциям в папке `etc/quiz-app`. -## Офлайн-доступ +## Оффлайн-доступ -Вы можете использовать эту документацию в офлайн-режиме, используя [Docsify](https://docsify.js.org/#/). Сделайте форк этого репозитория, [установите Docsify](https://docsify.js.org/#/quickstart) на вашем локальном компьютере, а затем в папке `etc/docsify` этого репозитория введите `docsify serve`. Веб-сайт будет доступен на порту 3000 на вашем локальном хосте: `localhost:3000`. PDF-версия учебной программы доступна [по этой ссылке](../../../../../../etc/pdf/readme.pdf). +Вы можете использовать эту документацию оффлайн с помощью [Docsify](https://docsify.js.org/#/). Сделайте форк этого репозитория, [установите Docsify](https://docsify.js.org/#/quickstart) на вашем локальном компьютере, а затем в корневой папке этого репозитория введите `docsify serve`. Веб-сайт будет доступен на порту 3000 вашего локального хоста: `localhost:3000`. PDF-версия учебной программы доступна [по этой ссылке](../../../../../../../../../etc/pdf/readme.pdf). **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/1-Intro/README.md b/translations/ru/lessons/1-Intro/README.md index b946da9f..88a499c2 100644 --- a/translations/ru/lessons/1-Intro/README.md +++ b/translations/ru/lessons/1-Intro/README.md @@ -1,38 +1,66 @@ -> Изображение Дмитрия Сошникова, [фото](https://unsplash.com/photos/r8LmVbUKgns) [Марина Абросимова](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +> Изображение [Дмитрия Сошникова](http://soshnikov.com) + +Со временем вычислительные ресурсы стали дешевле, а объем доступных данных значительно увеличился, что позволило подходам на основе нейронных сетей демонстрировать отличные результаты в конкуренции с людьми во многих областях, таких как компьютерное зрение или распознавание речи. В последнее десятилетие термин "Искусственный интеллект" чаще всего используется как синоним нейронных сетей, поскольку большинство успехов в области ИИ, о которых мы слышим, основаны именно на них. + +Мы можем наблюдать, как менялись подходы, например, при создании программы для игры в шахматы: + +* Ранние шахматные программы основывались на поиске — программа явно пыталась оценить возможные ходы противника на определенное количество следующих ходов и выбирала оптимальный ход, исходя из лучшей позиции, которую можно достичь за несколько ходов. Это привело к разработке алгоритма поиска [альфа-бета отсечения](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Стратегии поиска хорошо работают ближе к концу игры, где пространство поиска ограничено небольшим количеством возможных ходов. Однако в начале игры пространство поиска огромное, и алгоритм можно улучшить, обучаясь на существующих партиях между человеческими игроками. Последующие эксперименты использовали подход, называемый [рассуждение на основе случаев](https://en.wikipedia.org/wiki/Case-based_reasoning), где программа искала случаи в базе знаний, очень похожие на текущую позицию в игре. +* Современные программы, которые побеждают человеческих игроков, основаны на нейронных сетях и [обучении с подкреплением](https://en.wikipedia.org/wiki/Reinforcement_learning), где программы учатся играть, играя долгое время против самих себя и извлекая уроки из собственных ошибок — примерно так же, как люди учатся играть в шахматы. Однако программа может сыграть гораздо больше партий за гораздо меньшее время, и, следовательно, учится намного быстрее. + +✅ Проведите небольшое исследование о других играх, в которые играли ИИ. + +Аналогично, мы можем увидеть, как изменился подход к созданию "говорящих программ" (которые могли бы пройти тест Тьюринга): + +* Ранние программы такого рода, такие как [Eliza](https://en.wikipedia.org/wiki/ELIZA), основывались на очень простых грамматических правилах и преобразовании входного предложения в вопрос. +* Современные помощники, такие как Cortana, Siri или Google Assistant, представляют собой гибридные системы, которые используют нейронные сети для преобразования речи в текст и распознавания намерений, а затем применяют рассуждения или явные алгоритмы для выполнения необходимых действий. +* В будущем мы можем ожидать появления полностью нейронных моделей, способных самостоятельно вести диалог. Недавние нейронные сети семейства GPT и [Turing-NLG](https://turing.microsoft.com/) демонстрируют большие успехи в этом направлении. + +> Изображение Дмитрия Сошникова, [фото](https://unsplash.com/photos/r8LmVbUKgns) Марина Абросимова, [Unsplash](https://unsplash.com/@abrosimova_marina_foto) ## Последние исследования в области ИИ -Огромный рост исследований в области нейронных сетей начался около 2010 года, когда стали доступны большие публичные наборы данных. Огромная коллекция изображений под названием [ImageNet](https://en.wikipedia.org/wiki/ImageNet), содержащая около 14 миллионов аннотированных изображений, стала основой для [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). +Огромный рост исследований нейронных сетей начался примерно в 2010 году, когда стали доступны крупные публичные наборы данных. Огромная коллекция изображений под названием [ImageNet](https://en.wikipedia.org/wiki/ImageNet), содержащая около 14 миллионов аннотированных изображений, дала начало [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). ![Точность ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) -> Изображение Дмитрия Сошникова -В 2012 году [Сверточные Нейронные Сети](../4-ComputerVision/07-ConvNets/README.md) впервые были использованы для классификации изображений, что привело к значительному снижению ошибок классификации (с почти 30% до 16.4%). В 2015 году архитектура ResNet от Microsoft Research [достигла точности на уровне человека](https://doi.org/10.1109/ICCV.2015.123). +> Изображение [Дмитрия Сошникова](http://soshnikov.com) -С тех пор Нейронные Сети продемонстрировали очень успешное поведение во многих задачах: +В 2012 году [сверточные нейронные сети](../4-ComputerVision/07-ConvNets/README.md) впервые были использованы для классификации изображений, что привело к значительному снижению ошибок классификации (с почти 30% до 16,4%). В 2015 году архитектура ResNet от Microsoft Research [достигла уровня точности, сопоставимого с человеческим](https://doi.org/10.1109/ICCV.2015.123). + +С тех пор нейронные сети продемонстрировали очень успешное поведение во многих задачах: --- -Год | Достигнутое соответствие с уровнем человека +Год | Достигнут паритет с человеком -----|-------- 2015 | [Классификация изображений](https://doi.org/10.1109/ICCV.2015.123) 2016 | [Распознавание разговорной речи](https://arxiv.org/abs/1610.05256) 2018 | [Автоматический машинный перевод](https://arxiv.org/abs/1803.05567) (с китайского на английский) -2020 | [Подписи к изображениям](https://arxiv.org/abs/2009.13682) +2020 | [Создание подписей к изображениям](https://arxiv.org/abs/2009.13682) -За последние несколько лет мы стали свидетелями огромных успехов с большими языковыми моделями, такими как BERT и GPT-3. Это произошло в основном благодаря тому, что существует много общих текстовых данных, которые позволяют нам обучать модели для захвата структуры и смысла текстов, предварительно обучать их на общих текстовых коллекциях, а затем специализировать эти модели для более специфических задач. Мы узнаем больше о [Обработке Естественного Языка](../5-NLP/README.md) позже в этом курсе. +За последние несколько лет мы стали свидетелями огромных успехов в разработке крупных языковых моделей, таких как BERT и GPT-3. Это стало возможным главным образом благодаря большому количеству доступных текстовых данных, которые позволяют обучать модели для понимания структуры и смысла текстов, предварительно обучать их на общих текстовых коллекциях, а затем специализировать эти модели для более конкретных задач. Мы узнаем больше о [обработке естественного языка](../5-NLP/README.md) позже в этом курсе. -## 🚀 Задача +## 🚀 Задание -Исследуйте интернет, чтобы определить, где, по вашему мнению, ИИ используется наиболее эффективно. Это в приложении для карт, в каком-то сервисе распознавания речи или в видеоигре? Исследуйте, как была построена эта система. +Исследуйте интернет, чтобы определить, где, по вашему мнению, ИИ используется наиболее эффективно. Это может быть приложение для карт, сервис преобразования речи в текст или видеоигра. Узнайте, как была построена эта система. -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) ## Обзор и самостоятельное изучение -Просмотрите историю ИИ и МЛ, прочитав [этот урок](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Возьмите элемент из скетчнота в верхней части этого урока или этого и исследуйте его более глубоко, чтобы понять культурный контекст, который информирует его эволюцию. +Изучите историю ИИ и машинного обучения, прочитав [этот урок](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Выберите элемент из скетчноута в начале этого урока или текущего и исследуйте его более подробно, чтобы понять культурный контекст, повлиявший на его развитие. **Задание**: [Game Jam](assignment.md) **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/1-Intro/assignment.md b/translations/ru/lessons/1-Intro/assignment.md index 7fc893ea..7cfd07d3 100644 --- a/translations/ru/lessons/1-Intro/assignment.md +++ b/translations/ru/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ + # Game Jam -Игры — это область, которая была сильно затронута развитием ИИ и МЛ. В этом задании напишите короткое эссе о вашей любимой игре, на которую повлияло развитие ИИ. Игра должна быть достаточно старой, чтобы на неё оказали влияние несколько типов компьютерных систем обработки данных. Хорошим примером являются шахматы или го, но также посмотрите на видеоигры, такие как Pong или Pac-Man. Напишите эссе, в котором обсуждаются прошлое, настоящее и будущее ИИ в этой игре. +Игры — это область, которая значительно изменилась под влиянием развития ИИ и машинного обучения. В этом задании напишите короткую статью об игре, которая вам нравится и которая была затронута эволюцией ИИ. Это должна быть достаточно старая игра, чтобы на нее повлияли несколько типов компьютерных систем обработки данных. Хорошим примером могут быть шахматы или го, но также обратите внимание на видеоигры, такие как Pong или Pac-Man. Напишите эссе, в котором обсудите прошлое, настоящее и будущее игры с точки зрения ИИ. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен рассматриваться как авторитетный источник. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/2-Symbolic/README.md b/translations/ru/lessons/2-Symbolic/README.md index 81cc8ccc..e271d6c9 100644 --- a/translations/ru/lessons/2-Symbolic/README.md +++ b/translations/ru/lessons/2-Symbolic/README.md @@ -1,107 +1,114 @@ + # Представление знаний и экспертные системы -![Сводка содержимого Символического ИИ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ru.png) +![Обзор содержания о символическом ИИ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ru.png) -> Скетчнот от [Томоми Имура](https://twitter.com/girlie_mac) +> Скетчноут от [Tomomi Imura](https://twitter.com/girlie_mac) -Поиск искусственного интеллекта основан на стремлении к знанию, чтобы осознать мир так же, как это делают люди. Но как можно это осуществить? +Поиск искусственного интеллекта основан на стремлении к знаниям, чтобы понимать мир так же, как это делают люди. Но как это можно осуществить? -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) -В ранние дни ИИ подход «сверху вниз» к созданию интеллектуальных систем (обсуждавшийся на предыдущем уроке) был популярен. Идея заключалась в том, чтобы извлечь знания из людей в какую-то машиночитаемую форму и затем использовать их для автоматического решения задач. Этот подход основывался на двух основных идеях: +В первые дни развития ИИ был популярен подход сверху вниз (обсуждался в предыдущем уроке) для создания интеллектуальных систем. Идея заключалась в том, чтобы извлечь знания у людей в машиночитаемую форму, а затем использовать их для автоматического решения задач. Этот подход основывался на двух ключевых идеях: * Представление знаний * Рассуждение ## Представление знаний -Одним из важных понятий в Символическом ИИ является **знание**. Важно различать знание и *информацию* или *данные*. Например, можно сказать, что книги содержат знания, потому что, изучая книги, можно стать экспертом. Однако то, что содержится в книгах, на самом деле называется *данными*, и, читая книги и интегрируя эти данные в нашу модель мира, мы преобразуем эти данные в знания. +Одной из важных концепций в символическом ИИ являются **знания**. Важно отличать знания от *информации* или *данных*. Например, можно сказать, что книги содержат знания, потому что, изучая их, можно стать экспертом. Однако то, что содержится в книгах, на самом деле называется *данными*, и, читая книги и интегрируя эти данные в нашу модель мира, мы превращаем их в знания. -> ✅ **Знание** — это то, что содержится в нашей голове и представляет собой наше понимание мира. Оно приобретается в результате активного **обучения**, которое интегрирует кусочки информации, которые мы получаем, в нашу активную модель мира. +> ✅ **Знания** — это то, что находится в нашей голове и представляет наше понимание мира. Они приобретаются в процессе активного **обучения**, который интегрирует полученную информацию в нашу активную модель мира. -Чаще всего мы не строго определяем знание, но согласуем его с другими связанными концепциями, используя [Пирамиду DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Она включает в себя следующие концепции: +Чаще всего мы не даем строгого определения знаниям, но соотносим их с другими связанными концепциями, используя [пирамиду DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Она включает следующие уровни: -* **Данные** — это то, что представлено в физических носителях, таких как написанный текст или произнесенные слова. Данные существуют независимо от людей и могут передаваться между людьми. -* **Информация** — это то, как мы интерпретируем данные в своей голове. Например, когда мы слышим слово *компьютер*, у нас есть некоторое понимание того, что это. -* **Знание** — это информация, интегрированная в нашу модель мира. Например, как только мы узнаем, что такое компьютер, у нас начинают возникать идеи о том, как он работает, сколько он стоит и для чего его можно использовать. Эта сеть взаимосвязанных концепций формирует наши знания. -* **Мудрость** — это еще один уровень нашего понимания мира, и она представляет собой *мета-знание*, т.е. некоторое представление о том, как и когда знания должны использоваться. +* **Данные** — это то, что представлено на физическом носителе, например, в виде текста или устной речи. Данные существуют независимо от человека и могут передаваться между людьми. +* **Информация** — это то, как мы интерпретируем данные в своей голове. Например, услышав слово *компьютер*, мы имеем некоторое представление о том, что это такое. +* **Знания** — это информация, интегрированная в нашу модель мира. Например, узнав, что такое компьютер, мы начинаем понимать, как он работает, сколько стоит и для чего его можно использовать. Эта сеть взаимосвязанных понятий формирует наши знания. +* **Мудрость** — это еще более высокий уровень понимания мира, представляющий собой *метазнания*, например, знание о том, как и когда использовать имеющиеся знания. - +*Изображение [из Википедии](https://commons.wikimedia.org/w/index.php?curid=37705247), автор Longlivetheux - Собственная работа, CC BY-SA 4.0* -*Изображение [из Википедии](https://commons.wikimedia.org/w/index.php?curid=37705247), автор Longlivetheux - собственная работа, CC BY-SA 4.0* - -Таким образом, проблема **представления знаний** заключается в поиске эффективного способа представления знаний внутри компьютера в форме данных, чтобы сделать их автоматически доступными. Это можно рассматривать как спектр: +Таким образом, задача **представления знаний** заключается в том, чтобы найти эффективный способ представления знаний внутри компьютера в виде данных, чтобы они могли использоваться автоматически. Это можно представить как спектр: ![Спектр представления знаний](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ru.png) -> Изображение от [Дмитрия Сошникова](http://soshnikov.com) +> Изображение от [Dmitry Soshnikov](http://soshnikov.com) -* Слева находятся очень простые типы представлений знаний, которые могут эффективно использоваться компьютерами. Самый простой — алгоритмический, когда знание представлено компьютерной программой. Однако это не лучший способ представления знаний, поскольку он не гибкий. Знания в нашей голове часто не алгоритмичны. -* Справа находятся такие представления, как естественный текст. Это самое мощное, но не может быть использовано для автоматического рассуждения. +* Слева находятся очень простые типы представления знаний, которые могут эффективно использоваться компьютерами. Самый простой из них — алгоритмический, когда знания представлены в виде компьютерной программы. Однако это не самый гибкий способ представления знаний, так как знания в нашей голове часто не алгоритмичны. +* Справа находятся такие представления, как естественный текст. Это самый мощный способ, но он не подходит для автоматического рассуждения. -> ✅ Подумайте минуту о том, как вы представляете знания в своей голове и переводите их в заметки. Есть ли какой-то конкретный формат, который хорошо помогает вам в запоминании? +> ✅ Подумайте минуту о том, как вы представляете знания в своей голове и превращаете их в заметки. Есть ли формат, который помогает вам лучше запоминать? ## Классификация представлений знаний в компьютере -Мы можем классифицировать различные методы представления знаний в компьютере по следующим категориям: +Мы можем классифицировать различные методы представления знаний в компьютере следующим образом: -* **Сетевые представления** основаны на том факте, что у нас есть сеть взаимосвязанных концепций в нашей голове. Мы можем попытаться воспроизвести такие же сети в виде графа внутри компьютера — так называемая **семантическая сеть**. +* **Сетевые представления** основаны на том, что в нашей голове существует сеть взаимосвязанных понятий. Мы можем попытаться воспроизвести такие же сети в виде графа в компьютере — так называемую **семантическую сеть**. -1. **Триплеты объект-атрибут-значение** или **пары атрибут-значение**. Поскольку граф может быть представлен внутри компьютера в виде списка узлов и рёбер, мы можем представить семантическую сеть в виде списка триплетов, содержащих объекты, атрибуты и значения. Например, мы строим следующие триплеты о языках программирования: +1. **Тройки объект-атрибут-значение** или **пары атрибут-значение**. Поскольку граф можно представить в компьютере в виде списка узлов и связей, семантическую сеть можно представить списком троек, содержащих объекты, атрибуты и значения. Например, мы можем создать следующие тройки о языках программирования: Объект | Атрибут | Значение --------|-----------|------ -Python | является | Непривязанным-Языком -Python | изобретён | Гвидо ван Россумом -Python | синтаксис-блоков | отступы -Непривязанный-Язык | не имеет | определений типов +-------|---------|--------- +Python | является | Языком без типов +Python | изобретен | Гвидо ван Россумом +Python | синтаксис блоков | отступы +Язык без типов | не имеет | определения типов -> ✅ Подумайте, как триплеты могут быть использованы для представления других типов знаний. +> ✅ Подумайте, как тройки могут быть использованы для представления других типов знаний. -2. **Иерархические представления** подчеркивают тот факт, что мы часто создаем иерархию объектов в своей голове. Например, мы знаем, что канарейка — это птица, и все птицы имеют крылья. У нас также есть некоторое представление о том, какого цвета обычно канарейка, и какова их скорость полета. +2. **Иерархические представления** подчеркивают тот факт, что мы часто создаем иерархию объектов в своей голове. Например, мы знаем, что канарейка — это птица, и все птицы имеют крылья. Мы также знаем, какого цвета обычно канарейки и с какой скоростью они летают. - - **Представление рамок** основано на представлении каждого объекта или класса объектов в виде **рамки**, которая содержит **слоты**. Слоты имеют возможные значения по умолчанию, ограничения значений или хранимые процедуры, которые могут быть вызваны для получения значения слота. Все рамки формируют иерархию, аналогичную иерархии объектов в языках программирования с объектно-ориентированной парадигмой. - - **Сценарии** — это особый вид рамок, которые представляют сложные ситуации, которые могут развиваться во времени. + - **Представление в виде фреймов** основано на представлении каждого объекта или класса объектов в виде **фрейма**, который содержит **слоты**. Слоты могут иметь значения по умолчанию, ограничения на значения или хранимые процедуры, которые можно вызвать для получения значения слота. Все фреймы образуют иерархию, похожую на иерархию объектов в объектно-ориентированных языках программирования. + - **Сценарии** — это особый вид фреймов, которые представляют сложные ситуации, разворачивающиеся во времени. **Python** -Слот | Значение | Значение по умолчанию | Интервал | ------|-------|---------------|----------| -Имя | Python | | | -Является | Непривязанным-Языком | | | -Регистр переменной | | CamelCase | | -Длина программы | | | 5-5000 строк | -Синтаксис блока | Отступ | | | +Слот | Значение | Значение по умолчанию | Интервал +-----|---------|-----------------------|--------- +Имя | Python | | +Является | Языком без типов | | +Регистр переменных | | CamelCase | +Длина программы | | | 5-5000 строк +Синтаксис блоков | Отступ | | -3. **Процедурные представления** основаны на представлении знаний в виде списка действий, которые могут быть выполнены, когда возникает определенное условие. - - Производственные правила — это условия «если-то», которые позволяют нам делать выводы. Например, врач может иметь правило, согласно которому **ЕСЛИ** у пациента высокая температура **ИЛИ** высокий уровень С-реактивного белка в анализе крови **ТО** у него воспаление. Как только мы сталкиваемся с одним из условий, мы можем сделать вывод о воспалении, а затем использовать его в дальнейшем рассуждении. - - Алгоритмы можно считать другой формой процедурного представления, хотя их почти никогда не используют напрямую в системах, основанных на знаниях. +3. **Процедурные представления** основаны на представлении знаний в виде списка действий, которые можно выполнить при наступлении определенного условия. + - Правила продукций — это утверждения "если-то", которые позволяют делать выводы. Например, у врача может быть правило: **ЕСЛИ** у пациента высокая температура **ИЛИ** высокий уровень С-реактивного белка в анализе крови, **ТО** у него воспаление. Как только одно из условий выполняется, можно сделать вывод о воспалении и использовать его для дальнейших рассуждений. + - Алгоритмы можно считать другой формой процедурного представления, хотя они почти никогда не используются напрямую в системах, основанных на знаниях. 4. **Логика** изначально была предложена Аристотелем как способ представления универсальных человеческих знаний. - - Логика предикатов как математическая теория слишком богата, чтобы быть вычисляемой, поэтому обычно используется какой-то её подмножество, например, Horn-клаузулы, используемые в Prolog. - - Описательная логика — это семейство логических систем, используемых для представления и рассуждения о иерархиях объектов распределенных представлений знаний, таких как *семантическая паутина*. + - Предикатная логика как математическая теория слишком богата, чтобы быть вычислимой, поэтому обычно используется ее подмножество, например, Хорновы клаузы, применяемые в Prolog. + - Описательная логика — это семейство логических систем, используемых для представления и рассуждения об иерархиях объектов в распределенных представлениях знаний, таких как *семантическая паутина*. ## Экспертные системы -Одним из ранних успехов символического ИИ стали так называемые **экспертные системы** — компьютерные системы, разработанные для того, чтобы действовать как эксперт в какой-то ограниченной предметной области. Они основывались на **базе знаний**, извлеченной от одного или нескольких человеческих экспертов, и содержали **движок вывода**, который выполнял некоторые рассуждения на её основе. +Одним из ранних успехов символического ИИ стали так называемые **экспертные системы** — компьютерные системы, разработанные для работы в качестве эксперта в ограниченной предметной области. Они основывались на **базе знаний**, извлеченной у одного или нескольких человеческих экспертов, и содержали **выводящий механизм**, который выполнял рассуждения на ее основе. -![Человеческая архитектура](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ru.png) | ![Система на основе знаний](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ru.png) ----------------------------------------------|------------------------------------------------ -Упрощенная структура человеческой нейронной системы | Архитектура системы на основе знаний +![Архитектура человека](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ru.png) | ![Система на основе знаний](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ru.png) +---------------------------------------------|----------------------------------------------- +Упрощенная структура нервной системы человека | Архитектура системы на основе знаний -Экспертные системы строятся подобно человеческой системе рассуждений, которая содержит **краткосрочную память** и **долгосрочную память**. Аналогично в системах на основе знаний мы различаем следующие компоненты: +Экспертные системы построены по аналогии с системой рассуждений человека, которая содержит **кратковременную память** и **долговременную память**. Аналогично, в системах на основе знаний выделяют следующие компоненты: -* **Память о проблеме**: содержит знания о проблеме, которая в данный момент решается, т.е. температура или давление крови пациента, есть ли у него воспаление и т.д. Эти знания также называются **статическими знаниями**, потому что они содержат снимок того, что мы в данный момент знаем о проблеме — так называемое *состояние проблемы*. -* **База знаний**: представляет собой долгосрочные знания о предметной области. Она извлекается вручную от человеческих экспертов и не меняется от консультации к консультации. Поскольку она позволяет нам перемещаться от одного состояния проблемы к другому, её также называют **динамическими знаниями**. -* **Движок вывода**: организует весь процесс поиска в пространстве состояний проблемы, задавая вопросы пользователю при необходимости. Он также отвечает за нахождение правильных правил, которые должны быть применены к каждому состоянию. +* **Память проблемы**: содержит знания о текущей решаемой проблеме, например, температуру или кровяное давление пациента, есть ли у него воспаление и т.д. Эти знания также называются **статическими**, так как они представляют собой снимок того, что мы знаем о проблеме в данный момент — так называемое *состояние проблемы*. +* **База знаний**: представляет собой долговременные знания о предметной области. Она извлекается вручную у человеческих экспертов и не меняется от одной консультации к другой. Поскольку она позволяет переходить от одного состояния проблемы к другому, ее также называют **динамическими знаниями**. +* **Выводящий механизм**: управляет всем процессом поиска в пространстве состояний проблемы, задавая вопросы пользователю при необходимости. Он также отвечает за нахождение подходящих правил для каждого состояния. -В качестве примера рассмотрим следующую экспертную систему для определения животного по его физическим характеристикам: +В качестве примера рассмотрим следующую экспертную систему для определения животного на основе его физических характеристик: -![AND-OR Дерево](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ru.png) +![Дерево И-ИЛИ](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ru.png) -> Изображение от [Дмитрия Сошникова](http://soshnikov.com) +> Изображение от [Dmitry Soshnikov](http://soshnikov.com) -Эта диаграмма называется **AND-OR деревом**, и это графическое представление набора производственных правил. Построение дерева полезно в начале извлечения знаний от эксперта. Чтобы представить знания внутри компьютера, удобнее использовать правила: +Эта диаграмма называется **деревом И-ИЛИ** и представляет собой графическое отображение набора правил продукций. Рисование дерева полезно на начальном этапе извлечения знаний у эксперта. Для представления знаний внутри компьютера удобнее использовать правила: ``` IF the animal eats meat @@ -112,59 +119,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Вы можете заметить, что каждое условие на левой стороне правила и действие по сути являются триплетами объект-атрибут-значение (OAV). **Рабочая память** содержит набор триплетов OAV, которые соответствуют решаемой в данный момент проблеме. **Движок правил** ищет правила, для которых удовлетворено условие, и применяет их, добавляя еще один триплет в рабочую память. +Вы можете заметить, что каждое условие в левой части правила и действие представляют собой тройки объект-атрибут-значение (OAV). **Рабочая память** содержит набор троек OAV, соответствующих текущей решаемой проблеме. **Механизм правил** ищет правила, для которых условие выполнено, и применяет их, добавляя новую тройку в рабочую память. -> ✅ Нарисуйте своё собственное AND-OR дерево на тему, которая вам интересна! +> ✅ Нарисуйте свое собственное дерево И-ИЛИ на тему, которая вам интересна! -### Прямое и обратное рассуждение +### Прямой и обратный вывод -Процесс, описанный выше, называется **прямым рассуждением**. Он начинается с некоторых начальных данных о проблеме, доступных в рабочей памяти, и затем выполняет следующий цикл рассуждений: +Описанный выше процесс называется **прямым выводом**. Он начинается с некоторой начальной информации о проблеме, доступной в рабочей памяти, и затем выполняет следующий цикл рассуждений: -1. Если целевой атрибут присутствует в рабочей памяти — остановитесь и дайте результат -2. Ищите все правила, чье условие в данный момент выполнено — получите **набор конфликтов** правил. -3. Выполните **разрешение конфликта** — выберите одно правило, которое будет выполнено на этом шаге. Могут быть различные стратегии разрешения конфликта: - - Выберите первое применимое правило в базе знаний - - Выберите случайное правило - - Выберите *более специфичное* правило, т.е. то, которое удовлетворяет наибольшему количеству условий в «левой части» (LHS) -4. Примените выбранное правило и вставьте новый кусок знания в состояние проблемы -5. Повторите с шага 1. +1. Если целевой атрибут присутствует в рабочей памяти — остановиться и выдать результат. +2. Найти все правила, условия которых выполнены — получить **конфликтное множество** правил. +3. Выполнить **разрешение конфликта** — выбрать одно правило, которое будет выполнено на этом шаге. Возможны разные стратегии разрешения конфликта: + - Выбрать первое применимое правило в базе знаний. + - Выбрать случайное правило. + - Выбрать *более специфичное* правило, т.е. то, которое удовлетворяет наибольшему числу условий в левой части (LHS). +4. Применить выбранное правило и добавить новый фрагмент знаний в состояние проблемы. +5. Повторить с шага 1. -Однако в некоторых случаях мы можем захотеть начать с пустого знания о проблеме и задавать вопросы, которые помогут нам прийти к заключению. Например, при проведении медицинской диагностики мы обычно не выполняем все медицинские анализы заранее, прежде чем начать диагностику пациента. Скорее, мы хотим проводить анализы, когда необходимо принять решение. +Однако в некоторых случаях мы можем захотеть начать с отсутствия знаний о проблеме и задавать вопросы, которые помогут прийти к выводу. Например, при медицинской диагностике мы обычно не проводим все анализы заранее, прежде чем начать диагностику пациента. Мы скорее хотим проводить анализы, когда нужно принять решение. -Этот процесс можно смоделировать с помощью **обратного рассуждения**. Он управляется **целью** — значением атрибута, который мы ищем: +Этот процесс можно смоделировать с помощью **обратного вывода**. Он управляется **целью** — значением атрибута, которое мы хотим найти: -1. Выберите все правила, которые могут дать нам значение цели (т.е. с целью на правой стороне (RHS)) — набор конфликтов -1. Если для этого атрибута нет правил или есть правило, которое говорит, что мы должны спросить значение у пользователя — спросите его, иначе: -1. Используйте стратегию разрешения конфликта, чтобы выбрать одно правило, которое мы будем использовать в качестве *гипотезы* — мы попытаемся его доказать -1. Повторяйте процесс для всех атрибутов в LHS правила, пытаясь доказать их как цели -1. Если в какой-то момент процесс не удается — используйте другое правило на шаге 3. +1. Выбрать все правила, которые могут дать значение цели (т.е. с целью в правой части (RHS)) — конфликтное множество. +2. Если для этого атрибута нет правил или есть правило, указывающее на необходимость спросить значение у пользователя — спросить его, иначе: +3. Использовать стратегию разрешения конфликта, чтобы выбрать одно правило, которое мы будем использовать как *гипотезу* — мы попытаемся доказать его. +4. Рекурсивно повторить процесс для всех атрибутов в левой части правила, пытаясь доказать их как цели. +5. Если в какой-то момент процесс не удается — использовать другое правило на шаге 3. -> ✅ В каких ситуациях прямое рассуждение более уместно? А как насчет обратного рассуждения? +> ✅ В каких ситуациях более уместен прямой вывод? А обратный вывод? ### Реализация экспертных систем -Экспертные системы могут быть реализованы с помощью различных инструментов: +Экспертные системы можно реализовать с помощью различных инструментов: -* Программируя их напрямую на каком-либо высокоуровневом языке программирования. Это не лучшая идея, потому что главное преимущество системы на основе знаний заключается в том, что знания отделены от вывода, и потенциально эксперт в предметной области должен иметь возможность писать правила, не понимая деталей процесса вывода. -* Используя **оболочку экспертных систем**, т.е. систему, специально разработанную для заполнения знаниями с использованием какого-либо языка представления знаний. +* Программирование их напрямую на каком-либо высокоуровневом языке программирования. Это не лучший вариант, так как главное преимущество системы на основе знаний заключается в том, что знания отделены от вывода, и потенциально эксперт в предметной области должен иметь возможность писать правила, не понимая деталей процесса вывода. +* Использование **оболочки экспертной системы**, т.е. системы, специально разработанной для заполнения знаниями с использованием языка представления знаний. ## ✍️ Упражнение: Вывод о животных -Смотрите [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) для примера реализации экспертной системы с прямым и обратным выводом. +См. [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) для примера реализации экспертной системы с прямым и обратным выводом. +> **Примечание**: Этот пример довольно простой и лишь дает представление о том, как выглядит экспертная система. Когда вы начнете создавать такую систему, вы заметите проявление некоторого *интеллектуального* поведения только после достижения определенного количества правил, примерно 200+. В какой-то момент правила становятся слишком сложными, чтобы держать их все в голове, и тогда вы можете начать задаваться вопросом, почему система принимает те или иные решения. Однако важной характеристикой систем, основанных на знаниях, является то, что вы всегда можете *объяснить*, как именно было принято любое из решений. +## Онтологии и Семантическая Веб -> **Примечание**: Этот пример довольно прост и лишь дает представление о том, как выглядит экспертная система. Как только вы начнете создавать такую систему, вы заметите некоторое *интеллектуальное* поведение только тогда, когда достигнете определенного количества правил, около 200+. В какой-то момент правила становятся слишком сложными, чтобы держать все их в голове, и в этот момент вы можете начать задаваться вопросом, почему система принимает те или иные решения. Однако важной характеристикой систем на основе знаний является то, что вы всегда можете *объяснить*, как были приняты те или иные решения. +В конце XX века появилась инициатива использовать представление знаний для аннотирования интернет-ресурсов, чтобы можно было находить ресурсы, соответствующие очень специфическим запросам. Это движение получило название **Семантическая Веб**, и оно основывалось на нескольких концепциях: -## Онтологии и Семантическая паутина +- Специальное представление знаний, основанное на **[логиках описания](https://en.wikipedia.org/wiki/Description_logic)** (DL). Оно похоже на фреймовое представление знаний, так как строит иерархию объектов с их свойствами, но имеет формальную логическую семантику и вывод. Существует целое семейство логик описания, которые балансируют между выразительностью и алгоритмической сложностью вывода. +- Распределённое представление знаний, где все концепции представлены глобальными URI-идентификаторами, что позволяет создавать иерархии знаний, охватывающие весь интернет. +- Семейство языков на основе XML для описания знаний: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). -В конце 20 века была инициатива использовать представление знаний для аннотирования интернет-ресурсов, чтобы можно было находить ресурсы, которые соответствуют очень специфическим запросам. Это движение назвали **Семантическая паутина**, и оно основывалось на нескольких концепциях: +Ключевым понятием в Семантической Веб является **онтология**. Это явное описание предметной области с использованием формального представления знаний. Самая простая онтология может быть просто иерархией объектов в предметной области, но более сложные онтологии включают правила, которые можно использовать для вывода. -- Специальное представление знаний на основе **[логик описания](https://en.wikipedia.org/wiki/Description_logic)** (DL). Оно похоже на представление знаний в виде рамок, потому что строит иерархию объектов с свойствами, но имеет формальную логическую семантику и вывод. Существует целое семейство DL, которые балансируют между выразительностью и алгоритмической сложностью вывода. -- Распределенное представление знаний, где все концепции представлены глобальным URI-идентификатором, что позволяет создавать иерархии знаний, охватывающие интернет. -- Семейство языков на основе XML для описания знаний: RDF (Рамки описания ресурсов), RDFS (Схема RDF), OWL (Язык веб-онтологий). - -Основной концепцией в Семантической паутине является концепция **Онтологии**. Она относится к явной спецификации предметной области с использованием некоторого формального представления знаний. Самая простая онтология может быть просто иерархией объектов в предметной области, но более сложные онтологии будут включать правила, которые могут использоваться для вывода. - -В семантической паутине все представления основаны на триплетах. Каждый объект и каждое отношение уникально идентифицированы URI. Например, если мы хотим заявить о том, что этот Учебный план ИИ был разработан Дмитрием Сошниковым 1 января 2022 года — вот триплеты, которые мы можем использовать: +В Семантической Веб все представления основаны на триплетах. Каждый объект и каждая связь уникально идентифицируются URI. Например, если мы хотим указать факт, что этот учебный курс по ИИ был разработан Дмитрием Сошниковым 1 января 2022 года, вот триплеты, которые мы можем использовать: @@ -173,17 +178,17 @@ http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creati http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com ``` -> ✅ Здесь `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` — это некоторые известные и универсально принятые URI для выражения концепций *создатель* и *дата создания*. +> ✅ Здесь `http://www.example.com/terms/creation-date` и `http://purl.org/dc/elements/1.1/creator` — это известные и общепринятые URI для выражения понятий *создатель* и *дата создания*. -В более сложном случае, если мы хотим определить список создателей, мы можем использовать некоторые структуры данных, определенные в RDF. +В более сложном случае, если мы хотим определить список создателей, мы можем использовать некоторые структуры данных, определённые в RDF. -> Диаграммы выше от [Дмитрия Сошникова](http://soshnikov.com) +> Диаграммы выше созданы [Дмитрием Сошниковым](http://soshnikov.com) -Прогресс в создании Семантической паутины был несколько замедлен успехом поисковых систем и технологий обработки естественного языка, которые позволяют извлекать структурированные данные из текста. Однако в некоторых областях все еще ведутся значительные усилия по поддержанию онтологий и баз знаний. Несколько проектов, которые стоит отметить: +Прогресс в создании Семантической Веб был несколько замедлен успехом поисковых систем и методов обработки естественного языка, которые позволяют извлекать структурированные данные из текста. Однако в некоторых областях всё ещё предпринимаются значительные усилия для поддержания онтологий и баз знаний. Несколько проектов, заслуживающих внимания: -* [WikiData](https://wikidata.org/) — это коллекция машинно-читаемых баз знаний, связанных с Википедией. Большинство данных извлекаются из *Инфобоксов* Википедии, кусочков структурированного контента на страницах Википедии. Вы можете [запрашивать](https://query.wikidata.org/) wikidata в SPARQL, специальном языке запросов для Семантической паутины. Вот пример запроса, который отображает самые популярные цвета глаз среди людей: +* [WikiData](https://wikidata.org/) — это коллекция машиночитаемых баз знаний, связанных с Википедией. Большая часть данных извлекается из *Инфобоксов* Википедии, структурированных элементов контента на страницах Википедии. Вы можете [запросить](https://query.wikidata.org/) данные WikiData с помощью SPARQL, специального языка запросов для Семантической Веб. Вот пример запроса, который отображает самые популярные цвета глаз среди людей: ```sparql #defaultView:BubbleChart @@ -197,9 +202,47 @@ WHERE GROUP BY ?eyeColorLabel ``` -* [DBpedia](https://www.dbpedia.org/) — это еще одна инициатива, аналогичная WikiData. +* [DBpedia](https://www.dbpedia.org/) — ещё одна инициатива, похожая на WikiData. -> ✅ Если вы хотите поэкспериментировать с созданием своих собственных онтологий или открыть существующие, существует отличный визуальный редактор онтологий под названием [Protégé](https://protege.st +> ✅ Если вы хотите поэкспериментировать с созданием собственных онтологий или открытием существующих, существует отличный визуальный редактор онтологий под названием [Protégé](https://protege.stanford.edu/). Скачайте его или используйте онлайн. + + + +*Веб-редактор Protégé с открытой онтологией семьи Романовых. Скриншот Дмитрия Сошникова* + +## ✍️ Упражнение: Онтология семьи + +См. [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) для примера использования методов Семантической Веб для анализа семейных отношений. Мы возьмём генеалогическое древо, представленное в формате GEDCOM, и онтологию семейных отношений, чтобы построить граф всех семейных связей для заданного набора людей. + +## Граф концепций Microsoft + +В большинстве случаев онтологии создаются вручную. Однако также возможно **извлекать** онтологии из неструктурированных данных, например, из текстов на естественном языке. + +Одна из таких попыток была предпринята Microsoft Research и привела к созданию [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Это большая коллекция сущностей, сгруппированных с использованием отношения наследования `is-a`. Она позволяет отвечать на вопросы вроде "Что такое Microsoft?" — ответ будет что-то вроде "компания с вероятностью 0.87 и бренд с вероятностью 0.75". + +Граф доступен либо через REST API, либо в виде большого текстового файла, содержащего все пары сущностей. + +## ✍️ Упражнение: Граф концепций + +Попробуйте блокнот [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb), чтобы увидеть, как можно использовать Microsoft Concept Graph для группировки новостных статей по категориям. + +## Заключение + +Сегодня ИИ часто ассоциируется с *машинным обучением* или *нейронными сетями*. Однако человек также демонстрирует явное рассуждение, что в настоящее время не реализовано в нейронных сетях. В реальных проектах явное рассуждение всё ещё используется для выполнения задач, требующих объяснений или возможности контролируемо изменять поведение системы. + +## 🚀 Задание + +В блокноте Family Ontology, связанном с этим уроком, есть возможность поэкспериментировать с другими семейными связями. Попробуйте обнаружить новые связи между людьми в генеалогическом древе. + +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Обзор и самостоятельное изучение + +Проведите исследование в интернете, чтобы узнать, в каких областях люди пытались количественно оценить и формализовать знания. Ознакомьтесь с таксономией Блума и изучите, как в истории люди пытались осмыслить окружающий мир. Изучите работу Линнея по созданию таксономии организмов и обратите внимание на то, как Дмитрий Менделеев создал способ описания и группировки химических элементов. Какие ещё интересные примеры вы можете найти? + +**Задание**: [Создайте онтологию](assignment.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/2-Symbolic/assignment.md b/translations/ru/lessons/2-Symbolic/assignment.md index 704cb530..28acc589 100644 --- a/translations/ru/lessons/2-Symbolic/assignment.md +++ b/translations/ru/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ -# Создание Онтологии + +# Создание онтологии -Создание базы знаний заключается в категоризации модели, представляющей факты о теме. Выберите тему - например, человека, место или предмет - и затем создайте модель этой темы. Используйте некоторые из техник и стратегий построения моделей, описанных в этом уроке. Примером может быть создание онтологии гостиной с мебелью, освещением и так далее. Чем гостиная отличается от кухни? От ванной? Как вы можете определить, что это гостиная, а не столовая? Используйте [Protégé](https://protege.stanford.edu/) для создания вашей онтологии. +Создание базы знаний заключается в категоризации модели, представляющей факты о какой-либо теме. Выберите тему — например, человека, место или вещь — и создайте модель этой темы. Используйте некоторые из техник и стратегий построения моделей, описанных в этом уроке. Примером может быть создание онтологии гостиной с мебелью, освещением и так далее. Чем гостиная отличается от кухни? Ванной комнаты? Как вы определяете, что это гостиная, а не столовая? Используйте [Protégé](https://protege.stanford.edu/) для создания вашей онтологии. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md index 7a804cf8..af2a9826 100644 --- a/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,48 +1,57 @@ -# Введение в Нейронные Сети: Перцептрон + +# Введение в нейронные сети: Перцептрон -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -Одной из первых попыток реализовать что-то похожее на современную нейронную сеть была работа Фрэнка Розенблата из Корнельской аэрокосмической лаборатории в 1957 году. Это была аппаратная реализация под названием "Mark-1", предназначенная для распознавания примитивных геометрических фигур, таких как треугольники, квадраты и круги. +Одной из первых попыток создать что-то похожее на современную нейронную сеть была работа Фрэнка Розенблатта из Корнельской аэрокосмической лаборатории в 1957 году. Это была аппаратная реализация под названием "Mark-1", предназначенная для распознавания простых геометрических фигур, таких как треугольники, квадраты и круги. | | | |--------------|-----------| -|Фрэнк Розенблат | Перцептрон Mark 1| +|Фрэнк Розенблатт | Перцептрон Mark 1| > Изображения [из Википедии](https://en.wikipedia.org/wiki/Perceptron) -Входное изображение представляло собой массив фотосенсоров размером 20x20, поэтому нейронная сеть имела 400 входов и один бинарный выход. Простая сеть содержала один нейрон, также называемый **единицей пороговой логики**. Веса нейронной сети действовали как потенциометры, которые требовали ручной настройки в процессе обучения. +Входное изображение представлялось массивом из 20x20 фотоячеек, так что нейронная сеть имела 400 входов и один бинарный выход. Простая сеть содержала один нейрон, который также называли **пороговым логическим элементом**. Веса нейронной сети функционировали как потенциометры, которые требовали ручной настройки во время обучения. -> ✅ Потенциометр — это устройство, которое позволяет пользователю регулировать сопротивление цепи. +> ✅ Потенциометр — это устройство, позволяющее пользователю регулировать сопротивление в цепи. -> В то время The New York Times писала о перцептроне: *эмбрион электронного компьютера, который [ВМС] ожидает, что он сможет ходить, говорить, видеть, писать, воспроизводить себя и осознавать свое существование.* +> В то время The New York Times писала о перцептроне: *эмбрион электронного компьютера, который [военно-морской флот] ожидает, сможет ходить, говорить, видеть, писать, воспроизводить себя и осознавать свое существование.* -## Модель Перцептрона +## Модель перцептрона -Предположим, что в нашей модели есть N признаков, в этом случае входной вектор будет вектором размерности N. Перцептрон — это модель **бинарной классификации**, то есть он может различать два класса входных данных. Мы предположим, что для каждого входного вектора x выход нашего перцептрона будет либо +1, либо -1, в зависимости от класса. Выход будет вычисляться по формуле: +Предположим, что в нашей модели есть N признаков, в этом случае входной вектор будет иметь размер N. Перцептрон — это модель для **бинарной классификации**, то есть он может различать два класса входных данных. Мы будем считать, что для каждого входного вектора x выход нашего перцептрона будет либо +1, либо -1, в зависимости от класса. Выход вычисляется по формуле: y(x) = f(wTx) -где f — это ступенчатая активационная функция +где f — это ступенчатая функция активации. -## Обучение Перцептрона +## Обучение перцептрона -Чтобы обучить перцептрон, нам нужно найти вектор весов w, который классифицирует большинство значений правильно, т.е. приводит к наименьшей **ошибке**. Эта ошибка E определяется **критерием перцептрона** следующим образом: +Чтобы обучить перцептрон, необходимо найти вектор весов w, который классифицирует большинство значений правильно, то есть приводит к минимальной **ошибке**. Эта ошибка E определяется **критерием перцептрона** следующим образом: E(w) = -∑wTxiti где: -* сумма берется по тем обучающим данным i, которые приводят к неправильной классификации -* xi — это входные данные, а ti — это либо -1, либо +1 для отрицательных и положительных примеров соответственно. +* сумма берется по тем точкам обучающего набора i, которые классифицируются неверно; +* xi — входные данные, а ti принимает значения -1 или +1 для отрицательных и положительных примеров соответственно. -Этот критерий рассматривается как функция весов w, и нам нужно его минимизировать. Часто используется метод, называемый **градиентным спуском**, в котором мы начинаем с некоторых начальных весов w(0), а затем на каждом шаге обновляем веса по формуле: +Этот критерий рассматривается как функция весов w, и его необходимо минимизировать. Часто используется метод, называемый **градиентным спуском**, при котором мы начинаем с некоторого начального значения весов w(0), а затем на каждом шаге обновляем веса по формуле: w(t+1) = w(t) - η∇E(w) -Здесь η — это так называемая **скорость обучения**, а ∇E(w) обозначает **градиент** E. После того как мы вычислим градиент, мы получим +Здесь η — это так называемая **скорость обучения**, а ∇E(w) обозначает **градиент** функции E. После вычисления градиента мы получаем: w(t+1) = w(t) + ∑ηxiti @@ -70,26 +79,26 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): ## Заключение -В этом уроке вы узнали о перцептроне, который является моделью бинарной классификации, и о том, как его обучать, используя вектор весов. +В этом уроке вы узнали о перцептроне, который является моделью для бинарной классификации, и о том, как его обучать с использованием вектора весов. -## 🚀 Вызов +## 🚀 Задание Если вы хотите попробовать создать свой собственный перцептрон, попробуйте [эту лабораторную работу на Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), которая использует [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Чтобы увидеть, как мы можем использовать перцептрон для решения игрушечной задачи, а также реальных проблем, и продолжить обучение - перейдите в блокнот [Перцептрон](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). +Чтобы узнать, как можно использовать перцептрон для решения учебных задач, а также реальных проблем, и продолжить обучение, перейдите в ноутбук [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). -Вот интересная [статья о перцептронах](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) также. +Вот интересная [статья о перцептронах](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). ## [Задание](lab/README.md) -В этом уроке мы реализовали перцептрон для задачи бинарной классификации и использовали его для классификации двух рукописных цифр. В этой лабораторной работе вам предлагается полностью решить задачу классификации цифр, т.е. определить, какая цифра наиболее вероятно соответствует данному изображению. +В этом уроке мы реализовали перцептрон для задачи бинарной классификации и использовали его для классификации двух рукописных цифр. В этой лабораторной работе вам предлагается полностью решить задачу классификации цифр, то есть определить, какая цифра наиболее вероятно соответствует данному изображению. * [Инструкции](lab/README.md) -* [Блокнот](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +* [Ноутбук](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index f0f5b394..814580d7 100644 --- a/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ -# Многоклассовая классификация с помощью перцептрона + +# Многоклассовая классификация с использованием перцептрона -Лабораторное задание из [Курса ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). -## Задача +## Задание -Используя код, который мы разработали в этом уроке для бинарной классификации рукописных цифр MNIST, создайте многоклассовый классификатор, который сможет распознавать любую цифру. Вычислите точность классификации на обучающем и тестовом наборах данных и выведите матрицу путаницы. +Используя код, который мы разработали на этом уроке для бинарной классификации рукописных цифр MNIST, создайте многоклассовый классификатор, который сможет распознавать любую цифру. Вычислите точность классификации на обучающем и тестовом наборах данных и выведите матрицу ошибок. ## Подсказки -1. Для каждой цифры создайте набор данных для бинарного классификатора "эта цифра против всех остальных цифр". +1. Для каждой цифры создайте набор данных для бинарного классификатора "эта цифра против всех остальных". 1. Обучите 10 различных перцептронов для бинарной классификации (по одному для каждой цифры). 1. Определите функцию, которая будет классифицировать входную цифру. -> **Подсказка**: Если мы объединим веса всех 10 перцептронов в одну матрицу, мы сможем применить все 10 перцептронов к входным цифрам с помощью одного умножения матриц. Наиболее вероятную цифру можно будет найти, просто применив операцию `argmax` к выходным данным. +> **Подсказка**: Если объединить веса всех 10 перцептронов в одну матрицу, мы сможем применить все 10 перцептронов к входным цифрам с помощью одной матричной операции умножения. Наиболее вероятную цифру можно определить, просто применив операцию `argmax` к результату. -## Начало работы с ноутбуком +## Начальный ноутбук -Начните лабораторную работу, открыв [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb). +Начните лабораторную работу, открыв [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md index a8538ba3..8fdd1632 100644 --- a/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# Введение в Нейронные Сети. Многослойный Перцептрон + +# Введение в нейронные сети. Многослойный перцептрон -В предыдущем разделе вы узнали о самой простой модели нейронной сети - однослойном перцептроне, линейной модели для классификации двух классов. +В предыдущем разделе вы узнали о самой простой модели нейронной сети — однослойном перцептроне, линейной модели для классификации на два класса. В этом разделе мы расширим эту модель до более гибкой структуры, которая позволит нам: -* выполнять **многоклассовую классификацию** в дополнение к классификации на два класса -* решать **регрессионные задачи** в дополнение к классификации -* разделять классы, которые не могут быть линейно разделены +* выполнять **многоклассовую классификацию** в дополнение к двухклассовой +* решать **задачи регрессии** в дополнение к классификации +* разделять классы, которые не являются линейно разделимыми -Мы также разработаем собственную модульную структуру на Python, которая позволит нам строить различные архитектуры нейронных сетей. +Мы также разработаем собственный модульный фреймворк на Python, который позволит нам создавать различные архитектуры нейронных сетей. -## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Квиз перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) -## Формализация Машинного Обучения +## Формализация машинного обучения -Давайте начнем с формализации задачи Машинного Обучения. Предположим, у нас есть обучающий набор данных **X** с метками **Y**, и нам нужно построить модель *f*, которая будет делать наиболее точные прогнозы. Качество прогнозов измеряется с помощью **функции потерь** ℒ. Часто используются следующие функции потерь: +Начнем с формализации задачи машинного обучения. Предположим, у нас есть обучающая выборка **X** с метками **Y**, и нам нужно построить модель *f*, которая будет делать наиболее точные предсказания. Качество предсказаний измеряется с помощью **функции потерь** ℒ. Часто используются следующие функции потерь: -* Для регрессионной задачи, когда нам нужно предсказать число, мы можем использовать **абсолютную ошибку** ∑i|f(x(i))-y(i)| или **квадратную ошибку** ∑i(f(x(i))-y(i))2 -* Для классификации мы используем **0-1 потерю** (которая по сути такая же, как **точность** модели) или **логистическую потерю**. +* Для задачи регрессии, когда нужно предсказать число, можно использовать **абсолютную ошибку** ∑i|f(x(i))-y(i)| или **квадратичную ошибку** ∑i(f(x(i))-y(i))2 +* Для классификации используется **0-1 потеря** (которая по сути эквивалентна **точности** модели) или **логистическая потеря**. -Для одноуровневого перцептрона функция *f* была определена как линейная функция *f(x)=wx+b* (где *w* - это матрица весов, *x* - вектор входных признаков, а *b* - вектор смещения). Для различных архитектур нейронных сетей эта функция может принимать более сложную форму. +Для однослойного перцептрона функция *f* определялась как линейная функция *f(x)=wx+b* (где *w* — матрица весов, *x* — вектор входных признаков, а *b* — вектор смещений). Для различных архитектур нейронных сетей эта функция может принимать более сложную форму. -> В случае классификации часто желательно получить вероятности соответствующих классов в качестве выходных данных сети. Чтобы преобразовать произвольные числа в вероятности (например, для нормализации выходных данных), мы часто используем функцию **softmax** σ, и функция *f* становится *f(x)=σ(wx+b)*. +> В случае классификации часто желательно получить вероятности соответствующих классов на выходе сети. Чтобы преобразовать произвольные числа в вероятности (например, нормализовать выход), часто используется функция **softmax** σ, и функция *f* становится *f(x)=σ(wx+b)*. -В определении *f* выше, *w* и *b* называются **параметрами** θ=⟨*w,b*⟩. Учитывая набор данных ⟨**X**,**Y**⟩, мы можем вычислить общую ошибку по всему набору данных как функцию параметров θ. +В определении *f* выше *w* и *b* называются **параметрами** θ=⟨*w,b*⟩. Имея набор данных ⟨**X**,**Y**⟩, мы можем вычислить общую ошибку на всем наборе данных как функцию параметров θ. -> ✅ **Цель обучения нейронной сети - минимизировать ошибку, изменяя параметры θ.** +> ✅ **Цель обучения нейронной сети — минимизировать ошибку, изменяя параметры θ** -## Оптимизация Градиентного Спуска +## Оптимизация методом градиентного спуска -Существует известный метод оптимизации функций, называемый **градиентным спуском**. Идея заключается в том, что мы можем вычислить производную (в многомерном случае называемую **градиентом**) функции потерь по отношению к параметрам и изменять параметры таким образом, чтобы ошибка уменьшалась. Это можно формализовать следующим образом: +Существует известный метод оптимизации функций, называемый **градиентным спуском**. Идея заключается в том, что мы можем вычислить производную (в многомерном случае — **градиент**) функции потерь по параметрам и изменять параметры так, чтобы ошибка уменьшалась. Это можно формализовать следующим образом: -* Инициализируйте параметры некоторыми случайными значениями w(0), b(0). -* Повторяйте следующий шаг много раз: +* Инициализировать параметры случайными значениями w(0), b(0) +* Повторять следующий шаг много раз: - w(i+1) = w(i)-η∂ℒ/∂w - b(i+1) = b(i)-η∂ℒ/∂b -Во время обучения шаги оптимизации предполагается вычислять с учетом всего набора данных (не забывайте, что потеря вычисляется как сумма по всем обучающим образцам). Однако в реальной жизни мы берем небольшие порции набора данных, называемые **мини-пакетами**, и вычисляем градиенты на основе подмножества данных. Поскольку подмножество выбирается случайным образом каждый раз, такой метод называется **стохастическим градиентным спуском** (SGD). +Во время обучения шаги оптимизации предполагается рассчитывать с учетом всего набора данных (помните, что потеря вычисляется как сумма по всем обучающим примерам). Однако на практике мы берем небольшие части набора данных, называемые **минибатчами**, и вычисляем градиенты на основе подмножества данных. Поскольку подмножество выбирается случайно каждый раз, такой метод называется **стохастическим градиентным спуском** (SGD). -## Многослойные Перцептроны и Обратное Распространение +## Многослойные перцептроны и обратное распространение ошибки -Однослойная сеть, как мы видели выше, способна классифицировать линейно разделимые классы. Чтобы построить более богатую модель, мы можем комбинировать несколько слоев сети. Математически это будет означать, что функция *f* будет иметь более сложную форму и будет вычисляться в несколько этапов: +Однослойная сеть, как мы видели выше, способна классифицировать линейно разделимые классы. Чтобы построить более сложную модель, мы можем объединить несколько слоев сети. Математически это означает, что функция *f* будет иметь более сложную форму и вычисляться в несколько шагов: * z1=w1x+b1 * z2=w2α(z1)+b2 * f = σ(z2) -Здесь α - это **нелинейная функция активации**, σ - это функция softmax, а параметры θ=<*w1,b1,w2,b2*. +Здесь α — это **нелинейная функция активации**, σ — функция softmax, а параметры θ=<*w1,b1,w2,b2*>. -Алгоритм градиентного спуска останется тем же, но будет сложнее вычислять градиенты. Учитывая правило цепного дифференцирования, мы можем вычислить производные как: +Алгоритм градиентного спуска останется тем же, но вычисление градиентов станет сложнее. Используя правило дифференцирования сложной функции, мы можем вычислить производные следующим образом: * ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) * ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ Правило цепного дифференцирования используется для вычисления производных функции потерь по отношению к параметрам. +> ✅ Правило дифференцирования сложной функции используется для вычисления производных функции потерь по параметрам. -Обратите внимание, что самая левая часть всех этих выражений одинакова, и, следовательно, мы можем эффективно вычислять производные, начиная с функции потерь и двигаясь "назад" по вычислительному графу. Таким образом, метод обучения многослойного перцептрона называется **обратным распространением**, или 'backprop'. +Обратите внимание, что левая часть всех этих выражений одинакова, и поэтому мы можем эффективно вычислять производные, начиная с функции потерь и двигаясь "назад" по вычислительному графу. Таким образом, метод обучения многослойного перцептрона называется **обратным распространением ошибки** или "backprop". -вычислительный граф +граф вычислений -> TODO: цитирование изображения +> TODO: ссылка на изображение -> ✅ Мы рассмотрим обратное распространение гораздо более подробно в нашем примере с ноутбуком. +> ✅ Мы рассмотрим обратное распространение ошибки гораздо подробнее в нашем примере в ноутбуке. ## Заключение -В этом уроке мы создали нашу собственную библиотеку нейронных сетей и использовали ее для простой задачи классификации в двумерном пространстве. +В этом уроке мы создали собственную библиотеку для работы с нейронными сетями и использовали ее для простой задачи классификации в двумерном пространстве. -## 🚀 Задача +## 🚀 Задание -В приложенном ноутбуке вы реализуете свою собственную структуру для построения и обучения многослойных перцептронов. Вы сможете подробно увидеть, как работают современные нейронные сети. +В сопровождающем ноутбуке вы реализуете собственный фреймворк для построения и обучения многослойных перцептронов. Вы сможете подробно изучить, как работают современные нейронные сети. -Перейдите к ноутбуку [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) и выполните его. +Перейдите к ноутбуку [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) и выполните задания. -## [Пост-тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Квиз после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Обратное распространение - это общий алгоритм, используемый в ИИ и МЛ, который стоит изучить [более подробно](https://wikipedia.org/wiki/Backpropagation). +Обратное распространение ошибки — это распространенный алгоритм в ИИ и МО, который стоит изучить [подробнее](https://wikipedia.org/wiki/Backpropagation). ## [Задание](lab/README.md) -В этой лабораторной работе вам предлагается использовать структуру, которую вы построили в этом уроке, для решения задачи классификации рукописных цифр MNIST. +В этой лабораторной работе вам предлагается использовать фреймворк, созданный в этом уроке, для решения задачи классификации рукописных цифр MNIST. * [Инструкции](lab/README.md) * [Ноутбук](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index a543c9a2..012cb5c4 100644 --- a/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ -# Классификация MNIST с использованием нашей собственной платформы + +# Классификация MNIST с использованием нашего собственного фреймворка -Лабораторная работа из [Курса по ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [Учебной программы "ИИ для начинающих"](https://github.com/microsoft/ai-for-beginners). ## Задача -Решите задачу классификации рукописных цифр MNIST, используя одно-, двух- и трехслойный перцептрон. Используйте нейронную сеть, которую мы разработали на уроке. +Решите задачу классификации рукописных цифр MNIST, используя одно-, двух- и трехслойный перцептрон. Используйте нейронный сетевой фреймворк, который мы разработали на уроке. ## Начало работы с ноутбуком -Начните лабораторную работу, открыв [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb). +Начните лабораторную работу, открыв [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) ## Вопросы -В результате этой лабораторной работы постарайтесь ответить на следующие вопросы: +В результате выполнения этой лабораторной работы попробуйте ответить на следующие вопросы: - Влияет ли функция активации между слоями на производительность сети? -- Нужна ли нам двух- или трехслойная сеть для этой задачи? -- Испытывали ли вы какие-либо проблемы при обучении сети? Особенно когда количество слоев увеличивалось. -- Как ведут себя веса сети во время обучения? Вы можете построить график максимального абсолютного значения весов по сравнению с эпохой, чтобы понять взаимосвязь. +- Нужна ли для этой задачи двух- или трехслойная сеть? +- Возникли ли у вас какие-либо проблемы при обучении сети? Особенно при увеличении количества слоев. +- Как ведут себя веса сети во время обучения? Вы можете построить график максимального абсолютного значения весов в зависимости от эпохи, чтобы понять взаимосвязь. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md index 8ab1cc19..d4ea7d33 100644 --- a/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,107 +1,116 @@ -# Фреймворки нейронных сетей + +# Фреймворки для нейронных сетей -Как мы уже узнали, для эффективного обучения нейронных сетей нам нужно сделать две вещи: +Как мы уже узнали, для эффективного обучения нейронных сетей необходимо выполнить два условия: -* Операции с тензорами, например, умножение, сложение и вычисление некоторых функций, таких как сигмоид или софтмакс -* Вычисление градиентов всех выражений для выполнения оптимизации с помощью градиентного спуска +* Уметь работать с тензорами, например, умножать, складывать и вычислять функции, такие как сигмоида или softmax. +* Уметь вычислять градиенты всех выражений для выполнения оптимизации методом градиентного спуска. -## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [Квиз перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -Хотя библиотека `numpy` может выполнять первую часть, нам нужен механизм для вычисления градиентов. В [нашем фреймворке](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), который мы разработали в предыдущем разделе, нам пришлось вручную программировать все функции производных внутри метода `backward`, который выполняет обратное распространение. В идеале фреймворк должен предоставлять возможность вычислять градиенты *любого выражения*, которое мы можем определить. +Хотя библиотека `numpy` может выполнять первую задачу, нам нужен механизм для вычисления градиентов. В [нашем фреймворке](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), который мы разработали в предыдущем разделе, нам приходилось вручную программировать все функции производных в методе `backward`, который выполняет обратное распространение ошибки. В идеале фреймворк должен предоставлять возможность вычислять градиенты *любого выражения*, которое мы можем определить. -Еще одна важная вещь — это возможность выполнять вычисления на GPU или любых других специализированных вычислительных устройствах, таких как [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Обучение глубоких нейронных сетей требует *много* вычислений, и возможность параллелизировать эти вычисления на GPU очень важна. +Еще один важный аспект — возможность выполнять вычисления на GPU или других специализированных вычислительных устройствах, таких как [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Обучение глубоких нейронных сетей требует *огромного* количества вычислений, и возможность параллелизовать эти вычисления на GPU крайне важна. -> ✅ Термин «параллелизовать» означает распределять вычисления между несколькими устройствами. +> ✅ Термин "параллелизация" означает распределение вычислений между несколькими устройствами. -В настоящее время двумя наиболее популярными нейронными фреймворками являются: [TensorFlow](http://TensorFlow.org) и [PyTorch](https://pytorch.org/). Оба предоставляют низкоуровневый API для работы с тензорами как на CPU, так и на GPU. Сверху низкоуровневого API также существуют высокоуровневые API, называемые [Keras](https://keras.io/) и [PyTorch Lightning](https://pytorchlightning.ai/) соответственно. +На сегодняшний день два самых популярных фреймворка для нейронных сетей — это [TensorFlow](http://TensorFlow.org) и [PyTorch](https://pytorch.org/). Оба предоставляют низкоуровневый API для работы с тензорами как на CPU, так и на GPU. Помимо низкоуровневого API, также существуют высокоуровневые API, такие как [Keras](https://keras.io/) и [PyTorch Lightning](https://pytorchlightning.ai/). Низкоуровневый API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) -------------------|----------------------------------|-------------------------------- -Высокоуровневый API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +--------------------|-------------------------------------|-------------------------------- +Высокоуровневый API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**Низкоуровневые API** в обоих фреймворках позволяют строить так называемые **вычислительные графы**. Этот граф определяет, как вычислить выходные данные (обычно функцию потерь) с заданными входными параметрами и может быть отправлен на вычисление на GPU, если он доступен. Существуют функции для дифференцирования этого вычислительного графа и вычисления градиентов, которые затем могут быть использованы для оптимизации параметров модели. +**Низкоуровневые API** в обоих фреймворках позволяют создавать так называемые **вычислительные графы**. Этот граф определяет, как вычислять выходные данные (обычно функцию потерь) с заданными входными параметрами, и может быть отправлен на выполнение на GPU, если оно доступно. Существуют функции для дифференцирования этого вычислительного графа и вычисления градиентов, которые затем можно использовать для оптимизации параметров модели. -**Высокоуровневые API** рассматривают нейронные сети как **последовательность слоев** и значительно упрощают построение большинства нейронных сетей. Обучение модели обычно требует подготовки данных, а затем вызова функции `fit` для выполнения работы. +**Высокоуровневые API** рассматривают нейронные сети как **последовательность слоев**, что значительно упрощает создание большинства нейронных сетей. Обучение модели обычно сводится к подготовке данных и вызову функции `fit`. -Высокоуровневый API позволяет быстро строить типичные нейронные сети, не беспокоясь о множестве деталей. В то же время низкоуровневый API предлагает гораздо больший контроль над процессом обучения, и, следовательно, они часто используются в исследованиях, когда вы работаете с новыми архитектурами нейронных сетей. +Высокоуровневый API позволяет быстро создавать типичные нейронные сети, не вдаваясь в множество деталей. В то же время низкоуровневый API предоставляет гораздо больше контроля над процессом обучения, и поэтому часто используется в исследованиях, когда разрабатываются новые архитектуры нейронных сетей. -Также важно понимать, что вы можете использовать оба API вместе, например, вы можете разработать свою собственную архитектуру слоя сети, используя низкоуровневый API, а затем использовать ее внутри более крупной сети, построенной и обученной с помощью высокоуровневого API. Или вы можете определить сеть, используя высокоуровневый API как последовательность слоев, а затем использовать свой собственный низкоуровневый цикл обучения для выполнения оптимизации. Оба API используют одни и те же основные концепции и предназначены для хорошей совместной работы. +Важно понимать, что оба API можно использовать вместе. Например, вы можете разработать собственную архитектуру слоя сети с использованием низкоуровневого API, а затем использовать её внутри более крупной сети, созданной и обученной с помощью высокоуровневого API. Или вы можете определить сеть с помощью высокоуровневого API как последовательность слоев, а затем использовать собственный низкоуровневый цикл обучения для оптимизации. Оба API используют одни и те же базовые концепции и разработаны так, чтобы хорошо работать вместе. ## Обучение -В этом курсе мы предлагаем большинство материалов как для PyTorch, так и для TensorFlow. Вы можете выбрать свой предпочтительный фреймворк и проходить только соответствующие блокноты. Если вы не уверены, какой фреймворк выбрать, прочитайте некоторые обсуждения в интернете о **PyTorch против TensorFlow**. Вы также можете ознакомиться с обоими фреймворками, чтобы лучше понять их. +В этом курсе мы предлагаем большинство материалов как для PyTorch, так и для TensorFlow. Вы можете выбрать предпочитаемый фреймворк и изучать только соответствующие ноутбуки. Если вы не уверены, какой фреймворк выбрать, почитайте обсуждения в интернете на тему **PyTorch vs. TensorFlow**. Также вы можете ознакомиться с обоими фреймворками, чтобы лучше их понять. -Где это возможно, мы будем использовать высокоуровневые API для простоты. Однако мы считаем важным понять, как работают нейронные сети с нуля, поэтому в начале мы начнем с работы с низкоуровневым API и тензорами. Однако, если вы хотите быстро приступить к делу и не хотите тратить много времени на изучение этих деталей, вы можете пропустить их и сразу перейти к блокнотам с высокоуровневым API. +По возможности мы будем использовать высокоуровневые API для упрощения. Однако мы считаем важным понять, как работают нейронные сети с нуля, поэтому в начале мы начнем с работы с низкоуровневым API и тензорами. Если вы хотите быстро приступить к работе и не тратить много времени на изучение этих деталей, вы можете пропустить их и сразу перейти к ноутбукам с высокоуровневым API. ## ✍️ Упражнения: Фреймворки -Продолжайте свое обучение в следующих блокнотах: +Продолжите обучение в следующих ноутбуках: -Низкоуровневый API | [Блокнот TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) -------------------|------------------------------------|-------------------------------- -Высокоуровневый API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +Низкоуровневый API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------------|-------------------------------------|-------------------------------- +Высокоуровневый API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -После освоения фреймворков давайте подытожим понятие переобучения. +После освоения фреймворков давайте вспомним понятие переобучения. # Переобучение -Переобучение — это чрезвычайно важная концепция в машинном обучении, и очень важно правильно ее понять! +Переобучение — это чрезвычайно важное понятие в машинном обучении, и его необходимо правильно понимать! -Рассмотрим следующую задачу аппроксимации 5 точек (представленных `x` на графиках ниже): +Рассмотрим следующую задачу аппроксимации 5 точек (обозначенных `x` на графиках ниже): ![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ru.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ru.jpg) -------------------------|-------------------------- **Линейная модель, 2 параметра** | **Нелинейная модель, 7 параметров** -Ошибка обучения = 5.3 | Ошибка валидации = 0 -Ошибка валидации = 5.1 | Ошибка валидации = 20 +Ошибка на обучении = 5.3 | Ошибка на обучении = 0 +Ошибка на валидации = 5.1 | Ошибка на валидации = 20 -* Слева мы видим хорошую линейную аппроксимацию. Поскольку количество параметров адекватно, модель правильно улавливает идею распределения точек. -* Справа модель слишком мощная. Поскольку у нас всего 5 точек, а модель имеет 7 параметров, она может настроиться таким образом, чтобы проходить через все точки, что делает ошибку обучения равной 0. Однако это мешает модели понять правильный шаблон данных, и, следовательно, ошибка валидации очень высока. +* На левом графике мы видим хорошую линейную аппроксимацию. Поскольку количество параметров адекватно, модель правильно улавливает распределение точек. +* На правом графике модель слишком мощная. Поскольку у нас всего 5 точек, а модель имеет 7 параметров, она может подстроиться так, чтобы проходить через все точки, что делает ошибку на обучении равной 0. Однако это мешает модели понять правильную закономерность в данных, из-за чего ошибка на валидации становится очень высокой. -Очень важно найти правильный баланс между сложностью модели (количеством параметров) и количеством обучающих образцов. +Очень важно найти правильный баланс между сложностью модели (количеством параметров) и количеством обучающих примеров. -## Почему происходит переобучение +## Почему возникает переобучение * Недостаточно обучающих данных * Слишком мощная модель - * Слишком много шума в входных данных + * Слишком много шума во входных данных ## Как обнаружить переобучение -Как видно из графика выше, переобучение можно обнаружить по очень низкой ошибке обучения и высокой ошибке валидации. Обычно во время обучения мы видим, как ошибки обучения и валидации начинают снижаться, а затем в какой-то момент ошибка валидации может перестать снижаться и начать расти. Это будет признаком переобучения и индикатором того, что, вероятно, стоит остановить обучение в этот момент (или, по крайней мере, сделать снимок модели). +Как видно из графика выше, переобучение можно обнаружить по очень низкой ошибке на обучении и высокой ошибке на валидации. Обычно во время обучения мы видим, как обе ошибки — на обучении и валидации — начинают уменьшаться, но в какой-то момент ошибка на валидации может перестать уменьшаться и начать расти. Это будет признаком переобучения и сигналом, что обучение следует остановить (или хотя бы сохранить текущую модель). ![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ru.png) ## Как предотвратить переобучение -Если вы видите, что происходит переобучение, вы можете сделать одно из следующего: +Если вы видите, что происходит переобучение, вы можете сделать следующее: * Увеличить объем обучающих данных * Уменьшить сложность модели - * Использовать какую-либо [технику регуляризации](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), такую как [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), которую мы рассмотрим позже. + * Использовать [техники регуляризации](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), такие как [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), которые мы рассмотрим позже. -## Переобучение и компромисс смещения-дисперсии +## Переобучение и компромисс между смещением и дисперсией -Переобучение на самом деле является случаем более общей проблемы в статистике, называемой [компромиссом смещения-дисперсии](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Если мы рассмотрим возможные источники ошибок в нашей модели, мы можем увидеть два типа ошибок: +Переобучение — это частный случай более общей проблемы в статистике, называемой [компромисс между смещением и дисперсией](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Если рассмотреть возможные источники ошибок в нашей модели, можно выделить два типа ошибок: -* **Ошибки смещения** возникают из-за того, что наш алгоритм не может правильно захватить взаимосвязь между обучающими данными. Это может быть результатом того, что наша модель недостаточно мощная (**недообучение**). -* **Ошибки дисперсии**, которые возникают из-за того, что модель аппроксимирует шум во входных данных вместо значимой взаимосвязи (**переобучение**). +* **Ошибки смещения** возникают из-за того, что наш алгоритм не может правильно уловить связь между обучающими данными. Это может быть связано с тем, что наша модель недостаточно мощная (**недообучение**). +* **Ошибки дисперсии**, которые возникают из-за того, что модель аппроксимирует шум во входных данных вместо значимых закономерностей (**переобучение**). -Во время обучения ошибка смещения уменьшается (по мере того, как наша модель учится аппроксимировать данные), а ошибка дисперсии увеличивается. Важно остановить обучение - либо вручную (когда мы обнаруживаем переобучение), либо автоматически (вводя регуляризацию) - чтобы предотвратить переобучение. +Во время обучения ошибка смещения уменьшается (по мере того как модель учится аппроксимировать данные), а ошибка дисперсии увеличивается. Важно остановить обучение — либо вручную (когда мы обнаруживаем переобучение), либо автоматически (с помощью регуляризации) — чтобы предотвратить переобучение. ## Заключение -В этом уроке вы узнали о различиях между различными API для двух самых популярных фреймворков ИИ, TensorFlow и PyTorch. Кроме того, вы узнали о очень важной теме — переобучении. +В этом уроке вы узнали о различиях между различными API для двух самых популярных фреймворков для ИИ — TensorFlow и PyTorch. Кроме того, вы изучили очень важную тему — переобучение. -## 🚀 Задача +## 🚀 Задание -В прилагаемых блокнотах вы найдете «задачи» внизу; пройдите через блокноты и выполните задания. +В сопровождающих ноутбуках вы найдете "задачи" в конце; пройдите через ноутбуки и выполните задачи. -## [Посттест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [Квиз после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) ## Обзор и самостоятельное изучение -Проведите исследование по следующим темам: +Изучите следующие темы: - TensorFlow - PyTorch @@ -114,10 +123,10 @@ ## [Задание](lab/README.md) -В этой лабораторной работе вам предложено решить две задачи классификации, используя однослойные и многослойные полностью связанные сети с использованием PyTorch или TensorFlow. +В этой лабораторной работе вам предстоит решить две задачи классификации с использованием однослойных и многослойных полносвязных сетей с помощью PyTorch или TensorFlow. * [Инструкции](lab/README.md) -* [Блокнот](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) +* [Ноутбук](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 24d238b9..df4c4e55 100644 --- a/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ -# Классификация с помощью PyTorch/TensorFlow + +# Классификация с использованием PyTorch/TensorFlow -Лабораторное задание из [Курса AI для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). -## Задача +## Задание -Решите две задачи классификации, используя однослойные и многослойные полносвязные сети с помощью PyTorch или TensorFlow: +Решите две задачи классификации, используя однослойные и многослойные полностью связанные нейронные сети с помощью PyTorch или TensorFlow: -1. **[Классификация ирисов](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - пример задачи с табличными входными данными, которая может быть решена с помощью классического машинного обучения. Ваша цель - классифицировать ирисы на 3 класса, основываясь на 4 числовых параметрах. -1. **Классификация рукописных цифр MNIST**, которую мы уже рассматривали. +1. **[Классификация ирисов](https://en.wikipedia.org/wiki/Iris_flower_data_set)** — пример задачи с табличными входными данными, которые можно обработать с помощью классических методов машинного обучения. Ваша цель — классифицировать ирисы на 3 класса, основываясь на 4 числовых параметрах. +1. **MNIST** — задача классификации рукописных цифр, с которой мы уже сталкивались ранее. -Попробуйте различные архитектуры сети, чтобы достичь наилучшей точности. +Попробуйте различные архитектуры сетей, чтобы достичь наилучшей точности. -## Начало работы с ноутбуком +## Начальный ноутбук -Начните лабораторную работу, открыв [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) +Начните выполнение лабораторной работы, открыв [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/README.md b/translations/ru/lessons/3-NeuralNetworks/README.md index 7b152d31..0d332baf 100644 --- a/translations/ru/lessons/3-NeuralNetworks/README.md +++ b/translations/ru/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ -# Введение в Нейронные Сети + +# Введение в нейронные сети -![Сводка содержания Введения в Нейронные Сети в виде рисунка](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ru.png) +![Резюме содержания "Введение в нейронные сети" в виде рисунка](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ru.png) -Как мы обсудили во введении, одним из способов достижения интеллекта является обучение **компьютерной модели** или **искусственного мозга**. С середины 20 века исследователи пробовали различные математические модели, пока в последние годы это направление не оказалось чрезвычайно успешным. Такие математические модели мозга называются **нейронными сетями**. +Как мы обсуждали во введении, одним из способов достижения интеллекта является обучение **компьютерной модели** или **искусственного мозга**. С середины XX века исследователи пробовали различные математические модели, и только в последние годы этот подход оказался чрезвычайно успешным. Такие математические модели мозга называются **нейронными сетями**. -> Иногда нейронные сети называют *Искусственными Нейронными Сетями* (Artificial Neural Networks, ANNs), чтобы указать на то, что мы говорим о моделях, а не о реальных сетях нейронов. +> Иногда нейронные сети называют *Искусственными нейронными сетями* (Artificial Neural Networks, ANNs), чтобы подчеркнуть, что речь идет о моделях, а не о реальных сетях нейронов. -## Машинное Обучение +## Машинное обучение -Нейронные сети являются частью более широкой дисциплины, называемой **Машинным Обучением**, цель которой — использовать данные для обучения компьютерных моделей, способных решать задачи. Машинное обучение составляет большую часть Искусственного Интеллекта, однако в этой учебной программе мы не рассматриваем классическое МО. +Нейронные сети являются частью более широкой дисциплины, называемой **Машинное обучение**, цель которой — использовать данные для обучения компьютерных моделей, способных решать задачи. Машинное обучение составляет значительную часть Искусственного интеллекта, однако в данной программе мы не рассматриваем классическое машинное обучение. -> Посетите нашу отдельную **[Машинное Обучение для Начинающих](http://github.com/microsoft/ml-for-beginners)** программу, чтобы узнать больше о классическом машинном обучении. +> Ознакомьтесь с нашей отдельной программой **[Машинное обучение для начинающих](http://github.com/microsoft/ml-for-beginners)**, чтобы узнать больше о классическом машинном обучении. -В Машинном Обучении мы предполагаем, что у нас есть некоторый набор данных примеров **X** и соответствующие выходные значения **Y**. Примеры часто представляют собой N-мерные векторы, состоящие из **признаков**, а выходы называются **метками**. +В машинном обучении предполагается, что у нас есть некоторый набор данных примеров **X** и соответствующие выходные значения **Y**. Примеры часто представляют собой N-мерные векторы, состоящие из **признаков**, а выходные значения называются **метками**. -Мы рассмотрим две наиболее распространенные задачи машинного обучения: +Мы рассмотрим два наиболее распространенных типа задач машинного обучения: -* **Классификация**, где нам нужно классифицировать входной объект на два или более класса. -* **Регрессия**, где нам нужно предсказать числовое значение для каждого из входных образцов. +* **Классификация**, где необходимо классифицировать входной объект на два или более классов. +* **Регрессия**, где необходимо предсказать числовое значение для каждого из входных образцов. -> При представлении входных и выходных данных в виде тензоров входной набор данных представляет собой матрицу размером M×N, где M — количество образцов, а N — количество признаков. Выходные метки Y — это вектор размером M. +> При представлении входных данных и выходов в виде тензоров, входной набор данных — это матрица размером M×N, где M — количество образцов, а N — количество признаков. Выходные метки Y — это вектор размером M. -В этой учебной программе мы сосредоточимся только на моделях нейронных сетей. +В данной программе мы будем сосредоточены только на моделях нейронных сетей. -## Модель Нейрона +## Модель нейрона -Из биологии мы знаем, что наш мозг состоит из нервных клеток, каждая из которых имеет несколько "входов" (аксоны) и один выход (дендрит). Аксоны и дендриты могут проводить электрические сигналы, а связи между аксонами и дендритами могут демонстрировать разные степени проводимости (контролируемые нейромедиаторами). +Из биологии мы знаем, что наш мозг состоит из нейронных клеток, каждая из которых имеет множество "входов" (аксоны) и один выход (дендрит). Аксоны и дендриты могут проводить электрические сигналы, а соединения между аксонами и дендритами могут обладать различной степенью проводимости (управляемой нейромедиаторами). -![Модель Нейрона](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ru.jpg) | ![Модель Нейрона](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ru.png) +![Модель нейрона](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ru.jpg) | ![Модель нейрона](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ru.png) ----|---- -Настоящий Нейрон *([Изображение](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) из Википедии)* | Искусственный Нейрон *(Изображение автора)* +Реальный нейрон *([Изображение](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) из Википедии)* | Искусственный нейрон *(Изображение автора)* -Таким образом, самая простая математическая модель нейрона содержит несколько входов X1, ..., XN и один выход Y, а также ряд весов W1, ..., WN. Выход рассчитывается как: +Таким образом, самая простая математическая модель нейрона содержит несколько входов X1, ..., XN и один выход Y, а также набор весов W1, ..., WN. Выход вычисляется как: Y = f\left(\sum_{i=1}^N X_iW_i\right) -где f — это некоторая нелинейная **активационная функция**. +где f — это некоторая нелинейная **функция активации**. -> Ранние модели нейрона были описаны в классической статье [Логический расчет идей, присущих нервной активности](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) Уоррена МаКаллоха и Уолтера Питтса в 1943 году. Дональд Хебб в своей книге "[Организация поведения: Нейропсихологическая теория](https://books.google.com/books?id=VNetYrB8EBoC)" предложил способ, как эти сети могут быть обучены. +> Ранние модели нейрона были описаны в классической статье [Логическое исчисление идей, присущих нервной активности](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) Уоррена МакКалока и Уолтера Питтса в 1943 году. Дональд Хебб в своей книге "[Организация поведения: нейропсихологическая теория](https://books.google.com/books?id=VNetYrB8EBoC)" предложил способ обучения таких сетей. -## В этом Разделе +## В этом разделе -В этом разделе мы узнаем о: -* [Перцептроне](03-Perceptron/README.md), одной из первых моделей нейронных сетей для классификации на два класса -* [Многослойных сетях](04-OwnFramework/README.md) с парным блокнотом [как построить собственный фреймворк](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Фреймворках Нейронных Сетей](05-Frameworks/README.md), с этими блокнотами: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) и [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) -* [Переобучении](../../../../lessons/3-NeuralNetworks/05-Frameworks) +В этом разделе мы изучим: +* [Перцептрон](03-Perceptron/README.md), одну из первых моделей нейронных сетей для классификации на два класса +* [Многослойные сети](04-OwnFramework/README.md) с сопутствующим ноутбуком [как создать собственный фреймворк](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Фреймворки нейронных сетей](05-Frameworks/README.md), с этими ноутбуками: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) и [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Переобучение](../../../../lessons/3-NeuralNetworks/05-Frameworks) **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные истолкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md index 114c1ee9..5ecf7a58 100644 --- a/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ -# Введение в Компьютерное Зрение + +# Введение в компьютерное зрение -[Компьютерное зрение](https://wikipedia.org/wiki/Computer_vision) — это дисциплина, цель которой заключается в том, чтобы позволить компьютерам получать высокоуровневое понимание цифровых изображений. Это довольно широкое определение, поскольку *понимание* может означать много различных вещей, включая нахождение объекта на изображении (**обнаружение объектов**), понимание того, что происходит (**обнаружение событий**), описание изображения в текстовом виде или реконструкцию сцены в 3D. Также существуют специальные задачи, связанные с изображениями людей: оценка возраста и эмоций, обнаружение и идентификация лиц, а также оценка 3D-позы, чтобы назвать лишь некоторые. +[Компьютерное зрение](https://wikipedia.org/wiki/Computer_vision) — это область, цель которой заключается в том, чтобы научить компьютеры понимать цифровые изображения на высоком уровне. Это довольно широкое определение, поскольку *понимание* может означать множество вещей, включая поиск объекта на изображении (**обнаружение объектов**), понимание происходящего (**обнаружение событий**), описание изображения текстом или реконструкцию сцены в 3D. Существуют также специальные задачи, связанные с изображениями людей: оценка возраста и эмоций, обнаружение и идентификация лиц, а также оценка позы в 3D, чтобы назвать лишь некоторые. -## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -Одной из самых простых задач компьютерного зрения является **классификация изображений**. +Одна из самых простых задач компьютерного зрения — это **классификация изображений**. -Компьютерное зрение часто рассматривается как ветвь ИИ. В настоящее время большинство задач компьютерного зрения решаются с использованием нейронных сетей. Мы узнаем больше о специальном типе нейронных сетей, используемых в компьютерном зрении, [сверточных нейронных сетях](../07-ConvNets/README.md), в течение этого раздела. +Компьютерное зрение часто рассматривается как ветвь искусственного интеллекта. Сегодня большинство задач компьютерного зрения решаются с использованием нейронных сетей. Мы подробнее изучим специальный тип нейронных сетей, используемых для компьютерного зрения, [сверточные нейронные сети](../07-ConvNets/README.md), в этом разделе. -Тем не менее, прежде чем передать изображение нейронной сети, во многих случаях имеет смысл использовать некоторые алгоритмические техники для улучшения изображения. +Однако, прежде чем передать изображение нейронной сети, во многих случаях имеет смысл использовать некоторые алгоритмические методы для улучшения изображения. -Существует несколько библиотек Python, доступных для обработки изображений: +Существует несколько библиотек Python для обработки изображений: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** может использоваться для чтения/записи различных форматов изображений. Она также поддерживает ffmpeg, полезный инструмент для преобразования видеокадров в изображения. -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (также известная как PIL) немного мощнее и также поддерживает некоторые манипуляции с изображениями, такие как морфинг, коррекция палитры и многое другое. -* **[OpenCV](https://opencv.org/)** — это мощная библиотека для обработки изображений, написанная на C++, которая стала *де-факто* стандартом для обработки изображений. У нее есть удобный интерфейс для Python. -* **[dlib](http://dlib.net/)** — это библиотека на C++, которая реализует множество алгоритмов машинного обучения, включая некоторые алгоритмы компьютерного зрения. У нее также есть интерфейс для Python и она может использоваться для сложных задач, таких как обнаружение лиц и контрольных точек на лице. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** используется для чтения/записи различных форматов изображений. Она также поддерживает ffmpeg — полезный инструмент для преобразования видеокадров в изображения. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (также известная как PIL) обладает большими возможностями и поддерживает манипуляции с изображениями, такие как морфинг, настройка палитры и многое другое. +* **[OpenCV](https://opencv.org/)** — мощная библиотека обработки изображений, написанная на C++, которая стала стандартом *де факто* для обработки изображений. Она имеет удобный интерфейс для Python. +* **[dlib](http://dlib.net/)** — библиотека на C++, реализующая множество алгоритмов машинного обучения, включая некоторые алгоритмы компьютерного зрения. Она также имеет интерфейс для Python и может использоваться для сложных задач, таких как обнаружение лиц и ключевых точек лица. ## OpenCV -[OpenCV](https://opencv.org/) считается *де-факто* стандартом для обработки изображений. Она содержит множество полезных алгоритмов, реализованных на C++. Вы также можете вызывать OpenCV из Python. +[OpenCV](https://opencv.org/) считается стандартом *де факто* для обработки изображений. Она содержит множество полезных алгоритмов, реализованных на C++. Вы также можете использовать OpenCV из Python. -Хорошее место для изучения OpenCV — [этот курс Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). В нашей учебной программе наша цель не в том, чтобы научиться OpenCV, а в том, чтобы показать вам некоторые примеры, когда она может быть использована, и как. +Хорошее место для изучения OpenCV — [курс Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). В рамках нашей программы мы не ставим целью изучение OpenCV, а хотим показать несколько примеров, где она может быть полезна и как ее использовать. -### Загрузка Изображений +### Загрузка изображений -Изображения в Python могут быть удобно представлены массивами NumPy. Например, изображения в градациях серого размером 320x200 пикселей будут храниться в массиве размером 200x320, а цветные изображения того же размера будут иметь форму 200x320x3 (для 3 цветовых каналов). Чтобы загрузить изображение, вы можете использовать следующий код: +Изображения в Python удобно представлять в виде массивов NumPy. Например, черно-белые изображения размером 320x200 пикселей будут храниться в массиве размером 200x320, а цветные изображения тех же размеров будут иметь форму 200x320x3 (для трех цветовых каналов). Чтобы загрузить изображение, можно использовать следующий код: ```python import cv2 @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Традиционно OpenCV использует кодировку BGR (Синий-Зеленый-Красный) для цветных изображений, в то время как остальные инструменты Python используют более традиционный RGB (Красный-Зеленый-Синий). Чтобы изображение выглядело правильно, вам нужно преобразовать его в цветовое пространство RGB, либо поменяв местами размеры в массиве NumPy, либо вызвав функцию OpenCV: +Традиционно OpenCV использует кодировку BGR (синий-зеленый-красный) для цветных изображений, тогда как остальные инструменты Python используют более привычную RGB (красный-зеленый-синий). Чтобы изображение отображалось правильно, его нужно преобразовать в цветовое пространство RGB, либо поменяв местами измерения в массиве NumPy, либо вызвав функцию OpenCV: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -Те же функции `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +Та же функция `cvtColor` может использоваться для выполнения других преобразований цветового пространства, таких как преобразование изображения в черно-белое или в HSV (оттенок-насыщенность-яркость). -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +Вы также можете использовать OpenCV для загрузки видео покадрово — пример приведен в упражнении [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). -### Image Processing +### Обработка изображений -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Перед передачей изображения нейронной сети может быть полезно выполнить несколько шагов предварительной обработки. OpenCV позволяет делать множество вещей, включая: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, которые часто предпочтительнее, чем настройка яркости или контрастности. -* Применение различных [трансформаций](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) к изображению: - - **[Аффинные трансформации](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** могут быть полезны, если вам нужно комбинировать вращение, изменение размера и искажение изображения, и вы знаете исходное и целевое местоположение трех точек на изображении. Аффинные трансформации сохраняют параллельные линии параллельными. - - **[Перспективные трансформации](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** могут быть полезны, когда вы знаете исходные и целевые позиции 4 точек на изображении. Например, если вы делаете снимок прямоугольного документа с помощью камеры смартфона под некоторым углом и хотите получить прямоугольное изображение самого документа. +* **Изменение размера** изображения с помощью `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Размытие** изображения с помощью `im = cv2.medianBlur(im,3)` или `im = cv2.GaussianBlur(im, (3,3), 0)` +* Изменение **яркости и контрастности** изображения можно выполнить с помощью манипуляций с массивами NumPy, как описано [в этой заметке на Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Использование [пороговой обработки](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) с помощью функций `cv2.threshold`/`cv2.adaptiveThreshold`, что часто предпочтительнее, чем настройка яркости или контрастности. +* Применение различных [преобразований](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) к изображению: + - **[Афинные преобразования](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** могут быть полезны, если нужно объединить вращение, изменение размера и наклон изображения, и известны исходное и целевое расположение трех точек на изображении. Афинные преобразования сохраняют параллельность линий. + - **[Перспективные преобразования](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** могут быть полезны, если известны исходные и целевые позиции четырех точек на изображении. Например, если вы сделали снимок прямоугольного документа с помощью камеры смартфона под углом и хотите получить прямоугольное изображение самого документа. * Понимание движения внутри изображения с помощью **[оптического потока](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. -## Примеры использования Компьютерного Зрения +## Примеры использования компьютерного зрения В нашем [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) мы приводим несколько примеров, когда компьютерное зрение может быть использовано для выполнения конкретных задач: -* **Предварительная обработка фотографии книги на шрифте Брайля**. Мы сосредотачиваемся на том, как можем использовать пороговую обработку, обнаружение признаков, перспективные трансформации и манипуляции с NumPy, чтобы отделить отдельные символы Брайля для дальнейшей классификации нейронной сетью. +* **Предварительная обработка фотографии книги на шрифте Брайля**. Мы сосредотачиваемся на том, как можно использовать пороговую обработку, обнаружение признаков, перспективное преобразование и манипуляции с NumPy для разделения отдельных символов шрифта Брайля для дальнейшей классификации нейронной сетью. -![Изображение Брайля](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ru.jpeg) | ![Предварительно обработанное изображение Брайля](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ru.png) | ![Символы Брайля](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ru.png) +![Изображение шрифта Брайля](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ru.jpeg) | ![Предварительно обработанное изображение шрифта Брайля](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ru.png) | ![Символы шрифта Брайля](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ru.png) ----|-----|----- > Изображение из [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Обнаружение движения в видео с использованием разности кадров**. Если камера фиксирована, то кадры с камеры должны быть довольно похожи друг на друга. Поскольку кадры представлены в виде массивов, просто вычитая эти массивы для двух последующих кадров, мы получим разницу пикселей, которая должна быть низкой для статичных кадров и увеличиваться, как только в изображении появляется значительное движение. +* **Обнаружение движения в видео с помощью разницы кадров**. Если камера неподвижна, то кадры из видеопотока должны быть довольно похожи друг на друга. Поскольку кадры представлены в виде массивов, просто вычитая эти массивы для двух последовательных кадров, мы получим разницу пикселей, которая должна быть низкой для статичных кадров и становиться выше при значительном движении на изображении. -![Изображение кадров видео и разностей кадров](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ru.png) +![Изображение видеокадров и разницы кадров](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ru.png) > Изображение из [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Обнаружение движения с использованием оптического потока**. [Оптический поток](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) позволяет нам понять, как отдельные пиксели на видеокадрах движутся. Существует два типа оптического потока: +* **Обнаружение движения с помощью оптического потока**. [Оптический поток](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) позволяет понять, как отдельные пиксели на видеокадрах перемещаются. Существует два типа оптического потока: - - **Плотный оптический поток** вычисляет векторное поле, которое показывает, куда движется каждый пиксель. - - **Разреженный оптический поток** основан на выделении некоторых характерных признаков на изображении (например, краев) и построении их траектории от кадра к кадру. + - **Плотный оптический поток** вычисляет векторное поле, показывающее, куда движется каждый пиксель. + - **Разреженный оптический поток** основан на выделении некоторых характерных признаков изображения (например, краев) и построении их траектории от кадра к кадру. ![Изображение оптического потока](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ru.png) > Изображение из [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## ✍️ Примерные Ноутбуки: OpenCV [попробуйте OpenCV в действии](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ Примерные ноутбуки: OpenCV [попробуйте OpenCV в действии](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -Давайте проведем несколько экспериментов с OpenCV, исследуя [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +Давайте проведем эксперименты с OpenCV, изучая [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). ## Заключение -Иногда относительно сложные задачи, такие как обнаружение движения или обнаружение кончиков пальцев, могут быть решены исключительно с помощью компьютерного зрения. Таким образом, очень полезно знать основные техники компьютерного зрения и что такие библиотеки, как OpenCV, могут делать. +Иногда относительно сложные задачи, такие как обнаружение движения или обнаружение кончиков пальцев, могут быть решены исключительно с помощью компьютерного зрения. Поэтому очень полезно знать основные техники компьютерного зрения и возможности таких библиотек, как OpenCV. -## 🚀 Задача +## 🚀 Задание -Посмотрите [это видео](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) из AI show, чтобы узнать о проекте Cortic Tigers и о том, как они создали решение на основе блоков для демократизации задач компьютерного зрения с помощью робота. Проведите исследование других подобных проектов, которые помогают новичкам в этой области. +Посмотрите [это видео](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) из AI Show, чтобы узнать о проекте Cortic Tigers и о том, как они создали решение на основе блоков для демократизации задач компьютерного зрения с помощью робота. Проведите исследование других подобных проектов, которые помогают новичкам освоить эту область. -## [Послетест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Читать больше об оптическом потоке [в этом замечательном учебнике](https://learnopencv.com/optical-flow-in-opencv/). +Прочитайте больше об оптическом потоке [в этом отличном руководстве](https://learnopencv.com/optical-flow-in-opencv/). ## [Задание](lab/README.md) -В этой лабораторной работе вы сделаете видео с простыми жестами, и ваша цель — извлечь движения вверх/вниз/влево/вправо с использованием оптического потока. +В этой лабораторной работе вам нужно будет снять видео с простыми жестами, и ваша цель — извлечь движения вверх/вниз/влево/вправо с помощью оптического потока. Кадр движения ладони **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md index 6d37f66e..9e08536b 100644 --- a/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,22 +1,31 @@ + # Обнаружение движений с использованием оптического потока -Лабораторное задание из [Курса ИИ для начинающих](https://aka.ms/ai-beginners). +Лабораторное задание из [учебной программы "ИИ для начинающих"](https://aka.ms/ai-beginners). ## Задача -Рассмотрите [это видео](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), в котором ладонь человека движется влево/вправо/вверх/вниз на стабильном фоне. Вы обучены на данных до октября 2023 года. +Рассмотрите [это видео](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), в котором ладонь человека движется влево/вправо/вверх/вниз на стабильном фоне. -**Ваша цель** состоит в том, чтобы использовать оптический поток для определения, какие части видео содержат движения вверх/вниз/влево/вправо. +**Ваша цель** — использовать оптический поток, чтобы определить, какие части видео содержат движения вверх/вниз/влево/вправо. -**Дополнительная цель** заключается в том, чтобы фактически отслеживать движение ладони/пальцев, используя цвет кожи, как описано [в этом блоге](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) или [здесь](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). +**Дополнительная цель** — попытаться отслеживать движение ладони/пальца, используя тон кожи, как описано [в этом блоге](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) или [здесь](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). ## Начальная тетрадь -Начните лабораторную работу, открыв [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb). +Начните выполнение задания, открыв [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb). -## Выводы +## Вывод -Иногда относительно сложные задачи, такие как обнаружение движения или обнаружение кончиков пальцев, могут быть решены исключительно с помощью компьютерного зрения. Поэтому очень полезно знать, что такие библиотеки, как OpenCV, могут делать. +Иногда относительно сложные задачи, такие как обнаружение движений или определение кончиков пальцев, можно решить исключительно с помощью компьютерного зрения. Поэтому очень полезно знать, что могут делать такие библиотеки, как OpenCV. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг автоматического перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index f53173ff..fbf9f7c9 100644 --- a/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,64 +1,73 @@ + # Известные архитектуры CNN ### VGG-16 -VGG-16 — это сеть, которая достигла 92,7% точности в классификации топ-5 на ImageNet в 2014 году. Она имеет следующую структуру слоев: +VGG-16 — это сеть, которая достигла 92.7% точности в классификации ImageNet (топ-5) в 2014 году. Она имеет следующую структуру слоев: -![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg) +![Слои ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg) -Как вы можете видеть, VGG следует традиционной пирамидальной архитектуре, которая представляет собой последовательность слоев свертки и подвыборки. +Как видно, VGG следует традиционной пирамидальной архитектуре, которая представляет собой последовательность слоев свертки и пуллинга. -![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg) +![Пирамида ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg) -> Изображение из [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) +> Изображение с [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ### ResNet -ResNet — это семейство моделей, предложенное Microsoft Research в 2015 году. Основная идея ResNet заключается в использовании **остаточных блоков**: +ResNet — это семейство моделей, предложенных Microsoft Research в 2015 году. Основная идея ResNet заключается в использовании **остаточных блоков**: > Изображение из [этой статьи](https://arxiv.org/pdf/1512.03385.pdf) -Причина использования пропуска идентичности заключается в том, чтобы наш слой предсказывал **разницу** между результатом предыдущего слоя и выходом остаточного блока — отсюда и название *остаточный*. Эти блоки гораздо легче обучать, и можно строить сети с несколькими сотнями таких блоков (наиболее распространенные варианты — ResNet-52, ResNet-101 и ResNet-152). +Причина использования прямого прохода через идентичность заключается в том, чтобы слой предсказывал **разницу** между результатом предыдущего слоя и выходом остаточного блока — отсюда и название *остаточный*. Эти блоки гораздо легче обучать, и можно создавать сети с несколькими сотнями таких блоков (наиболее распространенные варианты — ResNet-52, ResNet-101 и ResNet-152). -Вы также можете рассматривать эту сеть как способ регулировки своей сложности в зависимости от набора данных. Изначально, когда вы начинаете обучение сети, значения весов малы, и большая часть сигнала проходит через слои идентичности. По мере продвижения обучения и увеличения весов значимость параметров сети возрастает, и сеть адаптируется, чтобы обеспечить необходимую выразительную мощь для правильной классификации обучающих изображений. +Эту сеть также можно рассматривать как способную адаптировать свою сложность к набору данных. Изначально, когда вы только начинаете обучение сети, значения весов малы, и большая часть сигнала проходит через идентичные слои. По мере обучения и увеличения весов значимость параметров сети возрастает, и сеть адаптируется, чтобы обеспечить необходимую выразительность для правильной классификации обучающих изображений. ### Google Inception -Архитектура Google Inception продвигает эту идею на шаг дальше и строит каждый слой сети как комбинацию нескольких различных путей: +Архитектура Google Inception идет еще дальше и строит каждый слой сети как комбинацию нескольких различных путей: -> Изображение из [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) +> Изображение с [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) -Здесь необходимо подчеркнуть роль сверток 1x1, потому что на первый взгляд они не имеют смысла. Зачем нам проходить через изображение с фильтром 1x1? Однако следует помнить, что свертки также работают с несколькими каналами глубины (изначально - RGB цвета, в последующих слоях - каналы для различных фильтров), и свертка 1x1 используется для смешивания этих входных каналов вместе с использованием различных обучаемых весов. Это также можно рассматривать как уменьшение размерности (пулинг) по канальному измерению. +Здесь важно подчеркнуть роль сверток 1x1, так как на первый взгляд они кажутся бессмысленными. Зачем нам нужен фильтр 1x1 для обработки изображения? Однако нужно помнить, что свертки работают также с несколькими каналами глубины (изначально — RGB-цвета, в последующих слоях — каналы для различных фильтров), и свертка 1x1 используется для смешивания этих входных каналов с использованием различных обучаемых весов. Это также можно рассматривать как уменьшение размерности (пуллинг) по измерению каналов. -Вот [хорошая статья в блоге](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) на эту тему и [оригинальная статья](https://arxiv.org/pdf/1312.4400.pdf). +Вот [хороший блог-пост](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) на эту тему и [оригинальная статья](https://arxiv.org/pdf/1312.4400.pdf). ### MobileNet -MobileNet — это семейство моделей с уменьшенным размером, подходящих для мобильных устройств. Используйте их, если у вас ограничены ресурсы и вы готовы пожертвовать немного точности. Основная идея заключается в так называемой **глубинной разделяемой свертке**, которая позволяет представлять свертки фильтров как композицию пространственных сверток и сверток 1x1 по каналам глубины. Это значительно уменьшает количество параметров, делая сеть меньшего размера и также упрощая обучение с меньшим объемом данных. +MobileNet — это семейство моделей уменьшенного размера, подходящих для мобильных устройств. Используйте их, если у вас ограничены ресурсы и вы готовы пожертвовать небольшой точностью. Основная идея этих моделей — так называемая **глубинно-разделяемая свертка**, которая позволяет представлять свертки как композицию пространственных сверток и сверток 1x1 по каналам глубины. Это значительно уменьшает количество параметров, делая сеть компактнее и проще для обучения на меньших объемах данных. -Вот [хорошая статья в блоге о MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). +Вот [хороший блог-пост о MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). ## Заключение -В этом разделе вы узнали основную концепцию нейронных сетей компьютерного зрения — свёрточных сетей. Архитектуры реального мира, которые обеспечивают классификацию изображений, обнаружение объектов и даже генерацию изображений, все основаны на CNN, просто с большим количеством слоев и некоторыми дополнительными приемами обучения. +В этом разделе вы узнали основную концепцию нейронных сетей для компьютерного зрения — сверточные сети. Реальные архитектуры, которые используются для классификации изображений, обнаружения объектов и даже генерации изображений, основаны на CNN, только с большим количеством слоев и дополнительными приемами обучения. -## 🚀 Задача +## 🚀 Задание -В сопроводительных блокнотах есть заметки внизу о том, как достичь большей точности. Проведите несколько экспериментов, чтобы увидеть, сможете ли вы достичь более высокой точности. +В сопровождающих ноутбуках есть заметки внизу о том, как добиться большей точности. Проведите эксперименты, чтобы попытаться достичь более высокой точности. ## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) ## Обзор и самостоятельное изучение -Хотя CNN чаще всего используются для задач компьютерного зрения, они также хороши для извлечения фиксированных шаблонов. Например, если мы имеем дело со звуками, мы также можем использовать CNN для поиска некоторых специфических паттернов в аудиосигнале — в этом случае фильтры будут одномерными (и эту CNN будут называть 1D-CNN). Также иногда используется 3D-CNN для извлечения признаков в многомерном пространстве, таких как определенные события, происходящие на видео — CNN может захватывать определенные паттерны изменения признаков во времени. Проведите обзор и самостоятельное изучение других задач, которые можно выполнить с помощью CNN. +Хотя CNN чаще всего используются для задач компьютерного зрения, они в целом хорошо подходят для извлечения фиксированных шаблонов. Например, если мы работаем со звуками, мы также можем использовать CNN для поиска определенных шаблонов в аудиосигнале — в этом случае фильтры будут одномерными (и такая CNN будет называться 1D-CNN). Также иногда используется 3D-CNN для извлечения признаков в многомерном пространстве, например, для анализа событий, происходящих на видео — CNN может захватывать определенные шаблоны изменения признаков во времени. Проведите обзор и самостоятельное изучение других задач, которые можно решать с помощью CNN. ## [Задание](lab/README.md) -В этой лабораторной работе вам предстоит классифицировать различные породы кошек и собак. Эти изображения более сложные, чем набор данных MNIST, и имеют более высокие размеры, и классов больше 10. +В этой лабораторной работе вам предстоит классифицировать различные породы кошек и собак. Эти изображения более сложные, чем набор данных MNIST, имеют более высокие размеры, и классов больше 10. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md index b527021a..4ecbfbc7 100644 --- a/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,58 +1,67 @@ -# Сверточные Нейронные Сети + +# Свёрточные нейронные сети -Мы уже видели, что нейронные сети довольно хорошо справляются с обработкой изображений, и даже однослойный перцептрон способен распознавать рукописные цифры из набора данных MNIST с разумной точностью. Однако набор данных MNIST очень специфичен, и все цифры центрированы внутри изображения, что упрощает задачу. +Мы уже видели, что нейронные сети хорошо справляются с обработкой изображений, и даже однослойный перцептрон способен с приемлемой точностью распознавать рукописные цифры из набора данных MNIST. Однако MNIST — это особый набор данных, где все цифры центрированы внутри изображения, что упрощает задачу. ## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -В реальной жизни мы хотим уметь распознавать объекты на картинке независимо от их точного местоположения на изображении. Компьютерное зрение отличается от общей классификации, потому что, когда мы пытаемся найти определенный объект на картинке, мы сканируем изображение в поисках каких-то специфических **шаблонов** и их комбинаций. Например, когда мы ищем кошку, сначала мы можем искать горизонтальные линии, которые могут образовывать усы, а затем определенная комбинация усов может сказать нам, что это на самом деле изображение кошки. Относительное положение и наличие определенных шаблонов важны, а не их точное положение на изображении. +В реальной жизни мы хотим уметь распознавать объекты на изображении независимо от их точного расположения. Компьютерное зрение отличается от общей классификации, потому что, когда мы пытаемся найти определённый объект на изображении, мы сканируем его в поисках специфических **шаблонов** и их комбинаций. Например, при поиске кошки мы можем сначала искать горизонтальные линии, которые могут быть усами, а затем определённая комбинация усов может подсказать нам, что это действительно изображение кошки. Важны относительное положение и наличие определённых шаблонов, а не их точное расположение на изображении. -Чтобы извлечь шаблоны, мы будем использовать понятие **сверточных фильтров**. Как вы знаете, изображение представлено в виде 2D-матрицы или 3D-тензора с глубиной цвета. Применение фильтра означает, что мы берем относительно маленькую матрицу **ядра фильтра**, и для каждого пикселя в оригинальном изображении мы вычисляем взвешенное среднее с соседними точками. Мы можем рассматривать это как маленькое окно, скользящее по всему изображению и усредняющее все пиксели в соответствии с весами в матрице ядра фильтра. +Для извлечения шаблонов мы будем использовать понятие **свёрточных фильтров**. Как вы знаете, изображение представлено в виде двумерной матрицы или трёхмерного тензора с глубиной цвета. Применение фильтра означает, что мы берём относительно небольшую матрицу **ядра фильтра** и для каждого пикселя исходного изображения вычисляем взвешенное среднее с соседними точками. Это можно представить как небольшое окно, скользящее по всему изображению и усредняющее все пиксели в соответствии с весами в матрице ядра фильтра. -![Фильтр вертикального края](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ru.png) | ![Фильтр горизонтального края](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ru.png) +![Фильтр вертикальных краёв](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ru.png) | ![Фильтр горизонтальных краёв](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ru.png) ----|---- > Изображение Дмитрия Сошникова -Например, если мы применим 3x3 фильтры вертикального и горизонтального краев к цифрам MNIST, мы можем получить акценты (например, высокие значения) там, где находятся вертикальные и горизонтальные края в нашем оригинальном изображении. Таким образом, эти два фильтра могут быть использованы для "поиска" краев. Аналогично, мы можем разработать различные фильтры для поиска других низкоуровневых шаблонов. +Например, если мы применим фильтры вертикальных и горизонтальных краёв размером 3x3 к цифрам из MNIST, мы получим выделения (например, высокие значения) там, где в исходном изображении есть вертикальные и горизонтальные края. Таким образом, эти два фильтра можно использовать для "поиска" краёв. Аналогично, мы можем создавать различные фильтры для поиска других низкоуровневых шаблонов: -> Изображение [Фильтров Люнга-Малика](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> Изображение [банка фильтров Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) -Тем не менее, хотя мы можем вручную разрабатывать фильтры для извлечения некоторых шаблонов, мы также можем сконструировать сеть таким образом, чтобы она автоматически обучалась находить шаблоны. Это одна из основных идей, лежащих в основе CNN. +Однако, хотя мы можем вручную создавать фильтры для извлечения некоторых шаблонов, мы также можем спроектировать сеть так, чтобы она автоматически обучалась находить шаблоны. Это одна из ключевых идей, лежащих в основе CNN. ## Основные идеи CNN -Работа CNN основана на следующих важных идеях: +Работа CNN основана на следующих важных принципах: -* Сверточные фильтры могут извлекать шаблоны -* Мы можем спроектировать сеть таким образом, чтобы фильтры обучались автоматически -* Мы можем использовать тот же подход для поиска шаблонов в высокоуровневых признаках, а не только в оригинальном изображении. Таким образом, извлечение признаков CNN работает на иерархии признаков, начиная с низкоуровневых комбинаций пикселей и заканчивая более высокоуровневыми комбинациями частей изображения. +* Свёрточные фильтры могут извлекать шаблоны +* Мы можем спроектировать сеть так, чтобы фильтры обучались автоматически +* Мы можем использовать тот же подход для поиска шаблонов в высокоуровневых признаках, а не только в исходном изображении. Таким образом, извлечение признаков в CNN работает на иерархии признаков, начиная с низкоуровневых комбинаций пикселей и доходя до высокоуровневых комбинаций частей изображения. ![Иерархическое извлечение признаков](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ru.png) -> Изображение из [статьи Хислопа-Линча](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), основанной на [их исследовании](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) +> Изображение из [статьи Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), основанное на [их исследовании](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) -## ✍️ Упражнения: Сверточные Нейронные Сети +## ✍️ Упражнения: Свёрточные нейронные сети -Давайте продолжим исследовать, как работают сверточные нейронные сети и как мы можем достичь обучаемых фильтров, пройдя соответствующие блокноты: +Давайте продолжим изучать, как работают свёрточные нейронные сети и как можно добиться обучаемых фильтров, выполняя задания в соответствующих ноутбуках: -* [Сверточные Нейронные Сети - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) -* [Сверточные Нейронные Сети - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) +* [Свёрточные нейронные сети — PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Свёрточные нейронные сети — TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) -## Пирамидальная Архитектура +## Пирамидальная архитектура -Большинство CNN, используемых для обработки изображений, следуют так называемой пирамидальной архитектуре. Первый сверточный слой, применяемый к оригинальным изображениям, обычно имеет относительно небольшое количество фильтров (8-16), которые соответствуют различным комбинациям пикселей, таким как горизонтальные/вертикальные линии штрихов. На следующем уровне мы уменьшаем пространственное измерение сети и увеличиваем количество фильтров, что соответствует большему количеству возможных комбинаций простых признаков. С каждым слоем, по мере продвижения к финальному классификатору, пространственные размеры изображения уменьшаются, а количество фильтров увеличивается. +Большинство CNN, используемых для обработки изображений, следуют так называемой пирамидальной архитектуре. Первый свёрточный слой, применяемый к исходным изображениям, обычно имеет относительно небольшое количество фильтров (8-16), которые соответствуют различным комбинациям пикселей, таким как горизонтальные/вертикальные линии или штрихи. На следующем уровне мы уменьшаем пространственное измерение сети и увеличиваем количество фильтров, что соответствует большему количеству возможных комбинаций простых признаков. С каждым слоем, по мере продвижения к финальному классификатору, пространственные размеры изображения уменьшаются, а количество фильтров растёт. -В качестве примера давайте посмотрим на архитектуру VGG-16, сети, которая достигла 92.7% точности в топ-5 классификации ImageNet в 2014 году: +В качестве примера давайте рассмотрим архитектуру VGG-16, сети, которая достигла точности 92.7% в топ-5 классификации ImageNet в 2014 году: ![Слои ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg) ![Пирамида ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg) -> Изображение из [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) +> Изображение с [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) -## Наилучшие Известные Архитектуры CNN +## Наиболее известные архитектуры CNN -[Продолжайте изучение наилучших известных архитектур CNN](CNN_Architectures.md) +[Продолжите изучение наиболее известных архитектур CNN](CNN_Architectures.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 6867bf20..14ce6481 100644 --- a/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,20 +1,29 @@ -# Классификация Лиц Домашних Животных + +# Классификация лиц домашних животных -Лабораторная работа из [Курса AI для Начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Задача -Представьте, что вам нужно разработать приложение для питомника, чтобы каталогизировать всех домашних животных. Одной из замечательных функций такого приложения было бы автоматическое определение породы по фотографии. Это можно успешно реализовать с помощью нейронных сетей. +Представьте, что вам нужно разработать приложение для питомника, чтобы каталогизировать всех животных. Одной из замечательных функций такого приложения может быть автоматическое определение породы по фотографии. Это можно успешно реализовать с помощью нейронных сетей. -Вам нужно обучить сверточную нейронную сеть для классификации различных пород кошек и собак, используя набор данных **Лица Домашних Животных**. +Вам нужно обучить сверточную нейронную сеть для классификации различных пород кошек и собак, используя набор данных **Pet Faces**. -## Набор Данных +## Набор данных -Мы будем использовать набор данных **Лица Домашних Животных**, полученный из набора данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Он содержит 35 различных пород собак и кошек. +Мы будем использовать набор данных **Pet Faces**, созданный на основе [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) набора данных о домашних животных. Он содержит 35 различных пород собак и кошек. ![Набор данных, с которым мы будем работать](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ru.png) -Чтобы скачать набор данных, используйте этот фрагмент кода: +Чтобы скачать набор данных, используйте этот код: ```python !wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz @@ -22,13 +31,13 @@ !rm petfaces.tar.gz ``` -## Начало Ноутбука +## Начало работы с ноутбуком Начните лабораторную работу, открыв [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) -## Вывод +## Итог -Вы решили относительно сложную задачу классификации изображений с нуля! Классов было довольно много, и вам все же удалось достичь разумной точности! Также имеет смысл измерять точность top-k, потому что легко перепутать некоторые классы, которые не явно отличаются даже для человека. +Вы решили достаточно сложную задачу классификации изображений с нуля! Было довольно много классов, и вам удалось достичь разумной точности! Также имеет смысл измерить top-k точность, так как легко перепутать некоторые классы, которые даже для человека не очевидно различимы. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md index bba06c20..f3eafed8 100644 --- a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,80 +1,90 @@ + # Предобученные сети и перенос обучения -Обучение CNN может занять много времени, и для этой задачи требуется много данных. Однако большая часть времени уходит на изучение лучших низкоуровневых фильтров, которые сеть может использовать для извлечения паттернов из изображений. Возникает естественный вопрос: можем ли мы использовать нейронную сеть, обученную на одном наборе данных, и адаптировать ее для классификации различных изображений без необходимости полного процесса обучения? +Обучение сверточных нейронных сетей (CNN) может занимать много времени и требует большого объема данных. Однако значительная часть времени уходит на обучение лучшим низкоуровневым фильтрам, которые сеть может использовать для извлечения паттернов из изображений. Возникает естественный вопрос — можно ли использовать нейронную сеть, обученную на одном наборе данных, и адаптировать ее для классификации других изображений без полного процесса обучения? -## [Предварительная викторина](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Этот подход называется **переносом обучения**, потому что мы переносим некоторые знания из одной модели нейронной сети в другую. В переносе обучения мы обычно начинаем с предобученной модели, которая была обучена на большом наборе изображений, таком как **ImageNet**. Эти модели уже хорошо справляются с извлечением различных признаков из общих изображений, и во многих случаях просто создание классификатора на основе этих извлеченных признаков может дать хороший результат. +Этот подход называется **переносом обучения**, потому что мы переносим часть знаний из одной модели нейронной сети в другую. В переносе обучения мы обычно начинаем с предобученной модели, которая была обучена на большом наборе изображений, например, **ImageNet**. Эти модели уже хорошо справляются с извлечением различных признаков из общих изображений, и во многих случаях достаточно построить классификатор поверх этих извлеченных признаков, чтобы получить хороший результат. -> ✅ Перенос обучения — это термин, который вы можете встретить в других академических областях, таких как образование. Он относится к процессу переноса знаний из одной области и их применению в другой. +> ✅ Перенос обучения — это термин, который встречается и в других академических областях, таких как образование. Он относится к процессу переноса знаний из одной области в другую. -## Предобученные модели в качестве извлекателей признаков +## Предобученные модели как извлекатели признаков -Сверточные сети, о которых мы говорили в предыдущем разделе, содержат ряд слоев, каждый из которых предназначен для извлечения некоторых признаков из изображения, начиная с низкоуровневых комбинаций пикселей (таких как горизонтальная/вертикальная линия или штрих) и заканчивая более высокоуровневыми комбинациями признаков, соответствующими таким вещам, как глаз пламени. Если мы обучим CNN на достаточно большом наборе общих и разнообразных изображений, сеть должна научиться извлекать эти общие признаки. +Сверточные сети, о которых мы говорили в предыдущем разделе, содержат множество слоев, каждый из которых предназначен для извлечения определенных признаков из изображения, начиная с низкоуровневых комбинаций пикселей (таких как горизонтальные/вертикальные линии или штрихи) и заканчивая высокоуровневыми комбинациями признаков, соответствующими, например, глазу или пламени. Если обучить CNN на достаточно большом наборе разнообразных изображений, сеть должна научиться извлекать эти общие признаки. -Как Keras, так и PyTorch содержат функции для простого загрузки предобученных весов нейронной сети для некоторых распространенных архитектур, большинство из которых были обучены на изображениях ImageNet. Наиболее часто используемые из них описаны на странице [Архитектуры CNN](../07-ConvNets/CNN_Architectures.md) из предыдущего урока. В частности, вы можете рассмотреть возможность использования одной из следующих: +И Keras, и PyTorch содержат функции для легкой загрузки предобученных весов нейронных сетей для некоторых популярных архитектур, большинство из которых были обучены на изображениях из ImageNet. Наиболее часто используемые описаны на странице [Архитектуры CNN](../07-ConvNets/CNN_Architectures.md) из предыдущего урока. В частности, вы можете рассмотреть использование одной из следующих моделей: -* **VGG-16/VGG-19**, которые являются относительно простыми моделями, но все же обеспечивают хорошую точность. Часто использование VGG в качестве первой попытки — это хороший выбор, чтобы увидеть, как работает перенос обучения. -* **ResNet** — это семейство моделей, предложенное Microsoft Research в 2015 году. У них больше слоев, и, следовательно, они требуют больше ресурсов. -* **MobileNet** — это семейство моделей с уменьшенным размером, подходящих для мобильных устройств. Используйте их, если у вас недостаточно ресурсов и вы можете немного пожертвовать точностью. +* **VGG-16/VGG-19** — относительно простые модели, которые все же дают хорошую точность. Часто использование VGG в качестве первого эксперимента — хороший выбор, чтобы понять, как работает перенос обучения. +* **ResNet** — семейство моделей, предложенных Microsoft Research в 2015 году. Они содержат больше слоев и требуют больше ресурсов. +* **MobileNet** — семейство моделей уменьшенного размера, подходящих для мобильных устройств. Используйте их, если у вас ограничены ресурсы и вы готовы пожертвовать небольшой точностью. -Вот примеры признаков, извлеченных из изображения кошки с помощью сети VGG-16: +Вот пример признаков, извлеченных из изображения кота с помощью сети VGG-16: ![Признаки, извлеченные VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ru.png) -## Набор данных «Кошки против собак» +## Набор данных "Кошки против собак" -В этом примере мы будем использовать набор данных [Кошки и собаки](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), который очень близок к реальному сценарию классификации изображений. +В этом примере мы будем использовать набор данных [Кошки и собаки](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), который очень близок к реальной задаче классификации изображений. ## ✍️ Упражнение: Перенос обучения Давайте посмотрим, как работает перенос обучения, в соответствующих ноутбуках: -* [Перенос обучения - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Перенос обучения - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [Перенос обучения — PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Перенос обучения — TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## Визуализация противоречивой кошки +## Визуализация идеального кота -Предобученная нейронная сеть содержит различные паттерны внутри своего *мозга*, включая понятия **идеальной кошки** (а также идеальной собаки, идеальной зебры и т.д.). Было бы интересно каким-то образом **визуализировать это изображение**. Однако это не просто, потому что паттерны распределены по всем весам сети и также организованы в иерархическую структуру. +Предобученная нейронная сеть содержит различные паттерны внутри своего *"мозга"*, включая представления об **идеальном коте** (а также идеальной собаке, идеальной зебре и т.д.). Было бы интересно как-то **визуализировать это изображение**. Однако это не так просто, потому что паттерны распределены по всем весам сети и организованы в иерархическую структуру. -Один из подходов, который мы можем использовать, — это начать с случайного изображения, а затем попытаться использовать технику **оптимизации градиентного спуска**, чтобы настроить это изображение таким образом, чтобы сеть начала думать, что это кошка. +Один из подходов заключается в том, чтобы начать с случайного изображения и затем использовать технику **оптимизации методом градиентного спуска**, чтобы изменить это изображение так, чтобы сеть начала считать его котом. ![Цикл оптимизации изображения](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ru.png) -Однако, если мы сделаем это, мы получим нечто очень похожее на случайный шум. Это происходит потому, что *существует множество способов заставить сеть думать, что входное изображение — это кошка*, включая некоторые, которые не имеют визуального смысла. Хотя эти изображения содержат много паттернов, типичных для кошки, нет ничего, что могло бы ограничить их визуальную отличительность. +Однако, если мы сделаем это, мы получим что-то, очень похожее на случайный шум. Это происходит потому, что *существует множество способов заставить сеть считать входное изображение котом*, включая такие, которые визуально не имеют смысла. Хотя эти изображения содержат множество паттернов, типичных для кота, ничего не ограничивает их визуальную выразительность. -Чтобы улучшить результат, мы можем добавить еще один термин в функцию потерь, который называется **потеря вариации**. Это метрика, которая показывает, насколько похожи соседние пиксели изображения. Минимизация потери вариации делает изображение более гладким и избавляется от шума, тем самым выявляя более визуально привлекательные паттерны. Вот пример таких "идеальных" изображений, которые классифицируются как кошка и зебра с высокой вероятностью: +Чтобы улучшить результат, мы можем добавить еще один член в функцию потерь, который называется **потеря вариации**. Это метрика, показывающая, насколько похожи соседние пиксели изображения. Минимизация потерь вариации делает изображение более гладким и устраняет шум, раскрывая более визуально привлекательные паттерны. Вот пример таких "идеальных" изображений, которые классифицируются как кот и как зебра с высокой вероятностью: -![Идеальная кошка](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ru.png) | ![Идеальная зебра](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ru.png) +![Идеальный кот](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ru.png) | ![Идеальная зебра](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ru.png) -----|----- - *Идеальная кошка* | *Идеальная зебра* +*Идеальный кот* | *Идеальная зебра* -Похожий подход можно использовать для проведения так называемых **противоречивых атак** на нейронную сеть. Предположим, мы хотим обмануть нейронную сеть и заставить собаку выглядеть как кошка. Если мы возьмем изображение собаки, которое распознается сетью как собака, мы можем немного подкорректировать его с помощью оптимизации градиентного спуска, пока сеть не начнет классифицировать его как кошку: +Аналогичный подход можно использовать для выполнения так называемых **атак с использованием противоречивых примеров** на нейронную сеть. Предположим, мы хотим обмануть нейронную сеть и заставить собаку выглядеть как кот. Если мы возьмем изображение собаки, которое сеть распознает как собаку, мы можем немного изменить его с помощью оптимизации методом градиентного спуска, пока сеть не начнет классифицировать его как кота: -![Изображение собаки](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ru.png) | ![Изображение собаки, классифицированной как кошка](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ru.png) +![Изображение собаки](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ru.png) | ![Изображение собаки, классифицированное как кот](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ru.png) -----|----- -*Оригинальное изображение собаки* | *Изображение собаки, классифицированной как кошка* +*Оригинальное изображение собаки* | *Изображение собаки, классифицированное как кот* -Смотрите код для воспроизведения вышеуказанных результатов в следующем ноутбуке: +Посмотрите код для воспроизведения результатов выше в следующем ноутбуке: + +* [Идеальный и противоречивый кот — TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) -* [Идеальная и противоречивая кошка - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) ## Заключение -Используя перенос обучения, вы можете быстро создать классификатор для задачи классификации пользовательских объектов и достичь высокой точности. Вы можете видеть, что более сложные задачи, которые мы решаем сейчас, требуют большей вычислительной мощности и не могут быть легко решены на ЦП. В следующем модуле мы попробуем использовать более легковесную реализацию для обучения той же модели с использованием меньших вычислительных ресурсов, что приведет к лишь незначительно более низкой точности. +Используя перенос обучения, вы можете быстро создать классификатор для задачи классификации пользовательских объектов и достичь высокой точности. Вы можете заметить, что более сложные задачи, которые мы решаем сейчас, требуют большей вычислительной мощности и не могут быть легко решены на CPU. В следующем разделе мы попробуем использовать более легковесную реализацию для обучения той же модели с использованием меньших вычислительных ресурсов, что приведет к небольшому снижению точности. -## 🚀 Вызов +## 🚀 Задание -В сопроводительных ноутбуках есть заметки внизу о том, как перенос знаний работает лучше всего с несколько схожими тренировочными данными (возможно, новый тип животного). Проведите некоторые эксперименты с совершенно новыми типами изображений, чтобы увидеть, насколько хорошо или плохо работают ваши модели переноса знаний. +В сопровождающих ноутбуках есть заметки в конце о том, что перенос знаний лучше всего работает с похожими данными для обучения (например, новый вид животных). Проведите эксперименты с совершенно новыми типами изображений, чтобы увидеть, насколько хорошо или плохо работают ваши модели переноса знаний. -## [Послевикторина](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Обзор и самообучение +## Обзор и самостоятельное изучение -Прочтите [TrainingTricks.md](TrainingTricks.md), чтобы углубить свои знания о некоторых других способах обучения ваших моделей. +Прочитайте [TrainingTricks.md](TrainingTricks.md), чтобы углубить свои знания о других способах обучения моделей. ## [Задание](lab/README.md) -В этой лаборатории мы будем использовать реальный набор данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) о домашних животных с 35 породами кошек и собак, и мы создадим классификатор с использованием переноса обучения. +В этой лабораторной работе мы будем использовать реальный набор данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) с 35 породами кошек и собак и построим классификатор с использованием переноса обучения. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных сервисов перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index 2bd78f70..9181b928 100644 --- a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ -# Трюки обучения глубокому обучению + +# Трюки для обучения глубоких нейронных сетей -По мере того как нейронные сети становятся глубже, процесс их обучения становится все более сложным. Одной из основных проблем являются так называемые [исчезающие градиенты](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) или [взрывающиеся градиенты](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Этот пост](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) дает хорошее введение в эти проблемы. +По мере увеличения глубины нейронных сетей процесс их обучения становится все более сложным. Одной из основных проблем являются так называемые [исчезающие градиенты](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) или [взрывающиеся градиенты](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Эта статья](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) дает хорошее введение в эти проблемы. Чтобы сделать обучение глубоких сетей более эффективным, можно использовать несколько техник. -## Сохранение значений в разумных пределах +## Поддержание значений в разумных пределах -Для того чтобы численные вычисления были более стабильными, мы хотим убедиться, что все значения в нашей нейронной сети находятся в разумном диапазоне, обычно [-1..1] или [0..1]. Это не очень строгие требования, но природа вычислений с плавающей точкой такова, что значения разных порядков не могут быть точно обработаны вместе. Например, если мы сложим 10-10 и 1010, мы, вероятно, получим 1010, потому что меньшее значение будет "преобразовано" в тот же порядок, что и большее, и, таким образом, мантисса будет потеряна. +Для обеспечения стабильности численных вычислений важно, чтобы все значения внутри нейронной сети находились в разумных пределах, обычно [-1..1] или [0..1]. Это не строгое требование, но природа вычислений с плавающей точкой такова, что значения разных порядков величины не могут быть точно обработаны вместе. Например, если мы сложим 10-10 и 1010, скорее всего, получим 1010, так как меньшее значение будет "преобразовано" к тому же порядку, что и большее, и мантисса будет потеряна. -Большинство функций активации имеют нелинейности в диапазоне [-1..1], и поэтому имеет смысл масштабировать все входные данные до диапазона [-1..1] или [0..1]. +Большинство функций активации имеют нелинейности в пределах [-1..1], поэтому имеет смысл масштабировать все входные данные в интервал [-1..1] или [0..1]. -## Начальная инициализация весов +## Инициализация начальных весов -В идеале, мы хотим, чтобы значения находились в одном диапазоне после прохождения через слои сети. Поэтому важно инициализировать веса таким образом, чтобы сохранить распределение значений. +Идеально, чтобы значения оставались в том же диапазоне после прохождения через слои сети. Поэтому важно инициализировать веса таким образом, чтобы сохранить распределение значений. -Нормальное распределение **N(0,1)** не является хорошей идеей, потому что если у нас есть *n* входов, стандартное отклонение выхода будет *n*, и значения, вероятно, выйдут за пределы интервала [0..1]. +Нормальное распределение **N(0,1)** не является хорошей идеей, так как если у нас есть *n* входов, стандартное отклонение выхода будет *n*, и значения, скорее всего, выйдут за пределы интервала [0..1]. -Следующие инициализации часто используются: +Часто используются следующие методы инициализации: - * Равномерное распределение -- `uniform` - * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** гарантирует, что для входов со средним значением 0 и стандартным отклонением 1 среднее/стандартное отклонение останется тем же - * **N(0,√2/(n_in+n_out))** -- так называемая **инициализация Xavier** (`glorot`), она помогает сохранить сигналы в диапазоне как при прямом, так и при обратном распространении +- Равномерное распределение — `uniform` +- **N(0,1/n)** — `gaussian` +- **N(0,1/√n_in)** гарантирует, что для входов с нулевым средним и стандартным отклонением 1 сохранятся те же среднее и стандартное отклонение +- **N(0,√2/(n_in+n_out))** — так называемая **инициализация Ксавье** (`glorot`), помогает сохранять сигналы в пределах диапазона как при прямом, так и при обратном распространении -## Пакетная нормализация +## Нормализация батча -Даже при правильной инициализации весов, веса могут стать произвольно большими или маленькими во время обучения, и они выведут сигналы за пределы правильного диапазона. Мы можем вернуть сигналы, используя одну из техник **нормализации**. Хотя их несколько (нормализация весов, нормализация слоя), наиболее часто используемой является пакетная нормализация. +Даже при правильной инициализации весов они могут становиться произвольно большими или маленькими в процессе обучения, выводя сигналы за пределы допустимого диапазона. Мы можем вернуть сигналы обратно, используя одну из техник **нормализации**. Хотя существует несколько методов (нормализация весов, нормализация слоя), наиболее часто используется нормализация батча. -Идея **пакетной нормализации** заключается в том, чтобы учитывать все значения в мини-батче и выполнять нормализацию (т.е. вычитать среднее и делить на стандартное отклонение) на основе этих значений. Это реализуется как слой сети, который выполняет эту нормализацию после применения весов, но перед функцией активации. В результате мы, вероятно, увидим более высокую окончательную точность и более быстрое обучение. +Идея **нормализации батча** заключается в учете всех значений в минибатче и выполнении нормализации (т.е. вычитание среднего и деление на стандартное отклонение) на основе этих значений. Это реализуется как слой сети, который выполняет нормализацию после применения весов, но перед функцией активации. В результате мы, скорее всего, получим более высокую итоговую точность и более быстрое обучение. -Вот [оригинальная статья](https://arxiv.org/pdf/1502.03167.pdf) о пакетной нормализации, [объяснение на Википедии](https://en.wikipedia.org/wiki/Batch_normalization) и [хорошая вводная статья в блоге](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (и одна [на русском](https://habrahabr.ru/post/309302/)). +Вот [оригинальная статья](https://arxiv.org/pdf/1502.03167.pdf) о нормализации батча, [объяснение на Википедии](https://en.wikipedia.org/wiki/Batch_normalization) и [хорошая вводная статья](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (и одна [на русском](https://habrahabr.ru/post/309302/)). -## Упадок +## Dropout -**Упадок** — это интересная техника, которая удаляет определенный процент случайных нейронов во время обучения. Она также реализуется как слой с одним параметром (процент нейронов для удаления, обычно 10%-50%), и во время обучения она обнуляет случайные элементы входного вектора перед передачей его в следующий слой. +**Dropout** — это интересная техника, которая удаляет определенный процент случайных нейронов во время обучения. Она также реализуется как слой с одним параметром (процент удаляемых нейронов, обычно 10%-50%), и во время обучения обнуляет случайные элементы входного вектора перед передачей его следующему слою. -Хотя это может звучать как странная идея, вы можете увидеть эффект упадка на обучении классификатора цифр MNIST в [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) блокноте. Это ускоряет обучение и позволяет достичь более высокой точности за меньшее количество эпох обучения. +Хотя это может показаться странной идеей, вы можете увидеть эффект dropout на обучении классификатора цифр MNIST в ноутбуке [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Это ускоряет обучение и позволяет достичь более высокой точности за меньшее количество эпох. Этот эффект можно объяснить несколькими способами: - * Это можно рассматривать как случайный шок для модели, который выводит оптимизацию из локального минимума - * Это можно рассматривать как *неявное усреднение модели*, потому что можно сказать, что во время упадка мы обучаем слегка другую модель +- Это можно рассматривать как случайный шоковый фактор для модели, который выводит оптимизацию из локального минимума +- Это можно рассматривать как *неявное усреднение модели*, так как можно сказать, что во время dropout мы обучаем немного другую модель -> *Некоторые люди говорят, что когда пьяный человек пытается что-то выучить, он запомнит это лучше на следующее утро, по сравнению с трезвым человеком, потому что мозг с некоторыми неисправными нейронами пытается лучше адаптироваться к пониманию. Мы никогда не проверяли, правда ли это или нет* +> *Некоторые люди говорят, что когда пьяный человек пытается что-то выучить, он запомнит это лучше на следующее утро, чем трезвый, потому что мозг с некоторыми неработающими нейронами лучше адаптируется к пониманию смысла. Мы сами никогда не проверяли, правда это или нет.* ## Предотвращение переобучения -Одним из очень важных аспектов глубокого обучения является способность предотвращать [переобучение](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Хотя может быть соблазнительно использовать очень мощную модель нейронной сети, мы всегда должны балансировать количество параметров модели с количеством обучающих примеров. +Одним из очень важных аспектов глубокого обучения является способность предотвращать [переобучение](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Хотя может быть заманчиво использовать очень мощную модель нейронной сети, мы всегда должны балансировать количество параметров модели с количеством обучающих выборок. -> Убедитесь, что вы понимаете концепцию [переобучения](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), которую мы представили ранее! +> Убедитесь, что вы понимаете концепцию [переобучения](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), которую мы объясняли ранее! -Существует несколько способов предотвратить переобучение: +Существует несколько способов предотвращения переобучения: - * Раннее завершение — непрерывный мониторинг ошибки на валидационном наборе и остановка обучения, когда ошибка валидации начинает увеличиваться. - * Явное уменьшение веса / Регуляризация — добавление дополнительного штрафа к функции потерь за высокие абсолютные значения весов, что предотвращает получение модели очень нестабильных результатов - * Усреднение модели — обучение нескольких моделей, а затем усреднение результата. Это помогает минимизировать дисперсию. - * Упадок (неявное усреднение модели) +- Раннее прекращение — непрерывный мониторинг ошибки на валидационном наборе и остановка обучения, когда ошибка на валидации начинает увеличиваться. +- Явное затухание весов / регуляризация — добавление дополнительного штрафа к функции потерь за высокие абсолютные значения весов, что предотвращает получение моделью очень нестабильных результатов. +- Усреднение моделей — обучение нескольких моделей и последующее усреднение результата. Это помогает минимизировать дисперсию. +- Dropout (неявное усреднение модели) ## Оптимизаторы / Алгоритмы обучения -Еще одним важным аспектом обучения является выбор хорошего алгоритма обучения. Хотя классический **градиентный спуск** является разумным выбором, он иногда может быть слишком медленным или привести к другим проблемам. +Еще один важный аспект обучения — выбор хорошего алгоритма обучения. Хотя классический **градиентный спуск** является разумным выбором, он иногда может быть слишком медленным или приводить к другим проблемам. -В глубоком обучении мы используем **Стохастический Градиентный Спуск** (SGD), который представляет собой градиентный спуск, применяемый к мини-батчам, случайно выбранным из обучающего набора. Веса корректируются по этой формуле: +В глубоком обучении мы используем **стохастический градиентный спуск** (SGD), который представляет собой градиентный спуск, применяемый к минибатчам, случайно выбранным из обучающего набора. Веса корректируются по следующей формуле: wt+1 = wt - η∇ℒ -### Моментум +### Momentum -В **моментум SGD** мы сохраняем часть градиента из предыдущих шагов. Это похоже на то, когда мы движемся куда-то с инерцией, и получаем удар в другом направлении, наша траектория не меняется сразу, но сохраняет часть оригинального движения. Здесь мы вводим еще один вектор v для представления *скорости*: +В **Momentum SGD** мы сохраняем часть градиента из предыдущих шагов. Это похоже на движение с инерцией: если мы получаем удар в другом направлении, наша траектория не меняется мгновенно, а сохраняет часть первоначального движения. Здесь вводится дополнительный вектор v для представления *скорости*: -* vt+1 = γ vt - η∇ℒ -* wt+1 = wt + vt+1 +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt + vt+1 -Здесь параметр γ указывает, в какой степени мы учитываем инерцию: γ=0 соответствует классическому SGD; γ=1 — это чистое уравнение движения. +Параметр γ указывает, насколько мы учитываем инерцию: γ=0 соответствует классическому SGD; γ=1 — это чистое уравнение движения. -### Adam, Adagrad и др. +### Adam, Adagrad и другие -Поскольку в каждом слое мы умножаем сигналы на некоторую матрицу Wi, в зависимости от ||Wi||, градиент может либо уменьшаться и приближаться к 0, либо бесконечно возрастать. Это суть проблемы взрывающихся/исчезающих градиентов. +Поскольку в каждом слое мы умножаем сигналы на некоторую матрицу Wi, в зависимости от ||Wi|| градиент может либо уменьшаться до почти 0, либо возрастать бесконечно. Это и есть суть проблемы исчезающих/взрывающихся градиентов. -Одно из решений этой проблемы заключается в том, чтобы использовать только направление градиента в уравнении и игнорировать абсолютное значение, т.е. +Одним из решений этой проблемы является использование только направления градиента в уравнении, игнорируя абсолютное значение, т.е. wt+1 = wt - η(∇ℒ/||∇ℒ||), где ||∇ℒ|| = √∑(∇ℒ)2 Этот алгоритм называется **Adagrad**. Другие алгоритмы, использующие ту же идею: **RMSProp**, **Adam**. -> **Adam** считается очень эффективным алгоритмом для многих приложений, поэтому если вы не уверены, какой использовать — используйте Adam. +> **Adam** считается очень эффективным алгоритмом для многих приложений, поэтому если вы не уверены, какой выбрать — используйте Adam. -### Усечение градиента +### Gradient clipping -Усечение градиента является расширением вышеописанной идеи. Когда ||∇ℒ|| ≤ θ, мы учитываем оригинальный градиент в оптимизации веса, а когда ||∇ℒ|| > θ — мы делим градиент на его норму. Здесь θ — это параметр, в большинстве случаев мы можем взять θ=1 или θ=10. +Gradient clipping — это расширение идеи выше. Когда ||∇ℒ|| ≤ θ, мы используем оригинальный градиент в оптимизации весов, а когда ||∇ℒ|| > θ — делим градиент на его норму. Здесь θ — параметр, в большинстве случаев можно взять θ=1 или θ=10. -### Уменьшение скорости обучения +### Learning rate decay -Успех обучения часто зависит от параметра скорости обучения η. Логично предположить, что большие значения η приводят к более быстрому обучению, что обычно нам нужно в начале обучения, а затем меньшие значения η позволяют нам тонко настраивать сеть. Таким образом, в большинстве случаев мы хотим уменьшить η в процессе обучения. +Успех обучения часто зависит от параметра скорости обучения η. Логично предположить, что большие значения η приводят к более быстрому обучению, что обычно желательно в начале обучения, а затем меньшие значения η позволяют тонко настроить сеть. Таким образом, в большинстве случаев мы хотим уменьшать η в процессе обучения. -Это можно сделать, умножая η на некоторое число (например, 0.98) после каждой эпохи обучения или используя более сложный **график скорости обучения**. +Это можно сделать, умножая η на некоторое число (например, 0.98) после каждой эпохи обучения или используя более сложный **график изменения скорости обучения**. -## Разные архитектуры сетей +## Различные архитектуры сетей -Выбор правильной архитектуры сети для вашей задачи может быть непростым. Обычно мы выбираем архитектуру, которая зарекомендовала себя для нашей конкретной задачи (или аналогичной). Вот [хороший обзор](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) архитектур нейронных сетей для компьютерного зрения. +Выбор правильной архитектуры сети для вашей задачи может быть сложным. Обычно мы берем архитектуру, которая доказала свою эффективность для нашей конкретной задачи (или похожей). Вот [хороший обзор](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) архитектур нейронных сетей для компьютерного зрения. -> Важно выбрать архитектуру, которая будет достаточно мощной для количества обучающих примеров, которые у нас есть. Выбор слишком мощной модели может привести к [переобучению](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). +> Важно выбрать архитектуру, которая будет достаточно мощной для количества обучающих выборок, которые у нас есть. Выбор слишком мощной модели может привести к [переобучению](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). -Другим хорошим способом будет использование архитектуры, которая автоматически подстраивается под необходимую сложность. В некоторой степени архитектуры **ResNet** и **Inception** являются самоадаптирующимися. [Больше о архитектурах компьютерного зрения](../07-ConvNets/CNN_Architectures.md) +Другим хорошим вариантом будет использование архитектуры, которая автоматически адаптируется к требуемой сложности. В некоторой степени архитектуры **ResNet** и **Inception** являются самонастраивающимися. [Подробнее об архитектурах для компьютерного зрения](../07-ConvNets/CNN_Architectures.md). **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index 57ec5c45..8a18dfca 100644 --- a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,16 +1,25 @@ -# Классификация домашних животных Оксфорда с использованием трансферного обучения + +# Классификация домашних животных из Оксфорда с использованием переноса обучения -Лабораторная работа из [Курса AI для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [Учебной программы "Искусственный интеллект для начинающих"](https://github.com/microsoft/ai-for-beginners). ## Задача -Представьте, что вам нужно разработать приложение для питомника, чтобы каталогизировать всех домашних животных. Одной из замечательных функций такого приложения было бы автоматическое определение породы по фотографии. В этой лабораторной работе мы будем использовать трансферное обучение для классификации изображений домашних животных из набора данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). +Представьте, что вам нужно разработать приложение для питомника, чтобы каталогизировать всех животных. Одной из замечательных функций такого приложения могла бы быть автоматическая идентификация породы по фотографии. В этом задании мы будем использовать перенос обучения для классификации изображений домашних животных из реальной жизни, используя набор данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). ## Набор данных -Мы будем использовать оригинальный набор данных домашних животных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), который содержит 35 различных пород собак и кошек. +Мы будем использовать оригинальный набор данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), который содержит 35 различных пород собак и кошек. -Чтобы скачать набор данных, используйте этот фрагмент кода: +Чтобы скачать набор данных, используйте следующий код: ```python !wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz @@ -20,11 +29,11 @@ ## Начало работы с ноутбуком -Начните лабораторную работу, открыв [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb). +Начните лабораторную работу, открыв [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) ## Выводы -Трансферное обучение и предварительно обученные сети позволяют нам относительно легко решать задачи классификации изображений в реальном мире. Однако предварительно обученные сети хорошо работают с изображениями одного типа, и если мы начнем классифицировать очень разные изображения (например, медицинские изображения), мы, скорее всего, получим гораздо худшие результаты. +Перенос обучения и предварительно обученные сети позволяют относительно легко решать задачи классификации изображений из реального мира. Однако предварительно обученные сети хорошо работают с изображениями схожего типа, и если мы начнем классифицировать очень разные изображения (например, медицинские снимки), результаты, скорее всего, будут значительно хуже. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md index da494f3e..94fbb783 100644 --- a/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,14 +1,23 @@ + # Автоэнкодеры -При обучении CNN одной из проблем является необходимость в большом количестве размеченных данных. В случае классификации изображений нам нужно разделить изображения на разные классы, что является ручной работой. +При обучении сверточных нейронных сетей (CNN) одной из проблем является необходимость большого количества размеченных данных. Например, для классификации изображений нужно вручную разделить изображения на разные классы. -## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -Тем не менее, мы можем использовать сырые (незначенные) данные для обучения извлекателей признаков CNN, что называется **самостоятельным обучением**. Вместо меток мы будем использовать обучающие изображения как вход и выход сети. Основная идея **автоэнкодера** заключается в том, что у нас будет **кодирующая сеть**, которая преобразует входное изображение в некоторое **скрытое пространство** (обычно это просто вектор меньшего размера), а затем **декодирующая сеть**, цель которой - восстановить оригинальное изображение. +Однако можно использовать необработанные (неразмеченные) данные для обучения CNN в качестве извлекателей признаков, что называется **самостоятельным обучением** (self-supervised learning). Вместо меток мы будем использовать обучающие изображения как входные данные и как выходные. Основная идея **автоэнкодера** заключается в том, что у нас будет **сеть-энкодер**, которая преобразует входное изображение в некоторое **скрытое пространство** (обычно это вектор меньшего размера), а затем **сеть-декодер**, задача которой — восстановить исходное изображение. -> ✅ Автоэнкодер - это "тип искусственной нейронной сети, используемой для изучения эффективных кодировок незанятых данных." +> ✅ [Автоэнкодер](https://wikipedia.org/wiki/Autoencoder) — это "тип искусственной нейронной сети, используемой для изучения эффективного кодирования неразмеченных данных." -Поскольку мы обучаем автоэнкодер, чтобы захватить как можно больше информации из оригинального изображения для точного восстановления, сеть пытается найти лучшее **встраивание** входных изображений для передачи смысла. +Поскольку мы обучаем автоэнкодер захватывать как можно больше информации из исходного изображения для его точного восстановления, сеть пытается найти наилучшее **встраивание** (embedding) входных изображений, чтобы уловить их смысл. ![Схема автоэнкодера](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ru.jpg) @@ -16,85 +25,85 @@ ## Сценарии использования автоэнкодеров -Хотя восстановление оригинальных изображений само по себе может не казаться полезным, есть несколько сценариев, где автоэнкодеры особенно полезны: +Хотя восстановление исходных изображений само по себе может показаться не очень полезным, есть несколько сценариев, где автоэнкодеры особенно эффективны: -* **Снижение размерности изображений для визуализации** или **обучения встраиваний изображений**. Обычно автоэнкодеры дают лучшие результаты, чем PCA, поскольку учитывают пространственную природу изображений и иерархические признаки. -* **Удаление шума**, т.е. удаление шума из изображения. Поскольку шум содержит много бесполезной информации, автоэнкодер не может уместить все это в относительно малом скрытом пространстве и, таким образом, захватывает только важную часть изображения. При обучении шумоподавляющих сетей мы начинаем с оригинальных изображений и используем изображения с искусственно добавленным шумом в качестве входных данных для автоэнкодера. -* **Суперразрешение**, увеличение разрешения изображения. Мы начинаем с изображений высокого разрешения и используем изображение с более низким разрешением в качестве входа для автоэнкодера. -* **Генеративные модели**. После того как мы обучим автоэнкодер, часть декодера может быть использована для создания новых объектов, начиная с случайных скрытых векторов. +* **Снижение размерности изображений для визуализации** или **обучение встраиваний изображений**. Обычно автоэнкодеры дают лучшие результаты, чем PCA, так как учитывают пространственную природу изображений и иерархические признаки. +* **Удаление шума** (denoising), то есть удаление шума с изображения. Поскольку шум содержит много бесполезной информации, автоэнкодер не может вместить его в относительно небольшое скрытое пространство и захватывает только важные части изображения. При обучении денойзеров мы начинаем с исходных изображений и используем изображения с искусственно добавленным шумом в качестве входных данных для автоэнкодера. +* **Повышение разрешения** (super-resolution), увеличение разрешения изображения. Мы начинаем с изображений высокого разрешения и используем изображения с более низким разрешением в качестве входных данных для автоэнкодера. +* **Генеративные модели**. После обучения автоэнкодера часть декодера можно использовать для создания новых объектов, начиная с случайных скрытых векторов. ## Вариационные автоэнкодеры (VAE) -Традиционные автоэнкодеры уменьшают размерность входных данных, определяя важные признаки входных изображений. Однако скрытые векторы часто не имеют большого смысла. Другими словами, взяв датасет MNIST в качестве примера, определить, какие цифры соответствуют различным скрытым векторам, не так просто, поскольку близкие скрытые векторы не обязательно соответствуют одним и тем же цифрам. +Традиционные автоэнкодеры каким-то образом уменьшают размерность входных данных, выделяя важные признаки входных изображений. Однако скрытые векторы часто не имеют очевидного смысла. Например, если взять набор данных MNIST, определить, какие цифры соответствуют различным скрытым векторам, не так просто, так как близкие скрытые векторы не обязательно будут соответствовать одинаковым цифрам. -С другой стороны, для обучения *генеративных* моделей лучше иметь некоторое понимание скрытого пространства. Эта идея приводит нас к **вариационному автоэнкодеру** (VAE). +С другой стороны, для обучения *генеративных* моделей лучше иметь некоторое понимание скрытого пространства. Эта идея приводит нас к **вариационным автоэнкодерам** (VAE). -VAE - это автоэнкодер, который учится предсказывать *статистическое распределение* скрытых параметров, так называемое **скрытое распределение**. Например, мы можем захотеть, чтобы скрытые векторы распределялись нормально с некоторым средним zmean и стандартным отклонением zsigma (как среднее, так и стандартное отклонение - это векторы некоторой размерности d). Кодировщик в VAE учится предсказывать эти параметры, а затем декодер берет случайный вектор из этого распределения, чтобы восстановить объект. +VAE — это автоэнкодер, который обучается предсказывать *статистическое распределение* скрытых параметров, так называемое **скрытое распределение**. Например, мы можем захотеть, чтобы скрытые векторы имели нормальное распределение с некоторым средним zmean и стандартным отклонением zsigma (оба параметра — это векторы некоторой размерности d). Энкодер в VAE обучается предсказывать эти параметры, а декодер берет случайный вектор из этого распределения для восстановления объекта. -Подводя итог: +Подытожим: -* Из входного вектора мы предсказываем `z_mean` и `z_log_sigma` (вместо того чтобы предсказывать само стандартное отклонение, мы предсказываем его логарифм) -* Мы выбираем вектор `sample` из распределения N(zmean,exp(zlog\_sigma)) -* Декодер пытается декодировать оригинальное изображение, используя `sample` в качестве входного вектора + * Из входного вектора мы предсказываем `z_mean` и `z_log_sigma` (вместо стандартного отклонения предсказывается его логарифм) + * Мы выбираем случайный вектор `sample` из распределения N(zmean,exp(zlog\_sigma)) + * Декодер пытается восстановить исходное изображение, используя `sample` как входной вектор - + -> Изображение из [этого блога](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) Исаака Дайкемана +> Изображение из [этого блога](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) Исаака Дайкмана Вариационные автоэнкодеры используют сложную функцию потерь, состоящую из двух частей: -* **Потери восстановления** - это функция потерь, которая показывает, насколько близко восстановленное изображение к целевому (это может быть среднеквадратичная ошибка, или MSE). Это та же функция потерь, что и в обычных автоэнкодерах. -* **KL-потери**, которая гарантирует, что распределения скрытых переменных остаются близкими к нормальному распределению. Она основана на понятии [дивергенции Кульбака-Лейблера](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - метрики для оценки того, насколько похожи два статистических распределения. +* **Потери восстановления** (Reconstruction loss) — функция потерь, показывающая, насколько восстановленное изображение близко к целевому (например, среднеквадратичная ошибка, MSE). Это та же функция потерь, что и в обычных автоэнкодерах. +* **KL-потери**, которые обеспечивают, чтобы распределение скрытых переменных оставалось близким к нормальному распределению. Это основано на понятии [дивергенции Кульбака-Лейблера](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) — метрике для оценки сходства двух статистических распределений. -Одно из важных преимуществ VAE заключается в том, что они позволяют нам относительно легко генерировать новые изображения, поскольку мы знаем, из какого распределения брать скрытые векторы. Например, если мы обучаем VAE с 2D скрытым вектором на MNIST, мы можем затем изменять компоненты скрытого вектора, чтобы получить разные цифры: +Одним из важных преимуществ VAE является то, что они позволяют относительно легко генерировать новые изображения, так как мы знаем, из какого распределения брать скрытые векторы. Например, если мы обучим VAE с 2D скрытым вектором на MNIST, мы сможем варьировать компоненты скрытого вектора, чтобы получить разные цифры: vaemnist > Изображение от [Дмитрия Сошникова](http://soshnikov.com) -Обратите внимание, как изображения сливаются друг с другом, когда мы начинаем получать скрытые векторы из разных частей пространства скрытых параметров. Мы также можем визуализировать это пространство в 2D: +Обратите внимание, как изображения плавно переходят друг в друга, когда мы начинаем брать скрытые векторы из разных частей пространства скрытых параметров. Мы также можем визуализировать это пространство в 2D: -vaemnist cluster +vaemnist cluster > Изображение от [Дмитрия Сошникова](http://soshnikov.com) ## ✍️ Упражнения: Автоэнкодеры -Узнайте больше об автоэнкодерах в соответствующих ноутбуках: +Узнайте больше об автоэнкодерах в следующих ноутбуках: * [Автоэнкодеры в TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) * [Автоэнкодеры в PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) ## Свойства автоэнкодеров -* **Специфичность данных** - они хорошо работают только с тем типом изображений, на которых они были обучены. Например, если мы обучаем сеть суперразрешения на цветах, она не будет хорошо работать на портретах. Это связано с тем, что сеть может производить изображение более высокого разрешения, извлекая мелкие детали из признаков, изученных на обучающем наборе данных. -* **Потеря качества** - восстановленное изображение не является тем же самым, что и оригинальное изображение. Характер потерь определяется *функцией потерь*, используемой во время обучения. -* Работает с **незначенными данными**. +* **Специфичность данных** — они хорошо работают только с тем типом изображений, на которых были обучены. Например, если обучить сеть повышения разрешения на цветах, она плохо справится с портретами. Это связано с тем, что сеть создает изображение более высокого разрешения, используя мелкие детали, извлеченные из обучающего набора данных. +* **Потеря информации** — восстановленное изображение не идентично исходному. Характер потерь определяется *функцией потерь*, используемой при обучении. +* Работают с **неразмеченными данными** -## [Постлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) ## Заключение -В этом уроке вы узнали о различных типах автоэнкодеров, доступных для ученого в области ИИ. Вы узнали, как их строить и как использовать для восстановления изображений. Вы также узнали о VAE и как использовать его для генерации новых изображений. +В этом уроке вы узнали о различных типах автоэнкодеров, доступных для исследователя ИИ. Вы научились их строить и использовать для восстановления изображений. Вы также узнали о VAE и о том, как использовать их для генерации новых изображений. -## 🚀 Вызов +## 🚀 Задание -В этом уроке вы узнали о использовании автоэнкодеров для изображений. Но их также можно использовать для музыки! Ознакомьтесь с проектом Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), который использует автоэнкодеры для изучения восстановления музыки. Проведите несколько [экспериментов](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) с этой библиотекой, чтобы увидеть, что вы можете создать. +В этом уроке вы узнали об использовании автоэнкодеров для изображений. Но их можно использовать и для музыки! Ознакомьтесь с проектом [MusicVAE](https://magenta.tensorflow.org/music-vae) от Magenta, который использует автоэнкодеры для обучения восстановления музыки. Проведите [эксперименты](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) с этой библиотекой, чтобы увидеть, что вы можете создать. -## [Постлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) ## Обзор и самостоятельное изучение -Для справки читайте больше об автоэнкодерах в этих ресурсах: +Для справки прочитайте больше об автоэнкодерах в следующих ресурсах: * [Создание автоэнкодеров в Keras](https://blog.keras.io/building-autoencoders-in-keras.html) -* [Блог на NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Статья на NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) * [Объяснение вариационных автоэнкодеров](https://kvfrans.com/variational-autoencoders-explained/) * [Условные вариационные автоэнкодеры](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ## Задание -В конце [этого ноутбука с использованием TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) вы найдете "задачу" - используйте это как ваше задание. +В конце [этого ноутбука на TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) вы найдете задание — используйте его в качестве домашней работы. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/10-GANs/README.md b/translations/ru/lessons/4-ComputerVision/10-GANs/README.md index 75fc81ec..1b45c898 100644 --- a/translations/ru/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/ru/lessons/4-ComputerVision/10-GANs/README.md @@ -1,101 +1,110 @@ -# Генеративные Состязательные Сети + +# Генеративно-состязательные сети -В предыдущем разделе мы узнали о **генеративных моделях**: моделях, которые могут создавать новые изображения, похожие на те, что находятся в обучающем наборе данных. VAE был хорошим примером генеративной модели. +В предыдущем разделе мы узнали о **генеративных моделях**: моделях, которые могут создавать новые изображения, похожие на те, что находятся в обучающем наборе данных. Примером такой модели является VAE. -## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -Однако, если мы попытаемся сгенерировать что-то действительно значимое, например, картину разумного разрешения, с помощью VAE, мы увидим, что обучение не сходится хорошо. Для этой задачи нам следует изучить другую архитектуру, специально предназначенную для генеративных моделей - **Генеративные Состязательные Сети**, или GAN. +Однако, если мы попытаемся создать что-то действительно значимое, например, картину с разумным разрешением, используя VAE, мы заметим, что обучение не сходится должным образом. Для таких случаев стоит изучить другую архитектуру, специально предназначенную для генеративных моделей, — **Генеративно-состязательные сети** (Generative Adversarial Networks, GANs). -Основная идея GAN заключается в том, чтобы иметь две нейронные сети, которые будут обучаться друг против друга: +Основная идея GAN заключается в использовании двух нейронных сетей, которые обучаются друг против друга: -> Изображение от [Дмитрия Сошникова](http://soshnikov.com) +> Изображение предоставлено [Дмитрием Сошниковым](http://soshnikov.com) -> ✅ Немного словарного запаса: -> * **Генератор** - это сеть, которая принимает случайный вектор и производит изображение в результате -> * **Дискриминатор** - это сеть, которая принимает изображение и должна определить, является ли оно реальным изображением (из обучающего набора данных) или было сгенерировано генератором. Это по сути классификатор изображений. +> ✅ Немного терминологии: +> * **Генератор** — это сеть, которая принимает случайный вектор и создает изображение в качестве результата. +> * **Дискриминатор** — это сеть, которая принимает изображение и должна определить, является ли оно реальным (из обучающего набора данных) или сгенерированным генератором. По сути, это классификатор изображений. ### Дискриминатор -Архитектура дискриминатора не отличается от обычной сети классификации изображений. В самом простом случае это может быть полностью связанный классификатор, но, скорее всего, это будет [сверточная сеть](../07-ConvNets/README.md). +Архитектура дискриминатора не отличается от обычной сети для классификации изображений. В простейшем случае это может быть полностью связанный классификатор, но чаще всего это будет [сверточная сеть](../07-ConvNets/README.md). -> ✅ GAN на основе сверточных сетей называется [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) +> ✅ GAN, основанный на сверточных сетях, называется [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) -Дискриминатор CNN состоит из следующих слоев: нескольких сверток + пуллингов (с уменьшающимся пространственным размером) и одного или нескольких полностью связанных слоев для получения "вектор признаков", финального бинарного классификатора. +Сверточный дискриминатор состоит из следующих слоев: нескольких сверточных слоев с понижением пространственного размера (с использованием пулинга) и одного или нескольких полностью связанных слоев для получения "векторных признаков", а затем финального бинарного классификатора. -> ✅ 'Пуллинг' в этом контексте - это техника, которая уменьшает размер изображения. "Слои пуллинга уменьшают размеры данных, комбинируя выходы кластеров нейронов на одном слое в один нейрон на следующем слое." - [источник](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ "Пулинг" в данном контексте — это метод уменьшения размера изображения. "Слои пулинга уменьшают размер данных, объединяя выходы кластеров нейронов на одном слое в один нейрон на следующем слое." - [источник](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) ### Генератор -Генератор немного более сложен. Вы можете рассматривать его как обратный дискриминатор. Начав с латентного вектора (вместо вектора признаков), он имеет полностью связанный слой, который преобразует его в необходимый размер/форму, за которым следуют деконволюции + увеличение. Это похоже на *декодер* в [автоэнкодере](../09-Autoencoders/README.md). +Генератор устроен немного сложнее. Его можно рассматривать как обратный дискриминатор. Начиная с латентного вектора (вместо вектора признаков), он использует полностью связанный слой для преобразования вектора в требуемый размер/форму, а затем применяет деконволюции и масштабирование. Это похоже на *декодер* в [автоэнкодере](../09-Autoencoders/README.md). -> ✅ Поскольку сверточный слой реализуется как линейный фильтр, проходящий по изображению, деконволюция по сути аналогична свертке и может быть реализована с использованием той же логики слоев. +> ✅ Поскольку сверточный слой реализуется как линейный фильтр, проходящий по изображению, деконволюция по сути аналогична свертке и может быть реализована с использованием той же логики слоя. -> Изображение от [Дмитрия Сошникова](http://soshnikov.com) +> Изображение предоставлено [Дмитрием Сошниковым](http://soshnikov.com) ### Обучение GAN -GAN называются **состязательными**, потому что между генератором и дискриминатором существует постоянная конкуренция. В ходе этой конкуренции как генератор, так и дискриминатор улучшаются, таким образом, сеть учится производить все лучшие и лучшие изображения. +GAN называются **состязательными**, потому что между генератором и дискриминатором идет постоянное соревнование. В ходе этого соревнования обе сети улучшаются, и сеть учится создавать все более качественные изображения. Обучение происходит в два этапа: -* **Обучение дискриминатора**. Эта задача довольно проста: мы генерируем партию изображений с помощью генератора, помечая их как 0, что означает фальшивое изображение, и берем партию изображений из входного набора данных (с меткой 1, реальное изображение). Мы получаем некоторую *потерю дискриминатора* и выполняем обратное распространение. -* **Обучение генератора**. Это немного сложнее, потому что мы не знаем ожидаемый выход для генератора напрямую. Мы берем всю сеть GAN, состоящую из генератора, за которым следует дискриминатор, подаем ее с некоторыми случайными векторами и ожидаем, что результат будет 1 (соответствующий реальным изображениям). Затем мы замораживаем параметры дискриминатора (мы не хотим, чтобы он обучался на этом этапе) и выполняем обратное распространение. +* **Обучение дискриминатора**. Эта задача довольно проста: мы генерируем партию изображений с помощью генератора, помечая их как 0 (фейковые изображения), и берем партию изображений из входного набора данных (с меткой 1, реальные изображения). Затем вычисляем *функцию потерь дискриминатора* и выполняем обратное распространение ошибки. +* **Обучение генератора**. Этот этап сложнее, так как мы не знаем ожидаемый результат для генератора напрямую. Мы берем всю сеть GAN, состоящую из генератора и дискриминатора, подаем на вход случайные векторы и ожидаем, что результат будет 1 (соответствует реальным изображениям). Затем мы "замораживаем" параметры дискриминатора (чтобы он не обучался на этом этапе) и выполняем обратное распространение ошибки. -В ходе этого процесса потери как генератора, так и дискриминатора не уменьшаются значительно. В идеальной ситуации они должны колебаться, соответствуя улучшению производительности обеих сетей. +В процессе обучения функции потерь генератора и дискриминатора обычно не уменьшаются значительно. В идеале они должны колебаться, что соответствует улучшению обеих сетей. ## ✍️ Упражнения: GAN -* [Записная книжка GAN в TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) -* [Записная книжка GAN в PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) +* [Блокнот GAN на TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Блокнот GAN на PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### Проблемы с обучением GAN +### Проблемы при обучении GAN -Известно, что GAN особенно трудно обучать. Вот несколько проблем: +GAN известны своей сложностью в обучении. Вот несколько распространенных проблем: -* **Падение режима**. Под этим термином мы имеем в виду, что генератор учится производить одно успешное изображение, которое обманывает дискриминатор, а не разнообразие различных изображений. -* **Чувствительность к гиперпараметрам**. Часто можно увидеть, что GAN вообще не сходится, а затем внезапно уменьшается скорость обучения, что приводит к сходимости. -* Сохранение **баланса** между генератором и дискриминатором. В многих случаях потеря дискриминатора может быстро упасть до нуля, что приводит к тому, что генератор не может обучаться дальше. Чтобы преодолеть это, мы можем попробовать установить разные скорости обучения для генератора и дискриминатора или пропустить обучение дискриминатора, если потеря уже слишком низка. -* Обучение для **высокого разрешения**. Это проблема, аналогичная той, что возникает с автоэнкодерами, и она возникает, потому что восстановление слишком многих слоев сверточной сети приводит к артефактам. Эта проблема обычно решается с помощью так называемого **прогрессивного роста**, когда сначала несколько слоев обучаются на изображениях низкого разрешения, а затем слои "разблокируются" или добавляются. Другим решением может быть добавление дополнительных соединений между слоями и обучение нескольких разрешений одновременно - смотрите эту [статью о многоуровневых градиентных GAN](https://arxiv.org/abs/1903.06048) для подробностей. +* **Коллапс моды**. Это означает, что генератор учится создавать одно успешное изображение, которое обманывает дискриминатор, вместо того чтобы генерировать разнообразные изображения. +* **Чувствительность к гиперпараметрам**. Часто можно заметить, что GAN не сходится вообще, а затем внезапное уменьшение скорости обучения приводит к сходимости. +* Поддержание **баланса** между генератором и дискриминатором. Во многих случаях функция потерь дискриминатора может быстро упасть до нуля, что делает невозможным дальнейшее обучение генератора. Чтобы этого избежать, можно попробовать установить разные скорости обучения для генератора и дискриминатора или пропускать обучение дискриминатора, если его функция потерь уже слишком мала. +* Обучение для **высокого разрешения**. Эта проблема аналогична проблеме с автоэнкодерами: восстановление слишком большого количества слоев сверточной сети приводит к артефактам. Обычно это решается с помощью так называемого **прогрессивного роста**, когда сначала обучаются несколько слоев на изображениях низкого разрешения, а затем слои "разблокируются" или добавляются. Другим решением может быть добавление дополнительных связей между слоями и обучение нескольких разрешений одновременно — подробнее об этом можно узнать в статье [Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048). ## Перенос стиля -GAN - отличный способ создавать художественные изображения. Еще одна интересная техника называется **перенос стиля**, которая берет одно **контентное изображение** и перерисовывает его в другом стиле, применяя фильтры из **стильного изображения**. +GAN — отличный инструмент для создания художественных изображений. Еще одна интересная техника — это так называемый **перенос стиля**, который берет одно **изображение-контент** и перерисовывает его в другом стиле, используя фильтры из **изображения-стиля**. -Принцип работы таков: -* Мы начинаем с изображения случайного шума (или с контентного изображения, но для понимания проще начать с случайного шума) -* Наша цель - создать такое изображение, которое было бы близко как к контентному изображению, так и к стильному изображению. Это будет определяться двумя функциями потерь: - - **Потеря контента** вычисляется на основе признаков, извлеченных CNN на некоторых слоях из текущего изображения и контентного изображения - - **Потеря стиля** вычисляется между текущим изображением и стильным изображением хитрым образом с использованием матриц Грама (подробности в [примерной записной книжке](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) -* Чтобы сделать изображение более гладким и убрать шум, мы также вводим **потерю вариации**, которая вычисляет среднее расстояние между соседними пикселями -* Основной цикл оптимизации корректирует текущее изображение с помощью градиентного спуска (или другого алгоритма оптимизации), чтобы минимизировать общую потерю, которая является взвешенной суммой всех трех потерь. +Как это работает: +* Мы начинаем с изображения, заполненного случайным шумом (или с изображения-контента, но для понимания проще начать с шума). +* Наша цель — создать такое изображение, которое будет близко как к изображению-контенту, так и к изображению-стилю. Это определяется двумя функциями потерь: + - **Потеря контента** вычисляется на основе признаков, извлеченных CNN на некоторых слоях из текущего изображения и изображения-контента. + - **Потеря стиля** вычисляется между текущим изображением и изображением-стилем с использованием матриц Грама (подробнее в [примере блокнота](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Чтобы сделать изображение более гладким и убрать шум, мы также вводим **потерю вариации**, которая вычисляет среднее расстояние между соседними пикселями. +* Основной цикл оптимизации корректирует текущее изображение с использованием градиентного спуска (или другого алгоритма оптимизации) для минимизации общей функции потерь, которая является взвешенной суммой всех трех потерь. ## ✍️ Пример: [Перенос стиля](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [Посттест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) ## Заключение -На этом уроке вы узнали о GAN и о том, как их обучать. Вы также узнали о специальных проблемах, с которыми может столкнуться этот тип нейронной сети, и о некоторых стратегиях, как их преодолеть. +В этом уроке вы узнали о GAN и о том, как их обучать. Вы также узнали о специфических проблемах, с которыми может столкнуться этот тип нейронных сетей, и о стратегиях их преодоления. -## 🚀 Вызов +## 🚀 Задание -Пройдите через [записную книжку переноса стиля](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb), используя свои собственные изображения. +Пройдите через [блокнот по переносу стиля](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb), используя свои собственные изображения. ## Обзор и самостоятельное изучение -Для справки прочитайте больше о GAN в этих источниках: +Для справки, прочитайте больше о GAN в следующих ресурсах: * Марко Пазини, [10 уроков, которые я усвоил, обучая GAN в течение года](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), *де-факто* архитектура GAN, которую стоит рассмотреть +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN) — архитектура GAN, ставшая *де-факто* стандартом * [Создание генеративного искусства с использованием GAN на Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) ## Задание -Вернитесь к одной из двух записных книжек, связанных с этим уроком, и повторно обучите GAN на своих собственных изображениях. Что вы можете создать? +Перейдите к одному из двух блокнотов, связанных с этим уроком, и переобучите GAN на своих собственных изображениях. Что вы сможете создать? **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md index deb95da5..f258884b 100644 --- a/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,11 +1,148 @@ -### YOLO - Вы смотрите только один раз + +# Обнаружение объектов -YOLO — это алгоритм реального времени с одним проходом. Основная идея заключается в следующем: +Модели классификации изображений, с которыми мы работали до сих пор, принимали изображение и выдавали категориальный результат, например, класс "цифра" в задаче MNIST. Однако во многих случаях нам недостаточно просто знать, что на изображении есть объекты — мы хотим определить их точное местоположение. Именно этим занимается **обнаружение объектов**. -* Изображение делится на $S\times S$ области -* Для каждой области **CNN** предсказывает $n$ возможных объектов, координаты *bounding box* и *confidence*=*вероятность* * IoU. +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Обнаружение объектов](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ru.png) + +> Изображение с [веб-сайта YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Простой подход к обнаружению объектов + +Предположим, мы хотим найти кошку на изображении. Очень простой подход к обнаружению объектов может быть следующим: + +1. Разбить изображение на множество плиток. +2. Запустить классификацию изображений для каждой плитки. +3. Те плитки, которые дают достаточно высокую активацию, можно считать содержащими искомый объект. + +![Простое обнаружение объектов](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ru.png) + +> *Изображение из [учебной тетради](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Однако этот подход далек от идеала, так как он позволяет алгоритму лишь приблизительно определить границы объекта. Для более точного определения местоположения необходимо использовать **регрессию**, чтобы предсказать координаты ограничивающих рамок — а для этого нужны специализированные наборы данных. + +## Регрессия для обнаружения объектов + +[Этот блог](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) предлагает отличное введение в обнаружение форм. + +## Наборы данных для обнаружения объектов + +Для этой задачи вы можете встретить следующие наборы данных: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) — 20 классов. +* [COCO](http://cocodataset.org/#home) — Common Objects in Context. 80 классов, ограничивающие рамки и маски сегментации. + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ru.jpg) + +## Метрики для обнаружения объектов + +### Пересечение над объединением (IoU) + +Если для классификации изображений легко измерить, насколько хорошо работает алгоритм, то для обнаружения объектов нужно оценивать как правильность класса, так и точность предсказания местоположения ограничивающей рамки. Для последнего используется метрика **Пересечение над объединением** (IoU), которая измеряет, насколько хорошо две рамки (или две произвольные области) перекрываются. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ru.png) + +> *Рисунок 2 из [этого отличного блога о IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Идея проста — мы делим площадь пересечения двух фигур на площадь их объединения. Для двух идентичных областей IoU будет равен 1, а для полностью разобщенных областей — 0. В остальных случаях значение будет варьироваться от 0 до 1. Обычно учитываются только те ограничивающие рамки, для которых IoU превышает определенное значение. + +### Средняя точность (Average Precision) + +Предположим, мы хотим измерить, насколько хорошо распознается определенный класс объектов $C$. Для этого используется метрика **Средняя точность**, которая рассчитывается следующим образом: + +1. Рассматривается кривая точности-отзыва, показывающая точность в зависимости от порогового значения обнаружения (от 0 до 1). +2. В зависимости от порога мы получаем больше или меньше объектов, обнаруженных на изображении, и разные значения точности и отзыва. +3. Кривая выглядит следующим образом: + + + +> *Изображение из [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Средняя точность для данного класса $C$ — это площадь под этой кривой. Более точно, ось отзыва обычно делится на 10 частей, и точность усредняется по всем этим точкам: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP и IoU + +Мы рассматриваем только те обнаружения, для которых IoU превышает определенное значение. Например, в наборе данных PASCAL VOC обычно предполагается $\mbox{IoU Threshold} = 0.5$, а в COCO AP измеряется для разных значений $\mbox{IoU Threshold}$. + + + +> *Изображение из [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Средняя средняя точность (mAP) + +Основная метрика для обнаружения объектов называется **Средняя средняя точность** или **mAP**. Это значение средней точности, усредненное по всем классам объектов, а иногда также по $\mbox{IoU Threshold}$. Более подробно процесс расчета **mAP** описан +[в этом блоге](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3), а также [здесь с примерами кода](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Различные подходы к обнаружению объектов + +Существует два основных класса алгоритмов обнаружения объектов: + +* **Сети предложений регионов** (R-CNN, Fast R-CNN, Faster R-CNN). Основная идея заключается в генерации **регионов интереса** (ROI) и запуске CNN по ним, чтобы найти максимальную активацию. Это немного похоже на простой подход, за исключением того, что ROI генерируются более умным способом. Одним из основных недостатков таких методов является их медлительность, так как требуется множество проходов классификатора CNN по изображению. +* **Однопроходные** методы (YOLO, SSD, RetinaNet). В этих архитектурах сеть спроектирована так, чтобы предсказывать как классы, так и ROI за один проход. + +### R-CNN: CNN на основе регионов + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) использует [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) для генерации иерархической структуры регионов ROI, которые затем проходят через CNN для извлечения признаков, SVM-классификаторы для определения класса объекта и линейную регрессию для определения координат *ограничивающей рамки*. [Официальная статья](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ru.png) + +> *Изображение из van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ru.png) + +> *Изображения из [этого блога](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Этот подход похож на R-CNN, но регионы определяются после применения сверточных слоев. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ru.png) + +> Изображение из [официальной статьи](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +Основная идея этого подхода заключается в использовании нейронной сети для предсказания ROI — так называемой *сети предложений регионов* (Region Proposal Network). [Статья](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ru.png) + +> Изображение из [официальной статьи](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Полностью сверточная сеть на основе регионов + +Этот алгоритм еще быстрее, чем Faster R-CNN. Основная идея следующая: + +1. Извлекаем признаки с помощью ResNet-101. +2. Признаки обрабатываются **Position-Sensitive Score Map**. Каждый объект из $C$ классов делится на $k\times k$ регионов, и сеть обучается предсказывать части объектов. +3. Для каждой части из $k\times k$ регионов все сети голосуют за классы объектов, и выбирается класс объекта с максимальным количеством голосов. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ru.png) + +> Изображение из [официальной статьи](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO — это алгоритм реального времени с одним проходом. Основная идея следующая: + + * Изображение делится на $S\times S$ регионы. + * Для каждого региона **CNN** предсказывает $n$ возможных объектов, координаты *ограничивающей рамки* и *уверенность*=*вероятность* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ru.png) -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ru.png) > Изображение из [официальной статьи](https://arxiv.org/abs/1506.02640) ### Другие алгоритмы @@ -13,29 +150,29 @@ YOLO — это алгоритм реального времени с одним * RetinaNet: [официальная статья](https://arxiv.org/abs/1708.02002) - [Реализация на PyTorch в Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - [Реализация на Keras](https://github.com/fizyr/keras-retinanet) - - [Обнаружение объектов с помощью RetinaNet](https://keras.io/examples/vision/retinanet/) в примерах Keras + - [Обнаружение объектов с RetinaNet](https://keras.io/examples/vision/retinanet/) в примерах Keras * SSD (Single Shot Detector): [официальная статья](https://arxiv.org/abs/1512.02325) ## ✍️ Упражнения: Обнаружение объектов -Продолжите обучение в следующем ноутбуке: +Продолжите обучение в следующей тетради: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) ## Заключение -На этом уроке вы сделали стремительный обзор всех различных способов, которыми можно осуществить обнаружение объектов! +В этом уроке вы познакомились с различными способами обнаружения объектов! -## 🚀 Вызов +## 🚀 Задание -Прочитайте эти статьи и ноутбуки о YOLO и попробуйте сами +Прочитайте эти статьи и тетради о YOLO и попробуйте их самостоятельно: -* [Хорошая статья в блоге](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) о YOLO +* [Хороший блог](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) о YOLO * [Официальный сайт](https://pjreddie.com/darknet/yolo/) - * Yolo: [реализация на Keras](https://github.com/experiencor/keras-yolo2), [пошаговый ноутбук](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [реализация на Keras](https://github.com/experiencor/keras-yolo2), [пошаговый ноутбук](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO: [Реализация на Keras](https://github.com/experiencor/keras-yolo2), [пошаговая тетрадь](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Реализация на Keras](https://github.com/experiencor/keras-yolo2), [пошаговая тетрадь](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) ## Обзор и самостоятельное изучение @@ -48,4 +185,4 @@ YOLO — это алгоритм реального времени с одним ## [Задание: Обнаружение объектов](lab/README.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index 658dccc2..7c71d22e 100644 --- a/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Обнаружение голов с использованием набора данных Hollywood Heads + +# Определение голов с использованием набора данных Hollywood Heads -Лабораторная работа из [Курса AI для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторное задание из [курса "Искусственный интеллект для начинающих"](https://github.com/microsoft/ai-for-beginners). ## Задача -Подсчет количества людей на потоке видеонаблюдения — это важная задача, которая позволит нам оценить количество посетителей в магазинах, часы пик в ресторане и т. д. Для решения этой задачи нам нужно уметь обнаруживать человеческие головы под разными углами. Чтобы обучить модель обнаружения объектов для выявления человеческих голов, мы можем использовать [набор данных Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). +Подсчет количества людей на видеопотоке с камер наблюдения — важная задача, которая позволяет оценить количество посетителей в магазинах, часы пик в ресторанах и т.д. Для решения этой задачи необходимо уметь определять человеческие головы с разных ракурсов. Чтобы обучить модель обнаружения объектов для определения человеческих голов, можно использовать [набор данных Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). ## Набор данных -[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) содержит 369,846 аннотированных человеческих голов в 224,740 кадрах фильмов из Голливуда. Он представлен в формате [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), где для каждого изображения также есть XML файл описания, который выглядит следующим образом: +[Набор данных Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) содержит 369,846 аннотированных человеческих голов в 224,740 кадрах из голливудских фильмов. Он предоставляется в формате [PASCAL VOC](https://host.robots.ox.ac.uk/pascal/VOC/), где для каждого изображения также есть XML-файл описания, который выглядит следующим образом: ```xml @@ -48,19 +57,19 @@ ``` -В этом наборе данных есть только один класс объектов `head`, и для каждой головы вы получаете координаты ограничивающего прямоугольника. Вы можете разобрать XML с помощью библиотек Python или использовать [эту библиотеку](https://pypi.org/project/pascal-voc/), чтобы работать непосредственно с форматом PASCAL VOC. +В этом наборе данных есть только один класс объектов — `head`, и для каждой головы указаны координаты ограничивающего прямоугольника. Вы можете анализировать XML с помощью библиотек Python или использовать [эту библиотеку](https://pypi.org/project/pascal-voc/) для работы напрямую с форматом PASCAL VOC. -## Обучение обнаружения объектов +## Обучение модели обнаружения объектов Вы можете обучить модель обнаружения объектов одним из следующих способов: -* Используя [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) и его Python API для программного обучения модели в облаке. Custom Vision не сможет использовать более нескольких сотен изображений для обучения модели, поэтому вам может потребоваться ограничить набор данных. -* Используя пример из [учебника Keras](https://keras.io/examples/vision/retinanet/) для обучения модели RetinaNet. +* Используя [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) и его Python API для программного обучения модели в облаке. Custom Vision не сможет использовать более нескольких сотен изображений для обучения модели, поэтому, возможно, вам придется ограничить набор данных. +* Используя пример из [Keras tutorial](https://keras.io/examples/vision/retinanet/) для обучения модели RetunaNet. * Используя встроенный модуль [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) в torchvision. -## Основные выводы +## Выводы -Обнаружение объектов — это задача, которая часто требуется в промышленности. Хотя существуют некоторые сервисы, которые можно использовать для выполнения обнаружения объектов (такие как [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), важно понимать, как работает обнаружение объектов и уметь обучать собственные модели. +Обнаружение объектов — это задача, которая часто требуется в промышленности. Хотя существуют сервисы, которые можно использовать для выполнения обнаружения объектов (например, [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), важно понимать, как работает обнаружение объектов, и уметь обучать собственные модели. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные истолкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md index cf9c5543..1dab2d7a 100644 --- a/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,38 +1,47 @@ + # Сегментация -Ранее мы изучали обнаружение объектов, которое позволяет нам находить объекты на изображении, предсказывая их *ограничивающие рамки*. Однако для некоторых задач нам нужны не только ограничивающие рамки, но и более точная локализация объектов. Эта задача называется **сегментация**. +Ранее мы изучали обнаружение объектов, которое позволяет находить объекты на изображении, предсказывая их *ограничивающие рамки*. Однако для некоторых задач нам нужны не только рамки, но и более точная локализация объектов. Эта задача называется **сегментацией**. -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -Сегментацию можно рассматривать как **классификацию пикселей**, где для **каждого** пикселя изображения мы должны предсказать его класс (*фон* является одним из классов). Существует два основных алгоритма сегментации: +Сегментацию можно рассматривать как **классификацию пикселей**, где для **каждого** пикселя изображения необходимо предсказать его класс (*фон* является одним из классов). Существует два основных алгоритма сегментации: -* **Семантическая сегментация** лишь указывает класс пикселя и не делает различий между различными объектами одного класса. -* **Сегментация экземпляров** делит классы на различные экземпляры. +* **Семантическая сегментация** определяет только класс пикселя, не различая отдельные объекты одного и того же класса. +* **Сегментация экземпляров** разделяет классы на отдельные экземпляры. -Например, для сегментации экземпляров эти овцы являются разными объектами, но для семантической сегментации все овцы представлены одним классом. +Например, для сегментации экземпляров эти овцы считаются разными объектами, а для семантической сегментации все овцы представлены одним классом. -> Изображение из [этой статьи в блоге](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) +> Изображение из [этой статьи](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) -Существуют различные нейронные архитектуры для сегментации, но все они имеют одинаковую структуру. В некотором смысле, это похоже на автокодировщик, о котором вы узнали ранее, но вместо декомпозиции оригинального изображения наша цель — декомпозировать **маску**. Таким образом, сеть сегментации состоит из следующих частей: +Существуют различные нейронные архитектуры для сегментации, но все они имеют одинаковую структуру. В некотором смысле, она похожа на автокодировщик, о котором вы узнали ранее, но вместо деконструкции исходного изображения наша цель — деконструировать **маску**. Таким образом, сеть сегментации состоит из следующих частей: -* **Кодировщик** извлекает признаки из входного изображения -* **Декодировщик** преобразует эти признаки в **изображение маски**, с тем же размером и количеством каналов, соответствующих количеству классов. +* **Энкодер** извлекает признаки из входного изображения. +* **Декодер** преобразует эти признаки в **маску изображения**, с тем же размером и количеством каналов, соответствующим количеству классов. > Изображение из [этой публикации](https://arxiv.org/pdf/2001.05566.pdf) -Особое внимание следует уделить функции потерь, используемой для сегментации. При использовании классических автокодировщиков нам нужно измерять сходство между двумя изображениями, и мы можем использовать среднеквадратичную ошибку (MSE) для этого. В сегментации каждый пиксель в целевом изображении маски представляет номер класса (one-hot-кодирование по третьему измерению), поэтому нам нужно использовать функции потерь, специфичные для классификации — кросс-энтропийную потерю, усредненную по всем пикселям. Если маска бинарная — используется **бинарная кросс-энтропийная потеря** (BCE). +Особое внимание следует уделить функции потерь, используемой для сегментации. При использовании классических автокодировщиков необходимо измерить сходство между двумя изображениями, и для этого можно использовать среднеквадратичную ошибку (MSE). В сегментации каждый пиксель целевой маски изображения представляет номер класса (закодированный в формате one-hot вдоль третьего измерения), поэтому необходимо использовать функции потерь, специфичные для классификации — перекрестную энтропию, усредненную по всем пикселям. Если маска бинарная, используется **перекрестная энтропия для бинарных данных** (BCE). -> ✅ One-hot кодирование — это способ кодирования метки класса в вектор длиной, равной количеству классов. Ознакомьтесь с [этой статьей](https://datagy.io/sklearn-one-hot-encode/) по этой технике. +> ✅ One-hot кодирование — это способ преобразования метки класса в вектор длиной, равной количеству классов. Ознакомьтесь с [этой статьей](https://datagy.io/sklearn-one-hot-encode/) о данной технике. -## Сегментация для медицинской визуализации +## Сегментация в медицинской визуализации -На этом уроке мы увидим сегментацию в действии, обучая сеть распознавать человеческие невусы (также известные как родинки) на медицинских изображениях. Мы будем использовать Базу данных PH2 дерматоскопических изображений в качестве источника изображений. Этот набор данных содержит 200 изображений трех классов: типичный невус, атипичный невус и меланома. Все изображения также содержат соответствующую **маску**, которая обрисовывает невус. +В этом уроке мы увидим сегментацию в действии, обучая сеть распознавать невусы (также известные как родинки) на медицинских изображениях. Мы будем использовать базу данных PH2 дерматоскопических изображений в качестве источника изображений. Этот набор данных содержит 200 изображений трех классов: типичный невус, атипичный невус и меланома. Все изображения также содержат соответствующую **маску**, которая очерчивает невус. -> ✅ Эта техника особенно подходит для данного типа медицинской визуализации, но какие другие реальные приложения вы могли бы представить? +> ✅ Этот метод особенно подходит для такого типа медицинской визуализации, но какие еще реальные приложения вы могли бы представить? navi @@ -42,28 +51,28 @@ ## ✍️ Упражнения: Семантическая сегментация -Откройте приведенные ниже блокноты, чтобы узнать больше о различных архитектурах семантической сегментации, попрактиковаться в работе с ними и увидеть их в действии. +Откройте ноутбуки ниже, чтобы узнать больше о различных архитектурах семантической сегментации, попрактиковаться с ними и увидеть их в действии. -* [Семантическая сегментация Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) -* [Семантическая сегментация TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) +* [Семантическая сегментация на Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Семантическая сегментация на TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) ## Заключение -Сегментация — это очень мощная техника для классификации изображений, которая выходит за рамки ограничивающих рамок и позволяет классифицировать на уровне пикселей. Это техника, используемая в медицинской визуализации и в других приложениях. +Сегментация — это очень мощная техника классификации изображений, которая выходит за рамки ограничивающих рамок и переходит к классификации на уровне пикселей. Она используется в медицинской визуализации и других приложениях. -## 🚀 Челлендж +## 🚀 Задание -Сегментация тела — это лишь одна из распространенных задач, которые мы можем выполнять с изображениями людей. Другие важные задачи включают **обнаружение скелета** и **обнаружение позы**. Попробуйте библиотеку [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), чтобы увидеть, как можно использовать обнаружение позы. +Сегментация тела — это лишь одна из распространенных задач, которые можно выполнять с изображениями людей. Другие важные задачи включают **обнаружение скелета** и **определение позы**. Попробуйте библиотеку [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), чтобы увидеть, как можно использовать определение позы. ## Обзор и самостоятельное изучение -Эта [статья в Википедии](https://wikipedia.org/wiki/Image_segmentation) предлагает хороший обзор различных приложений этой техники. Узнайте больше самостоятельно о поддоменах сегментации экземпляров и паноптической сегментации в этой области исследования. +Эта [статья в Википедии](https://wikipedia.org/wiki/Image_segmentation) предлагает хороший обзор различных приложений данной техники. Узнайте больше самостоятельно о поддомах сегментации экземпляров и паноптической сегментации в этой области исследований. ## [Задание](lab/README.md) -В этой лабораторной работе попробуйте **сегментацию человеческого тела**, используя [Набор данных Segmentation Full Body MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) с Kaggle. +В этой лабораторной работе попробуйте **сегментацию человеческого тела** с использованием [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) с Kaggle. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 1cc496ae..02428608 100644 --- a/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ + # Сегментация человеческого тела -Лабораторное задание из [Курса ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Задача -В производстве видео, например, в прогнозах погоды, нам часто нужно вырезать изображение человека с камеры и наложить его на другой видеоматериал. Это обычно делается с использованием техник **хромакея**, когда человек снимается на фоне однородного цвета, который затем удаляется. В этой лабораторной работе мы обучим модель нейронной сети для вырезания силуэта человека. +В видеопроизводстве, например, в прогнозах погоды, часто требуется вырезать изображение человека с камеры и наложить его на другое видео. Обычно это делается с помощью техники **хромакей**, когда человек снимается на фоне однотонного цвета, который затем удаляется. В этой лабораторной работе мы обучим нейронную сеть для вырезания силуэта человека. ## Датасет -Мы будем использовать [Датасет сегментации полного тела MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) с Kaggle. Скачайте датасет вручную с Kaggle. +Мы будем использовать [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) с Kaggle. Скачайте датасет вручную с Kaggle. ## Начало работы с ноутбуком -Начните лабораторную работу, открыв [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb). +Начните лабораторную работу, открыв [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) -## Итоги +## Выводы -Сегментация тела — это всего лишь одна из распространенных задач, которые мы можем выполнять с изображениями людей. Другие важные задачи включают **обнаружение скелета** и **обнаружение позы**. Ознакомьтесь с библиотекой [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), чтобы узнать, как можно реализовать эти задачи. +Сегментация тела — это лишь одна из распространенных задач, которые можно выполнять с изображениями людей. Другие важные задачи включают **обнаружение скелета** и **определение позы**. Ознакомьтесь с библиотекой [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), чтобы узнать, как можно реализовать эти задачи. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/README.md b/translations/ru/lessons/4-ComputerVision/README.md index 14e5d172..9c6527e8 100644 --- a/translations/ru/lessons/4-ComputerVision/README.md +++ b/translations/ru/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ -# Компьютерное Зрение + +# Компьютерное зрение -![Сводка содержания по Компьютерному Зрению в виде каракуля](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ru.png) +![Резюме по теме "Компьютерное зрение" в виде рисунка](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ru.png) -В этом разделе мы узнаем о: +В этом разделе мы изучим: -* [Введении в Компьютерное Зрение и OpenCV](06-IntroCV/README.md) -* [Свёрточных Нейронных Сетях](07-ConvNets/README.md) -* [Предобученных Сетях и Передаче Обучения](08-TransferLearning/README.md) -* [Автокодировщиках](09-Autoencoders/README.md) -* [Генеративных Состязательных Сетях](10-GANs/README.md) -* [Обнаружении Объектов](11-ObjectDetection/README.md) -* [Семантической Сегментации](12-Segmentation/README.md) +* [Введение в компьютерное зрение и OpenCV](06-IntroCV/README.md) +* [Сверточные нейронные сети](07-ConvNets/README.md) +* [Предобученные сети и трансферное обучение](08-TransferLearning/README.md) +* [Автоэнкодеры](09-Autoencoders/README.md) +* [Генеративно-состязательные сети](10-GANs/README.md) +* [Обнаружение объектов](11-ObjectDetection/README.md) +* [Семантическая сегментация](12-Segmentation/README.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/13-TextRep/README.md b/translations/ru/lessons/5-NLP/13-TextRep/README.md index 153747c3..92ef8db0 100644 --- a/translations/ru/lessons/5-NLP/13-TextRep/README.md +++ b/translations/ru/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ + # Представление текста в виде тензоров ## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) ## Классификация текста -В первой части этого раздела мы сосредоточимся на задаче **классификации текста**. Мы будем использовать набор данных [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), который содержит новостные статьи, такие как следующая: +В первой части этого раздела мы сосредоточимся на задаче **классификации текста**. Мы будем использовать набор данных [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), который содержит новостные статьи, например: -* Категория: Наука/Технологии -* Заголовок: Компания Кентукки получает грант на изучение пептидов (AP) -* Текст: AP - Компания, основанная исследователем в области химии в Университете Луисвилла, получила грант на разработку... +* Категория: Наука/Технологии +* Заголовок: Компания из Кентукки получила грант на изучение пептидов (AP) +* Текст: AP - Компания, основанная исследователем химии из Университета Луисвилля, получила грант на разработку... -Наша цель будет заключаться в том, чтобы классифицировать новость в одну из категорий на основе текста. +Наша цель — классифицировать новость в одну из категорий на основе текста. ## Представление текста -Если мы хотим решать задачи обработки естественного языка (NLP) с помощью нейронных сетей, нам нужно найти способ представления текста в виде тензоров. Компьютеры уже представляют текстовые символы в виде чисел, которые отображаются на экране с использованием кодировок, таких как ASCII или UTF-8. +Если мы хотим решать задачи обработки естественного языка (NLP) с помощью нейронных сетей, нам нужно каким-то образом представить текст в виде тензоров. Компьютеры уже представляют текстовые символы в виде чисел, которые отображаются на экране с использованием кодировок, таких как ASCII или UTF-8. -Изображение, показывающее диаграмму, сопоставляющую символ с ASCII и двоичным представлением +Изображение, показывающее диаграмму, связывающую символ с его ASCII и двоичным представлением > [Источник изображения](https://www.seobility.net/en/wiki/ASCII) -Как люди, мы понимаем, что каждая буква **представляет**, и как все символы соединяются, чтобы образовать слова предложения. Однако компьютеры сами по себе не обладают таким пониманием, и нейронной сети нужно учиться значению во время обучения. +Как люди, мы понимаем, что **означает** каждая буква, и как все символы объединяются, чтобы сформировать слова в предложении. Однако компьютеры сами по себе такого понимания не имеют, и нейронной сети приходится изучать значение во время обучения. -Таким образом, мы можем использовать различные подходы для представления текста: +Поэтому мы можем использовать разные подходы для представления текста: -* **Представление на уровне символов**, когда мы представляем текст, рассматривая каждый символ как число. Если в нашем текстовом корпусе есть *C* различных символов, слово *Hello* будет представлено тензором размером 5x*C. Каждая буква будет соответствовать столбцу тензора в кодировке one-hot. -* **Представление на уровне слов**, при котором мы создаем **словарь** всех слов в нашем тексте, а затем представляем слова с помощью кодировки one-hot. Этот подход в какой-то мере лучше, потому что каждая буква сама по себе не имеет большого значения, и, используя более высокоуровневые семантические концепции - слова - мы упрощаем задачу для нейронной сети. Однако, учитывая большой размер словаря, нам нужно иметь дело с высокоразмерными разреженными тензорами. +* **Побуквенное представление**, когда мы представляем текст, рассматривая каждый символ как число. Если у нас есть *C* различных символов в корпусе текста, то слово *Hello* будет представлено тензором размером 5x*C*. Каждая буква будет соответствовать столбцу тензора в формате one-hot кодирования. +* **Пословное представление**, при котором мы создаем **словарь** всех слов в тексте и затем представляем слова с использованием one-hot кодирования. Этот подход несколько лучше, так как каждая буква сама по себе не имеет большого значения, и, используя более высокоуровневые семантические концепции — слова, мы упрощаем задачу для нейронной сети. Однако из-за большого размера словаря приходится работать с высокоразмерными разреженными тензорами. -Независимо от представления, сначала нам нужно преобразовать текст в последовательность **токенов**, где один токен может быть символом, словом или иногда даже частью слова. Затем мы преобразуем токен в число, обычно используя **словарь**, и это число может быть подано в нейронную сеть с использованием кодировки one-hot. +Независимо от подхода, сначала нужно преобразовать текст в последовательность **токенов**, где токен — это либо символ, либо слово, либо даже часть слова. Затем токен преобразуется в число, обычно с использованием **словаря**, и это число можно подать в нейронную сеть с использованием one-hot кодирования. ## N-граммы -В естественном языке точное значение слов можно определить только в контексте. Например, значения *нейронной сети* и *рыболовной сети* совершенно разные. Один из способов учесть это - строить нашу модель на парах слов, рассматривая пары слов как отдельные токены словаря. Таким образом, предложение *Мне нравится ходить на рыбалку* будет представлено следующей последовательностью токенов: *Мне нравится*, *нравится ходить*, *ходить на*, *на рыбалку*. Проблема с этим подходом заключается в том, что размер словаря значительно увеличивается, и такие комбинации, как *идти на рыбалку* и *идти за покупками*, представлены различными токенами, которые не имеют семантического сходства, несмотря на один и тот же глагол. +В естественном языке точное значение слов можно определить только в контексте. Например, значения *нейронная сеть* и *рыболовная сеть* совершенно разные. Один из способов учитывать это — строить модель на основе пар слов, рассматривая пары слов как отдельные токены словаря. Таким образом, предложение *Мне нравится ходить на рыбалку* будет представлено следующей последовательностью токенов: *Мне нравится*, *нравится ходить*, *ходить на*, *на рыбалку*. Проблема этого подхода в том, что размер словаря значительно увеличивается, а комбинации вроде *на рыбалку* и *на шопинг* представлены разными токенами, которые не имеют никакого семантического сходства, несмотря на одинаковый глагол. -В некоторых случаях мы также можем рассмотреть использование триграмм - комбинаций из трех слов. Таким образом, этот подход часто называют **n-граммами**. Также имеет смысл использовать n-граммы с представлением на уровне символов, в этом случае n-граммы будут примерно соответствовать различным слогам. +В некоторых случаях можно использовать триграммы — комбинации из трех слов. Поэтому такой подход часто называют **n-граммами**. Также имеет смысл использовать n-граммы с побуквенным представлением, где n-граммы будут примерно соответствовать различным слогам. ## Мешок слов и TF/IDF -При решении задач, таких как классификация текста, нам нужно уметь представлять текст в виде одного вектора фиксированного размера, который мы будем использовать в качестве входа для финального плотного классификатора. Один из самых простых способов сделать это - объединить все индивидуальные представления слов, например, добавив их. Если мы сложим кодировки one-hot каждого слова, мы получим вектор частот, показывающий, сколько раз каждое слово встречается в тексте. Такое представление текста называется **мешок слов** (BoW). +При решении задач, таких как классификация текста, нам нужно уметь представлять текст в виде вектора фиксированного размера, который будет использоваться в качестве входных данных для финального полносвязного классификатора. Один из самых простых способов сделать это — объединить представления отдельных слов, например, сложив их. Если мы сложим one-hot кодирования каждого слова, то получим вектор частот, показывающий, сколько раз каждое слово встречается в тексте. Такое представление текста называется **мешком слов** (BoW). > Изображение автора -BoW в основном представляет, какие слова появляются в тексте и в каких количествах, что действительно может быть хорошим индикатором того, о чем текст. Например, новостная статья о политике, вероятно, будет содержать слова, такие как *президент* и *страна*, в то время как научная публикация будет иметь что-то вроде *коллайдер*, *открыто*, и т.д. Таким образом, частоты слов могут во многих случаях быть хорошим индикатором содержания текста. +BoW по сути показывает, какие слова встречаются в тексте и в каком количестве, что действительно может быть хорошим индикатором содержания текста. Например, новостная статья о политике, скорее всего, будет содержать слова *президент* и *страна*, а научная публикация — что-то вроде *коллайдер*, *открытие* и т.д. Таким образом, частоты слов во многих случаях могут быть хорошим индикатором содержания текста. -Проблема с BoW заключается в том, что определенные общие слова, такие как *и*, *является* и т.д., появляются в большинстве текстов и имеют самые высокие частоты, затмевая слова, которые действительно важны. Мы можем снизить важность этих слов, принимая во внимание частоту, с которой слова встречаются в всей коллекции документов. Это основная идея подхода TF/IDF, который рассматривается более подробно в ноутбуках, приложенных к этому уроку. +Проблема BoW в том, что некоторые распространенные слова, такие как *и*, *это* и т.д., встречаются в большинстве текстов и имеют самые высокие частоты, что маскирует действительно важные слова. Мы можем снизить значимость таких слов, учитывая частоту их появления во всей коллекции документов. Это основная идея подхода TF/IDF, который более подробно рассматривается в ноутбуках, приложенных к этому уроку. -Тем не менее, ни один из этих подходов не может полностью учитывать **семантику** текста. Нам нужны более мощные модели нейронных сетей для этого, о которых мы поговорим позже в этом разделе. +Однако ни один из этих подходов не может полностью учитывать **семантику** текста. Для этого нам нужны более мощные модели нейронных сетей, которые мы обсудим позже в этом разделе. ## ✍️ Упражнения: Представление текста Продолжите обучение в следующих ноутбуках: -* [Представление текста с помощью PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) -* [Представление текста с помощью TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) +* [Представление текста с PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Представление текста с TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) ## Заключение -На данный момент мы изучили техники, которые могут добавлять вес частоты к различным словам. Однако они не способны представлять значение или порядок. Как сказал знаменитый лингвист Дж. Р. Фирт в 1935 году: "Полное значение слова всегда контекстуально, и никакое изучение значения вне контекста не может восприниматься всерьез." Позже в курсе мы научимся захватывать контекстуальную информацию из текста с помощью языкового моделирования. +На данный момент мы изучили техники, которые могут добавлять вес частоты к различным словам. Однако они не способны представлять значение или порядок. Как сказал известный лингвист Дж. Р. Фёрт в 1935 году: "Полное значение слова всегда контекстуально, и никакое изучение значения вне контекста нельзя считать серьезным". Позже в курсе мы узнаем, как извлекать контекстуальную информацию из текста с помощью языкового моделирования. -## 🚀 Задача +## 🚀 Задание -Попробуйте выполнить некоторые другие упражнения, используя мешок слов и различные модели данных. Возможно, вас вдохновит этот [конкурс на Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) +Попробуйте выполнить другие упражнения, используя мешок слов и различные модели данных. Возможно, вас вдохновит [этот конкурс на Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). ## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Обзор и самообучение +## Обзор и самостоятельное изучение -Практикуйте свои навыки с использованием встраиваний текста и техник мешка слов на [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) +Практикуйте свои навыки работы с текстовыми встраиваниями и техниками мешка слов на [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) ## [Задание: Ноутбуки](assignment.md) **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/13-TextRep/assignment.md b/translations/ru/lessons/5-NLP/13-TextRep/assignment.md index 0b9c048c..a9e3a43f 100644 --- a/translations/ru/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/ru/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ + # Задание: Ноутбуки -Используя ноутбуки, связанные с этим уроком (либо версию PyTorch, либо версию TensorFlow), перезапустите их, используя свой собственный набор данных, возможно, один из Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть свои собственные выводы. Попробуйте некоторые инновационные наборы данных, которые могут оказаться неожиданными, например, [этот о наблюдениях НЛО](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) от NUFORC. +Используя ноутбуки, связанные с этим уроком (либо версию на PyTorch, либо на TensorFlow), запустите их заново, применяя ваш собственный набор данных, возможно, взятый с Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть ваши собственные выводы. Попробуйте использовать необычные наборы данных, которые могут оказаться неожиданными, например, [этот о наблюдениях НЛО](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) от NUFORC. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/14-Embeddings/README.md b/translations/ru/lessons/5-NLP/14-Embeddings/README.md index 4cb7c12c..7545d971 100644 --- a/translations/ru/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/ru/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ + # Встраивания -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -При обучении классификаторов на основе BoW или TF/IDF мы работали с векторами мешка слов высокой размерности длиной `vocab_size` и явно преобразовывали векторы низкой размерности позиционного представления в разреженное однократное представление. Однако такое однократное представление неэффективно с точки зрения памяти. Кроме того, каждое слово рассматривается независимо друг от друга, т.е. векторы с однократным кодированием не выражают никакой семантической схожести между словами. +При обучении классификаторов на основе BoW или TF/IDF мы работали с высокоразмерными векторами мешка слов длиной `vocab_size` и явно преобразовывали низкоразмерные позиционные векторы представления в разреженное одноразрядное представление. Однако такое одноразрядное представление неэффективно с точки зрения памяти. Кроме того, каждое слово рассматривается независимо от других, то есть одноразрядные векторы не выражают никакого семантического сходства между словами. -Идея **встраивания** заключается в том, чтобы представлять слова с помощью векторов низкой размерности, которые каким-то образом отражают семантическое значение слова. Позже мы обсудим, как создавать значимые встраивания слов, но пока давайте просто подумаем о встраиваниях как о способе уменьшения размерности вектора слова. +Идея **встраивания** заключается в том, чтобы представлять слова в виде низкоразмерных плотных векторов, которые каким-то образом отражают семантическое значение слова. Позже мы обсудим, как создавать значимые встраивания слов, но пока давайте просто думать о встраиваниях как о способе уменьшения размерности вектора слова. -Таким образом, слой встраивания будет принимать слово на вход и производить выходной вектор заданной `embedding_size`. В некотором смысле он очень похож на слой `Linear`, но вместо того, чтобы принимать вектор с однократным кодированием, он сможет принимать номер слова на вход, что позволит избежать создания больших векторов с однократным кодированием. +Таким образом, слой встраивания будет принимать слово в качестве входных данных и выдавать выходной вектор заданного размера `embedding_size`. В некотором смысле, он очень похож на слой `Linear`, но вместо того, чтобы принимать одноразрядный вектор, он сможет принимать номер слова в качестве входных данных, позволяя нам избежать создания больших одноразрядных векторов. -Используя слой встраивания в качестве первого слоя в нашей сети классификаторов, мы можем перейти от модели мешка слов к модели **встраиваемого мешка**, где мы сначала преобразуем каждое слово в нашем тексте в соответствующее встраивание, а затем вычисляем какую-то агрегатную функцию по всем этим встраиваниям, такую как `sum`, `average` или `max`. +Используя слой встраивания в качестве первого слоя в нашей сети классификатора, мы можем перейти от мешка слов к модели **мешка встраиваний**, где мы сначала преобразуем каждое слово в нашем тексте в соответствующее встраивание, а затем вычисляем некоторую агрегатную функцию для всех этих встраиваний, такую как `sum`, `average` или `max`. -![Изображение, показывающее классификатор встраиваний для пяти последовательных слов.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ru.png) +![Изображение, показывающее классификатор с использованием встраиваний для пяти последовательных слов.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ru.png) > Изображение автора ## ✍️ Упражнения: Встраивания -Продолжите свое обучение в следующих блокнотах: +Продолжите обучение в следующих ноутбуках: * [Встраивания с PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [Встраивания TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +* [Встраивания с TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) ## Семантические встраивания: Word2Vec -Хотя слой встраивания обучился отображать слова в векторное представление, это представление не обязательно имело много семантического значения. Было бы хорошо научиться векторному представлению, при котором похожие слова или синонимы соответствуют векторам, которые близки друг к другу по некоторой векторной дистанции (например, евклидова дистанция). +Хотя слой встраивания научился отображать слова в векторное представление, это представление не обязательно имело большое семантическое значение. Было бы хорошо научиться создавать векторное представление, при котором похожие слова или синонимы соответствуют вектору, близкому друг к другу с точки зрения некоторого расстояния между векторами (например, евклидового расстояния). -Для этого нам нужно предварительно обучить нашу модель встраивания на большом объеме текста определенным образом. Один из способов обучения семантических встраиваний называется [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Он основан на двух основных архитектурах, которые используются для создания распределенного представления слов: +Для этого нам нужно предварительно обучить нашу модель встраивания на большом наборе текстов определенным образом. Один из способов обучения семантических встраиваний называется [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Он основан на двух основных архитектурах, которые используются для создания распределенного представления слов: - - **Непрерывный мешок слов** (CBoW) — в этой архитектуре мы обучаем модель предсказывать слово по окружающему контексту. Учитывая ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, целью модели является предсказание $W_0$ по $(W_{-2},W_{-1},W_1,W_2)$. - - **Непрерывный скип-грамм** противоположен CBoW. Модель использует окружающее окно контекстных слов для предсказания текущего слова. + - **Непрерывный мешок слов** (CBoW) — в этой архитектуре мы обучаем модель предсказывать слово по окружающему контексту. Учитывая n-грамму $(W_{-2},W_{-1},W_0,W_1,W_2)$, цель модели — предсказать $W_0$ по $(W_{-2},W_{-1},W_1,W_2)$. + - **Непрерывный пропуск-грамм** — противоположность CBoW. Модель использует окружающее окно контекстных слов для предсказания текущего слова. -CBoW быстрее, в то время как скип-грамм медленнее, но лучше справляется с представлением редких слов. +CBoW работает быстрее, а пропуск-грамм медленнее, но лучше справляется с представлением редких слов. -![Изображение, показывающее как CBoW, так и алгоритмы Skip-Gram для преобразования слов в векторы.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png) +![Изображение, показывающее алгоритмы CBoW и Skip-Gram для преобразования слов в векторы.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png) > Изображение из [этой статьи](https://arxiv.org/pdf/1301.3781.pdf) -Предварительно обученные встраивания Word2Vec (а также другие подобные модели, такие как GloVe) также могут быть использованы вместо слоя встраивания в нейронных сетях. Однако нам нужно работать со словарями, потому что словарь, используемый для предварительного обучения Word2Vec/GloVe, вероятно, будет отличаться от словаря в нашем текстовом корпусе. Ознакомьтесь с вышеупомянутыми блокнотами, чтобы увидеть, как можно решить эту проблему. +Предварительно обученные встраивания Word2Vec (а также другие похожие модели, такие как GloVe) могут быть использованы вместо слоя встраивания в нейронных сетях. Однако нам нужно учитывать словари, так как словарь, использованный для предварительного обучения Word2Vec/GloVe, скорее всего, будет отличаться от словаря в нашем текстовом корпусе. Ознакомьтесь с вышеупомянутыми ноутбуками, чтобы узнать, как можно решить эту проблему. -## Контекстные встраивания +## Контекстуальные встраивания -Одним из ключевых ограничений традиционных предварительно обученных представлений встраиваний, таких как Word2Vec, является проблема разрешения многозначности слов. Хотя предварительно обученные встраивания могут захватывать некоторые значения слов в контексте, каждое возможное значение слова закодировано в одном и том же встраивании. Это может вызвать проблемы в последующих моделях, так как многие слова, такие как слово 'play', имеют разные значения в зависимости от контекста, в котором они используются. +Одним из ключевых ограничений традиционных предварительно обученных представлений встраиваний, таких как Word2Vec, является проблема неоднозначности значений слов. Хотя предварительно обученные встраивания могут захватывать часть значения слов в контексте, каждое возможное значение слова кодируется в одном и том же встраивании. Это может вызывать проблемы в последующих моделях, так как многие слова, такие как слово "play", имеют разные значения в зависимости от контекста, в котором они используются. -Например, слово 'play' в этих двух разных предложениях имеет довольно разные значения: +Например, слово "play" в этих двух предложениях имеет совершенно разные значения: - Я пошел на **пьесу** в театр. -- Джон хочет **играть** с друзьями. +- Джон хочет **играть** со своими друзьями. -Предварительно обученные встраивания выше представляют оба этих значения слова 'play' в одном и том же встраивании. Чтобы преодолеть это ограничение, нам нужно создать встраивания на основе **языковой модели**, которая обучена на большом корпусе текста и *знает*, как слова могут сочетаться в разных контекстах. Обсуждение контекстных встраиваний выходит за рамки этого учебного пособия, но мы вернемся к ним, когда будем говорить о языковых моделях позже в курсе. +Предварительно обученные встраивания выше представляют оба этих значения слова "play" в одном и том же встраивании. Чтобы преодолеть это ограничение, нам нужно создавать встраивания на основе **языковой модели**, которая обучена на большом корпусе текста и *знает*, как слова могут сочетаться в разных контекстах. Обсуждение контекстуальных встраиваний выходит за рамки этого урока, но мы вернемся к ним, когда будем говорить о языковых моделях позже в курсе. ## Заключение -На этом уроке вы узнали, как создавать и использовать слои встраивания в TensorFlow и PyTorch, чтобы лучше отражать семантические значения слов. +В этом уроке вы узнали, как создавать и использовать слои встраивания в TensorFlow и Pytorch для более точного отражения семантического значения слов. -## 🚀 Задача +## 🚀 Задание -Word2Vec использовался для некоторых интересных приложений, включая генерацию текстов песен и поэзии. Ознакомьтесь с [этой статьей](https://www.politetype.com/blog/word2vec-color-poems), в которой рассказывается, как автор использовал Word2Vec для генерации поэзии. Также посмотрите [это видео от Дэна Шиффмана](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain), чтобы узнать другое объяснение этой техники. Затем попробуйте применить эти техники к своему собственному текстовому корпусу, возможно, взятому из Kaggle. +Word2Vec использовался для некоторых интересных приложений, включая создание текстов песен и поэзии. Ознакомьтесь с [этой статьей](https://www.politetype.com/blog/word2vec-color-poems), в которой описывается, как автор использовал Word2Vec для создания поэзии. Посмотрите [это видео Дэна Шиффмана](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain), чтобы узнать другое объяснение этой техники. Затем попробуйте применить эти техники к вашему собственному текстовому корпусу, возможно, взятому с Kaggle. -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) ## Обзор и самостоятельное изучение -Прочитайте эту статью о Word2Vec: [Эффективная оценка представлений слов в векторном пространстве](https://arxiv.org/pdf/1301.3781.pdf) +Прочитайте эту статью о Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) -## [Задание: Блокноты](assignment.md) +## [Задание: Ноутбуки](assignment.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md index acd62b5a..f5c61f5d 100644 --- a/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ + # Задание: Ноутбуки -Используя ноутбуки, связанные с этим уроком (либо версию PyTorch, либо версию TensorFlow), запустите их заново, используя свой собственный набор данных, возможно, один из Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть свои собственные выводы. Попробуйте другой тип набора данных и задокументируйте свои находки, используя текст, такой как [эти тексты песен Битлз](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). +Используя ноутбуки, связанные с этим уроком (либо версию на PyTorch, либо на TensorFlow), запустите их заново, применяя ваш собственный набор данных, возможно, взятый с Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть ваши собственные выводы. Попробуйте другой тип набора данных и задокументируйте свои наблюдения, используя текст, например, [этих текстов песен Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md index c2e4c154..b147b131 100644 --- a/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ + # Моделирование языка -Семантические встраивания, такие как Word2Vec и GloVe, на самом деле являются первым шагом к **моделированию языка** — созданию моделей, которые каким-то образом *понимают* (или *представляют*) природу языка. +Семантические векторы, такие как Word2Vec и GloVe, на самом деле являются первым шагом к **моделированию языка** — созданию моделей, которые каким-то образом *понимают* (или *представляют*) природу языка. -## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -Основная идея моделирования языка заключается в обучении на неразмеченных наборах данных в неконтролируемом режиме. Это важно, потому что у нас есть огромные объемы неразмеченного текста, в то время как количество размеченного текста всегда будет ограничено тем количеством усилий, которое мы можем потратить на разметку. Чаще всего мы можем строить языковые модели, которые могут **предсказывать пропущенные слова** в тексте, поскольку легко замаскировать случайное слово в тексте и использовать его в качестве обучающего примера. +Основная идея моделирования языка заключается в обучении моделей на неразмеченных данных в режиме без учителя. Это важно, потому что у нас есть огромные объемы неразмеченного текста, в то время как количество размеченного текста всегда будет ограничено усилиями, которые мы можем потратить на разметку. Чаще всего мы можем создавать языковые модели, которые могут **предсказывать пропущенные слова** в тексте, так как легко замаскировать случайное слово в тексте и использовать его в качестве обучающего примера. -## Обучение встраиваний +## Обучение векторов -В наших предыдущих примерах мы использовали заранее обученные семантические встраивания, но интересно посмотреть, как эти встраивания могут быть обучены. Существует несколько возможных идей, которые можно использовать: +В предыдущих примерах мы использовали заранее обученные семантические векторы, но интересно посмотреть, как эти векторы могут быть обучены. Существует несколько возможных подходов: -* **N-граммное** моделирование языка, когда мы предсказываем токен, смотря на N предыдущих токенов (N-грамма) -* **Непрерывный мешок слов** (CBoW), когда мы предсказываем средний токен $W_0$ в последовательности токенов $W_{-N}$, ..., $W_N$. -* **Скип-грамм**, где мы предсказываем набор соседних токенов {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} из среднего токена $W_0$. +* **N-граммное** моделирование языка, когда мы предсказываем токен, основываясь на N предыдущих токенах (N-граммы). +* **Непрерывный мешок слов** (CBoW), когда мы предсказываем центральный токен $W_0$ в последовательности токенов $W_{-N}$, ..., $W_N$. +* **Skip-gram**, где мы предсказываем набор соседних токенов {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} на основе центрального токена $W_0$. ![изображение из статьи о преобразовании слов в векторы](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png) > Изображение из [этой статьи](https://arxiv.org/pdf/1301.3781.pdf) -## ✍️ Примеры ноутбуков: Обучение модели CBoW +## ✍️ Примерные ноутбуки: Обучение модели CBoW -Продолжайте свое обучение в следующих ноутбуках: +Продолжите обучение с помощью следующих ноутбуков: -* [Обучение CBoW Word2Vec с TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) -* [Обучение CBoW Word2Vec с PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) +* [Обучение CBoW Word2Vec с использованием TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Обучение CBoW Word2Vec с использованием PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) ## Заключение -На предыдущем уроке мы увидели, что встраивания слов работают как магия! Теперь мы знаем, что обучение встраиваний слов — это не очень сложная задача, и мы должны быть в состоянии обучить свои собственные встраивания слов для текстов специфичных для домена, если это необходимо. +В предыдущем уроке мы увидели, что векторы слов работают как магия! Теперь мы знаем, что обучение векторов слов — это не очень сложная задача, и мы можем обучить свои собственные векторы слов для текстов в специфической предметной области, если это потребуется. -## [Пост-лекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## Обзор и самообучение +## Обзор и самостоятельное изучение * [Официальный учебник PyTorch по моделированию языка](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). * [Официальный учебник TensorFlow по обучению модели Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). -* Использование фреймворка **gensim** для обучения наиболее распространенных встраиваний за несколько строк кода описано [в этой документации](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* Использование фреймворка **gensim** для обучения наиболее популярных векторов всего за несколько строк кода описано [в этой документации](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -## 🚀 [Задание: Обучение модели Skip-Gram](lab/README.md) +## 🚀 [Задание: Обучите модель Skip-Gram](lab/README.md) -В лаборатории мы бросаем вам вызов модифицировать код из этого урока, чтобы обучить модель skip-gram вместо CBoW. [Читать детали](lab/README.md) +В лабораторной работе мы предлагаем вам изменить код из этого урока, чтобы обучить модель Skip-Gram вместо CBoW. [Прочитайте подробности](lab/README.md). **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md index 31438380..83c4bd38 100644 --- a/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ + # Обучение модели Skip-Gram -Лабораторная работа из [Курса ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). -## Задача +## Задание -В этой лабораторной работе мы предлагаем вам обучить модель Word2Vec, используя технику Skip-Gram. Обучите сеть с встраиванием для предсказания соседних слов в окне Skip-Gram шириной $N$ токенов. Вы можете использовать [код из этого урока](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) и немного изменить его. +В этой лабораторной работе вам предлагается обучить модель Word2Vec, используя технику Skip-Gram. Обучите сеть с встраиванием (embedding), чтобы она предсказывала соседние слова в окне Skip-Gram шириной $N$ токенов. Вы можете использовать [код из этого урока](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) и немного его модифицировать. -## Набор данных +## Датасет -Вы можете использовать любую книгу. Множество бесплатных текстов можно найти на [Project Gutenberg](https://www.gutenberg.org/), например, вот прямая ссылка на [Приключения Алисы в Стране Чудес](https://www.gutenberg.org/files/11/11-0.txt) Льюиса Кэрролла. Или вы можете использовать пьесы Шекспира, которые можно получить с помощью следующего кода: +Вы можете использовать любую книгу. Множество бесплатных текстов можно найти на [Project Gutenberg](https://www.gutenberg.org/), например, вот прямая ссылка на [«Приключения Алисы в Стране чудес»](https://www.gutenberg.org/files/11/11-0.txt) Льюиса Кэрролла. Или вы можете использовать пьесы Шекспира, которые можно получить с помощью следующего кода: ```python path_to_file = tf.keras.utils.get_file( @@ -19,11 +28,11 @@ text = open(path_to_file, 'rb').read().decode(encoding='utf-8') ## Исследуйте! -Если у вас есть время и вы хотите углубиться в тему, попробуйте исследовать несколько аспектов: +Если у вас есть время и желание углубиться в тему, попробуйте исследовать несколько вопросов: -* Как размер встраивания влияет на результаты? -* Как различные стили текста влияют на результат? -* Возьмите несколько очень разных типов слов и их синонимы, получите их векторные представления, примените PCA для уменьшения размерности до 2 и изобразите их в 2D пространстве. Видите ли вы какие-либо закономерности? +* Как размер встраивания (embedding size) влияет на результаты? +* Как разные стили текста влияют на результат? +* Возьмите несколько очень разных типов слов и их синонимов, получите их векторные представления, примените PCA для уменьшения размерности до 2 и изобразите их в 2D-пространстве. Видите ли вы какие-либо закономерности? **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/16-RNN/README.md b/translations/ru/lessons/5-NLP/16-RNN/README.md index c220beae..8f4cab35 100644 --- a/translations/ru/lessons/5-NLP/16-RNN/README.md +++ b/translations/ru/lessons/5-NLP/16-RNN/README.md @@ -1,86 +1,96 @@ -# Рекуррентные Нейронные Сети + +# Рекуррентные нейронные сети ## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -В предыдущих разделах мы использовали богатые семантические представления текста и простой линейный классификатор на основе встраиваний. Эта архитектура захватывает агрегированное значение слов в предложении, но не учитывает **порядок** слов, так как операция агрегации на встраиваниях удаляет эту информацию из исходного текста. Поскольку эти модели не способны моделировать порядок слов, они не могут решать более сложные или неоднозначные задачи, такие как генерация текста или ответ на вопросы. +В предыдущих разделах мы использовали богатые семантические представления текста и простой линейный классификатор поверх эмбеддингов. Такая архитектура позволяет захватывать агрегированное значение слов в предложении, но не учитывает **порядок** слов, так как операция агрегации поверх эмбеддингов удаляет эту информацию из исходного текста. Поскольку такие модели не могут моделировать порядок слов, они не способны решать более сложные или неоднозначные задачи, такие как генерация текста или ответы на вопросы. -Чтобы захватить значение последовательности текста, нам нужно использовать другую архитектуру нейронной сети, которая называется **рекуррентной нейронной сетью**, или RNN. В RNN мы пропускаем наше предложение через сеть по одному символу за раз, и сеть производит некое **состояние**, которое мы затем снова передаем в сеть с следующим символом. +Чтобы захватить смысл последовательности текста, необходимо использовать другую архитектуру нейронной сети, которая называется **рекуррентной нейронной сетью** или RNN. В RNN мы пропускаем предложение через сеть по одному символу за раз, и сеть производит некоторое **состояние**, которое затем передается обратно в сеть вместе со следующим символом. ![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ru.png) -> Изображение предоставлено автором +> Изображение автора -Учитывая входную последовательность токенов X0,...,Xn, RNN создает последовательность блоков нейронной сети и обучает эту последовательность от начала до конца с использованием обратного распространения ошибки. Каждый блок сети принимает пару (Xi,Si) в качестве входных данных и производит Si+1 в качестве результата. Конечное состояние Sn или (выход Yn) идет в линейный классификатор для получения результата. Все блоки сети имеют одинаковые веса и обучаются от начала до конца с использованием одного прохода обратного распространения. +Учитывая входную последовательность токенов X0,...,Xn, RNN создает последовательность блоков нейронной сети и обучает эту последовательность от начала до конца с использованием обратного распространения ошибки. Каждый блок сети принимает пару (Xi,Si) в качестве входных данных и производит Si+1 в качестве результата. Финальное состояние Sn или (выход Yn) передается в линейный классификатор для получения результата. Все блоки сети имеют одинаковые веса и обучаются от начала до конца с использованием одного прохода обратного распространения. -Поскольку векторы состояния S0,...,Sn передаются через сеть, она способна изучать последовательные зависимости между словами. Например, когда слово *not* появляется где-то в последовательности, оно может научиться отрицать определенные элементы внутри вектора состояния, что приводит к отрицанию. +Поскольку векторы состояния S0,...,Sn передаются через сеть, она способна изучать последовательные зависимости между словами. Например, когда слово *не* появляется где-то в последовательности, сеть может научиться отрицать определенные элементы внутри вектора состояния, что приводит к отрицанию. -> ✅ Поскольку веса всех блоков RNN на изображении выше общие, то же изображение может быть представлено как один блок (справа) с рекуррентной обратной связью, которая передает выходное состояние сети обратно на вход. +> ✅ Поскольку веса всех блоков RNN на изображении выше одинаковы, то же самое изображение можно представить как один блок (справа) с рекуррентной обратной связью, которая передает выходное состояние сети обратно на вход. ## Анатомия ячейки RNN -Давайте посмотрим, как организована простая ячейка RNN. Она принимает предыдущее состояние Si-1 и текущий символ Xi в качестве входных данных и должна производить выходное состояние Si (и, иногда, нас также интересует какой-то другой выход Yi, как в случае с генеративными сетями). +Давайте рассмотрим, как организована простая ячейка RNN. Она принимает предыдущее состояние Si-1 и текущий символ Xi в качестве входных данных и должна производить выходное состояние Si (а иногда нас также интересует другой выход Yi, как в случае с генеративными сетями). -Простая ячейка RNN имеет две матрицы весов внутри: одна преобразует входной символ (назовем ее W), а другая преобразует входное состояние (H). В этом случае выход сети рассчитывается как σ(W×Xi+H×Si-1+b), где σ — это функция активации, а b — дополнительный смещение. +Простая ячейка RNN имеет две матрицы весов внутри: одна преобразует входной символ (назовем ее W), а другая преобразует входное состояние (H). В этом случае выход сети вычисляется как σ(W×Xi+H×Si-1+b), где σ — это функция активации, а b — дополнительное смещение. Анатомия ячейки RNN -> Изображение предоставлено автором +> Изображение автора -Во многих случаях входные токены проходят через слой встраивания перед тем, как попасть в RNN, чтобы снизить размерность. В этом случае, если размерность входных векторов составляет *emb_size*, а вектора состояния — *hid_size*, то размер W составляет *emb_size*×*hid_size*, а размер H — *hid_size*×*hid_size*. +Во многих случаях входные токены пропускаются через слой эмбеддинга перед входом в RNN для уменьшения размерности. В этом случае, если размерность входных векторов равна *emb_size*, а вектор состояния — *hid_size*, то размер W равен *emb_size*×*hid_size*, а размер H — *hid_size*×*hid_size*. -## Долгая Краткосрочная Память (LSTM) +## Долгая краткосрочная память (LSTM) -Одной из основных проблем классических RNN является так называемая проблема **исчезающих градиентов**. Поскольку RNN обучаются от начала до конца за один проход обратного распространения, им трудно распространять ошибку на первые слои сети, и, следовательно, сеть не может изучать отношения между удаленными токенами. Один из способов избежать этой проблемы — ввести **явное управление состоянием** с помощью так называемых **ворот**. Существует две хорошо известные архитектуры такого рода: **Долгая Краткосрочная Память** (LSTM) и **Gated Relay Unit** (GRU). +Одна из главных проблем классических RNN — это проблема **затухающих градиентов**. Поскольку RNN обучаются от начала до конца в одном проходе обратного распространения, им сложно передавать ошибку к первым слоям сети, и, следовательно, сеть не может изучать отношения между удаленными токенами. Один из способов избежать этой проблемы — ввести **явное управление состоянием** с помощью так называемых **врат**. Существуют две известные архитектуры такого типа: **долгая краткосрочная память** (LSTM) и **гейтированная рекуррентная единица** (GRU). -![Изображение, показывающее пример ячейки долгой краткосрочной памяти](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Пример ячейки долгой краткосрочной памяти](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) > Источник изображения TBD -Сеть LSTM организована аналогично RNN, но существует два состояния, которые передаются от слоя к слою: текущее состояние C и скрытый вектор H. На каждом узле скрытый вектор Hi конкатенируется с входом Xi, и они контролируют, что происходит с состоянием C через **ворота**. Каждые ворота представляют собой нейронную сеть с сигмоидной активацией (выход в диапазоне [0,1]), которые можно рассматривать как побитовую маску при умножении на вектор состояния. Существуют следующие ворота (слева направо на изображении выше): +Сеть LSTM организована аналогично RNN, но есть два состояния, которые передаются от слоя к слою: фактическое состояние C и скрытый вектор H. В каждой единице скрытый вектор Hi объединяется с входом Xi, и они управляют тем, что происходит с состоянием C через **врата**. Каждые врата — это нейронная сеть с сигмоидной активацией (выход в диапазоне [0,1]), которую можно рассматривать как побитовую маску при умножении на вектор состояния. Существуют следующие врата (слева направо на изображении выше): -* **Ворота забвения** принимают скрытый вектор и определяют, какие компоненты вектора C нужно забыть, а какие пропустить. -* **Ворота ввода** берут некоторую информацию из входных и скрытых векторов и вставляют ее в состояние. -* **Ворота вывода** преобразуют состояние через линейный слой с активацией *tanh*, затем выбирают некоторые из его компонентов, используя скрытый вектор Hi, чтобы произвести новое состояние Ci+1. +* **Врата забывания** принимают скрытый вектор и определяют, какие компоненты вектора C нужно забыть, а какие пропустить. +* **Входные врата** берут некоторую информацию из входного и скрытого векторов и вставляют ее в состояние. +* **Выходные врата** преобразуют состояние через линейный слой с активацией *tanh*, затем выбирают некоторые из его компонентов с помощью скрытого вектора Hi, чтобы произвести новое состояние Ci+1. -Компоненты состояния C можно рассматривать как некоторые флаги, которые могут быть включены и выключены. Например, когда мы встречаем имя *Alice* в последовательности, мы можем предположить, что оно относится к женскому персонажу, и поднять флаг в состоянии о том, что у нас есть женский существительное в предложении. Когда мы далее встречаем фразу *and Tom*, мы поднимем флаг о том, что у нас есть множественное число. Таким образом, манипулируя состоянием, мы можем предположительно отслеживать грамматические свойства частей предложения. +Компоненты состояния C можно рассматривать как флаги, которые можно включать и выключать. Например, когда мы встречаем имя *Алиса* в последовательности, мы можем предположить, что оно относится к женскому персонажу, и установить флаг в состоянии, что в предложении есть женский существительный. Когда мы далее встречаем фразу *и Том*, мы установим флаг, что у нас есть множественное число существительных. Таким образом, манипулируя состоянием, мы можем предположительно отслеживать грамматические свойства частей предложения. -> ✅ Отличный ресурс для понимания внутреннего устройства LSTM — это замечательная статья [Понимание LSTM-сетей](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Кристофера Олаха. +> ✅ Отличным ресурсом для понимания внутренней работы LSTM является статья [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Кристофера Олаха. -## Двунаправленные и Многослойные RNN +## Двунаправленные и многослойные RNN -Мы обсуждали рекуррентные сети, которые работают в одном направлении, от начала последовательности до конца. Это выглядит естественно, поскольку напоминает способ, которым мы читаем и слушаем речь. Однако, поскольку во многих практических случаях у нас есть произвольный доступ к входной последовательности, имеет смысл выполнять рекуррентные вычисления в обоих направлениях. Такие сети называются **двунаправленными** RNN. При работе с двунаправленной сетью нам понадобятся два скрытых вектора состояния, по одному для каждого направления. +Мы обсудили рекуррентные сети, которые работают в одном направлении — от начала последовательности к концу. Это выглядит естественно, так как напоминает способ, которым мы читаем и слушаем речь. Однако, поскольку во многих практических случаях у нас есть случайный доступ к входной последовательности, имеет смысл выполнять рекуррентные вычисления в обоих направлениях. Такие сети называются **двунаправленными** RNN. При работе с двунаправленной сетью нам понадобятся два скрытых вектора состояния, по одному для каждого направления. -Рекуррентная сеть, будь то однонаправленная или двунаправленная, захватывает определенные шаблоны внутри последовательности и может хранить их в векторе состояния или передавать в выход. Как и в случае с свёрточными сетями, мы можем построить другой рекуррентный слой поверх первого, чтобы захватить более высокоуровневые шаблоны и строить их на основе низкоуровневых шаблонов, извлеченных первым слоем. Это приводит нас к понятию **многослойной RNN**, которая состоит из двух или более рекуррентных сетей, где выход предыдущего слоя передается в следующий слой в качестве входа. +Рекуррентная сеть, будь то однонаправленная или двунаправленная, захватывает определенные шаблоны внутри последовательности и может сохранять их в векторе состояния или передавать в выход. Как и в случае с сверточными сетями, мы можем построить еще один рекуррентный слой поверх первого, чтобы захватывать шаблоны более высокого уровня и строить из шаблонов низкого уровня, извлеченных первым слоем. Это приводит нас к понятию **многослойной RNN**, которая состоит из двух или более рекуррентных сетей, где выход предыдущего слоя передается следующему слою в качестве входа. -![Изображение, показывающее многослойную долгую краткосрочную память RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ru.jpg) +![Изображение многослойной LSTM RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ru.jpg) -*Изображение из [этого замечательного поста](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) Фернандо Лопеса* +*Изображение из [этой замечательной статьи](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) Фернандо Лопеса* -## ✍️ Упражнения: Встраивания +## ✍️ Упражнения: Эмбеддинги -Продолжайте обучение в следующих блокнотах: +Продолжите обучение в следующих ноутбуках: -* [RNN с PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) -* [RNN с TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) +* [RNNs с PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs с TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) ## Заключение -В этом модуле мы увидели, что RNN могут использоваться для классификации последовательностей, но на самом деле они могут справляться со многими другими задачами, такими как генерация текста, машинный перевод и многое другое. Мы рассмотрим эти задачи в следующем модуле. +В этом разделе мы увидели, что RNN могут использоваться для классификации последовательностей, но на самом деле они могут решать гораздо больше задач, таких как генерация текста, машинный перевод и многое другое. Мы рассмотрим эти задачи в следующем разделе. -## 🚀 Вызов +## 🚀 Задание -Прочитайте несколько материалов о LSTM и рассмотрите их применение: +Прочитайте литературу о LSTM и подумайте об их применении: -- [Сетка Долгой Краткосрочной Памяти](https://arxiv.org/pdf/1507.01526v1.pdf) -- [Показать, Обратить Внимание и Сказать: Генерация Подписей к Изображениям с Нейронным Вниманием](https://arxiv.org/pdf/1502.03044v2.pdf) +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) ## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -- [Понимание LSTM-сетей](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Кристофера Олаха. +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Кристофера Олаха. -## [Задание: Блокноты](assignment.md) +## [Задание: Ноутбуки](assignment.md) **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/16-RNN/assignment.md b/translations/ru/lessons/5-NLP/16-RNN/assignment.md index 98beafd7..b14e83d3 100644 --- a/translations/ru/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/ru/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ -# Задание: Блокноты + +# Задание: Ноутбуки -Используя блокноты, связанные с этим уроком (либо версию PyTorch, либо версию TensorFlow), запустите их заново, используя свой собственный набор данных, возможно, один из Kaggle, с указанием авторства. Перепишите блокнот, чтобы подчеркнуть свои собственные выводы. Попробуйте другой тип набора данных и задокументируйте свои находки, используя текст, такой как [этот набор данных Kaggle о твитах о погоде](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). +Используя ноутбуки, связанные с этим уроком (либо версию на PyTorch, либо на TensorFlow), запустите их заново, применяя ваш собственный набор данных, возможно, взятый с Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть ваши собственные выводы. Попробуйте использовать другой тип набора данных и задокументируйте свои наблюдения, например, используя текст вроде [этого набора данных из соревнования Kaggle о твитах о погоде](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md index 3f488ea0..5d4a76d4 100644 --- a/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,79 +1,88 @@ + # Генеративные сети -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Рекуррентные нейронные сети (RNN) и их варианты с затвором, такие как ячейки долгосрочной и краткосрочной памяти (LSTM) и затворные рекуррентные единицы (GRU), предоставили механизм для языкового моделирования, так как они могут изучать порядок слов и делать предсказания для следующего слова в последовательности. Это позволяет нам использовать RNN для **генеративных задач**, таких как обычная генерация текста, машинный перевод и даже создание подписей к изображениям. +Рекуррентные нейронные сети (RNN) и их варианты с управляемыми ячейками, такие как ячейки долгосрочной памяти (LSTM) и управляемые рекуррентные блоки (GRU), предоставляют механизм для моделирования языка, так как они могут изучать порядок слов и предсказывать следующее слово в последовательности. Это позволяет использовать RNN для **генеративных задач**, таких как обычная генерация текста, машинный перевод и даже создание подписей к изображениям. -> ✅ Подумайте о том, сколько раз вы извлекали пользу из генеративных задач, таких как автозаполнение текста во время набора. Проведите исследование своих любимых приложений, чтобы узнать, использовали ли они RNN. +> ✅ Вспомните все случаи, когда вы пользовались преимуществами генеративных задач, таких как автозавершение текста при вводе. Исследуйте свои любимые приложения, чтобы узнать, использовали ли они RNN. -В архитектуре RNN, обсужденной в предыдущем блоке, каждая единица RNN производила следующее скрытое состояние в качестве вывода. Однако мы также можем добавить еще один выход к каждой рекуррентной единице, что позволит нам выдавать **последовательность** (которая равна по длине исходной последовательности). Более того, мы можем использовать единицы RNN, которые не принимают вход на каждом шаге, а просто берут некоторый начальный вектор состояния и затем производят последовательность выходов. +В архитектуре RNN, которую мы обсуждали в предыдущем разделе, каждая единица RNN производила следующее скрытое состояние в качестве выхода. Однако мы также можем добавить еще один выход к каждой рекуррентной единице, что позволит нам выводить **последовательность** (равную по длине исходной последовательности). Более того, мы можем использовать RNN, которые не принимают входные данные на каждом шаге, а просто используют некоторый начальный вектор состояния и затем генерируют последовательность выходных данных. -Это позволяет создавать различные нейронные архитектуры, которые показаны на рисунке ниже: +Это позволяет создавать различные нейронные архитектуры, показанные на изображении ниже: -![Изображение, показывающее общие шаблоны рекуррентных нейронных сетей.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg) +![Изображение, показывающее распространенные шаблоны рекуррентных нейронных сетей.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg) -> Изображение из блога [Непомерная эффективность рекуррентных нейронных сетей](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) автора [Андрея Карпатого](http://karpathy.github.io/) +> Изображение из блога [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) Андрея Карпати ([Andrej Karpaty](http://karpathy.github.io/)) -* **Один-к-одному** — это традиционная нейронная сеть с одним входом и одним выходом -* **Один-ко-многим** — это генеративная архитектура, которая принимает одно входное значение и генерирует последовательность выходных значений. Например, если мы хотим обучить сеть **создания подписей к изображениям**, которая будет производить текстовое описание изображения, мы можем использовать изображение в качестве входа, пропустить его через CNN, чтобы получить его скрытое состояние, а затем рекуррентная цепочка будет генерировать подпись слово за словом -* **Много-к-одному** соответствует архитектурам RNN, которые мы описали в предыдущем блоке, таким как классификация текста -* **Много-к-многим**, или **последовательность-к-последовательности**, соответствует задачам, таким как **машинный перевод**, где первая RNN собирает всю информацию из входной последовательности в скрытом состоянии, а другая цепочка RNN разворачивает это состояние в выходную последовательность. +* **Один-к-одному** — традиционная нейронная сеть с одним входом и одним выходом. +* **Один-ко-многим** — генеративная архитектура, которая принимает одно входное значение и генерирует последовательность выходных значений. Например, если мы хотим обучить сеть для **создания подписей к изображениям**, которая будет генерировать текстовое описание изображения, мы можем использовать изображение в качестве входных данных, пропустить его через CNN для получения скрытого состояния, а затем рекуррентная цепочка будет генерировать подпись слово за словом. +* **Многие-к-одному** соответствует архитектурам RNN, которые мы описали в предыдущем разделе, например, классификация текста. +* **Многие-ко-многим**, или **последовательность-к-последовательности**, соответствует задачам, таким как **машинный перевод**, где первая RNN собирает всю информацию из входной последовательности в скрытое состояние, а другая цепочка RNN разворачивает это состояние в выходную последовательность. -В этом блоке мы сосредоточимся на простых генеративных моделях, которые помогают нам генерировать текст. Для простоты мы будем использовать токенизацию на уровне символов. +В этом разделе мы сосредоточимся на простых генеративных моделях, которые помогают нам генерировать текст. Для простоты мы будем использовать токенизацию на уровне символов. -Мы будем обучать эту RNN для генерации текста шаг за шагом. На каждом шаге мы будем брать последовательность символов длиной `nchars` и просить сеть сгенерировать следующий выходной символ для каждого входного символа: +Мы будем обучать эту RNN генерировать текст шаг за шагом. На каждом шаге мы будем брать последовательность символов длиной `nchars` и просить сеть сгенерировать следующий выходной символ для каждого входного символа: -![Изображение, показывающее пример генерации RNN слова 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ru.png) +![Изображение, показывающее пример генерации слова "HELLO" с помощью RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ru.png) -При генерации текста (во время вывода) мы начинаем с некоторого **подсказки**, которая проходит через ячейки RNN для генерации своего промежуточного состояния, а затем от этого состояния начинается генерация. Мы генерируем по одному символу за раз и передаем состояние и сгенерированный символ другой ячейке RNN для генерации следующего, пока не сгенерируем достаточное количество символов. +При генерации текста (во время инференса) мы начинаем с некоторого **запроса**, который передается через ячейки RNN для генерации промежуточного состояния, а затем из этого состояния начинается генерация. Мы генерируем один символ за раз, передаем состояние и сгенерированный символ в следующую ячейку RNN, чтобы сгенерировать следующий символ, пока не будет сгенерировано достаточное количество символов. -> Изображение от автора +> Изображение автора ## ✍️ Упражнения: Генеративные сети -Продолжайте свое обучение в следующих блокнотах: +Продолжите обучение в следующих ноутбуках: * [Генеративные сети с PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) * [Генеративные сети с TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) ## Мягкая генерация текста и температура -Выход каждой ячейки RNN — это вероятностное распределение символов. Если мы всегда берем символ с наивысшей вероятностью в качестве следующего символа в сгенерированном тексте, текст часто может "циклически" повторяться между одними и теми же последовательностями символов снова и снова, как в этом примере: +Выход каждого элемента RNN — это распределение вероятностей символов. Если мы всегда выбираем символ с наивысшей вероятностью в качестве следующего символа в сгенерированном тексте, текст часто может "зацикливаться" на одних и тех же последовательностях символов, как в этом примере: ``` today of the second the company and a second the company ... ``` -Однако, если мы посмотрим на вероятностное распределение для следующего символа, может оказаться, что разница между несколькими наивысшими вероятностями не велика, например, один символ может иметь вероятность 0.2, другой - 0.19 и так далее. Например, когда мы ищем следующий символ в последовательности '*play*', следующим символом может быть как пробел, так и **e** (как в слове *player*). +Однако, если мы посмотрим на распределение вероятностей для следующего символа, может оказаться, что разница между несколькими наивысшими вероятностями незначительна, например, один символ может иметь вероятность 0.2, а другой — 0.19 и т.д. Например, при выборе следующего символа в последовательности '*play*', следующим символом может быть как пробел, так и **e** (как в слове *player*). -Это приводит нас к выводу, что не всегда "справедливо" выбирать символ с более высокой вероятностью, потому что выбор второго по величине все равно может привести нас к осмысленному тексту. Более разумно **выбирать** символы из вероятностного распределения, заданного выходом сети. Мы также можем использовать параметр, **температуру**, который будет сглаживать вероятностное распределение, если мы хотим добавить больше случайности, или делать его более крутым, если мы хотим больше придерживаться символов с наивысшей вероятностью. +Это приводит нас к выводу, что не всегда "справедливо" выбирать символ с наивысшей вероятностью, так как выбор второго по величине также может привести к осмысленному тексту. Более разумно **выбирать** символы из распределения вероятностей, предоставленного выходом сети. Мы также можем использовать параметр **температура**, который сглаживает распределение вероятностей, если мы хотим добавить больше случайности, или делает его более крутым, если мы хотим придерживаться символов с наивысшей вероятностью. -Изучите, как эта мягкая генерация текста реализована в вышеупомянутых блокнотах. +Изучите, как эта мягкая генерация текста реализована в ноутбуках, указанных выше. ## Заключение -Хотя генерация текста может быть полезной сама по себе, основные преимущества заключаются в способности генерировать текст с помощью RNN из некоторого начального векторного признака. Например, генерация текста используется как часть машинного перевода (последовательность-к-последовательности, в этом случае вектор состояния из *кодировщика* используется для генерации или *декодирования* переведенного сообщения) или для создания текстового описания изображения (в этом случае вектор признаков будет поступать от извлекателя CNN). +Хотя генерация текста может быть полезна сама по себе, основные преимущества заключаются в возможности генерировать текст с помощью RNN из некоторого начального вектора признаков. Например, генерация текста используется как часть машинного перевода (последовательность-к-последовательности, в этом случае вектор состояния от *кодировщика* используется для генерации или *декодирования* переведенного сообщения) или для создания текстового описания изображения (в этом случае вектор признаков будет получен из CNN-экстрактора). -## 🚀 Задача +## 🚀 Задание -Пройдите несколько уроков на Microsoft Learn по этой теме +Пройдите уроки на Microsoft Learn по этой теме: * Генерация текста с [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) ## Обзор и самостоятельное изучение -Вот несколько статей для расширения ваших знаний +Вот несколько статей для расширения ваших знаний: -* Разные подходы к генерации текста с использованием цепи Маркова, LSTM и GPT-2: [блог](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Различные подходы к генерации текста с использованием цепей Маркова, LSTM и GPT-2: [статья](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) * Пример генерации текста в [документации Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) ## [Задание](lab/README.md) -Мы увидели, как генерировать текст символ за символом. В лаборатории вы исследуете генерацию текста на уровне слов. +Мы рассмотрели, как генерировать текст символ за символом. В лабораторной работе вы изучите генерацию текста на уровне слов. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 3c059322..3ca8aaea 100644 --- a/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ + # Генерация текста на уровне слов с использованием RNN -Лабораторное задание из [Курса AI для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [Учебной программы "ИИ для начинающих"](https://github.com/microsoft/ai-for-beginners). -## Задача +## Задание -В этой лабораторной работе вам нужно выбрать любую книгу и использовать её в качестве набора данных для обучения генератора текста на уровне слов. +В этой лабораторной работе вам нужно взять любую книгу и использовать её в качестве набора данных для обучения генератора текста на уровне слов. ## Набор данных -Вы можете использовать любую книгу. Множество бесплатных текстов можно найти на [Project Gutenberg](https://www.gutenberg.org/), например, вот прямая ссылка на [Приключения Алисы в Стране Чудес](https://www.gutenberg.org/files/11/11-0.txt) Льюиса Кэрролла. +Вы можете использовать любую книгу. Множество бесплатных текстов можно найти на сайте [Project Gutenberg](https://www.gutenberg.org/), например, вот прямая ссылка на [Приключения Алисы в Стране чудес](https://www.gutenberg.org/files/11/11-0.txt)) Льюиса Кэрролла. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/18-Transformers/README.md b/translations/ru/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..b1d9733d --- /dev/null +++ b/translations/ru/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Механизмы внимания и трансформеры + +## [Предлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Одной из самых важных задач в области обработки естественного языка (NLP) является **машинный перевод**, ключевая задача, лежащая в основе таких инструментов, как Google Translate. В этом разделе мы сосредоточимся на машинном переводе или, более широко, на любой задаче *последовательность-к-последовательности* (также называемой **трансдукцией предложений**). + +С помощью RNN задачи последовательность-к-последовательности реализуются двумя рекуррентными сетями, где одна сеть, **кодировщик**, преобразует входную последовательность в скрытое состояние, а другая сеть, **декодировщик**, разворачивает это скрытое состояние в результат перевода. Однако у этого подхода есть несколько проблем: + +* Заключительное состояние сети-кодировщика с трудом запоминает начало предложения, что приводит к низкому качеству модели для длинных предложений. +* Все слова в последовательности оказывают одинаковое влияние на результат. На практике же отдельные слова во входной последовательности часто оказывают большее влияние на выходные последовательности, чем другие. + +**Механизмы внимания** предоставляют способ взвешивания контекстного влияния каждого входного вектора на каждое предсказание выхода RNN. Это реализуется путем создания "ярлыков" между промежуточными состояниями входной RNN и выходной RNN. Таким образом, при генерации выходного символа yt мы учитываем все скрытые состояния входа hi с различными весовыми коэффициентами αt,i. + +![Изображение, показывающее модель кодировщик/декодировщик с аддитивным слоем внимания](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ru.png) + +> Модель кодировщик-декодировщик с механизмом аддитивного внимания из [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), цитируется из [этого блога](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Матрица внимания {αi,j} представляет степень, в которой определенные входные слова участвуют в генерации данного слова в выходной последовательности. Ниже приведен пример такой матрицы: + +![Изображение, показывающее пример выравнивания, найденного RNNsearch-50, взято из Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ru.png) + +> Рисунок из [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Рис.3) + +Механизмы внимания ответственны за значительную часть текущего или близкого к текущему уровня развития NLP. Однако добавление внимания значительно увеличивает количество параметров модели, что привело к проблемам масштабирования с RNN. Основное ограничение масштабирования RNN заключается в том, что рекуррентная природа моделей затрудняет пакетную обработку и параллелизацию обучения. В RNN каждый элемент последовательности должен обрабатываться в последовательном порядке, что делает параллелизацию сложной. + +![Кодировщик-декодировщик с вниманием](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Рисунок из [Google's Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Применение механизмов внимания в сочетании с этим ограничением привело к созданию современных моделей трансформеров, таких как BERT и Open-GPT3, которые мы знаем и используем сегодня. + +## Модели трансформеров + +Одна из ключевых идей трансформеров заключается в том, чтобы избежать последовательной природы RNN и создать модель, которая может быть параллелизована во время обучения. Это достигается путем реализации двух идей: + +* позиционное кодирование +* использование механизма самовнимания для захвата паттернов вместо RNN (или CNN) (именно поэтому статья, представляющая трансформеры, называется *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Позиционное кодирование/встраивание + +Идея позиционного кодирования заключается в следующем. +1. При использовании RNN относительная позиция токенов представляется количеством шагов и, таким образом, не требует явного представления. +2. Однако при переходе к вниманию необходимо знать относительные позиции токенов в последовательности. +3. Чтобы получить позиционное кодирование, мы дополняем нашу последовательность токенов последовательностью позиций токенов в последовательности (т.е. последовательностью чисел 0,1, ...). +4. Затем мы смешиваем позицию токена с вектором встраивания токена. Для преобразования позиции (целого числа) в вектор можно использовать различные подходы: + +* Обучаемое встраивание, аналогичное встраиванию токенов. Это подход, который мы рассматриваем здесь. Мы применяем слои встраивания как к токенам, так и к их позициям, получая векторы встраивания одинаковых размеров, которые затем складываем. +* Фиксированная функция позиционного кодирования, предложенная в оригинальной статье. + + + +> Изображение автора + +Результат, который мы получаем с позиционным встраиванием, включает как оригинальный токен, так и его позицию в последовательности. + +### Многоголовое самовнимание + +Далее нам нужно захватить некоторые паттерны внутри нашей последовательности. Для этого трансформеры используют механизм **самовнимания**, который по сути является вниманием, применяемым к той же последовательности как на входе, так и на выходе. Применение самовнимания позволяет учитывать **контекст** внутри предложения и видеть, какие слова взаимосвязаны. Например, это позволяет видеть, к каким словам относятся кореференции, такие как *it*, и учитывать контекст: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ru.png) + +> Изображение из [Google Blog](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +В трансформерах используется **многоголовое внимание**, чтобы дать сети возможность захватывать несколько различных типов зависимостей, например, долгосрочные и краткосрочные отношения между словами, кореференции и другие. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) содержит больше деталей о реализации слоев трансформера. + +### Внимание кодировщика-декодировщика + +В трансформерах внимание используется в двух местах: + +* Для захвата паттернов внутри входного текста с помощью самовнимания. +* Для выполнения перевода последовательности - это слой внимания между кодировщиком и декодировщиком. + +Внимание кодировщика-декодировщика очень похоже на механизм внимания, используемый в RNN, как описано в начале этого раздела. Этот анимированный диаграмма объясняет роль внимания кодировщика-декодировщика. + +![Анимированный GIF, показывающий, как выполняются оценки в моделях трансформеров.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Поскольку каждая входная позиция сопоставляется независимо с каждой выходной позицией, трансформеры могут лучше параллелизоваться, чем RNN, что позволяет создавать гораздо более крупные и выразительные языковые модели. Каждая голова внимания может быть использована для изучения различных отношений между словами, что улучшает задачи обработки естественного языка. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) — это очень большая многослойная сеть трансформеров с 12 слоями для *BERT-base* и 24 для *BERT-large*. Модель сначала предварительно обучается на большом корпусе текстовых данных (WikiPedia + книги) с использованием обучения без учителя (предсказание замаскированных слов в предложении). Во время предварительного обучения модель поглощает значительные уровни понимания языка, которые затем могут быть использованы с другими наборами данных с помощью тонкой настройки. Этот процесс называется **передача обучения**. + +![картинка с http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ru.png) + +> Изображение [источник](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Упражнения: Трансформеры + +Продолжите обучение в следующих ноутбуках: + +* [Трансформеры в PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Трансформеры в TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Заключение + +В этом уроке вы узнали о трансформерах и механизмах внимания, которые являются важными инструментами в арсенале NLP. Существует множество вариаций архитектур трансформеров, включая BERT, DistilBERT, BigBird, OpenGPT3 и другие, которые можно тонко настроить. Пакет [HuggingFace](https://github.com/huggingface/) предоставляет репозиторий для обучения многих из этих архитектур как с PyTorch, так и с TensorFlow. + +## 🚀 Задание + +## [Послетекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Обзор и самостоятельное изучение + +* [Пост в блоге](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), объясняющий классическую статью [Attention is all you need](https://arxiv.org/abs/1706.03762) о трансформерах. +* [Серия постов в блоге](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) о трансформерах, подробно объясняющая архитектуру. + +## [Задание](assignment.md) + +**Отказ от ответственности**: +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/18-Transformers/assignment.md b/translations/ru/lessons/5-NLP/18-Transformers/assignment.md index 71c43c5b..1bb7e5df 100644 --- a/translations/ru/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/ru/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# Задание: Трансформеры + +# Задание: Transformers -Экспериментируйте с Трансформерами на HuggingFace! Попробуйте некоторые из скриптов, которые они предоставляют для работы с различными моделями, доступными на их сайте: https://huggingface.co/docs/transformers/run_scripts. Попробуйте один из их наборов данных, затем импортируйте один из своих из этой учебной программы или с Kaggle и посмотрите, сможете ли вы сгенерировать интересные тексты. Подготовьте ноутбук с вашими результатами. +Поработайте с Transformers на платформе HuggingFace! Попробуйте некоторые из скриптов, которые они предоставляют, чтобы работать с различными моделями, доступными на их сайте: https://huggingface.co/docs/transformers/run_scripts. Используйте один из их наборов данных, а затем импортируйте свой собственный из этой программы или с Kaggle и посмотрите, сможете ли вы сгенерировать интересные тексты. Создайте ноутбук с вашими результатами. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/19-NER/README.md b/translations/ru/lessons/5-NLP/19-NER/README.md index 66e43d67..e1293238 100644 --- a/translations/ru/lessons/5-NLP/19-NER/README.md +++ b/translations/ru/lessons/5-NLP/19-NER/README.md @@ -1,84 +1,92 @@ + # Распознавание именованных сущностей -На данный момент мы в основном сосредоточились на одной задаче обработки естественного языка (NLP) - классификации. Однако существуют и другие задачи NLP, которые можно решать с помощью нейронных сетей. Одна из таких задач - **[Распознавание именованных сущностей](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), которая занимается распознаванием конкретных сущностей в тексте, таких как места, имена людей, временные интервалы, химические формулы и так далее. +До сих пор мы в основном сосредотачивались на одной задаче обработки естественного языка (NLP) — классификации. Однако существуют и другие задачи NLP, которые можно решать с помощью нейронных сетей. Одна из таких задач — это **[распознавание именованных сущностей](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), которое заключается в определении конкретных сущностей в тексте, таких как места, имена людей, временные интервалы, химические формулы и так далее. -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) ## Пример использования NER -Предположим, вы хотите разработать чат-бота на естественном языке, похожего на Amazon Alexa или Google Assistant. Интеллектуальные чат-боты работают, *понимая*, что хочет пользователь, выполняя классификацию текста на входном предложении. Результатом этой классификации является так называемый **намерение**, которое определяет, что должен сделать чат-бот. +Представьте, что вы хотите разработать чат-бота с поддержкой естественного языка, похожего на Amazon Alexa или Google Assistant. Интеллектуальные чат-боты работают, *понимая*, что хочет пользователь, с помощью классификации текста во входной фразе. Результатом такой классификации является так называемое **намерение** (intent), которое определяет, что должен сделать чат-бот. Bot NER -> Изображение от автора +> Изображение автора -Однако пользователь может предоставить некоторые параметры в рамках фразы. Например, запрашивая погоду, она может указать местоположение или дату. Бот должен быть в состоянии распознать эти сущности и заполнить соответствующие параметры перед выполнением действия. Именно здесь и вступает в действие NER. +Однако пользователь может указать некоторые параметры в своей фразе. Например, спрашивая о погоде, он может уточнить местоположение или дату. Бот должен уметь распознавать эти сущности и заполнять соответствующие параметры перед выполнением действия. Именно здесь и используется NER. -> ✅ Другим примером может быть [анализ научных медицинских статей](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Одним из основных аспектов, на которые нам нужно обратить внимание, являются конкретные медицинские термины, такие как болезни и медицинские вещества. Хотя небольшое количество болезней, вероятно, можно извлечь с помощью поиска подстрок, более сложные сущности, такие как химические соединения и названия медикаментов, требуют более сложного подхода. +> ✅ Другой пример — это [анализ научных медицинских статей](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Одной из главных задач является поиск специфических медицинских терминов, таких как названия заболеваний и медицинских препаратов. Если небольшое количество заболеваний можно извлечь с помощью поиска подстрок, то для более сложных сущностей, таких как химические соединения и названия лекарств, требуется более сложный подход. ## NER как классификация токенов -Модели NER по сути являются **моделями классификации токенов**, потому что для каждого входного токена нам нужно определить, принадлежит ли он к сущности или нет, и если принадлежит - к какому классу сущности. +Модели NER по сути являются моделями **классификации токенов**, так как для каждого входного токена необходимо определить, принадлежит ли он какой-либо сущности, и если да, то к какому классу сущностей. Рассмотрим следующий заголовок статьи: -**Регургитация трикуспидального клапана** и **токсичность** **лития карбоната** у новорожденного. +**Регургитация трикуспидального клапана** и **карбонат лития** **токсичность** у новорожденного. Сущности здесь: -* Регургитация трикуспидального клапана - это болезнь (`DIS`) -* Литий карбонат - это химическое вещество (`CHEM`) -* Токсичность - это также болезнь (`DIS`) +* Регургитация трикуспидального клапана — это заболевание (`DIS`) +* Карбонат лития — это химическое вещество (`CHEM`) +* Токсичность — это тоже заболевание (`DIS`) -Обратите внимание, что одна сущность может охватывать несколько токенов. И, как в этом случае, нам нужно различать две последовательные сущности. Таким образом, обычно используется два класса для каждой сущности - один указывает на первый токен сущности (часто используется префикс `B-`, для **b**eginning), а другой - на продолжение сущности (`I-`, для **i**nner token). Мы также используем `O` как класс, чтобы представлять все **o**ther токены. Такая маркировка токенов называется [BIO маркировка](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (или IOB). Когда заголовок помечен, он будет выглядеть так: +Обратите внимание, что одна сущность может охватывать несколько токенов. И, как в данном случае, нам нужно различать две последовательные сущности. Поэтому обычно используются два класса для каждой сущности: один для обозначения первого токена сущности (часто используется префикс `B-`, от **b**eginning — начало), и другой — для продолжения сущности (`I-`, от **i**nner — внутренний токен). Мы также используем `O` как класс для обозначения всех **д**ругих токенов. Такой способ разметки токенов называется [BIO-разметкой](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (или IOB). После разметки наш заголовок будет выглядеть так: -Токен | Метка +Токен | Тег ------|----- -Трикуспидальный | B-DIS -клапан | I-DIS +Трикуспидального | B-DIS +клапана | I-DIS регургитация | I-DIS и | O -литий | B-CHEM -карбонат | I-CHEM +карбонат | B-CHEM +лития | I-CHEM токсичность | B-DIS -в | O -новорожденный | O -младенец | O +у | O +новорожденного | O . | O -Поскольку нам нужно установить соответствие один к одному между токенами и классами, мы можем обучить правильную **модель нейронной сети** с **многими входами и выходами** на основе этой схемы: +Поскольку нам нужно установить однозначное соответствие между токенами и классами, мы можем обучить модель нейронной сети **многие-ко-многим**, как показано на следующем изображении: -![Изображение, показывающее общие паттерны рекуррентных нейронных сетей.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg) +![Изображение, показывающее распространенные паттерны рекуррентных нейронных сетей.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg) -> *Изображение из [этого блога](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) от [Андрея Карпаты](http://karpathy.github.io/). Модели классификации токенов NER соответствуют самой правой архитектуре сети на этом изображении.* +> *Изображение из [этой статьи](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) Андрея Карпати. Модели классификации токенов для NER соответствуют архитектуре сети на крайнем правом изображении.* ## Обучение моделей NER -Поскольку модель NER по сути является моделью классификации токенов, мы можем использовать RNN, с которыми мы уже знакомы для этой задачи. В этом случае каждый блок рекуррентной сети будет возвращать идентификатор токена. Следующий пример ноутбука показывает, как обучить LSTM для классификации токенов. +Поскольку модель NER по сути является моделью классификации токенов, для этой задачи можно использовать RNN, с которыми мы уже знакомы. В этом случае каждый блок рекуррентной сети будет возвращать идентификатор токена. Следующий пример ноутбука показывает, как обучить LSTM для классификации токенов. -## ✍️ Примеры ноутбуков: NER +## ✍️ Пример ноутбуков: NER -Продолжите свое обучение в следующем ноутбуке: +Продолжите обучение, изучив следующий ноутбук: -* [NER с TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) +* [NER с использованием TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) ## Заключение -Модель NER - это **модель классификации токенов**, что означает, что она может использоваться для выполнения классификации токенов. Это очень распространенная задача в NLP, помогающая распознавать конкретные сущности в тексте, включая места, имена, даты и многое другое. +Модель NER — это **модель классификации токенов**, что означает, что она может использоваться для выполнения классификации токенов. Это очень распространенная задача в NLP, которая помогает распознавать конкретные сущности в тексте, включая места, имена, даты и многое другое. -## 🚀 Челлендж +## 🚀 Задание -Выполните задание, указанное ниже, чтобы обучить модель распознавания именованных сущностей для медицинских терминов, а затем попробуйте ее на другом наборе данных. +Выполните задание по ссылке ниже, чтобы обучить модель распознавания именованных сущностей для медицинских терминов, а затем попробуйте применить её к другому набору данных. -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) ## Обзор и самостоятельное изучение -Прочитайте блог [Нерациональная эффективность рекуррентных нейронных сетей](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) и следуйте разделу Дальнейшее чтение в этой статье, чтобы углубить свои знания. +Прочитайте статью [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) и изучите раздел Further Reading в этой статье, чтобы углубить свои знания. ## [Задание](lab/README.md) -В задании для этого урока вам нужно будет обучить модель распознавания медицинских сущностей. Вы можете начать с обучения модели LSTM, как описано в этом уроке, а затем перейти к использованию модели трансформера BERT. Прочитайте [инструкции](lab/README.md), чтобы получить все детали. +В рамках задания к этому уроку вам предстоит обучить модель распознавания медицинских сущностей. Вы можете начать с обучения модели LSTM, как описано в этом уроке, а затем перейти к использованию трансформера BERT. Ознакомьтесь с [инструкциями](lab/README.md), чтобы узнать все детали. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/19-NER/lab/README.md b/translations/ru/lessons/5-NLP/19-NER/lab/README.md index e466d473..f7b33bbd 100644 --- a/translations/ru/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/ru/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -Лабораторное задание из [Курса по ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). +Лабораторная работа из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). ## Задача -В этой лабораторной работе вам нужно обучить модель распознавания именованных сущностей для медицинских терминов. +В этой лабораторной работе вам нужно обучить модель распознавания именованных сущностей (NER) для медицинских терминов. ## Датасет -Для обучения модели NER нам нужен правильно размеченный датасет с медицинскими сущностями. [Датасет BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) содержит размеченные сущности заболеваний и химических веществ из более чем 1500 статей. Вы можете скачать датасет после регистрации на их сайте. +Для обучения модели NER нам нужен правильно размеченный датасет с медицинскими сущностями. [Датасет BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) содержит размеченные сущности заболеваний и химических веществ из более чем 1500 научных статей. Вы можете скачать этот датасет после регистрации на их сайте. -Датасет BC5CDR выглядит так: +Датасет BC5CDR выглядит следующим образом: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ ... ``` -В этом датасете первые две строки содержат название статьи и аннотацию, а затем идут отдельные сущности с начальной и конечной позициями в блоке название+аннотация. В дополнение к типу сущности, вы получаете идентификатор онтологии этой сущности в рамках какой-либо медицинской онтологии. +В этом датасете заголовок статьи и аннотация находятся в первых двух строках, а затем идут отдельные сущности с указанием начальной и конечной позиции в блоке заголовок+аннотация. Помимо типа сущности, предоставляется идентификатор онтологии этой сущности в рамках некоторой медицинской онтологии. -Вам нужно будет написать немного кода на Python, чтобы преобразовать это в кодировку BIO. +Вам нужно будет написать код на Python, чтобы преобразовать этот датасет в BIO-формат. ## Сеть -Первую попытку распознавания именованных сущностей можно сделать с помощью сети LSTM, как вы видели в нашем примере во время урока. Однако в задачах обработки естественного языка архитектура [трансформеров](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), а конкретно [языковые модели BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), показывают гораздо лучшие результаты. Предобученные модели BERT понимают общую структуру языка и могут быть дообучены для конкретных задач с относительно небольшими наборами данных и вычислительными затратами. +Первую попытку создания модели NER можно сделать с использованием сети LSTM, как в примере, который вы видели на уроке. Однако в задачах обработки естественного языка [архитектура трансформеров](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), и особенно [языковые модели BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), показывают гораздо лучшие результаты. Предобученные модели BERT понимают общую структуру языка и могут быть дообучены для конкретных задач с относительно небольшими датасетами и вычислительными затратами. -Поскольку мы планируем применять NER в медицинском сценарии, имеет смысл использовать модель BERT, обученную на медицинских текстах. Исследовательская группа Microsoft выпустила предобученную модель под названием [PubMedBERT][PubMedBERT] ([публикация][PubMedBERT-Pub]), которая была дообучена с использованием текстов из репозитория [PubMed](https://pubmed.ncbi.nlm.nih.gov/). +Поскольку мы планируем применять NER в медицинском сценарии, имеет смысл использовать модель BERT, обученную на медицинских текстах. Исследовательский отдел Microsoft выпустил предобученную модель под названием [PubMedBERT][PubMedBERT] ([публикация][PubMedBERT-Pub]), которая была дообучена на текстах из репозитория [PubMed](https://pubmed.ncbi.nlm.nih.gov/). -*de facto* стандартом для обучения моделей трансформеров является библиотека [Hugging Face Transformers](https://huggingface.co/). Она также содержит репозиторий предобученных моделей, поддерживаемых сообществом, включая PubMedBERT. Чтобы загрузить и использовать эту модель, нам нужно всего лишь несколько строк кода: +Стандартом де-факто для обучения моделей трансформеров является библиотека [Hugging Face Transformers](https://huggingface.co/). Она также содержит репозиторий предобученных моделей, поддерживаемых сообществом, включая PubMedBERT. Чтобы загрузить и использовать эту модель, нам нужно всего несколько строк кода: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -Это дает нам объект `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer`, который может разбивать входной текст на токены. Вам нужно будет преобразовать датасет в формат BIO, учитывая токенизацию PubMedBERT. Вы можете использовать [этот фрагмент кода на Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) в качестве вдохновения. +Это дает нам сам `model`, построенный для задачи классификации токенов с использованием `classes` количества классов, а также объект `tokenizer`, который может разбивать входной текст на токены. Вам нужно будет преобразовать датасет в BIO-формат, учитывая токенизацию PubMedBERT. Вы можете использовать [этот пример кода на Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) в качестве вдохновения. -## Вывод +## Итог -Эта задача очень близка к той, с которой вам, вероятно, предстоит столкнуться, если вы хотите получить больше информации о больших объемах текстов на естественном языке. В нашем случае мы можем применить нашу обученную модель к [датасету статей, связанных с COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), и посмотреть, какие выводы мы сможем сделать. [Этот блог-пост](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) и [эта статья](https://www.mdpi.com/2504-2289/6/1/4) описывают исследования, которые можно провести на этом корпусе статей с использованием NER. +Эта задача очень близка к реальной задаче, с которой вы, вероятно, столкнетесь, если захотите получить больше информации из больших объемов текстов на естественном языке. В нашем случае мы можем применить обученную модель к [датасету статей, связанных с COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) и посмотреть, какие выводы мы сможем сделать. [Этот пост в блоге](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) и [эта статья](https://www.mdpi.com/2504-2289/6/1/4) описывают исследования, которые можно провести на этом корпусе статей с использованием NER. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/20-LangModels/README.md b/translations/ru/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..8afa1118 --- /dev/null +++ b/translations/ru/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Предобученные крупные языковые модели + +Во всех предыдущих задачах мы обучали нейронную сеть выполнять определённую задачу, используя размеченный набор данных. С крупными трансформерными моделями, такими как BERT, мы используем языковое моделирование в режиме самоконтроля, чтобы создать языковую модель, которая затем специализируется на конкретной задаче с помощью дополнительного обучения в определённой предметной области. Однако было доказано, что крупные языковые модели могут решать множество задач без какого-либо обучения для конкретной области. Семейство моделей, способных на это, называется **GPT**: Генеративный Предобученный Трансформер. + +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Генерация текста и перплексия + +Идея о том, что нейронная сеть может выполнять общие задачи без дополнительного обучения, представлена в статье [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Основная идея заключается в том, что многие задачи можно моделировать с помощью **генерации текста**, так как понимание текста по сути означает способность его создавать. Поскольку модель обучена на огромном объёме текстов, охватывающих человеческие знания, она также становится осведомлённой в широком круге тем. + +> Понимание и способность создавать текст также предполагают знание чего-то о мире вокруг нас. Люди в значительной степени учатся через чтение, и сеть GPT в этом отношении схожа. + +Сети генерации текста работают, предсказывая вероятность следующего слова $$P(w_N)$$. Однако безусловная вероятность следующего слова равна частоте этого слова в корпусе текста. GPT способна предоставить нам **условную вероятность** следующего слова, учитывая предыдущие: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Подробнее о вероятностях вы можете прочитать в нашем [курсе "Наука о данных для начинающих"](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Качество модели генерации текста можно определить с помощью метрики **перплексия**. Это внутренняя метрика, которая позволяет измерить качество модели без использования набора данных для конкретной задачи. Она основана на понятии *вероятности предложения* — модель присваивает высокую вероятность предложению, которое, скорее всего, является реальным (т.е. модель не **смущена** этим предложением), и низкую вероятность предложениям, которые менее осмысленны (например, *Может ли это что?*). Когда мы предоставляем модели предложения из реального корпуса текста, мы ожидаем, что они будут иметь высокую вероятность и низкую **перплексию**. Математически это определяется как нормализованная обратная вероятность тестового набора: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Вы можете поэкспериментировать с генерацией текста, используя [редактор текста на базе GPT от Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. В этом редакторе вы начинаете писать текст, и нажатие **[TAB]** предложит вам несколько вариантов завершения. Если они слишком короткие или вас не устраивают, нажмите [TAB] снова, и вы получите больше вариантов, включая более длинные фрагменты текста. + +## GPT — это семейство моделей + +GPT — это не одна модель, а целая коллекция моделей, разработанных и обученных [OpenAI](https://openai.com). + +Среди моделей GPT: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT-3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| Языковая модель с до 1,5 миллиарда параметров. | Языковая модель с до 175 миллиардов параметров. | 100 триллионов параметров, принимает как изображения, так и текст на вход, а на выходе выдаёт текст. | + +Модели GPT-3 и GPT-4 доступны [в виде когнитивной службы от Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) и через [API OpenAI](https://openai.com/api/). + +## Инженерия подсказок + +Поскольку GPT обучена на огромных объёмах данных для понимания языка и кода, она предоставляет ответы на входные данные (подсказки). Подсказки — это входные данные или запросы для GPT, где пользователь даёт инструкции модели для выполнения задач. Чтобы получить желаемый результат, необходимо создать наиболее эффективную подсказку, что включает выбор правильных слов, форматов, фраз или даже символов. Этот подход называется [инженерией подсказок](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Эта документация](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) предоставляет больше информации об инженерии подсказок. + +## ✍️ Пример блокнота: [Работа с OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Продолжите обучение с помощью следующих блокнотов: + +* [Генерация текста с OpenAI-GPT и Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Заключение + +Новые универсальные предобученные языковые модели не только моделируют структуру языка, но и содержат огромный объём естественного языка. Таким образом, их можно эффективно использовать для решения некоторых задач обработки естественного языка в режимах zero-shot или few-shot. + +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Отказ от ответственности**: +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/README.md b/translations/ru/lessons/5-NLP/README.md index 2878a2f7..01ae3e71 100644 --- a/translations/ru/lessons/5-NLP/README.md +++ b/translations/ru/lessons/5-NLP/README.md @@ -1,30 +1,39 @@ -# Обработка Естественного Языка + +# Обработка естественного языка -![Сводка задач NLP в рисунке](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ru.png) +![Сводка задач NLP в виде рисунка](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ru.png) -В этом разделе мы сосредоточимся на использовании нейронных сетей для решения задач, связанных с **обработкой естественного языка (NLP)**. Существует множество проблем NLP, которые мы хотим, чтобы компьютеры могли решать: +В этом разделе мы сосредоточимся на использовании нейронных сетей для решения задач, связанных с **обработкой естественного языка (NLP)**. Существует множество задач NLP, которые мы хотим, чтобы компьютеры могли решать: -* **Классификация текста** — это типичная задача классификации, относящаяся к последовательностям текста. Примеры включают классификацию электронных писем как спам или не спам, или категоризацию статей как спорт, бизнес, политика и т.д. Также, при разработке чат-ботов, нам часто нужно понять, что пользователь хотел сказать — в этом случае мы имеем дело с **классификацией намерений**. Часто при классификации намерений нам нужно работать с множеством категорий. -* **Анализ настроений** — это типичная задача регрессии, где нам нужно присвоить число (настроение), соответствующее тому, насколько положительное или отрицательное значение предложения. Более продвинутая версия анализа настроений — это **анализ настроений на основе аспектов** (ABSA), где мы присваиваем настроение не всему предложению, а различным его частям (аспектам), например, *В этом ресторане мне понравилась кухня, но атмосфера была ужасной*. -* **Распознавание именованных сущностей** (NER) относится к задаче извлечения определенных сущностей из текста. Например, нам может понадобиться понять, что в фразе *Мне нужно лететь в Париж завтра* слово *завтра* относится к ДАТЕ, а *Париж* — это МЕСТОПОЛОЖЕНИЕ. -* **Извлечение ключевых слов** похоже на NER, но нам нужно автоматически извлекать слова, важные для смысла предложения, без предварительной настройки для конкретных типов сущностей. -* **Кластеризация текста** может быть полезна, когда мы хотим сгруппировать похожие предложения, например, похожие запросы в разговорах технической поддержки. -* **Ответы на вопросы** относятся к способности модели отвечать на конкретный вопрос. Модель получает текстовый фрагмент и вопрос в качестве входных данных, и ей нужно предоставить место в тексте, где содержится ответ на вопрос (или, иногда, сгенерировать текст ответа). -* **Генерация текста** — это способность модели генерировать новый текст. Это можно рассматривать как задачу классификации, которая предсказывает следующую букву/слово на основе некоторого *текстового подсказки*. Продвинутые модели генерации текста, такие как GPT-3, способны решать другие задачи NLP, такие как классификация, с использованием техники, называемой [программированием подсказок](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) или [инженерией подсказок](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Суммаризация текста** — это техника, когда мы хотим, чтобы компьютер "прочитал" длинный текст и подытожил его в нескольких предложениях. +* **Классификация текста** — это типичная задача классификации, связанная с текстовыми последовательностями. Примеры включают классификацию электронных писем как спам или не спам, или категоризацию статей по темам, таким как спорт, бизнес, политика и т.д. Также, при разработке чат-ботов часто необходимо понимать, что пользователь хотел сказать — в этом случае мы имеем дело с **классификацией намерений**. Часто в классификации намерений приходится работать с большим количеством категорий. +* **Анализ тональности** — это типичная задача регрессии, где необходимо присвоить числовое значение (тональность), соответствующее тому, насколько положительным или отрицательным является смысл предложения. Более сложная версия анализа тональности — это **анализ тональности на основе аспектов** (ABSA), где тональность присваивается не всему предложению, а его отдельным частям (аспектам), например: *В этом ресторане мне понравилась кухня, но атмосфера была ужасной*. +* **Распознавание именованных сущностей** (NER) — это задача извлечения определенных сущностей из текста. Например, нужно понять, что в фразе *Мне нужно лететь в Париж завтра* слово *завтра* относится к ДАТЕ, а *Париж* — это ЛОКАЦИЯ. +* **Извлечение ключевых слов** похоже на NER, но здесь необходимо автоматически извлекать слова, важные для смысла предложения, без предварительного обучения для конкретных типов сущностей. +* **Кластеризация текста** может быть полезна, когда нужно сгруппировать похожие предложения, например, похожие запросы в разговорах технической поддержки. +* **Ответы на вопросы** — это способность модели отвечать на конкретный вопрос. Модель получает текстовый отрывок и вопрос в качестве входных данных, и должна указать место в тексте, где содержится ответ на вопрос (или, иногда, сгенерировать текст ответа). +* **Генерация текста** — это способность модели создавать новый текст. Это можно рассматривать как задачу классификации, где предсказывается следующая буква/слово на основе некоторого *текстового запроса*. Продвинутые модели генерации текста, такие как GPT-3, способны решать другие задачи NLP, такие как классификация, используя технику [программирования с подсказками](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) или [инженерии подсказок](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Суммаризация текста** — это техника, когда мы хотим, чтобы компьютер "прочитал" длинный текст и кратко изложил его в нескольких предложениях. * **Машинный перевод** можно рассматривать как комбинацию понимания текста на одном языке и генерации текста на другом. -Изначально большинство задач NLP решались с использованием традиционных методов, таких как грамматики. Например, в машинном переводе использовались парсеры для преобразования исходного предложения в синтаксическое дерево, затем извлекались более высокоуровневые семантические структуры для представления смысла предложения, и на основе этого смысла и грамматики целевого языка генерировался результат. В настоящее время многие задачи NLP более эффективно решаются с помощью нейронных сетей. +Изначально большинство задач NLP решались с использованием традиционных методов, таких как грамматики. Например, в машинном переводе использовались парсеры для преобразования исходного предложения в синтаксическое дерево, затем извлекались более высокоуровневые семантические структуры для представления смысла предложения, и на основе этого смысла и грамматики целевого языка генерировался результат. В настоящее время многие задачи NLP более эффективно решаются с использованием нейронных сетей. -> Многие классические методы NLP реализованы в библиотеке Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Существует отличная [книга NLTK](https://www.nltk.org/book/), доступная онлайн, которая охватывает, как различные задачи NLP могут быть решены с помощью NLTK. +> Многие классические методы NLP реализованы в библиотеке Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Существует отличная [книга по NLTK](https://www.nltk.org/book/), доступная онлайн, которая охватывает, как различные задачи NLP могут быть решены с помощью NLTK. -В нашем курсе мы в основном сосредоточимся на использовании нейронных сетей для NLP и будем использовать NLTK, где это необходимо. +В нашем курсе мы в основном будем сосредоточены на использовании нейронных сетей для NLP, и будем использовать NLTK, где это необходимо. -Мы уже изучили использование нейронных сетей для работы с табличными данными и изображениями. Основное различие между этими типами данных и текстом заключается в том, что текст представляет собой последовательность переменной длины, в то время как размер входных данных в случае изображений известен заранее. Хотя сверточные сети могут извлекать шаблоны из входных данных, шаблоны в тексте более сложные. Например, отрицание может отделяться от подлежащего произвольно для многих слов (например, *Мне не нравятся апельсины* против *Мне не нравятся эти большие красочные вкусные апельсины*), и это все равно должно интерпретироваться как один шаблон. Таким образом, чтобы справиться с языком, нам нужно ввести новые типы нейронных сетей, такие как *рекуррентные сети* и *трансформеры*. +Мы уже изучили использование нейронных сетей для работы с табличными данными и изображениями. Основное отличие этих типов данных от текста заключается в том, что текст — это последовательность переменной длины, тогда как размер входных данных в случае изображений известен заранее. Хотя сверточные сети могут извлекать шаблоны из входных данных, шаблоны в тексте более сложны. Например, отрицание может быть отделено от субъекта произвольным количеством слов (например, *Мне не нравятся апельсины* vs. *Мне не нравятся эти большие красочные вкусные апельсины*), и это все равно должно интерпретироваться как один шаблон. Таким образом, для обработки языка необходимо вводить новые типы нейронных сетей, такие как *рекуррентные сети* и *трансформеры*. ## Установка библиотек -Если вы используете локальную установку Python для прохождения этого курса, вам может потребоваться установить все необходимые библиотеки для NLP, используя следующие команды: +Если вы используете локальную установку Python для выполнения этого курса, вам может понадобиться установить все необходимые библиотеки для NLP с помощью следующих команд: **Для PyTorch** ```bash @@ -42,9 +51,9 @@ pip install -r requirements-tf.txt В этом разделе в некоторых примерах мы будем обучать довольно крупные модели. * **Используйте компьютер с поддержкой GPU**: Рекомендуется запускать ваши ноутбуки на компьютере с поддержкой GPU, чтобы сократить время ожидания при работе с крупными моделями. * **Ограничения памяти GPU**: Работа на GPU может привести к ситуациям, когда у вас закончится память GPU, особенно при обучении крупных моделей. -* **Потребление памяти GPU**: Объем памяти GPU, потребляемой во время обучения, зависит от различных факторов, включая размер мини-партии. -* **Минимизируйте размер мини-партии**: Если вы столкнулись с проблемами памяти GPU, рассмотрите возможность уменьшения размера мини-партии в вашем коде как потенциальное решение. -* **Освобождение памяти GPU в TensorFlow**: Более старые версии TensorFlow могут неправильно освобождать память GPU при обучении нескольких моделей в одном ядре Python. Чтобы эффективно управлять использованием памяти GPU, вы можете настроить TensorFlow на выделение памяти GPU только по мере необходимости. +* **Потребление памяти GPU**: Количество памяти GPU, потребляемой во время обучения, зависит от различных факторов, включая размер минибатча. +* **Минимизируйте размер минибатча**: Если вы столкнулись с проблемами памяти GPU, попробуйте уменьшить размер минибатча в вашем коде как возможное решение. +* **Освобождение памяти GPU в TensorFlow**: Старые версии TensorFlow могут некорректно освобождать память GPU при обучении нескольких моделей в одном ядре Python. Чтобы эффективно управлять использованием памяти GPU, вы можете настроить TensorFlow на выделение памяти GPU только по мере необходимости. * **Включение кода**: Чтобы настроить TensorFlow на увеличение выделения памяти GPU только при необходимости, включите следующий код в ваши ноутбуки: ```python @@ -53,17 +62,17 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Если вас интересует изучение NLP с классической точки зрения машинного обучения, посетите [этот набор уроков](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). +Если вас интересует изучение NLP с точки зрения классического машинного обучения, посетите [этот набор уроков](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ## В этом разделе В этом разделе мы изучим: * [Представление текста в виде тензоров](13-TextRep/README.md) -* [Векторные представления слов](14-Emdeddings/README.md) +* [Словарные эмбеддинги](14-Emdeddings/README.md) * [Моделирование языка](15-LanguageModeling/README.md) * [Рекуррентные нейронные сети](16-RNN/README.md) * [Генеративные сети](17-GenerativeNetworks/README.md) * [Трансформеры](18-Transformers/README.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md index cb7b28b3..138ae2de 100644 --- a/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ -# Генетические Алгоритмы + +# Генетические алгоритмы -## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**Генетические Алгоритмы** (ГА) основаны на **эволюционном подходе** к ИИ, в котором методы эволюции популяции используются для получения оптимального решения для данной задачи. Они были предложены в 1975 году [Джоном Генри Холландом](https://wikipedia.org/wiki/John_Henry_Holland). +**Генетические алгоритмы** (GA) основаны на **эволюционном подходе** к искусственному интеллекту, где методы эволюции популяции используются для получения оптимального решения заданной задачи. Они были предложены в 1975 году [Джоном Генри Холландом](https://wikipedia.org/wiki/John_Henry_Holland). -Генетические Алгоритмы основаны на следующих идеях: +Генетические алгоритмы базируются на следующих идеях: -* Действительные решения задачи могут быть представлены в виде **генов** -* **Скрещивание** позволяет нам комбинировать два решения, чтобы получить новое действительное решение +* Валидные решения задачи могут быть представлены в виде **генов** +* **Скрещивание** позволяет объединять два решения, чтобы получить новое валидное решение * **Отбор** используется для выбора более оптимальных решений с помощью некоторой **функции приспособленности** * **Мутации** вводятся для дестабилизации оптимизации и выхода из локального минимума -Если вы хотите реализовать Генетический Алгоритм, вам нужно следующее: +Если вы хотите реализовать генетический алгоритм, вам потребуется следующее: - * Найти метод кодирования решений нашей задачи с использованием **генов** g∈Γ - * На множестве генов Γ необходимо определить **функцию приспособленности** fit: Γ→**R**. Меньшие значения функции соответствуют лучшим решениям. - * Определить механизм **скрещивания** для комбинирования двух генов, чтобы получить новое действительное решение crossover: Γ2→Γ. - * Определить механизм **мутации** mutate: Γ→Γ. +* Найти способ кодирования решений задачи с помощью **генов** g∈Γ +* На множестве генов Γ необходимо определить **функцию приспособленности** fit: Γ→**R**. Меньшие значения функции соответствуют лучшим решениям. +* Определить механизм **скрещивания**, чтобы объединять два гена и получать новое валидное решение crossover: Γ2→Γ. +* Определить механизм **мутации** mutate: Γ→Γ. -Во многих случаях, скрещивание и мутация являются достаточно простыми алгоритмами для манипуляции генами как числовыми последовательностями или битовыми векторами. +Во многих случаях скрещивание и мутация представляют собой достаточно простые алгоритмы для манипуляции генами как числовыми последовательностями или битовыми векторами. -Конкретная реализация генетического алгоритма может варьироваться от случая к случаю, но общая структура следующая: +Конкретная реализация генетического алгоритма может варьироваться в зависимости от задачи, но общая структура выглядит следующим образом: -1. Выберите начальную популяцию G⊂Γ -2. Случайным образом выберите одну из операций, которая будет выполнена на этом этапе: скрещивание или мутация +1. Выбрать начальную популяцию G⊂Γ +2. Случайным образом выбрать одну из операций, которая будет выполнена на этом шаге: скрещивание или мутация 3. **Скрещивание**: - * Случайным образом выберите два гена g1, g2 ∈ G - * Вычислите скрещивание g=crossover(g1,g2) - * Если fit(g)1) или fit(g)2) - замените соответствующий ген в популяции на g. -4. **Мутация** - выберите случайный ген g∈G и замените его на mutate(g) -5. Повторяйте с шага 2, пока не получите достаточно малое значение fit, или пока не будет достигнут лимит на количество шагов. + * Случайным образом выбрать два гена g1, g2 ∈ G + * Вычислить скрещивание g=crossover(g1,g2) + * Если fit(g)1) или fit(g)2) - заменить соответствующий ген в популяции на g. +4. **Мутация** - выбрать случайный ген g∈G и заменить его на mutate(g) +5. Повторять с шага 2, пока не будет достигнуто достаточно малое значение fit или пока не будет достигнут лимит на количество шагов. -## Типичные Задачи +## Типичные задачи -Задачи, которые обычно решаются с помощью Генетических Алгоритмов, включают: +Задачи, которые обычно решаются с помощью генетических алгоритмов: 1. Оптимизация расписания 1. Оптимальная упаковка -1. Оптимальное резание -1. Ускорение исчерпывающего поиска +1. Оптимальная нарезка +1. Ускорение полного перебора -## ✍️ Упражнения: Генетические Алгоритмы +## ✍️ Упражнения: Генетические алгоритмы -Продолжайте обучение в следующих ноутбуках: +Продолжите обучение в следующих ноутбуках: -Перейдите к [этому ноутбуку](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), чтобы увидеть два примера использования Генетических Алгоритмов: +Перейдите в [этот ноутбук](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), чтобы увидеть два примера использования генетических алгоритмов: -1. Справедливое деление сокровищ -1. Задача 8 ферзей +1. Справедливое разделение сокровищ +1. Задача о восьми ферзях ## Заключение -Генетические Алгоритмы используются для решения множества задач, включая логистику и задачи поиска. Эта область вдохновлена исследованиями, которые объединили темы в психологии и информатике. +Генетические алгоритмы используются для решения множества задач, включая логистику и задачи поиска. Эта область вдохновлена исследованиями, которые объединили темы психологии и компьютерных наук. ## 🚀 Задача -"Генетические алгоритмы просто реализовать, но их поведение трудно понять." [источник](https://wikipedia.org/wiki/Genetic_algorithm) Проведите исследование, чтобы найти реализацию генетического алгоритма, например, для решения головоломки Судоку, и объясните, как это работает в виде схемы или блок-схемы. +"Генетические алгоритмы просты в реализации, но их поведение сложно понять." [источник](https://wikipedia.org/wiki/Genetic_algorithm) Проведите исследование, чтобы найти реализацию генетического алгоритма, например, для решения головоломки Судоку, и объясните, как он работает, используя схему или блок-схему. -## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Посмотрите [это отличное видео](https://www.youtube.com/watch?v=qv6UVOQ0F44), в котором рассказывается о том, как компьютер может научиться играть в Super Mario с использованием нейронных сетей, обученных генетическими алгоритмами. Мы узнаем больше о том, как компьютер учится играть в такие игры [в следующем разделе](../22-DeepRL/README.md). +Посмотрите [это отличное видео](https://www.youtube.com/watch?v=qv6UVOQ0F44), в котором рассказывается, как компьютер может научиться играть в Super Mario, используя нейронные сети, обученные генетическими алгоритмами. Мы узнаем больше о том, как компьютеры учатся играть в такие игры [в следующем разделе](../22-DeepRL/README.md). -## [Задание: Диофантово Уравнение](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) +## [Задание: Диофантово уравнение](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Ваша цель - решить так называемое **диофантово уравнение** - уравнение с целыми корнями. Например, рассмотрите уравнение a+2b+3c+4d=30. Вам нужно найти целые корни, которые удовлетворяют этому уравнению. +Ваша цель - решить так называемое **Диофантово уравнение** - уравнение с целыми корнями. Например, рассмотрим уравнение a+2b+3c+4d=30. Вам нужно найти целые корни, которые удовлетворяют этому уравнению. -*Это задание вдохновлено [этим постом](https://habr.com/post/128704/).* +*Это задание вдохновлено [этой статьей](https://habr.com/post/128704/).* Подсказки: -1. Вы можете считать корни в интервале [0;30] -1. В качестве гена рассмотрите использование списка значений корней +1. Вы можете рассматривать корни в интервале [0;30] +1. В качестве гена можно использовать список значений корней -Используйте [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) в качестве отправной точки. +Используйте [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) как отправную точку. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/22-DeepRL/README.md b/translations/ru/lessons/6-Other/22-DeepRL/README.md index 453bc952..5d366618 100644 --- a/translations/ru/lessons/6-Other/22-DeepRL/README.md +++ b/translations/ru/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ -# Глубокое Обучение с Подкреплением + +# Глубокое обучение с подкреплением -Обучение с подкреплением (RL) считается одним из основных парадигм машинного обучения, наряду с обучением с учителем и без учителя. В то время как в обучении с учителем мы полагаемся на набор данных с известными результатами, RL основано на **обучении через действие**. Например, когда мы впервые видим компьютерную игру, мы начинаем играть, даже не зная правил, и вскоре можем улучшить свои навыки просто в процессе игры и корректируя свое поведение. +Обучение с подкреплением (Reinforcement Learning, RL) считается одной из основных парадигм машинного обучения наряду с обучением с учителем и без учителя. Если в обучении с учителем мы полагаемся на набор данных с известными результатами, то RL основано на **обучении через действия**. Например, когда мы впервые видим компьютерную игру, мы начинаем играть, даже не зная правил, и вскоре можем улучшить свои навыки просто в процессе игры и корректировки своего поведения. -## [Предлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) Для выполнения RL нам нужно: -* **Среда** или **симулятор**, который устанавливает правила игры. Мы должны иметь возможность проводить эксперименты в симуляторе и наблюдать за результатами. -* Некоторая **функция вознаграждения**, которая указывает, насколько успешным было наше эксперимент. В случае обучения игре в компьютерную игру, вознаграждение будет нашим итоговым счетом. +* **Среда** или **симулятор**, который задает правила игры. Мы должны иметь возможность проводить эксперименты в симуляторе и наблюдать результаты. +* Некоторая **функция вознаграждения**, которая указывает, насколько успешным был наш эксперимент. В случае обучения игре в компьютерную игру вознаграждением будет наш итоговый счет. -На основе функции вознаграждения мы должны быть в состоянии корректировать свое поведение и улучшать свои навыки, чтобы в следующий раз играть лучше. Основное отличие других типов машинного обучения от RL заключается в том, что в RL мы обычно не знаем, выиграли мы или проиграли, пока не закончим игру. Таким образом, мы не можем сказать, является ли определенный ход хорошим или нет — мы получаем вознаграждение только в конце игры. +На основе функции вознаграждения мы должны корректировать свое поведение и улучшать свои навыки, чтобы в следующий раз играть лучше. Основное отличие RL от других типов машинного обучения заключается в том, что в RL мы обычно не знаем, выиграем мы или проиграем, пока не закончим игру. Таким образом, мы не можем сказать, является ли определенный ход хорошим или плохим - мы получаем вознаграждение только в конце игры. -Во время RL мы обычно проводим много экспериментов. В каждом эксперименте нам нужно находить баланс между следованием оптимальной стратегии, которую мы узнали до сих пор (**эксплуатация**), и исследованием новых возможных состояний (**исследование**). +Во время RL мы обычно проводим множество экспериментов. В каждом эксперименте нам нужно находить баланс между следованием оптимальной стратегии, которую мы изучили до сих пор (**эксплуатация**), и исследованием новых возможных состояний (**исследование**). ## OpenAI Gym -Отличным инструментом для RL является [OpenAI Gym](https://gym.openai.com/) - **симуляционная среда**, которая может моделировать множество различных окружений, начиная от игр Atari и заканчивая физикой балансировки столба. Это одна из самых популярных симуляционных сред для обучения алгоритмов обучения с подкреплением и поддерживается [OpenAI](https://openai.com/). +Отличным инструментом для RL является [OpenAI Gym](https://gym.openai.com/) - это **среда симуляции**, которая может моделировать множество различных сред, начиная от игр Atari и заканчивая физикой балансировки шеста. Это одна из самых популярных сред для обучения алгоритмов обучения с подкреплением, поддерживаемая [OpenAI](https://openai.com/). > **Примечание**: Вы можете увидеть все доступные среды OpenAI Gym [здесь](https://gym.openai.com/envs/#classic_control). ## Балансировка CartPole -Вы, вероятно, все видели современные устройства для балансировки, такие как *Segway* или *Гироскутеры*. Они способны автоматически балансировать, регулируя свои колеса в ответ на сигнал от акселерометра или гироскопа. В этом разделе мы узнаем, как решить аналогичную задачу - балансировку столба. Это похоже на ситуацию, когда цирковой артист должен сбалансировать столб на своей руке - но эта балансировка столба происходит только в 1D. +Вы, вероятно, видели современные устройства для балансировки, такие как *Segway* или *гироскутеры*. Они автоматически балансируют, регулируя движение колес в ответ на сигналы от акселерометра или гироскопа. В этом разделе мы научимся решать похожую задачу - балансировку шеста. Это похоже на ситуацию, когда цирковой артист балансирует шест на руке, но в данном случае балансировка происходит только в одной плоскости. -Упрощенная версия балансировки известна как задача **CartPole**. В мире cartpole у нас есть горизонтальный слайдер, который может двигаться влево или вправо, и цель состоит в том, чтобы сбалансировать вертикальный столб на верхней части слайдера, пока он движется. +Упрощенная версия балансировки известна как задача **CartPole**. В мире CartPole у нас есть горизонтальная платформа, которая может двигаться влево или вправо, и цель - удерживать вертикальный шест на платформе, пока она движется. -a cartpole +cartpole -Чтобы создать и использовать эту среду, нам нужно несколько строк кода на Python: +Чтобы создать и использовать эту среду, нам нужно всего несколько строк кода на Python: ```python import gym @@ -45,73 +54,73 @@ while not done: print(f"Total reward: {total_reward}") ``` -Каждую среду можно получить точно так же: -* `env.reset` starts a new experiment -* `env.step` выполняет шаг симуляции. Он получает **действие** из **пространства действий** и возвращает **наблюдение** (из пространства наблюдений), а также вознаграждение и флаг завершения. +Каждая среда доступна одинаковым образом: +* `env.reset` начинает новый эксперимент. +* `env.step` выполняет шаг симуляции. Он принимает **действие** из **пространства действий** и возвращает **наблюдение** (из пространства наблюдений), а также вознаграждение и флаг завершения. -В приведенном выше примере мы выполняем случайное действие на каждом шаге, поэтому жизнь эксперимента очень коротка: +В приведенном выше примере на каждом шаге выполняется случайное действие, поэтому продолжительность эксперимента очень короткая: -![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) +![cartpole без балансировки](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -Цель алгоритма RL — обучить модель, так называемую **политику** π, которая будет возвращать действие в ответ на данное состояние. Мы также можем рассматривать политику как вероятностную, т.е. для любого состояния *s* и действия *a* она будет возвращать вероятность π(*a*|*s*), что мы должны предпринять *a* в состоянии *s*. +Цель алгоритма RL - обучить модель, так называемую **политику** π, которая будет возвращать действие в ответ на заданное состояние. Политику также можно считать вероятностной, например, для любого состояния *s* и действия *a* она будет возвращать вероятность π(*a*|*s*), что мы должны выполнить *a* в состоянии *s*. -## Алгоритм Градиентов Политики +## Алгоритм Policy Gradients -Самый очевидный способ моделировать политику — создать нейронную сеть, которая будет принимать состояния на вход и возвращать соответствующие действия (или, точнее, вероятности всех действий). В некотором смысле это будет похоже на обычную задачу классификации, с одной большой разницей — мы не знаем заранее, какие действия мы должны предпринять на каждом из шагов. +Самый очевидный способ моделирования политики - создание нейронной сети, которая будет принимать состояния на вход и возвращать соответствующие действия (или, скорее, вероятности всех действий). В некотором смысле это похоже на обычную задачу классификации, с одним важным отличием - мы заранее не знаем, какие действия нужно предпринимать на каждом шаге. -Идея заключается в том, чтобы оценить эти вероятности. Мы строим вектор **кумулятивных вознаграждений**, который показывает наше общее вознаграждение на каждом шаге эксперимента. Мы также применяем **дисконтирование вознаграждений**, умножая более ранние вознаграждения на некоторый коэффициент γ=0.99, чтобы уменьшить роль более ранних вознаграждений. Затем мы усиливаем те шаги вдоль пути эксперимента, которые приносят большие вознаграждения. +Идея заключается в оценке этих вероятностей. Мы строим вектор **накопленных вознаграждений**, который показывает наше общее вознаграждение на каждом шаге эксперимента. Мы также применяем **дисконтирование вознаграждений**, умножая более ранние вознаграждения на некоторый коэффициент γ=0.99, чтобы уменьшить их влияние. Затем мы усиливаем те шаги в эксперименте, которые приносят большее вознаграждение. -> Узнайте больше об алгоритме градиентов политики и посмотрите его в действии в [примерной записной книжке](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). +> Узнайте больше об алгоритме Policy Gradient и посмотрите его в действии в [примере блокнота](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). -## Алгоритм Актор-Критик +## Алгоритм Actor-Critic -Улучшенная версия подхода Градиентов Политики называется **Актор-Критик**. Основная идея заключается в том, что нейронная сеть будет обучена возвращать две вещи: +Улучшенная версия подхода Policy Gradients называется **Actor-Critic**. Основная идея заключается в том, что нейронная сеть будет обучена возвращать две вещи: -* Политику, которая определяет, какое действие предпринять. Эта часть называется **актор**. -* Оценку общего вознаграждения, которое мы можем ожидать получить в этом состоянии — эта часть называется **критик**. +* Политику, которая определяет, какое действие предпринять. Эта часть называется **actor**. +* Оценку общего вознаграждения, которое мы можем ожидать в данном состоянии - эта часть называется **critic**. -В некотором смысле эта архитектура напоминает [GAN](../../4-ComputerVision/10-GANs/README.md), где у нас есть две сети, которые обучаются друг против друга. В модели актор-критик актер предлагает действие, которое нам нужно предпринять, а критик пытается быть критичным и оценить результат. Однако наша цель — обучить эти сети в унисон. +В некотором смысле эта архитектура напоминает [GAN](../../4-ComputerVision/10-GANs/README.md), где у нас есть две сети, обучающиеся друг против друга. В модели actor-critic, actor предлагает действие, которое нужно предпринять, а critic пытается критически оценить результат. Однако наша цель - обучить эти сети совместно. -Поскольку мы знаем как реальные кумулятивные вознаграждения, так и результаты, возвращаемые критиком во время эксперимента, относительно легко построить функцию потерь, которая минимизирует разницу между ними. Это даст нам **потерю критика**. Мы можем вычислить **потерю актора**, используя тот же подход, что и в алгоритме градиентов политики. +Поскольку мы знаем как реальные накопленные вознаграждения, так и результаты, возвращаемые критиком во время эксперимента, довольно легко построить функцию потерь, которая минимизирует разницу между ними. Это даст нам **потери критика**. Мы можем вычислить **потери актера**, используя тот же подход, что и в алгоритме Policy Gradient. -После запуска одного из этих алгоритмов мы можем ожидать, что наш CartPole будет вести себя так: +После выполнения одного из этих алгоритмов мы можем ожидать, что наш CartPole будет вести себя следующим образом: -![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) +![балансирующий cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) -## ✍️ Упражнения: Градиенты Политики и RL Актор-Критик +## ✍️ Упражнения: Policy Gradients и Actor-Critic RL -Продолжайте обучение в следующих записных книжках: +Продолжите обучение в следующих блокнотах: * [RL в TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) * [RL в PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) -## Другие Задачи RL +## Другие задачи RL -Обучение с подкреплением в настоящее время является быстро развивающейся областью исследований. Некоторые интересные примеры обучения с подкреплением: +Обучение с подкреплением сегодня является быстро развивающейся областью исследований. Некоторые интересные примеры применения RL: -* Обучение компьютера играть в **игры Atari**. Сложной частью этой проблемы является то, что у нас нет простого состояния, представленное в виде вектора, а скорее скриншот — и нам нужно использовать CNN, чтобы преобразовать это изображение экрана в вектор признаков или извлечь информацию о вознаграждении. Игры Atari доступны в Gym. -* Обучение компьютера играть в настольные игры, такие как Шахматы и Го. Недавно программы, находящиеся на передовом уровне, такие как **Alpha Zero**, были обучены с нуля двумя агентами, играющими друг против друга и улучшающимися на каждом шаге. -* В промышленности RL используется для создания систем управления из симуляции. Сервис под названием [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) специально разработан для этого. +* Обучение компьютера играть в **игры Atari**. Сложность этой задачи заключается в том, что у нас нет простого состояния, представленного вектором, а есть скриншот - и нам нужно использовать CNN для преобразования изображения экрана в вектор признаков или извлечения информации о вознаграждении. Игры Atari доступны в Gym. +* Обучение компьютера играть в настольные игры, такие как шахматы и го. Недавно программы, такие как **Alpha Zero**, достигли передового уровня, обучаясь с нуля, когда два агента играют друг против друга и улучшаются на каждом шаге. +* В промышленности RL используется для создания систем управления на основе симуляции. Сервис [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) специально предназначен для этого. ## Заключение -Теперь мы узнали, как обучать агентов для достижения хороших результатов, просто предоставляя им функцию вознаграждения, которая определяет желаемое состояние игры, и давая им возможность разумно исследовать пространство поиска. Мы успешно протестировали два алгоритма и добились хорошего результата за относительно короткий период времени. Однако это всего лишь начало вашего пути в RL, и вам определенно стоит рассмотреть возможность прохождения отдельного курса, если вы хотите углубиться. +Теперь мы узнали, как обучать агентов достигать хороших результатов, просто предоставляя им функцию вознаграждения, которая определяет желаемое состояние игры, и давая им возможность разумно исследовать пространство поиска. Мы успешно попробовали два алгоритма и достигли хорошего результата за относительно короткий период времени. Однако это только начало вашего пути в RL, и вам определенно стоит рассмотреть возможность прохождения отдельного курса, если вы хотите углубиться в эту тему. -## 🚀 Вызов +## 🚀 Задание -Изучите приложения, перечисленные в разделе 'Другие Задачи RL', и постарайтесь реализовать одно из них! +Изучите приложения, перечисленные в разделе "Другие задачи RL", и попробуйте реализовать одно из них! -## [Постлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Узнайте больше о классическом обучении с подкреплением в нашем [Учебном плане по машинному обучению для начинающих](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). +Узнайте больше о классическом обучении с подкреплением в нашем [курсе "Машинное обучение для начинающих"](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). -Посмотрите [это замечательное видео](https://www.youtube.com/watch?v=qv6UVOQ0F44), в котором рассказывается о том, как компьютер может научиться играть в Super Mario. +Посмотрите [это отличное видео](https://www.youtube.com/watch?v=qv6UVOQ0F44) о том, как компьютер может научиться играть в Super Mario. -## Задание: [Обучите Гору](lab/README.md) +## Задание: [Обучите Mountain Car](lab/README.md) -Ваша цель в этом задании — обучить другую среду Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). +Ваша цель в этом задании - обучить другую среду Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md index fdfb3002..1a8917a8 100644 --- a/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,23 @@ -# Обучение Mountain Car для Побега + +## Окружение -Лабораторное задание из [Курса ИИ для Начинающих](https://github.com/microsoft/ai-for-beginners). +Окружение Mountain Car представляет собой автомобиль, застрявший в долине. Ваша цель — выбраться из долины и достичь флага. Действия, которые вы можете выполнять: ускорение влево, вправо или бездействие. Вы можете наблюдать положение автомобиля вдоль оси x и его скорость. -## Задача +## Начало работы с ноутбуком -Ваша цель - обучить RL-агента управлять [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) в среде OpenAI. Вы обучаетесь на данных до октября 2023 года. +Начните выполнение лабораторной работы, открыв [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) -## Среда +## Основная идея -Среда Mountain Car состоит из машины, застрявшей в долине. Ваша задача - выпрыгнуть из долины и достичь флага. Действия, которые вы можете выполнять, включают ускорение влево, вправо или ничего не делать. Вы можете наблюдать за положением машины по оси x и ее скоростью. - -## Начало работы с Ноутбуком - -Начните лабораторную работу, открыв [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) - -## Выводы - -Вы должны понять в ходе этой лабораторной работы, что адаптация RL-алгоритмов к новой среде часто достаточно проста, поскольку OpenAI Gym имеет одинаковый интерфейс для всех сред, и алгоритмы в целом не зависят от природы среды. Вы даже можете перестроить код на Python таким образом, чтобы передавать любую среду в RL-алгоритм в качестве параметра. +В ходе этой лабораторной работы вы должны понять, что адаптация алгоритмов RL к новому окружению часто оказывается довольно простой задачей, поскольку OpenAI Gym имеет одинаковый интерфейс для всех окружений, а сами алгоритмы не сильно зависят от природы окружения. Вы даже можете переструктурировать Python-код таким образом, чтобы передавать любое окружение в алгоритм RL в качестве параметра. **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md index 1bb627bb..15d5c267 100644 --- a/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ + # Мультиагентные системы -Одним из возможных способов достижения интеллекта является так называемый **эмерджентный** (или **синергетический**) подход, который основан на том факте, что комбинированное поведение многих относительно простых агентов может привести к более сложному (или интеллектуальному) поведению системы в целом. Теоретически это основано на принципах [Коллективного Интеллекта](https://en.wikipedia.org/wiki/Collective_intelligence), [Эмерджентизма](https://en.wikipedia.org/wiki/Global_brain) и [Эволюционной Кибернетики](https://en.wikipedia.org/wiki/Global_brain), которые утверждают, что системы более высокого уровня получают некую добавленную ценность, когда они правильно комбинируются из систем более низкого уровня (так называемый *принцип метасистемного перехода*). +Одним из возможных способов достижения интеллекта является так называемый **эмерджентный** (или **синергетический**) подход, который основан на том, что совокупное поведение множества относительно простых агентов может привести к более сложному (или интеллектуальному) поведению системы в целом. Теоретически это основано на принципах [Коллективного интеллекта](https://en.wikipedia.org/wiki/Collective_intelligence), [Эмерджентизма](https://en.wikipedia.org/wiki/Global_brain) и [Эволюционной кибернетики](https://en.wikipedia.org/wiki/Global_brain), которые утверждают, что системы более высокого уровня приобретают дополнительную ценность, если они правильно объединены из систем более низкого уровня (так называемый *принцип перехода к метасистеме*). -## [Предлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -Направление **Мультиагентных Систем** возникло в ИИ в 1990-х годах в ответ на рост Интернета и распределенных систем. Один из классических учебников по ИИ, [Искусственный Интеллект: Современный Подход](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), сосредоточен на взгляде на классический ИИ с точки зрения мультиагентных систем. +Направление **мультиагентных систем** появилось в области ИИ в 1990-х годах как ответ на рост Интернета и распределенных систем. Один из классических учебников по ИИ, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), рассматривает классический ИИ с точки зрения мультиагентных систем. -Центральным понятием мультиагентного подхода является **Агент** - это сущность, которая существует в некой **среде**, которую она может воспринимать и воздействовать на нее. Это очень широкое определение, и существует множество различных типов и классификаций агентов: +Центральным элементом мультиагентного подхода является понятие **агента** — сущности, которая существует в некоторой **среде**, которую она может воспринимать и на которую может воздействовать. Это очень широкое определение, и существует множество различных типов и классификаций агентов: -* По их способности рассуждать: +* По способности рассуждать: - **Реактивные** агенты обычно имеют простое поведение типа запрос-ответ - - **Делиберативные** агенты используют некоторый вид логического рассуждения и/или планирования -* По месту, где агент выполняет свой код: - - **Статические** агенты работают на выделенном сетевом узле - - **Мобильные** агенты могут перемещать свой код между сетевыми узлами -* По их поведению: - - **Пассивные агенты** не имеют конкретных целей. Такие агенты могут реагировать на внешние стимулы, но не будут инициировать никаких действий самостоятельно. - - **Активные агенты** имеют некоторые цели, которые они преследуют - - **Когнитивные агенты** предполагают сложное планирование и рассуждение + - **Делиберативные** агенты используют логическое рассуждение и/или возможности планирования +* По месту выполнения кода агента: + - **Статические** агенты работают на выделенном узле сети + - **Мобильные** агенты могут перемещать свой код между узлами сети +* По поведению: + - **Пассивные агенты** не имеют конкретных целей. Такие агенты могут реагировать на внешние стимулы, но не инициируют действия самостоятельно. + - **Активные агенты** имеют цели, которые они преследуют + - **Когнитивные агенты** включают сложное планирование и рассуждение -В настоящее время мультиагентные системы используются в ряде приложений: +Мультиагентные системы сегодня используются в ряде приложений: -* В играх многие неперсонажные персонажи используют некоторый вид ИИ и могут считаться интеллектуальными агентами -* В видеопроизводстве рендеринг сложных 3D-сцен с участием толп обычно выполняется с использованием мультиагентного моделирования -* В моделировании систем мультиагентный подход используется для симуляции поведения сложной модели. Например, мультиагентный подход был успешно использован для прогнозирования распространения заболевания COVID-19 по всему миру. Подобный подход может быть использован для моделирования движения в городе и анализа его реакции на изменения в правилах дорожного движения. +* В играх многие персонажи, не управляемые игроком, используют некоторую форму ИИ и могут считаться интеллектуальными агентами +* В видеопроизводстве рендеринг сложных 3D-сцен с участием толпы обычно выполняется с использованием мультиагентного моделирования +* В моделировании систем мультиагентный подход используется для симуляции поведения сложной модели. Например, мультиагентный подход успешно применялся для прогнозирования распространения COVID-19 по всему миру. Аналогичный подход можно использовать для моделирования городского трафика и анализа реакции на изменения правил дорожного движения. * В сложных автоматизированных системах каждое устройство может действовать как независимый агент, что делает всю систему менее монолитной и более устойчивой. -Мы не будем углубляться в изучение мультиагентных систем, но рассмотрим один пример **Мультиагентного Моделирования**. +Мы не будем углубляться в изучение мультиагентных систем, но рассмотрим один пример **мультиагентного моделирования**. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) - это среда мультиагентного моделирования, основанная на модифицированной версии языка программирования [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Этот язык был разработан для обучения детей концепциям программирования и позволяет контролировать агента, называемого **черепашкой**, который может двигаться, оставляя след. Это позволяет создавать сложные геометрические фигуры, что является очень наглядным способом понять поведение агента. +[NetLogo](https://ccl.northwestern.edu/netlogo/) — это среда для мультиагентного моделирования, основанная на модифицированной версии языка программирования [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Этот язык был разработан для обучения детей концепциям программирования и позволяет управлять агентом, называемым **черепашкой**, который может двигаться, оставляя след. Это позволяет создавать сложные геометрические фигуры, что является наглядным способом понять поведение агента. -В NetLogo мы можем создать много черепашек, используя команду `create-turtles`. Затем мы можем командовать всем черепашкам выполнять некоторые действия (в приведенном ниже примере - двигаться на 10 пунктов вперед): +В NetLogo мы можем создать множество черепашек с помощью команды `create-turtles`. Затем мы можем командовать всем черепашкам выполнять определенные действия (в примере ниже — двигаться вперед на 10 единиц): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Конечно, это неинтересно, когда все черепашки делают одно и то же, поэтому мы можем `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` - это название породы, и нам нужно указать как единственное, так и множественное число, потому что разные команды используют разные формы для ясности. +Конечно, неинтересно, когда все черепашки делают одно и то же, поэтому мы можем `ask` группы черепашек, например, тех, которые находятся вблизи определенной точки. Мы также можем создавать черепашек разных *пород* с помощью команды `breed [cats cat]`. Здесь `cat` — это название породы, и необходимо указать как единственное, так и множественное число, поскольку разные команды используют разные формы для ясности. -> ✅ Мы не будем углубляться в изучение самого языка NetLogo - вы можете посетить великолепный [Интерактивный Словарь NetLogo для Начинающих](https://ccl.northwestern.edu/netlogo/bind/), если хотите узнать больше. +> ✅ Мы не будем изучать язык NetLogo, но вы можете посетить замечательный ресурс [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/), если хотите узнать больше. Вы можете [скачать](https://ccl.northwestern.edu/netlogo/download.shtml) и установить NetLogo, чтобы попробовать его. -### Библиотека Моделей +### Библиотека моделей -Отличная вещь в NetLogo заключается в том, что она содержит библиотеку работающих моделей, которые вы можете попробовать. Перейдите в **Файл → Библиотека Моделей**, и у вас будет много категорий моделей на выбор. +Замечательной особенностью NetLogo является наличие библиотеки готовых моделей, которые можно попробовать. Перейдите в **File → Models Library**, и вы найдете множество категорий моделей на выбор. -Библиотека Моделей NetLogo +NetLogo Models Library -> Скриншот библиотеки моделей Дмитрия Сошникова +> Скриншот библиотеки моделей от Дмитрия Сошникова -Вы можете открыть одну из моделей, например **Биология → Стая**. +Вы можете открыть одну из моделей, например **Biology → Flocking**. -### Основные Принципы +### Основные принципы -После открытия модели вы попадаете на главный экран NetLogo. Вот пример модели, которая описывает популяцию волков и овец при有限ных ресурсах (травы). +После открытия модели вы попадете на главный экран NetLogo. Вот пример модели, описывающей популяцию волков и овец при ограниченных ресурсах (трава). -![Главный Экран NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ru.png) +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ru.png) -> Скриншот Дмитрия Сошникова +> Скриншот от Дмитрия Сошникова На этом экране вы можете увидеть: -* Раздел **Интерфейс**, который содержит: +* Раздел **Interface**, который содержит: - Основное поле, где живут все агенты - Различные элементы управления: кнопки, ползунки и т.д. - - Графики, которые вы можете использовать для отображения параметров симуляции -* Вкладку **Код**, которая содержит редактор, где вы можете вводить программу на NetLogo + - Графики, которые можно использовать для отображения параметров симуляции +* Вкладку **Code**, которая содержит редактор, где можно писать программу на NetLogo -В большинстве случаев интерфейс будет иметь кнопку **Настройка**, которая инициализирует состояние симуляции, и кнопку **Запуск**, которая начинает выполнение. Эти действия обрабатываются соответствующими обработчиками в коде, которые выглядят следующим образом: +В большинстве случаев интерфейс будет иметь кнопку **Setup**, которая инициализирует состояние симуляции, и кнопку **Go**, которая запускает выполнение. Эти кнопки обрабатываются соответствующими обработчиками в коде, которые выглядят так: ``` to go [ @@ -83,73 +92,73 @@ to go [ Мир NetLogo состоит из следующих объектов: -* **Агенты** (черепашки), которые могут двигаться по полю и что-то делать. Вы командуете агентами, используя `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches`, чтобы сделать что-то. -* **Наблюдатель** - это уникальный агент, который контролирует мир. Все обработчики кнопок выполняются в *режиме наблюдателя*. +* **Агенты** (черепашки), которые могут перемещаться по полю и выполнять действия. Вы управляете агентами с помощью синтаксиса `ask turtles [...]`, и код в скобках выполняется всеми агентами в *режиме черепашки*. +* **Патчи** — это квадратные области поля, на которых живут агенты. Вы можете ссылаться на всех агентов на одном патче или изменять цвета патчей и некоторые другие свойства. Вы также можете `ask patches` выполнять действия. +* **Наблюдатель** — уникальный агент, который управляет миром. Все обработчики кнопок выполняются в *режиме наблюдателя*. -> ✅ Прелесть мультиагентной среды в том, что код, который выполняется в режиме черепашки или в режиме патча, выполняется одновременно всеми агентами параллельно. Таким образом, написав немного кода и запрограммировав поведение отдельного агента, вы можете создать сложное поведение симуляционной системы в целом. +> ✅ Прелесть мультиагентной среды заключается в том, что код, выполняемый в режиме черепашки или патча, выполняется одновременно всеми агентами параллельно. Таким образом, написав немного кода и запрограммировав поведение отдельного агента, вы можете создать сложное поведение всей симуляционной системы. -### Стая +### Flocking -В качестве примера мультиагентного поведения давайте рассмотрим **[Стаю](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Стая - это сложный паттерн, который очень похож на то, как летают стаи птиц. Наблюдая за их полетом, можно подумать, что они следуют какому-то коллективному алгоритму или что они обладают какой-то формой *коллективного интеллекта*. Однако это сложное поведение возникает, когда каждый отдельный агент (в данном случае, *птица*) наблюдает только за некоторыми другими агентами на коротком расстоянии от себя и следует трем простым правилам: +В качестве примера мультиагентного поведения рассмотрим **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking — это сложный паттерн, очень похожий на то, как летают стаи птиц. Наблюдая за их полетом, можно подумать, что они следуют какому-то коллективному алгоритму или обладают формой *коллективного интеллекта*. Однако это сложное поведение возникает, когда каждый отдельный агент (в данном случае *птица*) наблюдает только за другими агентами на коротком расстоянии и следует трем простым правилам: -* **Выравнивание** - он движется в сторону среднего направления соседних агентов -* **Когезия** - он пытается двигаться к средней позиции соседей (*долгосрочное притяжение*) -* **Разделение** - когда он приближается слишком близко к другим птицам, он пытается отдалиться (*краткосрочное отталкивание*) +* **Выравнивание** — агент направляется к среднему направлению соседних агентов +* **Сцепление** — агент стремится к средней позиции соседей (*долгосрочное притяжение*) +* **Разделение** — при слишком близком приближении к другим птицам агент старается отдалиться (*краткосрочное отталкивание*) -Вы можете запустить пример стаи и наблюдать за поведением. Вы также можете регулировать параметры, такие как *степень разделения* или *дальность видимости*, которая определяет, как далеко каждая птица может видеть. Обратите внимание, что если вы уменьшите дальность видимости до 0, все птицы станут слепыми, и стая остановится. Если вы уменьшите разделение до 0, все птицы соберутся в прямую линию. +Вы можете запустить пример flocking и наблюдать за поведением. Вы также можете настроить параметры, такие как *степень разделения* или *радиус обзора*, который определяет, как далеко каждая птица может видеть. Обратите внимание, что если уменьшить радиус обзора до 0, все птицы становятся слепыми, и flocking прекращается. Если уменьшить разделение до 0, все птицы собираются в одну линию. -> ✅ Переключитесь на вкладку **Код** и посмотрите, где три правила стаи (выравнивание, когезия и разделение) реализованы в коде. Обратите внимание, как мы ссылаемся только на тех агентов, которые находятся в поле зрения. +> ✅ Переключитесь на вкладку **Code** и посмотрите, где три правила flocking (выравнивание, сцепление и разделение) реализованы в коде. Обратите внимание, как мы ссылаемся только на тех агентов, которые находятся в поле зрения. -### Другие Модели для Исследования +### Другие модели для изучения -Есть еще несколько интересных моделей, с которыми вы можете поэкспериментировать: +Есть еще несколько интересных моделей, которые вы можете попробовать: -* **Искусство → Фейерверки** показывает, как фейерверк может рассматриваться как коллективное поведение отдельных потоков огня -* **Социальные Науки → Основы Движения** и **Социальные Науки → Грид Движения** показывают модель городского движения в 1D и 2D сетке с или без светофоров. Каждая машина в симуляции следует следующим правилам: - - Если пространство перед ней пусто - ускориться (до определенной максимальной скорости) - - Если она видит препятствие впереди - тормозить (и вы можете настроить, как далеко водитель может видеть) -* **Социальные Науки → Вечеринка** показывает, как люди группируются во время коктейльной вечеринки. Вы можете найти комбинацию параметров, которая приводит к наиболее быстрому увеличению счастья группы. +* **Art → Fireworks** показывает, как фейерверк можно рассматривать как коллективное поведение отдельных потоков огня +* **Social Science → Traffic Basic** и **Social Science → Traffic Grid** демонстрируют модель городского трафика в 1D и 2D сетке с или без светофоров. Каждая машина в симуляции следует следующим правилам: + - Если пространство перед ней свободно — ускоряться (до определенной максимальной скорости) + - Если видит препятствие впереди — тормозить (и можно настроить, как далеко водитель может видеть) +* **Social Science → Party** показывает, как люди группируются на коктейльной вечеринке. Вы можете найти комбинацию параметров, которая приводит к самому быстрому увеличению счастья группы. -Как видно из этих примеров, мультиагентные симуляции могут быть довольно полезным способом понять поведение сложной системы, состоящей из индивидуумов, которые следуют той же или схожей логике. Это также может быть использовано для управления виртуальными агентами, такими как [NPC](https://en.wikipedia.org/wiki/NPC) в компьютерных играх или агентами в 3D-анимированных мирах. +Как видно из этих примеров, мультиагентные симуляции могут быть полезным способом понять поведение сложной системы, состоящей из индивидуумов, которые следуют одинаковой или схожей логике. Это также может быть использовано для управления виртуальными агентами, такими как [NPC](https://en.wikipedia.org/wiki/NPC) в компьютерных играх или агентами в 3D-анимированных мирах. -## Делиберативные Агенты +## Делиберативные агенты -Агенты, описанные выше, очень просты, реагируя на изменения в окружающей среде, используя какой-то алгоритм. Таким образом, они являются **реактивными агентами**. Однако иногда агенты могут рассуждать и планировать свои действия, в этом случае их называют **делиберативными**. +Описанные выше агенты очень просты, они реагируют на изменения в среде, используя некоторый алгоритм. Таким образом, они являются **реактивными агентами**. Однако иногда агенты могут рассуждать и планировать свои действия, в этом случае их называют **делиберативными**. -Типичный пример - это персональный агент, который получает инструкцию от человека забронировать отпуск. Предположим, что в Интернете есть много агентов, которые могут ему помочь. Тогда ему нужно связаться с другими агентами, чтобы узнать, какие рейсы доступны, каковы цены на отели в разные даты и попытаться договориться о лучшей цене. Когда план отпуска будет завершен и подтвержден владельцем, он сможет продолжить с бронированием. +Типичным примером может быть персональный агент, который получает от человека инструкцию забронировать тур. Предположим, что в интернете существует множество агентов, которые могут ему помочь. Он должен связаться с другими агентами, чтобы узнать, какие рейсы доступны, какие цены на отели для разных дат, и попытаться договориться о лучшей цене. Когда план тура будет завершен и подтвержден владельцем, агент может приступить к бронированию. -Для этого агентам нужно **общаться**. Для успешной коммуникации им необходимо: +Для этого агенты должны **общаться**. Для успешного общения им необходимо: -* Некоторые **стандартные языки для обмена знаниями**, такие как [Формат Обмена Знаниями](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) и [Язык Запросов и Манипуляций Знаниями](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Эти языки разработаны на основе [Теории Речевых Актов](https://en.wikipedia.org/wiki/Speech_act). -* Эти языки также должны включать некоторые **протоколы для переговоров**, основанные на различных **типах аукционов**. -* **Общая онтология**, чтобы использовать ее, чтобы они ссылались на одни и те же концепции, зная их семантику -* Способ **обнаружить**, что разные агенты могут делать, также основанный на какой-то онтологии +* Некоторые **стандартные языки для обмена знаниями**, такие как [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) и [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Эти языки разработаны на основе [теории речевых актов](https://en.wikipedia.org/wiki/Speech_act). +* Эти языки также должны включать **протоколы для переговоров**, основанные на различных **типах аукционов**. +* **Общая онтология**, чтобы агенты могли ссылаться на одни и те же концепции, понимая их семантику +* Способ **обнаружения**, что могут делать разные агенты, также основанный на некоторой онтологии -Делиберативные агенты гораздо сложнее, чем реактивные, потому что они не только реагируют на изменения в окружающей среде, но также должны быть в состоянии *инициировать* действия. Одна из предложенных архитектур для делиберативных агентов - это так называемый агент БДИ (Belief-Desire-Intention): +Делиберативные агенты гораздо сложнее реактивных, поскольку они не только реагируют на изменения в среде, но и должны уметь *инициировать* действия. Одной из предложенных архитектур для делиберативных агентов является так называемый агент "Верования-Желания-Намерения" (BDI): -* **Убеждения** формируют набор знаний об окружающей среде агента. Это может быть структурировано как база знаний или набор правил, которые агент может применять к конкретной ситуации в окружающей среде. -* **Желания** определяют, что агент хочет сделать, т.е. его цели. Например, цель вышеупомянутого персонального ассистента - забронировать тур, а цель агента отеля - максимизировать прибыль. -* **Намерения** - это конкретные действия, которые агент планирует для достижения своих целей. Действия обычно изменяют окружающую среду и вызывают коммуникацию с другими агентами. +* **Верования** формируют набор знаний об окружающей среде агента. Они могут быть структурированы как база знаний или набор правил, которые агент может применять к конкретной ситуации в среде. +* **Желания** определяют, чего агент хочет достичь, то есть его цели. Например, целью персонального помощника выше является бронирование тура, а целью агента отеля — максимизация прибыли. +* **Намерения** — это конкретные действия, которые агент планирует для достижения своих целей. Действия обычно изменяют среду и вызывают общение с другими агентами. -Существуют некоторые платформы для создания мультиагентных систем, такие как [JADE](https://jade.tilab.com/). [Этот документ](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) содержит обзор мультиагентных платформ, вместе с краткой историей мультиагентных систем и их различными сценариями использования. +Существуют платформы для создания мультиагентных систем, такие как [JADE](https://jade.tilab.com/). [Эта статья](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) содержит обзор мультиагентных платформ, а также краткую историю мультиагентных систем и их различных сценариев использования. ## Заключение -Мультиагентные системы могут принимать очень разные формы и использоваться во многих различных приложениях. -Все они, как правило, сосредоточены на более простом поведении отдельного агента и достигают более сложного поведения всей системы благодаря **синергетическому эффекту**. +Мультиагентные системы могут принимать самые разные формы и использоваться в самых разных приложениях. +Они все стремятся сосредоточиться на более простом поведении отдельного агента и достигать более сложного поведения всей системы благодаря **синергетическому эффекту**. -## 🚀 Вызов +## 🚀 Задание -Примените этот урок к реальному миру и попробуйте концептуализировать мультиагентную систему, которая может решить проблему. Что, например, должна делать мультиагентная система, чтобы оптимизировать маршрут школьного автобуса? Как она могла бы работать в пекарне? +Примените этот урок к реальному миру и попробуйте концептуализировать мультиагентную систему, которая может решить проблему. Что, например, должна делать мультиагентная система для оптимизации маршрута школьного автобуса? Как она могла бы работать в пекарне? -## [Постлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Изучите использование этого типа системы в промышленности. Выберите область, такую как производство или индустрия видеоигр, и узнайте, как мультиагентные системы могут быть использованы для решения уникальных проблем. +Изучите использование этого типа систем в промышленности. Выберите область, такую как производство или индустрия видеоигр, и узнайте, как мультиагентные системы могут быть использованы для решения уникальных задач. ## [Задание по NetLogo](assignment.md) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md index d97d4749..31e139b5 100644 --- a/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ + # Задание по NetLogo -Выберите одну из моделей в библиотеке NetLogo и используйте ее для симуляции реальной ситуации как можно ближе к действительности. Хорошим примером может быть модификация модели Virus из папки Альтернативные визуализации, чтобы показать, как ее можно использовать для моделирования распространения COVID-19. Можете ли вы создать модель, которая имитирует реальное вирусное распространение? +Возьмите одну из моделей из библиотеки NetLogo и используйте её для максимально точного моделирования реальной жизненной ситуации. Хорошим примером может быть изменение модели Virus из папки Alternative Visualizations, чтобы показать, как её можно использовать для моделирования распространения COVID-19. Сможете ли вы создать модель, которая имитирует реальное распространение вируса? -Покажите свою работу, сохранив копию и создав видео-демонстрацию, объясняющую, как модель связана с реальной ситуацией. +Продемонстрируйте свою работу, сохранив копию модели и создав видеодемонстрацию, объясняющую, как модель связана с реальной жизненной ситуацией. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/7-Ethics/README.md b/translations/ru/lessons/7-Ethics/README.md index 052effe8..aa960fa7 100644 --- a/translations/ru/lessons/7-Ethics/README.md +++ b/translations/ru/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ -# Этический и Ответственный ИИ + +# Этический и ответственный ИИ -Вы почти завершили этот курс, и я надеюсь, что к этому моменту вы четко понимаете, что ИИ основан на ряде формальных математических методов, которые позволяют нам находить взаимосвязи в данных и обучать модели для воспроизведения некоторых аспектов человеческого поведения. На данном этапе истории мы считаем ИИ очень мощным инструментом для извлечения паттернов из данных и применения этих паттернов для решения новых задач. +Вы почти завершили этот курс, и я надеюсь, что к настоящему моменту вы ясно понимаете, что ИИ основан на ряде формальных математических методов, которые позволяют находить взаимосвязи в данных и обучать модели для воспроизведения некоторых аспектов человеческого поведения. На данном этапе истории мы рассматриваем ИИ как очень мощный инструмент для извлечения закономерностей из данных и применения этих закономерностей для решения новых задач. -## [Предварительный тест](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) +## [Тест перед лекцией](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -Однако в научной фантастике мы часто видим истории, где ИИ представляет опасность для человечества. Обычно такие истории сосредоточены вокруг некого восстания ИИ, когда ИИ решает противостоять людям. Это подразумевает, что ИИ обладает неким чувством или может принимать решения, непредусмотренные его разработчиками. +Однако в научной фантастике мы часто видим истории, где ИИ представляет угрозу для человечества. Обычно такие истории сосредоточены вокруг какого-то восстания ИИ, когда он решает противостоять людям. Это подразумевает, что ИИ обладает какими-то эмоциями или может принимать решения, которые не были предусмотрены его разработчиками. -Тот ИИ, о котором мы узнали в этом курсе, не что иное, как большая матричная арифметика. Это очень мощный инструмент, который помогает нам решать наши проблемы, и, как и любой другой мощный инструмент, он может использоваться как для добрых, так и для злых целей. Важно отметить, что его можно *неправильно использовать*. +Тот тип ИИ, о котором мы узнали в этом курсе, — это не что иное, как сложные вычисления с матрицами. Это очень мощный инструмент, который помогает нам решать наши задачи, и, как любой другой мощный инструмент, он может быть использован как во благо, так и во вред. Важно отметить, что его можно *злоупотребить*. -## Принципы Ответственного ИИ +## Принципы ответственного ИИ -Чтобы избежать случайного или преднамеренного неправильного использования ИИ, Microsoft заявляет о важных [Принципах Ответственного ИИ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Следующие концепции лежат в основе этих принципов: +Чтобы избежать случайного или преднамеренного злоупотребления ИИ, Microsoft определяет важные [Принципы ответственного ИИ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Следующие концепции лежат в основе этих принципов: -* **Справедливость** связана с важной проблемой *предвзятости моделей*, которая может возникать из-за использования предвзятых данных для обучения. Например, когда мы пытаемся предсказать вероятность получения работы разработчика программного обеспечения для человека, модель, скорее всего, отдаст предпочтение мужчинам - просто потому, что обучающий набор данных, вероятно, был предвзят в пользу мужской аудитории. Нам нужно тщательно сбалансировать обучающие данные и исследовать модель, чтобы избежать предвзятости и убедиться, что модель учитывает более актуальные характеристики. -* **Надежность и Безопасность**. По своей природе модели ИИ могут ошибаться. Нейронная сеть возвращает вероятности, и мы должны учитывать это при принятии решений. У каждой модели есть определенная точность и полнота, и мы должны понимать это, чтобы предотвратить вред, который может причинить неправильный совет. -* **Конфиденциальность и Безопасность** имеют некоторые специфические для ИИ последствия. Например, когда мы используем некоторые данные для обучения модели, эти данные становятся как бы "интегрированными" в модель. С одной стороны, это повышает безопасность и конфиденциальность, с другой - нам нужно помнить, на каких данных была обучена модель. -* **Инклюзивность** означает, что мы не создаем ИИ для замены людей, а скорее для дополнения людей и повышения креативности нашей работы. Это также связано со справедливостью, потому что при работе с недопредставленными сообществами большинство собранных нами наборов данных, вероятно, будут предвзяты, и нам нужно убедиться, что эти сообщества включены и правильно обрабатываются ИИ. -* **Прозрачность**. Это включает в себя обеспечение того, чтобы мы всегда четко указывали на использование ИИ. Кроме того, где это возможно, мы хотим использовать ИИ-системы, которые являются *интерпретируемыми*. -* **Ответственность**. Когда модели ИИ принимают некоторые решения, не всегда ясно, кто за эти решения отвечает. Нам нужно убедиться, что мы понимаем, где лежит ответственность за решения ИИ. В большинстве случаев мы хотели бы включить людей в процесс принятия важных решений, чтобы фактические люди несли ответственность. +* **Справедливость** связана с важной проблемой *предвзятости моделей*, которая может возникнуть из-за использования предвзятых данных для обучения. Например, если мы пытаемся предсказать вероятность получения работы разработчика программного обеспечения для человека, модель, скорее всего, отдаст предпочтение мужчинам — просто потому, что обучающий набор данных, вероятно, был предвзят в сторону мужской аудитории. Нам нужно тщательно балансировать обучающие данные и исследовать модель, чтобы избежать предвзятости и убедиться, что модель учитывает более релевантные характеристики. +* **Надежность и безопасность**. По своей природе модели ИИ могут допускать ошибки. Нейронная сеть возвращает вероятности, и мы должны учитывать это при принятии решений. У каждой модели есть определенная точность и полнота, и мы должны понимать это, чтобы предотвратить вред, который может причинить неправильный совет. +* **Конфиденциальность и безопасность** имеют некоторые специфические аспекты, связанные с ИИ. Например, когда мы используем данные для обучения модели, эти данные каким-то образом становятся "интегрированными" в модель. С одной стороны, это повышает безопасность и конфиденциальность, с другой — мы должны помнить, какие данные использовались для обучения модели. +* **Инклюзивность** означает, что мы не создаем ИИ для замены людей, а скорее для их дополнения и повышения творческого потенциала. Это также связано со справедливостью, потому что при работе с недостаточно представленными сообществами большинство собираемых нами наборов данных, скорее всего, будут предвзяты, и мы должны убедиться, что эти сообщества включены и корректно обработаны ИИ. +* **Прозрачность**. Это включает в себя обеспечение того, чтобы мы всегда ясно давали понять, что используется ИИ. Также, где это возможно, мы хотим использовать системы ИИ, которые *интерпретируемы*. +* **Ответственность**. Когда модели ИИ принимают какие-то решения, не всегда ясно, кто несет ответственность за эти решения. Мы должны убедиться, что понимаем, где лежит ответственность за решения ИИ. В большинстве случаев мы хотели бы включить людей в процесс принятия важных решений, чтобы ответственность лежала на реальных людях. -## Инструменты для Ответственного ИИ +## Инструменты для ответственного ИИ -Microsoft разработала [Инструментарий Ответственного ИИ](https://github.com/microsoft/responsible-ai-toolbox), который содержит набор инструментов: +Microsoft разработала [Набор инструментов для ответственного ИИ](https://github.com/microsoft/responsible-ai-toolbox), который включает в себя набор инструментов: * Панель интерпретируемости (InterpretML) * Панель справедливости (FairLearn) * Панель анализа ошибок -* Панель Ответственного ИИ, которая включает в себя +* Панель ответственного ИИ, которая включает: - - EconML - инструмент для причинного анализа, который фокусируется на вопросах "что если" - - DiCE - инструмент для контрфактического анализа, который позволяет увидеть, какие характеристики необходимо изменить, чтобы повлиять на решение модели + - EconML — инструмент для причинного анализа, который фокусируется на вопросах "что если" + - DiCE — инструмент для контрфактического анализа, позволяющий увидеть, какие характеристики нужно изменить, чтобы повлиять на решение модели -Для получения дополнительной информации о Этическом ИИ, пожалуйста, посетите [этот урок](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) в Учебной программе по Машинному Обучению, которая включает задания. +Для получения дополнительной информации об этике ИИ, пожалуйста, посетите [этот урок](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) в учебной программе по машинному обучению, который включает задания. -## Обзор и Самостоятельное Изучение +## Обзор и самостоятельное изучение -Пройдите этот [Учебный путь](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), чтобы узнать больше о ответственном ИИ. +Пройдите этот [учебный путь](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), чтобы узнать больше об ответственном ИИ. -## [Пост-тест](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) +## [Тест после лекции](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/README.md b/translations/ru/lessons/README.md index cf0b1c1f..893279dc 100644 --- a/translations/ru/lessons/README.md +++ b/translations/ru/lessons/README.md @@ -1,8 +1,17 @@ + # Обзор ![Обзор в виде рисунка](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ru.png) -> Эскизнота от [Tomomi Imura](https://twitter.com/girlie_mac) +> Рисунок от [Tomomi Imura](https://twitter.com/girlie_mac) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/X-Extras/X1-MultiModal/README.md b/translations/ru/lessons/X-Extras/X1-MultiModal/README.md index 9e36111e..18771745 100644 --- a/translations/ru/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/ru/lessons/X-Extras/X1-MultiModal/README.md @@ -1,79 +1,88 @@ + # Мультимодальные сети -После успеха трансформерных моделей для решения задач обработки естественного языка (NLP), аналогичные архитектуры были применены к задачам компьютерного зрения. Возрастает интерес к созданию моделей, которые будут *объединять* возможности зрения и естественного языка. Одной из таких попыток является модель от OpenAI, названная CLIP и DALL.E. +После успеха трансформерных моделей в решении задач обработки естественного языка (NLP), те же или похожие архитектуры начали применяться к задачам компьютерного зрения. Растет интерес к созданию моделей, которые могли бы *объединять* возможности обработки изображений и естественного языка. Одной из таких попыток стала разработка OpenAI, известная как CLIP и DALL.E. -## Контрастная предобучение изображений (CLIP) +## Контрастное предварительное обучение изображений (CLIP) -Основная идея CLIP заключается в том, чтобы иметь возможность сравнивать текстовые подсказки с изображением и определять, насколько хорошо изображение соответствует подсказке. +Основная идея CLIP заключается в способности сравнивать текстовые запросы с изображением и определять, насколько хорошо изображение соответствует запросу. ![Архитектура CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ru.png) -> *Изображение из [этого блога](https://openai.com/blog/clip/)* +> *Изображение из [этой статьи](https://openai.com/blog/clip/)* -Модель обучается на изображениях, полученных из Интернета, и их подписях. Для каждой партии мы берем N пар (изображение, текст) и преобразуем их в некоторые векторные представления I и T. Эти представления затем сопоставляются друг с другом. Функция потерь определяется для максимизации косинусного сходства между векторами, соответствующими одной паре (например, I и T), и минимизации косинусного сходства между всеми другими парами. Именно поэтому этот подход называется **контрастным**. +Модель обучается на изображениях, полученных из Интернета, и их подписях. Для каждого батча мы берем N пар (изображение, текст) и преобразуем их в векторные представления I и T. Эти представления затем сопоставляются друг с другом. Функция потерь определена таким образом, чтобы максимизировать косинусное сходство между векторами, соответствующими одной паре (например, I и T), и минимизировать косинусное сходство между всеми остальными парами. Именно поэтому этот подход называется **контрастным**. -Модель/библиотека CLIP доступна на [GitHub OpenAI](https://github.com/openai/CLIP). Подход описан в [этом блоге](https://openai.com/blog/clip/), а более подробно в [этой статье](https://arxiv.org/pdf/2103.00020.pdf). +Модель/библиотека CLIP доступна на [GitHub OpenAI](https://github.com/openai/CLIP). Подход описан в [этой статье](https://openai.com/blog/clip/) и более подробно в [этой научной работе](https://arxiv.org/pdf/2103.00020.pdf). -После предобучения этой модели мы можем предоставить ей партию изображений и партию текстовых подсказок, и она вернет тензор с вероятностями. CLIP можно использовать для нескольких задач: +После предварительного обучения модели мы можем подать ей батч изображений и текстовых запросов, и она вернет тензор с вероятностями. CLIP можно использовать для нескольких задач: **Классификация изображений** -Предположим, нам нужно классифицировать изображения, например, между кошками, собаками и людьми. В этом случае мы можем предоставить модели изображение и серию текстовых подсказок: "*изображение кошки*", "*изображение собаки*", "*изображение человека*". В результирующем векторе из 3 вероятностей нам просто нужно выбрать индекс с наивысшим значением. +Предположим, нам нужно классифицировать изображения, например, на кошек, собак и людей. В этом случае мы можем подать модели изображение и серию текстовых запросов: "*изображение кошки*", "*изображение собаки*", "*изображение человека*". В полученном векторе из 3 вероятностей нам нужно просто выбрать индекс с наибольшим значением. ![CLIP для классификации изображений](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ru.png) -> *Изображение из [этого блога](https://openai.com/blog/clip/)* +> *Изображение из [этой статьи](https://openai.com/blog/clip/)* **Поиск изображений по тексту** -Мы также можем сделать наоборот. Если у нас есть коллекция изображений, мы можем передать эту коллекцию модели и текстовую подсказку - это даст нам изображение, которое наиболее похоже на данную подсказку. +Мы также можем сделать обратное. Если у нас есть коллекция изображений, мы можем передать эту коллекцию модели и текстовый запрос — это даст нам изображение, которое наиболее похоже на данный запрос. ## ✍️ Пример: [Использование CLIP для классификации изображений и поиска изображений](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) Откройте блокнот [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb), чтобы увидеть CLIP в действии. -## Генерация изображений с VQGAN+ CLIP +## Генерация изображений с помощью VQGAN+CLIP -CLIP также может быть использован для **генерации изображений** из текстовой подсказки. Для этого нам нужна **модель-генератор**, которая сможет генерировать изображения на основе некоторого векторного ввода. Одна из таких моделей называется [VQGAN](https://compvis.github.io/taming-transformers/) (векторно-квантованный GAN). +CLIP также можно использовать для **генерации изображений** на основе текстового запроса. Для этого нам нужна **генеративная модель**, которая сможет создавать изображения на основе некоторого входного вектора. Одной из таких моделей является [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). Основные идеи VQGAN, которые отличают его от обычного [GAN](../../4-ComputerVision/10-GANs/README.md), следующие: -* Использование авторегрессионной архитектуры трансформера для генерации последовательности визуальных частей, богатых контекстом, которые составляют изображение. Эти визуальные части, в свою очередь, обучаются с помощью [CNN](../../4-ComputerVision/07-ConvNets/README.md). -* Использование дискриминатора подизображений, который определяет, являются ли части изображения "реальными" или "фальшивыми" (в отличие от подхода "все или ничего" в традиционном GAN). +* Использование авторегрессионной трансформерной архитектуры для генерации последовательности контекстно-насыщенных визуальных частей, составляющих изображение. Эти визуальные части, в свою очередь, изучаются с помощью [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Использование дискриминатора подизображений, который определяет, являются ли части изображения "реальными" или "поддельными" (в отличие от подхода "все или ничего" в традиционных GAN). Узнайте больше о VQGAN на сайте [Taming Transformers](https://compvis.github.io/taming-transformers/). -Одно из важных отличий между VQGAN и традиционным GAN заключается в том, что последний может создавать приемлемое изображение из любого векторного ввода, в то время как VQGAN, скорее всего, создаст изображение, которое не будет согласованным. Таким образом, нам нужно дополнительно направлять процесс создания изображения, что можно сделать с помощью CLIP. +Одно из важных отличий VQGAN от традиционного GAN заключается в том, что последний может создавать приличное изображение из любого входного вектора, тогда как VQGAN, скорее всего, создаст несогласованное изображение. Поэтому процесс создания изображения необходимо дополнительно направлять, и это можно сделать с помощью CLIP. ![Архитектура VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ru.png) -Чтобы сгенерировать изображение, соответствующее текстовой подсказке, мы начинаем с некоторого случайного векторного кодирования, который проходит через VQGAN для получения изображения. Затем CLIP используется для создания функции потерь, которая показывает, насколько хорошо изображение соответствует текстовой подсказке. Цель состоит в том, чтобы минимизировать эту потерю, используя обратное распространение для корректировки параметров входного вектора. +Чтобы сгенерировать изображение, соответствующее текстовому запросу, мы начинаем с некоторого случайного вектора кодирования, который передается через VQGAN для создания изображения. Затем CLIP используется для создания функции потерь, которая показывает, насколько хорошо изображение соответствует текстовому запросу. Цель состоит в минимизации этой функции потерь с использованием обратного распространения для корректировки параметров входного вектора. -Отличная библиотека, реализующая VQGAN+CLIP, - это [Pixray](http://github.com/pixray/pixray). +Отличная библиотека, реализующая VQGAN+CLIP, — это [Pixray](http://github.com/pixray/pixray). ![Изображение, созданное Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ru.png) ----|----|---- -Изображение, сгенерированное по подсказке *портрет молодого мужчины-преподавателя литературы в акварельной технике с книгой* | Изображение, сгенерированное по подсказке *портрет молодой женщины-преподавателя информатики в масляной технике с компьютером* | Изображение, сгенерированное по подсказке *портрет пожилого мужчины-преподавателя математики перед доской* +Изображение, созданное по запросу *акварельный портрет молодого учителя литературы с книгой крупным планом* | Изображение, созданное по запросу *масляный портрет молодой учительницы информатики с компьютером крупным планом* | Изображение, созданное по запросу *масляный портрет пожилого учителя математики на фоне доски крупным планом* -> Изображения из коллекции **Искусственные Учителя** от [Дмитрия Сошникова](http://soshnikov.com) +> Изображения из коллекции **Искусственные учителя** от [Дмитрия Сошникова](http://soshnikov.com) ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E - это версия GPT-3, обученная генерировать изображения из подсказок. Она была обучена с использованием 12 миллиардов параметров. +DALL-E — это версия GPT-3, обученная для генерации изображений по текстовым запросам. Она была обучена с использованием 12 миллиардов параметров. -В отличие от CLIP, DALL-E получает как текст, так и изображение в виде единого потока токенов для изображений и текста. Таким образом, из нескольких подсказок вы можете генерировать изображения на основе текста. +В отличие от CLIP, DALL-E получает текст и изображение как единый поток токенов для обоих типов данных. Таким образом, из нескольких запросов можно генерировать изображения на основе текста. ### [DALL-E 2](https://openai.com/dall-e-2) -Основное отличие между DALL-E 1 и 2 заключается в том, что она генерирует более реалистичные изображения и искусство. +Основное отличие DALL-E 1 от DALL-E 2 заключается в том, что последняя генерирует более реалистичные изображения и произведения искусства. -Примеры генерации изображений с DALL-E: -![Изображение, созданное Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.ru.png) +Примеры генерации изображений с помощью DALL-E: +![Изображение, созданное DALL-E](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.ru.png) | ![Изображение, созданное DALL-E](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.ru.png) | ![Изображение, созданное DALL-E](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.ru.png) ----|----|---- -Изображение, сгенерированное по подсказке *портрет молодого мужчины-преподавателя литературы в акварельной технике с книгой* | Изображение, сгенерированное по подсказке *портрет молодой женщины-преподавателя информатики в масляной технике с компьютером* | Изображение, сгенерированное по подсказке *портрет пожилого мужчины-преподавателя математики перед доской* +Изображение, созданное по запросу *акварельный портрет молодого учителя литературы с книгой крупным планом* | Изображение, созданное по запросу *масляный портрет молодой учительницы информатики с компьютером крупным планом* | Изображение, созданное по запросу *масляный портрет пожилого учителя математики на фоне доски крупным планом* ## Ссылки -* Статья о VQGAN: [Укрощение трансформеров для синтеза изображений высокого разрешения](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* Статья о CLIP: [Обучение переносимых визуальных моделей с использованием естественного языка](https://arxiv.org/pdf/2103.00020.pdf) +* Статья о VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Статья о CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/sketchnotes/LICENSE.md b/translations/ru/lessons/sketchnotes/LICENSE.md index 0baec39f..87032cf3 100644 --- a/translations/ru/lessons/sketchnotes/LICENSE.md +++ b/translations/ru/lessons/sketchnotes/LICENSE.md @@ -1,141 +1,108 @@ -Attribution-ShareAlike 4.0 International + +Права, это не влияет на статус базы данных как Адаптированного Материала; и -======================================================================= + c. Вы должны соблюдать условия Раздела 3(a), если Вы делитесь содержимым базы данных, и Раздела 3(b), если Вы делитесь Адаптированным Материалом. -Корпорация Creative Commons ("Creative Commons") не является юридической фирмой и не предоставляет юридические услуги или консультации. Распространение публичных лицензий Creative Commons не создает адвокатско-клиентских или других отношений. Creative Commons предоставляет свои лицензии и сопутствующую информацию на основе "как есть". Creative Commons не дает никаких гарантий относительно своих лицензий, любых материалов, лицензированных на условиях этих лицензий, или любой сопутствующей информации. Creative Commons отказывается от всей ответственности за убытки, возникающие в результате их использования, в максимальной степени, разрешенной законом. +Раздел 5 -- Отказ от гарантий и ограничение ответственности. -Использование публичных лицензий Creative Commons + a. Если иное не предусмотрено в письменной форме, Лицензиар предоставляет Лицензированный Материал на условиях "как есть" и "как доступно", без каких-либо гарантий, явных или подразумеваемых, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели, отсутствия нарушений, а также любые гарантии, возникающие в ходе ведения дел или использования. -Публичные лицензии Creative Commons предоставляют стандартный набор условий, которые создатели и другие правообладатели могут использовать для распространения оригинальных произведений авторского права и других материалов, подпадающих под авторское право и определенные другие права, указанные в публичной лицензии ниже. Следующие соображения предназначены только для информационных целей, не являются исчерпывающими и не входят в состав наших лицензий. + b. В максимально возможной степени, разрешенной применимым законодательством, ни один Лицензиар не несет ответственности перед Вами за любые теории ответственности, включая прямую, косвенную, случайную, особую, штрафную или косвенную ответственность, связанные с этим Публичным Лицензионным соглашением или использованием Лицензированного Материала, даже если Лицензиар был предупрежден о возможности таких убытков. - Соображения для лицензирующих: Наши публичные лицензии предназначены для использования теми, кто уполномочен предоставлять общественности разрешение на использование материалов, в способах, которые иначе ограничены авторским правом и определенными другими правами. Наши лицензии являются безотзывными. Лицензирующие должны прочитать и понять условия лицензии, которую они выбирают, перед ее применением. Лицензирующие также должны обеспечить все необходимые права перед применением наших лицензий, чтобы общественность могла повторно использовать материал, как ожидается. Лицензирующие должны четко обозначить любые материалы, не подлежащие лицензии. Это включает другие материалы с лицензией CC или материалы, использованные в соответствии с исключением или ограничением авторского права. Более подробные соображения для лицензирующих: - wiki.creativecommons.org/Considerations_for_licensors +Раздел 6 -- Срок действия и прекращение. - Соображения для общественности: Используя одну из наших публичных лицензий, лицензирующий предоставляет общественности разрешение использовать лицензированный материал на указанных условиях. Если разрешение лицензирующего не требуется по какой-либо причине — например, из-за любого применимого исключения или ограничения авторского права — тогда это использование не регулируется лицензией. Наши лицензии предоставляют только разрешения в рамках авторского права и определенных других прав, которые лицензирующий имеет полномочия предоставлять. Использование лицензированного материала может быть по-прежнему ограничено по другим причинам, включая наличие у других авторского права или других прав на материал. Лицензирующий может делать специальные запросы, такие как просьба отметить или описать все изменения. Хотя это не требуется нашими лицензиями, вы поощряетесь уважать такие запросы, когда это разумно. Более подробные соображения для общественности: - wiki.creativecommons.org/Considerations_for_licensees + a. Этот Публичный Лицензионный договор действует на протяжении срока действия Авторских прав и Похожих прав, предоставленных в Разделе 2(a), если только он не будет прекращен, как указано ниже. -======================================================================= + b. Если Вы нарушаете условия этого Публичного Лицензионного договора, Ваши права по этому Публичному Лицензионному договору автоматически прекращаются. -Публичная лицензия Creative Commons Attribution-ShareAlike 4.0 International + c. Если Ваши права прекращаются в соответствии с Разделом 6(b), они восстанавливаются: -Упражняя Лицензированные Права (определенные ниже), вы принимаете и соглашаетесь соблюдать условия и положения этой Публичной лицензии Creative Commons Attribution-ShareAlike 4.0 International ("Публичная лицензия"). В той мере, в какой эта Публичная лицензия может быть интерпретирована как контракт, вам предоставляются Лицензированные Права в обмен на ваше принятие этих условий и положений, и Лицензирующий предоставляет вам такие права в обмен на выгоды, которые Лицензирующий получает от предоставления Лицензированного Материала на этих условиях. + 1. автоматически по умолчанию, если нарушение устраняется в течение 30 дней после его обнаружения; или -Раздел 1 -- Определения. + 2. по явному разрешению Лицензиара. - a. Адаптированный Материал означает материал, подпадающий под Авторское право и Похожие Права, который выведен из или основан на Лицензированном Материале и в котором Лицензированный Материал переведен, изменен, организован, преобразован или иным образом модифицирован таким образом, что требуется разрешение в соответствии с Авторским правом и Похожими Правами, принадлежащими Лицензирующему. В целях этой Публичной лицензии, когда Лицензированный Материал является музыкальным произведением, выступлением или звуковой записью, Адаптированный Материал всегда создается, когда Лицензированный Материал синхронизирован во времени с движущимся изображением. + Для ясности, этот Раздел 6(c) не влияет на любые права, предоставленные в соответствии с применимыми исключениями и ограничениями авторских прав и Похожих прав. - b. Лицензия Адаптера означает лицензию, которую вы применяете к своим Авторским правам и Похожим Правам в ваших вкладах в Адаптированный Материал в соответствии с условиями этой Публичной лицензии. + d. Прекращение этого Публичного Лицензионного договора не прекращает действия следующих положений: Разделы 1, 5, 6, 7 и 8. - c. Совместимая лицензия BY-SA означает лицензию, указанную на creativecommons.org/compatiblelicenses, одобренную Creative Commons как по существу эквивалентную этой Публичной лицензии. +Раздел 7 -- Прочие условия. - d. Авторское право и Похожие Права означают авторское право и/или аналогичные права, тесно связанные с авторским правом, включая, без ограничения, исполнение, трансляцию, звуковую запись и Права Базы Данных Sui Generis, независимо от того, как права маркируются или классифицируются. В целях этой Публичной лицензии права, указанные в Разделе 2(b)(1)-(2), не являются Авторским правом и Похожими Правами. + a. Если какие-либо условия этого Публичного Лицензионного договора считаются неприменимыми, они автоматически корректируются в минимальной степени, необходимой для их применения. Если условие не может быть исправлено, оно удаляется из этого Публичного Лицензионного договора без влияния на применимость остальных условий. - e. Эффективные Технологические Меры означают те меры, которые, при отсутствии надлежащей власти, не могут быть обойдены в соответствии с законами, выполняющими обязательства по Статье 11 Договора ВОИС по авторскому праву, принятого 20 декабря 1996 года, и/или аналогичными международными соглашениями. + b. Ни одно из условий этого Публичного Лицензионного договора не отменяет, не ограничивает иным образом и не заменяет обязательства, возникающие в соответствии с любыми другими применимыми законами. - f. Исключения и Ограничения означают добросовестное использование, добросовестное обращение и/или любое другое исключение или ограничение авторского права и Похожих Прав, которые применяются к вашему использованию Лицензированного Материала. + c. Ни одно из условий этого Публичного Лицензионного договора не является отказом от каких-либо привилегий или иммунитетов, предоставленных Лицензиару или Вам, включая те, которые признаны международным правом. - g. Элементы Лицензии означают атрибуты лицензии, указанные в названии Публичной лицензии Creative Commons. Элементы Лицензии этой Публичной лицензии - это Упоминание и ShareAlike. + d. Этот Публичный Лицензионный договор не создает и не должен толковаться как создающий агентские, партнерские или совместные отношения. - h. Лицензированный Материал означает художественное или литературное произведение, базу данных или другой материал, к которому Лицензирующий применил эту Публичную лицензию. +Раздел 8 -- Толкование. - i. Лицензированные Права означают права, предоставленные вам в соответствии с условиями этой Публичной лицензии, которые ограничены всеми Авторскими правами и Похожими Правами, которые применяются к вашему использованию Лицензированного Материала и которые Лицензирующий имеет полномочия лицензировать. + a. За исключением случаев, когда иное указано здесь, термины, написанные с заглавной буквы, имеют значения, указанные в этом Публичном Лицензионном договоре. - j. Лицензирующий означает индивидуумов или юридических лиц, предоставляющих права в соответствии с этой Публичной лицензией. + b. Этот Публичный Лицензионный договор интерпретируется в соответствии с его текстом и контекстом. - k. Делиться означает предоставлять материал общественности любым способом или процессом, который требует разрешения в соответствии с Лицензированными Правами, таким как воспроизведение, публичное отображение, публичное исполнение, распределение, распространение, коммуникация или импорт, и делать материал доступным для общественности, включая способы, которыми члены общественности могут получить доступ к материалу из места и в время, выбранные ими индивидуально. + c. Ни одно из условий этого Публичного Лицензионного договора не ограничивает и не отменяет исключения и ограничения авторских прав и Похожих прав, которые могут применяться к Вашему использованию Лицензированного Материала. - l. Права Базы Данных Sui Generis означают права, отличные от авторского права, возникающие в результате Директивы 96/9/EC Европейского парламента и Совета от 11 марта 1996 года о правовой защите баз данных, с поправками и/или преемственностью, а также другие по существу эквивалентные права в любой точке мира. + d. Этот Публичный Лицензионный договор не должен толковаться как ограничивающий права, которые могут быть предоставлены Вам в соответствии с применимым законодательством. +Права, затем база данных, в которой у вас есть права sui generis на базу данных (но не на ее отдельные элементы), считается адаптированным материалом, - m. Вы означаете индивидуум или юридическое лицо, осуществляющее Лицензированные Права в соответствии с этой Публичной лицензией. Ваш имеет соответствующее значение. +включая для целей Раздела 3(b); и +c. Вы должны соблюдать условия, указанные в Разделе 3(a), если вы делитесь всей или значительной частью содержимого базы данных. -Раздел 2 -- Объем. +Для избежания сомнений, этот Раздел 4 дополняет, но не заменяет ваши обязательства по настоящей Публичной лицензии, если лицензированные права включают другие авторские права и аналогичные права. - a. Предоставление лицензии. +### Раздел 5 — Отказ от гарантий и ограничение ответственности - 1. При соблюдении условий этой Публичной лицензии Лицензирующий настоящим предоставляет вам всемирную, безвозмездную, непередаваемую, неисключительную, безотзывную лицензию на осуществление Лицензированных Прав в Лицензированном Материале, чтобы: +a. ЕСЛИ ИНОЕ НЕ ПРЕДУСМОТРЕНО ЛИЦЕНЗИАРОМ ОТДЕЛЬНО, В МАКСИМАЛЬНО ВОЗМОЖНОЙ СТЕПЕНИ ЛИЦЕНЗИАР ПРЕДОСТАВЛЯЕТ ЛИЦЕНЗИРОВАННЫЙ МАТЕРИАЛ «КАК ЕСТЬ» И «КАК ДОСТУПНО», И НЕ ДАЕТ НИКАКИХ ЗАЯВЛЕНИЙ ИЛИ ГАРАНТИЙ ЛЮБОГО РОДА ОТНОСИТЕЛЬНО ЛИЦЕНЗИРОВАННОГО МАТЕРИАЛА, ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ, ЗАКОНОДАТЕЛЬНЫХ ИЛИ ИНЫХ. ЭТО ВКЛЮЧАЕТ, НО НЕ ОГРАНИЧИВАЕТСЯ, ГАРАНТИИ ПРАВА СОБСТВЕННОСТИ, ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОТСУТСТВИЯ НАРУШЕНИЙ, ОТСУТСТВИЯ СКРЫТЫХ ИЛИ ИНЫХ ДЕФЕКТОВ, ТОЧНОСТИ ИЛИ НАЛИЧИЯ ИЛИ ОТСУТСТВИЯ ОШИБОК, НЕЗАВИСИМО ОТ ТОГО, ИЗВЕСТНЫ ОНИ ИЛИ МОГУТ БЫТЬ ОБНАРУЖЕНЫ. ЕСЛИ ОТКАЗ ОТ ГАРАНТИЙ НЕ РАЗРЕШЕН ПОЛНОСТЬЮ ИЛИ ЧАСТИЧНО, ЭТОТ ОТКАЗ МОЖЕТ НЕ ПРИМЕНЯТЬСЯ К ВАМ. - a. воспроизводить и Делиться Лицензированным Материалом, полностью или частично; и +b. В МАКСИМАЛЬНО ВОЗМОЖНОЙ СТЕПЕНИ ЛИЦЕНЗИАР НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ПЕРЕД ВАМИ ПО ЛЮБОЙ ЮРИДИЧЕСКОЙ ТЕОРИИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, НЕБРЕЖНОСТЬ) ИЛИ ИНЫМ ОБРАЗОМ ЗА ЛЮБЫЕ ПРЯМЫЕ, ОСОБЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ПОСЛЕДУЮЩИЕ, ШТРАФНЫЕ, ПРИМЕРНЫЕ ИЛИ ИНЫЕ УБЫТКИ, ЗАТРАТЫ, РАСХОДЫ ИЛИ УЩЕРБ, ВОЗНИКАЮЩИЕ В СВЯЗИ С НАСТОЯЩЕЙ ПУБЛИЧНОЙ ЛИЦЕНЗИЕЙ ИЛИ ИСПОЛЬЗОВАНИЕМ ЛИЦЕНЗИРОВАННОГО МАТЕРИАЛА, ДАЖЕ ЕСЛИ ЛИЦЕНЗИАР БЫЛ УВЕДОМЛЕН О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ, ЗАТРАТ, РАСХОДОВ ИЛИ УЩЕРБА. ЕСЛИ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ НЕ РАЗРЕШЕНО ПОЛНОСТЬЮ ИЛИ ЧАСТИЧНО, ЭТО ОГРАНИЧЕНИЕ МОЖЕТ НЕ ПРИМЕНЯТЬСЯ К ВАМ. - b. производить, воспроизводить и Делиться Адаптированным Материалом. +c. Отказ от гарантий и ограничение ответственности, указанные выше, должны интерпретироваться таким образом, чтобы, в максимальной степени, наиболее точно соответствовать абсолютному отказу и отказу от любой ответственности. - 2. Исключения и Ограничения. Для устранения сомнений, если Исключения и Ограничения применяются к вашему использованию, эта Публичная лицензия не применяется, и вам не нужно соблюдать ее условия. +### Раздел 6 — Срок действия и прекращение - 3. Срок. Срок действия этой Публичной лицензии указан в Разделе 6(a). +a. Настоящая Публичная лицензия действует в течение срока действия авторских прав и аналогичных прав, лицензированных здесь. Однако, если вы не соблюдаете условия настоящей Публичной лицензии, ваши права по ней автоматически прекращаются. - 4. Средства и форматы; разрешенные технические изменения. Лицензирующий разрешает вам осуществлять Лицензированные Права во всех средствах и форматах, известных на данный момент или созданных в будущем, и вносить необходимые технические изменения для этого. Лицензирующий отказывается от и/или соглашается не утверждать никакое право или полномочие запрещать вам вносить технические изменения, необходимые для осуществления Лицензированных Прав, включая технические изменения, необходимые для обхода Эффективных Технологических Мер. В целях этой Публичной лицензии простое внесение изменений, разрешенных этим Разделом 2(a)(4), никогда не создает Адаптированный Материал. +b. Если ваше право на использование Лицензированного материала было прекращено в соответствии с Разделом 6(a), оно восстанавливается: - 5. Получатели вниз по течению. +1. автоматически с даты устранения нарушения, при условии, что оно устранено в течение 30 дней с момента обнаружения вами нарушения; или +2. по явному восстановлению Лицензиаром. - a. Предложение от Лицензирующего -- Лицензированный Материал. Каждый получатель Лицензированного Материала автоматически получает предложение от Лицензирующего осуществить Лицензированные Права на условиях этой Публичной лицензии. +Для избежания сомнений, этот Раздел 6(b) не влияет на право Лицензиара искать средства правовой защиты за ваши нарушения настоящей Публичной лицензии. - b. Дополнительное предложение от Лицензирующего -- Адаптированный Материал. Каждый получатель Адаптированного Материала от вас автоматически получает предложение от Лицензирующего осуществить Лицензированные Права в Адаптированном Материале на условиях Лицензии Адаптера, которую вы применяете. +c. Для избежания сомнений, Лицензиар также может предлагать Лицензированный материал на других условиях или прекратить его распространение в любое время; однако это не прекращает действие настоящей Публичной лицензии. - c. Без ограничений для получателей вниз по течению. Вы не можете предлагать или накладывать какие-либо дополнительные или иные условия на Лицензированный Материал или применять какие-либо Эффективные Технологические Меры к Лицензированному Материалу, если это ограничивает осуществление Лицензированных Прав любым получателем Лицензированного Материала. +d. Разделы 1, 5, 6, 7 и 8 остаются в силе после прекращения действия настоящей Публичной лицензии. - 6. Без одобрения. Ничто в этой Публичной лицензии не представляет собой и не может быть истолковано как разрешение утверждать или подразумевать, что вы являетесь, или что ваше использование Лицензированного Материала связано с, или спонсируется, поддерживается или получает официальный статус от Лицензирующего или других лиц, назначенных для получения упоминания, как указано в Разделе 3(a)(1)(A)(i). +### Раздел 7 — Прочие условия - b. Другие права. +a. Лицензиар не связан никакими дополнительными или отличными условиями, переданными вами, если они не были явно согласованы. - 1. Моральные права, такие как право на целостность, не лицензированы в рамках этой Публичной лицензии, как и права на публичность, конфиденциальность и/или другие аналогичные личные права; однако, в той мере, в какой это возможно, Лицензирующий отказывается от и/или соглашается не утверждать любые такие права, принадлежащие Лицензирующему, в той ограниченной степени, которая необходима для того, чтобы вы могли осуществлять Лицензированные Права, но не в ином случае. +b. Любые договоренности, соглашения или договоры относительно Лицензированного материала, не указанные здесь, являются отдельными и независимыми от условий настоящей Публичной лицензии. - 2. Патентные и товарные знаки не лицензированы в рамках этой Публичной лицензии. +### Раздел 8 — Толкование - 3. В той мере, в какой это возможно, Лицензирующий отказывается от любого права на сбор роялти от вас за осуществление Лицензированных Прав, будь то напрямую или через коллективное общество в соответствии с любой добровольной или отменяемой законодательной или обязательной схемой лицензирования. Во всех других случаях Лицензирующий прямо оставляет за собой любое право на сбор таких роялти. +a. Для избежания сомнений, настоящая Публичная лицензия не ограничивает, не уменьшает, не накладывает условия или ограничения на любое использование Лицензированного материала, которое может быть законно осуществлено без разрешения в рамках настоящей Публичной лицензии. -Раздел 3 -- Условия Лицензии. +b. В максимально возможной степени, если какое-либо положение настоящей Публичной лицензии считается неисполнимым, оно автоматически реформируется до минимальной степени, необходимой для его исполнения. Если положение не может быть реформировано, оно отделяется от настоящей Публичной лицензии без ущерба для исполнимости оставшихся условий. -Ваше осуществление Лицензированных Прав явно подчиняется следующим условиям. +c. Ни одно условие настоящей Публичной лицензии не будет считаться отмененным, и ни одно несоблюдение не будет считаться согласованным, если это явно не согласовано Лицензиаром. - a. Упоминание. +d. Ничто в настоящей Публичной лицензии не ограничивает или не может быть истолковано как ограничение или отказ от любых привилегий и иммунитетов, которые применяются к Лицензиару или вам, включая защиту от юридических процессов любой юрисдикции или органа. - 1. Если вы Делитесь Лицензированным Материалом (включая в измененной форме), вы должны: +======================================================================= - a. сохранить следующее, если это предоставлено Лицензирующим с Лицензированным Материалом: +Creative Commons не является стороной своих публичных лицензий. Тем не менее, Creative Commons может выбрать применение одной из своих публичных лицензий к материалу, который оно публикует, и в этих случаях будет считаться «Лицензиаром». Текст публичных лицензий Creative Commons посвящен общественному достоянию в рамках CC0 Public Domain Dedication. За исключением ограниченной цели указания на то, что материал распространяется по публичной лицензии Creative Commons или иным образом разрешен политиками Creative Commons, опубликованными на сайте creativecommons.org/policies, Creative Commons не разрешает использование товарного знака «Creative Commons» или любого другого товарного знака или логотипа Creative Commons без предварительного письменного согласия, включая, но не ограничиваясь, в связи с любыми несанкционированными изменениями любых публичных лицензий или любых других договоренностей, соглашений или договоров относительно использования лицензированного материала. Для избежания сомнений, этот абзац не является частью публичных лицензий. - i. идентификация создателя(ей) Лицензированного Материала и любых других, назначенных для получения упоминания, любым разумным образом, запрашиваемым Лицензирующим (включая псевдоним, если назначен); - - ii. уведомление об авторском праве; - - iii. уведомление, ссылающееся на эту Публичную лицензию; - - iv. уведомление, ссылающееся на отказ от гарантий; - - v. URI или гиперссылка на Лицензированный Материал в той мере, в какой это разумно возможно; - - b. указать, если вы изменили Лицензированный Материал и сохранить указание на любые предыдущие изменения; и - - c. указать, что Лицензированный Материал лицензирован в соответствии с этой Публичной лицензией, и включить текст или URI или гиперссылку на эту Публичную лицензию. - - 2. Вы можете удовлетворить условия в Разделе 3(a)(1) любым разумным образом, основываясь на средстве, способе и контексте, в котором вы Делитесь Лицензированным Материалом. Например, может быть разумным удовлетворить условия, предоставив URI или гиперссылку на ресурс, который включает необходимую информацию. - - 3. Если это запрашивается Лицензирующим, вы должны удалить любую из информации, требуемой в Разделе 3(a)(1)(A), в той мере, в какой это разумно возможно. - - b. ShareAlike. - - В дополнение к условиям в Разделе 3(a), если вы Делитесь Адаптированным Материалом, который вы производите, следующие условия также применяются. - - 1. Лицензия Адаптера, которую вы применяете, должна быть лицензией Creative Commons с теми же Элементами Лицензии, этой версии или более поздней, или Совместимой лицензией BY-SA. - - 2. Вы должны включить текст или URI или гиперссылку на Лицензию Адаптера, которую вы применяете. Вы можете удовлетворить это условие любым разумным образом, основываясь на средстве, способе и контексте, в котором вы Делитесь Адаптированным Материалом. - - 3. Вы не можете предлагать или накладывать какие-либо дополнительные или иные условия на Адаптированный Материал, или применять какие-либо Эффективные Технологические Меры к Адаптированному Материалу, которые ограничивают осуществление прав, предоставленных в соответствии с Лицензией Адаптера, которую вы применяете. - -Раздел 4 -- Права Базы Данных Sui Generis. - -Когда Лицензированные Права включают Права Базы Данных Sui Generis, которые применяются к вашему использованию Лицензированного Материала: - - a. для устранения сомнений, Раздел 2(a)(1) предоставляет вам право извлекать, повторно использовать, воспроизводить и Делиться всем или значительной частью содержимого базы данных; - - b. если вы включаете все или значительную часть содержимого базы данных в базу данных, в которой у вас есть Права Базы Данных Sui Generis, то база данных, в которой у вас есть Права Базы Данных Sui Generis (но не ее отдельное содержимое), является Адаптированным Материалом, - - включая для целей Раздела 3(b); и - c. вы должны соблюдать условия в Разделе 3(a), если вы Делитесь всем или значительной частью содержимого базы данных. - -Для устранения сомнений, этот Раздел 4 дополняет и не заменяет ваши обязательства в соответствии с этой Публичной лицензией, когда Лицензированные Права включают другие Авторские права и Похожие Права. - -Раздел 5 -- Отказ от гарантий и ограничение ответственности. - - a. ЕСЛИ ИНОЕ НЕ БУДЕТ ОТДЕЛЬНО ОБЕСПЕЧЕНО ЛИЦЕНЗИРУЮЩИМ, В МЕРЕ, В КОТОРОЙ ЭТО ВОЗМОЖНО, ЛИЦЕНЗИРУЮЩИЙ ПРЕДОСТАВЛЯЕТ ЛИЦЕНЗИРОВАННЫЙ МАТЕРИАЛ "КАК ЕСТЬ" И "КАК ДОСТУПНО", И НЕ ДАЕТ НИКАКИХ ЗАЯВЛЕНИЙ ИЛИ ГАРАНТИЙ ЛЮБОГО РОДА ОТНОСИТЕЛЬНО ЛИЦЕНЗИРОВАННОГО МАТЕРИАЛА, БУДЬ ТО ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ, ЗАКОННЫХ ИЛИ ДРУГИХ. ЭТО ВКЛЮЧАЕТ, БЕЗ ОГРАНИЧЕНИЙ, ГАРАНТИИ ПРАВА СОБСТВЕННОСТИ, ТОРГОВОЙ СПОСОБНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, НЕНАРУШЕНИЯ, ОТСУТСТВИЯ СКРЫТЫХ ИЛИ ДРУГИХ ДЕФЕКТОВ, ТОЧНОСТИ ИЛИ НАЛИЧИЯ ИЛИ ОТСУТСТВИЯ ОШИБОК, БУДЬ ТО ИЗВЕСТНЫХ ИЛИ ОБНАРУЖИВАЕМЫХ. ГДЕ ОТКАЗЫ ОТ ГАРАНТИЙ НЕ РАЗРЕШАЮТСЯ В ПОЛНОМ ОБЪЕМЕ ИЛИ ЧАСТИ, ЭТОТ ОТКАЗ МОЖЕТ НЕ ПРИМ +Creative Commons можно связаться через сайт creativecommons.org. **Отказ от ответственности**: -Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/ru/lessons/sketchnotes/README.md b/translations/ru/lessons/sketchnotes/README.md index 3e0ed3b1..344b593a 100644 --- a/translations/ru/lessons/sketchnotes/README.md +++ b/translations/ru/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -Все скетч-ноты учебной программы можно скачать здесь. + +Все скетчноуты учебной программы можно скачать здесь. -🎨 Создано: Томоми Имура (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) +🎨 Автор: Томоми Имура (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) **Отказ от ответственности**: -Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file +Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода. \ No newline at end of file diff --git a/translations/tr/README.md b/translations/tr/README.md index 6b07ac26..e2107165 100644 --- a/translations/tr/README.md +++ b/translations/tr/README.md @@ -1,125 +1,134 @@ -[![GitHub lisansı](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) -[![GitHub katkıda bulunanlar](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) -[![GitHub sorunlar](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) -[![GitHub çekme talepleri](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) -[![Çekme Talepleri Hoş Geldiniz](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub izleyicileri](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) -[![GitHub çatalları](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) -[![GitHub yıldızları](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) -[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) -# Başlangıç Seviyesi Yapay Zeka - Bir Müfredat +# Yeni Başlayanlar için Yapay Zeka - Bir Müfredat -|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| Yapay Zeka için Başlangıç - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| Yeni Başlayanlar için Yapay Zeka - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | -**Yapay Zeka** (AI) dünyasını 12 haftalık, 24 derslik müfredatımızla keşfedin! Uygulamalı dersler, sınavlar ve laboratuvarlar içerir. Müfredat, başlangıç seviyesindeki kullanıcılar için uygundur ve TensorFlow ile PyTorch gibi araçları ve AI'daki etik konularını kapsamaktadır. +**Yapay Zeka** (AI) dünyasını 12 haftalık, 24 derslik müfredatımızla keşfedin! Müfredat, pratik dersler, testler ve laboratuvar çalışmaları içerir. Yeni başlayanlar için uygundur ve TensorFlow, PyTorch gibi araçların yanı sıra yapay zekada etik konularını da kapsar. -## Ne öğreneceksiniz +## Neler Öğreneceksiniz -**[Kursun Zihin Haritası](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Kursun Zihin Haritası](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -Bu müfredatta şunları öğreneceksiniz: +Bu müfredatta şunları öğreneceksiniz: -* **Bilgi Temsili** ve akıl yürütme ile "eski güzel" sembolik yaklaşım da dahil olmak üzere, Yapay Zeka'ya farklı yaklaşımlar. -* Modern AI'nın temelini oluşturan **Sinir Ağları** ve **Derin Öğrenme**. Bu önemli konuların arkasındaki kavramları, en popüler iki çerçevede - [TensorFlow](http://Tensorflow.org) ve [PyTorch](http://pytorch.org) - kod ile açıklayacağız. -* Görüntü ve metin ile çalışmak için **Sinir Mimarileri**. Son modelleri ele alacağız, ancak en son teknolojilerde biraz eksik kalabiliriz. -* **Genetik Algoritmalar** ve **Çoklu Ajan Sistemleri** gibi daha az popüler AI yaklaşımları. +* **Bilgi Temsili** ve akıl yürütme gibi "eski usul" sembolik yaklaşımlar da dahil olmak üzere Yapay Zeka'ya farklı yaklaşımlar ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* Modern yapay zekanın temelinde yer alan **Sinir Ağları** ve **Derin Öğrenme**. Bu önemli konuların arkasındaki kavramları, en popüler iki çerçevede - [TensorFlow](http://Tensorflow.org) ve [PyTorch](http://pytorch.org) - kod kullanarak açıklayacağız. +* Görüntüler ve metinlerle çalışmak için **Sinir Mimarileri**. Güncel modelleri ele alacağız, ancak en son teknolojilerde biraz eksik kalabiliriz. +* **Genetik Algoritmalar** ve **Çoklu Ajan Sistemleri** gibi daha az popüler yapay zeka yaklaşımları. -Bu müfredatta ele almayacağımız konular: +Bu müfredatta ele almayacağımız konular: -> [Bu kurs için tüm ek kaynakları Microsoft Learn koleksiyonumuzda bulabilirsiniz](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Bu kurs için tüm ek kaynakları Microsoft Learn koleksiyonumuzda bulabilirsiniz](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* **İş Dünyasında AI Kullanımı** ile ilgili iş vakaları. Microsoft Learn'deki [İş Kullanıcıları için Yapay Zeka'ya Giriş](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolunu veya [AI İş Okulu](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)nu, [INSEAD](https://www.insead.edu/) ile işbirliği içinde geliştirilmiştir. -* **Klasik Makine Öğrenimi**, [Makine Öğrenimi için Başlangıç Müfredatımızda](http://github.com/Microsoft/ML-for-Beginners) iyi bir şekilde tanımlanmıştır. -* **[Bilişsel Hizmetler](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** kullanılarak oluşturulan pratik AI uygulamaları. Bunun için, Microsoft Learn modüllerine [görüş](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [doğal dil işleme](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI Hizmeti ile Üretken AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** ve diğerleri ile başlamanızı öneririz. -* Belirli ML **Bulut Çerçeveleri**, örneğin [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) veya [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). [Azure Machine Learning ile makine öğrenimi çözümleri oluşturma ve işletme](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) ve [Azure Databricks ile makine öğrenimi çözümleri oluşturma ve işletme](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) öğrenme yollarını göz önünde bulundurabilirsiniz. -* **Konuşma AI** ve **Sohbet Botları**. Ayrı bir [Konuşma AI çözümleri oluşturma](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolu mevcuttur ve daha fazla ayrıntı için [bu blog yazısına](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) da başvurabilirsiniz. -* Derin öğrenimin arkasındaki **Derin Matematik**. Bunun için, Ian Goodfellow, Yoshua Bengio ve Aaron Courville'in [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) kitabını öneririz, bu kitap ayrıca çevrimiçi olarak da mevcuttur: [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). +* **İş Dünyasında Yapay Zeka** kullanımına dair iş vakaları. Microsoft Learn'deki [İş kullanıcıları için yapay zekaya giriş](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolunu veya [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)'u inceleyebilirsiniz. +* **Klasik Makine Öğrenimi**, bu konu [Yeni Başlayanlar için Makine Öğrenimi Müfredatımızda](http://github.com/Microsoft/ML-for-Beginners) ayrıntılı olarak açıklanmıştır. +* **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** kullanılarak oluşturulan pratik yapay zeka uygulamaları. Bunun için, Microsoft Learn'deki [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natural language processing](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI Service ile Üretici Yapay Zeka](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** ve diğer modüllerle başlamanızı öneririz. +* [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) veya [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum) gibi belirli ML **Bulut Çerçeveleri**. [Azure Machine Learning ile makine öğrenimi çözümleri oluşturma ve işletme](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) ve [Azure Databricks ile makine öğrenimi çözümleri oluşturma ve işletme](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) öğrenme yollarını kullanmayı düşünebilirsiniz. +* **Konuşma Tabanlı Yapay Zeka** ve **Chat Botlar**. Bunun için ayrı bir [Konuşma tabanlı yapay zeka çözümleri oluşturma](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolu bulunmaktadır ve daha fazla ayrıntı için [bu blog yazısına](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) başvurabilirsiniz. +* Derin öğrenmenin arkasındaki **Derin Matematik**. Bunun için Ian Goodfellow, Yoshua Bengio ve Aaron Courville tarafından yazılmış [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) kitabını öneririz, kitap çevrimiçi olarak da mevcuttur: [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -_AI in the Cloud_ konularına nazik bir giriş için [Azure'da yapay zeka ile tanışma](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolunu almayı düşünebilirsiniz. +Bulut tabanlı yapay zeka konularına yumuşak bir giriş yapmak için [Azure'da yapay zeka ile tanışın](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolunu inceleyebilirsiniz. -# İçerik +# İçerik -| | Ders Linki | PyTorch/Keras/TensorFlow | Laboratuvar | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Kurs Ayarı](./lessons/0-course-setup/setup.md) | [Geliştirme Ortamınızı Ayarlayın](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Yapay Zekaya Giriş**](./lessons/1-Intro/README.md) | | | -| 01 | [Yapay Zekanın Tanıtımı ve Tarihi](./lessons/1-Intro/README.md) | - | - | -| II | **Sembolik AI** | -| 02 | [Bilgi Temsili ve Uzman Sistemler](./lessons/2-Symbolic/README.md) | [Uzman Sistemler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontoloji](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Kavram Grafiği](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Sinir Ağlarına Giriş**](./lessons/3-NeuralNetworks/README.md) ||| -| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratuvar](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | -| 04 | [Çok Katmanlı Perceptron ve Kendi Çerçevemizi Oluşturma](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratuvar](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | -| 05 | [Çerçevelere (PyTorch/TensorFlow) Giriş ve Aşırı Öğrenme](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratuvar](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | -| IV | [**Bilgisayarla Görme**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure'da Bilgisayarla Görmeyi Keşfedin](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Bilgisayarla Görmeye Giriş. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Konvolüsyonel Sinir Ağları](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Mimarileri](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Önceden Eğitilmiş Ağlar ve Transfer Öğrenme](./lessons/4-ComputerVision/08-TransferLearning/README.md) ve [Eğitim İpuçları](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | -| 09 | [Otomatik Kodlayıcılar ve VAE'ler](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | -| 10 | [Üretici Rekabetçi Ağlar & Sanatsal Stil Transferi](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | -| 11 | [Nesne Tespiti](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Anlamsal Segmentasyon. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | -| V | [**Doğal Dil İşleme**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azure'da Doğal Dil İşleme'yi Keşfedin](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| | Ders Bağlantısı | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Kurs Kurulumu](./lessons/0-course-setup/setup.md) | [Geliştirme Ortamınızı Kurun](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Yapay Zekaya Giriş**](./lessons/1-Intro/README.md) | | | +| 01 | [Yapay Zekaya Giriş ve Tarihçesi](./lessons/1-Intro/README.md) | - | - | +| II | **Sembolik Yapay Zeka** | +| 02 | [Bilgi Temsili ve Uzman Sistemler](./lessons/2-Symbolic/README.md) | [Uzman Sistemler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontoloji](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Kavram Grafiği](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Sinir Ağlarına Giriş**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Çok Katmanlı Perceptron ve Kendi Çerçevemizi Oluşturma](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Çerçevelere Giriş (PyTorch/TensorFlow) ve Aşırı Öğrenme](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Bilgisayarla Görü**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure'da Bilgisayarla Görü Keşfi](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Bilgisayarla Görüye Giriş. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolüsyonel Sinir Ağları](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Mimarileri](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Önceden Eğitilmiş Ağlar ve Transfer Öğrenimi](./lessons/4-ComputerVision/08-TransferLearning/README.md) ve [Eğitim İpuçları](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Otoenkoderler ve VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Üretici Çekişmeli Ağlar ve Sanatsal Stil Transferi](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Nesne Tespiti](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Semantik Segmentasyon. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**Doğal Dil İşleme**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azure'da Doğal Dil İşlemeyi Keşfedin](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| | 13 | [Metin Temsili. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | -| 14 | [Anlamsal kelime gömme yöntemleri. Word2Vec ve GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | -| 15 | [Dil Modelleme. Kendi gömmelerinizi eğitme](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratuvar](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 14 | [Semantik Kelime Gömüleri. Word2Vec ve GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Dil Modelleme. Kendi Gömülerinizi Eğitmek](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | | 16 | [Tekrarlayan Sinir Ağları](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | -| 17 | [Üretken Tekrarlayan Ağlar](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratuvar](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 17 | [Üretici Tekrarlayan Ağlar](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | | 18 | [Dönüştürücüler. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | -| 19 | [İsimlendirilmiş Varlık Tanıma](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratuvar](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [Büyük Dil Modelleri, İstek Programlama ve Az Sayıda Görev](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| 19 | [Adlandırılmış Varlık Tanıma](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Büyük Dil Modelleri, İpucu Programlama ve Az Örnekli Görevler](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | | VI | **Diğer AI Teknikleri** || | -| 21 | [Genetik Algoritmalar](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Not Defteri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [Derin Pekiştirmeli Öğrenme](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratuvar](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Çoklu Ajan Sistemleri](./lessons/6-Other/23-MultiagentSystems/README.md) | | | -| VII | **Yapay Zeka Etiği** | | | -| 24 | [Yapay Zeka Etiği ve Sorumlu Yapay Zeka](./lessons/7-Ethics/README.md) | [Microsoft Learn: Sorumlu Yapay Zeka İlkeleri](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | -| IX | **Ekstra** | | | -| 25 | [Çok Modlu Ağlar, CLIP ve VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Not Defteri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| 21 | [Genetik Algoritmalar](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Derin Pekiştirmeli Öğrenme](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Çoklu Aracılı Sistemler](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI Etiği** | | | +| 24 | [AI Etiği ve Sorumlu AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Sorumlu AI İlkeleri](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Ekstralar** | | | +| 25 | [Çok Modlu Ağlar, CLIP ve VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | -## Her ders şunları içerir +## Her ders şunları içerir: * Ön okuma materyali -* Çoğunlukla belirli çerçevelere (**PyTorch** veya **TensorFlow**) özgü çalıştırılabilir Jupyter Notları. Çalıştırılabilir not, konuyu anlamak için en az bir versiyonunu (ya PyTorch ya da TensorFlow) gözden geçirmeniz gereken birçok teorik materyal de içerir. -* Bazı konular için mevcut olan **Laboratuvarlar**, öğrendiğiniz materyali belirli bir probleme uygulama fırsatı sunar. +* Çalıştırılabilir Jupyter Notebooks, genellikle belirli bir çerçeveye (**PyTorch** veya **TensorFlow**) özgüdür. Çalıştırılabilir notebook ayrıca çok fazla teorik materyal içerir, bu yüzden konuyu anlamak için notebook'un en az bir versiyonunu (PyTorch veya TensorFlow) incelemeniz gerekir. +* **Lab'ler**, bazı konular için mevcuttur ve öğrendiğiniz materyali belirli bir probleme uygulama fırsatı sunar. * Bazı bölümler, ilgili konuları kapsayan [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) modüllerine bağlantılar içerir. ## Başlarken -- Geliştirme ortamınızı kurmanıza yardımcı olacak bir [kurulum dersi](./lessons/0-course-setup/setup.md) oluşturduk. - Eğitmenler için de bir [müfredat kurulum dersi](./lessons/0-course-setup/for-teachers.md) hazırladık! -- [VSCode veya Codepace'de kodu çalıştırma](./lessons/0-course-setup/how-to-run.md) hakkında bilgi. +- Geliştirme ortamınızı kurmanıza yardımcı olmak için bir [kurulum dersi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) oluşturduk. - Eğitmenler için, sizin için bir [müfredat kurulum dersi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) de oluşturduk! +- [Kodunuzu VSCode veya Codepace'de nasıl çalıştıracağınızı](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) öğrenin. Bu adımları izleyin: -Depoyu Forklayın: Bu sayfanın sağ üst köşesindeki "Fork" butonuna tıklayın. +Depoyu Çatallayın: Bu sayfanın sağ üst köşesindeki "Fork" düğmesine tıklayın. Depoyu Klonlayın: `git clone https://github.com/microsoft/AI-For-Beginners.git` -Sonra bu repo'yu daha sonra bulmanızı kolaylaştırmak için yıldızlayın (🌟). +Bu depoyu daha sonra kolayca bulmak için yıldız (🌟) eklemeyi unutmayın. -## Diğer Öğrenenlerle Tanışın +## Diğer Öğrencilerle Tanışın -Bu kursu alan diğer öğrenenlerle tanışmak ve ağ kurmak için [resmi AI Discord sunucumuza](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) katılın ve destek alın. +Bu kursu alan diğer öğrencilerle tanışmak ve ağ kurmak için [resmi AI Discord sunucumuza](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) katılın ve destek alın. -## Quizler +Ürün geri bildirimi veya inşa ederken sorularınız varsa [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum)'u ziyaret edin. -> **Quizler hakkında bir not**: Tüm quizler, quiz uygulamasının çalıştırılabileceği veya Azure'a dağıtılabileceği derslerden bağlantılar içeren quiz-app klasöründe bulunmaktadır; `quiz-app` klasöründeki talimatları izleyin. Yavaş yavaş yerelleştiriliyorlar. +## Quizler +> **Sınavlar hakkında bir not**: Tüm sınavlar etc\quiz-app içindeki Quiz-app klasöründe yer almaktadır. Derslerin içinden bağlantı verilmiştir. Sınav uygulaması yerel olarak çalıştırılabilir veya Azure'a dağıtılabilir; `quiz-app` klasöründeki talimatları takip edin. Sınavlar kademeli olarak yerelleştirilmektedir. +## Yardım Aranıyor -## Yardım İstiyoruz - -Önerileriniz var mı ya da yazım veya kod hataları mı buldunuz? Bir sorun açın veya bir çekme isteği oluşturun. +Önerileriniz var mı ya da yazım veya kod hataları mı buldunuz? Bir sorun oluşturun veya bir pull request gönderin. ## Özel Teşekkürler -* **✍️ Ana Yazar:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **✍️ Baş Yazar:** [Dmitry Soshnikov](http://soshnikov.com), PhD * **🔥 Editör:** [Jen Looper](https://twitter.com/jenlooper), PhD -* **🎨 Sketchnote illüstratörü:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **🎨 Sketchnote İllüstratörü:** [Tomomi Imura](https://twitter.com/girlie_mac) * **✅ Quiz Oluşturucu:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) * **🙏 Temel Katkıda Bulunanlar:** [Evgenii Pishchik](https://github.com/Pe4enIks) @@ -127,14 +136,20 @@ Bu kursu alan diğer öğrenenlerle tanışmak ve ağ kurmak için [resmi AI Dis Ekibimiz başka müfredatlar da üretiyor! Göz atın: -* [Yeni Başlayanlar için Veri Bilimi](https://aka.ms/ds4beginners) -* [**Versiyon 2.0** Yeni Başlayanlar için Üretken AI](https://aka.ms/genai-beginners) -* [**YENİ** Yeni Başlayanlar için Siber Güvenlik](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Yeni Başlayanlar için Web Geliştirme](https://aka.ms/webdev-beginners) -* [Yeni Başlayanlar için IoT](https://aka.ms/iot-beginners) -* [Yeni Başlayanlar için Makine Öğrenimi](https://aka.ms/ml4beginners) -* [Yeni Başlayanlar için XR Geliştirme](https://aka.ms/xr-dev-for-beginners) -* [Yapay Zeka Eşliğinde Programlama için GitHub Copilot'u Kullanma](https://aka.ms/GitHubCopilotAI) +- [Yeni Başlayanlar için Üretken Yapay Zeka](https://aka.ms/genai-beginners) +- [Yeni Başlayanlar için Üretken Yapay Zeka .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [JavaScript ile Üretken Yapay Zeka](https://github.com/microsoft/generative-ai-with-javascript) +- [Java ile Üretken Yapay Zeka](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [Yeni Başlayanlar için Yapay Zeka](https://aka.ms/ai-beginners) +- [Yeni Başlayanlar için Veri Bilimi](https://aka.ms/datascience-beginners) +- [Yeni Başlayanlar için Makine Öğrenimi](https://aka.ms/ml-beginners) +- [Yeni Başlayanlar için Siber Güvenlik](https://github.com/microsoft/Security-101) +- [Yeni Başlayanlar için Web Geliştirme](https://aka.ms/webdev-beginners) +- [Yeni Başlayanlar için IoT](https://aka.ms/iot-beginners) +- [Yeni Başlayanlar için XR Geliştirme](https://github.com/microsoft/xr-development-for-beginners) +- [Agentic Kullanım için GitHub Copilot'u Ustalaştırma](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [C#/.NET Geliştiricileri için GitHub Copilot'u Ustalaştırma](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Kendi Copilot Maceranızı Seçin](https://github.com/microsoft/CopilotAdventures) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde kesin kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/SECURITY.md b/translations/tr/SECURITY.md index 8524a350..f5135bac 100644 --- a/translations/tr/SECURITY.md +++ b/translations/tr/SECURITY.md @@ -1,32 +1,41 @@ + ## Güvenlik -Microsoft, yazılım ürünlerimizin ve hizmetlerimizin güvenliğini ciddiye alır. Bu, [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) ve [GitHub organizasyonlarımız](https://opensource.microsoft.com/) dahil olmak üzere yönetilen tüm kaynak kodu depolarını kapsar. +Microsoft, yazılım ürünlerimizin ve hizmetlerimizin güvenliğini ciddiye alır. Bu, [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) ve [diğer GitHub organizasyonlarımız](https://opensource.microsoft.com/) gibi GitHub organizasyonlarımız aracılığıyla yönetilen tüm kaynak kodu depolarını da kapsar. -Microsoft'a ait herhangi bir depoda [Microsoft'un güvenlik açığı tanımına](https://aka.ms/opensource/security/definition) uyan bir güvenlik açığı bulduğunuzu düşünüyorsanız, lütfen aşağıda açıklandığı gibi bize bildirin. +Eğer [Microsoft'un güvenlik açığı tanımına](https://aka.ms/opensource/security/definition) uyan, Microsoft'a ait herhangi bir depoda bir güvenlik açığı bulduğunuza inanıyorsanız, lütfen aşağıda açıklandığı şekilde bunu bize bildirin. ## Güvenlik Sorunlarını Bildirme -**Lütfen güvenlik açıklarını kamuya açık GitHub sorunları aracılığıyla bildirmeyin.** +**Lütfen güvenlik açıklarını GitHub'daki herkese açık sorunlar üzerinden bildirmeyin.** Bunun yerine, lütfen Microsoft Güvenlik Yanıt Merkezi'ne (MSRC) [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) adresinden bildirin. -Giriş yapmadan göndermeyi tercih ediyorsanız, [secure@microsoft.com](mailto:secure@microsoft.com) adresine e-posta gönderin. Mümkünse, mesajınızı PGP anahtarımızla şifreleyin; lütfen bunu [Microsoft Güvenlik Yanıt Merkezi PGP Anahtar sayfasından](https://aka.ms/opensource/security/pgpkey) indirin. +Eğer giriş yapmadan göndermeyi tercih ediyorsanız, [secure@microsoft.com](mailto:secure@microsoft.com) adresine e-posta gönderebilirsiniz. Mümkünse, mesajınızı PGP anahtarımızla şifreleyin; bunu [Microsoft Güvenlik Yanıt Merkezi PGP Anahtarı sayfasından](https://aka.ms/opensource/security/pgpkey) indirebilirsiniz. -24 saat içinde bir yanıt almayı beklemelisiniz. Herhangi bir nedenle yanıt almazsanız, orijinal mesajınızı aldığımızdan emin olmak için e-posta ile takip edin. Ek bilgi için [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) adresini ziyaret edebilirsiniz. +24 saat içinde bir yanıt almanız gerekir. Herhangi bir nedenle yanıt almazsanız, orijinal mesajınızın bize ulaştığından emin olmak için lütfen e-posta ile tekrar iletişime geçin. Daha fazla bilgi için [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) adresini ziyaret edebilirsiniz. -Lütfen aşağıda listelenen istenen bilgileri (mümkün olduğunca fazla) ekleyin, böylece olası sorunun doğasını ve kapsamını daha iyi anlayabiliriz: +Lütfen aşağıda listelenen bilgileri (sağlayabildiğiniz kadarını) ekleyin, böylece olası sorunun doğasını ve kapsamını daha iyi anlayabiliriz: - * Sorun türü (örneğin, tampon taşması, SQL enjeksiyonu, çapraz site betikleme, vb.) - * Sorunun tezahürü ile ilgili kaynak dosyalarının tam yolları - * Etkilenen kaynak kodunun yeri (etiket/şube/commit veya doğrudan URL) - * Sorunu yeniden üretmek için gereken özel yapılandırma - * Sorunu yeniden üretmek için adım adım talimatlar - * Kanıt konsepti veya istismar kodu (mümkünse) - * Sorunun etkisi, bir saldırganın sorunu nasıl istismar edebileceği dahil + * Sorunun türü (ör. bellek taşması, SQL enjeksiyonu, çapraz site betikleme, vb.) + * Sorunun ortaya çıktığı kaynak dosyalarının tam yolları + * Etkilenen kaynak kodunun konumu (etiket/dal/commit veya doğrudan URL) + * Sorunun yeniden üretilmesi için gereken özel yapılandırmalar + * Sorunun yeniden üretilmesi için adım adım talimatlar + * Kanıt niteliğinde bir konsept veya istismar kodu (mümkünse) + * Sorunun etkisi, bir saldırganın bu sorunu nasıl kullanabileceği dahil Bu bilgiler, raporunuzu daha hızlı bir şekilde değerlendirmemize yardımcı olacaktır. -Bir hata ödülü için rapor ediyorsanız, daha eksiksiz raporlar daha yüksek bir ödül katkısında bulunabilir. Aktif programlarımız hakkında daha fazla bilgi için lütfen [Microsoft Hata Ödül Programı](https://aka.ms/opensource/security/bounty) sayfamızı ziyaret edin. +Eğer bir hata ödül programı için raporluyorsanız, daha ayrıntılı raporlar daha yüksek bir ödül almanıza katkıda bulunabilir. Aktif programlarımız hakkında daha fazla bilgi için [Microsoft Hata Ödül Programı](https://aka.ms/opensource/security/bounty) sayfasını ziyaret edin. ## Tercih Edilen Diller @@ -34,7 +43,7 @@ Tüm iletişimlerin İngilizce olmasını tercih ediyoruz. ## Politika -Microsoft, [Koordine Edilmiş Güvenlik Açığı Açıklaması](https://aka.ms/opensource/security/cvd) ilkesine uyar. +Microsoft, [Koordine Edilmiş Güvenlik Açığı Bildirimi](https://aka.ms/opensource/security/cvd) ilkesini takip eder. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/etc/CODE_OF_CONDUCT.md b/translations/tr/etc/CODE_OF_CONDUCT.md index 81a4ad9a..2535f912 100644 --- a/translations/tr/etc/CODE_OF_CONDUCT.md +++ b/translations/tr/etc/CODE_OF_CONDUCT.md @@ -1,12 +1,21 @@ + # Microsoft Açık Kaynak Davranış Kuralları -Bu proje, [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/)nı benimsemiştir. +Bu proje, [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/) benimsemiştir. Kaynaklar: - [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/) - [Microsoft Davranış Kuralları SSS](https://opensource.microsoft.com/codeofconduct/faq/) -- Sorular veya endişeler için [opencode@microsoft.com](mailto:opencode@microsoft.com) ile iletişime geçin. +- Sorularınız veya endişeleriniz için [opencode@microsoft.com](mailto:opencode@microsoft.com) ile iletişime geçin -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa ulaşmaya çalışsak da, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/etc/CONTRIBUTING.md b/translations/tr/etc/CONTRIBUTING.md index a5c6a5af..0879d585 100644 --- a/translations/tr/etc/CONTRIBUTING.md +++ b/translations/tr/etc/CONTRIBUTING.md @@ -1,21 +1,29 @@ + # Katkıda Bulunma -Bu proje katkıları ve önerileri memnuniyetle karşılamaktadır. Çoğu katkı, katkınızın kullanım haklarını bize verme hakkına sahip olduğunuzu belirten bir Katkı Lisans Anlaşması (CLA) imzalamanızı gerektirir. Detaylar için lütfen ziyaret edin -https://cla.microsoft.com. +Bu proje katkılara ve önerilere açıktır. Çoğu katkı, bir Katkıda Bulunma Lisans Sözleşmesi'ni (CLA) kabul etmenizi gerektirir. Bu sözleşme, katkınızı kullanma hakkını bize verdiğinizi ve bu hakkı gerçekten sağladığınızı beyan eder. Ayrıntılar için https://cla.microsoft.com adresini ziyaret edebilirsiniz. -Bir pull request gönderdiğinizde, bir CLA-bot otomatik olarak CLA sağlamanız gerekip gerekmediğini belirleyecek ve PR'yi uygun şekilde süsleyerek (örneğin, etiket, yorum) yönlendirecektir. Bot tarafından sağlanan talimatları takip etmeniz yeterlidir. Bu işlemi, CLA'mızı kullanan tüm depolar için yalnızca bir kez yapmanız gerekecektir. +Bir pull request gönderdiğinizde, bir CLA-bot otomatik olarak bir CLA sağlamanız gerekip gerekmediğini belirleyecek ve PR'ı uygun şekilde işaretleyecektir (örneğin, etiket, yorum). Bot tarafından sağlanan talimatları takip etmeniz yeterlidir. CLA'yı yalnızca CLA kullanan tüm depolar için bir kez sağlamanız gerekecek. -Bu proje, [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/)nı benimsemiştir. Daha fazla bilgi için [Davranış Kuralları SSS](https://opensource.microsoft.com/codeofconduct/faq/) sayfasına bakabilir veya ek sorular veya yorumlar için [opencode@microsoft.com](mailto:opencode@microsoft.com) ile iletişime geçebilirsiniz. +Bu proje [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/) benimsemiştir. Daha fazla bilgi için [Davranış Kuralları SSS](https://opensource.microsoft.com/codeofconduct/faq/) sayfasını inceleyebilir veya [opencode@microsoft.com](mailto:opencode@microsoft.com) adresine ek sorularınızı veya yorumlarınızı iletebilirsiniz. # Katkı Arayışı -Şu anda aşağıdaki konularda katkılar arıyoruz: +Şu anda aşağıdaki konularda aktif olarak katkılar arıyoruz: -- [ ] Derin Pekiştirmeli Öğrenme üzerine bölüm yazma -- [ ] Nesne Tespiti üzerine bölüm + not defterini geliştirme -- [ ] PyTorch Lightning (bu bölüm için: [this section](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] İsimlendirilmiş Varlık Tanıma üzerine bölüm + örnekler yazma -- [ ] [bu bölüm](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) için kendi gömme verilerimizi eğitmek üzere örnekler oluşturma +- [ ] Derin Pekiştirmeli Öğrenme üzerine bir bölüm yazın +- [ ] Nesne Tespiti bölümü + defterini geliştirin +- [ ] PyTorch Lightning (bu bölüm için: [bu bölüm](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Adlandırılmış Varlık Tanıma üzerine bir bölüm + örnekler yazın +- [ ] [bu bölüm](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) için kendi gömme modellerimizi eğitmek üzere örnekler oluşturun -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çeviriler hata veya yanlışlıklar içerebilir. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/etc/Mindmap.md b/translations/tr/etc/Mindmap.md index bd38915f..77b2c57e 100644 --- a/translations/tr/etc/Mindmap.md +++ b/translations/tr/etc/Mindmap.md @@ -1,32 +1,41 @@ -# AI + +# Yapay Zeka ## [Yapay Zekaya Giriş](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - Yapay Zeka Tanımı - - Yapay Zekanın Tarihçesi - - Yapay Zeka Yaklaşımları - - Yukarıdan Aşağı/Sembolik - - Aşağıdan Yukarı/Nöral + - Yapay Zekanın Tarihi + - Yapay Zekaya Yaklaşımlar + - Yukarıdan Aşağıya/Sembolik + - Aşağıdan Yukarıya/Sinirsel - Evrimsel - Sinerjik / Ortaya Çıkan Yapay Zeka - - [Microsoft Yapay Zeka İş Okulu](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + - [Microsoft Yapay Zeka İşletme Okulu](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) ## [Sembolik Yapay Zeka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - Bilgi Temsili - [Uzman Sistemler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) - [Ontolojiler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) - - Anlamlı Web + - Anlamsal Web ## [Sinir Ağları](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) - [Çok Katmanlı Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - - [Çerçevelere Giriş](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [Frameworklere Giriş](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) - - [Aşırı Uydurma](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + - [Aşırı Uyum](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) ## [Bilgisayarla Görme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - MS Learn'de - - [Yapay Zeka Temelleri: Bilgisayarla Görmeyi Keşfedin](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Yapay Zeka Temelleri: Bilgisayarla Görmeyi Keşfet](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - [PyTorch ile Bilgisayarla Görme](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - [TensorFlow ile Bilgisayarla Görme](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - [Bilgisayarla Görmeye Giriş. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) @@ -34,43 +43,43 @@ - [CNN Mimarileri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - [Transfer Öğrenme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - [Eğitim İpuçları](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - - [Otomatik Kodlayıcılar ve VAE'ler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [Üretken Çatışmalı Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Otoenkoderler ve VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Üretici Çekişmeli Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - [Stil Transferi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - [Nesne Tespiti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - [Segmentasyon](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) - + ## [Doğal Dil İşleme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - MS Learn'de - - [Yapay Zeka Temelleri: Doğal Dil İşlemeyi Keşfedin](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - - [PyTorch ile NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - - [TensorFlow ile NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) -- [Metin Temsili](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - [Yapay Zeka Temelleri: Doğal Dil İşlemeyi Keşfet](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorch ile Doğal Dil İşleme](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow ile Doğal Dil İşleme](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Metin Temsili](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) - Kelime Torbası - TF/IDF - - [Anlamsal Gömme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - [Anlamsal Gömüler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - Word2Vec - GloVE - [Dil Modelleme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - [Tekrarlayan Sinir Ağları](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - LSTM - GRU - - [Üretken Tekrarlayan Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) - - [Dönüştürücüler ve BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Üretici Tekrarlayan Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers ve BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - [Adlandırılmış Varlık Tanıma](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - [Metin Üretimi ve GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) ## Diğer Teknikler - [Genetik Algoritmalar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - [Derin Pekiştirmeli Öğrenme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - - [Çoklu Ajan Sistemleri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + - [Çoklu Aracılı Sistemler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) ## [Yapay Zeka Etiği](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - - [Sorumlu Yapay Zeka için MS Öğren](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) -## Ekstra - - [Çok Modlu Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [Sorumlu Yapay Zeka Üzerine MS Learn](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Ekstralar + - [Multimodal Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) - DALL-E - VQ-GAN -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/etc/SUPPORT.md b/translations/tr/etc/SUPPORT.md index 5e72f970..66f1caa6 100644 --- a/translations/tr/etc/SUPPORT.md +++ b/translations/tr/etc/SUPPORT.md @@ -1,14 +1,23 @@ + # Destek -## Sorunları nasıl bildirebilir ve yardım alabilirsiniz +## Sorunları bildirme ve yardım alma -Bu proje, hataları ve özellik taleplerini takip etmek için GitHub Issues kullanmaktadır. Lütfen yeni sorunlar bildirmeden önce mevcut sorunları arayın, böylece tekrar eden sorunlardan kaçınabilirsiniz. Yeni sorunlar için, hatanızı veya özellik talebinizi yeni bir Sorun olarak bildirin. +Bu proje, hataları ve özellik taleplerini takip etmek için GitHub Issues kullanır. Yinelenen sorunları önlemek için lütfen yeni bir sorun bildirmeden önce mevcut sorunları arayın. Yeni sorunlar için, hatanızı veya özellik talebinizi yeni bir Issue olarak bildirin. -Bu projeyi kullanma ile ilgili yardım ve sorular için, Lütfen Tartışma Panolarını kullanın. +Bu projeyi kullanma konusunda yardım ve sorular için Tartışma Panolarını kullanabilirsiniz. ## Microsoft Destek Politikası Bu proje için destek, yukarıda listelenen kaynaklarla sınırlıdır. -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter bir kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/etc/TRANSLATIONS.md b/translations/tr/etc/TRANSLATIONS.md index 76d4f630..8f1eb627 100644 --- a/translations/tr/etc/TRANSLATIONS.md +++ b/translations/tr/etc/TRANSLATIONS.md @@ -1,36 +1,45 @@ -# Dersleri çevirerek katkıda bulunun + +# Dersleri Çevirerek Katkıda Bulunun Bu müfredattaki derslerin çevirilerini memnuniyetle karşılıyoruz! ## Yönergeler -Her ders klasöründe ve ders tanıtım klasöründe çevrilmiş markdown dosyalarını içeren klasörler bulunmaktadır. +Her ders klasöründe ve ders tanıtım klasöründe, çevrilmiş markdown dosyalarını içeren klasörler bulunmaktadır. -> Not: Lütfen kod örneği dosyalarındaki kodları çevirmeyin; çevrilecek tek şeyler README, ödevler ve sınavlardır. Teşekkürler! +> Not: Lütfen kod örneği dosyalarındaki hiçbir kodu çevirmeyin; yalnızca README, ödevler ve sınavlar çevrilmelidir. Teşekkürler! -Çevrilen dosyalar bu adlandırma kuralına uymalıdır: +Çevrilmiş dosyalar şu adlandırma kuralını takip etmelidir: **README._[language]_.md** -burada _[language]_ ISO 639-1 standardına uygun iki harfli dil kısaltmasıdır (örneğin `README.es.md` İspanyolca için ve `README.nl.md` Felemenkçe için). +Burada _[language]_, ISO 639-1 standardına göre iki harfli dil kısaltmasıdır (örneğin, İspanyolca için `README.es.md`, Felemenkçe için `README.nl.md`). **assignment._[language]_.md** -Readme'ler gibi, lütfen ödevleri de çevirin. +README'ler gibi, lütfen ödevleri de çevirin. **Sınavlar** -1. Çevirinizi quiz-app'e eklemek için burada bir dosya ekleyin: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, uygun adlandırma kuralıyla (en.json, fr.json). **Ancak, 'true' veya 'false' kelimelerini yerelleştirmeyin. Teşekkürler!** +1. Çevirinizi, şu adreste bir dosya ekleyerek quiz-app'e ekleyin: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, doğru adlandırma kuralına uygun olarak (en.json, fr.json). **Ancak 'true' veya 'false' kelimelerini yerelleştirmeyin. Teşekkürler!** -2. Quiz-app'in App.vue dosyasındaki açılır menüye dil kodunuzu ekleyin. +2. Quiz-app'in App.vue dosyasındaki açılır listeye dil kodunuzu ekleyin. 3. Quiz-app'in [translations index.js dosyasını](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) düzenleyerek dilinizi ekleyin. -4. Son olarak, çevrilmiş README.md dosyalarınızdaki TÜM sınav bağlantılarını, doğrudan çevrilmiş sınavınıza yönlendirecek şekilde düzenleyin: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1, https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id olur. +4. Son olarak, çevrilmiş README.md dosyalarınızdaki TÜM sınav bağlantılarını doğrudan çevrilmiş sınavınıza yönlendirecek şekilde düzenleyin: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 şu hale gelir: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id **TEŞEKKÜRLER** Çabalarınızı gerçekten takdir ediyoruz! -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu oluşabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/etc/quiz-app/README.md b/translations/tr/etc/quiz-app/README.md index 5844f10a..06bfab42 100644 --- a/translations/tr/etc/quiz-app/README.md +++ b/translations/tr/etc/quiz-app/README.md @@ -1,18 +1,27 @@ + # Quizler -Bu quizler, https://aka.ms/ai-beginners adresindeki AI müfredatı için ders öncesi ve sonrası quizlerdir. +Bu quizler, https://aka.ms/ai-beginners adresindeki AI müfredatının ders öncesi ve sonrası quizleridir. -## Çevirisi yapılmış bir quiz seti ekleme +## Çevirilmiş bir quiz seti ekleme -Eşleşen quiz yapıları oluşturarak bir quiz çevirisi ekleyin `assets/translations` klasörlerinde. Temel quizler `assets/translations/en` içinde bulunmaktadır. Quizler, derslere göre birkaç gruba ayrılmıştır. Numara sıralamasını doğru quiz bölümüne göre ayarladığınızdan emin olun. Bu müfredatta toplam 40 quiz bulunmaktadır ve sayım 0'dan başlamaktadır. +Bir quiz çevirisi eklemek için, `assets/translations` klasörlerinde eşleşen quiz yapıları oluşturun. Orijinal quizler `assets/translations/en` klasöründe bulunur. Quizler, derslere göre birkaç gruba ayrılmıştır. Numaralandırmayı doğru quiz bölümüyle hizalamayı unutmayın. Bu müfredatta toplam 40 quiz bulunmaktadır ve numaralandırma 0'dan başlar. -Çevirileri düzenledikten sonra, çeviri klasöründeki index.js dosyasını `en` içindeki kurallara göre tüm dosyaları içerecek şekilde düzenleyin. +Çevirileri düzenledikten sonra, çeviri klasöründeki `index.js` dosyasını düzenleyerek, `en` klasöründeki kurallara uygun şekilde tüm dosyaları içe aktarın. -Yeni çevrilmiş dosyaları içermek için `assets/translations` içindeki `index.js` dosyasını düzenleyin. +`assets/translations` içindeki `index.js` dosyasını düzenleyerek yeni çevirilmiş dosyaları içe aktarın. -Ardından, bu uygulamadaki `App.vue` bölümündeki açılır menüyü düzenleyerek dilinizi ekleyin. Yerelleştirilmiş kısaltmayı diliniz için klasör adıyla eşleştirin. +Son olarak, bu uygulamadaki `App.vue` dosyasındaki açılır menüyü düzenleyerek dilinizi ekleyin. Yerelleştirilmiş kısaltmayı dilinizin klasör adıyla eşleştirin. -Son olarak, çevrilen derslerdeki tüm quiz bağlantılarını, varsa, bu yerelleştirmeyi bir sorgu parametresi olarak ekleyecek şekilde düzenleyin: örneğin `?loc=fr`. +Eğer varsa, çevirilmiş derslerdeki tüm quiz bağlantılarını düzenleyerek bu yerelleştirmeyi bir sorgu parametresi olarak ekleyin: Örneğin, `?loc=fr`. ## Proje kurulumu @@ -20,7 +29,7 @@ Son olarak, çevrilen derslerdeki tüm quiz bağlantılarını, varsa, bu yerell npm install ``` -### Geliştirme için derler ve sıcak yeniden yükler +### Geliştirme için derler ve sıcak yükleme yapar ``` npm run serve @@ -32,65 +41,66 @@ npm run serve npm run build ``` -### Dosyaları denetler ve düzeltir +### Dosyaları kontrol eder ve düzeltir ``` npm run lint ``` -### Yapılandırmayı özelleştirin +### Yapılandırmayı özelleştirme -[Configuration Reference](https://cli.vuejs.org/config/) sayfasına bakın. +[Configuration Reference](https://cli.vuejs.org/config/) adresine bakın. -Krediler: Bu quiz uygulamasının orijinal sürümüne teşekkürler: https://github.com/arpan45/simple-quiz-vue +Teşekkürler: Bu quiz uygulamasının orijinal versiyonu için teşekkürler: https://github.com/arpan45/simple-quiz-vue ## Azure'a Dağıtım -Başlamak için adım adım bir kılavuz: +İşte başlamanıza yardımcı olacak adım adım bir rehber: -1. GitHub Deposu Oluşturun -Statik web uygulamanızın kodunun GitHub deponuzda olduğundan emin olun. Bu depoyu fork edin. +1. GitHub Deposunu Çatallayın +Statik web uygulamanızın kodunun GitHub deponuzda olduğundan emin olun. Bu depoyu çatallayın. -2. Azure Statik Web Uygulaması Oluşturun -- Bir [Azure hesabı](http://azure.microsoft.com) oluşturun. -- [Azure portalına](https://portal.azure.com) gidin. -- "Bir kaynak oluştur" seçeneğine tıklayın ve "Statik Web Uygulaması" araması yapın. -- "Oluştur" seçeneğine tıklayın. +2. Bir Azure Statik Web Uygulaması Oluşturun +- Bir [Azure hesabı](http://azure.microsoft.com) oluşturun. +- [Azure portalına](https://portal.azure.com) gidin. +- “Bir kaynak oluştur”a tıklayın ve “Statik Web Uygulaması” arayın. +- “Oluştur”a tıklayın. -3. Statik Web Uygulamasını Yapılandırın -- Temel Bilgiler: Abonelik: Azure aboneliğinizi seçin. -- Kaynak Grubu: Yeni bir kaynak grubu oluşturun veya mevcut birini kullanın. -- İsim: Statik web uygulamanız için bir isim verin. -- Bölge: Kullanıcılarınıza en yakın bölgeyi seçin. +3. Statik Web Uygulamasını Yapılandırın +- Temel Bilgiler: + - Abonelik: Azure aboneliğinizi seçin. + - Kaynak Grubu: Yeni bir kaynak grubu oluşturun veya mevcut birini kullanın. + - Ad: Statik web uygulamanız için bir ad belirleyin. + - Bölge: Kullanıcılarınıza en yakın bölgeyi seçin. -- #### Dağıtım Detayları: -- Kaynak: "GitHub" seçeneğini seçin. -- GitHub Hesabı: Azure'un GitHub hesabınıza erişim izni vermesini onaylayın. -- Organizasyon: GitHub organizasyonunuzu seçin. -- Depo: Statik web uygulamanızı içeren depoyu seçin. -- Dal: Dağıtım yapmak istediğiniz dalı seçin. +- #### Dağıtım Detayları: + - Kaynak: “GitHub”ı seçin. + - GitHub Hesabı: Azure’un GitHub hesabınıza erişmesine izin verin. + - Organizasyon: GitHub organizasyonunuzu seçin. + - Depo: Statik web uygulamanızı içeren depoyu seçin. + - Dal: Hangi daldan dağıtım yapacağınızı seçin. -- #### Derleme Detayları: -- Derleme Ön Ayarları: Uygulamanızın inşa edildiği çerçeveyi seçin (örn., React, Angular, Vue, vb.). -- Uygulama Konumu: Uygulama kodunuzu içeren klasörü belirtin (örn., kökse /). -- API Konumu: Bir API'niz varsa, konumunu belirtin (isteğe bağlı). -- Çıktı Konumu: Derleme çıktısının oluşturulacağı klasörü belirtin (örn., build veya dist). +- #### Yapı Detayları: + - Yapı Ön Ayarları: Uygulamanızın oluşturulduğu çerçeveyi seçin (ör. React, Angular, Vue, vb.). + - Uygulama Konumu: Uygulama kodunuzu içeren klasörü belirtin (ör. kökteyse /). + - API Konumu: Eğer bir API’niz varsa, konumunu belirtin (isteğe bağlı). + - Çıktı Konumu: Yapı çıktısının oluşturulduğu klasörü belirtin (ör. build veya dist). -4. Gözden Geçirin ve Oluşturun -Ayarlarınızı gözden geçirin ve "Oluştur" seçeneğine tıklayın. Azure gerekli kaynakları kuracak ve deponuzda bir GitHub Actions iş akışı oluşturacaktır. +4. Gözden Geçir ve Oluştur +Ayarlarınızı gözden geçirin ve “Oluştur”a tıklayın. Azure, gerekli kaynakları ayarlayacak ve deponuzda bir GitHub Actions iş akışı oluşturacaktır. -5. GitHub Actions İş Akışı -Azure, deponuzda otomatik olarak bir GitHub Actions iş akışı dosyası oluşturacaktır (.github/workflows/azure-static-web-apps-.yml). Bu iş akışı, derleme ve dağıtım sürecini yönetecektir. +5. GitHub Actions İş Akışı +Azure, deponuzda otomatik olarak bir GitHub Actions iş akışı dosyası oluşturacaktır (.github/workflows/azure-static-web-apps-.yml). Bu iş akışı, yapı ve dağıtım sürecini yönetecektir. -6. Dağıtımı İzleyin -GitHub deponuzdaki "Actions" sekmesine gidin. -Bir iş akışının çalıştığını görmelisiniz. Bu iş akışı, statik web uygulamanızı Azure'a derleyip dağıtacaktır. -İş akışı tamamlandığında, uygulamanız sağlanan Azure URL'sinde canlı olacaktır. +6. Dağıtımı İzleme +GitHub deponuzdaki “Actions” sekmesine gidin. +Bir iş akışının çalıştığını görmelisiniz. Bu iş akışı, statik web uygulamanızı Azure’a oluşturup dağıtacaktır. +İş akışı tamamlandığında, uygulamanız sağlanan Azure URL’sinde canlı olacaktır. ### Örnek İş Akışı Dosyası -GitHub Actions iş akışı dosyasının nasıl görünebileceğine dair bir örnek: -name: Azure Statik Web Uygulamaları CI/CD +İşte GitHub Actions iş akışı dosyasının nasıl görünebileceğine dair bir örnek: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Ek Kaynaklar -- [Azure Statik Web Uygulamaları Belgeleri](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [GitHub Actions Belgeleri](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Ek Kaynaklar +- [Azure Statik Web Uygulamaları Dokümantasyonu](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Dokümantasyonu](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/0-course-setup/for-teachers.md b/translations/tr/lessons/0-course-setup/for-teachers.md index 9772fda7..154cd5d6 100644 --- a/translations/tr/lessons/0-course-setup/for-teachers.md +++ b/translations/tr/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ -# Eğitmenler için + +# Eğitimciler İçin -Bu müfredatı sınıfınızda kullanmak ister misiniz? Lütfen çekinmeyin! +Bu müfredatı sınıfınızda kullanmak ister misiniz? Lütfen çekinmeden kullanın! -Aslında, bunu GitHub Classroom kullanarak GitHub'ın kendisi içinde de kullanabilirsiniz. +Aslında, GitHub Classroom kullanarak bu müfredatı doğrudan GitHub üzerinde kullanabilirsiniz. -Bunu yapmak için, bu repoyu fork'layın. Her ders için bir repo oluşturmanız gerekecek, bu nedenle her klasörü ayrı bir repoya çıkarmanız gerekecek. Bu şekilde, [GitHub Classroom](https://classroom.github.com/classrooms) her dersi ayrı ayrı alabilir. +Bunu yapmak için, bu depoyu forklayın. Her ders için ayrı bir depo oluşturmanız gerekecek, bu yüzden her klasörü ayrı bir depoya çıkarmanız gerekecek. Böylece, [GitHub Classroom](https://classroom.github.com/classrooms) her dersi ayrı ayrı algılayabilir. -Bu [tam talimatlar](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) sınıfınızı nasıl kuracağınız hakkında bir fikir verecektir. +Bu [detaylı talimatlar](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) sınıfınızı nasıl kuracağınız konusunda size bir fikir verecektir. -## Repoyu olduğu gibi kullanma +## Depoyu olduğu gibi kullanma -Eğer bu repoyu mevcut haliyle, GitHub Classroom kullanmadan kullanmak isterseniz, bu da mümkündür. Öğrencilerinize hangi dersi birlikte çalışacaklarını iletmeniz gerekecek. +Eğer bu depoyu şu anki haliyle, GitHub Classroom kullanmadan kullanmak isterseniz, bu da mümkün. Öğrencilerinizle hangi dersi birlikte işleyeceğinizi iletişim kurmanız gerekecek. -Çevrimiçi bir formatta (Zoom, Teams veya diğerleri) sınavlar için grup odaları oluşturabilirsiniz ve öğrencileri öğrenmeye hazırlamaları için mentorluk yapabilirsiniz. Daha sonra öğrencileri sınavlara davet edin ve belirli bir zamanda cevaplarını 'sorunlar' olarak gönderin. Öğrencilerin açık bir ortamda işbirliği yapmalarını istiyorsanız, ödevlerle de aynı şeyi yapabilirsiniz. +Çevrimiçi bir formatta (Zoom, Teams veya başka bir platform) sınavlar için gruplar oluşturabilir ve öğrencileri öğrenmeye hazırlanmaları için yönlendirebilirsiniz. Daha sonra öğrencileri sınavlara davet edebilir ve belirli bir zamanda cevaplarını 'issue' olarak göndermelerini isteyebilirsiniz. Aynı yöntemi, öğrencilerin açık bir şekilde iş birliği yapmasını istediğiniz ödevler için de uygulayabilirsiniz. -Daha özel bir format tercih ediyorsanız, öğrencilerinize müfredatı, ders ders, kendi GitHub repolarına özel repolar olarak fork'lamalarını ve size erişim vermelerini isteyin. Böylece, sınavları ve ödevleri özel olarak tamamlayabilir ve bunları sınıf repolarınızdaki sorunlar aracılığıyla size gönderebilirler. +Daha özel bir format tercih ediyorsanız, öğrencilerinizden müfredatı ders ders kendi GitHub depolarına, özel depo olarak forklamalarını isteyin ve size erişim izni versinler. Böylece sınavları ve ödevleri özel olarak tamamlayabilir ve bunları sınıf deponuzdaki 'issue'lar aracılığıyla size gönderebilirler. -Çevrimiçi bir sınıf formatında bunu çalıştırmanın birçok yolu vardır. Hangi yöntemin sizin için en iyi çalıştığını lütfen bize bildirin! +Çevrimiçi bir sınıf formatında bunu çalıştırmanın birçok yolu var. Sizin için en iyi neyin işe yaradığını lütfen bize bildirin! -## Düşüncelerinizi bizimle paylaşın +## Lütfen düşüncelerinizi bizimle paylaşın -Bu müfredatın sizin ve öğrencileriniz için işe yaramasını istiyoruz. Lütfen geri bildirimlerinizi tartışma panolarında paylaşın! +Bu müfredatın sizin ve öğrencileriniz için işe yaramasını istiyoruz. Lütfen tartışma panolarında bize geri bildirimde bulunun! -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otoriter bir kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/0-course-setup/how-to-run.md b/translations/tr/lessons/0-course-setup/how-to-run.md index b7c957dd..24da54fa 100644 --- a/translations/tr/lessons/0-course-setup/how-to-run.md +++ b/translations/tr/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ + # Kodu Çalıştırma Yöntemleri -Bu müfredat, çalıştırmak isteyeceğiniz birçok çalıştırılabilir örnek ve laboratuvar içermektedir. Bunu yapmak için, bu müfredatın bir parçası olarak sağlanan Jupyter Not Defterlerinde Python kodunu çalıştırabilme yeteneğine sahip olmanız gerekmektedir. Kodu çalıştırmak için birkaç seçeneğiniz var: +Bu müfredat, çalıştırılabilir birçok örnek ve laboratuvar içermektedir ve bunları çalıştırmak isteyeceksiniz. Bunu yapmak için, bu müfredatın bir parçası olarak sağlanan Jupyter Notebooks'ta Python kodu çalıştırma yeteneğine ihtiyacınız var. Kodu çalıştırmak için birkaç seçeneğiniz var: -## Bilgisayarınızda Yerel Olarak Çalıştırma +## Kendi Bilgisayarınızda Yerel Olarak Çalıştırma -Kodu bilgisayarınızda yerel olarak çalıştırmak için, bazı Python sürümlerinin kurulu olması gerekmektedir. Kişisel olarak **[miniconda](https://conda.io/en/latest/miniconda.html)** kurulumunu öneriyorum - bu, farklı Python **sanallaştırılmış ortamları** için `conda` paket yöneticisini destekleyen oldukça hafif bir kurulumdur. +Kodu kendi bilgisayarınızda yerel olarak çalıştırmak için bir Python sürümünün yüklü olması gerekir. Şahsen, **[miniconda](https://conda.io/en/latest/miniconda.html)** yüklemenizi öneririm - bu, farklı Python **sanal ortamlarını** destekleyen `conda` paket yöneticisini içeren oldukça hafif bir kurulumdur. -Miniconda'yı kurduktan sonra, depoyu klonlamanız ve bu kurs için kullanılacak bir sanal ortam oluşturmanız gerekmektedir: +Miniconda'yı yükledikten sonra, bu kurs için kullanılacak bir sanal ortam oluşturmak ve depoyu klonlamak için şu adımları izleyin: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,53 +24,53 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Python Uzantısıyla Visual Studio Code Kullanma +### Python Uzantısı ile Visual Studio Code Kullanımı -Müfredatı kullanmanın en iyi yolu, onu [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) içinde [Python Uzantısı](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) ile açmaktır. +Muhtemelen müfredatı kullanmanın en iyi yolu, [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) ile [Python Uzantısı](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) kullanarak açmaktır. -> **Not**: Depoyu klonladıktan ve dizini VS Code'da açtıktan sonra, Python uzantılarını kurmanızı otomatik olarak önerecektir. Ayrıca yukarıda açıklandığı gibi miniconda'yı da kurmanız gerekecektir. +> **Not**: Depoyu klonlayıp VS Code'da açtığınızda, Python uzantılarını yüklemenizi otomatik olarak önerecektir. Yukarıda açıklandığı gibi miniconda'yı da yüklemeniz gerekecektir. -> **Not**: Eğer VS Code, depoyu konteynerde yeniden açmanızı önerirse, yerel Python kurulumunu kullanmak için bunu reddetmeniz gerekmektedir. +> **Not**: VS Code, depoyu bir konteyner içinde yeniden açmanızı önerirse, yerel Python kurulumunu kullanmak için bunu reddetmeniz gerekir. -### Tarayıcıda Jupyter Kullanma +### Tarayıcıda Jupyter Kullanımı -Ayrıca, kendi bilgisayarınızdaki tarayıcıdan Jupyter ortamını kullanabilirsiniz. Aslında, hem klasik Jupyter hem de Jupyter Hub, otomatik tamamlama, kod vurgulama vb. ile oldukça uygun bir geliştirme ortamı sunmaktadır. +Jupyter ortamını kendi bilgisayarınızda tarayıcı üzerinden de kullanabilirsiniz. Aslında, hem klasik Jupyter hem de Jupyter Hub, otomatik tamamlama, kod vurgulama vb. özelliklerle oldukça kullanışlı bir geliştirme ortamı sunar. -Jupyter'i yerel olarak başlatmak için, kursun dizinine gidin ve şu komutu çalıştırın: +Jupyter'i yerel olarak başlatmak için, kursun dizinine gidin ve şu komutları çalıştırın: ```bash jupyter notebook -``` -veya +``` +veya ```bash jupyterhub -``` -Daha sonra, bu repo için bir konteyner oluşturma talimatlarını veren herhangi bir `.ipynb` files, open them and start working. +``` +Daha sonra herhangi bir `.ipynb` dosyasına gidip, açabilir ve çalışmaya başlayabilirsiniz. -### Running in container +### Konteynerde Çalıştırma -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` klasörüne gidebilirsiniz; VS Code, kodu konteynerde yeniden açmanızı teklif edecektir. Bu, Docker kurulumu gerektirecek ve ayrıca daha karmaşık olacaktır, bu nedenle bunu daha deneyimli kullanıcılara öneriyoruz. +Python kurulumuna bir alternatif, kodu bir konteyner içinde çalıştırmaktır. Depomuz, bu depo için bir konteynerin nasıl oluşturulacağını açıklayan özel bir `.devcontainer` klasörü içerdiğinden, VS Code size kodu bir konteyner içinde yeniden açmayı teklif edecektir. Bu, Docker kurulumunu gerektirir ve daha karmaşık olabilir, bu nedenle bunu daha deneyimli kullanıcılara öneriyoruz. ## Bulutta Çalıştırma -Eğer Python'u yerel olarak kurmak istemiyorsanız ve bazı bulut kaynaklarına erişiminiz varsa - bulutta kodu çalıştırmak iyi bir alternatif olacaktır. Bunu yapmanın birkaç yolu vardır: +Python'u yerel olarak kurmak istemiyorsanız ve bazı bulut kaynaklarına erişiminiz varsa, kodu bulutta çalıştırmak iyi bir alternatif olabilir. Bunu yapmanın birkaç yolu vardır: -* **[GitHub Codespaces](https://github.com/features/codespaces)** kullanarak, bu sizin için GitHub'da oluşturulmuş sanal bir ortamdır ve VS Code tarayıcı arayüzü üzerinden erişilebilir. Eğer Codespaces erişiminiz varsa, repo içinde **Code** butonuna tıklayarak bir codespace başlatabilir ve hızla çalışmaya başlayabilirsiniz. -* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** kullanarak. [Binder](https://mybinder.org), sizin gibi insanların GitHub'da bazı kodları denemesi için sağlanan ücretsiz hesaplama kaynaklarıdır. Ana sayfada depoyu Binder'da açmak için bir buton bulunmaktadır - bu, sizi hızlı bir şekilde binder sitesine yönlendirecek ve arka planda gerekli konteyneri oluşturup Jupyter web arayüzünü sizin için başlatacaktır. +* **[GitHub Codespaces](https://github.com/features/codespaces)** kullanarak. Bu, GitHub'da sizin için oluşturulan ve VS Code tarayıcı arayüzü üzerinden erişilebilen bir sanal ortamdır. Codespaces erişiminiz varsa, depodaki **Code** düğmesine tıklayıp bir codespace başlatabilir ve hemen çalışmaya başlayabilirsiniz. +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** kullanarak. [Binder](https://mybinder.org), GitHub'daki bazı kodları test etmek isteyen kişiler için bulutta ücretsiz hesaplama kaynakları sağlar. Ana sayfada depoyu Binder'da açmak için bir düğme vardır - bu, sizi hızla Binder sitesine yönlendirecek, temel konteyneri oluşturacak ve Jupyter web arayüzünü sorunsuz bir şekilde başlatacaktır. -> **Not**: Suistimali önlemek için, Binder bazı web kaynaklarına erişimi engellemiştir. Bu, kamu internetinden model ve/veya veri setleri çeken bazı kodların çalışmasını engelleyebilir. Bazı çözümler bulmanız gerekebilir. Ayrıca, Binder tarafından sağlanan hesaplama kaynakları oldukça temel olduğu için, eğitim süreci yavaş olacaktır, özellikle daha karmaşık derslerde. +> **Not**: Kötüye kullanımı önlemek için, Binder bazı web kaynaklarına erişimi engellemiştir. Bu, modelleri ve/veya veri setlerini genel internetten çeken bazı kodların çalışmasını engelleyebilir. Bazı alternatif çözümler bulmanız gerekebilir. Ayrıca, Binder tarafından sağlanan hesaplama kaynakları oldukça temel düzeydedir, bu nedenle özellikle daha karmaşık derslerde eğitim yavaş olacaktır. -## Bulutta GPU ile Çalıştırma +## GPU ile Bulutta Çalıştırma -Bu müfredattaki bazı sonraki dersler, GPU desteğinden büyük ölçüde yararlanacaktır, çünkü aksi takdirde eğitim acı verici derecede yavaş olacaktır. Özellikle [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) veya kurumunuz aracılığıyla buluta erişiminiz varsa, takip edebileceğiniz birkaç seçenek vardır: +Bu müfredattaki bazı ileri düzey dersler, GPU desteğinden büyük ölçüde faydalanacaktır, çünkü aksi takdirde eğitim süreci oldukça yavaş olacaktır. Özellikle [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) veya kurumunuz aracılığıyla buluta erişiminiz varsa, aşağıdaki seçenekleri değerlendirebilirsiniz: -* [Veri Bilimi Sanal Makinesi](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) oluşturun ve buna Jupyter üzerinden bağlanın. Daha sonra repoyu doğrudan makineye klonlayabilir ve öğrenmeye başlayabilirsiniz. NC serisi VM'ler GPU desteğine sahiptir. +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) oluşturun ve Jupyter üzerinden bağlanın. Daha sonra depoyu doğrudan makineye klonlayabilir ve öğrenmeye başlayabilirsiniz. NC serisi sanal makineler GPU desteğine sahiptir. -> **Not**: Bazı abonelikler, Azure for Students dahil olmak üzere, kutudan çıktığı gibi GPU desteği sağlamaz. Ek GPU çekirdekleri talep etmeniz gerekebilir. +> **Not**: Azure for Students dahil bazı abonelikler, GPU desteğini varsayılan olarak sağlamaz. Teknik destek talebiyle ek GPU çekirdekleri talep etmeniz gerekebilir. -* [Azure Makine Öğrenimi Çalışma Alanı](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) oluşturun ve ardından orada Not Defteri özelliğini kullanın. [Bu video](https://azure-for-academics.github.io/quickstart/azureml-papers/) bir depoyu Azure ML not defterine nasıl klonlayacağınızı ve kullanmaya nasıl başlayacağınızı göstermektedir. +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) oluşturun ve oradaki Notebook özelliğini kullanın. [Bu video](https://azure-for-academics.github.io/quickstart/azureml-papers/), bir depoyu Azure ML not defterine nasıl klonlayacağınızı ve kullanmaya başlayacağınızı gösterir. -Ayrıca, bazı ücretsiz GPU desteği ile gelen Google Colab'ı da kullanabilirsiniz ve oraya Jupyter Not Defterlerini yükleyerek bunları tek tek çalıştırabilirsiniz. +Ayrıca, ücretsiz GPU desteği sunan Google Colab'i kullanabilir ve Jupyter Notebooks'u oraya yükleyerek tek tek çalıştırabilirsiniz. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/0-course-setup/setup.md b/translations/tr/lessons/0-course-setup/setup.md index c88cf64b..23ed36a8 100644 --- a/translations/tr/lessons/0-course-setup/setup.md +++ b/translations/tr/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ -# Bu Müfredatla Başlarken + +# Bu Müfredata Başlarken -## Sen bir öğrenci misin? +## Öğrenci misiniz? -Aşağıdaki kaynaklarla başlayabilirsin: +Aşağıdaki kaynaklarla başlayabilirsiniz: -* [Öğrenci Hub sayfası](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Bu sayfada, başlangıç kaynakları, Öğrenci paketleri ve hatta ücretsiz sertifika kuponu alma yolları bulacaksınız. Bu sayfayı yer imlerinize eklemeyi ve zaman zaman kontrol etmeyi unutmayın; içerikleri en az ayda bir güncelliyoruz. -* [Microsoft Öğrenci Öğrenme elçileri](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Küresel bir öğrenci elçileri topluluğuna katılın; bu, Microsoft’a giriş yapmanın bir yolu olabilir. +* [Öğrenci Merkezi sayfası](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Bu sayfada başlangıç kaynakları, Öğrenci paketleri ve hatta ücretsiz sertifika kuponu alma yollarını bulabilirsiniz. Bu sayfayı sık kullanılanlara ekleyip zaman zaman kontrol etmek isteyebilirsiniz, çünkü içeriği en az ayda bir değiştiriyoruz. +* [Microsoft Öğrenci Elçileri](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Küresel bir öğrenci elçileri topluluğuna katılın, bu sizin Microsoft'a açılan kapınız olabilir. -**Öğrenciler**, müfredatı kullanmanın birkaç yolu var. Öncelikle, metni okuyabilir ve kodu doğrudan GitHub'da inceleyebilirsiniz. Eğer herhangi bir not defterinde kodu çalıştırmak isterseniz - [talimatlarımızı okuyun](./etc/how-to-run.md), ve bunu nasıl yapacağınız hakkında daha fazla tavsiye için [bu blog yazısına](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) göz atın. +**Öğrenciler**, müfredatı kullanmanın birkaç yolu var. İlk olarak, metni okuyabilir ve kodu doğrudan GitHub'da inceleyebilirsiniz. Not defterlerindeki kodu çalıştırmak isterseniz - [talimatlarımızı okuyun](./etc/how-to-run.md) ve bunu nasıl yapacağınızla ilgili daha fazla tavsiyeyi [bu blog yazısında](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) bulabilirsiniz. -> **Not**: [Bu müfredattaki kodu nasıl çalıştıracağınız hakkında talimatlar](/how-to-run.md) +> **Not**: [Bu müfredattaki kodu nasıl çalıştıracağınızla ilgili talimatlar](./how-to-run.md) ## Kendi Kendine Çalışma -Ancak, dersi kendi kendine çalışma projesi olarak almak isterseniz, tüm depoyu kendi GitHub hesabınıza fork etmenizi ve alıştırmaları kendi başınıza veya bir grupla tamamlamanızı öneririz: +Ancak, bu dersi kendi kendine çalışma projesi olarak almak isterseniz, tüm depoyu kendi GitHub hesabınıza çatallayıp alıştırmaları kendi başınıza veya bir grupla tamamlamanızı öneririz: -* Öncelikle bir ön ders sınavı ile başlayın. -* Dersi tanıtan metni okuyun. -* Eğer dersin ek not defterleri varsa, bunları gözden geçirin, kodu okuyun ve çalıştırın. Hem TensorFlow hem de PyTorch not defterleri sağlanıyorsa, birine odaklanabilirsiniz - favori çerçevenizi seçin. -* Not defterleri genellikle kodu biraz değiştirmenizi gerektiren bazı zorluklar içerir. -* Ders sonrası sınavı alın. +* Ders öncesi bir testle başlayın. +* Dersin giriş metnini okuyun. +* Eğer dersin ek not defterleri varsa, bunları okuyup kodu çalıştırarak inceleyin. Hem TensorFlow hem de PyTorch not defterleri sağlanmışsa, favori çerçevenizi seçip ona odaklanabilirsiniz. +* Not defterleri genellikle kodu biraz değiştirerek denemeler yapmanızı gerektiren bazı zorluklar içerir. +* Ders sonrası testi yapın. * Modüle bağlı bir laboratuvar varsa - ödevi tamamlayın. -* "Sesli öğrenmek" için [Tartışma panosunu](https://github.com/microsoft/AI-For-Beginners/discussions) ziyaret edin. +* [Tartışma panosunu](https://github.com/microsoft/AI-For-Beginners/discussions) ziyaret ederek "yüksek sesle öğrenin". > Daha fazla çalışma için, bu [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) modüllerini ve öğrenme yollarını takip etmenizi öneririz. -**Eğitmenler**, bu müfredatı nasıl kullanacağınıza dair [bazı öneriler ekledik](/for-teachers.md). +**Eğitmenler**, bu müfredatı nasıl kullanacağınızla ilgili [bazı öneriler ekledik](/for-teachers.md). --- ## Pedagoji -Bu müfredatı oluştururken iki pedagojik ilke seçtik: uygulamalı **proje bazlı** olması ve **sık sık sınavlar** içermesi. +Bu müfredatı oluştururken iki pedagojik ilkeye bağlı kaldık: içeriğin **proje tabanlı** ve **sık sık testler içeren** bir yapıda olmasını sağlamak. -İçeriğin projelerle uyumlu olmasını sağlamak, öğrenciler için süreci daha ilgi çekici hale getirir ve kavramların kalıcılığını artırır. Ayrıca, bir dersten önce yapılan düşük riskli bir sınav, öğrencinin bir konuyu öğrenme niyetini belirlerken, dersten sonraki ikinci sınav daha fazla kalıcılığı sağlar. Bu müfredat esnek ve eğlenceli olacak şekilde tasarlandı ve bütün veya kısmen alınabilir. Projeler küçük başlar ve 12 haftalık döngünün sonunda giderek daha karmaşık hale gelir. +İçeriğin projelerle uyumlu olmasını sağlayarak, süreç öğrenciler için daha ilgi çekici hale gelir ve kavramların kalıcılığı artırılır. Ayrıca, ders öncesi düşük riskli bir test, öğrencinin bir konuyu öğrenmeye yönelik niyetini belirlerken, ders sonrası yapılan ikinci bir test daha fazla kalıcılığı sağlar. Bu müfredat esnek ve eğlenceli olacak şekilde tasarlandı ve tamamen veya kısmen alınabilir. Projeler küçük başlar ve 12 haftalık döngünün sonunda giderek daha karmaşık hale gelir. -> **Sınavlar hakkında bir not**: Tüm sınavlar [bu uygulamada](https://red-field-0a6ddfd03.1.azurestaticapps.net/) yer almaktadır; toplamda üç sorudan oluşan 50 sınav bulunmaktadır. Sınavlar dersler içinde bağlantılıdır, ancak sınav uygulaması yerel olarak çalıştırılabilir; `etc/quiz-app` klasöründeki talimatları izleyin. +> **Testler hakkında bir not**: Tüm testler [bu uygulamada](https://red-field-0a6ddfd03.1.azurestaticapps.net/) yer alır, toplamda üçer sorudan oluşan 50 test vardır. Derslerin içinden bağlantılıdır, ancak test uygulaması yerel olarak çalıştırılabilir; `etc/quiz-app` klasöründeki talimatları izleyin. -## Çevrimdışı Erişim +## Çevrimdışı erişim -Bu belgeleri çevrimdışı olarak [Docsify](https://docsify.js.org/#/) kullanarak çalıştırabilirsiniz. Bu depoyu fork edin, yerel makinenize [Docsify'i yükleyin](https://docsify.js.org/#/quickstart), ve ardından bu deponun `etc/docsify` klasöründe `docsify serve` yazın. Web sitesi localhost üzerinde 3000 numaralı portta sunulacaktır: `localhost:3000`. Müfredatın pdf'si [bu bağlantıda](../../../../../../etc/pdf/readme.pdf) mevcuttur. +Bu dokümantasyonu [Docsify](https://docsify.js.org/#/) kullanarak çevrimdışı çalıştırabilirsiniz. Bu depoyu çatallayın, [Docsify'i yükleyin](https://docsify.js.org/#/quickstart) yerel makinenize kurun ve ardından bu deponun kök klasöründe `docsify serve` yazın. Web sitesi localhost'unuzda 3000 portunda sunulacaktır: `localhost:3000`. Müfredatın bir PDF'sine [bu bağlantıdan](../../../../../../../../../etc/pdf/readme.pdf) ulaşabilirsiniz. -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/1-Intro/README.md b/translations/tr/lessons/1-Intro/README.md index e4ca1acb..48bd6d34 100644 --- a/translations/tr/lessons/1-Intro/README.md +++ b/translations/tr/lessons/1-Intro/README.md @@ -1,38 +1,145 @@ -> [Dmitry Soshnikov](http://soshnikov.com) tarafından görsel + +# Yapay Zekaya Giriş -## Son AI Araştırmaları +![Yapay Zeka içeriğinin bir çizim özeti](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.tr.png) -Sinir ağı araştırmalarındaki büyük artış, 2010 civarında büyük kamu veri setlerinin kullanılabilir hale gelmesiyle başladı. Yaklaşık 14 milyon etiketlenmiş görüntü içeren [ImageNet](https://en.wikipedia.org/wiki/ImageNet) adlı büyük bir görüntü koleksiyonu, [ImageNet Büyük Ölçekli Görsel Tanıma Yarışması](https://image-net.org/challenges/LSVRC/)nın doğmasına neden oldu. +> Çizim notu: [Tomomi Imura](https://twitter.com/girlie_mac) -![ILSVRC Doğruluğu](../../../../lessons/1-Intro/images/ilsvrc.gif) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) -> [Dmitry Soshnikov](http://soshnikov.com) tarafından görsel -2012 yılında, [Konvolüsyonel Sinir Ağları](../4-ComputerVision/07-ConvNets/README.md) ilk kez görüntü sınıflandırmada kullanıldı ve bu, sınıflandırma hatalarında önemli bir düşüşe yol açtı (neredeyse %30'dan %16.4'e). 2015 yılında, Microsoft Research'tan ResNet mimarisi [insan seviyesinde doğruluk](https://doi.org/10.1109/ICCV.2015.123) elde etti. +**Yapay Zeka**, bilgisayarların insanlara özgü yetenekleri sergilemesini, yani insanların iyi olduğu şeyleri yapmasını sağlayan heyecan verici bir bilim dalıdır. -O zamandan beri, Sinir Ağları birçok görevde son derece başarılı bir şekilde performans gösterdi: +Başlangıçta bilgisayarlar, [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) tarafından iyi tanımlanmış bir prosedürü - bir algoritmayı - takip ederek sayılar üzerinde işlem yapmak için icat edilmiştir. Modern bilgisayarlar, 19. yüzyılda önerilen orijinal modelden çok daha gelişmiş olsalar da, hala kontrollü hesaplama fikrini takip eder. Bu nedenle, bir hedefe ulaşmak için gereken adımların tam sırasını biliyorsak, bir bilgisayarı bir şey yapması için programlamak mümkündür. + +![Bir kişinin fotoğrafı](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.tr.png) + +> Fotoğraf: [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ Bir kişinin fotoğrafından yaşını belirlemek, açıkça programlanamayan bir görevdir çünkü bunu yaparken kafamızda bir sayı nasıl oluştuğunu tam olarak bilmiyoruz. --- -Yıl | İnsan Eşdeğeri Elde Edildi +Ancak, çözümünü açıkça bilmediğimiz bazı görevler vardır. Örneğin, bir kişinin fotoğrafından yaşını belirlemeyi düşünün. Bunu bir şekilde öğreniriz çünkü farklı yaşlardaki insanların birçok örneğini görmüşüzdür, ancak bunu nasıl yaptığımızı açıkça açıklayamayız veya bilgisayarı bunu yapacak şekilde programlayamayız. İşte tam da bu tür görevler **Yapay Zeka** (kısaca AI) için ilgi çekicidir. + +✅ AI'dan faydalanabilecek bazı görevleri düşünün. Finans, tıp ve sanat gibi alanlarda bu alanlar bugün AI'dan nasıl faydalanıyor? + +## Zayıf AI ve Güçlü AI + +Zayıf AI | Güçlü AI +---------------------------------------|------------------------------------- +Zayıf AI, belirli bir görev veya dar bir görev seti için tasarlanmış ve eğitilmiş AI sistemlerini ifade eder. | Güçlü AI veya Genel Yapay Zeka (AGI), insan seviyesinde zeka ve anlayışa sahip AI sistemlerini ifade eder. +Bu AI sistemleri genel olarak zeki değildir; önceden tanımlanmış bir görevde mükemmel performans gösterirler ancak gerçek bir anlayış veya bilinçten yoksundurlar. | Bu AI sistemleri, bir insanın yapabileceği her türlü entelektüel görevi yerine getirebilir, farklı alanlara uyum sağlayabilir ve bir tür bilinç veya öz farkındalığa sahip olabilir. +Zayıf AI örnekleri arasında Siri veya Alexa gibi sanal asistanlar, akış hizmetleri tarafından kullanılan öneri algoritmaları ve belirli müşteri hizmeti görevleri için tasarlanmış sohbet robotları bulunur. | Güçlü AI'ya ulaşmak, AI araştırmalarının uzun vadeli bir hedefidir ve AI sistemlerinin geniş bir görev ve bağlam yelpazesinde akıl yürütebilmesi, öğrenebilmesi, anlayabilmesi ve uyum sağlayabilmesi için geliştirilmesini gerektirir. +Zayıf AI son derece özelleşmiştir ve dar alanının ötesinde insan benzeri bilişsel yeteneklere veya genel problem çözme yeteneklerine sahip değildir. | Güçlü AI şu anda teorik bir kavramdır ve hiçbir AI sistemi bu genel zeka seviyesine ulaşmamıştır. + +Daha fazla bilgi için **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI) bağlantısına bakabilirsiniz. + +## Zeka Tanımı ve Turing Testi + +**[Zeka](https://en.wikipedia.org/wiki/Intelligence)** terimiyle uğraşırken karşılaşılan sorunlardan biri, bu terimin net bir tanımının olmamasıdır. Zekanın **soyut düşünme** veya **öz farkındalık** ile bağlantılı olduğunu iddia edebilirsiniz, ancak bunu doğru bir şekilde tanımlayamayız. + +![Bir kedinin fotoğrafı](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.tr.jpg) + +> [Fotoğraf](https://unsplash.com/photos/75715CVEJhI): [Amber Kipp](https://unsplash.com/@sadmax) tarafından Unsplash'tan alınmıştır. + +*Zeka* teriminin belirsizliğini görmek için şu soruyu yanıtlamayı deneyin: "Bir kedi zeki midir?" Farklı insanlar bu soruya farklı yanıtlar verme eğilimindedir çünkü bu iddianın doğru olup olmadığını kanıtlayacak evrensel olarak kabul edilmiş bir test yoktur. Ve eğer olduğunu düşünüyorsanız - kedinizi bir IQ testine sokmayı deneyin... + +✅ Zekayı nasıl tanımladığınızı bir dakika düşünün. Bir labirenti çözerek yiyeceğe ulaşabilen bir karga zeki midir? Bir çocuk zeki midir? + +--- + +AGI'den bahsederken, gerçekten zeki bir sistem oluşturup oluşturmadığımızı anlamanın bir yoluna ihtiyacımız var. [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing), zekayı tanımlayan bir yöntem olan **[Turing Testi](https://en.wikipedia.org/wiki/Turing_test)**'ni önerdi. Bu test, verilen bir sistemi doğası gereği zeki bir şeyle - gerçek bir insanla - karşılaştırır ve herhangi bir otomatik karşılaştırma bir bilgisayar programı tarafından atlatılabileceği için, bir insan sorgulayıcı kullanırız. Yani, bir insan, metin tabanlı bir diyalogda gerçek bir kişi ile bir bilgisayar sistemi arasındaki farkı ayırt edemezse - sistem zeki kabul edilir. + +> St. Petersburg'da geliştirilen [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) adlı bir sohbet robotu, 2014 yılında Turing testini geçmeye yaklaşmıştır. Bunu, zekice bir kişilik hilesi kullanarak başarmıştır. Sohbet robotu, baştan 13 yaşında bir Ukraynalı çocuk olduğunu açıklamış, bu da bilgi eksikliğini ve metindeki bazı tutarsızlıkları açıklamıştır. Bot, 5 dakikalık bir diyalogdan sonra yargıçların %30'unu insan olduğuna ikna etmiştir. Ancak, bu durumun zeki bir sistem oluşturduğumuz anlamına gelmediğini veya bir bilgisayar sisteminin insan sorgulayıcıyı kandırdığını anlamak önemlidir - aslında sistemi değil, botun yaratıcıları insanları kandırmıştır! + +✅ Hiç bir sohbet robotunun insan olduğuna inanarak kandırıldınız mı? Sizi nasıl ikna etti? + +## Yapay Zekaya Farklı Yaklaşımlar + +Bir bilgisayarın insan gibi davranmasını istiyorsak, bir şekilde bilgisayarın içinde düşünme biçimimizi modellememiz gerekir. Dolayısıyla, bir insanı zeki yapan şeyin ne olduğunu anlamaya çalışmamız gerekir. + +> Bir makineye zeka programlayabilmek için, kendi karar verme süreçlerimizin nasıl çalıştığını anlamamız gerekir. Biraz kendinizi gözlemlerseniz, bazı süreçlerin bilinçaltında gerçekleştiğini fark edeceksiniz – örneğin, bir kediyi bir köpekten düşünmeden ayırt edebiliriz – oysa bazıları mantık yürütmeyi içerir. + +Bu soruna iki olası yaklaşım vardır: + +Üstten Aşağı Yaklaşım (Sembolik Akıl Yürütme) | Alttan Yukarı Yaklaşım (Sinir Ağları) +---------------------------------------|------------------------------------- +Üstten aşağı yaklaşım, bir kişinin bir sorunu çözmek için nasıl mantık yürüttüğünü modellemeye çalışır. Bu, bir insandan **bilgi** çıkarılmasını ve bunun bilgisayar tarafından okunabilir bir biçimde temsil edilmesini içerir. Ayrıca, bilgisayar içinde **akıl yürütmeyi** modellemenin bir yolunu geliştirmemiz gerekir. | Alttan yukarı yaklaşım, insan beyninin yapısını, **nöronlar** adı verilen çok sayıda basit birimden oluşan bir yapıyı modellemeye çalışır. Her nöron, girdilerinin ağırlıklı bir ortalaması gibi davranır ve nöronlardan oluşan bir ağı, **eğitim verileri** sağlayarak faydalı problemleri çözmek için eğitebiliriz. + +Ayrıca zekaya yönelik bazı diğer olası yaklaşımlar da vardır: + +* **Ortaya Çıkan**, **Sinergik** veya **çoklu ajan yaklaşımı**, karmaşık zeki davranışların çok sayıda basit ajanın etkileşimiyle elde edilebileceği gerçeğine dayanır. [Evrimsel sibernetik](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics)'e göre, zeka, *metasistem geçişi* sürecinde daha basit, tepkisel davranışlardan *ortaya çıkabilir*. + +* **Evrimsel yaklaşım** veya **genetik algoritma**, evrim ilkelerine dayanan bir optimizasyon sürecidir. + +Bu yaklaşımları kursun ilerleyen bölümlerinde ele alacağız, ancak şu anda iki ana yöne odaklanacağız: üstten aşağı ve alttan yukarı. + +### Üstten Aşağı Yaklaşım + +**Üstten aşağı yaklaşımda**, mantık yürütme sürecimizi modellemeye çalışırız. Mantık yürütürken düşüncelerimizi takip edebildiğimiz için, bu süreci resmileştirmeye ve bilgisayarın içine programlamaya çalışabiliriz. Buna **sembolik akıl yürütme** denir. + +İnsanlar, karar verme süreçlerini yönlendiren bazı kurallara sahip olma eğilimindedir. Örneğin, bir doktor bir hastayı teşhis ederken, kişinin ateşi olduğunu fark edebilir ve bu nedenle vücutta bir iltihaplanma olabileceğini düşünebilir. Bir doktor, belirli bir soruna büyük bir kural seti uygulayarak nihai teşhise ulaşabilir. + +Bu yaklaşım büyük ölçüde **bilgi temsili** ve **akıl yürütme**ye dayanır. Bir insan uzmandan bilgi çıkarmak en zor kısım olabilir çünkü bir doktor, çoğu durumda, belirli bir teşhise neden ulaştığını tam olarak bilmeyebilir. Bazen çözüm, açık bir düşünme olmadan kafasında belirir. Bir kişinin fotoğrafından yaşını belirlemek gibi bazı görevler, bilgi manipülasyonuna indirgenemez. + +### Alttan Yukarı Yaklaşım + +Alternatif olarak, beynimizdeki en basit unsurları – bir nöronu – modellemeye çalışabiliriz. Bilgisayarın içinde bir **yapay sinir ağı** oluşturabilir ve ardından ona örnekler vererek problemleri çözmeyi öğretmeye çalışabiliriz. Bu süreç, yeni doğmuş bir çocuğun çevresini gözlem yaparak öğrenmesine benzer. + +✅ Bebeklerin nasıl öğrendiği hakkında biraz araştırma yapın. Bir bebeğin beyninin temel unsurları nelerdir? + +> | Ya ML? | | +> |--------------|-----------| +> | Verilere dayalı olarak bir problemi çözmeyi öğrenen bilgisayarların oluşturduğu Yapay Zeka dalına **Makine Öğrenimi** denir. Bu kursta klasik makine öğrenimini ele almayacağız - sizi ayrı bir [Makine Öğrenimi için Başlangıç](http://aka.ms/ml-beginners) müfredatına yönlendiriyoruz. | ![Başlangıç için ML](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.tr.png) | + +## Yapay Zekanın Kısa Tarihi + +Yapay Zeka, yirminci yüzyılın ortalarında bir alan olarak başladı. Başlangıçta, sembolik akıl yürütme yaygın bir yaklaşımdı ve uzman sistemler gibi bazı önemli başarılara yol açtı – sınırlı problem alanlarında uzman gibi davranabilen bilgisayar programları. Ancak, bu yaklaşımın iyi ölçeklenmediği kısa sürede anlaşıldı. Bir uzmandan bilgi çıkarmak, bunu bir bilgisayarda temsil etmek ve bu bilgi tabanını doğru tutmak çok karmaşık ve birçok durumda pratik olmayan bir görev olduğu ortaya çıktı. Bu durum, 1970'lerde [AI Kışı](https://en.wikipedia.org/wiki/AI_winter) olarak adlandırılan döneme yol açtı. + +> Görsel Dmitry Soshnikov tarafından, [fotoğraf](https://unsplash.com/photos/r8LmVbUKgns) [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) tarafından, Unsplash + +## Son Dönem AI Araştırmaları + +Sinir ağı araştırmalarındaki büyük büyüme, 2010 civarında, büyük halka açık veri setlerinin erişilebilir hale gelmesiyle başladı. Yaklaşık 14 milyon açıklamalı görüntü içeren [ImageNet](https://en.wikipedia.org/wiki/ImageNet) adlı büyük bir görüntü koleksiyonu, [ImageNet Büyük Ölçekli Görsel Tanıma Yarışması](https://image-net.org/challenges/LSVRC/) doğurdu. + +![ILSVRC Doğruluk](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından + +2012 yılında, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) ilk kez görüntü sınıflandırmada kullanıldı ve sınıflandırma hatalarında önemli bir düşüşe yol açtı (neredeyse %30'dan %16.4'e). 2015 yılında, Microsoft Research'ten ResNet mimarisi [insan seviyesinde doğruluk](https://doi.org/10.1109/ICCV.2015.123) elde etti. + +O zamandan beri, Sinir Ağları birçok görevde çok başarılı bir performans sergiledi: + +--- + +Yıl | İnsan Seviyesinde Başarı -----|-------- 2015 | [Görüntü Sınıflandırma](https://doi.org/10.1109/ICCV.2015.123) 2016 | [Konuşma Tanıma](https://arxiv.org/abs/1610.05256) -2018 | [Otomatik Makine Çevirisi](https://arxiv.org/abs/1803.05567) (Çince-İngilizce) -2020 | [Görüntü Açıklaması](https://arxiv.org/abs/2009.13682) +2018 | [Otomatik Makine Çevirisi](https://arxiv.org/abs/1803.05567) (Çince'den İngilizce'ye) +2020 | [Görüntü Açıklama](https://arxiv.org/abs/2009.13682) -Son birkaç yılda, BERT ve GPT-3 gibi büyük dil modelleri ile büyük başarılar gördük. Bu, büyük ölçüde, metinlerin yapısını ve anlamını yakalamak için modelleri eğitmemizi sağlayan çok fazla genel metin verisinin mevcut olmasından kaynaklandı. Modelleri genel metin koleksiyonları üzerinde önceden eğitip, ardından bu modelleri daha spesifik görevler için uzmanlaştırıyoruz. Bu kursta daha sonra [Doğal Dil İşleme](../5-NLP/README.md) hakkında daha fazla bilgi edineceğiz. +Son birkaç yılda, BERT ve GPT-3 gibi büyük dil modelleriyle büyük başarılar gördük. Bu, büyük ölçüde genel metin verilerinin bol miktarda bulunması sayesinde gerçekleşti. Bu veriler, modellerin metinlerin yapısını ve anlamını yakalamasını, genel metin koleksiyonlarında önceden eğitilmesini ve ardından bu modellerin daha spesifik görevler için uzmanlaşmasını sağladı. Bu kursun ilerleyen bölümlerinde [Doğal Dil İşleme](../5-NLP/README.md) hakkında daha fazla bilgi edineceğiz. -## 🚀 Zorluk +## 🚀 Meydan Okuma -İnternette bir tur yaparak, AI'nın en etkili bir şekilde kullanıldığı yerleri belirleyin. Bir Haritalama uygulamasında mı, yoksa bir konuşma metne dönüştürme hizmetinde mi yoksa bir video oyununda mı? Sisteminin nasıl inşa edildiğini araştırın. +İnternette bir tur yaparak, AI'nin en etkili şekilde nerede kullanıldığını belirleyin. Bir haritalama uygulamasında mı, bir konuşmadan metne hizmette mi yoksa bir video oyununda mı? Sistemin nasıl inşa edildiğini araştırın. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Ders sonrası test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## İnceleme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -AI ve ML tarihini incelemek için [bu dersi](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) okuyun. O dersin veya bu dersin en üstündeki sketchnote'dan bir unsuru alın ve onun evrimini etkileyen kültürel bağlamı anlamak için daha derinlemesine araştırın. +AI ve ML tarihini gözden geçirmek için [bu dersi](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) okuyun. Bu dersin veya yukarıdaki dersin başındaki sketchnote'dan bir öğe seçin ve onun evrimini şekillendiren kültürel bağlamı daha iyi anlamak için daha derinlemesine araştırın. -**Ödev**: [Oyun Jam](assignment.md) +**Ödev**: [Game Jam](assignment.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/1-Intro/assignment.md b/translations/tr/lessons/1-Intro/assignment.md index 12d0e49e..3067232b 100644 --- a/translations/tr/lessons/1-Intro/assignment.md +++ b/translations/tr/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ -# Oyun Jamı + +# Oyun Jam'i -Oyunlar, AI ve ML'deki gelişmelerden yoğun bir şekilde etkilenen bir alandır. Bu ödevde, AI'nın evriminden etkilenen ve hoşlandığınız bir oyun hakkında kısa bir makale yazın. Bu oyun, çeşitli bilgisayar işleme sistemlerinden etkilenmiş kadar eski olmalıdır. İyi bir örnek olarak Satranç veya Go verilebilir, ancak Pong veya Pac-Man gibi video oyunlarına da göz atabilirsiniz. Oyununun geçmişini, güncel durumunu ve AI geleceğini tartışan bir deneme yazın. +Oyunlar, AI ve ML gelişmelerinden büyük ölçüde etkilenen bir alandır. Bu ödevde, AI'nin evrimi tarafından etkilenmiş sevdiğiniz bir oyun hakkında kısa bir makale yazın. Seçtiğiniz oyun, birden fazla bilgisayar işleme sistemi türünden etkilenmiş kadar eski bir oyun olmalıdır. İyi bir örnek Satranç veya Go olabilir, ancak Pong veya Pac-Man gibi video oyunlarına da göz atabilirsiniz. Oyunun geçmişini, bugününü ve AI ile ilgili geleceğini tartışan bir makale yazın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Yerel dildeki orijinal belge, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/2-Symbolic/README.md b/translations/tr/lessons/2-Symbolic/README.md index 5612cda9..696fef01 100644 --- a/translations/tr/lessons/2-Symbolic/README.md +++ b/translations/tr/lessons/2-Symbolic/README.md @@ -1,107 +1,114 @@ -# Bilgi Temsili ve Uzman Sistemleri + +# Bilgi Temsili ve Uzman Sistemler ![Sembolik AI içeriğinin özeti](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.tr.png) -> Sketchnote [Tomomi Imura](https://twitter.com/girlie_mac) tarafından +> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac) -Yapay zeka arayışı, insanlara benzer şekilde dünyayı anlamak için bilgi arayışına dayanır. Peki, bunu nasıl yapabilirsiniz? +Yapay zeka arayışı, dünyayı insanların yaptığı gibi anlamlandırmak için bilgi arayışına dayanır. Peki, bunu nasıl gerçekleştirebilirsiniz? -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) -Yapay zekanın ilk dönemlerinde, zeki sistemler oluşturmak için yukarıdan aşağıya yaklaşım (önceki derste tartışılan) popülerdi. Fikir, bilgiyi insanlardan makine tarafından okunabilir bir forma çıkarmak ve ardından bunu otomatik olarak sorunları çözmek için kullanmaktı. Bu yaklaşım iki büyük fikre dayanıyordu: +Yapay zekanın ilk zamanlarında, zeki sistemler oluşturmak için yukarıdan aşağıya yaklaşım (önceki derste tartışılmıştı) popülerdi. Fikir, insanlardan bilgiyi alıp makine tarafından okunabilir bir forma dönüştürmek ve ardından bu bilgiyi otomatik olarak problem çözmek için kullanmaktı. Bu yaklaşım iki büyük fikre dayanıyordu: * Bilgi Temsili * Akıl Yürütme ## Bilgi Temsili -Sembolik AI'deki önemli kavramlardan biri **bilgidir**. Bilgiyi *bilgi* veya *veri* ile ayırt etmek önemlidir. Örneğin, kitapların bilgi içerdiğini söyleyebiliriz, çünkü kitapları inceleyerek uzmanlaşabiliriz. Ancak, kitapların içeriği aslında *veri* olarak adlandırılır ve bu verileri okuyarak ve dünyamız modeline entegre ederek bu verileri bilgiye dönüştürürüz. +Sembolik AI'deki önemli kavramlardan biri **bilgi**dir. Bilgiyi *bilgi* ya da *veri*den ayırmak önemlidir. Örneğin, kitapların bilgi içerdiğini söyleyebiliriz çünkü kitapları okuyarak uzmanlaşabiliriz. Ancak, kitapların içerdiği şey aslında *veri*dir ve kitapları okuyarak ve bu veriyi dünya modelimize entegre ederek bu veriyi bilgiye dönüştürürüz. -> ✅ **Bilgi**, kafamızda bulunan ve dünyayı anlama şeklimizi temsil eden bir şeydir. Aktif bir **öğrenme** süreci ile elde edilir; bu süreç, aldığımız bilgi parçalarını aktif dünya modelimize entegre eder. +> ✅ **Bilgi**, kafamızda bulunan ve dünyayı anlama şeklimizi temsil eden bir şeydir. Bu, aldığımız bilgi parçalarını aktif dünya modelimize entegre eden aktif bir **öğrenme** süreciyle elde edilir. -Çoğu zaman bilgiyi katı bir şekilde tanımlamayız, ancak [DIKW Piramidi](https://en.wikipedia.org/wiki/DIKW_pyramid) gibi diğer ilgili kavramlarla ilişkilendiririz. Bu, aşağıdaki kavramları içerir: +Çoğu zaman bilgiyi kesin olarak tanımlamayız, ancak onu diğer ilgili kavramlarla [DIKW Piramidi](https://en.wikipedia.org/wiki/DIKW_pyramid) kullanarak hizalarız. Bu piramit şu kavramları içerir: -* **Veri**, fiziksel medya üzerinde temsil edilen bir şeydir; yazılı metin veya sözel kelimeler gibi. Veri, insanlardan bağımsız olarak var olur ve insanlar arasında aktarılabilir. -* **Bilgi**, veriyi kafamızda nasıl yorumladığımızdır. Örneğin, "bilgisayar" kelimesini duyduğumuzda, bunun ne olduğu hakkında bir anlayışımız vardır. -* **Bilgi**, bilgilerin dünya modelimize entegre edilmesidir. Örneğin, bir bilgisayarın ne olduğunu öğrendiğimizde, bunun nasıl çalıştığı, ne kadar maliyeti olduğu ve ne amaçla kullanılabileceği hakkında bazı fikirler edinmeye başlarız. Bu birbiriyle ilişkili kavramlar ağı, bilgimizi oluşturur. -* **Bilgelik**, dünyayı anlama seviyemizin bir başka boyutudur ve *meta-bilgi* temsil eder; örneğin, bilginin nasıl ve ne zaman kullanılacağına dair bir kavram. +* **Veri**, yazılı metin veya konuşulan kelimeler gibi fiziksel bir ortamda temsil edilen bir şeydir. Veri, insanlardan bağımsız olarak var olur ve insanlar arasında aktarılabilir. +* **Bilgi**, veriyi kafamızda nasıl yorumladığımızdır. Örneğin, *bilgisayar* kelimesini duyduğumuzda, onun ne olduğunu anlarız. +* **Bilgi**, bilginin dünya modelimize entegre edilmesidir. Örneğin, bir bilgisayarın ne olduğunu öğrendiğimizde, onun nasıl çalıştığı, ne kadar maliyeti olduğu ve ne için kullanılabileceği hakkında bazı fikirler ediniriz. Bu birbiriyle ilişkili kavramlar ağı, bilgimizi oluşturur. +* **Bilgelik**, dünyayı anlama seviyemizin bir üst seviyesidir ve *meta-bilgi*yi temsil eder, örneğin bilginin nasıl ve ne zaman kullanılacağına dair bir kavrayış. - +*Image [from Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* -*Görsel [Wikipedia'dan](https://commons.wikimedia.org/w/index.php?curid=37705247), Longlivetheux - Kendi çalışması, CC BY-SA 4.0* - -Böylece, **bilgi temsili** sorunu, bilgiyi bir bilgisayar içinde veri biçiminde etkili bir şekilde temsil etmenin bir yolunu bulmaktır, böylece otomatik olarak kullanılabilir hale gelir. Bu, bir spektrum olarak görülebilir: +Dolayısıyla, **bilgi temsili** problemi, bilgiyi bilgisayar içinde veri biçiminde etkili bir şekilde temsil etmenin bir yolunu bulmaktır, böylece otomatik olarak kullanılabilir hale gelir. Bu, bir spektrum olarak görülebilir: ![Bilgi temsili spektrumu](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.tr.png) -> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından +> Görsel: [Dmitry Soshnikov](http://soshnikov.com) -* Solda, bilgisayarlar tarafından etkili bir şekilde kullanılabilen çok basit bilgi temsilleri vardır. En basiti algoritmik olanıdır; burada bilgi, bir bilgisayar programı ile temsil edilir. Ancak, bu bilgi temsilinin en iyi yolu değildir, çünkü esnek değildir. Kafamızdaki bilgi genellikle algoritmik değildir. -* Sağda, doğal metin gibi temsiller vardır. En güçlü olanıdır, ancak otomatik akıl yürütme için kullanılamaz. +* Solda, bilgisayarlar tarafından etkili bir şekilde kullanılabilecek çok basit bilgi temsilleri vardır. En basiti algoritmik olanıdır; bilgi bir bilgisayar programı ile temsil edilir. Ancak, bu bilgi temsili için en iyi yol değildir çünkü esnek değildir. Kafamızdaki bilgi genellikle algoritmik değildir. +* Sağda, doğal metin gibi temsiller vardır. Bu en güçlü olanıdır, ancak otomatik akıl yürütme için kullanılamaz. -> ✅ Bilgiyi kafanızda nasıl temsil ettiğinizi ve notlara dönüştürdüğünüzü bir dakika düşünün. Hatırlamayı kolaylaştırmak için sizin için iyi çalışan belirli bir format var mı? +> ✅ Bilgiyi kafanızda nasıl temsil ettiğinizi ve bunu notlara nasıl dönüştürdüğünüzü bir dakika düşünün. Bilgiyi daha iyi hatırlamanıza yardımcı olan belirli bir format var mı? -## Bilgisayar Bilgi Temsillerinin Sınıflandırılması +## Bilgisayar Bilgi Temsillerini Sınıflandırma -Farklı bilgisayar bilgi temsil yöntemlerini aşağıdaki kategorilere ayırabiliriz: +Bilgisayar bilgi temsili yöntemlerini şu kategorilerde sınıflandırabiliriz: -* **Ağ temsilleri**, kafamızda birbiriyle ilişkili kavramlar ağına sahip olduğumuz gerçeğine dayanır. Aynı ağları bir graf olarak bir bilgisayarda yeniden üretmeye çalışabiliriz - buna **anlamsal ağ** denir. +* **Ağ temsilleri**, kafamızda birbiriyle ilişkili kavramların bir ağı olduğu gerçeğine dayanır. Aynı ağları bir bilgisayar içinde bir grafik olarak yeniden oluşturabiliriz - bu, **anlamsal ağ** olarak adlandırılır. -1. **Nesne-Aitlik-Değer üçlüleri** veya **aitlik-değer çiftleri**. Bir graf, bilgisayarda düğüm ve kenar listesini temsil edebileceği için, bir anlamsal ağı, nesneleri, özellikleri ve değerleri içeren üçlüler listesi ile temsil edebiliriz. Örneğin, programlama dilleri hakkında aşağıdaki üçlüleri oluştururuz: +1. **Nesne-Özellik-Değer üçlüleri** veya **özellik-değer çiftleri**. Bir grafik, bilgisayar içinde bir düğüm ve kenar listesi olarak temsil edilebildiğinden, bir anlamsal ağı nesneler, özellikler ve değerler içeren bir üçlü listesiyle temsil edebiliriz. Örneğin, programlama dilleri hakkında şu üçlüleri oluşturabiliriz: -Nesne | Aitlik | Değer +Nesne | Özellik | Değer -------|-----------|------ -Python | dir | Tipleme-İçermeyen-Dil -Python | icat-edildi | Guido van Rossum -Python | blok-sözdizimi | girinti -Tipleme-İçermeyen-Dil | yoktur | tür tanımlamaları +Python | is | Türsüz Dil +Python | invented-by | Guido van Rossum +Python | blok-syntax | girinti +Türsüz Dil | doesn't have | tür tanımları > ✅ Üçlülerin diğer bilgi türlerini temsil etmek için nasıl kullanılabileceğini düşünün. -2. **Hiyerarşik temsiller**, kafamızda sık sık nesnelerin bir hiyerarşisini oluşturduğumuzu vurgular. Örneğin, kanaryanın bir kuş olduğunu ve tüm kuşların kanatları olduğunu biliriz. Ayrıca, bir kanaryanın genellikle hangi renkte olduğunu ve uçuş hızının ne olduğunu da biliyoruz. +2. **Hiyerarşik temsiller**, kafamızda genellikle nesnelerin bir hiyerarşisini oluşturduğumuzu vurgular. Örneğin, kanaryanın bir kuş olduğunu ve tüm kuşların kanatları olduğunu biliriz. Ayrıca, kanaryanın genellikle ne renk olduğu ve uçuş hızları hakkında bir fikrimiz vardır. - - **Çerçeve temsili**, her nesneyi veya nesne sınıfını, **slotlar** içeren bir **çerçeve** olarak temsil etmeye dayanır. Slotların varsayılan değerleri, değer kısıtlamaları veya bir slotun değerini elde etmek için çağrılabilecek saklanan prosedürleri olabilir. Tüm çerçeveler, nesne yönelimli programlama dillerindeki nesne hiyerarşisine benzer bir hiyerarşi oluşturur. + - **Çerçeve temsili**, her nesneyi veya nesne sınıfını **çerçeve** olarak temsil etmeye dayanır ve bu çerçeve **yuvalar** içerir. Yuvalar, olası varsayılan değerlere, değer kısıtlamalarına veya bir yuvanın değerini elde etmek için çağrılabilecek saklı prosedürlere sahip olabilir. Tüm çerçeveler, nesne yönelimli programlama dillerindeki nesne hiyerarşisine benzer bir hiyerarşi oluşturur. - **Senaryolar**, zaman içinde gelişebilecek karmaşık durumları temsil eden özel bir çerçeve türüdür. **Python** -Slot | Değer | Varsayılan değer | Aralık | ------|-------|---------------|----------| -İsim | Python | | | -Şu-Dir | Tipleme-İçermeyen-Dil | | | +Yuva | Değer | Varsayılan Değer | Aralık | +-----|-------|------------------|--------| +Ad | Python | | | +Is-A | Türsüz Dil | | | Değişken Durumu | | CamelCase | | Program Uzunluğu | | | 5-5000 satır | Blok Sözdizimi | Girinti | | | -3. **Prosedürel temsiller**, bilgiyi belirli bir koşul gerçekleştiğinde yürütülebilecek eylemler listesi olarak temsil etmeye dayanır. - - Üretim kuralları, sonuç çıkarmamıza izin veren eğer-o zaman ifadeleridir. Örneğin, bir doktorun "Eğer" bir hastada yüksek ateş "veya" kan testinde yüksek C-reaktif protein varsa "o zaman" bir iltihabı vardır şeklinde bir kuralı olabilir. Koşullardan birine ulaştığımızda, iltihap hakkında bir sonuç çıkarabiliriz ve bunu daha sonraki akıl yürütmede kullanabiliriz. - - Algoritmalar, prosedürel temsilin başka bir biçimi olarak düşünülebilir, ancak neredeyse hiçbiri bilgi tabanlı sistemlerde doğrudan kullanılmaz. +3. **Prosedürel temsiller**, belirli bir koşul oluştuğunda yürütülebilecek bir dizi eylemle bilgiyi temsil etmeye dayanır. + - Üretim kuralları, sonuç çıkarmamıza olanak tanıyan eğer-o zaman ifadeleridir. Örneğin, bir doktorun şu şekilde bir kuralı olabilir: **EĞER** bir hastada yüksek ateş **VEYA** kan testinde yüksek C-reaktif protein seviyesi varsa, **O ZAMAN** iltihaplanması vardır. Koşullardan birini karşılaştığımızda, iltihaplanma hakkında bir sonuca varabiliriz ve ardından bunu daha ileri akıl yürütmede kullanabiliriz. + - Algoritmalar, prosedürel temsillerin başka bir biçimi olarak kabul edilebilir, ancak bilgi tabanlı sistemlerde neredeyse hiç doğrudan kullanılmazlar. -4. **Mantık**, Aristoteles tarafından evrensel insan bilgisini temsil etmenin bir yolu olarak önerilmiştir. - - Matematiksel bir teori olarak Predikat Mantığı, hesaplanabilirlik açısından çok zengin olduğu için genellikle bunun bir alt kümesi kullanılır; örneğin, Prolog'da kullanılan Horn cümleleri. - - Tanımlayıcı Mantık, nesnelerin hiyerarşilerini temsil etmek ve akıl yürütmek için kullanılan mantıksal sistemler ailesidir; bu tür sistemler arasında *anlamsal web* yer alır. +4. **Mantık**, evrensel insan bilgisini temsil etmenin bir yolu olarak Aristoteles tarafından önerilmiştir. + - Önerme Mantığı, matematiksel bir teori olarak hesaplanabilir olmayacak kadar zengindir, bu nedenle genellikle Prolog'da kullanılan Horn cümleleri gibi bir alt kümesi kullanılır. + - Tanımlayıcı Mantık, *anlamsal web* gibi dağıtılmış bilgi temsilleri ve nesne hiyerarşilerini temsil etmek ve bunlar üzerinde akıl yürütmek için kullanılan mantıksal sistemler ailesidir. -## Uzman Sistemleri +## Uzman Sistemler -Sembolik AI'nin erken başarılarından biri, belirli bir problem alanında uzman olarak hareket etmek üzere tasarlanmış bilgisayar sistemleri olan **uzman sistemleridir**. Bunlar, bir veya daha fazla insan uzmanından çıkarılan bir **bilgi tabanı** üzerine kurulmuştur ve üzerinde bazı akıl yürütmeler yapan bir **çıkarım motoru** içerir. +Sembolik AI'nın erken başarılarından biri, belirli bir problem alanında uzman gibi davranmak üzere tasarlanmış **uzman sistemler**di. Bu sistemler, bir veya daha fazla insan uzmandan çıkarılan bir **bilgi tabanı**na dayanıyordu ve bunun üzerinde bazı akıl yürütmeler gerçekleştiren bir **çıkarım motoru** içeriyordu. ![İnsan Mimarisi](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.tr.png) | ![Bilgi Tabanlı Sistem](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.tr.png) ---------------------------------------------|------------------------------------------------ İnsan sinir sisteminin basitleştirilmiş yapısı | Bilgi tabanlı sistemin mimarisi -Uzman sistemleri, **kısa süreli bellek** ve **uzun süreli bellek** içeren insan akıl yürütme sistemi gibi inşa edilmiştir. Benzer şekilde, bilgi tabanlı sistemlerde aşağıdaki bileşenleri ayırt ederiz: +Uzman sistemler, insan akıl yürütme sistemine benzer şekilde inşa edilir; bu sistem **kısa süreli hafıza** ve **uzun süreli hafıza** içerir. Benzer şekilde, bilgi tabanlı sistemlerde şu bileşenleri ayırt ederiz: -* **Problem belleği**: şu anda çözülen problem hakkında bilgiyi içerir; yani bir hastanın sıcaklığı veya kan basıncı, iltihap olup olmadığı vb. Bu bilgi, şu anda problem hakkında bildiklerimizin bir anlık görüntüsünü içerdiği için **statik bilgi** olarak da adlandırılır - bu, söz konusu *problem durumu*dur. -* **Bilgi tabanı**: bir problem alanı hakkında uzun süreli bilgiyi temsil eder. Bu, insan uzmanlarından manuel olarak çıkarılır ve danışmadan danışmaya değişmez. Bir problem durumundan diğerine geçiş yapmamıza olanak tanıdığı için, bu aynı zamanda **dinamik bilgi** olarak da adlandırılır. -* **Çıkarım motoru**: problem durumu alanında arama sürecini düzenler, gerektiğinde kullanıcıya sorular sorar. Ayrıca, her duruma uygulanacak doğru kuralları bulmaktan da sorumludur. +* **Problem hafızası**: Şu anda çözülmekte olan problem hakkındaki bilgileri içerir, örneğin bir hastanın sıcaklığı veya kan basıncı, iltihaplanması olup olmadığı vb. Bu bilgiye **statik bilgi** de denir çünkü şu anda problem hakkında bildiklerimizin bir anlık görüntüsünü içerir - bu, *problem durumu* olarak adlandırılır. +* **Bilgi tabanı**: Bir problem alanı hakkındaki uzun süreli bilgiyi temsil eder. İnsan uzmanlardan manuel olarak çıkarılır ve danışmadan danışmaya değişmez. Çünkü bir problem durumundan diğerine geçiş yapmamıza olanak tanır, bu nedenle **dinamik bilgi** olarak da adlandırılır. +* **Çıkarım motoru**: Problem durumu alanında arama sürecini yönlendirir, gerektiğinde kullanıcıya sorular sorar. Ayrıca her duruma uygulanacak doğru kuralları bulmaktan da sorumludur. -Örnek olarak, fiziksel özelliklerine dayanarak bir hayvanı belirleyen aşağıdaki uzman sistemini düşünelim: +Örneğin, fiziksel özelliklere dayalı bir hayvanı belirlemek için şu uzman sistemini ele alalım: -![VE-VEYA Ağaç](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tr.png) +![AND-OR Ağacı](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tr.png) -> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından +> Görsel: [Dmitry Soshnikov](http://soshnikov.com) -Bu diyagram bir **VE-VEYA ağacı** olarak adlandırılır ve bir dizi üretim kuralının grafiksel bir temsilidir. Bir ağacın çizilmesi, uzman bilgilerini çıkarmanın başlangıcında faydalıdır. Bilgisayar içinde bilgiyi temsil etmek için kuralları kullanmak daha uygundur: +Bu diyagram bir **AND-OR ağacı** olarak adlandırılır ve bir dizi üretim kuralının grafiksel bir temsilidir. Bir uzmandan bilgi çıkarma sürecinin başında bir ağaç çizmek faydalıdır. Bilgiyi bilgisayar içinde temsil etmek için kuralları kullanmak daha uygundur: ``` IF the animal eats meat @@ -112,59 +119,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Kuralların sol tarafındaki her koşul ve eylem esasen nesne-aitlik-değer (OAV) üçlüleridir. **Çalışma belleği**, şu anda çözülen probleme karşılık gelen OAV üçlüleri setini içerir. Bir **kural motoru**, bir koşulun karşılandığı kuralları arar ve uygular, çalışma belleğine başka bir üçlü ekler. +Her kuralın sol tarafındaki koşul ve eylemin aslında nesne-özellik-değer (OÖD) üçlüleri olduğunu fark edebilirsiniz. **Çalışma hafızası**, şu anda çözülmekte olan problemle ilgili OÖD üçlülerini içerir. Bir **kural motoru**, bir koşulun sağlandığı kuralları arar ve bunları uygular, çalışma hafızasına başka bir üçlü ekler. -> ✅ Sevdiğiniz bir konuda kendi VE-VEYA ağacınızı çizin! +> ✅ Sevdiğiniz bir konu hakkında kendi AND-OR ağacınızı çizin! ### İleri ve Geri Çıkarım -Yukarıda tanımlanan süreç **ileri çıkarım** olarak adlandırılır. Bu, çalışma belleğinde mevcut olan problemle ilgili bazı başlangıç verileri ile başlar ve ardından şu akıl yürütme döngüsünü yürütür: +Yukarıda açıklanan süreç **ileri çıkarım** olarak adlandırılır. Çalışma hafızasında problemle ilgili bazı başlangıç verileriyle başlar ve ardından şu akıl yürütme döngüsünü yürütür: -1. Hedef özellik çalışma belleğinde mevcutsa - dur ve sonucu ver -2. Şu anda koşulu karşılanan tüm kuralları ara - **çelişki seti** elde et. -3. **Çelişki çözümü** gerçekleştir - bu adımda uygulanacak bir kural seç. Farklı çelişki çözümleme stratejileri olabilir: +1. Hedef özellik çalışma hafızasında mevcutsa - dur ve sonucu ver +2. Koşulu şu anda sağlanan tüm kuralları ara - bir **çatışma kümesi** elde et. +3. **Çatışma çözümü** yap - bu adımda yürütülecek bir kural seç. Farklı çatışma çözüm stratejileri olabilir: - Bilgi tabanındaki ilk uygulanabilir kuralı seç - Rastgele bir kural seç - - En çok koşulu karşılayan *daha spesifik* bir kural seç, yani "sol taraf" (LHS) koşullarını en çok karşılayan kural -4. Seçilen kuralı uygula ve problem durumuna yeni bir bilgi ekle -5. 1. adıma geri dön. + - *Daha spesifik* bir kural seç, yani "sol taraf" (LHS) koşullarının çoğunu karşılayan bir kural +4. Seçilen kuralı uygula ve problem durumuna yeni bir bilgi parçası ekle +5. 1. adımdan tekrar et. -Ancak, bazı durumlarda, problem hakkında boş bir bilgi ile başlamak isteyebiliriz ve sonuca ulaşmamıza yardımcı olacak sorular sorabiliriz. Örneğin, tıbbi teşhis yaparken, genellikle hastayı teşhis etmeye başlamadan önce tüm tıbbi analizleri yapmayız. Daha çok, bir karar vermemiz gerektiğinde analizler yapmak isteriz. +Ancak, bazı durumlarda problem hakkında hiçbir bilgiye sahip olmadan başlayabilir ve sonuca ulaşmamıza yardımcı olacak sorular sorabiliriz. Örneğin, tıbbi teşhis yaparken, hastayı teşhis etmeye başlamadan önce tüm tıbbi analizleri önceden yapmayız. Bunun yerine, bir karar verilmesi gerektiğinde analiz yapmak isteriz. -Bu süreç **geri çıkarım** kullanılarak modellenebilir. **Amaç** tarafından yönlendirilir - bulmaya çalıştığımız özellik değeri: +Bu süreç **geri çıkarım** kullanılarak modellenebilir. Bu, aradığımız **hedef** tarafından yönlendirilir - bulmaya çalıştığımız özellik değeri: -1. Amaç değerini verebilecek tüm kuralları seçin (yani, amaç sağ tarafta ("sağ taraf")) - bir çelişki seti -1. Bu özellik için kural yoksa ya da kullanıcıdan değer istememiz gerektiğini belirten bir kural varsa - bunu isteyin, aksi takdirde: -1. Bir hipotez olarak kullanacağımız bir kural seçmek için çelişki çözümleme stratejisini kullanın - bunu kanıtlamaya çalışacağız -1. Kuralın LHS'sindeki tüm özellikler için süreci tekrarlayın, bunları hedefler olarak kanıtlamaya çalışarak -1. Herhangi bir noktada süreç başarısız olursa - 3. adımda başka bir kural kullanın. +1. Bir hedefin değerini verebilecek tüm kuralları seç (örneğin, hedef sağ tarafta (RHS) olan kurallar) - bir çatışma kümesi +1. Bu özellik için hiçbir kural yoksa veya kullanıcıdan değeri sormamız gerektiğini söyleyen bir kural varsa - kullanıcıya sor, aksi takdirde: +1. Çatışma çözüm stratejisini kullanarak *hipotez* olarak kullanacağımız bir kural seç - bunu kanıtlamaya çalışacağız +1. Kuralların sol tarafındaki tüm özellikler için süreci yineleyerek bunları hedef olarak kanıtlamaya çalış +1. Süreç herhangi bir noktada başarısız olursa - 3. adımda başka bir kural kullan. -> ✅ Hangi durumlarda ileri çıkarım daha uygun? Geri çıkarım hakkında ne dersiniz? +> ✅ Hangi durumlarda ileri çıkarım daha uygundur? Peki ya geri çıkarım? -### Uzman Sistemlerin Uygulanması +### Uzman Sistemleri Uygulama -Uzman sistemler, farklı araçlar kullanılarak uygulanabilir: +Uzman sistemleri farklı araçlar kullanılarak uygulanabilir: -* Bunları doğrudan bazı yüksek seviyeli programlama dillerinde programlamak. Bu en iyi fikir değildir, çünkü bilgi tabanlı bir sistemin ana avantajı bilginin çıkarımdan ayrılmasıdır ve potansiyel olarak bir problem alanı uzmanı, çıkarım sürecinin ayrıntılarını anlamadan kurallar yazabilmelidir. -* **Uzman sistemler kabuğu** kullanmak, yani bazı bilgi temsil dilleri kullanarak bilgi ile doldurulması için özel olarak tasarlanmış bir sistem. +* Doğrudan bir yüksek seviyeli programlama dilinde programlamak. Bu en iyi fikir değildir çünkü bilgi tabanlı bir sistemin ana avantajı, bilginin çıkarımdan ayrılmasıdır ve potansiyel olarak bir problem alanı uzmanı, çıkarım sürecinin ayrıntılarını anlamadan kurallar yazabilmelidir. +* **Uzman sistem kabuğu** kullanmak, yani bilgi temsili dili kullanılarak bilgiyle doldurulmak üzere özel olarak tasarlanmış bir sistem. -## ✍️ Alıştırma: Hayvan Çıkarımı - -İleri ve geri çıkarım uzman sisteminin uygulanmasına bir örnek için [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) dosyasına bakın. - -> **Not**: Bu örnek oldukça basit olup, bir uzman sistemin nasıl göründüğüne dair sadece bir fikir vermektedir. Böyle bir sistem oluşturmaya başladığınızda, yaklaşık 200 kurala ulaştığınızda, sistemin belirli kararlar alma biçiminde bazı *zeka* davranışları fark edeceksiniz. Bir noktada, kurallar çok karmaşık hale gelir ve bunların hepsini akılda tutmak zorlaşır, bu noktada bir sistemin neden belirli kararlar verdiğini sorgulamaya başlayabilirsiniz. Ancak, bilgi tabanlı sistemlerin önemli bir özelliği, herhangi bir kararın nasıl alındığını her zaman *açıklayabilmenizdir*. +## ✍️ Egzersiz: Hayvan Çıkarımı +İleri ve geri çıkarım uzman sistemi uygulama örneği için [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) dosyasına bakın. +> **Not**: Bu örnek oldukça basittir ve yalnızca bir uzman sistemin nasıl göründüğüne dair bir fikir verir. Böyle bir sistem oluşturmaya başladığınızda, yalnızca belirli bir kural sayısına, yaklaşık 200+ kurala ulaştığınızda *zeki* bir davranış fark etmeye başlarsınız. Bir noktada, kurallar o kadar karmaşık hale gelir ki, hepsini akılda tutmak zorlaşır ve bu noktada sistemin neden belirli kararlar verdiğini merak etmeye başlayabilirsiniz. Ancak, bilgi tabanlı sistemlerin önemli özelliklerinden biri, alınan herhangi bir kararın tam olarak nasıl verildiğini her zaman *açıklayabilmenizdir*. ## Ontolojiler ve Anlamsal Web -20. yüzyılın sonunda, internet kaynaklarını işaretlemek için bilgi temsili kullanma girişimi vardı, böylece çok özel sorgulara karşılık gelen kaynakları bulmak mümkün olabilirdi. Bu hareket **Anlamsal Web** olarak adlandırıldı ve birkaç kavrama dayanıyordu: +20. yüzyılın sonunda, İnternet kaynaklarını bilgi temsili kullanarak açıklama girişimi ortaya çıktı. Bu sayede, çok spesifik sorgulara karşılık gelen kaynakları bulmak mümkün olacaktı. Bu girişim **Anlamsal Web** olarak adlandırıldı ve birkaç kavrama dayanıyordu: -- **[Tanım mantıkları](https://en.wikipedia.org/wiki/Description_logic)** (DL) üzerine kurulu özel bir bilgi temsili. Bu, özelliklerle nesnelerin bir hiyerarşisini oluşturduğu için çerçeve bilgi temsilinin benzeridir, ancak resmi mantıksal anlamı ve çıkarımı vardır. İfade gücü ve çıkarımın algoritmik karmaşıklığı arasında denge kuran bir dizi DL vardır. -- Tüm kavramların küresel bir URI tanımlayıcısı ile temsil edildiği dağıtık bilgi temsili, interneti kapsayan bilgi hiyerarşileri oluşturmayı mümkün kılar. -- Bilgi tanımlamak için XML tabanlı diller ailesi: RDF (Kaynak Tanım Çerçevesi), RDFS (RDF Şeması), OWL (Ontoloji Web Dili). +- **[Tanım mantıkları](https://en.wikipedia.org/wiki/Description_logic)** (DL) temelli özel bir bilgi temsili. Çerçeve bilgi temsiline benzer, çünkü özelliklere sahip nesnelerin bir hiyerarşisini oluşturur, ancak formal mantıksal semantiğe ve çıkarıma sahiptir. Çıkarımın ifade gücü ve algoritmik karmaşıklığı arasında denge kuran bir DL ailesi vardır. +- Dağıtılmış bilgi temsili, tüm kavramların küresel bir URI tanımlayıcısı ile temsil edildiği, interneti kapsayan bilgi hiyerarşileri oluşturmayı mümkün kılan bir yapı. +- Bilgi açıklaması için XML tabanlı bir dil ailesi: RDF (Kaynak Tanım Çerçevesi), RDFS (RDF Şeması), OWL (Ontoloji Web Dili). -Anlamsal Web'deki temel kavram, **Ontoloji** kavramıdır. Bu, belirli bir problem alanının bazı resmi bilgi temsili kullanılarak açık bir şekilde tanımlanmasını ifade eder. En basit ontoloji, bir problem alanındaki nesnelerin hiyerarşisi olabilir, ancak daha karmaşık ontolojiler çıkarım için kullanılabilecek kuralları içerecektir. +Anlamsal Web'in temel kavramı **Ontoloji** kavramıdır. Bu, bir problem alanının formal bir bilgi temsili kullanılarak açık bir şekilde tanımlanmasını ifade eder. En basit ontoloji, bir problem alanındaki nesnelerin bir hiyerarşisi olabilir, ancak daha karmaşık ontolojiler çıkarım için kullanılabilecek kuralları içerir. -Anlamsal webde, tüm temsiller üçlüler üzerine kuruludur. Her nesne ve her ilişki, URI ile benzersiz bir şekilde tanımlanır. Örneğin, bu AI Müfredatının 1 Ocak 2022'de Dmitry Soshnikov tarafından geliştirildiğini belirtmek istersek - kullanabileceğimiz üçlüler şunlardır: +Anlamsal webde, tüm temsiller üçlüler üzerine kuruludur. Her nesne ve her ilişki URI ile benzersiz bir şekilde tanımlanır. Örneğin, bu AI Müfredatının Dmitry Soshnikov tarafından 1 Ocak 2022'de geliştirildiği gerçeğini ifade etmek istersek, kullanabileceğimiz üçlüler şunlardır: @@ -173,15 +178,71 @@ http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creati http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com ``` -> ✅ Burada `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator`, *yaratıcı* ve *oluşturma tarihi* kavramlarını ifade etmek için bazı iyi bilinen ve evrensel olarak kabul edilen URI'lardır. +> ✅ Burada `http://www.example.com/terms/creation-date` ve `http://purl.org/dc/elements/1.1/creator` *yaratıcı* ve *oluşturma tarihi* kavramlarını ifade etmek için kullanılan, iyi bilinen ve evrensel olarak kabul edilen URI'lardır. -Daha karmaşık bir durumda, bir yaratıcılar listesi tanımlamak istersek, RDF'de tanımlanan bazı veri yapıları kullanabiliriz. +Daha karmaşık bir durumda, bir yaratıcılar listesini tanımlamak istersek, RDF'de tanımlanan bazı veri yapılarını kullanabiliriz. -> Yukarıdaki diyagramlar [Dmitry Soshnikov](http://soshnikov.com) tarafından +> Yukarıdaki diyagramlar [Dmitry Soshnikov](http://soshnikov.com) tarafından hazırlanmıştır. -Anlamsal Web'in inşası, arama motorlarının ve doğal dil işleme tekniklerinin başarısı nedeniyle bir nebze yavaşladı; bu teknikler metinden yapılandırılmış verileri çıkarmayı mümkün kılmaktadır. Ancak, bazı alanlarda hala ontolojileri ve bilgi tabanlarını sürdürmek için önemli çabalar gösterilmektedir. Dikkate değer birkaç +Anlamsal Web'in inşa edilmesindeki ilerleme, arama motorlarının ve metinden yapılandırılmış veri çıkarılmasını sağlayan doğal dil işleme tekniklerinin başarısı nedeniyle bir ölçüde yavaşladı. Ancak, bazı alanlarda ontolojileri ve bilgi tabanlarını sürdürmek için hala önemli çabalar gösterilmektedir. Dikkate değer birkaç proje: -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Yerel dildeki orijinal belge, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +* [WikiData](https://wikidata.org/) Wikipedia ile ilişkili makine tarafından okunabilir bilgi tabanlarının bir koleksiyonudur. Verilerin çoğu, Wikipedia sayfalarındaki yapılandırılmış içerik parçaları olan *InfoBox*lardan çıkarılır. WikiData'yı Anlamsal Web için özel bir sorgu dili olan SPARQL ile [sorgulayabilirsiniz](https://query.wikidata.org/). İşte insanların en popüler göz renklerini gösteren örnek bir sorgu: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) WikiData'ya benzer başka bir girişimdir. + +> ✅ Kendi ontolojilerinizi oluşturmayı veya mevcut olanları açmayı denemek istiyorsanız, [Protégé](https://protege.stanford.edu/) adlı harika bir görsel ontoloji düzenleyici var. İndirin veya çevrimiçi kullanın. + + + +*Web Protégé düzenleyicisi Romanov Ailesi ontolojisi ile açık. Dmitry Soshnikov tarafından ekran görüntüsü.* + +## ✍️ Alıştırma: Bir Aile Ontolojisi + +Aile ilişkileri hakkında Anlamsal Web tekniklerini kullanmaya dair bir örnek için [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) dosyasına bakın. Yaygın GEDCOM formatında temsil edilen bir aile ağacını ve aile ilişkileri ontolojisini alacağız ve belirli bireyler için tüm aile ilişkilerinin bir grafiğini oluşturacağız. + +## Microsoft Kavram Grafiği + +Çoğu durumda, ontolojiler dikkatlice elle oluşturulur. Ancak, ontolojileri yapılandırılmamış verilerden, örneğin doğal dil metinlerinden **çıkarmak** da mümkündür. + +Microsoft Research tarafından yapılan böyle bir girişim, [Microsoft Kavram Grafiği](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) ile sonuçlandı. + +Bu, `is-a` kalıtım ilişkisi kullanılarak gruplandırılmış büyük bir varlık koleksiyonudur. "Microsoft nedir?" gibi soruları yanıtlamayı sağlar - yanıt, "bir şirket (olasılık 0.87) ve bir marka (olasılık 0.75)" gibi bir şeydir. + +Grafik, REST API olarak veya tüm varlık çiftlerini listeleyen büyük bir indirilebilir metin dosyası olarak kullanılabilir. + +## ✍️ Alıştırma: Bir Kavram Grafiği + +Microsoft Kavram Grafiği'ni kullanarak haber makalelerini birkaç kategoriye ayırmayı görmek için [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) defterini deneyin. + +## Sonuç + +Günümüzde, yapay zeka genellikle *Makine Öğrenimi* veya *Sinir Ağları* ile eş anlamlı olarak kabul edilir. Ancak, bir insan açık bir şekilde akıl yürütme sergiler, bu da şu anda sinir ağları tarafından ele alınmayan bir şeydir. Gerçek dünya projelerinde, açık akıl yürütme, açıklama gerektiren veya sistemin davranışını kontrollü bir şekilde değiştirme yeteneği gerektiren görevleri gerçekleştirmek için hala kullanılmaktadır. + +## 🚀 Meydan Okuma + +Bu derse bağlı Aile Ontolojisi defterinde, diğer aile ilişkileriyle deneme yapma fırsatı vardır. Aile ağacındaki insanlar arasında yeni bağlantılar keşfetmeyi deneyin. + +## [Ders sonrası test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## İnceleme ve Kendi Kendine Çalışma + +İnsanların bilgiyi nicelleştirmeye ve kodlamaya çalıştığı alanları keşfetmek için internette araştırma yapın. Bloom'un Taksonomisine göz atın ve insanların dünyalarını anlamlandırmaya çalıştığı tarihsel süreçlere geri dönün. Linnaeus'un organizmaların taksonomisini oluşturma çalışmalarını ve Dmitri Mendeleev'in kimyasal elementlerin tanımlanması ve gruplandırılması için bir yol yaratma çabalarını inceleyin. Başka hangi ilginç örnekler bulabilirsiniz? + +**Ödev**: [Bir Ontoloji Oluşturun](assignment.md) + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/2-Symbolic/assignment.md b/translations/tr/lessons/2-Symbolic/assignment.md index 49b9933f..b5b8307b 100644 --- a/translations/tr/lessons/2-Symbolic/assignment.md +++ b/translations/tr/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ -# Ontoloji Oluşturma + +# Bir Ontoloji Oluşturun -Bir bilgi tabanı oluşturmak, bir konuyla ilgili gerçekleri temsil eden bir modeli kategorize etmekle ilgilidir. Bir konu seçin - bir kişi, bir yer veya bir nesne gibi - ve ardından o konunun bir modelini oluşturun. Bu derste açıklanan bazı teknikleri ve model oluşturma stratejilerini kullanın. Bir örnek, mobilyalar, ışıklar ve benzeri ile bir oturma odasının ontolojisini oluşturmak olabilir. Oturma odası mutfaktan nasıl farklıdır? Banyo? Bunun oturma odası olduğunu ve yemek odası olmadığını nasıl biliyorsunuz? Ontolojinizi oluşturmak için [Protégé](https://protege.stanford.edu/) kullanın. +Bir bilgi tabanı oluşturmak, bir konuyla ilgili gerçekleri temsil eden bir modeli kategorize etmekle ilgilidir. Bir konu seçin - bir kişi, bir yer veya bir şey gibi - ve ardından o konunun bir modelini oluşturun. Bu derste açıklanan bazı teknikleri ve model oluşturma stratejilerini kullanın. Örneğin, mobilyalar, ışıklar ve benzeri şeylerle bir oturma odasının ontolojisini oluşturmak olabilir. Oturma odası, mutfaktan nasıl farklıdır? Banyodan? Bunun bir oturma odası olduğunu ve bir yemek odası olmadığını nasıl anlarsınız? Ontolojinizi oluşturmak için [Protégé](https://protege.stanford.edu/) kullanın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, kesin kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md index 6f511a37..858ada2c 100644 --- a/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,52 +1,61 @@ + # Sinir Ağlarına Giriş: Perceptron -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Ders Öncesi Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -Modern sinir ağlarına benzer bir şeyi uygulama girişimlerinden biri, 1957 yılında Cornell Aeronautical Laboratory'dan Frank Rosenblatt tarafından yapılmıştır. Bu, üçgenler, kareler ve daireler gibi ilkel geometrik şekilleri tanımak için tasarlanmış "Mark-1" adlı bir donanım uygulamasıydı. +Modern sinir ağına benzer bir şeyin ilk uygulama girişimlerinden biri, 1957 yılında Cornell Havacılık Laboratuvarı'ndan Frank Rosenblatt tarafından gerçekleştirildi. Bu, "Mark-1" olarak adlandırılan ve üçgenler, kareler ve daireler gibi basit geometrik şekilleri tanımak için tasarlanmış bir donanım uygulamasıydı. | | | |--------------|-----------| -|Frank Rosenblatt | The Mark 1 Perceptron| +|Frank Rosenblatt | Mark 1 Perceptron| > Görseller [Wikipedia'dan](https://en.wikipedia.org/wiki/Perceptron) -Bir giriş resmi, 20x20 fotocel array ile temsil edildi, bu nedenle sinir ağının 400 girişi ve bir ikili çıktısı vardı. Basit bir ağ, bir **eşik mantık birimi** olarak da adlandırılan bir nöron içeriyordu. Sinir ağı ağırlıkları, eğitim aşamasında manuel ayarlama gerektiren potansiyometreler gibi işlev görüyordu. +Giriş görüntüsü, 20x20 fotohücre dizisi ile temsil ediliyordu, bu nedenle sinir ağının 400 girişi ve bir ikili çıkışı vardı. Basit bir ağ, **eşik mantık birimi** olarak da adlandırılan bir nöron içeriyordu. Sinir ağı ağırlıkları, eğitim aşamasında manuel ayar gerektiren potansiyometreler gibi davranıyordu. -> ✅ Potansiyometre, kullanıcının bir devrenin direncini ayarlamasına olanak tanıyan bir cihazdır. +> ✅ Potansiyometre, kullanıcıya bir devrenin direncini ayarlama imkanı veren bir cihazdır. -> New York Times o dönemde perceptron hakkında şunları yazdı: *[Donanmanın] yürüyebilen, konuşabilen, görebilen, yazabilen, kendini üretebilen ve varlığının farkında olabilen bir elektronik bilgisayar embriyosu.* +> New York Times o dönemde perceptron hakkında şunları yazmıştı: *[Donanma'nın] yürüyebilen, konuşabilen, görebilen, yazabilen, kendini çoğaltabilen ve varlığının farkında olabilen bir elektronik bilgisayar embriyosu.* ## Perceptron Modeli -Modelimizde N özellik olduğunu varsayalım, bu durumda giriş vektörü N boyutunda bir vektör olacaktır. Perceptron, **ikili sınıflandırma** modeli olup, yani iki sınıf arasındaki giriş verilerini ayırt edebilir. Her giriş vektörü x için perceptron'un çıktısının ya +1 ya da -1 olacağını varsayacağız, bu da sınıfa bağlıdır. Çıktı, aşağıdaki formül kullanılarak hesaplanacaktır: +Modelimizde N özellik olduğunu varsayalım, bu durumda giriş vektörü N boyutunda bir vektör olacaktır. Bir perceptron, **ikili sınıflandırma** modelidir, yani iki sınıf giriş verisini ayırt edebilir. Her giriş vektörü x için perceptronumuzun çıktısının sınıfa bağlı olarak ya +1 ya da -1 olacağını varsayacağız. Çıktı şu formülle hesaplanacaktır: y(x) = f(wTx) -burada f, bir adım aktivasyon fonksiyonudur. +burada f bir basamak aktivasyon fonksiyonudur. -## Perceptronu Eğitmek +## Perceptron Eğitimi -Bir perceptronu eğitmek için, çoğu değeri doğru sınıflandıran bir ağırlık vektörü w bulmamız gerekiyor, yani en küçük **hata** sonucunu vermek. Bu hata E, aşağıdaki şekilde **perceptron kriteri** ile tanımlanır: +Bir perceptronu eğitmek için, çoğu değeri doğru bir şekilde sınıflandıran, yani en küçük **hata** ile sonuçlanan bir ağırlık vektörü w bulmamız gerekir. Bu hata E, **perceptron kriteri** ile şu şekilde tanımlanır: E(w) = -∑wTxiti burada: -* toplam, yanlış sınıflandırmaya neden olan o eğitim veri noktaları i üzerinde alınır -* xi giriş verisi ve ti sırasıyla negatif ve pozitif örnekler için -1 veya +1'dir. +* toplam, yanlış sınıflandırma ile sonuçlanan eğitim veri noktaları i üzerinde alınır +* xi giriş verisidir ve ti negatif ve pozitif örnekler için sırasıyla -1 veya +1'dir. -Bu kriter, ağırlıklar w'nin bir fonksiyonu olarak kabul edilir ve bunu minimize etmemiz gerekiyor. Genellikle, başlangıçta bazı ağırlıklar w(0) ile başladığımız ve her adımda ağırlıkları aşağıdaki formüle göre güncellediğimiz bir yöntem olan **gradyan inişi** kullanılır: +Bu kriter, ağırlıklar w'nin bir fonksiyonu olarak kabul edilir ve bunu minimize etmemiz gerekir. Genellikle, **gradyan inişi** adı verilen bir yöntem kullanılır; bu yöntemde başlangıçta bazı ağırlıklar w(0) ile başlar ve her adımda ağırlıkları şu formüle göre güncelleriz: w(t+1) = w(t) - η∇E(w) -Burada η, sözde **öğrenme oranı**dır ve ∇E(w) E'nin **gradyanı**nı ifade eder. Gradyanı hesapladıktan sonra şunları elde ederiz: +Burada η, **öğrenme oranı** olarak adlandırılır ve ∇E(w), E'nin **gradyanı** anlamına gelir. Gradyanı hesapladıktan sonra şu formüle ulaşırız: w(t+1) = w(t) + ∑ηxiti -Python'daki algoritma şu şekilde görünmektedir: +Python'daki algoritma şu şekilde görünür: ```python def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): @@ -70,26 +79,26 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): ## Sonuç -Bu derste, ikili sınıflandırma modeli olan bir perceptron hakkında bilgi edindiniz ve bunu bir ağırlık vektörü kullanarak nasıl eğiteceğinizi öğrendiniz. +Bu derste, ikili sınıflandırma modeli olan perceptronu ve ağırlık vektörü kullanarak nasıl eğitileceğini öğrendiniz. -## 🚀 Zorluk +## 🚀 Meydan Okuma -Kendi perceptron'unuzu oluşturmayı denemek isterseniz, [Microsoft Learn'deki bu laboratuvara](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) göz atabilirsiniz. Bu laboratuvar, [Azure ML tasarımcısını](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) kullanmaktadır. +Kendi perceptronunuzu oluşturmayı denemek isterseniz, [Microsoft Learn'deki bu laboratuvarı](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) deneyebilirsiniz. Bu laboratuvar, [Azure ML tasarımcısını](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) kullanır. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Ders Sonrası Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -Perceptron'un nasıl bir oyuncak problemi çözdüğünü ve gerçek yaşam problemlerini nasıl çözebileceğimizi görmek ve öğrenmeye devam etmek için [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) defterine gidin. +Perceptronun bir oyuncak problemi ve gerçek hayattaki problemleri nasıl çözebileceğini görmek ve öğrenmeye devam etmek için [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) not defterine gidin. -Ayrıca, perceptronlar hakkında ilginç bir [makale](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) da var. +İşte perceptronlar hakkında ilginç bir [makale](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). ## [Ödev](lab/README.md) -Bu derste, ikili sınıflandırma görevi için bir perceptron uyguladık ve iki el yazısı rakamı arasında sınıflandırma yapmak için kullandık. Bu laboratuvar, bir görüntüye en uygun rakamın hangisi olduğunu belirleyerek rakam sınıflandırma problemini tamamen çözmenizi istiyor. +Bu derste, ikili sınıflandırma görevi için bir perceptron uyguladık ve bunu iki el yazısı rakam arasında sınıflandırma yapmak için kullandık. Bu laboratuvarda, rakam sınıflandırma problemini tamamen çözmeniz isteniyor, yani verilen bir görüntünün en olası hangi rakama karşılık geldiğini belirlemeniz gerekiyor. * [Talimatlar](lab/README.md) -* [Defter](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +* [Not Defteri](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index 43fe681a..b942274e 100644 --- a/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ -# Çoklu Sınıf Sınıflandırması ile Perceptron + +# Perceptron ile Çok Sınıflı Sınıflandırma -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) projesinden laboratuvar ödevi. +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) içindeki Lab Görevi. ## Görev -Bu derste geliştirdiğimiz MNIST el yazısı rakamlarının ikili sınıflandırması için yazdığımız kodu kullanarak, herhangi bir rakamı tanıyabilen çoklu sınıf sınıflandırıcısı oluşturun. Eğitim ve test veri setinde sınıflandırma doğruluğunu hesaplayın ve karışıklık matrisini yazdırın. +Bu derste MNIST el yazısı rakamlarının ikili sınıflandırması için geliştirdiğimiz kodu kullanarak, herhangi bir rakamı tanıyabilen bir çok sınıflı sınıflandırıcı oluşturun. Eğitim ve test veri setlerindeki sınıflandırma doğruluğunu hesaplayın ve karışıklık matrisini yazdırın. ## İpuçları -1. Her rakam için "bu rakam vs. diğer tüm rakamlar" için bir ikili sınıflandırıcı veri seti oluşturun. +1. Her rakam için, "bu rakam vs. diğer tüm rakamlar" şeklinde bir ikili sınıflandırıcı veri seti oluşturun. 1. İkili sınıflandırma için 10 farklı perceptron eğitin (her rakam için bir tane). -1. Bir girdi rakamını sınıflandıracak bir fonksiyon tanımlayın. +1. Bir giriş rakamını sınıflandıracak bir fonksiyon tanımlayın. -> **İpucu**: Tüm 10 perceptronun ağırlıklarını tek bir matriste birleştirirsek, girdi rakamlarına tüm 10 perceptronu bir matris çarpımı ile uygulayabilmemiz gerekir. En olası rakamı, çıktıya `argmax` işlemi uygulayarak bulabiliriz. +> **İpucu**: Eğer 10 perceptronun ağırlıklarını bir matris içinde birleştirirsek, tüm 10 perceptronu giriş rakamlarına tek bir matris çarpımıyla uygulayabiliriz. En olası rakam, çıktıya `argmax` işlemi uygulanarak bulunabilir. -## Not Defteri Açma +## Başlangıç Not Defteri -Laboratuvarı [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) dosyasını açarak başlatın. +Laba [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) dosyasını açarak başlayın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, ana dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda oluşabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md index 29b07705..95085338 100644 --- a/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ + # Sinir Ağlarına Giriş. Çok Katmanlı Algılayıcı -Önceki bölümde, en basit sinir ağı modelini - tek katmanlı algılayıcıyı, iki sınıflı lineer sınıflandırma modeli olarak öğrendiniz. +Önceki bölümde, en basit sinir ağı modeli olan tek katmanlı algılayıcıyı, iki sınıflı doğrusal sınıflandırma modelini öğrendiniz. -Bu bölümde, bu modeli daha esnek bir çerçeveye genişleteceğiz, böylece: +Bu bölümde, bu modeli daha esnek bir çerçeveye genişleteceğiz ve böylece: -* iki sınıfın yanı sıra **çoklu sınıf sınıflandırması** gerçekleştirebileceğiz -* sınıflandırmanın yanı sıra **regresyon problemleri** çözebileceğiz -* lineer olarak ayrılamayan sınıfları ayırabileceğiz +* **Çok sınıflı sınıflandırma** yapabilmenin yanı sıra iki sınıflı sınıflandırma yapabiliriz +* Sınıflandırmanın yanı sıra **regresyon problemlerini** çözebiliriz +* Doğrusal olarak ayrılabilir olmayan sınıfları ayırabiliriz -Ayrıca, farklı sinir ağı mimarilerini oluşturmak için Python'da kendi modüler çerçevemizi geliştireceğiz. +Ayrıca, farklı sinir ağı mimarileri oluşturabilmemizi sağlayacak kendi modüler Python çerçevemizi geliştireceğiz. -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Ders Öncesi Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) -## Makine Öğreniminin Formülasyonu +## Makine Öğreniminin Formalizasyonu -Makine Öğrenimi problemini formüle etmeye başlayalım. Diyelim ki etiketleri **Y** olan bir eğitim veri setimiz **X** var ve en doğru tahminleri yapacak bir model *f* inşa etmemiz gerekiyor. Tahminlerin kalitesi **Kayıp fonksiyonu** ℒ ile ölçülür. Aşağıdaki kayıp fonksiyonları sıkça kullanılır: +Makine Öğrenimi problemini formalize ederek başlayalım. Diyelim ki **X** eğitim veri setimiz ve **Y** etiketlerimiz var ve en doğru tahminleri yapacak bir model *f* oluşturmalıyız. Tahminlerin kalitesi **Kayıp Fonksiyonu** ℒ ile ölçülür. Sıkça kullanılan kayıp fonksiyonları şunlardır: -* Regresyon problemi için, bir sayı tahmin etmemiz gerektiğinde, **mutlak hata** ∑i|f(x(i))-y(i)| veya **kare hata** ∑i(f(x(i))-y(i))2 kullanabiliriz. -* Sınıflandırma için, **0-1 kaybı** (bu, modelin **doğruluğu** ile özdeştir) veya **lojistik kayıp** kullanırız. +* Regresyon problemleri için, bir sayı tahmin etmemiz gerektiğinde, **mutlak hata** ∑i|f(x(i))-y(i)| veya **kare hata** ∑i(f(x(i))-y(i))2 kullanabiliriz. +* Sınıflandırma için, **0-1 kaybı** (temelde modelin **doğruluğu** ile aynıdır) veya **lojistik kayıp** kullanırız. -Tek katmanlı algılayıcı için, *f* fonksiyonu lineer bir fonksiyon olarak tanımlanmıştı *f(x)=wx+b* (burada *w* ağırlık matrisidir, *x* giriş özellikleri vektörüdür ve *b* önyargı vektörüdür). Farklı sinir ağı mimarileri için, bu fonksiyon daha karmaşık bir biçim alabilir. +Tek katmanlı algılayıcı için, *f* fonksiyonu doğrusal bir fonksiyon olarak tanımlanmıştı: *f(x)=wx+b* (burada *w* ağırlık matrisi, *x* giriş özelliklerinin vektörü ve *b* önyargı vektörüdür). Farklı sinir ağı mimarileri için, bu fonksiyon daha karmaşık bir form alabilir. -> Sınıflandırma durumunda, genellikle ağ çıkışı olarak ilgili sınıfların olasılıklarını almak arzu edilir. Rastgele sayıları olasılıklara dönüştürmek için (örneğin, çıktıyı normalleştirmek amacıyla) genellikle **softmax** fonksiyonu σ kullanılır ve *f* fonksiyonu *f(x)=σ(wx+b)* haline gelir. +> Sınıflandırma durumunda, ağ çıktısı olarak ilgili sınıfların olasılıklarını elde etmek genellikle arzu edilir. Rastgele sayıları olasılıklara dönüştürmek (örneğin çıktıyı normalleştirmek) için genellikle **softmax** fonksiyonu σ kullanılır ve *f* fonksiyonu *f(x)=σ(wx+b)* olur. -Yukarıdaki *f* tanımında, *w* ve *b* **parametreler** θ=⟨*w,b*⟩ olarak adlandırılır. Veri seti ⟨**X**,**Y**⟩ verildiğinde, tüm veri seti üzerinde genel bir hatayı parametreler θ'nın bir fonksiyonu olarak hesaplayabiliriz. +Yukarıdaki *f* tanımında, *w* ve *b* **parametreler** olarak adlandırılır: θ=⟨*w,b*⟩. Veri seti ⟨**X**,**Y**⟩ verildiğinde, tüm veri setindeki genel hatayı parametreler θ'nin bir fonksiyonu olarak hesaplayabiliriz. -> ✅ **Sinir ağı eğitiminin amacı, parametre θ'yı değiştirerek hatayı minimize etmektir.** +> ✅ **Sinir ağı eğitiminin amacı, parametreler θ'yi değiştirerek hatayı minimize etmektir.** ## Gradyan İnişi Optimizasyonu -**Gradyan inişi** olarak bilinen bir fonksiyon optimizasyon yöntemi vardır. Fikir, kayıp fonksiyonunun parametreler ile olan türevini (çok boyutlu durumda **gradyan** olarak adlandırılır) hesaplayabilmemiz ve hatanın azalacak şekilde parametreleri değiştirebilmemizdir. Bu, aşağıdaki gibi formüle edilebilir: +**Gradyan inişi** adı verilen iyi bilinen bir fonksiyon optimizasyon yöntemi vardır. Fikir, kayıp fonksiyonunun parametrelere göre türevini (çok boyutlu durumda **gradyan** olarak adlandırılır) hesaplayabileceğimiz ve parametreleri hatayı azaltacak şekilde değiştirebileceğimizdir. Bu şu şekilde formalize edilebilir: -* Parametreleri bazı rastgele değerlerle w(0), b(0) ile başlatın. -* Aşağıdaki adımı birçok kez tekrarlayın: +* Parametreleri rastgele değerlerle başlatın: w(0), b(0) +* Şu adımı birçok kez tekrarlayın: - w(i+1) = w(i)-η∂ℒ/∂w - b(i+1) = b(i)-η∂ℒ/∂b -Eğitim sırasında, optimizasyon adımlarının tüm veri setini dikkate alarak hesaplanması beklenir (kayıp, tüm eğitim örnekleri üzerinden bir toplam olarak hesaplandığını unutmayın). Ancak, gerçek hayatta **minibatch** olarak adlandırılan veri setinin küçük parçalarını alır ve gradyanları bir veri alt kümesine dayalı olarak hesaplarız. Her seferinde alt küme rastgele alındığı için, bu yöntem **stochastik gradyan inişi** (SGD) olarak adlandırılır. +Eğitim sırasında, optimizasyon adımları tüm veri seti dikkate alınarak hesaplanmalıdır (unutmayın ki kayıp, tüm eğitim örnekleri üzerinden bir toplam olarak hesaplanır). Ancak, gerçek hayatta veri setinin küçük bölümleri olan **minibatch'ler** alırız ve gradyanları bir alt veri kümesine dayanarak hesaplarız. Alt küme her seferinde rastgele alındığı için, bu yönteme **stokastik gradyan inişi** (SGD) denir. ## Çok Katmanlı Algılayıcılar ve Geri Yayılım -Yukarıda gördüğümüz tek katmanlı ağ, lineer olarak ayrılamayan sınıfları sınıflandırma yeteneğine sahiptir. Daha zengin bir model oluşturmak için, ağın birkaç katmanını birleştirebiliriz. Matematiksel olarak bu, *f* fonksiyonunun daha karmaşık bir biçim alacağı ve birkaç adımda hesaplanacağı anlamına gelir: +Tek katmanlı ağ, yukarıda gördüğümüz gibi, doğrusal olarak ayrılabilir sınıfları sınıflandırabilir. Daha zengin bir model oluşturmak için, ağın birkaç katmanını birleştirebiliriz. Matematiksel olarak bu, *f* fonksiyonunun daha karmaşık bir form alacağı ve birkaç adımda hesaplanacağı anlamına gelir: * z1=w1x+b1 * z2=w2α(z1)+b2 * f = σ(z2) -Burada, α **lineer olmayan aktivasyon fonksiyonu**dur, σ softmax fonksiyonudur ve parametreler θ=<*w1,b1,w2,b2*>'dir. +Burada, α bir **doğrusal olmayan aktivasyon fonksiyonu**, σ bir softmax fonksiyonu ve parametreler θ=<*w1,b1,w2,b2*>'dir. -Gradyan inişi algoritması aynı kalacak, ancak gradyanları hesaplamak daha zor olacaktır. Zincirleme türev kuralını göz önünde bulundurarak, türevleri şu şekilde hesaplayabiliriz: +Gradyan inişi algoritması aynı kalır, ancak gradyanları hesaplamak daha zor olur. Zincir türevleme kuralı sayesinde, türevleri şu şekilde hesaplayabiliriz: * ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) * ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ Zincirleme türev kuralı, kayıp fonksiyonunun parametrelerle olan türevlerini hesaplamak için kullanılır. +> ✅ Zincir türevleme kuralı, kayıp fonksiyonunun parametrelere göre türevlerini hesaplamak için kullanılır. -Tüm bu ifadelerin en soldaki kısmının aynı olduğunu ve bu nedenle kayıp fonksiyonundan başlayarak "geriye" hesaplama grafiği üzerinden türevleri etkili bir şekilde hesaplayabileceğimizi unutmayın. Böylece çok katmanlı bir algılayıcının eğitilmesi yöntemi **geri yayılım** veya 'backprop' olarak adlandırılır. +Bu ifadelerin en sol kısmı aynı olduğundan, türevleri kayıp fonksiyonundan başlayarak ve hesaplama grafiği boyunca "geri giderek" etkili bir şekilde hesaplayabiliriz. Bu nedenle, çok katmanlı bir algılayıcıyı eğitme yöntemi **geri yayılım** veya 'backprop' olarak adlandırılır. -hesap grafiği +hesaplama grafiği -> TODO: resim alıntısı +> TODO: görsel kaynağı -> ✅ Geri yayılımı not defteri örneğimizde çok daha ayrıntılı bir şekilde ele alacağız. +> ✅ Geri yayılımı, notebook örneğimizde çok daha ayrıntılı bir şekilde ele alacağız. ## Sonuç -Bu derste, kendi sinir ağı kütüphanemizi oluşturduk ve bunu basit bir iki boyutlu sınıflandırma görevinde kullandık. +Bu derste, kendi sinir ağı kütüphanemizi oluşturduk ve bunu basit bir iki boyutlu sınıflandırma görevi için kullandık. -## 🚀 Zorluk +## 🚀 Meydan Okuma -Eşlik eden not defterinde, çok katmanlı algılayıcılar oluşturmak ve eğitmek için kendi çerçevenizi uygulayacaksınız. Modern sinir ağlarının nasıl çalıştığını ayrıntılı olarak görebileceksiniz. +Eşlik eden notebook'ta, çok katmanlı algılayıcılar oluşturmak ve eğitmek için kendi çerçevenizi uygulayacaksınız. Modern sinir ağlarının nasıl çalıştığını ayrıntılı bir şekilde görebileceksiniz. -[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) not defterine geçin ve üzerinde çalışın. +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) notebook'una geçin ve üzerinde çalışın. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Ders Sonrası Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## Gözden Geçirme & Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Geri yayılım, AI ve ML'de yaygın olarak kullanılan bir algoritmadır, [daha ayrıntılı olarak](https://wikipedia.org/wiki/Backpropagation) incelenmeye değer. +Geri yayılım, AI ve ML'de yaygın olarak kullanılan bir algoritmadır ve [daha ayrıntılı](https://wikipedia.org/wiki/Backpropagation) çalışmaya değerdir. -## [Görev](lab/README.md) +## [Ödev](lab/README.md) -Bu laboratuvar çalışmasında, bu derste inşa ettiğiniz çerçeveyi MNIST el yazısı rakam sınıflandırma sorununu çözmek için kullanmanız istenmektedir. +Bu laboratuvarda, bu derste oluşturduğunuz çerçeveyi kullanarak MNIST el yazısı rakam sınıflandırmasını çözmeniz isteniyor. * [Talimatlar](lab/README.md) -* [Not Defteri](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index e289cdf1..995eb167 100644 --- a/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ -# Kendi Çerçevemiz ile MNIST Sınıflandırması + +# MNIST Sınıflandırması Kendi Çerçevemizle -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) laboratuvar ödevi. +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) içindeki Lab Görevi. ## Görev -MNIST el yazısı rakam sınıflandırma problemini 1-, 2- ve 3-katmanlı algılayıcı kullanarak çözün. Derste geliştirdiğimiz sinir ağı çerçevesini kullanın. +1-, 2- ve 3 katmanlı perceptron kullanarak MNIST el yazısı rakam sınıflandırma problemini çözün. Derste geliştirdiğimiz sinir ağı çerçevesini kullanın. -## Not Defteri Açma +## Başlangıç Not Defteri -Laboratuvara [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) dosyasını açarak başlayın. +Lab çalışmasına [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) dosyasını açarak başlayın. ## Sorular -Bu laboratuvarın sonucu olarak, aşağıdaki soruları yanıtlamaya çalışın: +Bu laboratuvar çalışmasının sonucunda aşağıdaki soruları yanıtlamaya çalışın: - Katmanlar arası aktivasyon fonksiyonu ağın performansını etkiliyor mu? -- Bu görev için 2- veya 3-katmanlı bir ağa ihtiyacımız var mı? -- Ağı eğitirken herhangi bir sorunla karşılaştınız mı? Özellikle katman sayısı arttıkça. -- Ağı eğitimi sırasında ağırlıkların davranışı nasıldır? İlişkiyi anlamak için ağırlıkların maksimum mutlak değerini epoch'a karşı çizebilirsiniz. +- Bu görev için 2 veya 3 katmanlı bir ağa ihtiyaç var mı? +- Ağı eğitirken herhangi bir sorun yaşadınız mı? Özellikle katman sayısı arttıkça. +- Ağırlıklar eğitim sırasında nasıl bir davranış sergiliyor? İlişkiyi anlamak için ağırlıkların maksimum mutlak değerini epoch'a karşı çizdirebilirsiniz. -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımıyla ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan dolayı sorumluluğumuz yoktur. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md index 2de19329..6af066ec 100644 --- a/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,53 +1,62 @@ + # Sinir Ağı Çerçeveleri -Zaten öğrendiğimiz gibi, sinir ağlarını verimli bir şekilde eğitebilmek için iki şey yapmamız gerekiyor: +Daha önce öğrendiğimiz gibi, sinir ağlarını verimli bir şekilde eğitebilmek için iki şeyi yapmamız gerekiyor: -* Tensörler üzerinde işlem yapmak, örneğin çarpma, toplama ve sigmoid veya softmax gibi bazı fonksiyonları hesaplama -* Tüm ifadelerin gradyanlarını hesaplamak, böylece gradyan inişi optimizasyonu gerçekleştirebilmek +* Tensörler üzerinde işlem yapmak, örneğin çarpma, toplama ve sigmoid veya softmax gibi bazı fonksiyonları hesaplamak +* Tüm ifadelerin gradyanlarını hesaplamak, böylece gradyan inişi optimizasyonunu gerçekleştirebilmek -## [Ön-ders sınavı](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -`numpy` kütüphanesi ilk kısmı yapabilse de, gradyanları hesaplamak için bir mekanizmaya ihtiyacımız var. Önceki bölümde geliştirdiğimiz [çerçevemizde](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), `backward` yönteminin içinde tüm türev fonksiyonlarını manuel olarak programlamak zorunda kaldık. İdeal olarak, bir çerçeve, tanımlayabileceğimiz *herhangi bir ifadenin* gradyanlarını hesaplama fırsatını bize vermelidir. +`numpy` kütüphanesi ilk kısmı yapabilse de, gradyanları hesaplayacak bir mekanizmaya ihtiyacımız var. Önceki bölümde geliştirdiğimiz [kendi çerçevemizde](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), tüm türev fonksiyonlarını `backward` metodunun içine manuel olarak programlamamız gerekiyordu. Bu yöntem geri yayılımı gerçekleştirir. İdeal olarak, bir çerçeve bize tanımlayabileceğimiz *herhangi bir ifadenin* gradyanlarını hesaplama fırsatı sunmalıdır. -Başka önemli bir şey de GPU veya diğer özel hesaplama birimleri, örneğin [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) üzerinde hesaplamalar yapabilmektir. Derin sinir ağı eğitimi *çok fazla* hesaplama gerektirir ve bu hesaplamaları GPU'larda paralelleştirebilmek çok önemlidir. +Bir diğer önemli şey, GPU veya [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) gibi diğer özel işlem birimlerinde hesaplama yapabilmektir. Derin sinir ağı eğitimi *çok fazla* hesaplama gerektirir ve bu hesaplamaları GPU'lar üzerinde paralelleştirebilmek oldukça önemlidir. -> ✅ 'Paralelleştirme' terimi, hesaplamaları birden fazla cihaz arasında dağıtmak anlamına gelir. +> ✅ 'Paralelleştirme' terimi, hesaplamaların birden fazla cihaz arasında dağıtılması anlamına gelir. -Şu anda, en popüler iki sinir ağı çerçevesi: [TensorFlow](http://TensorFlow.org) ve [PyTorch](https://pytorch.org/). Her ikisi de CPU ve GPU üzerinde tensörlerle çalışmak için düşük seviyeli bir API sağlar. Düşük seviyeli API'nin üstünde, sırasıyla [Keras](https://keras.io/) ve [PyTorch Lightning](https://pytorchlightning.ai/) adında daha yüksek seviyeli API'ler de bulunmaktadır. +Şu anda en popüler iki sinir ağı çerçevesi: [TensorFlow](http://TensorFlow.org) ve [PyTorch](https://pytorch.org/). Her ikisi de CPU ve GPU üzerinde tensörlerle çalışmak için düşük seviyeli bir API sağlar. Düşük seviyeli API'nin yanı sıra, sırasıyla [Keras](https://keras.io/) ve [PyTorch Lightning](https://pytorchlightning.ai/) adı verilen yüksek seviyeli bir API de mevcuttur. -Düşük Seviye API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) ------------------|-------------------------------------|-------------------------------- -Yüksek Seviye API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) +Düşük Seviyeli API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------------|-------------------------------------|-------------------------------- +Yüksek Seviyeli API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) -**Düşük seviye API'ler**, her iki çerçevede de **hesaplama grafikleri** adı verilen yapılar oluşturmanıza olanak tanır. Bu grafik, belirli giriş parametreleriyle çıktıyı (genellikle kayıp fonksiyonu) nasıl hesaplayacağınızı tanımlar ve mevcutsa GPU üzerinde hesaplama için itilebilir. Bu hesaplama grafiğini farklılaştırmak ve gradyanları hesaplamak için işlevler vardır; bu gradyanlar daha sonra model parametrelerini optimize etmek için kullanılabilir. +**Düşük seviyeli API'ler**, her iki çerçevede de **hesaplama grafikleri** oluşturmanıza olanak tanır. Bu grafik, verilen giriş parametreleriyle çıktının (genellikle kayıp fonksiyonu) nasıl hesaplanacağını tanımlar ve GPU'da hesaplama için gönderilebilir. Bu hesaplama grafiğini türetmek ve gradyanları hesaplamak için fonksiyonlar vardır; bu gradyanlar daha sonra model parametrelerini optimize etmek için kullanılabilir. -**Yüksek seviye API'ler**, sinir ağlarını **katmanlar dizisi** olarak düşünür ve çoğu sinir ağını inşa etmeyi çok daha kolay hale getirir. Modeli eğitmek genellikle verileri hazırlamayı ve ardından işi yapmak için `fit` fonksiyonunu çağırmayı gerektirir. +**Yüksek seviyeli API'ler**, sinir ağlarını genellikle bir **katmanlar dizisi** olarak ele alır ve çoğu sinir ağını oluşturmayı çok daha kolay hale getirir. Modeli eğitmek genellikle verileri hazırlamayı ve ardından işi yapmak için bir `fit` fonksiyonu çağırmayı gerektirir. -Yüksek seviye API, tipik sinir ağlarını çok hızlı bir şekilde inşa etmenize olanak tanır; birçok detay hakkında endişelenmenize gerek kalmaz. Aynı zamanda, düşük seviye API, eğitim süreci üzerinde çok daha fazla kontrol sağlar, bu nedenle yeni sinir ağı mimarileriyle çalışırken araştırmalarda sıklıkla kullanılır. +Yüksek seviyeli API, tipik sinir ağlarını çok hızlı bir şekilde oluşturmanıza olanak tanır ve birçok ayrıntıyla uğraşmanıza gerek kalmaz. Aynı zamanda, düşük seviyeli API, eğitim süreci üzerinde çok daha fazla kontrol sağlar ve bu nedenle yeni sinir ağı mimarileriyle çalışırken araştırmalarda sıkça kullanılır. -Her iki API'yi bir arada kullanabileceğinizi de anlamak önemlidir; örneğin, düşük seviye API kullanarak kendi ağ katmanı mimarinizi geliştirebilir ve ardından yüksek seviye API ile inşa edilen ve eğitilen daha büyük bir ağın içinde kullanabilirsiniz. Ya da yüksek seviye API'yi katmanlar dizisi olarak kullanarak bir ağ tanımlayabilir ve ardından optimizasyon yapmak için kendi düşük seviye eğitim döngünüzü kullanabilirsiniz. Her iki API de aynı temel kavramları kullanır ve birlikte iyi çalışacak şekilde tasarlanmıştır. +Ayrıca, her iki API'yi birlikte kullanabileceğinizi anlamak önemlidir. Örneğin, düşük seviyeli API kullanarak kendi ağ katmanı mimarinizi geliştirebilir ve ardından bunu yüksek seviyeli API ile oluşturulan ve eğitilen daha büyük bir ağın içinde kullanabilirsiniz. Ya da katmanlar dizisi olarak yüksek seviyeli API kullanarak bir ağ tanımlayabilir ve ardından kendi düşük seviyeli eğitim döngünüzü kullanarak optimizasyon yapabilirsiniz. Her iki API de aynı temel kavramları kullanır ve birlikte iyi çalışacak şekilde tasarlanmıştır. ## Öğrenme -Bu kursta, içeriğin çoğunu hem PyTorch hem de TensorFlow için sunuyoruz. Tercih ettiğiniz çerçeveyi seçebilir ve yalnızca ilgili not defterlerini inceleyebilirsiniz. Hangi çerçeveyi seçeceğinizden emin değilseniz, **PyTorch ve TensorFlow** ile ilgili internette bazı tartışmaları okuyabilirsiniz. Daha iyi bir anlayış elde etmek için her iki çerçeveye de göz atabilirsiniz. +Bu kursta, içeriğin çoğunu hem PyTorch hem de TensorFlow için sunuyoruz. Tercih ettiğiniz çerçeveyi seçebilir ve yalnızca ilgili not defterlerini inceleyebilirsiniz. Hangi çerçeveyi seçeceğinizden emin değilseniz, **PyTorch vs. TensorFlow** hakkında internetteki bazı tartışmaları okuyabilirsiniz. Ayrıca, her iki çerçeveye de göz atarak daha iyi bir anlayış kazanabilirsiniz. -Mümkün olduğunda, basitlik için Yüksek Seviye API'leri kullanacağız. Ancak, sinir ağlarının nasıl çalıştığını en baştan anlamanın önemli olduğunu düşünüyoruz, bu nedenle başlangıçta düşük seviye API ve tensörlerle çalışmaya başlıyoruz. Ancak, hızlı bir şekilde ilerlemek istiyorsanız ve bu detayları öğrenmek için çok fazla zaman harcamak istemiyorsanız, bunları atlayabilir ve doğrudan yüksek seviye API not defterlerine geçebilirsiniz. +Mümkün olduğunda, basitlik için Yüksek Seviyeli API'leri kullanacağız. Ancak, sinir ağlarının temelden nasıl çalıştığını anlamanın önemli olduğuna inanıyoruz, bu nedenle başlangıçta düşük seviyeli API ve tensörlerle çalışmaya başlıyoruz. Ancak, hızlı bir şekilde başlamak ve bu ayrıntıları öğrenmek için fazla zaman harcamak istemiyorsanız, bunları atlayabilir ve doğrudan yüksek seviyeli API not defterlerine geçebilirsiniz. ## ✍️ Alıştırmalar: Çerçeveler -Aşağıdaki not defterlerinde öğreniminize devam edin: +Öğreniminize aşağıdaki not defterlerinde devam edin: -Düşük Seviye API | [TensorFlow+Keras Not Defteri](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ------------------|-------------------------------------|-------------------------------- -Yüksek Seviye API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +Düşük Seviyeli API | [TensorFlow+Keras Not Defteri](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------------|-------------------------------------|-------------------------------- +Yüksek Seviyeli API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* -Çerçeveleri öğrendikten sonra, aşırı uyum kavramını gözden geçirelim. +Çerçeveleri öğrendikten sonra, aşırı öğrenme (overfitting) kavramını tekrar gözden geçirelim. -# Aşırı Uyum +# Aşırı Öğrenme -Aşırı uyum, makine öğreniminde son derece önemli bir kavramdır ve doğru bir şekilde anlamak çok önemlidir! +Aşırı öğrenme, makine öğreniminde son derece önemli bir kavramdır ve doğru bir şekilde anlaşılması çok önemlidir! -Aşağıdaki 5 noktayı (aşağıdaki grafiklerde `x` ile temsil edilmiştir) yaklaşık olarak çözme sorununu düşünün: +Aşağıdaki 5 noktayı (grafiklerde `x` ile gösterilen) yaklaşık olarak tahmin etme problemini düşünün: ![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.tr.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.tr.jpg) -------------------------|-------------------------- @@ -55,69 +64,69 @@ Aşağıdaki 5 noktayı (aşağıdaki grafiklerde `x` ile temsil edilmiştir) ya Eğitim hatası = 5.3 | Eğitim hatası = 0 Doğrulama hatası = 5.1 | Doğrulama hatası = 20 -* Solda, iyi bir doğru çizgi yaklaşık olarak görüyoruz. Parametre sayısı uygun olduğundan, model nokta dağılımının arkasındaki fikri doğru anlıyor. -* Sağda, model çok güçlü. Sadece 5 noktamız olduğu için ve modelin 7 parametresi olduğu için, tüm noktaların üzerinden geçecek şekilde ayarlanabilir, bu da eğitim hatasının 0 olmasına neden olur. Ancak, bu modelin verilerin arkasındaki doğru deseni anlamasını engeller, bu nedenle doğrulama hatası çok yüksektir. +* Solda, iyi bir doğru çizgisi yaklaşımı görüyoruz. Parametre sayısı yeterli olduğu için model, nokta dağılımının arkasındaki fikri doğru bir şekilde kavrıyor. +* Sağda, model çok güçlü. Sadece 5 noktamız olduğu ve modelin 7 parametresi olduğu için, tüm noktalardan geçecek şekilde ayarlanabiliyor ve bu da eğitim hatasını 0 yapıyor. Ancak, bu durum modelin verilerin arkasındaki doğru deseni anlamasını engelliyor ve bu nedenle doğrulama hatası çok yüksek oluyor. Modelin zenginliği (parametre sayısı) ile eğitim örneklerinin sayısı arasında doğru bir denge kurmak çok önemlidir. -## Aşırı Uyumun Nedenleri +## Aşırı Öğrenme Neden Oluşur? - * Yeterince eğitim verisi olmaması - * Çok güçlü model - * Giriş verilerinde fazla gürültü + * Yeterli eğitim verisinin olmaması + * Çok güçlü bir model + * Giriş verilerinde çok fazla gürültü -## Aşırı Uyumun Tespit Edilmesi +## Aşırı Öğrenme Nasıl Tespit Edilir? -Yukarıdaki grafikten görebileceğiniz gibi, aşırı uyum, çok düşük bir eğitim hatası ve yüksek bir doğrulama hatası ile tespit edilebilir. Genellikle eğitim sırasında hem eğitim hem de doğrulama hatalarının azalmaya başladığını görürüz, ve sonra bir noktada doğrulama hatası azalmayı durdurup artmaya başlayabilir. Bu, aşırı uyumun bir işareti olacak ve muhtemelen bu noktada eğitimi durdurmamız gerektiğini (veya en azından modelin bir anlık görüntüsünü almamız gerektiğini) gösterir. +Yukarıdaki grafikten de görebileceğiniz gibi, aşırı öğrenme çok düşük bir eğitim hatası ve yüksek bir doğrulama hatası ile tespit edilebilir. Normalde eğitim sırasında hem eğitim hem de doğrulama hatalarının azalmaya başladığını görürüz ve ardından bir noktada doğrulama hatası azalmayı durdurup artmaya başlayabilir. Bu, aşırı öğrenmenin bir işareti olacak ve eğitimi muhtemelen bu noktada durdurmamız gerektiğini (veya en azından modelin bir anlık görüntüsünü almamız gerektiğini) gösterecektir. ![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.tr.png) -## Aşırı Uyumun Önlenmesi +## Aşırı Öğrenme Nasıl Önlenir? -Aşırı uyumun meydana geldiğini görüyorsanız, aşağıdakilerden birini yapabilirsiniz: +Aşırı öğrenmenin meydana geldiğini görüyorsanız, aşağıdakilerden birini yapabilirsiniz: - * Eğitim verisi miktarını artırın + * Eğitim verilerinin miktarını artırın * Modelin karmaşıklığını azaltın - * Daha sonra ele alacağımız [düzenleme tekniklerinden](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) birini kullanın, örneğin [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout). + * [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout) gibi bazı [düzenleme tekniklerini](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) kullanın. Bunları daha sonra ele alacağız. -## Aşırı Uyum ve Bias-Variance Ticaret Dengesi +## Aşırı Öğrenme ve Yanlılık-Varyans Dengesi -Aşırı uyum aslında istatistikte daha genel bir problem olan [Bias-Variance Tradeoff](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) durumudur. Modelimizdeki hata kaynaklarını dikkate aldığımızda, iki tür hata görebiliriz: +Aşırı öğrenme, aslında istatistikte [Yanlılık-Varyans Dengesi](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) adı verilen daha genel bir problemin bir örneğidir. Modelimizdeki hata kaynaklarını düşündüğümüzde, iki tür hata görebiliriz: -* **Bias hataları**, algoritmamızın eğitim verileri arasındaki ilişkiyi doğru bir şekilde yakalayamamasından kaynaklanır. Bu, modelimizin yeterince güçlü olmamasından kaynaklanabilir (**aşırı uyum**). -* **Variance hataları**, modelin gürültüyü verilerdeki anlamlı ilişki yerine yaklaşık olarak değerlendirmesinden kaynaklanır (**aşırı uyum**). +* **Yanlılık hataları**, algoritmamızın eğitim verileri arasındaki ilişkiyi doğru bir şekilde yakalayamamasından kaynaklanır. Bu, modelimizin yeterince güçlü olmamasından (**eksik öğrenme**) kaynaklanabilir. +* **Varyans hataları**, modelin giriş verilerindeki gürültüyü anlamlı bir ilişki yerine yaklaşık olarak tahmin etmesinden kaynaklanır (**aşırı öğrenme**). -Eğitim sırasında, bias hatası azalır (modelimiz verileri yaklaşık olarak öğrenirken) ve variance hatası artar. Aşırı uyumu önlemek için eğitimi durdurmak önemlidir - ya manuel olarak (aşırı uyumu tespit ettiğimizde) ya da otomatik olarak (düzenleme yaparak). +Eğitim sırasında, yanlılık hatası azalır (modelimiz verileri yaklaşık olarak öğrenir) ve varyans hatası artar. Aşırı öğrenmeyi önlemek için eğitimi - ya manuel olarak (aşırı öğrenmeyi tespit ettiğimizde) ya da otomatik olarak (düzenleme teknikleri kullanarak) - durdurmak önemlidir. ## Sonuç -Bu derste, en popüler iki AI çerçevesi olan TensorFlow ve PyTorch için çeşitli API'ler arasındaki farkları öğrendiniz. Ayrıca, çok önemli bir konu olan aşırı uyumu da öğrendiniz. +Bu derste, iki en popüler yapay zeka çerçevesi olan TensorFlow ve PyTorch'un çeşitli API'leri arasındaki farkları öğrendiniz. Ayrıca, çok önemli bir konu olan aşırı öğrenme hakkında bilgi edindiniz. ## 🚀 Zorluk -Eşlik eden not defterlerinde, en altta 'görevler' bulacaksınız; not defterlerini inceleyin ve görevleri tamamlayın. +Eşlik eden not defterlerinde, 'görevler' bölümünü bulacaksınız; not defterlerini inceleyin ve görevleri tamamlayın. -## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma Aşağıdaki konular hakkında biraz araştırma yapın: - TensorFlow - PyTorch -- Aşırı uyum +- Aşırı öğrenme Kendinize şu soruları sorun: - TensorFlow ve PyTorch arasındaki fark nedir? -- Aşırı uyum ve yetersiz uyum arasındaki fark nedir? +- Aşırı öğrenme ve eksik öğrenme arasındaki fark nedir? ## [Ödev](lab/README.md) -Bu laboratuvar çalışmasında, PyTorch veya TensorFlow kullanarak tek ve çok katmanlı tam bağlı ağlar ile iki sınıflandırma problemini çözmeniz isteniyor. +Bu laboratuvarda, PyTorch veya TensorFlow kullanarak tek katmanlı ve çok katmanlı tam bağlantılı ağlarla iki sınıflandırma problemini çözmeniz isteniyor. * [Talimatlar](lab/README.md) * [Not Defteri](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, ana dilinde, otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index 88dfa0d0..9dd3443e 100644 --- a/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ + # PyTorch/TensorFlow ile Sınıflandırma -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için Laboratuvar Görevi. +[AI for Beginners Müfredatı](https://github.com/microsoft/ai-for-beginners) tarafından hazırlanan Lab Görevi. ## Görev -PyTorch veya TensorFlow kullanarak tek ve çok katmanlı tam bağlantılı ağlar ile iki sınıflandırma problemini çözün: +PyTorch veya TensorFlow kullanarak tek ve çok katmanlı tam bağlantılı ağlarla iki sınıflandırma problemini çözün: -1. **[İris sınıflandırması](https://en.wikipedia.org/wiki/Iris_flower_data_set)** problemi - klasik makine öğrenimi ile ele alınabilen tablo verisi ile ilgili bir problem örneği. Amacınız, 4 sayısal parametreye dayanarak irisleri 3 sınıfa ayırmaktır. +1. **[Iris sınıflandırması](https://en.wikipedia.org/wiki/Iris_flower_data_set)** problemi - tabular giriş verileriyle çalışılabilen ve klasik makine öğrenimiyle çözülebilecek bir problem örneği. Amacınız, 4 sayısal parametreye dayanarak iris çiçeklerini 3 sınıfa ayırmak olacaktır. 1. Daha önce gördüğümüz **MNIST** el yazısı rakam sınıflandırma problemi. En iyi doğruluğu elde etmek için farklı ağ mimarilerini deneyin. -## Not Defterini Başlatma +## Başlangıç Not Defteri -Laboratuvara [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) dosyasını açarak başlayın. +Lab çalışmasına [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) dosyasını açarak başlayın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlamadan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/README.md b/translations/tr/lessons/3-NeuralNetworks/README.md index 6f2818b4..285c91bb 100644 --- a/translations/tr/lessons/3-NeuralNetworks/README.md +++ b/translations/tr/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ + # Sinir Ağlarına Giriş -![Sinir Ağları içeriğinin özetini gösteren bir doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.tr.png) +![Sinir Ağlarına Giriş içeriğinin bir çizim özeti](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.tr.png) -Girişte tartıştığımız gibi, zeka elde etmenin yollarından biri bir **bilgisayar modeli** veya **yapay beyin** eğitmektir. 20. yüzyılın ortalarından beri araştırmacılar farklı matematiksel modeller denemiştir; son yıllarda bu yönün son derece başarılı olduğu kanıtlanmıştır. Beynin bu tür matematiksel modellerine **sinir ağları** denir. +Giriş bölümünde tartıştığımız gibi, zekaya ulaşmanın yollarından biri bir **bilgisayar modeli** veya bir **yapay beyin** eğitmektir. 20. yüzyılın ortalarından itibaren, araştırmacılar farklı matematiksel modeller denediler ve son yıllarda bu yaklaşımın büyük ölçüde başarılı olduğu kanıtlandı. Beynin bu tür matematiksel modellerine **sinir ağları** denir. -> Bazen sinir ağlarına *Yapay Sinir Ağları* (Artificial Neural Networks), kısaca ANNs denir; bu, gerçek nöron ağlarından değil, modellerden bahsettiğimizi belirtmek içindir. +> Bazen sinir ağlarına *Yapay Sinir Ağları* (Artificial Neural Networks, ANNs) denir, bu şekilde gerçek nöron ağlarından değil, modellerden bahsedildiği belirtilir. ## Makine Öğrenimi -Sinir Ağları, **Makine Öğrenimi** adı verilen daha geniş bir disiplinin parçasıdır; bu disiplinin amacı verileri kullanarak sorunları çözebilen bilgisayar modelleri eğitmektir. Makine Öğrenimi, Yapay Zeka'nın büyük bir bölümünü oluşturur; ancak bu müfredatta klasik ML'yi ele almıyoruz. +Sinir Ağları, **Makine Öğrenimi** adı verilen daha geniş bir disiplinin parçasıdır. Bu disiplinin amacı, problemleri çözebilen bilgisayar modellerini eğitmek için verileri kullanmaktır. Makine Öğrenimi, Yapay Zekanın büyük bir bölümünü oluşturur, ancak bu müfredatta klasik Makine Öğrenimi konularını ele almıyoruz. -> Klasik Makine Öğrenimi hakkında daha fazla bilgi edinmek için ayrı **[Makine Öğrenimi için Yeni Başlayanlar](http://github.com/microsoft/ml-for-beginners)** müfredatımıza göz atın. +> Klasik Makine Öğrenimi hakkında daha fazla bilgi edinmek için ayrı **[Makine Öğrenimi Başlangıç Rehberi](http://github.com/microsoft/ml-for-beginners)** müfredatımıza göz atabilirsiniz. -Makine Öğrenimi'nde, elimizde bazı örneklerden oluşan bir veri seti **X** ve karşılık gelen çıktı değerleri **Y** olduğunu varsayıyoruz. Örnekler genellikle **özelliklerden** oluşan N-boyutlu vektörlerdir ve çıktılara **etiketler** denir. +Makine Öğreniminde, elimizde bazı örneklerden oluşan bir veri kümesi **X** ve buna karşılık gelen çıktı değerleri **Y** olduğunu varsayarız. Örnekler genellikle **özelliklerden** oluşan N boyutlu vektörlerdir ve çıktılara **etiketler** denir. -İki en yaygın makine öğrenimi sorununu ele alacağız: +En yaygın iki makine öğrenimi problemini ele alacağız: * **Sınıflandırma**, burada bir giriş nesnesini iki veya daha fazla sınıfa ayırmamız gerekir. -* **Regresyon**, burada her bir giriş örneği için bir sayısal değer tahmin etmemiz gerekir. +* **Regresyon**, burada her bir giriş örneği için sayısal bir değer tahmin etmemiz gerekir. -> Girişleri ve çıktıları tensörler olarak temsil ettiğimizde, giriş veri seti M×N boyutunda bir matristir; burada M örnek sayısını ve N özellik sayısını temsil eder. Çıktı etiketleri Y ise M boyutunda bir vektördür. +> Giriş ve çıkışları tensörler olarak temsil ederken, giriş veri kümesi M×N boyutunda bir matristir; burada M örnek sayısını, N ise özellik sayısını ifade eder. Çıktı etiketleri **Y**, M boyutunda bir vektördür. Bu müfredatta yalnızca sinir ağı modellerine odaklanacağız. ## Bir Nöron Modeli -Biyolojiden biliyoruz ki beynimiz, her biri birden fazla "giriş" (akson) ve bir çıkış (dendrit) olan sinir hücrelerinden oluşur. Aksonlar ve dendritler elektrik sinyallerini iletebilir ve aksonlar ile dendritler arasındaki bağlantılar farklı iletkenlik derecelerine sahip olabilir (nörotransmitterler tarafından kontrol edilir). +Biyolojiden biliyoruz ki beynimiz, her biri birden fazla "girişe" (akson) ve bir "çıkışa" (dendrit) sahip nöral hücrelerden oluşur. Aksonlar ve dendritler elektrik sinyalleri iletebilir ve aksonlar ile dendritler arasındaki bağlantılar, farklı iletkenlik dereceleri gösterebilir (nöromediyatörler tarafından kontrol edilir). ![Bir Nöron Modeli](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.tr.jpg) | ![Bir Nöron Modeli](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.tr.png) ----|---- -Gerçek Nöron *([Resim](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) Wikipedia'dan)* | Yapay Nöron *(Yazarın Resmi)* +Gerçek Nöron *([Görsel](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) Wikipedia'dan)* | Yapay Nöron *(Yazarın Görseli)* -Böylece, bir nöronun en basit matematiksel modeli birkaç girişi X1, ..., XN ve bir çıkış Y ile birlikte bir dizi ağırlık W1, ..., WN içerir. Çıkış, şu şekilde hesaplanır: +Dolayısıyla, bir nöronun en basit matematiksel modeli, birkaç giriş **X1, ..., XN** ve bir çıkış **Y**, ayrıca bir dizi ağırlık **W1, ..., WN** içerir. Çıkış şu şekilde hesaplanır: Y = f\left(\sum_{i=1}^N X_iW_i\right) -burada f bazı doğrusal olmayan **aktivasyon fonksiyonu**dur. +burada **f**, bazı doğrusal olmayan **aktivasyon fonksiyonudur**. -> Nöronun ilk modelleri, Warren McCullock ve Walter Pitts'in 1943'teki [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) adlı klasik makalesinde tanımlanmıştır. Donald Hebb, "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" adlı kitabında bu ağların nasıl eğitileceğini önermiştir. +> Nöronun erken modelleri, Warren McCullock ve Walter Pitts tarafından 1943'te yazılan klasik makale [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf)'de tanımlanmıştır. Donald Hebb, "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" adlı kitabında bu ağların nasıl eğitilebileceğini önermiştir. ## Bu Bölümde Bu bölümde şunları öğreneceğiz: * [Perceptron](03-Perceptron/README.md), iki sınıflı sınıflandırma için en erken sinir ağı modellerinden biri -* [Çok katmanlı ağlar](04-OwnFramework/README.md) ve eşleşen not defteri [kendi çerçevemizi nasıl oluşturacağımız](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Sinir Ağı Çerçeveleri](05-Frameworks/README.md), bu not defterleri ile: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ve [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) -* [Aşırı Uydurma](../../../../lessons/3-NeuralNetworks/05-Frameworks) +* [Çok katmanlı ağlar](04-OwnFramework/README.md) ve eşlik eden defter [kendi çerçevemizi nasıl oluştururuz](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Sinir Ağı Çerçeveleri](05-Frameworks/README.md), şu defterlerle: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ve [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Aşırı Uyum](../../../../lessons/3-NeuralNetworks/05-Frameworks) -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md index 6333e586..7fadec1a 100644 --- a/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ -# Bilgisayarla Görme Giriş + +# Bilgisayarlı Görüye Giriş -[Bilgisayarla Görme](https://wikipedia.org/wiki/Computer_vision), bilgisayarların dijital görüntülerin yüksek seviyede anlaşılmasını sağlamayı amaçlayan bir disiplindir. Bu oldukça geniş bir tanımdır, çünkü *anlamak* birçok farklı anlam taşıyabilir; bir resimdeki bir nesneyi bulmak (**nesne tespiti**), ne olduğunu anlamak (**olay tespiti**), bir resmi metinle tanımlamak veya bir sahneyi 3D olarak yeniden oluşturmak gibi. Ayrıca insan görüntüleriyle ilgili özel görevler de vardır: yaş ve duygu tahmini, yüz tespiti ve kimlik doğrulama, ve 3D poz tahmini gibi birkaç örnek vermek gerekirse. +[Bilgisayarlı Görü](https://wikipedia.org/wiki/Computer_vision), bilgisayarların dijital görüntüleri yüksek seviyede anlamasını sağlamayı amaçlayan bir disiplindir. Bu oldukça geniş bir tanımdır çünkü *anlama* birçok farklı şeyi ifade edebilir; bir resimdeki nesneyi bulmak (**nesne tespiti**), ne olduğunu anlamak (**olay tespiti**), bir resmi metinle açıklamak veya bir sahneyi 3D olarak yeniden oluşturmak gibi. İnsan görüntüleriyle ilgili özel görevler de vardır: yaş ve duygu tahmini, yüz tespiti ve tanımlama, 3D duruş tahmini gibi. -## [Ders Öncesi Sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -Bilgisayarla görmenin en basit görevlerinden biri **görüntü sınıflandırması**dır. +Bilgisayarlı görünün en basit görevlerinden biri **görüntü sınıflandırmasıdır**. -Bilgisayarla görme genellikle AI'nın bir dalı olarak kabul edilir. Günümüzde, bilgisayarla görme görevlerinin çoğu, sinir ağları kullanılarak çözülmektedir. Bu bölüm boyunca, bilgisayarla görme için kullanılan özel bir sinir ağı türü olan [konvolüsyonel sinir ağları](../07-ConvNets/README.md) hakkında daha fazla bilgi edineceğiz. +Bilgisayarlı görü genellikle yapay zekanın bir dalı olarak kabul edilir. Günümüzde, bilgisayarlı görü görevlerinin çoğu sinir ağları kullanılarak çözülmektedir. Bu bölümde, bilgisayarlı görü için kullanılan özel bir sinir ağı türü olan [evrişimli sinir ağlarını](../07-ConvNets/README.md) öğreneceğiz. -Ancak, bir görüntüyü bir sinir ağına göndermeden önce, birçok durumda görüntüyü geliştirmek için bazı algoritmik teknikler kullanmak mantıklıdır. +Ancak, bir görüntüyü sinir ağına göndermeden önce, birçok durumda görüntüyü iyileştirmek için bazı algoritmik teknikleri kullanmak mantıklı olabilir. -Görüntü işleme için mevcut olan birkaç Python kütüphanesi vardır: +Görüntü işleme için kullanılabilecek birkaç Python kütüphanesi vardır: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** farklı görüntü formatlarını okumak/yazmak için kullanılabilir. Ayrıca video karelerini görüntülere dönüştürmek için yararlı bir araç olan ffmpeg'i de destekler. -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (aynı zamanda PIL olarak da bilinir) biraz daha güçlüdür ve morfing, palet ayarlamaları gibi bazı görüntü manipülasyonlarını da destekler. -* **[OpenCV](https://opencv.org/)** C++ ile yazılmış güçlü bir görüntü işleme kütüphanesidir ve görüntü işleme için *de facto* standart haline gelmiştir. Kullanışlı bir Python arayüzü vardır. -* **[dlib](http://dlib.net/)** birçok makine öğrenimi algoritmasını, bazı Bilgisayarla Görme algoritmalarını da içeren, C++ kütüphanesidir. Ayrıca bir Python arayüzü vardır ve yüz ve yüz özellik tespiti gibi zorlu görevler için kullanılabilir. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** farklı görüntü formatlarını okumak/yazmak için kullanılabilir. Ayrıca, video karelerini görüntülere dönüştürmek için kullanışlı bir araç olan ffmpeg'i destekler. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL olarak da bilinir) biraz daha güçlüdür ve morfing, palet ayarlamaları gibi bazı görüntü manipülasyonlarını da destekler. +* **[OpenCV](https://opencv.org/)**, C++ ile yazılmış güçlü bir görüntü işleme kütüphanesidir ve görüntü işleme için *de facto* standart haline gelmiştir. Kullanışlı bir Python arayüzüne sahiptir. +* **[dlib](http://dlib.net/)**, birçok makine öğrenimi algoritmasını, bilgisayarlı görü algoritmaları da dahil olmak üzere, uygulayan bir C++ kütüphanesidir. Python arayüzüne sahiptir ve yüz ve yüz işaretleri tespiti gibi zorlu görevler için kullanılabilir. ## OpenCV -[OpenCV](https://opencv.org/) görüntü işleme için *de facto* standart olarak kabul edilir. C++ ile uygulanmış birçok yararlı algoritma içerir. OpenCV'yi Python'dan da çağırabilirsiniz. +[OpenCV](https://opencv.org/), görüntü işleme için *de facto* standart olarak kabul edilir. C++ ile uygulanmış birçok kullanışlı algoritma içerir. OpenCV'yi Python'dan da çağırabilirsiniz. -OpenCV öğrenmek için iyi bir yer [bu Learn OpenCV kursu](https://learnopencv.com/getting-started-with-opencv/)dır. Müfredatımızda amacımız OpenCV'yi öğrenmek değil, ne zaman ve nasıl kullanılabileceğine dair bazı örnekler göstermektir. +OpenCV öğrenmek için iyi bir başlangıç noktası [bu Learn OpenCV kursudur](https://learnopencv.com/getting-started-with-opencv/). Müfredatımızda amacımız OpenCV'yi öğrenmek değil, onun ne zaman ve nasıl kullanılabileceğine dair bazı örnekler göstermektir. ### Görüntü Yükleme -Python'da görüntüler, NumPy dizileri ile rahatlıkla temsil edilebilir. Örneğin, 320x200 piksel boyutundaki gri tonlamalı görüntüler 200x320 boyutunda bir dizide saklanırken, aynı boyuttaki renkli görüntüler 200x320x3 şeklinde (3 renk kanalı için) saklanır. Bir görüntü yüklemek için aşağıdaki kodu kullanabilirsiniz: +Python'da görüntüler, NumPy dizileriyle kolayca temsil edilebilir. Örneğin, 320x200 piksel boyutundaki gri tonlamalı görüntüler 200x320 boyutunda bir dizi olarak saklanır ve aynı boyuttaki renkli görüntüler 200x320x3 şeklinde bir boyuta sahip olur (3 renk kanalı için). Bir görüntüyü yüklemek için şu kodu kullanabilirsiniz: ```python import cv2 @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Geleneksel olarak, OpenCV renkli görüntüler için BGR (Mavi-Yeşil-Kırmızı) kodlamasını kullanırken, diğer Python araçları daha geleneksel olan RGB (Kırmızı-Yeşil-Mavi) kullanır. Görüntünün doğru görünmesi için, NumPy dizisindeki boyutları değiştirerek veya bir OpenCV fonksiyonunu çağırarak görüntüyü RGB renk alanına dönüştürmeniz gerekir: +Geleneksel olarak, OpenCV renkli görüntüler için BGR (Mavi-Yeşil-Kırmızı) kodlamasını kullanır, oysa Python araçlarının geri kalanı daha geleneksel olan RGB (Kırmızı-Yeşil-Mavi) kodlamasını kullanır. Görüntünün doğru görünmesi için, renk uzayını RGB'ye dönüştürmeniz gerekir; bunu NumPy dizisindeki boyutları değiştirerek veya bir OpenCV fonksiyonunu çağırarak yapabilirsiniz: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -Aynı `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. +Aynı `cvtColor` fonksiyonu, bir görüntüyü gri tonlamaya veya HSV (Ton-Doygunluk-Değer) renk uzayına dönüştürmek gibi diğer renk uzayı dönüşümleri için de kullanılabilir. -You can also use OpenCV to load video frame-by-frame - an example is given in the exercise [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). +OpenCV'yi kullanarak videoyu kare kare yükleyebilirsiniz - bir örnek [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) alıştırmasında verilmiştir. -### Image Processing +### Görüntü İşleme -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Bir görüntüyü sinir ağına göndermeden önce, birkaç ön işleme adımı uygulamak isteyebilirsiniz. OpenCV birçok şeyi yapabilir, örneğin: -* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` -* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` -* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). -* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` fonksiyonları, genellikle parlaklık veya kontrast ayarlamaktan daha tercih edilir. +* Görüntüyü `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` kullanarak **yeniden boyutlandırma**. +* Görüntüyü `im = cv2.medianBlur(im,3)` veya `im = cv2.GaussianBlur(im, (3,3), 0)` kullanarak **bulanıklaştırma**. +* Görüntünün **parlaklığını ve kontrastını değiştirme**, NumPy dizi manipülasyonlarıyla yapılabilir, [bu Stackoverflow notunda](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) açıklandığı gibi. +* [Eşikleme](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) kullanarak `cv2.threshold`/`cv2.adaptiveThreshold` fonksiyonlarını çağırmak, genellikle parlaklık veya kontrast ayarlamaktan daha tercih edilir. * Görüntüye farklı [dönüşümler](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) uygulamak: - - **[Affine dönüşümler](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)**, görüntüdeki üç noktanın kaynak ve hedef konumlarını bildiğinizde döndürme, yeniden boyutlandırma ve eğme işlemlerini birleştirmeniz gerektiğinde yararlı olabilir. Affine dönüşümler, paralel çizgileri paralel tutar. - - **[Perspektif dönüşümler](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)**, görüntüdeki 4 noktanın kaynak ve hedef konumlarını bildiğinizde yararlı olabilir. Örneğin, bir akıllı telefon kamerasıyla bir dikdörtgen belgeyi bir açıdan çektiğinizde ve belgenin kendisinin dikdörtgen bir görüntüsünü oluşturmak istediğinizde. -* Görüntü içindeki hareketi anlamak için **[optik akış](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** kullanmak. + - **[Affine dönüşümler](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)**, görüntüdeki üç noktanın kaynak ve hedef konumlarını bildiğinizde döndürme, yeniden boyutlandırma ve eğme işlemlerini birleştirmeniz gerektiğinde kullanışlı olabilir. Affine dönüşümler paralel çizgileri paralel tutar. + - **[Perspektif dönüşümler](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)**, görüntüdeki dört noktanın kaynak ve hedef konumlarını bildiğinizde kullanışlı olabilir. Örneğin, bir akıllı telefon kamerasıyla bir dikdörtgen belgeyi bir açıdan çektiğinizde, belgenin kendisinin dikdörtgen bir görüntüsünü oluşturmak istiyorsanız. +* **[Optik akış](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** kullanarak görüntü içindeki hareketi anlamak. -## Bilgisayarla Görme Kullanımına Dair Örnekler +## Bilgisayarlı Görü Kullanım Örnekleri -[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyamızda, bilgisayarla görmenin belirli görevleri yerine getirmek için nasıl kullanılabileceğine dair bazı örnekler veriyoruz: +[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)'ta, bilgisayarlı görünün belirli görevleri gerçekleştirmek için nasıl kullanılabileceğine dair bazı örnekler veriyoruz: -* **Bir Braille kitabının fotoğrafını ön işleme**. Braille sembollerini ayrı sınıflandırma için bir sinir ağı tarafından kullanmak üzere ayırmak için eşikleme, özellik tespiti, perspektif dönüşüm ve NumPy manipülasyonlarını nasıl kullanabileceğimize odaklanıyoruz. +* **Bir Braille kitabının fotoğrafını ön işleme**. Eşikleme, özellik tespiti, perspektif dönüşümü ve NumPy manipülasyonlarını kullanarak bireysel Braille sembollerini ayırmaya odaklanıyoruz, böylece bunlar bir sinir ağı tarafından sınıflandırılabilir. -![Braille Görüntüsü](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.tr.jpeg) | ![Braille Görüntüsü Ön İşlemden Geçmiş](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.tr.png) | ![Braille Sembolleri](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.tr.png) +![Braille Görüntüsü](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.tr.jpeg) | ![Braille Görüntüsü Ön İşlenmiş](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.tr.png) | ![Braille Sembolleri](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.tr.png) ----|-----|----- -> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasından alınmıştır. +> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)'den alınmıştır. -* **Kare farkı kullanarak videoda hareket tespiti**. Kamera sabitse, kamera akışından gelen kareler birbirine oldukça benzer olmalıdır. Kareler diziler olarak temsil edildiğinden, iki ardışık kare için bu dizileri çıkartarak piksel farkını elde ederiz; bu, statik kareler için düşük olmalı ve görüntüde önemli bir hareket olduğunda artmalıdır. +* **Kare farkı kullanarak videoda hareket tespiti**. Kamera sabitse, kamera akışındaki kareler birbirine oldukça benzer olmalıdır. Kareler diziler olarak temsil edildiğinden, iki ardışık kare için bu dizileri çıkardığınızda piksel farkını elde edersiniz; bu fark statik kareler için düşük, görüntüde önemli bir hareket olduğunda ise yüksek olur. ![Video kareleri ve kare farklarının görüntüsü](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.tr.png) -> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasından alınmıştır. +> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)'den alınmıştır. -* **Optik Akış kullanarak hareket tespiti**. [Optik akış](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html), video karelerindeki bireysel piksellerin nasıl hareket ettiğini anlamamıza olanak tanır. İki tür optik akış vardır: +* **Optik Akış kullanarak hareket tespiti**. [Optik akış](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html), video karelerindeki bireysel piksellerin nasıl hareket ettiğini anlamamızı sağlar. İki tür optik akış vardır: - - **Yoğun Optik Akış** her piksel için hareket ettiği yeri gösteren vektör alanını hesaplar. - - **Seyrek Optik Akış** görüntüdeki bazı belirgin özellikleri (örneğin kenarlar) alarak ve bunların her karedeki yolunu oluşturarak çalışır. + - **Yoğun Optik Akış**, her pikselin nereye hareket ettiğini gösteren vektör alanını hesaplar. + - **Seyrek Optik Akış**, görüntüdeki bazı belirgin özellikleri (ör. kenarlar) alır ve bunların kareden kareye hareket yolunu oluşturur. ![Optik Akış Görüntüsü](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.tr.png) -> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasından alınmıştır. +> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)'den alınmıştır. ## ✍️ Örnek Not Defterleri: OpenCV [OpenCV'yi Eylemde Deneyin](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -OpenCV ile bazı deneyler yapmak için [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasını keşfedelim. +[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)'u keşfederek OpenCV ile bazı deneyler yapalım. ## Sonuç -Bazen hareket tespiti veya parmak ucu tespiti gibi nispeten karmaşık görevler tamamen bilgisayarla görme ile çözülebilir. Bu nedenle, bilgisayarla görmenin temel tekniklerini bilmek ve OpenCV gibi kütüphanelerin neler yapabileceğini anlamak çok faydalıdır. +Bazen, hareket tespiti veya parmak ucu tespiti gibi nispeten karmaşık görevler yalnızca bilgisayarlı görü ile çözülebilir. Bu nedenle, bilgisayarlı görünün temel tekniklerini ve OpenCV gibi kütüphanelerin neler yapabileceğini bilmek çok faydalıdır. -## 🚀 Meydan Okuma +## 🚀 Zorluk -Cortical Tigers projesini ve bir robot aracılığıyla bilgisayarla görme görevlerini demokratikleştirmek için nasıl blok tabanlı bir çözüm geliştirdiklerini öğrenmek için [bu videoyu](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) izleyin. Bu alanda yeni öğrenicilerin uyum sağlamalarına yardımcı olan diğer projeler hakkında araştırma yapın. +AI Show'daki [bu videoyu](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) izleyerek Cortic Tigers projesini ve bilgisayarlı görü görevlerini bir robot aracılığıyla demokratikleştirmek için nasıl blok tabanlı bir çözüm geliştirdiklerini öğrenin. Yeni öğrenenleri bu alana kazandırmaya yardımcı olan diğer projeler hakkında araştırma yapın. -## [Ders Sonrası Sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) -## Gözden Geçirme ve Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Optik akış hakkında daha fazla bilgi için [bu harika öğreticide](https://learnopencv.com/optical-flow-in-opencv/) okuyun. +Optik akış hakkında daha fazla bilgi için [bu harika eğiticiye](https://learnopencv.com/optical-flow-in-opencv/) göz atın. -## [Görev](lab/README.md) +## [Ödev](lab/README.md) -Bu laboratuvarda basit jestlerle bir video çekeceksiniz ve amacınız optik akış kullanarak yukarı/aşağı/sol/sağ hareketleri çıkarmaktır. +Bu laboratuvarda, basit jestlerle bir video çekeceksiniz ve amacınız optik akış kullanarak yukarı/aşağı/sol/sağ hareketlerini çıkarmak olacak. -Avuç Hareketi Çerçevesi +Avuç İçi Hareketi Çerçevesi -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md index 4d936bb5..0f77ea02 100644 --- a/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,23 +1,31 @@ -# Optik Akış Kullanarak Hareketlerin Tespiti + +# Optik Akış Kullanarak Hareketleri Tespit Etme -[AI for Beginners Curriculum](https://aka.ms/ai-beginners) dersinden laboratuvar ödevi. +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) müfredatından bir laboratuvar ödevi. ## Görev -[Bu videoyu](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) dikkate alın, burada bir kişinin avucu sabit bir arka planda sola/sağa/yukarı/aşağı hareket ediyor. -Eğitiminiz Ekim 2023'e kadar olan verilerle yapılmıştır. +[Bu videoyu](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) inceleyin; bir kişinin avucu sabit bir arka plan üzerinde sola/sağa/yukarı/aşağı hareket ediyor. -**Amacınız**, Optik Akış'ı kullanarak videonun hangi kısımlarının yukarı/aşağı/sola/sağa hareket içerdiğini belirlemektir. +**Amacınız**, Optik Akış kullanarak videonun hangi bölümlerinde yukarı/aşağı/sola/sağa hareketlerin olduğunu belirlemek olacaktır. -**Gelişmiş hedef**, avuç içi/parmak hareketini cilt tonunu kullanarak takip etmek olacaktır; bu, [bu blog yazısında](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) veya [burada](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) açıklanmıştır. +**Ekstra hedef**, [bu blog yazısında](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) veya [burada](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) açıklandığı gibi, cilt tonu kullanarak avuç veya parmak hareketini gerçekten takip etmek olacaktır. ## Başlangıç Not Defteri Laboratuvara [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) dosyasını açarak başlayın. -## Önemli Nokta +## Çıkarım -Bazen, hareket tespiti veya parmak ucu tespiti gibi görece karmaşık görevler tamamen bilgisayarla görme ile çözülebilir. Bu nedenle, OpenCV gibi kütüphanelerin neler yapabileceğini bilmek oldukça faydalıdır. +Bazen, hareket algılama veya parmak ucu algılama gibi nispeten karmaşık görevler yalnızca bilgisayarla görme yöntemleriyle çözülebilir. Bu nedenle, OpenCV gibi kütüphanelerin neler yapabileceğini bilmek oldukça faydalıdır. -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde, otorite kaynağı olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımıyla ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index 9d25e0c9..db5dc197 100644 --- a/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,3 +1,12 @@ + # Bilinen CNN Mimarileri ### VGG-16 @@ -6,59 +15,59 @@ VGG-16, 2014 yılında ImageNet top-5 sınıflandırmasında %92.7 doğruluk ora ![ImageNet Katmanları](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg) -Görüldüğü gibi, VGG geleneksel bir piramit mimarisini takip eder; bu, bir dizi konvolüsyon-pooling katmanıdır. +Gördüğünüz gibi, VGG geleneksel bir piramit mimarisini takip eder; bu, bir dizi evrişim-havuzlama katmanıdır. ![ImageNet Piramidi](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg) -> Görsel [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) kaynağındandır. +> Görsel [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) kaynağından alınmıştır. ### ResNet -ResNet, 2015 yılında Microsoft Research tarafından önerilen bir model ailesidir. ResNet'in ana fikri **artık bloklar** kullanmaktır: +ResNet, 2015 yılında Microsoft Research tarafından önerilen bir model ailesidir. ResNet'in ana fikri, **artık blokları** kullanmaktır: > Görsel [bu makaleden](https://arxiv.org/pdf/1512.03385.pdf) alınmıştır. -Kimlik geçişinin kullanılma nedeni, katmanımızın bir önceki katmanın sonucuyla artık bloğunun çıktısı arasındaki **farkı** tahmin etmesini sağlamaktır - bu nedenle ismi *artık*dır. Bu bloklar çok daha kolay eğitilir ve bu bloklardan birkaç yüz tanesiyle ağlar inşa edilebilir (en yaygın varyantlar ResNet-52, ResNet-101 ve ResNet-152'dir). +Kimlik geçişini kullanmanın nedeni, katmanımızın bir önceki katmanın sonucu ile artık bloğun çıktısı arasındaki **farkı** tahmin etmesini sağlamaktır - bu nedenle adına *artık* denir. Bu bloklar eğitilmesi çok daha kolaydır ve bu bloklardan yüzlercesiyle ağlar oluşturulabilir (en yaygın varyantlar ResNet-52, ResNet-101 ve ResNet-152'dir). -Bu ağı, veri kümesine göre karmaşıklığını ayarlayabilen bir yapı olarak da düşünebilirsiniz. Başlangıçta, ağı eğitmeye başladığınızda, ağırlık değerleri küçüktür ve sinyalin çoğu kimlik geçiş katmanlarından geçer. Eğitim ilerledikçe ve ağırlıklar büyüdükçe, ağ parametrelerinin önemi artar ve ağ, eğitim görüntülerini doğru bir şekilde sınıflandırmak için gerekli ifadeyi sağlamak üzere ayarlanır. +Bu ağı, veri setine göre karmaşıklığını ayarlayabilen bir yapı olarak da düşünebilirsiniz. Başlangıçta, ağı eğitmeye başladığınızda, ağırlık değerleri küçüktür ve sinyalin çoğu kimlik geçiş katmanlarından geçer. Eğitim ilerledikçe ve ağırlıklar büyüdükçe, ağ parametrelerinin önemi artar ve ağ, eğitim görüntülerini doğru bir şekilde sınıflandırmak için gereken ifade gücünü karşılayacak şekilde kendini ayarlar. ### Google Inception -Google Inception mimarisi bu fikri bir adım daha ileri götürerek, her ağ katmanını birkaç farklı yolun kombinasyonu olarak inşa eder: +Google Inception mimarisi bu fikri bir adım öteye taşır ve her ağ katmanını birkaç farklı yolun bir kombinasyonu olarak inşa eder: -> Görsel [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) kaynağındandır. +> Görsel [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) kaynağından alınmıştır. -Burada, 1x1 konvolüsyonların rolünü vurgulamamız gerekiyor, çünkü ilk başta mantıklı görünmeyebilir. 1x1 filtre ile görüntü üzerinden geçmemize neden olan şey nedir? Ancak, konvolüsyon filtrelerinin aynı zamanda birkaç derinlik kanalıyla çalıştığını unutmamalısınız (ilk olarak - RGB renkleri, sonraki katmanlarda - farklı filtreler için kanallar) ve 1x1 konvolüsyon, bu giriş kanallarını farklı eğitilebilir ağırlıklar kullanarak bir araya getirmek için kullanılır. Ayrıca, bu durum kanal boyutunda örnekleme (pooling) olarak da görülebilir. +Burada, 1x1 evrişimlerin rolünü vurgulamak gerekir, çünkü ilk bakışta mantıklı görünmeyebilir. Görüntüyü neden 1x1 filtreyle taramamız gerekiyor? Ancak, evrişim filtrelerinin aynı zamanda birkaç derinlik kanalında (başlangıçta - RGB renkleri, sonraki katmanlarda - farklı filtreler için kanallar) çalıştığını unutmamalısınız ve 1x1 evrişim, bu giriş kanallarını farklı eğitilebilir ağırlıklarla birleştirmek için kullanılır. Ayrıca kanal boyutunda bir alt örnekleme (havuzlama) olarak da görülebilir. -Konu hakkında [iyi bir blog yazısı](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) ve [orijinal makale](https://arxiv.org/pdf/1312.4400.pdf) bulunmaktadır. +Bu konuda [iyi bir blog yazısı](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) ve [orijinal makale](https://arxiv.org/pdf/1312.4400.pdf) bulunmaktadır. ### MobileNet -MobileNet, boyutu azaltılmış, mobil cihazlar için uygun model aileleridir. Kaynaklarınız kısıtlıysa ve biraz doğruluktan feragat edebiliyorsanız bunları kullanabilirsiniz. Onların arkasındaki ana fikir, **derinlik ayırıcı konvolüsyon** olarak adlandırılan bir yapıdır; bu, konvolüsyon filtrelerini mekansal konvolüsyonların ve derinlik kanalları üzerindeki 1x1 konvolüsyonların bir bileşimi olarak temsil etmeye olanak tanır. Bu, parametre sayısını önemli ölçüde azaltarak ağın boyutunu küçültür ve ayrıca daha az veriyle daha kolay eğitilmesini sağlar. +MobileNet, mobil cihazlar için uygun, boyutları küçültülmüş bir model ailesidir. Kaynaklarınız sınırlıysa ve biraz doğruluk kaybını göze alabiliyorsanız, bu modelleri kullanabilirsiniz. Bu modellerin arkasındaki ana fikir, **derinlik ayrılabilir evrişim** olarak adlandırılan bir tekniktir. Bu teknik, evrişim filtrelerini, uzaysal evrişimlerin ve derinlik kanalları üzerinde 1x1 evrişimlerin bir bileşimi olarak temsil etmeye olanak tanır. Bu, parametre sayısını önemli ölçüde azaltır, ağı daha küçük hale getirir ve daha az veriyle eğitilmesini kolaylaştırır. -Burada [MobileNet hakkında iyi bir blog yazısı](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) bulunmaktadır. +İşte [MobileNet hakkında iyi bir blog yazısı](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). ## Sonuç -Bu ünitede, bilgisayarla görme sinir ağlarının temel kavramını öğrendiniz - konvolüsyonel ağlar. Görüntü sınıflandırması, nesne tespiti ve hatta görüntü üretim ağlarını güçlendiren gerçek yaşam mimarileri hepsi CNN'lere dayanmaktadır, sadece daha fazla katman ve bazı ek eğitim ipuçları ile. +Bu bölümde, bilgisayarla görme sinir ağlarının temel konseptini - evrişimli ağları öğrendiniz. Görüntü sınıflandırma, nesne algılama ve hatta görüntü oluşturma ağlarını destekleyen gerçek yaşam mimarilerinin hepsi CNN'lere dayanır, sadece daha fazla katman ve bazı ek eğitim hileleriyle. ## 🚀 Meydan Okuma -Eşlik eden defterlerde, daha yüksek doğruluk elde etme konusunda notlar bulunmaktadır. Daha yüksek bir doğruluk elde edip edemeyeceğinizi görmek için bazı deneyler yapın. +Eşlik eden defterlerde, daha yüksek doğruluk elde etmenin yolları hakkında notlar bulunmaktadır. Daha yüksek doğruluk elde edip edemeyeceğinizi görmek için bazı deneyler yapın. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) ## Gözden Geçirme ve Kendi Kendine Çalışma -CNN'ler en çok Bilgisayarla Görme görevleri için kullanılsa da, genellikle sabit boyutlu desenleri çıkarmak için iyidirler. Örneğin, seslerle uğraşıyorsak, belirli bir ses sinyalindeki belirli desenleri aramak için CNN'leri kullanmak isteyebiliriz - bu durumda filtreler 1 boyutlu olur (ve bu CNN 1D-CNN olarak adlandırılır). Ayrıca, bazen 3D-CNN, çok boyutlu alanda özellikleri çıkarmak için kullanılır; örneğin, videoda meydana gelen belirli olaylar - CNN, zaman içinde değişen özelliklerin belirli desenlerini yakalayabilir. CNN'lerle yapılabilecek diğer görevler hakkında gözden geçirme ve kendi kendine çalışma yapın. +CNN'ler genellikle Bilgisayarla Görme görevlerinde kullanılsa da, sabit boyutlu desenleri çıkarmada genel olarak iyidirler. Örneğin, seslerle çalışıyorsak, ses sinyalinde bazı belirli desenleri aramak için de CNN'leri kullanmak isteyebiliriz - bu durumda filtreler 1 boyutlu olur (ve bu CNN'e 1D-CNN denir). Ayrıca, bazen çok boyutlu uzayda özellikleri çıkarmak için 3D-CNN kullanılır, örneğin videoda meydana gelen belirli olaylar - CNN, zaman içinde değişen belirli özellik desenlerini yakalayabilir. CNN'lerle yapılabilecek diğer görevler hakkında biraz araştırma ve kendi kendine çalışma yapın. -## [Ödev](lab/README.md) +## [Görev](lab/README.md) -Bu laboratuvar çalışmasında, farklı kedi ve köpek ırklarını sınıflandırmanız isteniyor. Bu görüntüler, MNIST veri setinden daha karmaşık ve daha yüksek boyutlardadır ve 10'dan fazla sınıf bulunmaktadır. +Bu laboratuvarda, farklı kedi ve köpek ırklarını sınıflandırma görevi verilmektedir. Bu görüntüler, MNIST veri setinden daha karmaşıktır, daha yüksek boyutlardadır ve 10'dan fazla sınıf bulunmaktadır. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md index 012d1cdf..62ee6f22 100644 --- a/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,59 +1,67 @@ -# Konvolüsyonel Sinir Ağları + +# Evrişimli Sinir Ağları -Daha önce sinir ağlarının görüntülerle başa çıkmada oldukça iyi olduğunu ve hatta tek katmanlı algılayıcıların MNIST veri setinden el yazısı rakamlarını makul bir doğrulukla tanıyabildiğini gördük. Ancak, MNIST veri seti çok özel bir durumdur ve tüm rakamlar görüntünün içinde merkezlenmiştir, bu da görevi daha basit hale getirir. +Daha önce sinir ağlarının görüntülerle başa çıkmada oldukça iyi olduğunu görmüştük ve tek katmanlı bir algılayıcı bile MNIST veri setindeki el yazısı rakamları makul bir doğrulukla tanıyabiliyor. Ancak, MNIST veri seti oldukça özeldir ve tüm rakamlar görüntünün ortasına hizalanmıştır, bu da görevi daha basit hale getirir. -## [Ön-dersten sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -Gerçek hayatta, bir resimde nesneleri tam konumlarına bakmaksızın tanıyabilmemiz gerekir. Bilgisayarla görme, genel sınıflandırmadan farklıdır, çünkü bir resimde belirli bir nesneyi bulmaya çalışırken, belirli **desenleri** ve bunların kombinasyonlarını aramak için görüntüyü tarıyoruz. Örneğin, bir kedi ararken önce, bıyıkları oluşturabilecek yatay çizgilere bakabiliriz ve ardından belirli bir bıyık kombinasyonu, bunun gerçekten bir kedi resmi olduğunu bize gösterebilir. Belirli desenlerin göreceli konumu ve varlığı önemlidir, görüntüdeki tam konumları değil. +Gerçek hayatta, bir görüntüdeki nesneleri tam olarak nerede olduklarına bakmaksızın tanıyabilmek isteriz. Bilgisayarla görme, genel sınıflandırmadan farklıdır çünkü bir görüntüde belirli bir nesneyi bulmaya çalışırken, görüntüyü tarar ve belirli **desenler** ve bunların kombinasyonlarını ararız. Örneğin, bir kedi ararken, önce bıyık oluşturabilecek yatay çizgiler arayabiliriz ve ardından belirli bir bıyık kombinasyonu bize bunun bir kedi resmi olduğunu söyleyebilir. Belirli desenlerin göreceli konumu ve varlığı önemlidir, ancak görüntüdeki tam konumu değil. -Desenleri çıkarmak için **konvolüsyonel filtreler** kavramını kullanacağız. Bildiğiniz gibi, bir görüntü 2D-matris veya renk derinliği ile 3D-tensor ile temsil edilir. Bir filtre uygulamak, nispeten küçük bir **filtre çekirdek** matrisini alıp, orijinal görüntüdeki her piksel için komşu noktalarla ağırlıklı ortalama hesaplamak anlamına gelir. Bunu, görüntünün üzerinde kaydırılan küçük bir pencere gibi düşünebiliriz ve filtre çekirdek matrisindeki ağırlıklara göre tüm pikselleri ortalıyoruz. +Desenleri çıkarmak için **evrişimsel filtreler** kavramını kullanacağız. Bildiğiniz gibi, bir görüntü 2D bir matris veya renk derinliği olan bir 3D tensör olarak temsil edilir. Bir filtre uygulamak, nispeten küçük bir **filtre çekirdeği** matrisini alıp, orijinal görüntüdeki her bir piksel için komşu noktalarla ağırlıklı ortalamayı hesaplamak anlamına gelir. Bunu, filtre çekirdeği matrisindeki ağırlıklara göre tüm pikselleri ortalayan küçük bir pencerenin tüm görüntü üzerinde kayması gibi düşünebiliriz. -![Dikey Kenar Filtre](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.tr.png) | ![Yatay Kenar Filtre](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.tr.png) +![Dikey Kenar Filtresi](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.tr.png) | ![Yatay Kenar Filtresi](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.tr.png) ----|---- -> Görüntü Dmitry Soshnikov'dan +> Görsel: Dmitry Soshnikov -Örneğin, MNIST rakamlarına 3x3 dikey kenar ve yatay kenar filtreleri uygularsak, orijinal görüntümüzdeki dikey ve yatay kenarların bulunduğu yerlerde vurgular (örneğin, yüksek değerler) alabiliriz. Böylece bu iki filtre, kenarları "arama" için kullanılabilir. Benzer şekilde, diğer düşük seviyeli desenleri aramak için farklı filtreler tasarlayabiliriz: -Veriler Ekim 2023'e kadar eğitim aldınız. +Örneğin, MNIST rakamlarına 3x3 boyutunda dikey kenar ve yatay kenar filtreleri uygularsak, orijinal görüntümüzde dikey ve yatay kenarların olduğu yerlerde vurgular (örneğin, yüksek değerler) elde edebiliriz. Bu nedenle, bu iki filtre "kenarları aramak" için kullanılabilir. Benzer şekilde, diğer düşük seviyeli desenleri aramak için farklı filtreler tasarlayabiliriz: -> [Leung-Malik Filtre Bankası](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) görüntüsü +> [Leung-Malik Filtre Bankası](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) Görseli -Ancak, bazı desenleri manuel olarak çıkarmak için filtreleri tasarlayabilsek de, ağı bu desenleri otomatik olarak öğrenmesi için tasarlayabiliriz. Bu, CNN'in arkasındaki ana fikirlerden biridir. +Ancak, bazı desenleri çıkarmak için filtreleri manuel olarak tasarlayabileceğimiz gibi, ağı filtreleri otomatik olarak öğrenebilecek şekilde de tasarlayabiliriz. Bu, CNN'nin arkasındaki temel fikirlerden biridir. -## CNN'in Ana Fikirleri +## CNN'nin Temel Fikirleri -CNN'lerin çalışma şekli, aşağıdaki önemli fikirlere dayanır: +CNN'lerin çalışma şekli şu önemli fikirlere dayanır: -* Konvolüsyonel filtreler desenleri çıkarabilir -* Ağı, filtrelerin otomatik olarak eğitilmesini sağlayacak şekilde tasarlayabiliriz -* Aynı yaklaşımı, yalnızca orijinal görüntüde değil, yüksek seviyeli özelliklerde desenler bulmak için de kullanabiliriz. Böylece CNN özellik çıkarımı, düşük seviyeli piksel kombinasyonlarından başlayarak, resim parçalarının daha yüksek seviyeli kombinasyonlarına kadar bir özellik hiyerarşisi üzerinde çalışır. +* Evrişimsel filtreler desenleri çıkarabilir. +* Ağı, filtrelerin otomatik olarak eğitileceği şekilde tasarlayabiliriz. +* Aynı yaklaşımı yalnızca orijinal görüntüde değil, yüksek seviyeli özelliklerde desenler bulmak için de kullanabiliriz. Böylece, CNN özellik çıkarımı, düşük seviyeli piksel kombinasyonlarından başlayarak, görüntü parçalarının daha yüksek seviyeli kombinasyonlarına kadar bir özellik hiyerarşisi üzerinde çalışır. -![Hiyerarşik Özellik Çıkarma](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.tr.png) +![Hiyerarşik Özellik Çıkarımı](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.tr.png) -> [Hislop-Lynch'in bir makalesinden](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) alınan görüntü, [araştırmalarına dayanmaktadır](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) +> Görsel: [Hislop-Lynch'in bir makalesinden](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), [araştırmalarına dayanarak](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) -## ✍️ Alıştırmalar: Konvolüsyonel Sinir Ağları +## ✍️ Alıştırmalar: Evrişimli Sinir Ağları -Konvolüsyonel sinir ağlarının nasıl çalıştığını ve nasıl eğitilebilir filtreler elde edebileceğimizi keşfetmeye devam edelim, ilgili defterler üzerinden çalışarak: +Evrişimli sinir ağlarının nasıl çalıştığını ve eğitilebilir filtrelere nasıl ulaşabileceğimizi keşfetmeye devam edelim. Bunun için ilgili defterler üzerinde çalışabilirsiniz: -* [Konvolüsyonel Sinir Ağları - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) -* [Konvolüsyonel Sinir Ağları - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) +* [Evrişimli Sinir Ağları - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Evrişimli Sinir Ağları - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) ## Piramit Mimarisi -Görüntü işleme için kullanılan çoğu CNN, sözde bir piramit mimarisini takip eder. Orijinal görüntülere uygulanan ilk konvolüsyonel katman genellikle nispeten düşük sayıda filtreye (8-16) sahiptir ve bu filtreler yatay/dikey çizgiler gibi farklı piksel kombinasyonlarına karşılık gelir. Bir sonraki seviyede, ağın mekansal boyutunu azaltır ve filtre sayısını artırırız, bu da daha fazla basit özellik kombinasyonuna karşılık gelir. Her katmanda, son sınıflandırıcıya doğru ilerledikçe, görüntünün mekansal boyutları azalır ve filtre sayısı artar. +Görüntü işleme için kullanılan çoğu CNN, sözde piramit mimarisini takip eder. Orijinal görüntülere uygulanan ilk evrişim katmanı genellikle nispeten az sayıda filtreye sahiptir (8-16), bu da yatay/dikey çizgiler gibi farklı piksel kombinasyonlarına karşılık gelir. Bir sonraki seviyede, ağın uzaysal boyutunu azaltır ve basit özelliklerin daha fazla olası kombinasyonuna karşılık gelen filtre sayısını artırırız. Her katmanda, son sınıflandırıcıya doğru ilerledikçe, görüntünün uzaysal boyutları azalır ve filtre sayısı artar. -Örneğin, 2014'te ImageNet'in en iyi-5 sınıflandırmasında %92.7 doğruluk elde eden VGG-16 ağının mimarisine bakalım: +Örneğin, 2014 yılında ImageNet'in ilk 5 sınıflandırmasında %92.7 doğruluk elde eden VGG-16 ağının mimarisine bakalım: ![ImageNet Katmanları](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg) ![ImageNet Piramidi](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg) -> [Researchgate'den](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) alınan görüntü +> Görsel: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) ## En İyi Bilinen CNN Mimarileri [En iyi bilinen CNN mimarileri hakkında çalışmaya devam edin](CNN_Architectures.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md index a4491b6e..db0290c4 100644 --- a/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,20 +1,29 @@ + # Evcil Hayvan Yüzlerinin Sınıflandırılması -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) dersinden laboratuvar ödevi. +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) kapsamında bir laboratuvar ödevi. ## Görev -Bir evcil hayvan kreşi için tüm evcil hayvanları kataloglamak üzere bir uygulama geliştirmeniz gerektiğini hayal edin. Böyle bir uygulamanın harika özelliklerinden biri, bir fotoğraftan cinsi otomatik olarak keşfetmektir. Bu, sinir ağları kullanılarak başarıyla yapılabilir. +Bir evcil hayvan yuvası için tüm evcil hayvanları kataloglayacak bir uygulama geliştirmeniz gerektiğini hayal edin. Böyle bir uygulamanın harika özelliklerinden biri, bir fotoğraftan otomatik olarak cinsin tespit edilmesi olurdu. Bu, sinir ağları kullanılarak başarıyla yapılabilir. -Farklı kedi ve köpek ırklarını sınıflandırmak için bir konvolüsyonel sinir ağını **Pet Faces** veri setini kullanarak eğitmeniz gerekiyor. +**Pet Faces** veri kümesini kullanarak farklı kedi ve köpek cinslerini sınıflandırmak için bir evrişimli sinir ağı eğitmeniz gerekiyor. -## Veri Seti +## Veri Kümesi -**Pet Faces** veri setini kullanacağız, bu veri seti [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setinden türetilmiştir. 35 farklı köpek ve kedi ırkını içermektedir. +**Pet Faces** veri kümesini kullanacağız. Bu veri kümesi, [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri kümesinden türetilmiştir. 35 farklı köpek ve kedi cinsini içerir. -![İşleyeceğimiz veri seti](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.tr.png) +![Ele alacağımız veri kümesi](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.tr.png) -Veri setini indirmek için bu kod parçasını kullanın: +Veri kümesini indirmek için şu kod parçasını kullanın: ```python !wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz @@ -22,13 +31,13 @@ Veri setini indirmek için bu kod parçasını kullanın: !rm petfaces.tar.gz ``` -## Not Defterini Açma +## Başlangıç Not Defteri Laboratuvara [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) dosyasını açarak başlayın. -## Alınacak Ders +## Çıkarım -Sıfırdan bir görüntü sınıflandırma problemini oldukça karmaşık bir şekilde çözdünüz! Oldukça fazla sınıf vardı ve yine de makul bir doğruluk elde etmeyi başardınız! Ayrıca, bazı sınıfların insanlara bile belirgin şekilde farklı gelmediği durumlarda, en iyi-k doğruluğunu ölçmek mantıklıdır. +Sıfırdan bir görüntü sınıflandırma problemini çözmeyi başardınız! Oldukça fazla sınıf vardı ve yine de makul bir doğruluk elde edebildiniz! Ayrıca, top-k doğruluğunu ölçmek mantıklıdır, çünkü insanlar için bile açıkça farklı olmayan bazı sınıfları karıştırmak kolaydır. -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md index 1192db61..d139c14c 100644 --- a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,80 +1,90 @@ -# Önceden Eğitilmiş Ağlar ve Transfer Öğrenme + +# Önceden Eğitilmiş Ağlar ve Transfer Öğrenimi -CNN'leri eğitmek çok zaman alabilir ve bu görev için büyük miktarda veriye ihtiyaç vardır. Ancak, çoğu zaman, bir ağın görüntülerden desenler çıkarmak için kullanabileceği en iyi düşük seviyeli filtreleri öğrenmekle geçer. Doğal bir soru ortaya çıkar - bir veri kümesinde eğitilmiş bir sinir ağını kullanarak farklı görüntüleri sınıflandırmak için tam bir eğitim sürecine ihtiyaç duymadan bunu uyarlayabilir miyiz? +CNN'leri eğitmek çok zaman alabilir ve bu görev için çok fazla veri gereklidir. Ancak, bu sürenin büyük bir kısmı, bir ağın görüntülerden desenler çıkarmak için kullanabileceği en iyi düşük seviyeli filtreleri öğrenmekle geçer. Doğal olarak şu soru ortaya çıkar: Bir veri kümesinde eğitilmiş bir sinir ağını kullanıp, tamamen yeni bir eğitim sürecine gerek kalmadan farklı görüntüleri sınıflandırmak için uyarlayabilir miyiz? -## [Ön ders anketi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Bu yaklaşıma **transfer öğrenme** denir, çünkü bir sinir ağı modelinden diğerine bazı bilgileri aktarırız. Transfer öğrenmede genellikle, bazı büyük görüntü veri kümesinde eğitilmiş bir önceden eğitilmiş modelle başlarız, örneğin **ImageNet**. Bu modeller, genel görüntülerden farklı özellikleri çıkarmada zaten iyi bir iş çıkarabilir ve çoğu durumda, bu çıkarılan özelliklerin üzerine bir sınıflayıcı inşa etmek iyi sonuçlar verebilir. +Bu yaklaşım **transfer öğrenimi** olarak adlandırılır, çünkü bir sinir ağı modelinden diğerine bir miktar bilgi aktarırız. Transfer öğreniminde genellikle **ImageNet** gibi büyük bir görüntü veri kümesinde eğitilmiş bir önceden eğitilmiş modelle başlarız. Bu modeller, genel görüntülerden farklı özellikler çıkarmada zaten iyi bir iş çıkarabilir ve çoğu durumda bu çıkarılan özelliklerin üzerine bir sınıflandırıcı inşa etmek iyi sonuçlar verebilir. -> ✅ Transfer Öğrenme, Eğitim gibi diğer akademik alanlarda da bulunan bir terimdir. Bir alandan bilgi alıp bunu başka bir alana uygulama sürecini ifade eder. +> ✅ Transfer Öğrenimi, Eğitim gibi diğer akademik alanlarda da karşılaşabileceğiniz bir terimdir. Bir alandaki bilgiyi alıp başka bir alana uygulama sürecini ifade eder. -## Önceden Eğitilmiş Modellerin Özellik Çıkarıcıları Olarak Kullanılması +## Önceden Eğitilmiş Modelleri Özellik Çıkarıcı Olarak Kullanma -Önceki bölümde bahsettiğimiz konvolüsyonel ağlar, her birinin görüntüden bazı özellikleri çıkarması beklenen bir dizi katman içeriyordu. Bu katmanlar, düşük seviyeli piksel kombinasyonlarından (örneğin yatay/dikey çizgi veya darbe) başlayarak, bir alevin gözü gibi daha yüksek seviyeli özellik kombinasyonlarına kadar uzanır. Eğer CNN'i yeterince büyük, genel ve çeşitli görüntü veri kümesinde eğitirsek, ağ bu yaygın özellikleri çıkarmayı öğrenmelidir. +Önceki bölümde bahsettiğimiz evrişimli ağlar, görüntüden özellikler çıkarmak için tasarlanmış bir dizi katman içerir. Bu katmanlar, düşük seviyeli piksel kombinasyonlarından (örneğin yatay/dikey çizgi veya vuruş) başlayarak, bir alevin gözü gibi daha yüksek seviyeli özellik kombinasyonlarına kadar çıkarım yapar. Eğer CNN'i yeterince büyük ve çeşitli bir görüntü veri kümesinde eğitirsek, ağ bu ortak özellikleri çıkarmayı öğrenmelidir. -Hem Keras hem de PyTorch, bazı yaygın mimariler için önceden eğitilmiş sinir ağı ağırlıklarını kolayca yüklemek için fonksiyonlar içerir; bunların çoğu ImageNet görüntüleri üzerinde eğitilmiştir. En sık kullanılanlar, önceki dersten [CNN Mimarileri](../07-ConvNets/CNN_Architectures.md) sayfasında açıklanmıştır. Özellikle aşağıdakilerden birini kullanmayı düşünebilirsiniz: +Hem Keras hem de PyTorch, ImageNet görüntüleri üzerinde eğitilmiş bazı yaygın mimariler için önceden eğitilmiş sinir ağı ağırlıklarını kolayca yüklemek için işlevler içerir. En sık kullanılanlar, önceki dersteki [CNN Mimarıları](../07-ConvNets/CNN_Architectures.md) sayfasında açıklanmıştır. Özellikle aşağıdakilerden birini kullanmayı düşünebilirsiniz: -* **VGG-16/VGG-19** nispeten basit modellerdir ve yine de iyi doğruluk sağlar. VGG'yi ilk deneme olarak kullanmak, transfer öğrenmenin nasıl çalıştığını görmek için iyi bir seçimdir. -* **ResNet**, Microsoft Research tarafından 2015'te önerilen bir model ailesidir. Daha fazla katmana sahiptirler ve bu nedenle daha fazla kaynak alırlar. -* **MobileNet**, mobil cihazlar için uygun, boyutu azaltılmış bir model ailesidir. Kaynaklarınız kısıtlıysa ve biraz doğruluktan feragat edebiliyorsanız bunları kullanın. +* **VGG-16/VGG-19**, nispeten basit modellerdir ve yine de iyi doğruluk sağlar. Transfer öğreniminin nasıl çalıştığını görmek için genellikle VGG'yi ilk deneme olarak kullanmak iyi bir seçimdir. +* **ResNet**, Microsoft Research tarafından 2015 yılında önerilen bir model ailesidir. Daha fazla katmana sahiptirler ve dolayısıyla daha fazla kaynak gerektirirler. +* **MobileNet**, mobil cihazlar için uygun, boyutu azaltılmış bir model ailesidir. Eğer kaynaklarınız sınırlıysa ve biraz doğruluk kaybını göze alabiliyorsanız, bunları kullanabilirsiniz. -İşte VGG-16 ağı tarafından bir kedinin resminden çıkarılan örnek özellikler: +İşte VGG-16 ağı tarafından bir kedi resminden çıkarılan örnek özellikler: ![VGG-16 tarafından çıkarılan özellikler](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.tr.png) ## Kediler ve Köpekler Veri Kümesi -Bu örnekte, gerçek yaşam görüntü sınıflandırma senaryosuna çok yakın bir [Kediler ve Köpekler](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) veri kümesini kullanacağız. +Bu örnekte, gerçek hayattaki bir görüntü sınıflandırma senaryosuna çok yakın olan [Kediler ve Köpekler](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) veri kümesini kullanacağız. -## ✍️ Alıştırma: Transfer Öğrenme +## ✍️ Alıştırma: Transfer Öğrenimi -Transfer öğrenmeyi uygulamalı olarak görmek için ilgili defterlere bakalım: +Transfer öğrenimini ilgili not defterlerinde uygulamada görelim: -* [Transfer Öğrenme - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Transfer Öğrenme - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [Transfer Öğrenimi - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Öğrenimi - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## Düşmanca Kedi Görselleştirme +## Adversaryal Kedi Görselleştirme -Önceden eğitilmiş sinir ağı, *beyni* içinde farklı desenler içerir, bunlar arasında **ideal kedi** (ve ideal köpek, ideal zebra vb.) kavramları da vardır. Bu görüntüyü bir şekilde **görselleştirmek** ilginç olacaktır. Ancak bu basit değildir, çünkü desenler ağ ağırlıkları üzerinde yayılmıştır ve ayrıca hiyerarşik bir yapıda düzenlenmiştir. +Önceden eğitilmiş bir sinir ağı, "ideal kedi" (aynı zamanda ideal köpek, ideal zebra vb.) gibi farklı desenleri "beyninde" barındırır. Bu görüntüyü bir şekilde **görselleştirmek** ilginç olurdu. Ancak bu basit değildir, çünkü desenler ağ ağırlıkları boyunca yayılmıştır ve ayrıca hiyerarşik bir yapıda organize edilmiştir. -Alabileceğimiz bir yaklaşım, rastgele bir görüntü ile başlamaktır ve ardından o görüntüyü öyle bir şekilde ayarlamak için **gradyan iniş optimizasyonu** tekniğini kullanmaktır ki ağ, bunun bir kedi olduğunu düşünmeye başlasın. +Alabileceğimiz bir yaklaşım, rastgele bir görüntüyle başlamak ve ardından **gradyan iniş optimizasyonu** tekniğini kullanarak bu görüntüyü ağın bir kedi olduğunu düşünmesini sağlayacak şekilde ayarlamaktır. ![Görüntü Optimizasyon Döngüsü](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.tr.png) -Ancak, bunu yaparsak, rastgele bir gürültüye çok benzeyen bir şey alırız. Bunun nedeni, *ağın giriş görüntüsünün bir kedi olduğunu düşünmesini sağlamak için birçok yolun olmasıdır*, bazıları görsel olarak mantıklı değildir. Bu görüntüler, kediye özgü birçok deseni içerse de, onları görsel olarak ayırt edici kılacak hiçbir şey yoktur. +Ancak bunu yaparsak, rastgele bir gürültüye çok benzeyen bir şey elde ederiz. Bunun nedeni, *ağın giriş görüntüsünü bir kedi olarak düşünmesini sağlamanın birçok yolu olmasıdır*, bunların bazıları görsel olarak anlamlı değildir. Bu görüntüler, bir kedi için tipik olan birçok deseni içerir, ancak görsel olarak ayırt edici olmalarını sağlayacak bir kısıtlama yoktur. -Sonucu iyileştirmek için kayıp fonksiyonuna **varyasyon kaybı** adı verilen başka bir terim ekleyebiliriz. Bu, görüntünün komşu piksellerinin ne kadar benzer olduğunu gösteren bir metriktir. Varyasyon kaybını minimize etmek, görüntüyü daha pürüzsüz hale getirir ve gürültüyü ortadan kaldırır - böylece daha görsel olarak çekici desenleri ortaya çıkarır. İşte yüksek olasılıkla kedi ve zebra olarak sınıflandırılan bu tür "ideal" görüntülerin bir örneği: +Sonucu iyileştirmek için kayıp fonksiyonuna **varyasyon kaybı** adı verilen başka bir terim ekleyebiliriz. Bu, görüntünün komşu piksellerinin ne kadar benzer olduğunu gösteren bir metriktir. Varyasyon kaybını minimize etmek, görüntüyü daha düzgün hale getirir ve gürültüyü ortadan kaldırır - böylece daha görsel olarak çekici desenler ortaya çıkar. İşte yüksek olasılıkla kedi ve zebra olarak sınıflandırılan bu "ideal" görüntülerin bir örneği: ![İdeal Kedi](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.tr.png) | ![İdeal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.tr.png) -----|----- *İdeal Kedi* | *İdeal Zebra* -Benzer bir yaklaşım, sinir ağları üzerinde **düşmanca saldırılar** gerçekleştirmek için kullanılabilir. Farz edelim ki bir sinir ağını kandırmak ve bir köpeği kedi gibi göstermek istiyoruz. Eğer bir ağ tarafından köpek olarak tanınan bir köpeğin görüntüsünü alırsak, ardından gradyan iniş optimizasyonunu kullanarak onu biraz ayarlayabiliriz, ta ki ağ bunu kedi olarak sınıflandırmaya başlayana kadar: +Benzer bir yaklaşım, sinir ağına karşı **adversaryal saldırılar** gerçekleştirmek için kullanılabilir. Diyelim ki bir sinir ağını kandırmak ve bir köpeği kedi gibi göstermek istiyoruz. Eğer ağ tarafından köpek olarak tanınan bir köpek görüntüsü alırsak, bunu biraz gradyan iniş optimizasyonu kullanarak ayarlayabiliriz, ta ki ağ bunu kedi olarak sınıflandırana kadar: -![Bir Köpeğin Resmi](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.tr.png) | ![Kedi olarak sınıflandırılan bir köpeğin resmi](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.tr.png) +![Köpek Resmi](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.tr.png) | ![Kedi olarak sınıflandırılan köpek resmi](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.tr.png) -----|----- -*Bir köpeğin orijinal resmi* | *Kedi olarak sınıflandırılan bir köpeğin resmi* +*Orijinal köpek resmi* | *Kedi olarak sınıflandırılan köpek resmi* -Yukarıdaki sonuçları yeniden üretmek için kodu aşağıdaki defterde görebilirsiniz: +Yukarıdaki sonuçları yeniden üretmek için kodu şu not defterinde görebilirsiniz: + +* [İdeal ve Adversaryal Kedi - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) -* [İdeal ve Düşmanca Kedi - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) ## Sonuç -Transfer öğrenmeyi kullanarak, özel bir nesne sınıflandırma görevi için hızlı bir şekilde bir sınıflayıcı oluşturabilir ve yüksek doğruluk elde edebilirsiniz. Daha karmaşık görevlerin, çözmekte olduğumuz şu an daha yüksek hesaplama gücü gerektirdiğini ve CPU üzerinde kolayca çözülemeyeceğini görebilirsiniz. Bir sonraki ünitede, aynı modeli daha düşük hesaplama kaynakları kullanarak eğitmek için daha hafif bir uygulama kullanmaya çalışacağız; bu, sadece biraz daha düşük doğruluk ile sonuçlanacaktır. +Transfer öğrenimi kullanarak, özel bir nesne sınıflandırma görevi için hızlı bir şekilde bir sınıflandırıcı oluşturabilir ve yüksek doğruluk elde edebilirsiniz. Daha karmaşık görevlerin artık daha yüksek hesaplama gücü gerektirdiğini ve CPU üzerinde kolayca çözülemeyeceğini görebilirsiniz. Bir sonraki birimde, aynı modeli daha düşük hesaplama kaynakları kullanarak eğitmek için daha hafif bir uygulama kullanmayı deneyeceğiz, bu da sadece biraz daha düşük doğrulukla sonuçlanır. ## 🚀 Meydan Okuma -Eşlik eden defterlerde, transfer bilginin en iyi nasıl çalıştığına dair notlar bulunmaktadır; bu notlar, biraz benzer eğitim verileri ile (belki yeni bir hayvan türü) ilgilidir. Transfer bilginiz modellerinin nasıl performans gösterdiğini görmek için tamamen yeni görüntü türleri ile bazı deneyler yapın. +Eşlik eden not defterlerinde, transfer bilginin en iyi şekilde benzer eğitim verileriyle (örneğin yeni bir hayvan türü) çalıştığına dair notlar bulunmaktadır. Tamamen yeni türdeki görüntülerle biraz deney yaparak transfer bilgi modellerinizin ne kadar iyi veya kötü performans gösterdiğini görün. -## [Ders sonrası anket](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) ## Gözden Geçirme ve Kendi Kendine Çalışma -Modellerinizi eğitmenin bazı diğer yollarını derinleştirmek için [TrainingTricks.md](TrainingTricks.md) dosyasını okuyun. +Modellerinizi eğitmenin diğer yollarını öğrenmek için [TrainingTricks.md](TrainingTricks.md) dosyasını okuyun. -## [Görev](lab/README.md) +## [Ödev](lab/README.md) -Bu laboratuvarda, 35 kedi ve köpek ırkından oluşan gerçek yaşam [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri kümesini kullanacağız ve bir transfer öğrenme sınıflayıcısı oluşturacağız. +Bu laboratuvarda, gerçek hayattaki [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri kümesini kullanacağız. Bu veri kümesi 35 kedi ve köpek türünü içerir ve bir transfer öğrenimi sınıflandırıcısı oluşturacağız. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index df0c7e4d..9a670c83 100644 --- a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ + # Derin Öğrenme Eğitim İpuçları -Sinir ağları daha derin hale geldikçe, bunların eğitimi süreci giderek daha zor hale geliyor. Ana sorunlardan biri, sözde [kaybolan gradyanlar](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) veya [patlayan gradyanlar](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Bu yazı](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) bu sorunlara iyi bir giriş yapmaktadır. +Sinir ağları derinleştikçe, bu ağların eğitimi daha da zorlaşır. Ana sorunlardan biri, [kaybolan gradyanlar](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) veya [patlayan gradyanlar](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) olarak adlandırılan problemdir. [Bu yazı](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11), bu sorunlara iyi bir giriş sağlar. -Derin ağların eğitimini daha verimli hale getirmek için kullanılabilecek birkaç teknik bulunmaktadır. +Derin ağların eğitimini daha verimli hale getirmek için kullanılabilecek birkaç teknik vardır. -## Değerleri makul bir aralıkta tutmak +## Değerleri Makul Bir Aralıkta Tutmak -Sayısal hesaplamaların daha kararlı olmasını sağlamak için, sinir ağımız içindeki tüm değerlerin genellikle [-1..1] veya [0..1] aralığında olmasını sağlamak istiyoruz. Bu çok katı bir gereklilik değildir, ancak kayan nokta hesaplamalarının doğası gereği farklı büyüklükteki değerlerin birlikte doğru bir şekilde işlenememesi gibi bir durum söz konusudur. Örneğin, 10-10 ile 1010'i toplarsak, muhtemelen 1010'i alırız çünkü daha küçük değer, daha büyük olanla aynı düzeye "dönüştürülür" ve böylece mantissa kaybolur. +Sayısal hesaplamaları daha kararlı hale getirmek için, sinir ağımızdaki tüm değerlerin genellikle [-1..1] veya [0..1] gibi makul bir ölçekte olduğundan emin olmak isteriz. Bu çok katı bir gereklilik olmasa da, kayan nokta hesaplamalarının doğası gereği farklı büyüklükteki değerler birlikte doğru bir şekilde işlenemez. Örneğin, 10-10 ve 1010'u toplarsak, büyük olasılıkla 1010 elde ederiz, çünkü küçük değer daha büyük olanla aynı büyüklüğe "dönüştürülür" ve bu nedenle mantissa kaybolur. -Çoğu aktivasyon fonksiyonu [-1..1] etrafında doğrusal olmayanlıklar taşır, bu nedenle tüm giriş verilerini [-1..1] veya [0..1] aralığına ölçeklendirmek mantıklıdır. +Çoğu aktivasyon fonksiyonu [-1..1] aralığında doğrusal olmayan özelliklere sahiptir, bu nedenle tüm giriş verilerini [-1..1] veya [0..1] aralığına ölçeklendirmek mantıklıdır. -## İlk Ağırlık Başlatma +## Başlangıç Ağırlıklarının Başlatılması -İdeal olarak, değerlerin ağ katmanlarından geçtikten sonra aynı aralıkta olmasını istiyoruz. Bu nedenle, değerlerin dağılımını koruyacak şekilde ağırlıkları başlatmak önemlidir. +İdeal olarak, ağ katmanlarından geçtikten sonra değerlerin aynı aralıkta olmasını isteriz. Bu nedenle, ağırlıkları değerlerin dağılımını koruyacak şekilde başlatmak önemlidir. -Normal dağılım **N(0,1)** iyi bir fikir değildir, çünkü *n* girişi olduğunda, çıkışın standart sapması *n* olur ve değerler [0..1] aralığının dışına çıkma olasılığı yüksektir. +**N(0,1)** normal dağılımı iyi bir fikir değildir, çünkü *n* girişimiz varsa, çıktının standart sapması *n* olur ve değerler muhtemelen [0..1] aralığından çıkar. -Aşağıdaki başlatma yöntemleri sıklıkla kullanılır: +Sıkça kullanılan başlangıç yöntemleri şunlardır: - * Üniform dağılım -- `uniform` - * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)**, sıfır ortalamaya ve standart sapması 1 olan girişler için aynı ortalama/standart sapmanın kalmasını garanti eder - * **N(0,√2/(n_in+n_out))** -- sözde **Xavier başlatması** (`glorot`), bu, hem ileri hem de geri yayılım sırasında sinyalleri aralıkta tutmaya yardımcı olur +- Uniform dağılım -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)**, sıfır ortalama ve standart sapması 1 olan girişler için aynı ortalama/standart sapmanın korunmasını garanti eder +- **N(0,√2/(n_in+n_out))** -- **Xavier başlatması** (`glorot`) olarak adlandırılır, bu yöntem sinyalleri hem ileri hem de geri yayılım sırasında aralıkta tutmaya yardımcı olur ## Batch Normalizasyonu -Doğru ağırlık başlatmasına rağmen, ağırlıklar eğitim sırasında rastgele büyük veya küçük hale gelebilir ve bu durum sinyalleri doğru aralığın dışına çıkarabilir. Sinyalleri geri getirmek için **normalizasyon** tekniklerinden birini kullanabiliriz. Birkaç tane vardır (Ağırlık normalizasyonu, Katman Normalizasyonu), ancak en sık kullanılanı Batch Normalizasyonudur. +Doğru ağırlık başlatmasıyla bile, eğitim sırasında ağırlıklar keyfi olarak büyüyebilir veya küçülebilir ve bu da sinyalleri uygun aralıktan çıkarabilir. Sinyalleri geri getirmek için **normalizasyon** tekniklerinden biri kullanılabilir. Birkaç normalizasyon yöntemi (Ağırlık normalizasyonu, Katman Normalizasyonu) olmasına rağmen, en sık kullanılanı Batch Normalizasyonudur. -**Batch normalizasyonu** fikri, minibatch içindeki tüm değerleri dikkate almak ve bu değerlere dayalı olarak normalizasyon (yani ortalamayı çıkarmak ve standart sapmaya bölmek) yapmaktır. Bu, ağırlıkların uygulanmasından sonra, ancak aktivasyon fonksiyonundan önce bu normalizasyonu yapan bir ağ katmanı olarak uygulanır. Sonuç olarak, daha yüksek nihai doğruluk ve daha hızlı eğitim görme olasılığımız vardır. +**Batch normalizasyonu** fikri, minibatch'teki tüm değerleri dikkate almak ve bu değerlere dayalı olarak normalizasyon (örneğin, ortalamayı çıkarmak ve standart sapmaya bölmek) yapmaktır. Bu, ağırlıklar uygulandıktan sonra ancak aktivasyon fonksiyonundan önce bu normalizasyonu gerçekleştiren bir ağ katmanı olarak uygulanır. Sonuç olarak, daha yüksek nihai doğruluk ve daha hızlı eğitim elde etme olasılığımız artar. -Batch normalizasyonu ile ilgili [orijinal makale](https://arxiv.org/pdf/1502.03167.pdf), [Vikipedi'deki açıklama](https://en.wikipedia.org/wiki/Batch_normalization) ve [iyi bir tanıtım blog yazısı](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (ve [Rusça](https://habrahabr.ru/post/309302/) olanı) bulunmaktadır. +İşte batch normalizasyonu hakkında [orijinal makale](https://arxiv.org/pdf/1502.03167.pdf), [Wikipedia'daki açıklama](https://en.wikipedia.org/wiki/Batch_normalization) ve [iyi bir giriş blog yazısı](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (ve [Rusça bir yazı](https://habrahabr.ru/post/309302/)). ## Dropout -**Dropout**, eğitim sırasında rastgele nöronların belirli bir yüzdesini kaldıran ilginç bir tekniktir. Aynı zamanda bir parametre (kaldırılacak nöron yüzdesi, genellikle %10-%50) ile bir katman olarak uygulanır ve eğitim sırasında, bir sonraki katmana geçmeden önce giriş vektörünün rastgele elemanlarını sıfırlar. +**Dropout**, eğitim sırasında rastgele bir yüzde nöronu kaldıran ilginç bir tekniktir. Bu, bir parametreye (genellikle %10-%50 oranında nöron kaldırma) sahip bir katman olarak uygulanır ve eğitim sırasında giriş vektörünün rastgele elemanlarını sıfırlar, ardından bir sonraki katmana iletir. -Bu garip bir fikir gibi görünse de, dropout'un MNIST rakam sınıflandırıcısını eğitme üzerindeki etkisini [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) defterinde görebilirsiniz. Bu, eğitimi hızlandırır ve daha az eğitim döngüsünde daha yüksek doğruluk elde etmemizi sağlar. +Bu garip bir fikir gibi görünse de, dropout'un MNIST rakam sınıflandırıcısını eğitme üzerindeki etkisini [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) defterinde görebilirsiniz. Eğitim sürecini hızlandırır ve daha az eğitim dönemiyle daha yüksek doğruluk elde etmemizi sağlar. Bu etki birkaç şekilde açıklanabilir: - * Model için rastgele bir şok faktörü olarak düşünülebilir, bu da optimizasyonu yerel minimumdan çıkarır - * *İçsel model ortalaması* olarak düşünülebilir, çünkü dropout sırasında biraz farklı bir modeli eğittiğimizi söyleyebiliriz +- Model için rastgele bir şok etkisi olarak düşünülebilir, bu da optimizasyonu yerel minimumdan çıkarır +- *Dolaylı model ortalaması* olarak düşünülebilir, çünkü dropout sırasında biraz farklı bir model eğitiyoruz diyebiliriz -> *Bazı insanlar, sarhoş bir kişinin bir şey öğrenmeye çalıştığında, bunun sabah daha iyi hatırlanacağını, bunun da bir sarhoş kişinin bazı işlev bozukluğu olan nöronları ile anlamı kavramaya daha iyi uyum sağlamaya çalışmasından kaynaklandığını söyler. Bunun doğru olup olmadığını kendimiz hiç test etmedik.* +> *Bazı insanlar, sarhoş bir kişinin bir şey öğrenmeye çalıştığında, ertesi sabah ayık bir kişiye kıyasla bunu daha iyi hatırlayacağını söyler, çünkü bazı işlevsiz nöronlara sahip bir beyin, anlamı daha iyi kavramak için daha iyi adapte olmaya çalışır. Bunun doğru olup olmadığını kendimiz hiç test etmedik.* -## Aşırı Uydurmayı Önleme +## Aşırı Öğrenmeyi Önleme -Derin öğrenmenin çok önemli bir yönü, [aşırı uydurmayı](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) önleyebilme yeteneğidir. Çok güçlü bir sinir ağı modeli kullanmak cazip olabilir, ancak her zaman model parametrelerinin sayısını eğitim örneklerinin sayısıyla dengelemeliyiz. +Derin öğrenmenin çok önemli bir yönü, [aşırı öğrenmeyi](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) önleyebilmektir. Çok güçlü bir sinir ağı modeli kullanmak cazip gelse de, model parametrelerinin sayısını eğitim örneklerinin sayısıyla dengelemeliyiz. -> Daha önce tanıttığımız [aşırı uydurma](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) kavramını anladığınızdan emin olun! +> Daha önce tanıttığımız [aşırı öğrenme](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) kavramını anladığınızdan emin olun! -Aşırı uydurmayı önlemek için birkaç yol vardır: +Aşırı öğrenmeyi önlemenin birkaç yolu vardır: - * Erken durdurma -- doğrulama setindeki hatayı sürekli izleyerek, doğrulama hatası artmaya başladığında eğitimi durdurma. - * Açık Ağırlık Çürütme / Düzenleme -- yüksek mutlak ağırlık değerleri için kayıp fonksiyonuna ekstra bir ceza ekleyerek, modelin çok dengesiz sonuçlar almasını önler - * Model Ortalaması -- birkaç modeli eğitip ardından sonucu ortalamak. Bu, varyansı minimize etmeye yardımcı olur. - * Dropout (İçsel Model Ortalaması) +- Erken durdurma -- doğrulama setindeki hatayı sürekli izlemek ve doğrulama hatası artmaya başladığında eğitimi durdurmak +- Açık Ağırlık Azalması / Düzenleme -- ağırlıkların yüksek mutlak değerleri için kayıp fonksiyonuna ekstra bir ceza eklemek, bu da modelin çok kararsız sonuçlar üretmesini önler +- Model Ortalaması -- birkaç model eğitmek ve ardından sonucu ortalamak. Bu, varyansı minimize etmeye yardımcı olur. +- Dropout (Dolaylı Model Ortalaması) -## Optimizatörler / Eğitim Algoritmaları +## Optimizasyon Yöntemleri / Eğitim Algoritmaları -Eğitimin bir diğer önemli yönü, iyi bir eğitim algoritması seçmektir. Klasik **gradyan inişi** makul bir seçimdir, ancak bazen çok yavaş olabilir veya başka sorunlara yol açabilir. +Eğitimdeki bir diğer önemli yön, iyi bir eğitim algoritması seçmektir. Klasik **gradyan inişi** makul bir seçim olsa da, bazen çok yavaş olabilir veya başka sorunlara yol açabilir. -Derin öğrenmede, **Stokastik Gradyan İnişi** (SGD) kullanıyoruz; bu, eğitim setinden rastgele seçilen minibatch'lere uygulanan bir gradyan inişidir. Ağırlıklar bu formül ile ayarlanır: +Derin öğrenmede, eğitim setinden rastgele seçilen minibatch'lere uygulanan bir gradyan inişi olan **Stokastik Gradyan İnişi** (SGD) kullanırız. Ağırlıklar şu formülle ayarlanır: wt+1 = wt - η∇ℒ ### Momentum -**Momentum SGD**'de, önceki adımlardan bir gradyan kısmını saklıyoruz. Bu, bir yere ataletle hareket ederken farklı bir yönde bir darbe aldığımızda, yolculuğumuzun hemen değişmediği, ancak orijinal hareketin bir kısmını koruduğu durumla benzerdir. Burada *hız*ı temsil etmek için başka bir vektör v tanıtıyoruz: +**Momentumlu SGD**'de, önceki adımlardan bir gradyan kısmını tutarız. Bu, bir yere ataletle hareket ederken farklı bir yönde bir darbe aldığımızda, yörüngemizin hemen değişmemesine, ancak orijinal hareketin bir kısmını korumasına benzer. Burada *hız*ı temsil eden başka bir vektör v tanıtırız: -* vt+1 = γ vt - η∇ℒ -* wt+1 = wt+vt+1 +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt+vt+1 -Burada γ parametresi, ataletin ne kadar dikkate alındığını gösterir: γ=0, klasik SGD'ye karşılık gelir; γ=1, saf hareket denklemi anlamına gelir. +Burada γ parametresi, ataletin ne ölçüde dikkate alındığını gösterir: γ=0 klasik SGD'ye karşılık gelir; γ=1 saf bir hareket denklemidir. ### Adam, Adagrad, vb. -Her katmanda sinyalleri bazı matrislerle çarptığımız için Wi, ||Wi||'ya bağlı olarak, gradyan ya azalabilir ve 0'a yakın olabilir ya da sonsuz bir şekilde yükselebilir. Bu, Patlayan/Kaybolan Gradyanlar sorununu oluşturmaktadır. +Her katmanda sinyalleri bir Wi matrisiyle çarptığımız için, ||Wi||'ye bağlı olarak gradyan ya küçülüp 0'a yaklaşabilir ya da sonsuza kadar artabilir. Bu, Patlayan/Kaybolan Gradyanlar probleminin özüdür. -Bu sorunun çözümlerinden biri, denklemin içinde yalnızca gradyanın yönünü kullanmak ve mutlak değeri görmezden gelmektir, yani +Bu sorunun çözümlerinden biri, denklemde yalnızca gradyanın yönünü kullanmak ve mutlak değeri göz ardı etmektir, yani: wt+1 = wt - η(∇ℒ/||∇ℒ||), burada ||∇ℒ|| = √∑(∇ℒ)2 Bu algoritmaya **Adagrad** denir. Aynı fikri kullanan diğer algoritmalar: **RMSProp**, **Adam** -> **Adam**, birçok uygulama için çok etkili bir algoritma olarak kabul edilir, bu nedenle hangi algoritmayı kullanacağınızdan emin değilseniz - Adam'ı kullanın. +> **Adam**, birçok uygulama için çok verimli bir algoritma olarak kabul edilir, bu yüzden hangi algoritmayı kullanacağınızdan emin değilseniz - Adam'ı kullanın. -### Gradyan kesme +### Gradyan Kırpma -Gradyan kesme, yukarıdaki fikrin bir uzantısıdır. ||∇ℒ|| ≤ θ olduğunda, ağırlık optimizasyonunda orijinal gradyanı dikkate alıyoruz ve ||∇ℒ|| > θ olduğunda - gradyanı normu ile bölüyoruz. Burada θ bir parametredir; çoğu durumda θ=1 veya θ=10 alabiliriz. +Gradyan kırpma, yukarıdaki fikrin bir uzantısıdır. ||∇ℒ|| ≤ θ olduğunda, ağırlık optimizasyonunda orijinal gradyanı dikkate alırız ve ||∇ℒ|| > θ olduğunda, gradyanı normuna böleriz. Burada θ bir parametredir, çoğu durumda θ=1 veya θ=10 alabiliriz. -### Öğrenme oranı azaltma +### Öğrenme Oranı Azaltma -Eğitim başarısı genellikle öğrenme oranı parametresi η'ye bağlıdır. Daha büyük η değerlerinin daha hızlı bir eğitim sağladığını varsaymak mantıklıdır; bu, genellikle eğitim sürecinin başında istediğimiz bir şeydir ve ardından daha küçük η değerleri, ağın ince ayarını yapmamıza olanak tanır. Bu nedenle, çoğu durumda η'yi eğitim sürecinde azaltmak isteriz. +Eğitim başarısı genellikle öğrenme oranı parametresi η'ya bağlıdır. Daha büyük η değerlerinin daha hızlı eğitimle sonuçlanacağını varsaymak mantıklıdır, bu genellikle eğitimin başında istediğimiz bir şeydir ve ardından daha küçük η değerleri ağı ince ayar yapmamıza olanak tanır. Bu nedenle, çoğu durumda eğitim sürecinde η'yı azaltmak isteriz. -Bu, her eğitim döngüsünden sonra η'yi bazı sayılarla (örneğin 0.98) çarparak veya daha karmaşık bir **öğrenme oranı takvimi** kullanarak yapılabilir. +Bu, her eğitim döneminden sonra η'yı bir sayı (ör. 0.98) ile çarparak veya daha karmaşık bir **öğrenme oranı planı** kullanarak yapılabilir. ## Farklı Ağ Mimarileri -Probleminiz için doğru ağ mimarisini seçmek zor olabilir. Normalde, belirli görevimiz (veya benzer bir görev) için işe yaradığını kanıtlamış bir mimari seçeriz. İşte bilgisayarla görme için sinir ağı mimarileri hakkında [iyi bir genel bakış](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) bulunmaktadır. +Sorununuz için doğru ağ mimarisini seçmek zor olabilir. Normalde, belirli görevimiz (veya benzeri bir görev) için işe yaradığı kanıtlanmış bir mimariyi alırız. İşte bilgisayarla görme için sinir ağı mimarilerinin [iyi bir özeti](https://www.topbots.com/a-brief-history-of-neural-network-architectures/). -> Eğitim örneklerimizin sayısı için yeterince güçlü bir mimari seçmek önemlidir. Çok güçlü bir model seçmek [aşırı uydurma](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ile sonuçlanabilir. +> Sahip olduğumuz eğitim örneklerinin sayısı için yeterince güçlü bir mimari seçmek önemlidir. Çok güçlü bir model seçmek [aşırı öğrenme](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ile sonuçlanabilir. -Bir diğer iyi yol, gerekli karmaşıklığa otomatik olarak uyum sağlayacak bir mimari kullanmaktır. Belirli bir ölçüde, **ResNet** mimarisi ve **Inception** kendiliğinden ayarlanan mimarilerdir. [Bilgisayarla görme mimarileri hakkında daha fazla bilgi](../07-ConvNets/CNN_Architectures.md) bulunmaktadır. +Başka bir iyi yöntem, gerekli karmaşıklığa otomatik olarak uyum sağlayacak bir mimari kullanmaktır. Belirli bir ölçüde, **ResNet** mimarisi ve **Inception** kendini ayarlayabilir. [Bilgisayarla görme mimarileri hakkında daha fazla bilgi](../07-ConvNets/CNN_Architectures.md). -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda oluşabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index a03dfaef..b2708121 100644 --- a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,16 +1,25 @@ + # Oxford Evcil Hayvanlarının Transfer Öğrenimi ile Sınıflandırılması -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için Laboratuvar Görevi. +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) kapsamında bir laboratuvar görevi. ## Görev -Bir evcil hayvan kreşi için tüm evcil hayvanları kataloglamak üzere bir uygulama geliştirmeniz gerektiğini hayal edin. Böyle bir uygulamanın harika özelliklerinden biri, bir fotoğraftan otomatik olarak cinsi keşfetmektir. Bu görevde, [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setinden gerçek hayattaki evcil hayvan görüntülerini sınıflandırmak için transfer öğrenimini kullanacağız. +Bir evcil hayvan yuvası için tüm hayvanları kataloglayacak bir uygulama geliştirmeniz gerektiğini hayal edin. Böyle bir uygulamanın harika özelliklerinden biri, bir fotoğraftan otomatik olarak türü tanımlayabilmesi olurdu. Bu görevde, [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setinden gerçek hayvan görüntülerini sınıflandırmak için transfer öğrenimini kullanacağız. ## Veri Seti -35 farklı köpek ve kedi cinsini içeren orijinal [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setini kullanacağız. +Orijinal [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setini kullanacağız. Bu veri seti, 35 farklı köpek ve kedi türünü içermektedir. -Veri setini indirmek için bu kod parçasını kullanın: +Veri setini indirmek için şu kod parçasını kullanabilirsiniz: ```python !wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz @@ -18,13 +27,13 @@ Veri setini indirmek için bu kod parçasını kullanın: !rm images.tar.gz ``` -## Not Defterini Başlatma +## Not Defteri Başlatma Laboratuvara [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) dosyasını açarak başlayın. -## Önemli Nokta +## Çıkarım -Transfer öğrenimi ve önceden eğitilmiş ağlar, gerçek dünya görüntü sınıflandırma problemlerini nispeten kolay bir şekilde çözmemizi sağlar. Ancak, önceden eğitilmiş ağlar benzer türdeki görüntüler üzerinde iyi çalışır ve çok farklı görüntüleri (örneğin, tıbbi görüntüler) sınıflandırmaya başlarsak, muhtemelen çok daha kötü sonuçlar alırız. +Transfer öğrenimi ve önceden eğitilmiş ağlar, gerçek dünya görüntü sınıflandırma problemlerini nispeten kolay bir şekilde çözmemizi sağlar. Ancak, önceden eğitilmiş ağlar benzer türdeki görüntülerde iyi çalışır ve çok farklı görüntüleri (örneğin, tıbbi görüntüler) sınıflandırmaya başladığımızda muhtemelen çok daha kötü sonuçlar alırız. -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md index b45c6acb..9e4f36f3 100644 --- a/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,100 +1,109 @@ -# Otomatik Kodlayıcılar + +# Otomatik Kodlayıcılar (Autoencoders) -CNN'leri eğitirken, karşılaştığımız sorunlardan biri çok fazla etiketli veriye ihtiyaç duymamızdır. Görüntü sınıflandırması durumunda, görüntüleri farklı sınıflara ayırmamız gerekir ki bu da manuel bir çabadır. +CNN'leri (Convolutional Neural Networks) eğitirken karşılaşılan sorunlardan biri, çok fazla etiketlenmiş veriye ihtiyaç duymamızdır. Görüntü sınıflandırma durumunda, görüntüleri farklı sınıflara ayırmamız gerekir ve bu manuel bir çabadır. -## [Ön ders sınavı](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) +## [Ders Öncesi Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -Ancak, CNN özellik çıkarıcılarını eğitmek için ham (etiketsiz) verileri kullanmak isteyebiliriz ki buna **kendinden denetimli öğrenme** denir. Etiketler yerine, eğitim görüntülerini hem ağ girişi hem de çıkışı olarak kullanacağız. **Otomatik kodlayıcı**nın ana fikri, girdi görüntüsünü bazı **gizli alanlara** (genellikle daha küçük boyutlu bir vektör) dönüştüren bir **kodlayıcı ağı**na sahip olmamızdır; ardından orijinal görüntüyü yeniden oluşturmayı amaçlayan **çözücü ağı** gelir. +Ancak, CNN özellik çıkarıcılarını eğitmek için ham (etiketlenmemiş) verileri kullanmak isteyebiliriz; bu, **kendinden denetimli öğrenme** (self-supervised learning) olarak adlandırılır. Etiketler yerine, eğitim görüntülerini hem ağ girişi hem de çıkışı olarak kullanacağız. **Otomatik kodlayıcı** (autoencoder) fikrinin temelinde, bir **kodlayıcı ağ** (encoder network) ile giriş görüntüsünü bir **gizli uzaya** (latent space) dönüştürmek (genellikle daha küçük boyutlu bir vektördür) ve ardından **kod çözücü ağ** (decoder network) ile orijinal görüntüyü yeniden oluşturmak yer alır. -> ✅ Bir [otomatik kodlayıcı](https://wikipedia.org/wiki/Autoencoder), "etiketsiz verilerin verimli kodlamalarını öğrenmek için kullanılan bir tür yapay sinir ağıdır." +> ✅ Bir [otomatik kodlayıcı](https://wikipedia.org/wiki/Autoencoder), "etiketlenmemiş verilerin verimli kodlamalarını öğrenmek için kullanılan bir yapay sinir ağı türüdür." -Otomatik kodlayıcıyı, orijinal görüntüden mümkün olduğunca fazla bilgiyi yakalamak için eğittiğimiz için, ağ girdi görüntülerinin anlamını yakalamak için en iyi **gömülü alanı** bulmaya çalışır. +Otomatik kodlayıcıyı, orijinal görüntüden mümkün olduğunca fazla bilgi yakalamak ve doğru bir şekilde yeniden oluşturmak için eğittiğimizden, ağ, giriş görüntülerinin anlamını yakalamak için en iyi **gömülü temsili** (embedding) bulmaya çalışır. -![Otomatik Kodlayıcı Diyagramı](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.tr.jpg) +![AutoEncoder Şeması](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.tr.jpg) -> Görsel [Keras blogu](https://blog.keras.io/building-autoencoders-in-keras.html) kaynağındandır. +> Görsel: [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) ## Otomatik Kodlayıcıların Kullanım Senaryoları -Orijinal görüntüleri yeniden oluşturmanın kendi başına faydalı görünmemesi bir yana, otomatik kodlayıcıların özellikle yararlı olduğu birkaç senaryo vardır: +Orijinal görüntüleri yeniden oluşturmak kendi başına çok faydalı görünmese de, otomatik kodlayıcıların özellikle faydalı olduğu birkaç senaryo vardır: -* **Görüntülerin boyutunu düşürmek için görselleştirme** veya **görüntü gömülü alanları eğitimi**. Genellikle otomatik kodlayıcılar, PCA'dan daha iyi sonuçlar verir çünkü görüntülerin mekansal doğasını ve hiyerarşik özelliklerini dikkate alır. -* **Gürültü azaltma**, yani görüntüden gürültüyü kaldırma. Çünkü gürültü birçok gereksiz bilgi taşır, otomatik kodlayıcı bunu nispeten küçük gizli alana sığdıramaz ve dolayısıyla yalnızca görüntünün önemli kısmını yakalar. Gürültü gidericileri eğitirken, orijinal görüntülerle başlarız ve otomatik kodlayıcı için girdi olarak yapay olarak eklenmiş gürültü içeren görüntüleri kullanırız. -* **Süper çözünürlük**, görüntü çözünürlüğünü artırma. Yüksek çözünürlüklü görüntülerle başlarız ve daha düşük çözünürlüklü görüntüyü otomatik kodlayıcı girişi olarak kullanırız. -* **Üretken modeller**. Otomatik kodlayıcıyı eğittikten sonra, çözücü kısmı rastgele gizli vektörlerden yeni nesneler oluşturmak için kullanılabilir. +* **Görüntülerin boyutunu düşürmek** veya **görüntü gömülü temsilleri eğitmek**. Otomatik kodlayıcılar genellikle PCA'dan daha iyi sonuçlar verir, çünkü görüntülerin mekansal doğasını ve hiyerarşik özelliklerini dikkate alır. +* **Gürültü giderme**, yani görüntüden gürültüyü kaldırma. Gürültü genellikle çok fazla gereksiz bilgi taşır, bu nedenle otomatik kodlayıcı, nispeten küçük bir gizli uzaya tüm bu bilgiyi sığdıramaz ve yalnızca görüntünün önemli kısmını yakalar. Gürültü gidericileri eğitirken, orijinal görüntülerle başlarız ve otomatik kodlayıcıya giriş olarak yapay olarak eklenmiş gürültü içeren görüntüleri kullanırız. +* **Süper çözünürlük**, görüntü çözünürlüğünü artırma. Yüksek çözünürlüklü görüntülerle başlarız ve otomatik kodlayıcıya giriş olarak daha düşük çözünürlüklü görüntüyü kullanırız. +* **Üretici modeller**. Otomatik kodlayıcıyı eğittikten sonra, kod çözücü kısmı rastgele gizli vektörlerden başlayarak yeni nesneler oluşturmak için kullanılabilir. ## Varyasyonel Otomatik Kodlayıcılar (VAE) -Geleneksel otomatik kodlayıcılar, girdi verilerinin boyutunu bir şekilde azaltarak, girdi görüntülerinin önemli özelliklerini belirler. Ancak, gizli vektörler genellikle pek anlam ifade etmez. Başka bir deyişle, MNIST veri setini örnek alırsak, farklı gizli vektörlerin hangi rakamlara karşılık geldiğini bulmak kolay bir iş değildir, çünkü yakın gizli vektörler aynı rakamlara karşılık gelmeyebilir. +Geleneksel otomatik kodlayıcılar, giriş verilerinin boyutunu bir şekilde azaltır ve giriş görüntülerinin önemli özelliklerini belirler. Ancak, gizli vektörler genellikle çok anlamlı değildir. Örneğin, MNIST veri setini ele alırsak, farklı gizli vektörlerin hangi rakamlara karşılık geldiğini anlamak kolay değildir, çünkü yakın gizli vektörler mutlaka aynı rakamlara karşılık gelmez. -Diğer yandan, *üretken* modelleri eğitmek için gizli alanı anlamak daha iyidir. Bu fikir bizi **varyasyonel otomatik kodlayıcı** (VAE) kavramına götürür. +Öte yandan, *üretici* modelleri eğitmek için gizli uzayı anlamak daha iyidir. Bu fikir bizi **varyasyonel otomatik kodlayıcı**ya (VAE) götürür. -VAE, gizli parametrelerin *istatistiksel dağılımını* tahmin etmeyi öğrenen bir otomatik kodlayıcıdır, buna **gizli dağılım** denir. Örneğin, gizli vektörlerin belirli bir ortalama zmean ve standart sapma zsigma ile normal dağılıma sahip olmasını isteyebiliriz (hem ortalama hem de standart sapma belirli bir boyut d'ye sahip vektörlerdir). VAE'deki kodlayıcı bu parametreleri tahmin etmeyi öğrenir ve ardından çözücü, nesneyi yeniden oluşturmak için bu dağılımdan rastgele bir vektör alır. +VAE, gizli parametrelerin *istatistiksel dağılımını* (latent distribution) tahmin etmeyi öğrenen bir otomatik kodlayıcıdır. Örneğin, gizli vektörlerin belirli bir ortalama zmean ve standart sapma zsigma (her ikisi de belirli bir boyut d'ye sahip vektörlerdir) ile normal olarak dağıtılmasını isteyebiliriz. VAE'deki kodlayıcı bu parametreleri tahmin etmeyi öğrenir ve ardından kod çözücü, bu dağılımdan rastgele bir vektör alarak nesneyi yeniden oluşturur. -Özetlemek gerekirse: +Özetle: -* Girdi vektöründen `z_mean` ve `z_log_sigma` tahmin ediyoruz (standart sapmayı tahmin etmek yerine, onun logaritmasını tahmin ediyoruz) -* Dağılımdan N(zmean,exp(zlog_sigma)) dağılımından bir vektör `sample` örnekliyoruz -* Çözücü, `sample`'yi girdi vektörü olarak kullanarak orijinal görüntüyü çözmeye çalışır +* Giriş vektöründen, `z_mean` ve `z_log_sigma` tahmin edilir (standart sapmanın kendisini tahmin etmek yerine, logaritması tahmin edilir). +* `sample` adlı bir vektör, N(zmean,exp(zlog_sigma)) dağılımından örneklenir. +* Kod çözücü, `sample` vektörünü giriş olarak kullanarak orijinal görüntüyü yeniden oluşturmaya çalışır. - + -> Görsel [bu blog yazısından](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) Isaak Dykeman'a aittir. +> Görsel: [Bu blog yazısı](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) - Isaak Dykeman Varyasyonel otomatik kodlayıcılar, iki bölümden oluşan karmaşık bir kayıp fonksiyonu kullanır: -* **Yeniden yapılandırma kaybı**, yeniden oluşturulan bir görüntünün hedefe ne kadar yakın olduğunu gösteren kayıp fonksiyonudur (Bu, Ortalama Kare Hatası veya MSE olabilir). Bu, normal otomatik kodlayıcılardaki kayıp fonksiyonu ile aynıdır. +* **Yeniden yapılandırma kaybı** (Reconstruction loss), yeniden oluşturulan görüntünün hedefe ne kadar yakın olduğunu gösteren kayıp fonksiyonudur (örneğin, Ortalama Kare Hatası - MSE). Bu, normal otomatik kodlayıcılardaki kayıp fonksiyonuyla aynıdır. * **KL kaybı**, gizli değişken dağılımlarının normal dağılıma yakın kalmasını sağlar. Bu, iki istatistiksel dağılımın ne kadar benzer olduğunu tahmin etmek için kullanılan [Kullback-Leibler sapması](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) kavramına dayanır. -VAE'lerin önemli bir avantajı, yeni görüntüler oluşturmayı nispeten kolaylaştırmalarıdır çünkü gizli vektörleri örneklemek için hangi dağılımdan yararlanacağımızı biliyoruz. Örneğin, MNIST üzerinde 2D gizli vektörle VAE eğitimi yaptığımızda, farklı rakamlar elde etmek için gizli vektörün bileşenlerini değiştirebiliriz: +VAEs'in önemli bir avantajı, yeni görüntüleri nispeten kolay bir şekilde oluşturabilmemize olanak tanımasıdır, çünkü hangi dağılımdan gizli vektörlerin örneklenmesi gerektiğini biliriz. Örneğin, MNIST üzerinde 2D gizli vektörle bir VAE eğitirsek, gizli vektörün bileşenlerini değiştirerek farklı rakamlar elde edebiliriz: vaemnist -> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından sağlanmıştır. +> Görsel: [Dmitry Soshnikov](http://soshnikov.com) -Gizli parametre alanının farklı kısımlarından gizli vektörler almaya başladığımızda, görüntülerin birbirine nasıl karıştığını gözlemleyin. Bu alanı 2D olarak da görselleştirebiliriz: +Gizli parametre uzayının farklı bölümlerinden gizli vektörler almaya başladıkça, görüntülerin birbirine nasıl karıştığını gözlemleyin. Bu uzayı ayrıca 2D olarak görselleştirebiliriz: vaemnist cluster -> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından sağlanmıştır. +> Görsel: [Dmitry Soshnikov](http://soshnikov.com) -## ✍️ Alıştırmalar: Otomatik Kodlayıcılar +## ✍️ Egzersizler: Otomatik Kodlayıcılar -Otomatik kodlayıcılar hakkında daha fazla bilgi edinmek için ilgili not defterlerini inceleyin: +Otomatik kodlayıcılar hakkında daha fazla bilgi edinmek için şu not defterlerini inceleyin: * [TensorFlow'da Otomatik Kodlayıcılar](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) * [PyTorch'ta Otomatik Kodlayıcılar](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) ## Otomatik Kodlayıcıların Özellikleri -* **Veri Spesifik** - yalnızca eğitildikleri görüntü türleriyle iyi çalışırlar. Örneğin, çiçekler üzerinde süper çözünürlük ağı eğitirsek, portreler üzerinde iyi çalışmaz. Bunun nedeni, ağın eğitim veri setinden öğrenilen özelliklerden ince detaylar alarak daha yüksek çözünürlüklü görüntü üretebilmesidir. -* **Kaybı** - yeniden oluşturulan görüntü, orijinal görüntüyle aynı değildir. Kayıp doğası, eğitim sırasında kullanılan *kayıp fonksiyonu* tarafından tanımlanır. -* **Etiketsiz veriler** üzerinde çalışır. +* **Veriye Özgü** - yalnızca eğitildikleri görüntü türleriyle iyi çalışırlar. Örneğin, bir süper çözünürlük ağı çiçekler üzerinde eğitilirse, portrelerde iyi çalışmaz. Bunun nedeni, ağın daha yüksek çözünürlüklü bir görüntü üretebilmek için eğitim veri setinden öğrendiği ince detayları kullanmasıdır. +* **Kayıplı** - yeniden oluşturulan görüntü, orijinal görüntüyle aynı değildir. Kayıp türü, eğitim sırasında kullanılan *kayıp fonksiyonu* ile tanımlanır. +* **Etiketlenmemiş veri** üzerinde çalışır. -## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) +## [Ders Sonrası Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) ## Sonuç -Bu derste, AI bilimcisine sunulan çeşitli otomatik kodlayıcı türlerini öğrendiniz. Onları nasıl inşa edeceğinizi ve görüntüleri nasıl yeniden oluşturmak için kullanacağınızı öğrendiniz. Ayrıca VAE'yi ve yeni görüntüler oluşturmak için nasıl kullanacağınızı öğrendiniz. +Bu derste, bir AI bilim insanının kullanabileceği çeşitli otomatik kodlayıcı türlerini öğrendiniz. Bunları nasıl inşa edeceğinizi ve görüntüleri yeniden oluşturmak için nasıl kullanacağınızı öğrendiniz. Ayrıca VAE'yi ve yeni görüntüler oluşturmak için nasıl kullanılacağını öğrendiniz. ## 🚀 Meydan Okuma -Bu derste, otomatik kodlayıcıların görüntüler için nasıl kullanıldığını öğrendiniz. Ancak müzik için de kullanılabilirler! Otomatik kodlayıcıları müziği yeniden yapılandırmayı öğrenmek için kullanan Magenta projesinin [MusicVAE](https://magenta.tensorflow.org/music-vae) projesine göz atın. Ne yaratabileceğinizi görmek için bu kütüphane ile bazı [deneyler](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) yapın. +Bu derste, görüntüler için otomatik kodlayıcıların kullanımını öğrendiniz. Ancak, bunlar müzik için de kullanılabilir! Magenta projesinin [MusicVAE](https://magenta.tensorflow.org/music-vae) projesine göz atın; bu proje, müziği yeniden oluşturmayı öğrenmek için otomatik kodlayıcıları kullanır. Bu kütüphane ile bazı [deneyler](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) yaparak neler yaratabileceğinizi görün. -## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Ders Sonrası Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Gözden Geçirme & Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Otomatik kodlayıcılar hakkında daha fazla bilgi için bu kaynakları okuyun: +Referans için, otomatik kodlayıcılar hakkında daha fazla bilgi edinmek için şu kaynakları okuyun: -* [Keras'da Otomatik Kodlayıcılar İnşası](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Keras'ta Otomatik Kodlayıcılar İnşa Etmek](https://blog.keras.io/building-autoencoders-in-keras.html) * [NeuroHive'daki Blog Yazısı](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) * [Varyasyonel Otomatik Kodlayıcılar Açıklaması](https://kvfrans.com/variational-autoencoders-explained/) * [Koşullu Varyasyonel Otomatik Kodlayıcılar](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) -## Görev +## Ödev -[TensorFlow kullanan bu not defterinin](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersTF.ipynb) sonunda bir 'görev' bulacaksınız - bunu ödev olarak kullanın. +[TensorFlow kullanarak bu not defterinin](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) sonunda bir 'görev' bulacaksınız - bunu ödeviniz olarak kullanın. -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/10-GANs/README.md b/translations/tr/lessons/4-ComputerVision/10-GANs/README.md index 7c616b2b..b3d84d2d 100644 --- a/translations/tr/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/tr/lessons/4-ComputerVision/10-GANs/README.md @@ -1,101 +1,110 @@ -# Üretken Çatışmalı Ağlar + +# Üretici Çekişmeli Ağlar (Generative Adversarial Networks) -Önceki bölümde **üretken modeller** hakkında bilgi edindik: eğitim veri setindeki görüntülere benzer yeni görüntüler üretebilen modeller. VAE, bir üretken modelin iyi bir örneğiydi. +Önceki bölümde, **üretici modeller** hakkında bilgi edindik: eğitim veri kümesindeki görüntülere benzer yeni görüntüler üretebilen modeller. VAE, üretici bir modele iyi bir örnekti. -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -Ancak, VAE ile gerçekten anlamlı bir şey, örneğin makul bir çözünürlükte bir resim üretmeye çalıştığımızda, eğitimin iyi bir şekilde yakınsadığını göremeyiz. Bu kullanım durumu için, üretken modellere özel olarak hedeflenmiş başka bir mimari hakkında bilgi edinmemiz gerekir - **Üretken Çatışmalı Ağlar**, veya kısaca GAN'lar. +Ancak, VAE ile makul bir çözünürlükte anlamlı bir şey, örneğin bir tablo, üretmeye çalışırsak, eğitimin iyi bir şekilde yakınsama sağlamadığını göreceğiz. Bu kullanım durumu için, özellikle üretici modellere yönelik başka bir mimariyi öğrenmeliyiz - **Üretici Çekişmeli Ağlar** veya GAN'ler. -GAN'ın ana fikri, birbirine karşı eğitilecek iki sinir ağına sahip olmaktır: +GAN'in temel fikri, birbirine karşı eğitilecek iki sinir ağına sahip olmaktır: -> Resim [Dmitry Soshnikov](http://soshnikov.com) tarafından +> Görsel: [Dmitry Soshnikov](http://soshnikov.com) > ✅ Küçük bir kelime bilgisi: -> * **Üretici** (Generator), rastgele bir vektör alıp, sonuç olarak bir görüntü üreten bir ağdır. -> * **Ayrıştırıcı** (Discriminator), bir görüntü alır ve bunun gerçek bir görüntü olup olmadığını (eğitim veri setinden) ya da bir üretici tarafından üretilip üretilmediğini belirtmelidir. Temelde bir görüntü sınıflayıcısıdır. +> * **Üretici (Generator)**, rastgele bir vektör alıp sonuç olarak bir görüntü üreten bir ağdır. +> * **Ayrımcı (Discriminator)**, bir görüntü alır ve bunun gerçek bir görüntü mü (eğitim veri kümesinden) yoksa bir üretici tarafından mı üretildiğini belirlemelidir. Esasen bir görüntü sınıflandırıcısıdır. -### Ayrıştırıcı +### Ayrımcı (Discriminator) -Ayrıştırıcının mimarisi, sıradan bir görüntü sınıflama ağından farklı değildir. En basit durumda, tamamen bağlı bir sınıflayıcı olabilir, ancak büyük ihtimalle bir [konvolüsyonel ağ](../07-ConvNets/README.md) olacaktır. +Ayrımcının mimarisi, sıradan bir görüntü sınıflandırma ağından farklı değildir. En basit durumda, tamamen bağlı bir sınıflandırıcı olabilir, ancak büyük olasılıkla bir [konvolüsyonel ağ](../07-ConvNets/README.md) olacaktır. -> ✅ Konvolüsyonel ağlara dayanan bir GAN'a [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) denir. +> ✅ Konvolüsyonel ağlara dayalı bir GAN, [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) olarak adlandırılır. -Bir CNN ayrıştırıcısı, aşağıdaki katmanlardan oluşur: birkaç konvolüsyon+havuzlama (azalan mekansal boyutlarla) ve "özellik vektörü" elde etmek için bir veya daha fazla tamamen bağlı katman, son ikili sınıflayıcı. +Bir CNN ayrımcısı şu katmanlardan oluşur: birkaç konvolüsyon + havuzlama (azalan uzamsal boyutlarla) ve bir veya daha fazla tamamen bağlı katman, "özellik vektörü" elde etmek için, ardından ikili bir sınıflandırıcı. -> ✅ Bu bağlamda 'havuzlama', görüntünün boyutunu azaltan bir tekniktir. "Havuzlama katmanları, bir katmandaki nöron kümelerinin çıktısını bir sonraki katmandaki tek bir nörona birleştirerek verinin boyutunu azaltır." - [kaynak](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ 'Havuzlama' (pooling) bu bağlamda, görüntünün boyutunu küçültme tekniğidir. "Havuzlama katmanları, bir katmandaki nöron kümelerinin çıktısını bir sonraki katmandaki tek bir nöronda birleştirerek verilerin boyutlarını azaltır." - [kaynak](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) -### Üretici +### Üretici (Generator) -Üretici biraz daha karmaşıktır. Bunu tersine çevrilmiş bir ayrıştırıcı olarak düşünebilirsiniz. Gizli bir vektörden (özellik vektörünün yerinde) başlar, gerekli boyut/şekle dönüştürmek için bir tamamen bağlı katmana sahiptir ve ardından dekonvolüsyonlar+ölçekleme yapılır. Bu, [oto kodlayıcı](../09-Autoencoders/README.md) kısmının *çözücü* bölümüne benzerdir. +Üretici biraz daha karmaşıktır. Bunu tersine çevrilmiş bir ayrımcı olarak düşünebilirsiniz. Bir özellik vektörü yerine bir gizli vektörden başlayarak, gerekli boyut/şekle dönüştürmek için tamamen bağlı bir katmana sahiptir, ardından dekonvolüsyonlar + ölçek büyütme gelir. Bu, [otoenkoderin](../09-Autoencoders/README.md) *kod çözücü* kısmına benzer. -> ✅ Konvolüsyon katmanı görüntüyü tarayan bir lineer filtre olarak uygulandığı için, dekonvolüsyon temelde konvolüsyona benzer ve aynı katman mantığı kullanılarak uygulanabilir. +> ✅ Konvolüsyon katmanı, görüntü üzerinde bir doğrusal filtre olarak uygulandığından, dekonvolüsyon esasen konvolüsyona benzerdir ve aynı katman mantığı kullanılarak uygulanabilir. -> Resim [Dmitry Soshnikov](http://soshnikov.com) tarafından +> Görsel: [Dmitry Soshnikov](http://soshnikov.com) -### GAN'ı Eğitmek +### GAN'in Eğitimi -GAN'lar **çatışmalı** olarak adlandırılır çünkü üretici ile ayrıştırıcı arasında sürekli bir rekabet vardır. Bu rekabet sırasında, hem üretici hem de ayrıştırıcı gelişir, böylece ağ daha iyi ve daha iyi resimler üretmeyi öğrenir. +GAN'ler **çekişmeli** olarak adlandırılır çünkü üretici ve ayrımcı arasında sürekli bir rekabet vardır. Bu rekabet sırasında hem üretici hem de ayrımcı gelişir, böylece ağ daha iyi ve daha iyi görüntüler üretmeyi öğrenir. Eğitim iki aşamada gerçekleşir: -* **Ayrıştırıcıyı Eğitmek**. Bu görev oldukça basittir: üretici tarafından bir görüntü partisi üretiyoruz, bunları sahte görüntü için 0 olarak etiketliyoruz ve giriş veri setinden (gerçek görüntü için etiket 1) bir görüntü partisi alıyoruz. Bazı *ayrıştırıcı kaybı* elde ediyoruz ve geri yayılım yapıyoruz. -* **Üreticiyi Eğitmek**. Bu biraz daha karmaşıktır, çünkü üretici için beklenen çıktıyı doğrudan bilmiyoruz. Bir üretici ve ardından ayrıştırıcıdan oluşan tüm GAN ağını alıyoruz, bazı rastgele vektörlerle besliyoruz ve sonucun 1 (gerçek görüntülere karşılık gelen) olmasını bekliyoruz. Ardından, ayrıştırıcının parametrelerini donduruyoruz (bu adımda eğitilmesini istemiyoruz) ve geri yayılım yapıyoruz. +* **Ayrımcının eğitimi**. Bu görev oldukça basittir: üretici tarafından bir görüntü grubu oluştururuz, bunları sahte görüntü anlamına gelen 0 ile etiketleriz ve giriş veri kümesinden bir grup görüntü alırız (1 etiketiyle, gerçek görüntü). Bir *ayrımcı kaybı* elde ederiz ve geri yayılım yaparız. +* **Üreticinin eğitimi**. Bu biraz daha karmaşıktır çünkü üretici için beklenen çıktıyı doğrudan bilmiyoruz. Üretici ve ayrımcıdan oluşan tüm GAN ağına bazı rastgele vektörler besleriz ve sonucun 1 (gerçek görüntülere karşılık gelen) olmasını bekleriz. Ardından ayrımcının parametrelerini dondururuz (bu adımda eğitilmesini istemeyiz) ve geri yayılım yaparız. -Bu süreçte, hem üretici hem de ayrıştırıcı kayıpları önemli ölçüde düşmez. İdeal durumda, her iki ağın performanslarını geliştirmesine karşılık olarak osilasyon göstermelidirler. +Bu süreç sırasında, hem üretici hem de ayrımcı kayıpları önemli ölçüde azalmaz. İdeal durumda, her iki ağın performansını geliştirdiğini gösteren bir salınım yapmalıdırlar. -## ✍️ Alıştırmalar: GAN'lar +## ✍️ Alıştırmalar: GAN'ler -* [TensorFlow/Keras'ta GAN Not Defteri](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) -* [PyTorch'ta GAN Not Defteri](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) +* [TensorFlow/Keras ile GAN Defteri](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch ile GAN Defteri](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### GAN eğitimindeki problemler +### GAN Eğitimiyle İlgili Sorunlar -GAN'ların eğitiminin özellikle zor olduğu bilinmektedir. İşte birkaç problem: +GAN'lerin eğitimi özellikle zordur. İşte birkaç sorun: -* **Mod Çökmesi**. Bu terim, üreticinin bir başarılı görüntü üretmeyi öğrenmesi ve farklı görüntü çeşitliliği üretmemesi anlamına gelir. -* **Hiperparametrelere duyarlılık**. Genellikle bir GAN'ın hiç yakınsama göstermediğini görebilirsiniz ve ardından öğrenme oranında ani bir düşüş ile yakınsama sürecine girebilir. -* Üretici ve ayrıştırıcı arasında bir **denge** sağlamak. Birçok durumda ayrıştırıcı kaybı oldukça hızlı bir şekilde sıfıra düşebilir, bu da üreticinin daha fazla eğitim yapamamasına neden olur. Bunu aşmak için, üretici ve ayrıştırıcı için farklı öğrenme oranları belirlemeyi deneyebiliriz veya kayıp zaten çok düşükse ayrıştırıcı eğitimini atlayabiliriz. -* **Yüksek çözünürlük** için eğitim. Oto kodlayıcılarla benzer bir sorunu yansıtarak, çok sayıda konvolüsyonel ağ katmanını yeniden yapılandırmanın artefaktlara yol açması nedeniyle bu problem tetiklenir. Bu problem genellikle ilk olarak birkaç katmanın düşük çözünürlükteki görüntüler üzerinde eğitilmesi ve ardından katmanların "açılması" veya eklenmesiyle çözülen **ilerlemeli büyüme** ile çözülür. Diğer bir çözüm, katmanlar arasında ekstra bağlantılar eklemek ve birden fazla çözünürlükte eğitim yapmaktır - detaylar için bu [Çok Ölçekli Gradyan GAN'lar makalesine](https://arxiv.org/abs/1903.06048) bakın. +* **Mod Çökmesi**. Bu terimle, üreticinin ayrımcıyı kandıran tek bir başarılı görüntü üretmeyi öğrenmesi ve farklı görüntüler üretmemesi kastedilir. +* **Hiperparametrelere duyarlılık**. Çoğu zaman, bir GAN'in hiç yakınsamadığını ve ardından öğrenme oranındaki ani bir düşüşle yakınsamaya başladığını görebilirsiniz. +* Üretici ve ayrımcı arasında bir **denge** sağlamak. Çoğu durumda, ayrımcı kaybı nispeten hızlı bir şekilde sıfıra düşebilir, bu da üreticinin daha fazla eğitim yapamamasına neden olur. Bunu aşmak için, üretici ve ayrımcı için farklı öğrenme oranları ayarlamayı deneyebilir veya kayıp zaten çok düşükse ayrımcı eğitimini atlayabiliriz. +* **Yüksek çözünürlük** için eğitim. Otoenkoderlerde olduğu gibi, bu sorun, çok fazla konvolüsyonel ağ katmanını yeniden yapılandırmanın artefaktlara yol açması nedeniyle ortaya çıkar. Bu sorun genellikle, önce birkaç katmanın düşük çözünürlüklü görüntüler üzerinde eğitildiği ve ardından katmanların "açıldığı" veya eklendiği **aşamalı büyüme** ile çözülür. Bir diğer çözüm, katmanlar arasında ek bağlantılar eklemek ve birden fazla çözünürlüğü aynı anda eğitmek olabilir - ayrıntılar için bu [Çok Ölçekli Gradient GAN'ler makalesine](https://arxiv.org/abs/1903.06048) bakabilirsiniz. -## Stil Aktarımı +## Stil Transferi -GAN'lar sanatsal görüntüler oluşturmak için harika bir yoldur. Diğer ilginç bir teknik ise **stil aktarımı** olarak adlandırılır; bu teknik, bir **içerik görüntüsü** alır ve bunu farklı bir stil ile yeniden çizer, **stil görüntüsünden** filtreler uygulayarak. +GAN'ler sanatsal görüntüler üretmek için harika bir yöntemdir. Bir diğer ilginç teknik ise **stil transferi** olarak adlandırılır. Bu teknik, bir **içerik görüntüsü** alır ve onu farklı bir tarzda yeniden çizer, **stil görüntüsünden** filtreler uygular. -Bu işlem şu şekilde çalışır: -* Rastgele bir gürültü görüntüsü ile başlarız (veya bir içerik görüntüsü ile, ancak anlamak açısından rastgele gürültü ile başlamak daha kolaydır). -* Amacımız, hem içerik görüntüsüne hem de stil görüntüsüne yakın bir görüntü oluşturmaktır. Bu, iki kayıp fonksiyonu ile belirlenir: - - **İçerik kaybı**, mevcut görüntü ve içerik görüntüsünden çıkarılan özellikler kullanılarak hesaplanır. - - **Stil kaybı**, mevcut görüntü ve stil görüntüsü arasındaki ilişkiyi akıllıca Gram matrisleri kullanarak hesaplar (daha fazla detay için [örnek not defterine](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) bakın). -* Görüntüyü daha pürüzsüz hale getirmek ve gürültüyü kaldırmak için, ayrıca komşu pikseller arasındaki ortalama mesafeyi hesaplayan **Varyasyon kaybı** da tanıtıyoruz. -* Ana optimizasyon döngüsü, toplam kaybı minimize etmek için mevcut görüntüyü gradyan inişi (veya başka bir optimizasyon algoritması) kullanarak ayarlamaktadır; bu, üç kaybın ağırlıklı toplamıdır. +Bu yöntem şu şekilde çalışır: +* Rastgele bir gürültü görüntüsüyle başlarız (veya bir içerik görüntüsüyle, ancak anlamak için rastgele gürültüyle başlamak daha kolaydır) +* Amacımız, hem içerik görüntüsüne hem de stil görüntüsüne yakın olacak bir görüntü oluşturmaktır. Bu, iki kayıp fonksiyonu ile belirlenir: + - **İçerik kaybı**, mevcut görüntü ve içerik görüntüsünden CNN tarafından bazı katmanlarda çıkarılan özelliklere dayanarak hesaplanır. + - **Stil kaybı**, mevcut görüntü ve stil görüntüsü arasında, Gram matrisleri kullanılarak (daha fazla ayrıntı için [örnek deftere](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) bakabilirsiniz) hesaplanır. +* Görüntüyü daha pürüzsüz hale getirmek ve gürültüyü kaldırmak için, **Varyasyon kaybı** da ekleriz, bu kayıp komşu pikseller arasındaki ortalama mesafeyi hesaplar. +* Ana optimizasyon döngüsü, toplam kaybı (üç kaybın ağırlıklı toplamı) minimize etmek için mevcut görüntüyü gradyan inişi (veya başka bir optimizasyon algoritması) kullanarak ayarlar. -## ✍️ Örnek: [Stil Aktarımı](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) +## ✍️ Örnek: [Stil Transferi](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) ## Sonuç -Bu derste, GAN'lar ve bunları nasıl eğiteceğiniz hakkında bilgi edindiniz. Ayrıca, bu tür bir Sinir Ağı'nın karşılaşabileceği özel zorluklar ve bunları aşmanın bazı stratejileri hakkında bilgi edindiniz. +Bu derste, GAN'ler ve bunları nasıl eğiteceğinizi öğrendiniz. Ayrıca, bu tür Sinir Ağlarının karşılaşabileceği özel zorlukları ve bunların üstesinden nasıl gelinebileceğine dair bazı stratejileri öğrendiniz. ## 🚀 Meydan Okuma -Kendi görüntülerinizi kullanarak [Stil Aktarımı not defterini](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) çalıştırın. +[Stil Transferi defterini](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) kendi görüntülerinizle çalıştırın. -## İnceleme & Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Referans olarak, GAN'lar hakkında daha fazla bilgi edinmek için bu kaynakları okuyun: +Referans için, GAN'ler hakkında daha fazla bilgi edinmek için şu kaynakları okuyun: -* Marco Pasini, [Bir Yıl Boyunca GAN Eğitimiyle İlgili Öğrendiğim 10 Ders](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* Dikkate alınması gereken bir *de facto* GAN mimarisi olan [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN) -* [Azure ML'de GAN'lar kullanarak Üretken Sanat Oluşturma](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) +* Marco Pasini, [GAN'leri Bir Yıl Boyunca Eğitmekten Öğrendiğim 10 Ders](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), dikkate alınması gereken bir *de facto* GAN mimarisi +* [Azure ML'de GAN'ler Kullanarak Üretici Sanat Oluşturma](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) -## Görev +## Ödev -Bu derse bağlı iki not defterinden birini gözden geçirin ve GAN'ı kendi görüntüleriniz üzerinde yeniden eğitin. Ne yaratabilirsiniz? +Bu derse ait iki defterden birini tekrar gözden geçirin ve GAN'i kendi görüntülerinizle yeniden eğitin. Neler oluşturabilirsiniz? -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter bir kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md index 6f8011fe..78356943 100644 --- a/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,171 +1,187 @@ + # Nesne Tespiti -Şimdiye kadar ele aldığımız görüntü sınıflandırma modelleri, bir görüntü alır ve MNIST probleminde 'sayı' sınıfı gibi kategorik bir sonuç üretir. Ancak birçok durumda, bir resmin nesneleri tasvir ettiğini bilmekle yetinmek istemiyoruz - bu nesnelerin kesin konumunu belirleyebilme yeteneğine sahip olmak istiyoruz. İşte bu, **nesne tespiti**nin tam anlamıdır. +Bugüne kadar ele aldığımız görüntü sınıflandırma modelleri, bir görüntüyü alıp MNIST problemindeki 'sayı' sınıfı gibi kategorik bir sonuç üretmiştir. Ancak, birçok durumda bir resmin nesneleri tasvir ettiğini bilmek yeterli değildir - nesnelerin tam konumlarını belirlemek isteriz. İşte **nesne tespiti** tam olarak bu noktada devreye girer. -## [Ön-derse Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) ![Nesne Tespiti](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.tr.png) -> [YOLO v2 web sitesi](https://pjreddie.com/darknet/yolov2/) kaynaklı görüntü +> Görsel [YOLO v2 web sitesi](https://pjreddie.com/darknet/yolov2/) üzerinden alınmıştır. ## Nesne Tespiti için Naif Bir Yaklaşım -Bir resimde bir kediyi bulmak istediğimizi varsayalım, nesne tespiti için çok naif bir yaklaşım aşağıdaki gibi olacaktır: +Bir resimde bir kediyi bulmak istediğimizi varsayalım, nesne tespiti için oldukça basit bir yaklaşım şu şekilde olabilir: -1. Resmi bir dizi kareye böl -2. Her bir kare üzerinde görüntü sınıflandırması yap. -3. Yeterince yüksek aktivasyon sonucu veren kareler, söz konusu nesneyi içeriyor olarak kabul edilebilir. +1. Resmi bir dizi kareye bölmek. +2. Her bir karede görüntü sınıflandırması çalıştırmak. +3. Yeterince yüksek aktivasyon veren karelerin, ilgili nesneyi içerdiği kabul edilebilir. ![Naif Nesne Tespiti](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.tr.png) -> *[Alıştırma Defteri](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* kaynağından görüntü +> *Görsel [Egzersiz Not Defteri](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) üzerinden alınmıştır.* -Ancak bu yaklaşım, algoritmanın nesnenin sınırlayıcı kutusunu oldukça belirsiz bir şekilde yerleştirmesine olanak tanıdığı için ideal değildir. Daha kesin bir konum için, sınırlayıcı kutuların koordinatlarını tahmin etmek üzere bir tür **regresyon** uygulamamız gerekiyor - ve bunun için belirli veri setlerine ihtiyacımız var. +Ancak, bu yaklaşım ideal olmaktan uzaktır çünkü algoritmanın nesnenin sınır kutusunu çok hassas bir şekilde belirlemesine izin vermez. Daha hassas bir konum belirlemek için, sınır kutularının koordinatlarını tahmin etmek üzere bir tür **regresyon** çalıştırmamız gerekir - bunun için de özel veri setlerine ihtiyaç duyarız. ## Nesne Tespiti için Regresyon -[Bu blog yazısı](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491), şekil tespiti için harika bir giriş sunmaktadır. +[Bu blog yazısı](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491), şekilleri tespit etmeye dair harika bir giriş sunmaktadır. ## Nesne Tespiti için Veri Setleri Bu görev için aşağıdaki veri setleriyle karşılaşabilirsiniz: * [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 sınıf -* [COCO](http://cocodataset.org/#home) - Bağlamda Ortak Nesneler. 80 sınıf, sınırlayıcı kutular ve segmentasyon maskeleri +* [COCO](http://cocodataset.org/#home) - Bağlamda Yaygın Nesneler. 80 sınıf, sınır kutuları ve segmentasyon maskeleri ![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.tr.jpg) ## Nesne Tespiti Metrikleri -### Kesim Üzerine Birlik +### Kesişim Bölü Birleşim (Intersection over Union) -Görüntü sınıflandırması için algoritmanın ne kadar iyi performans gösterdiğini ölçmek kolaydır, ancak nesne tespiti için hem sınıfın doğruluğunu hem de çıkarılan sınırlayıcı kutu konumunun doğruluğunu ölçmemiz gerekiyor. İkincisi için, iki kutunun (veya iki rastgele alanın) ne kadar örtüştüğünü ölçen **Kesim Üzerine Birlik** (IoU) adı verilen bir ölçüm kullanıyoruz. +Görüntü sınıflandırması için algoritmanın ne kadar iyi performans gösterdiğini ölçmek kolaydır, ancak nesne tespiti için hem sınıfın doğruluğunu hem de tahmin edilen sınır kutusu konumunun hassasiyetini ölçmemiz gerekir. İkincisi için, **Kesişim Bölü Birleşim** (IoU) adı verilen bir ölçüm kullanırız; bu, iki kutunun (veya iki rastgele alanın) ne kadar iyi örtüştüğünü ölçer. ![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.tr.png) -> *[Bu mükemmel IoU blog yazısının](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) 2. Şeması* +> *[IoU hakkında bu mükemmel blog yazısından](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) alınan Şekil 2.* -Fikir basit - iki şekil arasındaki kesişim alanını, bu şekillerin birleşim alanına bölüyoruz. İki özdeş alan için, IoU 1 olurken, tamamen ayrı alanlar için 0 olur. Aksi takdirde, 0 ile 1 arasında değişecektir. Genellikle, IoU'nun belirli bir değerin üzerinde olduğu sınırlayıcı kutuları dikkate alıyoruz. +Fikir basittir - iki şekil arasındaki kesişim alanını birleşim alanına böleriz. İki özdeş alan için IoU 1 olurken, tamamen ayrık alanlar için 0 olacaktır. Diğer durumlarda 0 ile 1 arasında değişir. Genellikle IoU belirli bir değerin üzerinde olan sınır kutularını dikkate alırız. -### Ortalama Doğruluk +### Ortalama Hassasiyet (Average Precision) -Verilen bir nesne sınıfı $C$'nin ne kadar iyi tanındığını ölçmek istiyoruz. Bunu ölçmek için, **Ortalama Doğruluk** metriklerini kullanıyoruz, bu da aşağıdaki gibi hesaplanır: +Bir nesne sınıfı $C$'nin ne kadar iyi tanındığını ölçmek istediğimizi varsayalım. Bunu ölçmek için **Ortalama Hassasiyet** metriğini kullanırız, bu şu şekilde hesaplanır: -1. Doğruluk eşiğine (0 ile 1 arasında) bağlı olarak doğruluk değerlerini gösteren Doğruluk-Hatırlama eğrisini dikkate al. -2. Eşeğe bağlı olarak, görüntüde daha fazla veya daha az nesne tespit edeceğiz ve farklı doğruluk ve hatırlama değerleri elde edeceğiz. -3. Eğri şu şekilde görünecek: +1. Hassasiyet-Tekrar Çağırma eğrisi, algılama eşik değerine (0'dan 1'e kadar) bağlı olarak doğruluğu gösterir. +2. Eşik değerine bağlı olarak, görüntüde daha fazla veya daha az nesne algılanır ve farklı hassasiyet ve tekrar çağırma değerleri elde edilir. +3. Eğri şu şekilde görünür: -> *[NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* kaynağından görüntü + -Verilen bir sınıf $C$ için ortalama Doğruluk, bu eğrinin altındaki alandır. Daha kesin olarak, Hatırlama ekseni genellikle 10 parçaya bölünür ve Doğruluk tüm bu noktalar üzerinde ortalanır: +> *Görsel [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) üzerinden alınmıştır.* + +Belirli bir sınıf $C$ için Ortalama Hassasiyet, bu eğrinin altındaki alandır. Daha kesin olarak, Tekrar Çağırma ekseni genellikle 10 parçaya bölünür ve Hassasiyet bu noktaların tümü üzerinde ortalanır: $$ -AP = {1\over11}\sum_{i=0}^{10}\mbox{Doğruluk}(\mbox{Hatırlama}={i\over10}) +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$ ### AP ve IoU -Sadece IoU'nun belirli bir değerin üzerinde olduğu tespitleri dikkate alacağız. Örneğin, PASCAL VOC veri setinde genellikle $\mbox{IoU Eşiği} = 0.5$ varsayılırken, COCO'da AP farklı $\mbox{IoU Eşiği}$ değerleri için ölçülmektedir. +Sadece IoU belirli bir değerin üzerinde olan algılamaları dikkate alacağız. Örneğin, PASCAL VOC veri setinde genellikle $\mbox{IoU Threshold} = 0.5$ kabul edilirken, COCO'da AP farklı $\mbox{IoU Threshold}$ değerleri için ölçülür. -### Ortalama Ortalama Doğruluk - mAP + -Nesne Tespiti için ana metrik **Ortalama Ortalama Doğruluk** veya **mAP** olarak adlandırılır. Bu, Tüm nesne sınıfları üzerinden ortalama alınmış Ortalama Doğruluk değeridir ve bazen de $\mbox{IoU Eşiği}$ üzerinden ortalama alınır. **mAP** hesaplama süreci daha ayrıntılı olarak [bu blog yazısında](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) ve [burada kod örnekleri ile](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) açıklanmaktadır. +> *Görsel [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) üzerinden alınmıştır.* + +### Ortalama Ortalama Hassasiyet - mAP + +Nesne Tespiti için ana metrik **Ortalama Ortalama Hassasiyet** veya **mAP** olarak adlandırılır. Bu, tüm nesne sınıfları ve bazen de $\mbox{IoU Threshold}$ üzerinde ortalanmış Ortalama Hassasiyet değeridir. **mAP** hesaplama süreci daha ayrıntılı olarak [bu blog yazısında](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) ve ayrıca [kod örnekleriyle burada](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) açıklanmıştır. ## Farklı Nesne Tespiti Yaklaşımları -Nesne tespiti algoritmalarının iki geniş sınıfı vardır: +Nesne tespiti algoritmaları iki geniş sınıfa ayrılır: -* **Bölge Teklif Ağları** (R-CNN, Fast R-CNN, Faster R-CNN). Ana fikir, **İlgi Alanları** (ROI) üretmek ve bunlar üzerinde maksimum aktivasyon aramak için CNN çalıştırmaktır. Bu, naif yaklaşıma biraz benziyor, tek fark, ROI'lerin daha akıllı bir şekilde üretilmesidir. Bu tür yöntemlerin en büyük dezavantajlarından biri, görüntü üzerinde CNN sınıflandırıcısının birçok geçişini gerektirdiği için yavaş olmalarıdır. -* **Tek geçiş** (YOLO, SSD, RetinaNet) yöntemleri. Bu mimarilerde, ağı hem sınıfları hem de ROI'leri tek bir geçişte tahmin edecek şekilde tasarlıyoruz. +* **Bölge Öneri Ağları** (R-CNN, Fast R-CNN, Faster R-CNN). Ana fikir, **İlgi Alanları** (ROI) oluşturmak ve maksimum aktivasyonu aramak için CNN çalıştırmaktır. Bu, naif yaklaşıma biraz benzer, ancak ROI'ler daha akıllıca oluşturulur. Bu tür yöntemlerin en büyük dezavantajlarından biri, yavaş olmalarıdır çünkü görüntü üzerinde CNN sınıflandırıcısının birçok geçişine ihtiyaç duyarız. +* **Tek geçiş** (YOLO, SSD, RetinaNet) yöntemleri. Bu mimarilerde, ağ hem sınıfları hem de ROI'leri tek bir geçişte tahmin edecek şekilde tasarlanır. ### R-CNN: Bölge Tabanlı CNN -[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf), ROI bölgelerinin hiyerarşik yapısını oluşturmak için [Seçici Arama](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) kullanır, bu bölgeler daha sonra CNN özellik çıkarıcıları ve SVM sınıflandırıcıları üzerinden geçirilerek nesne sınıfı belirlenir ve *sınırlayıcı kutu* koordinatlarını belirlemek için doğrusal regresyon uygulanır. [Resmi Makale](https://arxiv.org/pdf/1506.01497v1.pdf) +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf), ROI bölgelerinin hiyerarşik yapısını oluşturmak için [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) kullanır. Bu bölgeler daha sonra CNN özellik çıkarıcıları ve SVM sınıflandırıcıları aracılığıyla nesne sınıfını belirlemek ve *sınır kutusu* koordinatlarını belirlemek için doğrusal regresyon ile işlenir. [Resmi Makale](https://arxiv.org/pdf/1506.01497v1.pdf) ![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.tr.png) -> *van de Sande et al. ICCV’11 kaynağından görüntü* +> *Görsel van de Sande ve ark. ICCV’11'dan alınmıştır.* ![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.tr.png) -> *[Bu blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) kaynağından görüntü* +> *Görseller [bu blogdan](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) alınmıştır.* ### F-RCNN - Hızlı R-CNN -Bu yaklaşım R-CNN ile benzerdir, ancak bölgeler, konvolüsyon katmanları uygulandıktan sonra tanımlanır. +Bu yaklaşım R-CNN'e benzer, ancak bölgeler konvolüsyon katmanları uygulandıktan sonra tanımlanır. ![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.tr.png) -> Resim [Resmi Makale](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 +> Görsel [Resmi Makale](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 üzerinden alınmıştır. ### Daha Hızlı R-CNN -Bu yaklaşımın ana fikri, ROI'leri tahmin etmek için bir sinir ağı kullanmaktır - bu, *Bölge Teklif Ağı* olarak adlandırılır. [Makale](https://arxiv.org/pdf/1506.01497.pdf), 2016 +Bu yaklaşımın ana fikri, ROI'leri tahmin etmek için sinir ağı kullanmaktır - *Bölge Öneri Ağı* olarak adlandırılır. [Makale](https://arxiv.org/pdf/1506.01497.pdf), 2016 -![Daha HızlıRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.tr.png) +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.tr.png) -> Resim [resmi makaleden](https://arxiv.org/pdf/1506.01497.pdf) +> Görsel [Resmi Makale](https://arxiv.org/pdf/1506.01497.pdf) üzerinden alınmıştır. ### R-FCN: Bölge Tabanlı Tam Konvolüsyonel Ağ -Bu algoritma, Daha Hızlı R-CNN'den bile daha hızlıdır. Ana fikir aşağıdaki gibidir: +Bu algoritma, Daha Hızlı R-CNN'den bile daha hızlıdır. Ana fikir şu şekildedir: 1. Özellikler ResNet-101 kullanılarak çıkarılır. -2. Özellikler **Pozisyon-Duyarlı Skor Haritası** tarafından işlenir. $C$ sınıflarındaki her nesne $k\times k$ bölgeye ayrılır ve nesnelerin parçalarını tahmin etmek için eğitim yapılır. -3. $k\times k$ bölgelerden her bir parça için tüm ağlar nesne sınıfları için oy kullanır ve maksimum oy alan nesne sınıfı seçilir. +1. Özellikler **Konum-Duyarlı Skor Haritası** tarafından işlenir. $C$ sınıflarından her bir nesne $k\times k$ bölgelere bölünür ve nesne parçalarını tahmin etmek için eğitim yapılır. +1. $k\times k$ bölgelerden her bir parça için tüm ağlar nesne sınıfları için oy kullanır ve maksimum oyu alan nesne sınıfı seçilir. -![r-fcn görüntüsü](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.tr.png) +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.tr.png) -> Resim [resmi makaleden](https://arxiv.org/abs/1605.06409) +> Görsel [Resmi Makale](https://arxiv.org/abs/1605.06409) üzerinden alınmıştır. -### YOLO - Bir Kez Bakarsınız +### YOLO - Sadece Bir Kez Bak -YOLO, gerçek zamanlı bir tek geçiş algoritmasıdır. Ana fikir aşağıdaki gibidir: +YOLO, gerçek zamanlı bir tek geçiş algoritmasıdır. Ana fikir şu şekildedir: - * Görüntü $S\times S$ bölgelere bölünür. - * Her bölge için, **CNN** $n$ olası nesneyi, *sınırlayıcı kutu* koordinatlarını ve *güven* = *olasılık* * IoU'yu tahmin eder. + * Görüntü $S\times S$ bölgelere ayrılır. + * Her bölge için **CNN**, $n$ olası nesneleri, *sınır kutusu* koordinatlarını ve *güven* = *olasılık* * IoU tahmin eder. ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.tr.png) -> [Resmi makale](https://arxiv.org/abs/1506.02640) kaynağından görüntü + +> Görsel [Resmi Makale](https://arxiv.org/abs/1506.02640) üzerinden alınmıştır. ### Diğer Algoritmalar -* RetinaNet: [resmi makale](https://arxiv.org/abs/1708.02002) +* RetinaNet: [Resmi Makale](https://arxiv.org/abs/1708.02002) - [Torchvision'da PyTorch Uygulaması](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - [Keras Uygulaması](https://github.com/fizyr/keras-retinanet) - - Keras Örneklerinde [RetinaNet ile Nesne Tespiti](https://keras.io/examples/vision/retinanet/) -* SSD (Tek Atış Dedektörü): [resmi makale](https://arxiv.org/abs/1512.02325) + - [Keras Örneklerinde RetinaNet ile Nesne Tespiti](https://keras.io/examples/vision/retinanet/) +* SSD (Tek Atış Dedektörü): [Resmi Makale](https://arxiv.org/abs/1512.02325) -## ✍️ Alıştırmalar: Nesne Tespiti +## ✍️ Egzersizler: Nesne Tespiti -Aşağıdaki not defterinde öğreniminize devam edin: +Öğreniminize aşağıdaki not defterinde devam edin: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) ## Sonuç -Bu derste, nesne tespitinin gerçekleştirilebileceği çeşitli yolları hızlı bir şekilde keşfettiniz! +Bu derste, nesne tespitinin çeşitli yollarını kapsayan hızlı bir tur yaptınız! -## 🚀 Zorluk +## 🚀 Meydan Okuma -Bu makaleleri ve not defterlerini okuyun, YOLO hakkında bilgi edinin ve kendiniz deneyin. +YOLO ile ilgili bu makaleleri ve not defterlerini okuyun ve kendiniz deneyin: -* YOLO'yu tanımlayan [iyi bir blog yazısı](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) +* [YOLO'yu açıklayan iyi bir blog yazısı](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) * [Resmi site](https://pjreddie.com/darknet/yolo/) * Yolo: [Keras uygulaması](https://github.com/experiencor/keras-yolo2), [adım adım not defteri](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) * Yolo v2: [Keras uygulaması](https://github.com/experiencor/keras-yolo2), [adım adım not defteri](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) -## Gözden Geçirme & Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -* Nikhil Sardana tarafından [Nesne Tespiti](https://tjmachinelearning.com/lectures/1718/obj/) -* [Nesne tespit algoritmalarının iyi bir karşılaştırması](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [Nesne Tespiti için Derin Öğrenme Algoritmalarının Gözden Geçirilmesi](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [Temel Nesne Tespit Algoritmalarına Adım Adım Giriş](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [Nesne Tespiti için Python'da Daha Hızlı R-CNN Uygulaması](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [Nesne Tespiti](https://tjmachinelearning.com/lectures/1718/obj/) - Nikhil Sardana +* [Nesne tespiti algoritmalarının iyi bir karşılaştırması](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Nesne Tespiti için Derin Öğrenme Algoritmalarının İncelemesi](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Temel Nesne Tespiti Algoritmalarına Adım Adım Giriş](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python'da Nesne Tespiti için Daha Hızlı R-CNN Uygulaması](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) -## [Görev: Nesne Tespiti](lab/README.md) +## [Ödev: Nesne Tespiti](lab/README.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index 39dab1cc..a9da85e7 100644 --- a/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Hollywood Heads Veri Seti ile Baş + +# Hollywood Heads Veri Seti Kullanarak Kafa Tespiti -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) laboratuvar ödevi. +[AI for Beginners Müfredatı](https://github.com/microsoft/ai-for-beginners) kapsamında bir laboratuvar çalışması. ## Görev -Video gözetim kameralarıyla insan sayısını saymak, mağazalardaki ziyaretçi sayısını, restoranlardaki yoğun saatleri tahmin etmemizi sağlayan önemli bir görevdir. Bu görevi çözmek için, insan başlarını farklı açılardan tespit edebilmemiz gerekiyor. İnsan başlarını tespit etmek için bir nesne tespit modeli eğitmek amacıyla [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) kullanılabilir. +Video gözetim kamera akışında kişi sayısını saymak, mağazalardaki ziyaretçi sayısını, restoranlardaki yoğun saatleri vb. tahmin etmemizi sağlayan önemli bir görevdir. Bu görevi çözmek için, insan kafalarını farklı açılardan tespit edebilmemiz gerekir. İnsan kafalarını tespit etmek için bir nesne algılama modeli eğitmek amacıyla [Hollywood Heads Veri Seti](https://www.di.ens.fr/willow/research/headdetection/) kullanılabilir. ## Veri Seti -[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip), Hollywood filmlerinden 224,740 film karesinde 369,846 insan başı içermektedir. Her resim için ayrıca şu şekilde görünen bir XML açıklama dosyası bulunmaktadır: +[Hollywood Heads Veri Seti](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip), Hollywood filmlerinden alınmış 224,740 film karesinde 369,846 insan kafası anotasyonunu içerir. Veri seti, [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) formatında sunulmaktadır. Her bir görüntü için aşağıdaki gibi bir XML açıklama dosyası bulunmaktadır: ```xml @@ -48,19 +57,19 @@ Video gözetim kameralarıyla insan sayısını saymak, mağazalardaki ziyaretç ``` -Bu veri setinde yalnızca bir nesne sınıfı olan `head` bulunmaktadır ve her baş için sınırlayıcı kutunun koordinatlarını alırsınız. XML'yi Python kütüphaneleri kullanarak ayrıştırabilir veya PASCAL VOC formatıyla doğrudan çalışmak için [bu kütüphaneyi](https://pypi.org/project/pascal-voc/) kullanabilirsiniz. +Bu veri setinde yalnızca bir nesne sınıfı vardır: `head`. Her bir kafa için, sınırlayıcı kutunun koordinatları sağlanır. XML dosyalarını Python kütüphaneleri kullanarak ayrıştırabilir veya doğrudan PASCAL VOC formatıyla çalışmak için [bu kütüphaneyi](https://pypi.org/project/pascal-voc/) kullanabilirsiniz. -## Nesne Tespiti Eğitimi +## Nesne Algılama Modeli Eğitimi -Aşağıdaki yöntemlerden birini kullanarak bir nesne tespit modeli eğitebilirsiniz: +Bir nesne algılama modeli aşağıdaki yöntemlerden biriyle eğitilebilir: -* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) ve Python API'sini kullanarak modeli bulutta programatik olarak eğitmek. Özel vizyon, modeli eğitmek için birkaç yüz resimden fazlasını kullanamayacağından, veri setini sınırlamanız gerekebilir. -* [Keras tutorial](https://keras.io/examples/vision/retinanet/) örneğini kullanarak RetinaNet modelini eğitmek. -* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) modülünü torchvision içinde kullanmak. +* Modeli bulutta programlı bir şekilde eğitmek için [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) ve Python API'sini kullanabilirsiniz. Custom Vision, modeli eğitmek için birkaç yüz görüntüden fazlasını kullanamayabilir, bu nedenle veri setini sınırlamanız gerekebilir. +* RetunaNet modelini eğitmek için [Keras eğitiminden](https://keras.io/examples/vision/retinanet/) örnek kullanabilirsiniz. +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) modülünü kullanarak torchvision içindeki yerleşik modülü tercih edebilirsiniz. -## Önemli Nokta +## Çıkarım -Nesne tespiti, sanayide sıkça gereken bir görevdir. Nesne tespiti gerçekleştirmek için kullanılabilecek bazı hizmetler olsa da (örneğin, [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), nesne tespitinin nasıl çalıştığını anlamak ve kendi modellerinizi eğitebilmek önemlidir. +Nesne algılama, endüstride sıkça ihtiyaç duyulan bir görevdir. [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) gibi nesne algılama işlemleri için kullanılabilecek bazı hizmetler olsa da, nesne algılamanın nasıl çalıştığını anlamak ve kendi modellerinizi eğitebilmek önemlidir. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md index 76bca4fe..28160611 100644 --- a/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,69 +1,78 @@ + # Segmentasyon -Daha önce, nesne tespiti hakkında öğrendik; bu, görüntüdeki nesneleri *sınırlayıcı kutularını* tahmin ederek yerlerini belirlememizi sağlar. Ancak bazı görevler için yalnızca sınırlayıcı kutulara değil, aynı zamanda daha hassas nesne konumlandırmasına da ihtiyacımız var. Bu görev **segmentasyon** olarak adlandırılır. +Daha önce, nesneleri *bounding box* tahminiyle görüntüde bulmamızı sağlayan Nesne Tespiti hakkında bilgi edinmiştik. Ancak, bazı görevlerde yalnızca bounding box'lara değil, daha hassas nesne konumlandırmasına da ihtiyaç duyarız. Bu göreve **segmentasyon** denir. -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -Segmentasyon, **piksel sınıflandırması** olarak görülebilir; burada görüntünün **her** pikseli için sınıfını tahmin etmemiz gerekir (*arka plan* sınıflardan biridir). İki ana segmentasyon algoritması vardır: +Segmentasyon, **piksel sınıflandırması** olarak görülebilir; burada görüntünün **her bir** pikseli için sınıfını tahmin etmemiz gerekir (*arka plan* da sınıflardan biri olarak kabul edilir). İki ana segmentasyon algoritması vardır: -* **Anlamsal segmentasyon**, yalnızca piksel sınıfını belirtir ve aynı sınıftaki farklı nesneler arasında ayrım yapmaz. -* **Örnek segmentasyonu**, sınıfları farklı örneklere böler. +* **Semantik segmentasyon**, yalnızca piksel sınıfını belirtir ve aynı sınıfa ait farklı nesneler arasında ayrım yapmaz. +* **Örnek segmentasyonu**, sınıfları farklı örneklere ayırır. -Örnek segmentasyonunda, bu koyunlar farklı nesnelerken, anlamsal segmentasyonda tüm koyunlar tek bir sınıf olarak temsil edilir. +Örneğin, örnek segmentasyon için bu koyunlar farklı nesneler olarak kabul edilir, ancak semantik segmentasyon için tüm koyunlar tek bir sınıf olarak temsil edilir. -> Resim [bu blog yazısından](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) alınmıştır. +> Görsel [bu blog yazısından](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) alınmıştır. -Segmentasyon için farklı sinir mimarileri bulunmaktadır, ancak hepsi aynı yapıya sahiptir. Bir bakıma, daha önce öğrendiğiniz otomatik kodlayıcıya benzer; ancak amacımız orijinal görüntüyü parçalamak yerine bir **maske** parçalamaktır. Bu nedenle, bir segmentasyon ağı aşağıdaki parçalara sahiptir: +Segmentasyon için farklı sinir ağı mimarileri vardır, ancak hepsi aynı yapıya sahiptir. Bir bakıma, daha önce öğrendiğiniz otomatik kodlayıcıya (autoencoder) benzer, ancak burada amacımız orijinal görüntüyü yeniden oluşturmak yerine bir **maske**yi yeniden oluşturmaktır. Bu nedenle, bir segmentasyon ağı şu parçalardan oluşur: -* **Kodlayıcı**, giriş görüntüsünden özellikleri çıkarır. -* **Çözücü**, bu özellikleri **maske görüntüsüne** dönüştürür; bu maske, sınıf sayısına karşılık gelen aynı boyut ve kanal sayısına sahiptir. +* **Kodlayıcı (Encoder)** giriş görüntüsünden özellikler çıkarır. +* **Kod Çözücü (Decoder)** bu özellikleri, sınıf sayısına karşılık gelen kanal sayısı ve aynı boyutta bir **maske görüntüsüne** dönüştürür. -> Resim [bu yayından](https://arxiv.org/pdf/2001.05566.pdf) alınmıştır. +> Görsel [bu yayından](https://arxiv.org/pdf/2001.05566.pdf) alınmıştır. -Segmentasyon için kullanılan kayıp fonksiyonunu özellikle belirtmeliyiz. Klasik otomatik kodlayıcılar kullanıldığında, iki görüntü arasındaki benzerliği ölçmemiz gerekir ve bunu yapmak için ortalama kare hatasını (MSE) kullanabiliriz. Segmentasyonda, hedef maske görüntüsündeki her piksel sınıf numarasını temsil eder (üçüncü boyutta one-hot kodlanmış), bu nedenle sınıflandırma için özel kayıp fonksiyonları kullanmalıyız - tüm pikseller üzerinde ortalaması alınan çapraz entropi kaybı. Maske ikili olduğunda - **ikili çapraz entropi kaybı** (BCE) kullanılır. +Segmentasyon için kullanılan kayıp fonksiyonundan özellikle bahsetmeliyiz. Klasik otomatik kodlayıcılar kullanıldığında, iki görüntü arasındaki benzerliği ölçmemiz gerekir ve bunu yapmak için ortalama kare hatası (MSE) kullanılabilir. Segmentasyonda, hedef maske görüntüsündeki her piksel sınıf numarasını (üçüncü boyut boyunca tekil kodlama ile) temsil eder, bu nedenle sınıflandırma için özel kayıp fonksiyonları kullanmamız gerekir - tüm pikseller üzerinde ortalaması alınan çapraz entropi kaybı. Eğer maske ikili ise - **ikili çapraz entropi kaybı** (BCE) kullanılır. -> ✅ One-hot kodlama, bir sınıf etiketini sınıf sayısına eşit uzunlukta bir vektöre kodlama yöntemidir. Bu teknik hakkında daha fazla bilgi için [bu makaleye](https://datagy.io/sklearn-one-hot-encode/) göz atın. +> ✅ Tekil kodlama, bir sınıf etiketini, sınıf sayısına eşit uzunlukta bir vektöre kodlamanın bir yoludur. Bu teknik hakkında daha fazla bilgi için [bu makaleye](https://datagy.io/sklearn-one-hot-encode/) göz atın. ## Tıbbi Görüntüleme için Segmentasyon -Bu derste, ağı insan nevuslarını (benler olarak da bilinir) tıbbi görüntülerde tanımak için eğiterek segmentasyonun nasıl çalıştığını göreceğiz. Görüntü kaynağı olarak PH2 Veritabanı dermoskopi görüntülerini kullanacağız. Bu veri seti, tipik nevus, atipik nevus ve melanom olmak üzere üç sınıftan 200 görüntü içermektedir. Tüm görüntüler, nevusu belirten bir **maske** ile birlikte gelir. +Bu derste, tıbbi görüntülerde insan nevüslerini (benler olarak da bilinir) tanımak için ağı eğiterek segmentasyonu uygulamada göreceğiz. Görüntü kaynağı olarak PH2 Veritabanı'nı kullanacağız. Bu veri seti, üç sınıfa ait 200 görüntü içerir: tipik nevüs, atipik nevüs ve melanom. Tüm görüntüler ayrıca nevüsü çevreleyen bir **maske** içerir. -> ✅ Bu teknik, bu tür tıbbi görüntüleme için özellikle uygundur, ancak başka hangi gerçek dünya uygulamalarını hayal edebilirsiniz? +> ✅ Bu teknik özellikle bu tür tıbbi görüntüleme için uygundur, ancak başka hangi gerçek dünya uygulamalarını hayal edebilirsiniz? navi -> Resim PH2 Veritabanından alınmıştır. +> Görsel PH2 Veritabanından alınmıştır. -Herhangi bir nevusu arka plandan ayırmak için bir model eğiteceğiz. +Modelimizi, herhangi bir nevüsü arka plandan ayırmak için eğiteceğiz. -## ✍️ Alıştırmalar: Anlamsal Segmentasyon +## ✍️ Alıştırmalar: Semantik Segmentasyon -Aşağıdaki not defterlerini açarak farklı anlamsal segmentasyon mimarileri hakkında daha fazla bilgi edinin, onlarla çalışmayı pratik edin ve bunları eylemde görün. +Aşağıdaki defterleri açarak farklı semantik segmentasyon mimarileri hakkında daha fazla bilgi edinin, bunlarla çalışmayı pratik yapın ve bunları uygulamada görün. -* [Anlamsal Segmentasyon Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) -* [Anlamsal Segmentasyon TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) +* [Semantik Segmentasyon Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantik Segmentasyon TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) ## Sonuç -Segmentasyon, görüntü sınıflandırması için çok güçlü bir tekniktir; sınırlayıcı kutuların ötesine geçerek piksel düzeyinde sınıflandırma yapar. Bu teknik, tıbbi görüntüleme gibi çeşitli uygulamalarda kullanılmaktadır. +Segmentasyon, görüntü sınıflandırması için çok güçlü bir tekniktir ve bounding box'lardan piksel düzeyinde sınıflandırmaya geçiş yapar. Bu teknik, tıbbi görüntüleme gibi birçok uygulamada kullanılır. ## 🚀 Zorluk -Vücut segmentasyonu, insan görüntüleriyle yapabileceğimiz yaygın görevlerden yalnızca biridir. Diğer önemli görevler arasında **iskelet tespiti** ve **poz tespiti** bulunmaktadır. Poz tespitinin nasıl kullanılabileceğini görmek için [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kütüphanesini deneyin. +Vücut segmentasyonu, insan görüntüleriyle yapabileceğimiz yaygın görevlerden sadece biridir. Diğer önemli görevler arasında **iskelet tespiti** ve **poz tespiti** bulunur. [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kütüphanesini deneyerek poz tespitinin nasıl kullanılabileceğini görün. -## Gözden Geçirme & Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Bu [wikipedia makalesi](https://wikipedia.org/wiki/Image_segmentation), bu tekniğin çeşitli uygulamaları hakkında iyi bir genel bakış sunmaktadır. Bu araştırma alanında Örnek segmentasyonu ve Panoptik segmentasyonun alt alanları hakkında kendi başınıza daha fazla bilgi edinin. +Bu [Vikipedi makalesi](https://wikipedia.org/wiki/Image_segmentation), bu tekniğin çeşitli uygulamaları hakkında iyi bir genel bakış sunar. Bu alandaki Örnek segmentasyonu ve Panoptik segmentasyon alt alanları hakkında kendi başınıza daha fazla bilgi edinin. -## [Görev](lab/README.md) +## [Ödev](lab/README.md) -Bu laboratuvar çalışmasında, Kaggle'dan [Segmentasyon Tam Vücut MADS Veri Seti](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) kullanarak **insan vücudu segmentasyonu** yapmayı deneyin. +Bu laboratuvarda, Kaggle'dan [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) kullanarak **insan vücudu segmentasyonu** yapmayı deneyin. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 5c78bd90..037fec5e 100644 --- a/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ + # İnsan Vücudu Segmentasyonu -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için laboratuvar ödevi. +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) kapsamında bir laboratuvar ödevi. ## Görev -Video prodüksiyonunda, örneğin hava durumu tahminlerinde, bir insan görüntüsünü kameradan kesip başka bir görüntünün üzerine yerleştirmemiz sıkça gerekmektedir. Bu genellikle, bir insanın tek renkli bir arka plan önünde çekildiği ve ardından bu arka planın kaldırıldığı **chroma key** teknikleri kullanılarak yapılır. Bu laboratuvar çalışmasında, insan siluetini kesmek için bir sinir ağı modeli eğiteceğiz. +Video prodüksiyonunda, örneğin hava durumu sunumlarında, genellikle bir insan görüntüsünü kameradan kesip başka bir görüntünün üzerine yerleştirmemiz gerekir. Bu genellikle, bir insanın tek renkli bir arka plan önünde çekildiği ve ardından bu arka planın kaldırıldığı **chroma key** teknikleri kullanılarak yapılır. Bu laboratuvarda, bir insan siluetini kesmek için bir sinir ağı modeli eğiteceğiz. ## Veri Seti Kaggle'dan [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) veri setini kullanacağız. Veri setini Kaggle'dan manuel olarak indirin. -## Not Defterini Açma +## Başlangıç Not Defteri Laboratuvara [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) dosyasını açarak başlayın. -## Önemli Nokta +## Çıkarım -Vücut segmentasyonu, insanların görüntüleriyle yapabileceğimiz yaygın görevlerden sadece biridir. Diğer önemli görevler arasında **iskelet tespiti** ve **poz tespiti** bulunur. Bu görevlerin nasıl uygulanabileceğini görmek için [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kütüphanesine göz atın. +Vücut segmentasyonu, insan görüntüleriyle yapabileceğimiz yaygın görevlerden sadece biridir. Diğer önemli görevler arasında **iskelet tespiti** ve **poz tespiti** bulunur. Bu görevlerin nasıl uygulanabileceğini görmek için [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kütüphanesine göz atın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/README.md b/translations/tr/lessons/4-ComputerVision/README.md index 193fc4cc..eef185d7 100644 --- a/translations/tr/lessons/4-ComputerVision/README.md +++ b/translations/tr/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ -# Bilgisayarla Görme + +# Bilgisayarlı Görü -![Bilgisayarla Görme içeriğinin bir doodle ile özeti](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.tr.png) +![Bilgisayarlı Görü içeriğinin bir çizim özeti](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.tr.png) Bu bölümde şunları öğreneceğiz: -* [Bilgisayarla Görmeye ve OpenCV'ye Giriş](06-IntroCV/README.md) +* [Bilgisayarlı Görüye ve OpenCV'ye Giriş](06-IntroCV/README.md) * [Konvolüsyonel Sinir Ağları](07-ConvNets/README.md) -* [Önceden Eğitilmiş Ağlar ve Transfer Öğrenme](08-TransferLearning/README.md) -* [Otomatik Kodlayıcılar](09-Autoencoders/README.md) -* [Üretici Rekabetçi Ağlar](10-GANs/README.md) +* [Önceden Eğitilmiş Ağlar ve Transfer Öğrenimi](08-TransferLearning/README.md) +* [Otoenkoderler](09-Autoencoders/README.md) +* [Üretici Çekişmeli Ağlar](10-GANs/README.md) * [Nesne Tespiti](11-ObjectDetection/README.md) -* [Anlamsal Segmentasyon](12-Segmentation/README.md) +* [Semantik Bölütleme](12-Segmentation/README.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/13-TextRep/README.md b/translations/tr/lessons/5-NLP/13-TextRep/README.md index 950e5893..8c64ec74 100644 --- a/translations/tr/lessons/5-NLP/13-TextRep/README.md +++ b/translations/tr/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# Metinleri Tensörler Olarak Temsil Etme + +# Metni Tensörler Olarak Temsil Etme -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) -## Metin Sınıflandırması +## Metin Sınıflandırma -Bu bölümün ilk kısmında, **metin sınıflandırması** görevine odaklanacağız. [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) veri setini kullanacağız; bu veri seti aşağıdaki gibi haber makalelerini içermektedir: +Bu bölümün ilk kısmında **metin sınıflandırma** görevine odaklanacağız. [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) veri setini kullanacağız. Bu veri seti aşağıdaki gibi haber makalelerini içerir: * Kategori: Bilim/Teknoloji -* Başlık: Ky. Şirketi Peptitleri İncelemek İçin Hibe Kazandı (AP) -* Metin: AP - Louisville Üniversitesi'nde bir kimya araştırmacısı tarafından kurulan bir şirket, geliştirmek için bir hibe kazandı... +* Başlık: Ky. Şirketi Peptitleri Araştırmak İçin Hibe Kazandı (AP) +* Gövde: AP - Louisville Üniversitesi'nde bir kimya araştırmacısı tarafından kurulan bir şirket, geliştirme için bir hibe kazandı... -Amacımız, haber maddesini metne dayalı olarak bir kategoriye sınıflandırmaktır. +Amacımız, haber öğesini metne dayanarak kategorilerden birine sınıflandırmak olacak. ## Metni Temsil Etme -Doğal Dil İşleme (NLP) görevlerini sinir ağları ile çözmek istiyorsak, metni tensörler olarak temsil etmenin bir yoluna ihtiyacımız var. Bilgisayarlar, metin karakterlerini, ekranınızdaki yazı tiplerine karşılık gelen sayılar olarak temsil eder; bu, ASCII veya UTF-8 gibi kodlamalar kullanılarak yapılır. +Doğal Dil İşleme (NLP) görevlerini sinir ağlarıyla çözmek istiyorsak, metni tensörler olarak temsil etmenin bir yoluna ihtiyacımız var. Bilgisayarlar zaten metinsel karakterleri, ekranınızdaki yazı tiplerine eşlenen sayılar olarak ASCII veya UTF-8 gibi kodlamalar kullanarak temsil eder. -Bir karakteri ASCII ve ikili temsile eşleyen diyagramı gösteren bir görüntü +Bir karakteri ASCII ve ikili temsil ile eşleyen diyagramı gösteren görüntü -> [Görüntü kaynağı](https://www.seobility.net/en/wiki/ASCII) +> [Görsel kaynağı](https://www.seobility.net/en/wiki/ASCII) -İnsanlar olarak, her harfin neyi **temsil ettiğini** anlarız ve tüm karakterlerin bir araya gelerek bir cümledeki kelimeleri nasıl oluşturduğunu biliriz. Ancak, bilgisayarlar kendi başlarına böyle bir anlayışa sahip değildir ve sinir ağı, eğitimi sırasında anlamı öğrenmek zorundadır. +İnsanlar olarak, her harfin **ne ifade ettiğini** ve tüm karakterlerin bir cümlenin kelimelerini oluşturmak için nasıl bir araya geldiğini anlıyoruz. Ancak, bilgisayarlar bu anlayışa sahip değildir ve sinir ağının anlamı eğitim sırasında öğrenmesi gerekir. Bu nedenle, metni temsil ederken farklı yaklaşımlar kullanabiliriz: -* **Karakter düzeyinde temsil**, metni her karakteri bir sayı olarak ele alarak temsil ettiğimiz durumdur. Metin koleksiyonumuzda *C* farklı karakter bulunduğunu varsayarsak, *Hello* kelimesi 5x*C* tensör ile temsil edilir. Her harf, bir sıcak kodlama (one-hot encoding) ile bir tensör sütununa karşılık gelir. -* **Kelime düzeyinde temsil**, metindeki tüm kelimelerin bir **kelime hazinesi** oluşturularak temsil edildiği durumdur; ardından kelimeleri sıcak kodlama ile temsil ederiz. Bu yaklaşım, her harfin kendisiyle çok fazla anlam ifade etmediği için daha iyidir ve bu nedenle daha yüksek düzeydeki anlamsal kavramları - kelimeleri - kullanarak sinir ağı için görevi basitleştiririz. Ancak, büyük sözlük boyutu nedeniyle yüksek boyutlu seyrek tensörlerle başa çıkmamız gerekir. +* **Karakter düzeyinde temsil**, metni her karakteri bir sayı olarak ele alarak temsil ettiğimizde. Metin korpusumuzda *C* farklı karakter olduğunu varsayarsak, *Merhaba* kelimesi 5x*C* tensörle temsil edilir. Her harf, tek-sıcak kodlama ile bir tensör sütununa karşılık gelir. +* **Kelime düzeyinde temsil**, metnimizdeki tüm kelimelerin bir **kelime dağarcığı** oluşturduğumuz ve ardından kelimeleri tek-sıcak kodlama ile temsil ettiğimiz yöntemdir. Bu yaklaşım bir şekilde daha iyidir, çünkü tek başına her harf çok fazla anlam taşımaz ve bu nedenle daha yüksek düzeydeki anlamsal kavramlar - kelimeler - kullanarak sinir ağı için görevi basitleştiririz. Ancak, büyük bir sözlük boyutuna sahip olduğumuzda, yüksek boyutlu seyrek tensörlerle başa çıkmamız gerekir. -Temsilden bağımsız olarak, önce metni bir **token** dizisine dönüştürmemiz gerekir; bir token, ya bir karakter, bir kelime ya da bazen bir kelimenin bir parçası olabilir. Ardından, token'ı bir sayıya dönüştürürüz; genellikle **kelime hazinesi** kullanarak, bu sayı bir sinir ağına sıcak kodlama ile beslenebilir. +Temsil yönteminden bağımsız olarak, önce metni bir **token** dizisine dönüştürmemiz gerekir. Bir token, bir karakter, bir kelime veya bazen bir kelimenin bir parçası olabilir. Daha sonra, token'ı genellikle bir **kelime dağarcığı** kullanarak bir sayıya dönüştürürüz ve bu sayı tek-sıcak kodlama ile bir sinir ağına beslenebilir. ## N-Gramlar -Doğal dilde, kelimelerin kesin anlamı yalnızca bağlamda belirlenebilir. Örneğin, *sinir ağı* ve *balık avlama ağı* ifadelerinin anlamları tamamen farklıdır. Bu durumu dikkate almanın yollarından biri, modelimizi kelime çiftleri üzerinde inşa etmek ve kelime çiftlerini ayrı kelime hazinesi tokenleri olarak ele almaktır. Bu şekilde, *I like to go fishing* cümlesi aşağıdaki token dizisi ile temsil edilecektir: *I like*, *like to*, *to go*, *go fishing*. Bu yaklaşımın sorunu, sözlük boyutunun önemli ölçüde büyümesidir ve *go fishing* ve *go shopping* gibi kombinasyonlar, aynı fiil olmasına rağmen hiçbir anlamsal benzerlik paylaşmayan farklı tokenler tarafından temsil edilir. +Doğal dilde, kelimelerin kesin anlamı yalnızca bağlam içinde belirlenebilir. Örneğin, *sinir ağı* ve *balık ağı* ifadelerinin anlamları tamamen farklıdır. Bunu dikkate almanın yollarından biri, modelimizi kelime çiftleri üzerine inşa etmek ve kelime çiftlerini ayrı kelime dağarcığı tokenları olarak ele almaktır. Bu şekilde, *Balık tutmaya gitmeyi seviyorum* cümlesi şu token dizisiyle temsil edilir: *Balık tutmayı*, *tutmayı gitmeyi*, *gitmeyi seviyorum*. Bu yaklaşımın sorunu, sözlük boyutunun önemli ölçüde büyümesidir ve *gitmeyi seviyorum* ve *gitmeyi alışverişe* gibi kombinasyonlar farklı tokenlarla temsil edilir, bu da aynı fiile rağmen herhangi bir anlamsal benzerlik paylaşmaz. -Bazı durumlarda, üç kelimeden oluşan kombinasyonlar - tri-gramlar - kullanmayı da düşünebiliriz. Bu nedenle, bu yaklaşım genellikle **n-gramlar** olarak adlandırılır. Ayrıca, karakter düzeyinde temsil ile n-gramları kullanmak mantıklıdır; bu durumda n-gramlar kabaca farklı hecelere karşılık gelecektir. +Bazı durumlarda, üç kelimeden oluşan tri-gramlar kullanmayı düşünebiliriz. Bu nedenle, bu yaklaşım genellikle **n-gramlar** olarak adlandırılır. Ayrıca, karakter düzeyinde temsil ile n-gramlar kullanmak mantıklıdır, bu durumda n-gramlar kabaca farklı hecelere karşılık gelir. ## Kelime Torbası ve TF/IDF -Metin sınıflandırması gibi görevleri çözerken, metni tek bir sabit boyutlu vektörle temsil edebilmemiz gerekir; bu vektörü son yoğun sınıflandırıcıya girdi olarak kullanacağız. Bunu yapmanın en basit yollarından biri, tüm bireysel kelime temsillerini bir araya getirmektir; örneğin, bunları toplamak. Her kelimenin sıcak kodlamalarını toplarsak, metin içinde her kelimenin ne kadar sıklıkla geçtiğini gösteren bir frekans vektörü elde ederiz. Bu metin temsiline **kelime torbası** (BoW) denir. +Metin sınıflandırma gibi görevleri çözerken, metni sabit boyutlu bir vektörle temsil edebilmemiz gerekir. Bu vektörü, son yoğun sınıflandırıcıya giriş olarak kullanacağız. Bunu yapmanın en basit yollarından biri, tüm bireysel kelime temsillerini birleştirmek, örneğin onları toplayarak. Her kelimenin tek-sıcak kodlamalarını toplarsak, metin içinde her kelimenin kaç kez göründüğünü gösteren bir frekans vektörü elde ederiz. Bu tür bir metin temsili **kelime torbası** (BoW) olarak adlandırılır. -> Yazarın görüntüsü +> Görsel yazar tarafından oluşturulmuştur -BoW, metinde hangi kelimelerin ve hangi miktarlarda göründüğünü temsil eder; bu da metnin ne hakkında olduğu konusunda iyi bir gösterge olabilir. Örneğin, bir politikayla ilgili haber makalesi, muhtemelen *başkan* ve *ülke* gibi kelimeleri içerecektir; bilimsel bir yayında ise *çarpıştırıcı*, *bulundu* gibi kelimeler olacaktır. Bu nedenle, kelime sıklıkları birçok durumda metin içeriğinin iyi bir göstergesi olabilir. +Bir BoW, metinde hangi kelimelerin göründüğünü ve hangi miktarlarda olduğunu temsil eder, bu da metnin ne hakkında olduğuna dair iyi bir gösterge olabilir. Örneğin, politika üzerine bir haber makalesi muhtemelen *başkan* ve *ülke* gibi kelimeler içerirken, bilimsel bir yayın *çarpıştırıcı*, *keşfedildi* gibi kelimeler içerebilir. Bu nedenle, kelime frekansları birçok durumda metin içeriğinin iyi bir göstergesi olabilir. -BoW ile ilgili sorun, *ve*, *dir* gibi belirli yaygın kelimelerin çoğu metinde yer alması ve en yüksek sıklıklara sahip olmalarıdır; bu durum, gerçekten önemli olan kelimeleri gölgede bırakmaktadır. Bu kelimelerin önemini, kelimelerin tüm belge koleksiyonunda ne sıklıkla geçtiğini dikkate alarak azaltabiliriz. Bu, TF/IDF yaklaşımının temel fikridir ve bu konu, bu derse ekli not defterlerinde daha ayrıntılı olarak ele alınmaktadır. +BoW'un sorunu, *ve*, *bu*, *bir* gibi yaygın kelimelerin çoğu metinde görünmesi ve en yüksek frekanslara sahip olmasıdır, bu da gerçekten önemli olan kelimeleri gölgede bırakır. Bu kelimelerin önemini azaltmak için, kelimelerin tüm belge koleksiyonunda ne sıklıkta göründüğünü dikkate alabiliriz. Bu, TF/IDF yaklaşımının temel fikridir ve bu dersle ilişkilendirilmiş not defterlerinde daha ayrıntılı olarak ele alınmıştır. -Ancak, bu yaklaşımların hiçbiri metnin **anlamını** tam olarak dikkate alamaz. Bunu yapmak için daha güçlü sinir ağı modellerine ihtiyacımız var; bunu bu bölümün ilerleyen kısımlarında tartışacağız. +Ancak, bu yaklaşımların hiçbiri metnin **anlamını** tam olarak dikkate alamaz. Bunu yapmak için daha güçlü sinir ağı modellerine ihtiyacımız var ve bu modelleri bu bölümde daha sonra tartışacağız. ## ✍️ Alıştırmalar: Metin Temsili -Aşağıdaki not defterlerinde öğreniminize devam edin: +Aşağıdaki not defterlerinde öğrenmeye devam edin: * [PyTorch ile Metin Temsili](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) * [TensorFlow ile Metin Temsili](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) ## Sonuç -Şu ana kadar, farklı kelimelere frekans ağırlığı ekleyebilen teknikleri inceledik. Ancak, bu teknikler anlamı veya sıralamayı temsil edemez. Ünlü dilbilimci J. R. Firth'ün 1935 yılında söylediği gibi, "Bir kelimenin tam anlamı her zaman bağlamsaldır ve bağlamdan ayrı bir anlam çalışması ciddiye alınamaz." Daha sonra kursta, metinden bağlamsal bilgileri nasıl yakalayacağımızı dil modelleme ile öğreneceğiz. +Şimdiye kadar, farklı kelimelere frekans ağırlığı ekleyebilen teknikleri inceledik. Ancak, bu teknikler anlamı veya sıralamayı temsil edemez. Ünlü dilbilimci J. R. Firth'in 1935'te söylediği gibi, "Bir kelimenin tam anlamı her zaman bağlamsaldır ve bağlamdan bağımsız bir anlam çalışması ciddiye alınamaz." Bu kursta daha sonra, dil modelleme kullanarak metinden bağlamsal bilgiyi nasıl yakalayacağımızı öğreneceğiz. -## 🚀 Zorluk +## 🚀 Meydan Okuma -Kelime torbası ve farklı veri modelleri kullanarak bazı diğer alıştırmaları deneyin. Bu [Kaggle yarışmasından](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) ilham alabilirsiniz. +Kelime torbası ve farklı veri modelleri kullanarak başka alıştırmalar yapmayı deneyin. Bu [Kaggle yarışması](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) size ilham verebilir. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -Metin gömme ve kelime torbası teknikleri ile becerilerinizi [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) üzerinde pratik yaparak geliştirin. +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) üzerinde metin gömme ve kelime torbası teknikleriyle becerilerinizi geliştirin. ## [Ödev: Not Defterleri](assignment.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/13-TextRep/assignment.md b/translations/tr/lessons/5-NLP/13-TextRep/assignment.md index e4d79b8e..45937d58 100644 --- a/translations/tr/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/tr/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ -# Görev: Not Defterleri + +# Ödev: Not Defterleri -Bu derse bağlı not defterlerini (ister PyTorch ister TensorFlow versiyonu) kullanarak, kendi veri setinizi kullanarak tekrar çalıştırın; belki de atıf yaparak kullanılan bir Kaggle veri seti. Not defterini, kendi bulgularınızı vurgulamak için yeniden yazın. Şaşırtıcı olabilecek bazı yenilikçi veri setlerini deneyin, örneğin NUFORC'dan [UFO gözlemleri hakkında bu veri seti](https://www.kaggle.com/datasets/NUFORC/ufo-sightings). +Bu derse ait not defterlerini (PyTorch veya TensorFlow versiyonlarından birini) kullanarak, kendi veri setinizle yeniden çalıştırın. Örneğin, Kaggle'dan bir veri seti alabilir ve uygun şekilde kaynak belirterek kullanabilirsiniz. Kendi bulgularınızı vurgulamak için not defterini yeniden yazın. Sürpriz olabilecek yenilikçi veri setlerini denemeyi düşünün, örneğin NUFORC'un [UFO gözlemleri hakkında olan bu veri seti](https://www.kaggle.com/datasets/NUFORC/ufo-sightings). -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde kesin kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/14-Embeddings/README.md b/translations/tr/lessons/5-NLP/14-Embeddings/README.md index 6ff04db3..fa81907a 100644 --- a/translations/tr/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/tr/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ -# Gömme (Embeddings) + +# Gömülü Temsiller -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -BoW veya TF/IDF tabanlı sınıflandırıcıları eğitirken, uzunluğu `vocab_size` olan yüksek boyutlu kelime torbası (bag-of-words) vektörleri üzerinde çalıştık ve düşük boyutlu konumsal temsil vektörlerini seyrek bir one-hot temsiline açıkça dönüştürdük. Ancak bu one-hot temsili, bellek açısından verimli değildir. Ayrıca, her kelime birbirinden bağımsız olarak ele alınır; yani one-hot kodlanmış vektörler kelimeler arasında herhangi bir anlamsal benzerlik ifade etmez. +BoW veya TF/IDF tabanlı sınıflandırıcılar eğitirken, `vocab_size` uzunluğunda yüksek boyutlu kelime torbası vektörleri üzerinde çalışıyorduk ve düşük boyutlu konumsal temsil vektörlerini seyrek tekil temsil vektörlerine açıkça dönüştürüyorduk. Ancak, bu tekil temsil bellek açısından verimli değildir. Ayrıca, her kelime birbirinden bağımsız olarak ele alınır, yani tekil kodlanmış vektörler kelimeler arasındaki herhangi bir anlamsal benzerliği ifade etmez. -**Gömme** fikri, kelimeleri daha düşük boyutlu yoğun vektörler ile temsil etmektir ve bu vektörler bir kelimenin anlamsal anlamını bir şekilde yansıtır. Anlamlı kelime gömmeleri nasıl oluşturulacağını daha sonra tartışacağız, ancak şimdilik gömmeleri bir kelime vektörünün boyutunu düşürmenin bir yolu olarak düşünelim. +**Gömülü temsil** fikri, kelimeleri bir şekilde bir kelimenin anlamsal anlamını yansıtan daha düşük boyutlu yoğun vektörlerle temsil etmektir. Daha sonra anlamlı kelime gömülü temsillerinin nasıl oluşturulacağını tartışacağız, ancak şimdilik gömülü temsilleri bir kelime vektörünün boyutunu düşürmenin bir yolu olarak düşünebiliriz. -Bu nedenle, gömme katmanı bir kelimeyi girdi olarak alır ve belirli bir `embedding_size` uzunluğunda bir çıktı vektörü üretir. Bir anlamda, bu, `Linear` katmanına çok benzer, ancak bir one-hot kodlanmış vektör almak yerine, bir kelime numarasını girdi olarak alabilir, bu da büyük one-hot kodlanmış vektörler oluşturmaktan kaçınmamızı sağlar. +Bu nedenle, gömülü katman bir kelimeyi giriş olarak alır ve belirtilen `embedding_size` boyutunda bir çıktı vektörü üretir. Bir anlamda, bu bir `Linear` katmana çok benzer, ancak tekil kodlanmış bir vektör almak yerine, bir kelime numarasını giriş olarak alabilir, böylece büyük tekil kodlanmış vektörler oluşturmaktan kaçınmamızı sağlar. -Sınıflandırıcı ağımızda gömme katmanını ilk katman olarak kullanarak, kelime torbasından **gömme torbası** modeline geçiş yapabiliriz; burada metnimizdeki her kelimeyi karşılık gelen gömme ile dönüştürüyor ve ardından `sum`, `average` veya `max` gibi tüm bu gömmeler üzerinde bazı toplama fonksiyonları hesaplıyoruz. +Sınıflandırıcı ağımızda ilk katman olarak bir gömülü katman kullanarak, kelime torbasından **gömülü torba** modeline geçebiliriz. Bu modelde, önce metnimizdeki her kelimeyi ilgili gömülü temsile dönüştürürüz ve ardından bu gömülü temsillerin tümü üzerinde `sum`, `average` veya `max` gibi bir toplama fonksiyonu hesaplarız. -![Beş sıralı kelime için bir gömme sınıflandırıcısını gösteren bir resim.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.tr.png) +![Beş kelimelik bir dizi için bir gömülü sınıflandırıcıyı gösteren görsel.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.tr.png) -> Resim yazar tarafından hazırlanmıştır. +> Görsel yazar tarafından oluşturulmuştur -## ✍️ Alıştırmalar: Gömme +## ✍️ Alıştırmalar: Gömülü Temsiller -Aşağıdaki not defterlerinde öğrenmeye devam edin: -* [PyTorch ile Gömme](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [TensorFlow ile Gömme](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +Aşağıdaki defterlerde öğrenmeye devam edin: +* [PyTorch ile Gömülü Temsiller](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow ile Gömülü Temsiller](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) -## Anlamsal Gömme: Word2Vec +## Anlamsal Gömülü Temsiller: Word2Vec -Gömme katmanı kelimeleri vektör temsilcisine haritalamayı öğrenirken, bu temsilin mutlaka çok fazla anlamsal anlamı yoktu. Benzer kelimelerin veya eşanlamlıların, bazı vektör mesafesi (örneğin, Öklid mesafesi) açısından birbirine yakın vektörlere karşılık geldiği bir vektör temsilini öğrenmek güzel olurdu. +Gömülü katman kelimeleri vektör temsiline eşlemeyi öğrenirken, bu temsilin mutlaka çok fazla anlamsal anlamı olmayabilir. Benzer kelimelerin veya eşanlamlıların, bazı vektör mesafeleri (ör. Öklid mesafesi) açısından birbirine yakın olan vektörlere karşılık geldiği bir vektör temsili öğrenmek güzel olurdu. -Bunu yapmak için, gömme modelimizi belirli bir şekilde büyük bir metin koleksiyonu üzerinde önceden eğitmemiz gerekiyor. Anlamsal gömmeleri eğitmenin bir yolu [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) olarak adlandırılır. Bu, kelimelerin dağıtılmış bir temsilini üretmek için kullanılan iki ana mimariye dayanır: +Bunu yapmak için, gömülü modelimizi büyük bir metin koleksiyonu üzerinde belirli bir şekilde önceden eğitmemiz gerekir. Anlamsal gömülü temsilleri eğitmenin bir yolu [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) olarak adlandırılır. Bu yöntem, kelimelerin dağıtılmış bir temsilini üretmek için kullanılan iki ana mimariye dayanır: - - **Sürekli kelime torbası** (CBoW) — bu mimaride, modeli çevresindeki bağlamdan bir kelimeyi tahmin etmek için eğitiyoruz. ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ verildiğinde, modelin amacı $(W_{-2},W_{-1},W_1,W_2)$'den $W_0$'ı tahmin etmektir. - - **Sürekli skip-gram**, CBoW'nun tersidir. Model, mevcut kelimeyi tahmin etmek için çevresindeki bağlam kelimelerinin penceresini kullanır. + - **Sürekli kelime torbası** (CBoW) — Bu mimaride, model çevredeki bağlamdan bir kelime tahmin etmek için eğitilir. $$(W_{-2},W_{-1},W_0,W_1,W_2)$$ ngram'ı verildiğinde, modelin amacı $W_0$'ı $$(W_{-2},W_{-1},W_1,W_2)$$'den tahmin etmektir. + - **Sürekli atlama-gram** CBoW'un tersidir. Model, bağlam kelimelerinin çevresindeki pencereyi kullanarak mevcut kelimeyi tahmin eder. -CBoW daha hızlıdır, oysa skip-gram daha yavaştır, ancak nadir kelimeleri temsil etme konusunda daha iyi bir iş çıkarır. +CBoW daha hızlıdır, ancak atlama-gram daha yavaştır ve nadir kelimeleri temsil etmede daha iyidir. -![Kelimeleri vektörlere dönüştürmek için hem CBoW hem de Skip-Gram algoritmalarını gösteren bir resim.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png) +![Kelimeleri vektörlere dönüştürmek için hem CBoW hem de Skip-Gram algoritmalarını gösteren görsel.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png) -> Resim [bu makaleden](https://arxiv.org/pdf/1301.3781.pdf) alınmıştır. +> Görsel [bu makaleden](https://arxiv.org/pdf/1301.3781.pdf) alınmıştır -Word2Vec önceden eğitilmiş gömmeleri (ve GloVe gibi diğer benzer modeller) sinir ağlarındaki gömme katmanının yerinde de kullanılabilir. Ancak, kelime dağarcıkları ile ilgilenmemiz gerekiyor, çünkü Word2Vec/GloVe'yi önceden eğitmek için kullanılan kelime dağarcığı, metin koleksiyonumuzdaki kelime dağarcığından farklı olabilir. Bu sorunun nasıl çözülebileceğini görmek için yukarıdaki not defterlerine göz atın. +Word2Vec önceden eğitilmiş gömülü temsilleri (GloVe gibi diğer benzer modellerle birlikte) sinir ağlarındaki gömülü katman yerine de kullanılabilir. Ancak, kelime dağarcıklarıyla başa çıkmamız gerekir, çünkü Word2Vec/GloVe'yi önceden eğitmek için kullanılan kelime dağarcığı, metin korpusumuzdaki kelime dağarcığından farklı olabilir. Bu sorunun nasıl çözülebileceğini görmek için yukarıdaki defterlere göz atın. -## Bağlamsal Gömme +## Bağlama Dayalı Gömülü Temsiller -Word2Vec gibi geleneksel önceden eğitilmiş gömme temsillerinin bir ana sınırlaması, kelime anlamı ayrımını yapma problemidir. Önceden eğitilmiş gömmeler, kelimelerin bağlam içindeki anlamlarının bir kısmını yakalayabilse de, bir kelimenin her olası anlamı aynı gömme içinde kodlanır. Bu, birçok kelimenin, örneğin 'play' kelimesinin, kullanıldığı bağlama bağlı olarak farklı anlamları olduğu için, aşağı akış modellerinde sorunlara neden olabilir. +Word2Vec gibi geleneksel önceden eğitilmiş gömülü temsil yöntemlerinin temel sınırlamalarından biri, kelime anlamı ayrımı problemidir. Önceden eğitilmiş gömülü temsiller, kelimelerin bağlamdaki anlamlarının bir kısmını yakalayabilse de, bir kelimenin her olası anlamı aynı gömülü temsile kodlanır. Bu, 'play' gibi birçok kelimenin kullanıldıkları bağlama bağlı olarak farklı anlamlara sahip olması nedeniyle, aşağı akış modellerinde sorunlara neden olabilir. -Örneğin, 'play' kelimesi bu iki farklı cümlede oldukça farklı anlamlar taşır: +Örneğin, 'play' kelimesi şu iki farklı cümlede oldukça farklı anlamlara sahiptir: -- Tiyatroda bir **oyun** izlemeye gittim. +- Tiyatroda bir **oyun** izledim. - John arkadaşlarıyla **oynamak** istiyor. -Yukarıdaki önceden eğitilmiş gömmeler, 'play' kelimesinin bu iki anlamını da aynı gömme içinde temsil eder. Bu sınırlamanın üstesinden gelmek için, büyük bir metin koleksiyonu üzerinde eğitilen ve kelimelerin farklı bağlamlarda nasıl bir araya getirileceğini *bilen* **dil modeli** tabanlı gömmeler oluşturmamız gerekiyor. Bağlamsal gömmeleri tartışmak bu eğitimin kapsamı dışında, ancak daha sonra dil modellerinden bahsederken onlara geri döneceğiz. +Yukarıdaki önceden eğitilmiş gömülü temsiller, 'play' kelimesinin her iki anlamını da aynı gömülü temsilde ifade eder. Bu sınırlamayı aşmak için, büyük bir metin korpusu üzerinde eğitilmiş ve kelimelerin farklı bağlamlarda nasıl bir araya getirilebileceğini *bilen* bir **dil modeli** temelinde gömülü temsiller oluşturmamız gerekir. Bağlama dayalı gömülü temsilleri tartışmak bu dersin kapsamı dışındadır, ancak kursun ilerleyen bölümlerinde dil modellerini ele alırken bu konuya geri döneceğiz. ## Sonuç -Bu derste, TensorFlow ve Pytorch'ta gömme katmanları oluşturmayı ve kullanmayı öğrendiniz; bu sayede kelimelerin anlamsal anlamlarını daha iyi yansıtabilirsiniz. +Bu derste, kelimelerin anlamsal anlamlarını daha iyi yansıtmak için TensorFlow ve PyTorch'ta gömülü katmanların nasıl oluşturulacağını ve kullanılacağını keşfettiniz. -## 🚀 Zorluk +## 🚀 Meydan Okuma -Word2Vec, şarkı sözleri ve şiir üretimi gibi bazı ilginç uygulamalar için kullanılmıştır. Yazarın Word2Vec kullanarak şiir nasıl ürettiğini anlatan [bu makaleye](https://www.politetype.com/blog/word2vec-color-poems) göz atın. Ayrıca, bu tekniğin farklı bir açıklamasını keşfetmek için [Dan Shiffmann'ın bu videosunu](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) izleyin. Ardından, bu teknikleri kendi metin koleksiyonunuza uygulamayı deneyin; belki Kaggle'dan elde ettiğiniz verilerle. +Word2Vec, şarkı sözleri ve şiir oluşturma gibi ilginç uygulamalar için kullanılmıştır. Yazarın Word2Vec'i kullanarak şiir oluşturma sürecini anlattığı [bu makaleye](https://www.politetype.com/blog/word2vec-color-poems) göz atın. Ayrıca, bu tekniğin farklı bir açıklamasını keşfetmek için Dan Shiffmann'ın [bu videosunu](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) izleyin. Ardından, bu teknikleri kendi metin korpusunuza uygulamayı deneyin, belki Kaggle'dan bir kaynak kullanabilirsiniz. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -Word2Vec hakkında [Vektör Uzayında Kelime Temsillerinin Verimli Tahmini](https://arxiv.org/pdf/1301.3781.pdf) başlıklı bu makaleyi okuyun. +Word2Vec ile ilgili bu makaleyi okuyun: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) -## [Ödev: Not Defterleri](assignment.md) +## [Ödev: Defterler](assignment.md) -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md b/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md index e7568d33..474fc196 100644 --- a/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ -# Görev: Not Defterleri + +# Ödev: Not Defterleri -Bu derse ait not defterlerini (ister PyTorch ister TensorFlow versiyonu) kendi veri setinizle tekrar çalıştırın; belki de atıf ile kullanılan bir Kaggle veri seti. Not defterini, kendi bulgularınızı vurgulamak için yeniden yazın. Farklı bir veri seti deneyin ve bulgularınızı, [bu Beatles şarkı sözleri](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) gibi metinler kullanarak belgeleyin. +Bu derse ait not defterlerini (PyTorch veya TensorFlow versiyonlarından birini) kullanarak, kendi veri setinizle yeniden çalıştırın. Örneğin, Kaggle'dan bir veri seti alabilir ve uygun şekilde kaynak belirterek kullanabilirsiniz. Not defterini kendi bulgularınızı vurgulayacak şekilde yeniden yazın. Farklı bir tür veri seti deneyin ve bulgularınızı belgeleyin, [bu Beatles şarkı sözleri](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) gibi metinler kullanarak. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md b/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md index 625533df..0499688c 100644 --- a/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ -# Dil Modelleme + +# Dil Modellemesi -Anlam gömme yöntemleri, Word2Vec ve GloVe gibi, aslında **dil modelleme** için bir ilk adımdır - dilin doğasını bir şekilde *anlayan* (veya *temsil eden*) modeller oluşturmak. +Word2Vec ve GloVe gibi anlamsal gömme yöntemleri aslında **dil modellemesine** doğru atılmış ilk adımdır - dilin doğasını bir şekilde *anlayan* (veya *temsil eden*) modeller oluşturmak. -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -Dil modellemenin arkasındaki temel fikir, etiketlenmemiş veri setleri üzerinde denetimsiz bir şekilde eğitim yapmaktır. Bu önemlidir çünkü elimizde büyük miktarda etiketlenmemiş metin bulunmaktadır, oysa etiketlenmiş metin miktarı her zaman etiketleme için harcayabileceğimiz çaba ile sınırlı olacaktır. Genellikle, metindeki **eksik kelimeleri tahmin edebilen** dil modelleri oluşturabiliriz, çünkü metinde rastgele bir kelimeyi maskeleyip bunu bir eğitim örneği olarak kullanmak kolaydır. +Dil modellemesinin temel fikri, modelleri etiketlenmemiş veri kümeleri üzerinde gözetimsiz bir şekilde eğitmektir. Bu önemlidir çünkü elimizde büyük miktarda etiketlenmemiş metin bulunurken, etiketlenmiş metin miktarı her zaman etiketleme için harcayabileceğimiz çabayla sınırlı olacaktır. Çoğu zaman, metindeki **eksik kelimeleri tahmin edebilen** dil modelleri oluşturabiliriz, çünkü metindeki rastgele bir kelimeyi maskelemek ve bunu bir eğitim örneği olarak kullanmak oldukça kolaydır. -## Gömme Eğitimleri +## Gömme Yöntemlerinin Eğitimi -Önceki örneklerimizde, önceden eğitilmiş anlam gömmelerini kullandık, ancak bu gömmelerin nasıl eğitilebileceğini görmek ilginçtir. Kullanılabilecek birkaç olası fikir vardır: +Önceki örneklerimizde, önceden eğitilmiş anlamsal gömme yöntemlerini kullandık, ancak bu gömme yöntemlerinin nasıl eğitilebileceğini görmek ilginçtir. Kullanılabilecek birkaç farklı fikir vardır: -* **N-Gram** dil modelleme, N önceki token'a bakarak bir token'ı tahmin ettiğimiz durumdur (N-gram) -* **Sürekli Kelime Torbası** (CBoW), bir token dizisi $W_{-N}$, ..., $W_N$ içindeki ortadaki token $W_0$'ı tahmin ettiğimiz durumdur. -* **Skip-gram**, ortadaki token $W_0$'dan komşu token'ların {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} bir kümesini tahmin ettiğimiz durumdur. +* **N-Gram** dil modellemesi: Bir belirteci, önceki N belirtece bakarak tahmin ettiğimiz yöntem (N-gram). +* **Sürekli Kelime Çantası** (CBoW): Bir belirteç dizisindeki $W_{-N}$, ..., $W_N$ belirteçleri arasında ortadaki belirteç $W_0$'ı tahmin ettiğimiz yöntem. +* **Skip-gram**: Ortadaki belirteç $W_0$'dan, komşu belirteçler kümesini {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} tahmin ettiğimiz yöntem. -![kelimeleri vektörlere dönüştürme üzerine makaleden bir resim](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png) +![Kelimeleri vektörlere dönüştürme algoritmalarına dair bir makaleden görsel](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png) -> [bu makaleden](https://arxiv.org/pdf/1301.3781.pdf) alınmıştır. +> Görsel [bu makaleden](https://arxiv.org/pdf/1301.3781.pdf) alınmıştır. -## ✍️ Örnek Not Defterleri: CBoW modelini eğitme +## ✍️ Örnek Defterler: CBoW Modeli Eğitimi -Aşağıdaki not defterlerinde öğrenmeye devam edin: +Aşağıdaki defterlerde öğreniminize devam edebilirsiniz: * [TensorFlow ile CBoW Word2Vec Eğitimi](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) * [PyTorch ile CBoW Word2Vec Eğitimi](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) ## Sonuç -Önceki derste, kelime gömmelerinin sihir gibi çalıştığını gördük! Artık kelime gömmelerini eğitmenin çok karmaşık bir görev olmadığını biliyoruz ve gerekirse alan spesifik metinler için kendi kelime gömmelerimizi eğitebilmeliyiz. +Önceki derste, kelime gömmelerinin adeta bir sihir gibi çalıştığını görmüştük! Şimdi ise kelime gömmelerini eğitmenin çok karmaşık bir iş olmadığını biliyoruz ve gerekirse alanına özgü metinler için kendi kelime gömmelerimizi eğitebileceğimizi öğrenmiş olduk. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -* [Dil Modelleme üzerine resmi PyTorch eğitimi](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -* [Word2Vec modelini eğitme üzerine resmi TensorFlow eğitimi](https://www.TensorFlow.org/tutorials/text/word2vec). -* En yaygın kullanılan gömmeleri birkaç satır kodla eğitmek için **gensim** çerçevesinin kullanımı [bu belgede](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) açıklanmıştır. +* [PyTorch'un Resmi Dil Modelleme Eğitimi](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [TensorFlow'un Word2Vec Modeli Eğitimi için Resmi Eğitimi](https://www.TensorFlow.org/tutorials/text/word2vec). +* **gensim** çerçevesini kullanarak en yaygın kullanılan gömme yöntemlerini birkaç satır kodla eğitme yöntemi [bu belgede](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) açıklanmıştır. -## 🚀 [Görev: Skip-Gram Modelini Eğit](lab/README.md) +## 🚀 [Görev: Skip-Gram Modeli Eğitin](lab/README.md) -Laboratuvar çalışmasında, bu dersten aldığınız kodu CBoW yerine skip-gram modelini eğitmek için değiştirmenizi istiyoruz. [Detayları okuyun](lab/README.md) +Laboratuvarda, bu dersteki kodu değiştirerek CBoW yerine skip-gram modeli eğitmenizi istiyoruz. [Detayları okuyun](lab/README.md). -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md index 0de4cb1f..773b7f0d 100644 --- a/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# Eğitim Skip-Gram Modeli + +# Skip-Gram Modelini Eğitme -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) dersinden laboratuvar ödevi. +[AI for Beginners Müfredatı](https://github.com/microsoft/ai-for-beginners) tarafından hazırlanan laboratuvar ödevi. ## Görev -Bu laboratuvar çalışmasında, size Word2Vec modelini Skip-Gram tekniği kullanarak eğitme challenge'ı veriyoruz. $N$-token genişliğinde bir Skip-Gram penceresinde komşu kelimeleri tahmin etmek için gömme ile bir ağ eğitin. Bu dersten [bu kodu](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) kullanabilir ve biraz değiştirebilirsiniz. +Bu laboratuvarda, sizden Skip-Gram tekniğini kullanarak Word2Vec modelini eğitmeniz isteniyor. $N$-token genişliğindeki Skip-Gram penceresinde komşu kelimeleri tahmin etmek için gömme (embedding) içeren bir ağ eğitin. [Bu dersteki kodu](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) kullanabilir ve biraz değiştirebilirsiniz. ## Veri Seti -Herhangi bir kitabı kullanabilirsiniz. [Project Gutenberg](https://www.gutenberg.org/) adresinde birçok ücretsiz metin bulabilirsiniz; örneğin, Lewis Carroll'un [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) adlı eserine doğrudan bağlantı. Ya da, aşağıdaki kodu kullanarak Shakespeare'in oyunlarını edinebilirsiniz: +Herhangi bir kitabı kullanabilirsiniz. [Project Gutenberg](https://www.gutenberg.org/) sitesinde birçok ücretsiz metin bulabilirsiniz. Örneğin, Lewis Carroll tarafından yazılan [Alice Harikalar Diyarında](https://www.gutenberg.org/files/11/11-0.txt) kitabına doğrudan buradan ulaşabilirsiniz. Alternatif olarak, Shakespeare'in oyunlarını kullanabilirsiniz. Aşağıdaki kodu kullanarak bu oyunlara erişebilirsiniz: ```python path_to_file = tf.keras.utils.get_file( @@ -19,11 +28,11 @@ text = open(path_to_file, 'rb').read().decode(encoding='utf-8') ## Keşfet! -Eğer zamanınız varsa ve konuya daha derinlemesine dalmak istiyorsanız, birkaç şeyi keşfetmeyi deneyin: +Eğer zamanınız varsa ve konuyu daha derinlemesine incelemek istiyorsanız, birkaç şeyi keşfetmeyi deneyin: -* Gömme boyutunun sonuçları nasıl etkilediği? -* Farklı metin stillerinin sonuçları nasıl etkilediği? -* Çok farklı türde kelimeler ve eşanlamlılarını alın, vektör temsillerini elde edin, boyutları 2'ye indirmek için PCA uygulayın ve bunları 2D alanda çizin. Herhangi bir desen görüyor musunuz? +* Gömme boyutunun sonuçları nasıl etkilediğini inceleyin. +* Farklı metin stillerinin sonucu nasıl etkilediğini araştırın. +* Çok farklı türdeki kelimeler ve onların eş anlamlılarını seçin, bu kelimelerin vektör temsillerini elde edin, boyutları 2'ye düşürmek için PCA uygulayın ve bunları 2D uzayda çizin. Herhangi bir desen görüyor musunuz? -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/16-RNN/README.md b/translations/tr/lessons/5-NLP/16-RNN/README.md index 39c3de73..249b7ccb 100644 --- a/translations/tr/lessons/5-NLP/16-RNN/README.md +++ b/translations/tr/lessons/5-NLP/16-RNN/README.md @@ -1,62 +1,71 @@ + # Tekrarlayan Sinir Ağları -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -Önceki bölümlerde, metnin zengin anlamsal temsillerini ve gömme katmanlarının üstünde basit bir doğrusal sınıflayıcı kullanıyorduk. Bu mimari, bir cümledeki kelimelerin toplam anlamını yakalamaya çalışır, ancak kelimelerin **sırasını** dikkate almaz; çünkü gömme katmanları üzerindeki toplama işlemi, bu bilgiyi orijinal metinden çıkarmıştır. Bu modeller kelime sıralamasını modelleyemediğinden, metin üretimi veya soru yanıtlama gibi daha karmaşık veya belirsiz görevleri yerine getiremezler. +Önceki bölümlerde, metinlerin zengin anlamsal temsillerini ve gömme katmanlarının üzerine basit bir doğrusal sınıflandırıcıyı kullandık. Bu mimarinin yaptığı şey, bir cümledeki kelimelerin toplu anlamını yakalamaktır, ancak kelimelerin **sırasını** dikkate almaz, çünkü gömme katmanlarının üzerindeki toplama işlemi bu bilgiyi orijinal metinden kaldırır. Bu modeller kelime sırasını modelleyemediği için, metin üretimi veya soru yanıtlama gibi daha karmaşık veya belirsiz görevleri çözemezler. -Metin dizisinin anlamını yakalamak için, **tekrarlayan sinir ağı** (RNN) adı verilen başka bir sinir ağı mimarisi kullanmamız gerekiyor. RNN'de, cümlemizi bir sembolü bir seferde geçiriyoruz ve ağ, ardından bir **durum** üretiyor; bu durumu bir sonraki sembol ile birlikte tekrar ağa iletiyoruz. +Metin dizisinin anlamını yakalamak için, **tekrarlayan sinir ağı** veya RNN adı verilen başka bir sinir ağı mimarisini kullanmamız gerekir. RNN'de, cümlemizi ağdan bir sembol bir sembol geçiririz ve ağ bir **durum** üretir, bu durumu bir sonraki sembolle birlikte tekrar ağa iletiriz. ![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.tr.png) -> Yazarın resmi +> Görsel: Yazar tarafından oluşturulmuştur -X0,...,Xn token dizisi verildiğinde, RNN bir sinir ağı blokları dizisi oluşturur ve bu diziyi geri yayılım kullanarak uçtan uca eğitir. Her ağ bloğu, bir çift (Xi,Si) alır ve Si+1 olarak bir sonuç üretir. Son durum Sn veya (çıkış Yn) bir doğrusal sınıflayıcıya gider ve sonucu üretir. Tüm ağ blokları aynı ağırlıkları paylaşır ve tek bir geri yayılım geçişi kullanılarak uçtan uca eğitilir. +X0,...,Xn giriş dizi sembolleri verildiğinde, RNN bir sinir ağı blokları dizisi oluşturur ve bu diziyi baştan sona geri yayılım kullanarak eğitir. Her ağ bloğu bir çift (Xi,Si) giriş olarak alır ve sonuç olarak Si+1 üretir. Son durum Sn veya (çıktı Yn), sonucu üretmek için doğrusal bir sınıflandırıcıya gider. Tüm ağ blokları aynı ağırlıkları paylaşır ve tek bir geri yayılım geçişiyle baştan sona eğitilir. -Durum vektörleri S0,...,Sn ağdan geçirilerek, kelimeler arasındaki sıralı bağımlılıkları öğrenebilir. Örneğin, dizide *not* kelimesi geçtiğinde, belirli öğeleri durum vektöründe olumsuzlamak için öğrenebiliriz, bu da olumsuzluk yaratır. +Durum vektörleri S0,...,Sn ağdan geçtiği için, kelimeler arasındaki sıralı bağımlılıkları öğrenebilir. Örneğin, dizide bir yerde *değil* kelimesi geçtiğinde, durum vektöründeki belirli öğeleri olumsuzlamak için öğrenebilir ve bu da olumsuzlama ile sonuçlanır. -> ✅ Yukarıdaki resimdeki tüm RNN bloklarının ağırlıkları paylaşıldığından, aynı resim, ağın çıkış durumunu girdi olarak geri ileten bir tekrarlayan geri besleme döngüsü ile bir blok (sağda) olarak temsil edilebilir. +> ✅ Yukarıdaki resimdeki tüm RNN bloklarının ağırlıkları paylaşıldığından, aynı resim bir geri besleme döngüsü olan tek bir blok (sağda) olarak temsil edilebilir ve ağın çıktı durumunu girişe geri iletir. -## RNN Hücresinin Anatomisi +## Bir RNN Hücresinin Anatomisi -Basit bir RNN hücresinin nasıl organize edildiğine bakalım. Önceki durum Si-1 ve mevcut sembol Xi olarak girdileri kabul eder ve çıkış durumu Si üretmelidir (ve bazen, üretken ağlarla olduğu gibi, başka bir çıkış Yi ile de ilgileniyoruz). +Basit bir RNN hücresinin nasıl organize edildiğini görelim. Önceki durum Si-1 ve mevcut sembol Xi'yi giriş olarak alır ve çıktı durumu Si'yi üretmek zorundadır (ve bazen, üretici ağlarda olduğu gibi, başka bir çıktı Yi ile de ilgileniriz). -Basit bir RNN hücresinin içinde iki ağırlık matris vardır: biri bir giriş sembolünü dönüştürür (buna W diyelim), diğeri ise bir giriş durumunu dönüştürür (H). Bu durumda, ağın çıktısı σ(W×Xi+H×Si-1+b) olarak hesaplanır; burada σ aktivasyon fonksiyonu ve b ek bir önyargıdır. +Basit bir RNN hücresinin içinde iki ağırlık matrisi vardır: biri bir giriş sembolünü dönüştürür (W olarak adlandıralım) ve diğeri bir giriş durumunu dönüştürür (H). Bu durumda ağın çıktısı σ(W×Xi+H×Si-1+b) olarak hesaplanır, burada σ aktivasyon fonksiyonu ve b ek bir yanlılıktır. -RNN Hücre Anatomisi +RNN Hücresi Anatomisi -> Yazarın resmi +> Görsel: Yazar tarafından oluşturulmuştur -Birçok durumda, giriş tokenları RNN'ye girmeden önce gömme katmanından geçirilir, bu da boyutu azaltır. Bu durumda, giriş vektörlerinin boyutu *emb_size* ve durum vektörü *hid_size* ise, W'nin boyutu *emb_size*×*hid_size* ve H'nin boyutu *hid_size*×*hid_size* olur. +Çoğu durumda, giriş sembolleri RNN'ye girmeden önce boyutları düşürmek için gömme katmanından geçirilir. Bu durumda, eğer giriş vektörlerinin boyutu *emb_size* ve durum vektörünün boyutu *hid_size* ise - W'nin boyutu *emb_size*×*hid_size*, H'nin boyutu ise *hid_size*×*hid_size* olur. ## Uzun Kısa Süreli Bellek (LSTM) -Klasik RNN'lerin en büyük problemlerinden biri, sözde **kaybolan gradyanlar** problemidir. RNN'ler, tek bir geri yayılım geçişinde uçtan uca eğitildiğinden, hatayı ağın ilk katmanlarına iletmekte zorluk çeker ve dolayısıyla ağ, uzak tokenlar arasındaki ilişkileri öğrenemez. Bu problemi aşmanın yollarından biri, **açık durum yönetimi** sağlamak için sözde **kapılar** kullanmaktır. Bu türde iki iyi bilinen mimari vardır: **Uzun Kısa Süreli Bellek** (LSTM) ve **Kapalı Röle Birimi** (GRU). +Klasik RNN'lerin ana problemlerinden biri, **kaybolan gradyanlar** problemidir. RNN'ler tek bir geri yayılım geçişinde baştan sona eğitildiği için, hatayı ağın ilk katmanlarına iletmekte zorlanır ve bu nedenle ağ, uzak semboller arasındaki ilişkileri öğrenemez. Bu sorunu önlemenin bir yolu, **kapılar** kullanarak **açık durum yönetimi** tanıtmaktır. Bu tür iki iyi bilinen mimari vardır: **Uzun Kısa Süreli Bellek** (LSTM) ve **Kapılı Röle Birimi** (GRU). -![Uzun Kısa Süreli Bellek hücresini gösteren bir resim](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Bir uzun kısa süreli bellek hücresi örneğini gösteren görsel](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) -> Resim kaynağı TBD +> Görsel kaynağı belirlenecek -LSTM Ağı, RNN'e benzer bir şekilde organize edilmiştir, ancak katmanlar arasında geçirilen iki durum vardır: gerçek durum C ve gizli vektör H. Her birimde, gizli vektör Hi, giriş Xi ile birleştirilir ve durum C üzerindeki etkilerini **kapılar** aracılığıyla kontrol ederler. Her kapı, sigmoid aktivasyona sahip bir sinir ağıdır (çıkış [0,1] aralığında), bu da durum vektörü ile çarpıldığında bit düzeyinde bir maske olarak düşünülebilir. Yukarıdaki resimde soldan sağa doğru şu kapılar vardır: +LSTM Ağı, RNN'ye benzer bir şekilde organize edilmiştir, ancak katmandan katmana geçen iki durum vardır: gerçek durum C ve gizli vektör H. Her birimde, gizli vektör Hi, giriş Xi ile birleştirilir ve bunlar **kapılar** aracılığıyla durum C'de ne olacağını kontrol eder. Her kapı, sigmoid aktivasyonlu (çıktı [0,1] aralığında) bir sinir ağıdır ve durum vektörü ile çarpıldığında bit düzeyinde bir maske olarak düşünülebilir. Aşağıdaki kapılar vardır (yukarıdaki resimde soldan sağa): -* **Unutma kapısı**, bir gizli vektör alır ve vektör C'nin hangi bileşenlerini unutmamız gerektiğini ve hangilerini geçirmemiz gerektiğini belirler. -* **Giriş kapısı**, giriş ve gizli vektörlerden bazı bilgileri alır ve bunu duruma ekler. -* **Çıkış kapısı**, durumu *tanh* aktivasyonuna sahip bir doğrusal katman aracılığıyla dönüştürür, ardından yeni bir durum Ci+1 üretmek için gizli vektör Hi kullanarak bazı bileşenlerini seçer. +* **Unutma kapısı**, bir gizli vektör alır ve C vektörünün hangi bileşenlerini unutmamız gerektiğini ve hangilerini geçirmemiz gerektiğini belirler. +* **Giriş kapısı**, giriş ve gizli vektörlerden bazı bilgileri alır ve duruma ekler. +* **Çıkış kapısı**, durumu *tanh* aktivasyonlu bir doğrusal katman aracılığıyla dönüştürür, ardından yeni bir durum Ci+1 üretmek için gizli vektör Hi'yi kullanarak bazı bileşenlerini seçer. -Durum C'nin bileşenleri, açılıp kapanabilen bazı bayraklar olarak düşünülebilir. Örneğin, dizide *Alice* adını bulduğumuzda, bunun bir kadın karakteri ifade ettiğini varsayabiliriz ve cümlede bir kadın isim olduğu bayrağını açarız. Daha sonra *and Tom* ifadeleri ile karşılaştığımızda, çoğul bir isim olduğuna dair bayrağı açarız. Böylece durumu manipüle ederek cümle parçalarının dilbilgisel özelliklerini takip edebiliriz. +Durum C'nin bileşenleri, açılıp kapatılabilen bayraklar olarak düşünülebilir. Örneğin, dizide *Alice* adında bir isimle karşılaştığımızda, bunun bir kadın karaktere atıfta bulunduğunu varsaymak ve cümlede bir kadın isim olduğunu belirten bayrağı kaldırmak isteyebiliriz. Daha sonra *ve Tom* ifadeleriyle karşılaştığımızda, çoğul bir isim olduğunu belirten bayrağı kaldırabiliriz. Böylece, durumu manipüle ederek cümlenin gramer özelliklerini takip edebiliriz. -> ✅ LSTM'nin iç işleyişini anlamak için harika bir kaynak, Christopher Olah tarafından yazılmış [LSTM Ağlarını Anlamak](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) adlı makaledir. +> ✅ LSTM'nin iç işleyişini anlamak için mükemmel bir kaynak, Christopher Olah'ın [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) adlı harika makalesidir. -## İki Yönlü ve Çok Katmanlı RNN'ler +## Çift Yönlü ve Çok Katmanlı RNN'ler -Bir dizinin başlangıcından sonuna doğru tek yönde çalışan tekrarlayan ağları tartıştık. Bu doğal görünmektedir, çünkü okumaya ve konuşmayı dinlemeye benzer. Ancak, birçok pratik durumda girdi dizisine rastgele erişimimiz olduğundan, tekrarlayan hesaplamayı her iki yönde de çalıştırmak mantıklı olabilir. Bu tür ağlara **iki yönlü** RNN'ler denir. İki yönlü bir ağla çalışırken, her yön için iki gizli durum vektörüne ihtiyacımız olacaktır. +Bir dizinin başından sonuna doğru çalışan tekrarlayan ağları tartıştık. Bu doğal görünüyor, çünkü okuma ve konuşmayı dinleme şeklimize benziyor. Ancak, birçok pratik durumda giriş dizisine rastgele erişimimiz olduğu için, tekrarlayan hesaplamayı her iki yönde de çalıştırmak mantıklı olabilir. Bu tür ağlara **çift yönlü** RNN'ler denir. Çift yönlü bir ağla çalışırken, her yön için birer gizli durum vektörüne ihtiyacımız olacaktır. -Bir Tekrarlayan ağ, ister tek yönlü ister iki yönlü olsun, bir dizideki belirli kalıpları yakalar ve bunları bir durum vektöründe depolayabilir veya çıkışa iletebilir. Konvolüsyonel ağlarla olduğu gibi, ilk katmanın çıkışından daha yüksek düzeyde kalıpları yakalamak ve ilk katmanın çıkardığı düşük düzey kalıplardan inşa etmek için üstte başka bir tekrarlayan katman oluşturabiliriz. Bu, **çok katmanlı RNN** kavramına götürür; bu, bir önceki katmanın çıktısının bir sonraki katmana girdi olarak iletildiği iki veya daha fazla tekrarlayan ağdan oluşur. +Tek yönlü veya çift yönlü bir tekrarlayan ağ, bir dizideki belirli kalıpları yakalar ve bunları bir durum vektörüne depolayabilir veya çıktıya aktarabilir. Konvolüsyonel ağlarda olduğu gibi, ilk katman tarafından çıkarılan düşük seviyeli kalıplardan daha yüksek seviyeli kalıpları yakalamak ve inşa etmek için ilk katmanın üzerine başka bir tekrarlayan katman inşa edebiliriz. Bu bizi, önceki katmanın çıktısının bir sonraki katmana giriş olarak geçtiği iki veya daha fazla tekrarlayan ağdan oluşan bir **çok katmanlı RNN** kavramına götürür. -![Çok Katmanlı uzun-kısa süreli bellek RNN'yi gösteren bir resim](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.tr.jpg) +![Çok katmanlı uzun kısa süreli bellek RNN'yi gösteren görsel](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.tr.jpg) -*Resim [bu harika yazıdan](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) Fernando López tarafından alınmıştır.* +*[Bu harika gönderiden](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) alınan resim, Fernando López tarafından yazılmıştır.* -## ✍️ Alıştırmalar: Gömme +## ✍️ Alıştırmalar: Gömme Katmanları Aşağıdaki defterlerde öğrenmeye devam edin: @@ -65,22 +74,23 @@ Aşağıdaki defterlerde öğrenmeye devam edin: ## Sonuç -Bu birimde, RNN'lerin dizi sınıflandırması için kullanılabileceğini gördük, ancak aslında metin üretimi, makine çevirisi ve daha fazlası gibi birçok başka görevi de yerine getirebilirler. Bu görevleri bir sonraki birimde ele alacağız. +Bu birimde, RNN'lerin dizi sınıflandırması için kullanılabileceğini gördük, ancak aslında metin üretimi, makine çevirisi ve daha fazlası gibi birçok görevi yerine getirebilirler. Bu görevleri bir sonraki birimde ele alacağız. ## 🚀 Zorluk LSTM'ler hakkında bazı literatürleri okuyun ve uygulamalarını düşünün: -- [Grid Uzun Kısa Süreli Bellek](https://arxiv.org/pdf/1507.01526v1.pdf) -- [Göster, Katıl ve Söyle: Görsel Dikkat ile Sinirsel Görüntü Başlığı Üretimi](https://arxiv.org/pdf/1502.03044v2.pdf) +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## İnceleme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -- [LSTM Ağlarını Anlamak](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Christopher Olah tarafından. +- Christopher Olah'ın [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) adlı makalesi. ## [Ödev: Defterler](assignment.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/16-RNN/assignment.md b/translations/tr/lessons/5-NLP/16-RNN/assignment.md index a5496d53..3abb8f35 100644 --- a/translations/tr/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/tr/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ -# Görev: Not Defterleri + +# Ödev: Not Defterleri -Bu derse bağlı not defterlerini (ister PyTorch ister TensorFlow versiyonu) kendi veri kümenizle yeniden çalıştırın, belki de atıf yaparak kullandığınız bir Kaggle veri kümesi. Not defterini kendi bulgularınızı vurgulamak için yeniden yazın. Farklı bir tür veri kümesi deneyin ve bulgularınızı belgelerken, [bu Kaggle yarışması veri kümesi hakkında hava durumu tweetleri](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv) gibi metinler kullanın. +Bu derse ait not defterlerini (PyTorch veya TensorFlow versiyonlarından birini) kullanarak, kendi veri setinizle yeniden çalıştırın. Örneğin, Kaggle'dan bir veri seti alabilir ve uygun şekilde kaynak belirterek kullanabilirsiniz. Not defterini kendi bulgularınızı vurgulayacak şekilde yeniden yazın. Farklı bir tür veri seti deneyin ve bulgularınızı belgeleyin, örneğin [bu hava durumu tweetleriyle ilgili Kaggle yarışması veri seti](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv) gibi. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Belgenin orijinal hali, yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md index 84718601..933706ef 100644 --- a/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,35 +1,44 @@ -# Üretken ağlar + +# Üretken Ağlar -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Tekrarlayan Sinir Ağları (RNN'ler) ve Long Short Term Memory Cells (LSTM'ler) ile Gated Recurrent Units (GRU'lar) gibi kapalı hücre varyantları, dil modellemesi için bir mekanizma sağladı; çünkü kelime sıralamasını öğrenebilirler ve bir dizideki bir sonraki kelime için tahminlerde bulunabilirler. Bu, RNN'leri **üretken görevler** için kullanmamıza olanak tanır; örneğin sıradan metin oluşturma, makine çevirisi ve hatta görüntü başlığı oluşturma. +Tekrarlayan Sinir Ağları (RNN'ler) ve Uzun Kısa Süreli Bellek Hücreleri (LSTM'ler) ile Gated Recurrent Units (GRU'ler) gibi kapılı hücre varyantları, dil modelleme için bir mekanizma sağlar. Bu mekanizma, kelime sıralamasını öğrenebilir ve bir dizideki bir sonraki kelime için tahminler sunabilir. Bu, RNN'lerin **üretken görevler** için kullanılmasını sağlar; örneğin, sıradan metin üretimi, makine çevirisi ve hatta görüntü açıklaması. -> ✅ Yazarken metin tamamlama gibi üretken görevlerden faydalandığınız tüm zamanları düşünün. Favori uygulamalarınızda RNN'lerin kullanılıp kullanılmadığını görmek için biraz araştırma yapın. +> ✅ Yazarken metin tamamlama gibi üretken görevlerden faydalandığınız tüm zamanları düşünün. Favori uygulamalarınızın RNN'leri kullanıp kullanmadığını görmek için biraz araştırma yapın. -Önceki biriminde tartıştığımız RNN mimarisinde, her RNN birimi bir sonraki gizli durumu bir çıktı olarak üretmiştir. Ancak, her tekrarlayan birime bir başka çıktı ekleyebiliriz; bu da bize **dizi** (orijinal dizinin uzunluğuna eşit) çıktısı vermemizi sağlar. Ayrıca, her adımda bir giriş kabul etmeyen RNN birimleri kullanabiliriz; sadece bazı başlangıç durumu vektörlerini alır ve ardından bir çıktı dizisi üretebiliriz. +Önceki birimde tartıştığımız RNN mimarisinde, her RNN birimi bir sonraki gizli durumu çıktı olarak üretir. Ancak, her tekrarlayan birime başka bir çıktı ekleyebiliriz, bu da bir **dizi** (orijinal dizinin uzunluğuna eşit) üretmemizi sağlar. Ayrıca, her adımda bir giriş kabul etmeyen ve sadece bir başlangıç durum vektörü alarak bir çıktı dizisi üreten RNN birimleri kullanabiliriz. -Bu, aşağıdaki resimde gösterilen farklı sinir mimarilerine olanak tanır: +Bu, aşağıdaki resimde gösterilen farklı sinir mimarilerini mümkün kılar: -![Yaygın tekrarlayan sinir ağı desenlerini gösteren bir resim.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg) +![Yaygın tekrarlayan sinir ağı desenlerini gösteren resim.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg) -> Resim [Andrej Karpaty](http://karpathy.github.io/) tarafından [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) başlıklı blog yazısından alınmıştır. +> Resim, [Andrej Karpaty](http://karpathy.github.io/) tarafından yazılan [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) blog yazısından alınmıştır. -* **Bir-bir** bir giriş ve bir çıkışı olan geleneksel bir sinir ağıdır. -* **Bir-çok** bir giriş değeri kabul eden ve bir çıktı değeri dizisi üreten üretken bir mimaridir. Örneğin, bir resmi metin olarak tanımlayan bir **görüntü başlığı oluşturma** ağı eğitmek istiyorsak, resmi giriş olarak alabiliriz, bir CNN'den geçirerek gizli durumunu elde edebiliriz ve ardından tekrarlayan bir zincir ile başlık kelimelerini kelime kelime üretebiliriz. -* **Çok-bir** önceki birimde tanımladığımız RNN mimarilerine karşılık gelir, örneğin metin sınıflandırma. -* **Çok-çok**, veya **diziye-dizi** ise **makine çevirisi** gibi görevlerle ilgilidir; burada ilk RNN, giriş dizisinden tüm bilgileri gizli duruma toplar ve başka bir RNN zinciri bu durumu çıktı dizisine açar. +* **Bire bir**: Bir giriş ve bir çıkış ile geleneksel bir sinir ağıdır. +* **Bire çok**: Bir giriş değeri kabul eden ve bir çıktı değerleri dizisi üreten üretken bir mimaridir. Örneğin, bir **görüntü açıklama** ağı eğitmek istiyorsak, bir resmi giriş olarak alabilir, bir CNN'den geçirerek gizli durumunu elde edebilir ve ardından bir tekrarlayan zincir açıklamayı kelime kelime üretebiliriz. +* **Çoktan bire**: Önceki birimde tanımladığımız RNN mimarilerine karşılık gelir, örneğin metin sınıflandırma. +* **Çoktan çoğa** veya **diziden diziye**: **Makine çevirisi** gibi görevlere karşılık gelir. Burada, ilk RNN giriş dizisinden tüm bilgiyi gizli duruma toplar ve başka bir RNN zinciri bu durumu çıktı dizisine açar. -Bu birimde, metin oluşturmaya yardımcı olan basit üretken modellere odaklanacağız. Kolaylık olması açısından, karakter düzeyinde tokenizasyon kullanacağız. +Bu birimde, metin üretmemize yardımcı olan basit üretken modeller üzerine odaklanacağız. Basitlik için karakter düzeyinde tokenizasyon kullanacağız. -Bu RNN'yi adım adım metin üretmesi için eğiteceğiz. Her adımda, `nchars` uzunluğunda bir karakter dizisi alacağız ve ağa her giriş karakteri için bir sonraki çıktı karakterini üretmesini isteyeceğiz: +Bu RNN'yi adım adım metin üretmek için eğiteceğiz. Her adımda, `nchars` uzunluğunda bir karakter dizisi alacağız ve ağdan her giriş karakteri için bir sonraki çıktı karakterini üretmesini isteyeceğiz: -!['HELLO' kelimesinin RNN ile üretilmesini gösteren bir örnek resim.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.tr.png) +![RNN'nin 'HELLO' kelimesini üretme örneğini gösteren resim.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.tr.png) -Metin oluştururken (çıkarım sırasında), bazı **uyarıcılarla** başlarız; bu, RNN hücrelerinden geçirilerek ara durumunu üretir ve ardından bu durumdan üretim başlar. Bir seferde bir karakter üretiriz ve durumu ve üretilen karakteri bir sonraki RNN hücresine geçirerek bir sonraki karakteri üretiriz; yeterli karakter ürettiğimizdeye kadar devam ederiz. +Metin üretirken (çıkarsama sırasında), bazı **başlangıç noktası** ile başlarız. Bu başlangıç noktası RNN hücrelerinden geçirilerek ara durumu oluşturur ve ardından bu durumdan üretim başlar. Her seferinde bir karakter üretiriz ve durumu ve üretilen karakteri bir sonraki karakteri üretmek için başka bir RNN hücresine geçiririz. Bu işlem yeterli sayıda karakter üretilene kadar devam eder. -> Resim yazar tarafından +> Resim, yazar tarafından oluşturulmuştur. ## ✍️ Alıştırmalar: Üretken Ağlar @@ -38,42 +47,42 @@ Aşağıdaki not defterlerinde öğrenmeye devam edin: * [PyTorch ile Üretken Ağlar](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) * [TensorFlow ile Üretken Ağlar](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) -## Yumuşak metin oluşturma ve sıcaklık +## Yumuşak Metin Üretimi ve Sıcaklık -Her RNN hücresinin çıktısı, karakterlerin bir olasılık dağılımıdır. Eğer her zaman en yüksek olasılığa sahip karakteri üretilen metindeki bir sonraki karakter olarak alırsak, metin genellikle aynı karakter dizileri arasında "dönmeye" başlayabilir; bu örnekte olduğu gibi: +Her RNN hücresinin çıktısı bir karakter olasılık dağılımıdır. Eğer üretilen metindeki bir sonraki karakter olarak her zaman en yüksek olasılığa sahip karakteri seçersek, metin genellikle aynı karakter dizileri arasında "dönmeye" başlayabilir, aşağıdaki örnekte olduğu gibi: ``` today of the second the company and a second the company ... ``` -Ancak, bir sonraki karakterin olasılık dağılımına baktığımızda, en yüksek birkaç olasılık arasındaki farkın çok büyük olmayabileceği durumlar vardır; örneğin, bir karakterin olasılığı 0.2, diğerinin 0.19 olabilir. Örneğin, '*play*' dizisinde bir sonraki karakter, ya boşluk ya da **e** (örneğin *player* kelimesinde olduğu gibi) olabilir. +Ancak, bir sonraki karakter için olasılık dağılımına bakarsak, en yüksek olasılıklardan birkaçının arasındaki farkın büyük olmadığını görebiliriz. Örneğin, bir karakterin olasılığı 0.2, diğerinin ise 0.19 olabilir. Örneğin, '*play*' dizisindeki bir sonraki karakter, boşluk veya **e** (kelime *player*'daki gibi) olabilir. -Bu, daha yüksek olasılığa sahip karakteri seçmenin her zaman "adil" olmadığını sonucuna götürür; çünkü ikinci en yüksek olanı seçmek de anlamlı bir metne yol açabilir. **Olasılık dağılımından** karakterler **örneklemek** daha akıllıcadır. Ayrıca, daha fazla rastgelelik eklemek istiyorsak olasılık dağılımını düzleştirecek bir parametre, **sıcaklık** kullanabiliriz; ya da en yüksek olasılığa sahip karakterlere daha fazla bağlı kalmak istiyorsak daha dik bir hale getirebiliriz. +Bu, her zaman en yüksek olasılığa sahip karakteri seçmenin "adil" olmadığını gösterir, çünkü ikinci en yüksek olasılığa sahip karakteri seçmek de anlamlı bir metin oluşturabilir. Daha akıllıca bir yaklaşım, ağ çıktısının verdiği olasılık dağılımından karakterleri **örneklemek** olacaktır. Ayrıca, olasılık dağılımını düzleştirmek veya daha dik hale getirmek için **sıcaklık** adlı bir parametre kullanabiliriz. Bu, daha fazla rastgelelik eklemek veya en yüksek olasılıklı karakterlere daha fazla bağlı kalmak istediğimizde işe yarar. -Bu yumuşak metin oluşturmanın yukarıda bağlantılı not defterlerinde nasıl uygulandığını keşfedin. +Bu yumuşak metin üretiminin yukarıdaki not defterlerinde nasıl uygulandığını keşfedin. ## Sonuç -Metin oluşturma kendi başına yararlı olsa da, asıl faydalar, RNN'ler kullanarak bazı başlangıç özellik vektörlerinden metin üretebilme yeteneğinden gelir. Örneğin, metin oluşturma, makine çevirisinin bir parçası olarak kullanılır (bu durumda *encoder*'dan gelen durum vektörü, çevrilen mesajı üretmek veya *decode* etmek için kullanılır) veya bir görüntünün metinsel tanımını oluşturma (bu durumda özellik vektörü CNN çıkarıcısından gelir). +Metin üretimi kendi başına faydalı olabilir, ancak asıl avantajlar, RNN'ler kullanılarak bir başlangıç özellik vektöründen metin üretme yeteneğinden gelir. Örneğin, metin üretimi makine çevirisinin bir parçası olarak kullanılır (diziden diziye, bu durumda *kodlayıcı*dan gelen durum vektörü çevrilen mesajı üretmek veya *çözmek* için kullanılır) veya bir görüntünün metinsel açıklamasını üretmek için kullanılır (bu durumda özellik vektörü CNN çıkarıcısından gelir). -## 🚀 Zorluk +## 🚀 Meydan Okuma -Bu konuda Microsoft Learn'da bazı dersler alın +Bu konuyla ilgili Microsoft Learn'de bazı dersler alın: -* Metin Oluşturma ile [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) ile Metin Üretimi -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## Gözden Geçirme & Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Bilgilerinizi genişletmek için bazı makaleler +Bilginizi genişletmek için bazı makaleler: -* Markov Zinciri, LSTM ve GPT-2 ile metin oluşturmanın farklı yaklaşımları: [blog yazısı](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) -* [Keras belgelerinde](https://keras.io/examples/generative/lstm_character_level_text_generation/) metin oluşturma örneği +* Markov Zinciri, LSTM ve GPT-2 ile metin üretimine farklı yaklaşımlar: [blog yazısı](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras dokümantasyonu](https://keras.io/examples/generative/lstm_character_level_text_generation/) içinde metin üretim örneği -## [Görev](lab/README.md) +## [Ödev](lab/README.md) -Karakter karakter metin oluşturmanın nasıl yapıldığını gördük. Laboratuvar ortamında, kelime düzeyinde metin oluşturmayı keşfedeceksiniz. +Metni karakter karakter nasıl üreteceğimizi gördük. Laboratuvarda, kelime düzeyinde metin üretimini keşfedeceksiniz. -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 3321c0f6..aaae6b63 100644 --- a/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ -# RNN'ler ile Kelime Düzeyinde Metin Üretimi + +# Kelime Düzeyinde Metin Üretimi RNN'ler Kullanılarak -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) içinden Laboratuvar Görevi. +[AI for Beginners Müfredatı](https://github.com/microsoft/ai-for-beginners) kapsamında bir laboratuvar çalışması. ## Görev -Bu laboratuvarda, herhangi bir kitabı almanız ve bunu kelime düzeyinde metin üreteci eğitmek için bir veri seti olarak kullanmanız gerekiyor. +Bu laboratuvar çalışmasında, herhangi bir kitabı alıp, kelime düzeyinde metin üreteci eğitmek için veri seti olarak kullanmanız gerekiyor. ## Veri Seti -Herhangi bir kitabı kullanmakta özgürsünüz. [Project Gutenberg](https://www.gutenberg.org/) adresinde birçok ücretsiz metin bulabilirsiniz. Örneğin, Lewis Carroll'un [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) kitabına doğrudan bağlantı burada. +Herhangi bir kitabı kullanabilirsiniz. [Project Gutenberg](https://www.gutenberg.org/) üzerinde birçok ücretsiz metin bulabilirsiniz. Örneğin, Lewis Carroll tarafından yazılmış [Alice Harikalar Diyarında](https://www.gutenberg.org/files/11/11-0.txt) kitabına doğrudan buradan ulaşabilirsiniz. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/18-Transformers/README.md b/translations/tr/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..40c8b44f --- /dev/null +++ b/translations/tr/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Dikkat Mekanizmaları ve Transformerlar + +## [Ders Öncesi Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP alanındaki en önemli problemlerden biri, Google Translate gibi araçların temelini oluşturan **makine çevirisi**dir. Bu bölümde, makine çevirisine ya da daha genel olarak herhangi bir *diziden-diziye* (sequence-to-sequence) göreve (bu aynı zamanda **cümle dönüşümü** olarak da adlandırılır) odaklanacağız. + +RNN'lerle, diziden-diziye işlemi iki tekrarlayan ağ ile gerçekleştirilir. Bu ağlardan biri olan **encoder**, bir giriş dizisini gizli bir duruma sıkıştırırken, diğer ağ olan **decoder**, bu gizli durumu çevrilmiş bir sonuca açar. Ancak bu yaklaşımda birkaç sorun vardır: + +* Encoder ağının son durumu, bir cümlenin başlangıcını hatırlamakta zorlanır, bu da uzun cümleler için modelin kalitesinin düşmesine neden olur. +* Bir dizideki tüm kelimeler sonuca aynı etkiyi yapar. Ancak gerçekte, giriş dizisindeki belirli kelimeler genellikle ardışık çıktılar üzerinde diğerlerinden daha fazla etkiye sahiptir. + +**Dikkat Mekanizmaları**, her bir giriş vektörünün RNN'nin her bir çıktı tahmini üzerindeki bağlamsal etkisini ağırlıklandırmanın bir yolunu sağlar. Bu, giriş RNN'sinin ara durumları ile çıkış RNN'si arasında kısayollar oluşturarak uygulanır. Bu şekilde, çıktı sembolü yt'yi oluştururken, farklı ağırlık katsayıları αt,i ile tüm giriş gizli durumlarını hi dikkate alırız. + +![Bir ekleyici dikkat katmanına sahip encoder/decoder modelini gösteren görsel](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.tr.png) + +> [Bahdanau ve diğerleri, 2015](https://arxiv.org/pdf/1409.0473.pdf)'teki ekleyici dikkat mekanizmasına sahip encoder-decoder modeli, [bu blog yazısından](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) alıntılanmıştır. + +Dikkat matrisi {αi,j}, belirli giriş kelimelerinin çıktı dizisindeki bir kelimenin oluşturulmasında ne derece rol oynadığını temsil eder. Aşağıda böyle bir matrisin bir örneği verilmiştir: + +![Bahdanau - arviz.org'dan alınan, RNNsearch-50 tarafından bulunan bir örnek hizalamayı gösteren görsel](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.tr.png) + +> Şekil [Bahdanau ve diğerleri, 2015](https://arxiv.org/pdf/1409.0473.pdf)'ten alınmıştır (Şekil 3) + +Dikkat mekanizmaları, NLP'deki mevcut veya mevcut duruma yakın en iyi performansın büyük bir kısmından sorumludur. Ancak dikkat eklemek, model parametrelerinin sayısını büyük ölçüde artırır ve bu da RNN'lerle ölçekleme sorunlarına yol açar. RNN'lerin ölçeklenmesindeki temel kısıtlama, modellerin tekrarlayıcı doğasının, eğitimi toplu işleme ve paralelleştirme açısından zorlaştırmasıdır. Bir RNN'de bir dizinin her bir öğesi sıralı bir şekilde işlenmelidir, bu da kolayca paralelleştirilemeyeceği anlamına gelir. + +![Dikkatli Encoder Decoder](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Şekil [Google'ın Blogu](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html)'ndan alınmıştır. + +Dikkat mekanizmalarının benimsenmesi ve bu kısıtlama, bugün bildiğimiz ve kullandığımız BERT ve Open-GPT3 gibi en iyi performans gösteren Transformer Modellerinin oluşturulmasına yol açmıştır. + +## Transformer Modelleri + +Transformerların arkasındaki temel fikirlerden biri, RNN'lerin sıralı doğasından kaçınmak ve eğitim sırasında paralelleştirilebilir bir model oluşturmaktır. Bu, iki fikirle gerçekleştirilir: + +* pozisyonel kodlama +* RNN'ler (veya CNN'ler) yerine desenleri yakalamak için kendine dikkat mekanizmasının kullanılması (bu nedenle transformerları tanıtan makale *[Attention is all you need](https://arxiv.org/abs/1706.03762)* olarak adlandırılmıştır) + +### Pozisyonel Kodlama/Gömme + +Pozisyonel kodlama fikri şu şekildedir: +1. RNN'ler kullanıldığında, tokenların göreceli pozisyonu adım sayısıyla temsil edilir ve bu nedenle açıkça temsil edilmesine gerek yoktur. +2. Ancak, dikkate geçtiğimizde, bir dizideki tokenların göreceli pozisyonlarını bilmemiz gerekir. +3. Pozisyonel kodlama elde etmek için, token dizimizi dizideki token pozisyonlarının bir dizisiyle (örneğin, 0,1, ...) genişletiriz. +4. Daha sonra token pozisyonunu bir token gömme vektörüyle karıştırırız. Pozisyonu (tam sayı) bir vektöre dönüştürmek için farklı yaklaşımlar kullanabiliriz: + +* Token gömmeye benzer şekilde eğitilebilir gömme. Burada bu yaklaşımı ele alıyoruz. Hem tokenlar hem de pozisyonları üzerinde gömme katmanları uygularız, aynı boyutlarda gömme vektörleri elde ederiz ve bunları toplarız. +* Orijinal makalede önerildiği gibi sabit pozisyon kodlama fonksiyonu. + + + +> Görsel yazar tarafından oluşturulmuştur. + +Pozisyonel gömme ile elde ettiğimiz sonuç, hem orijinal tokenı hem de dizideki pozisyonunu gömmektir. + +### Çoklu Başlı Kendine Dikkat + +Sonraki adımda, dizimizdeki bazı desenleri yakalamamız gerekir. Bunu yapmak için transformerlar, giriş ve çıkış olarak aynı diziye uygulanan dikkat mekanizması olan **kendine dikkat** mekanizmasını kullanır. Kendine dikkat uygulamak, cümle içindeki **bağlamı** dikkate almamızı ve hangi kelimelerin birbiriyle ilişkili olduğunu görmemizi sağlar. Örneğin, *it* gibi zamirlerin hangi kelimelere atıfta bulunduğunu görmemizi ve bağlamı dikkate almamızı sağlar: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.tr.png) + +> Görsel [Google Blogu](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html)'ndan alınmıştır. + +Transformerlarda, ağın uzun vadeli ve kısa vadeli kelime ilişkileri, eş referanslar gibi farklı bağımlılık türlerini yakalama gücünü artırmak için **Çoklu Başlı Dikkat** kullanılır. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb), transformer katmanlarının uygulanması hakkında daha fazla ayrıntı içerir. + +### Encoder-Decoder Dikkati + +Transformerlarda dikkat iki yerde kullanılır: + +* Giriş metni içindeki desenleri yakalamak için kendine dikkat +* Dizi çevirisi yapmak için - bu, encoder ve decoder arasındaki dikkat katmanıdır. + +Encoder-decoder dikkati, bu bölümün başında RNN'lerde kullanılan dikkat mekanizmasına çok benzerdir. Bu animasyonlu diyagram, encoder-decoder dikkatinin rolünü açıklar. + +![Transformer modellerinde değerlendirmelerin nasıl yapıldığını gösteren animasyonlu GIF.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Her giriş pozisyonu bağımsız olarak her çıkış pozisyonuna eşlendiğinden, transformerlar RNN'lere göre daha iyi paralelleştirilebilir, bu da çok daha büyük ve daha ifade gücü yüksek dil modellerini mümkün kılar. Her dikkat başlığı, kelimeler arasındaki farklı ilişkileri öğrenmek için kullanılabilir ve bu da Doğal Dil İşleme görevlerini geliştirir. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers), *BERT-base* için 12 katmanlı ve *BERT-large* için 24 katmanlı çok büyük bir transformer ağıdır. Model, büyük bir metin veri kümesi (WikiPedia + kitaplar) üzerinde denetimsiz eğitim (bir cümledeki maskelenmiş kelimeleri tahmin etme) kullanılarak önceden eğitilir. Ön eğitim sırasında model, dil anlayışının önemli seviyelerini öğrenir ve bu, diğer veri kümeleriyle ince ayar yapılarak kullanılabilir. Bu işleme **transfer öğrenme** denir. + +![http://jalammar.github.io/illustrated-bert/ adresinden alınan görsel](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.tr.png) + +> Görsel [kaynağı](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Alıştırmalar: Transformerlar + +Aşağıdaki defterlerde öğrenmeye devam edin: + +* [PyTorch ile Transformerlar](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow ile Transformerlar](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Sonuç + +Bu derste Transformerlar ve Dikkat Mekanizmaları hakkında bilgi edindiniz; bunlar NLP araç kutusundaki temel araçlardır. BERT, DistilBERT, BigBird, OpenGPT3 ve daha fazlası gibi birçok Transformer mimarisi varyasyonu vardır ve bunlar ince ayar yapılabilir. [HuggingFace paketi](https://github.com/huggingface/), bu mimarilerin birçoğunu hem PyTorch hem de TensorFlow ile eğitmek için bir depo sağlar. + +## 🚀 Meydan Okuma + +## [Ders Sonrası Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## İnceleme ve Kendi Kendine Çalışma + +* Transformerları açıklayan klasik [Attention is all you need](https://arxiv.org/abs/1706.03762) makalesini açıklayan bir [blog yazısı](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/). +* Transformerları detaylı bir şekilde açıklayan [bir dizi blog yazısı](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452). + +## [Ödev](assignment.md) + +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı bir yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel bir insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/18-Transformers/assignment.md b/translations/tr/lessons/5-NLP/18-Transformers/assignment.md index 2cde6f86..64e2f6e1 100644 --- a/translations/tr/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/tr/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# Görev: Transformers + +# Ödev: Transformers -HuggingFace üzerinde Transformers ile deney yapın! Web sitelerinde mevcut olan çeşitli modellerle çalışmak için sağladıkları bazı betikleri deneyin: https://huggingface.co/docs/transformers/run_scripts. Onların veri setlerinden birini deneyin, ardından bu müfredattan veya Kaggle'dan kendi veri setinizi içe aktarın ve ilginç metinler üretebilir misiniz görün. Bulgularınızı içeren bir not defteri oluşturun. +HuggingFace üzerinde Transformers ile deney yapın! Sitede mevcut olan çeşitli modellerle çalışmak için sağladıkları scriptlerden bazılarını deneyin: https://huggingface.co/docs/transformers/run_scripts. Onların sunduğu bir veri kümesini deneyin, ardından bu müfredattan veya Kaggle'dan kendi veri kümenizi içe aktarın ve ilginç metinler üretebilir misiniz bir bakın. Bulgularınızı içeren bir defter hazırlayın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba sarf etsek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, ana dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/19-NER/README.md b/translations/tr/lessons/5-NLP/19-NER/README.md index 690ba4d6..ae6e81d1 100644 --- a/translations/tr/lessons/5-NLP/19-NER/README.md +++ b/translations/tr/lessons/5-NLP/19-NER/README.md @@ -1,85 +1,93 @@ + # Adlandırılmış Varlık Tanıma -Şimdiye kadar, çoğunlukla tek bir NLP görevine - sınıflandırmaya odaklandık. Ancak, sinir ağları ile gerçekleştirilebilecek başka NLP görevleri de vardır. Bu görevlerden biri **[Adlandırılmış Varlık Tanıma](https://wikipedia.org/wiki/Named-entity_recognition)** (NER) olup, metin içindeki belirli varlıkları tanımakla ilgilidir; bunlar yerler, kişi adları, tarih-saat aralıkları, kimyasal formüller ve benzeri olabilir. +Şimdiye kadar, çoğunlukla bir NLP görevi olan sınıflandırmaya odaklandık. Ancak, sinir ağlarıyla gerçekleştirilebilecek başka NLP görevleri de vardır. Bu görevlerden biri, metin içinde yer alan belirli varlıkları tanımayı amaçlayan **[Adlandırılmış Varlık Tanıma](https://wikipedia.org/wiki/Named-entity_recognition)** (NER) işlemidir. Bu varlıklar arasında yerler, kişi adları, tarih-zaman aralıkları, kimyasal formüller gibi unsurlar bulunabilir. -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) -## NER Kullanım Örneği +## NER Kullanımına Bir Örnek -Diyelim ki, Amazon Alexa veya Google Asistan'a benzer bir doğal dil sohbet botu geliştirmek istiyorsunuz. Akıllı sohbet botlarının çalışma şekli, kullanıcının ne istediğini *anlamak* için girdi cümlesi üzerinde metin sınıflandırması yapmaktır. Bu sınıflandırmanın sonucu, bir sohbet botunun ne yapması gerektiğini belirleyen **niyet** olarak adlandırılır. +Diyelim ki Amazon Alexa veya Google Asistan gibi bir doğal dil sohbet botu geliştirmek istiyorsunuz. Akıllı sohbet botlarının çalışma şekli, kullanıcının ne istediğini anlamak için giriş cümlesi üzerinde metin sınıflandırması yapmaktır. Bu sınıflandırmanın sonucu, sohbet botunun ne yapması gerektiğini belirleyen **niyet** (intent) olarak adlandırılır. Bot NER -> Yazar tarafından sağlanan görsel +> Görsel: Yazar tarafından hazırlanmıştır -Ancak, bir kullanıcı ifadenin bir parçası olarak bazı parametreler verebilir. Örneğin, hava durumu sorduğunda, bir konum veya tarih belirtebilir. Bir bot, bu varlıkları anlamalı ve eylemi gerçekleştirmeden önce parametre alanlarını uygun şekilde doldurmalıdır. İşte NER tam burada devreye giriyor. +Ancak, bir kullanıcı cümle içinde bazı parametreler de verebilir. Örneğin, hava durumunu sorarken bir konum veya tarih belirtebilir. Bir bot, bu varlıkları anlayabilmeli ve eylemi gerçekleştirmeden önce parametre yuvalarını buna göre doldurabilmelidir. İşte tam da burada NER devreye girer. -> ✅ Başka bir örnek, [bilimsel tıbbi makaleleri analiz etmek](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) olabilir. Dikkat etmemiz gereken ana şeylerden biri, hastalıklar ve tıbbi maddeler gibi belirli tıbbi terimlerdir. Küçük bir hastalık sayısı muhtemelen alt dize araması kullanılarak çıkarılabilirken, kimyasal bileşikler ve ilaç adları gibi daha karmaşık varlıklar, daha karmaşık bir yaklaşım gerektirir. +> ✅ Bir başka örnek, [bilimsel tıbbi makalelerin analiz edilmesi](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) olabilir. Burada aramamız gereken temel unsurlardan biri, hastalıklar ve tıbbi maddeler gibi belirli tıbbi terimlerdir. Az sayıda hastalık, muhtemelen alt dize aramasıyla çıkarılabilirken, kimyasal bileşikler ve ilaç isimleri gibi daha karmaşık varlıklar için daha gelişmiş bir yaklaşım gereklidir. -## NER'nin Token Sınıflandırması Olarak +## NER ve Token Sınıflandırması -NER modelleri esasen **token sınıflandırma modelleridir**, çünkü girdi tokenlerinden her biri için bunun bir varlığa ait olup olmadığını belirlememiz gerekiyor ve eğer aitse - hangi varlık sınıfına ait olduğunu. +NER modelleri aslında **token sınıflandırma modelleridir**, çünkü her bir giriş token'ı için bunun bir varlığa ait olup olmadığını ve eğer aitse hangi varlık sınıfına ait olduğunu belirlememiz gerekir. -Aşağıdaki makale başlığını düşünün: +Şu makale başlığını ele alalım: -**Triküspit kapak yetmezliği** ve **lityum karbonat** **zehirlenmesi** bir yeni doğan bebekte. +**Tricuspid kapak yetmezliği** ve **lityum karbonat** **toksisitesi** bir yenidoğan bebekte. Buradaki varlıklar şunlardır: -* Triküspit kapak yetmezliği bir hastalıktır (`DIS`) +* Tricuspid kapak yetmezliği bir hastalıktır (`DIS`) * Lityum karbonat bir kimyasal maddedir (`CHEM`) -* Zehirlenme de bir hastalıktır (`DIS`) +* Toksisite de bir hastalıktır (`DIS`) -Bir varlığın birkaç tokenı kapsayabileceğini unutmayın. Ve, bu durumda olduğu gibi, iki ardışık varlık arasında ayrım yapmamız gerekiyor. Bu nedenle, her varlık için iki sınıf kullanmak yaygındır - birincisi varlığın ilk tokenını belirten (genellikle `B-` ön eki kullanılır, **b**aşlangıç için), diğeri ise bir varlığın devamı (`I-`, **i**ç token için). Ayrıca, tüm **d**iğer tokenları temsil etmek için `O` sınıfını da kullanırız. Bu tür token etiketleme, [BIO etiketleme](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (veya IOB) olarak adlandırılır. Etiketlendiğinde, başlığımız şu şekilde görünecektir: +Dikkat edin, bir varlık birden fazla token içerebilir. Ve bu durumda olduğu gibi, ardışık iki varlığı ayırt etmemiz gerekebilir. Bu nedenle, her varlık için iki sınıf kullanmak yaygındır - biri varlığın ilk token'ını belirten (`B-` ön eki genellikle **başlangıç** için kullanılır) ve diğeri varlığın devamını belirten (`I-`, **iç token** için). Ayrıca, tüm **diğer** token'ları temsil etmek için `O` sınıfını kullanırız. Bu tür token etiketleme, [BIO etiketleme](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (veya IOB) olarak adlandırılır. Etiketlendiğinde, başlığımız şu şekilde görünecektir: Token | Etiket ------|----- -Triküspit | B-DIS +Tricuspid | B-DIS kapak | I-DIS yetmezliği | I-DIS ve | O lityum | B-CHEM karbonat | I-CHEM -zehirlenmesi | B-DIS +toksisitesi | B-DIS bir | O -yeni | O -doğan | O -bebek | O +yenidoğan | O +bebekte | O . | O -Tokenlar ve sınıflar arasında bire bir karşılık kurmamız gerektiğinden, bu resimden sağdaki **çoktan-çoğa** sinir ağı modelini eğitebiliriz: +Token'lar ve sınıflar arasında birebir bir ilişki kurmamız gerektiğinden, bu resimdeki gibi bir **çoktan-çoka** sinir ağı modeli eğitebiliriz: -![Yaygın tekrar eden sinir ağı desenlerini gösteren bir görüntü.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg) +![Yaygın tekrarlayan sinir ağı desenlerini gösteren bir görsel.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg) -> *Görsel [bu blog yazısından](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) [Andrej Karpathy](http://karpathy.github.io/) tarafından alınmıştır. NER token sınıflandırma modelleri, bu resimdeki en sağdaki ağ mimarisine karşılık gelir.* +> *Görsel, [Andrej Karpathy](http://karpathy.github.io/) tarafından yazılmış [bu blog yazısından](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) alınmıştır. NER token sınıflandırma modelleri, bu resimdeki en sağdaki ağ mimarisine karşılık gelir.* -## NER Modellerinin Eğitimi +## NER Modellerini Eğitmek -Bir NER modeli esasen bir token sınıflandırma modeli olduğundan, bu görev için zaten aşina olduğumuz RNN'leri kullanabiliriz. Bu durumda, her tekrarlayan ağ bloğu token kimliğini döndürecektir. Aşağıdaki örnek not defteri, token sınıflandırması için LSTM nasıl eğitileceğini göstermektedir. +Bir NER modeli aslında bir token sınıflandırma modeli olduğundan, bu görev için zaten aşina olduğumuz RNN'leri kullanabiliriz. Bu durumda, tekrarlayan ağın her bir bloğu token kimliğini döndürecektir. Aşağıdaki örnek defter, token sınıflandırması için bir LSTM'nin nasıl eğitileceğini göstermektedir. -## ✍️ Örnek Not Defterleri: NER +## ✍️ Örnek Defterler: NER -Aşağıdaki not defterinde öğreniminize devam edin: +Aşağıdaki defterde öğrenmeye devam edin: * [TensorFlow ile NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) ## Sonuç -Bir NER modeli, **token sınıflandırma modeli**dir, bu da token sınıflandırması yapmak için kullanılabileceği anlamına gelir. Bu, metin içindeki belirli varlıkları tanımaya yardımcı olan oldukça yaygın bir NLP görevidir; bunlar yerler, adlar, tarihler ve daha fazlasını içerir. +Bir NER modeli, bir **token sınıflandırma modeli** olup, token sınıflandırması gerçekleştirmek için kullanılabilir. Bu, metin içinde yerler, isimler, tarihler ve daha fazlasını tanımaya yardımcı olan çok yaygın bir NLP görevidir. ## 🚀 Zorluk -Aşağıda bağlantısı verilen ödevi tamamlayarak tıbbi terimler için bir adlandırılmış varlık tanıma modeli eğitin, ardından bunu farklı bir veri setinde deneyin. +Aşağıda bağlantısı verilen ödevi tamamlayarak tıbbi terimler için bir adlandırılmış varlık tanıma modeli eğitin ve ardından bunu farklı bir veri kümesi üzerinde deneyin. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -[Tekrarlayan Sinir Ağlarının Aşırı Etkili Olması](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) başlıklı blogu okuyun ve o makaledeki Daha Fazla Okuma bölümünü takip ederek bilginizi derinleştirin. +[Recurrent Neural Networks'ün Akıl Almaz Etkililiği](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) başlıklı blog yazısını okuyun ve bu makaledeki Daha Fazla Okuma bölümünü takip ederek bilginizi derinleştirin. ## [Ödev](lab/README.md) -Bu dersteki ödevde, bir tıbbi varlık tanıma modeli eğitmeniz gerekecek. Bu derste açıklanan LSTM modelini eğitmeye başlayabilir ve ardından BERT dönüştürücü modelini kullanmaya geçebilirsiniz. Tüm detayları öğrenmek için [talimatları](lab/README.md) okuyun. +Bu dersin ödevinde, bir tıbbi varlık tanıma modeli eğitmeniz gerekecek. Bu derste açıklandığı gibi bir LSTM modeli eğiterek başlayabilir ve ardından BERT dönüştürücü modelini kullanmaya geçebilirsiniz. Tüm detayları öğrenmek için [talimatları okuyun](lab/README.md). -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/19-NER/lab/README.md b/translations/tr/lessons/5-NLP/19-NER/lab/README.md index 6ecd225f..64ed62c0 100644 --- a/translations/tr/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/tr/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için Laboratuvar Görevi. +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) içindeki Laboratuvar Görevi. ## Görev -Bu laboratuvar çalışmasında, tıbbi terimler için adlandırılmış varlık tanıma modeli eğitmeniz gerekiyor. +Bu laboratuvarda, tıbbi terimler için adlandırılmış varlık tanıma (NER) modeli eğitmeniz gerekiyor. ## Veri Seti -NER modelini eğitmek için, tıbbi varlıklarla düzgün bir şekilde etiketlenmiş bir veri setine ihtiyacımız var. [BC5CDR veri seti](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) 1500'den fazla makaleden etiketlenmiş hastalıklar ve kimyasallar içeren varlıklar içerir. Veri setini indirmek için web sitelerinde kayıt olmanız gerekmektedir. +NER modelini eğitmek için, tıbbi varlıklarla düzgün bir şekilde etiketlenmiş bir veri setine ihtiyacımız var. [BC5CDR veri seti](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/), 1500'den fazla makaleden etiketlenmiş hastalık ve kimyasal varlıkları içerir. Veri setini, web sitelerinde kayıt olduktan sonra indirebilirsiniz. -BC5CDR Veri Seti şu şekilde görünmektedir: +BC5CDR veri seti şu şekilde görünür: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ BC5CDR Veri Seti şu şekilde görünmektedir: ... ``` -Bu veri setinde, ilk iki satırda makale başlığı ve özeti bulunmakta, ardından başlık+özet bloğu içinde başlangıç ve bitiş konumlarıyla birlikte bireysel varlıklar yer almaktadır. Varlık türüne ek olarak, bu varlığın belirli bir tıbbi ontolojideki ontoloji kimliğini de alırsınız. +Bu veri setinde, ilk iki satırda makale başlığı ve özeti bulunur, ardından başlık+özet bloğu içindeki başlangıç ve bitiş pozisyonlarıyla bireysel varlıklar yer alır. Varlık türüne ek olarak, bu varlığın bazı tıbbi ontolojiler içindeki ontoloji kimliğini de alırsınız. -Bunu BIO kodlamasına dönüştürmek için bazı Python kodları yazmanız gerekecek. +Bu veriyi BIO kodlamasına dönüştürmek için biraz Python kodu yazmanız gerekecek. ## Ağ -NER için ilk deneme, ders sırasında gördüğünüz gibi LSTM ağı kullanılarak yapılabilir. Ancak, NLP görevlerinde, [transformer mimarisi](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) ve özellikle [BERT dil modelleri](https://en.wikipedia.org/wiki/BERT_(language_model)) çok daha iyi sonuçlar göstermektedir. Önceden eğitilmiş BERT modelleri, bir dilin genel yapısını anlamakta ve belirli görevler için nispeten küçük veri setleri ve hesaplama maliyetleri ile ince ayar yapılabilmektedir. +NER için ilk deneme, ders sırasında gördüğünüz örnekte olduğu gibi LSTM ağı kullanılarak yapılabilir. Ancak, NLP görevlerinde [transformer mimarisi](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) ve özellikle [BERT dil modelleri](https://en.wikipedia.org/wiki/BERT_(language_model)) çok daha iyi sonuçlar verir. Önceden eğitilmiş BERT modelleri, bir dilin genel yapısını anlar ve nispeten küçük veri setleri ve hesaplama maliyetleriyle belirli görevler için ince ayar yapılabilir. -Tıbbi senaryoya NER uygulamayı planladığımız için, tıbbi metinler üzerinde eğitilmiş BERT modelini kullanmak mantıklıdır. Microsoft Research, [PubMedBERT][PubMedBERT] ([yayın][PubMedBERT-Pub]) adında önceden eğitilmiş bir model yayınladı; bu model, [PubMed](https://pubmed.ncbi.nlm.nih.gov/) deposundan alınan metinlerle ince ayar yapılmıştır. +NER'yi tıbbi bir senaryoya uygulamayı planladığımız için, tıbbi metinler üzerinde eğitilmiş bir BERT modeli kullanmak mantıklıdır. Microsoft Research, [PubMed](https://pubmed.ncbi.nlm.nih.gov/) deposundaki metinler kullanılarak ince ayar yapılmış [PubMedBERT][PubMedBERT] ([yayın][PubMedBERT-Pub]) adlı önceden eğitilmiş bir model yayınladı. -Transformer modellerini eğitmek için *de facto* standart, [Hugging Face Transformers](https://huggingface.co/) kütüphanesidir. Ayrıca, PubMedBERT de dahil olmak üzere, topluluk tarafından bakım yapılan önceden eğitilmiş modellerin bir deposunu içerir. Bu modeli yüklemek ve kullanmak için sadece birkaç satır kod yazmamız yeterlidir: +Transformer modellerini eğitmek için *de facto* standart, [Hugging Face Transformers](https://huggingface.co/) kütüphanesidir. Bu kütüphane, PubMedBERT dahil olmak üzere topluluk tarafından sürdürülen önceden eğitilmiş modellerin bir deposunu içerir. Bu modeli yüklemek ve kullanmak için sadece birkaç satır kod yeterlidir: ```python model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" @@ -40,11 +49,11 @@ tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForTokenClassification.from_pretrained(model_name, classes) ``` -Bu, girdi metnini token'lara bölebilen `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` nesnesini verir. Veri setini BIO formatına dönüştürmeniz gerekecek ve PubMedBERT tokenizasyonunu dikkate almanız önemlidir. İlham almak için [bu Python kodu parçasını](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) kullanabilirsiniz. +Bu kod bize `model` nesnesini, `classes` sayıda sınıf kullanarak token sınıflandırma görevi için oluşturulmuş bir model olarak, ve giriş metnini tokenlara bölebilen `tokenizer` nesnesini verir. Veri setini BIO formatına dönüştürmeniz gerekecek ve bunu yaparken PubMedBERT tokenizasyonunu dikkate almalısınız. [Bu Python kodu](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) ilham kaynağı olarak kullanılabilir. -## Özet +## Çıkarım -Bu görev, doğal dil metinleri hakkında daha fazla içgörü elde etmek istiyorsanız muhtemelen karşılaşacağınız gerçek bir göreve çok yakındır. Bizim durumumuzda, eğitilmiş modelimizi [COVID ile ilgili makalelerin veri setine](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) uygulayabilir ve hangi içgörüleri elde edebileceğimizi görebiliriz. [Bu blog yazısı](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) ve [bu makale](https://www.mdpi.com/2504-2289/6/1/4), NER kullanarak bu makaleler koleksiyonu üzerinde yapılabilecek araştırmaları tanımlamaktadır. +Bu görev, doğal dil metinlerinin büyük hacimlerinde daha fazla içgörü elde etmek istiyorsanız karşılaşabileceğiniz gerçek bir göreve oldukça yakındır. Bizim durumumuzda, eğitilmiş modelimizi [COVID ile ilgili makaleler veri setine](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) uygulayabilir ve hangi içgörüleri elde edebileceğimizi görebiliriz. [Bu blog yazısı](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) ve [bu makale](https://www.mdpi.com/2504-2289/6/1/4), NER kullanılarak bu makale derlemesi üzerinde yapılabilecek araştırmaları açıklamaktadır. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/20-LangModels/README.md b/translations/tr/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..68e3da44 --- /dev/null +++ b/translations/tr/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Önceden Eğitilmiş Büyük Dil Modelleri + +Önceki tüm görevlerimizde, etiketlenmiş bir veri kümesi kullanarak belirli bir görevi yerine getirmek için bir sinir ağı eğitiyorduk. BERT gibi büyük transformer modelleriyle, dil modellemesini kendi kendine denetimli bir şekilde kullanarak bir dil modeli oluşturuyoruz ve ardından bu modeli belirli bir alt görev için alanına özel eğitimle özelleştiriyoruz. Ancak, büyük dil modellerinin herhangi bir alanına özel eğitim olmadan birçok görevi çözebileceği gösterilmiştir. Bu tür görevleri gerçekleştirebilen model ailesine **GPT** (Generative Pre-Trained Transformer) adı verilir. + +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Metin Üretimi ve Karmaşıklık (Perplexity) + +Bir sinir ağının alt görev eğitimi olmadan genel görevleri yapabilme fikri, [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) makalesinde sunulmuştur. Ana fikir, birçok başka görevin **metin üretimi** kullanılarak modellenebileceğidir, çünkü metni anlamak aslında onu üretebilmek anlamına gelir. Model, insan bilgisini kapsayan büyük miktarda metin üzerinde eğitildiği için, geniş bir konu yelpazesi hakkında bilgi sahibi olur. + +> Metni anlamak ve üretebilmek, çevremizdeki dünya hakkında bir şeyler bilmeyi de gerektirir. İnsanlar da büyük ölçüde okuyarak öğrenir ve GPT ağı bu açıdan benzerdir. + +Metin üretim ağları, bir sonraki kelimenin olasılığını tahmin ederek çalışır $$P(w_N)$$. Ancak, bir sonraki kelimenin koşulsuz olasılığı, bu kelimenin metin korpusundaki sıklığına eşittir. GPT, önceki kelimeler göz önüne alındığında bir sonraki kelimenin **koşullu olasılığını** verebilir: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Olasılıklar hakkında daha fazla bilgi edinmek için [Başlangıç Seviyesi Veri Bilimi Müfredatımızı](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) okuyabilirsiniz. + +Dil üretim modelinin kalitesi, **karmaşıklık (perplexity)** kullanılarak tanımlanabilir. Bu, model kalitesini herhangi bir göreve özel veri kümesi olmadan ölçmemizi sağlayan içsel bir metriktir. *Bir cümlenin olasılığı* kavramına dayanır - model, gerçek olma olasılığı yüksek bir cümleye yüksek olasılık atar (yani model bu cümle karşısında **şaşkın** değildir) ve daha az anlamlı cümlelere düşük olasılık atar (örneğin, *Can it does what?*). Modelimize gerçek bir metin korpusundan cümleler verdiğimizde, bunların yüksek olasılığa ve düşük **karmaşıklığa** sahip olmasını bekleriz. Matematiksel olarak, test kümesinin normalleştirilmiş ters olasılığı olarak tanımlanır: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**[Hugging Face'in GPT destekli metin editörü](https://transformer.huggingface.co/doc/gpt2-large)** ile metin üretimi deneyebilirsiniz. Bu editörde, metninizi yazmaya başlarsınız ve **[TAB]** tuşuna bastığınızda size birkaç tamamlama seçeneği sunulur. Eğer seçenekler çok kısa gelirse veya memnun kalmazsanız, [TAB] tuşuna tekrar basarak daha fazla seçenek, hatta daha uzun metin parçaları alabilirsiniz. + +## GPT Bir Ailedir + +GPT, tek bir model değil, [OpenAI](https://openai.com) tarafından geliştirilen ve eğitilen bir model koleksiyonudur. + +GPT modelleri şunlardır: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT-3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| 1.5 milyar parametreye kadar dil modeli. | 175 milyar parametreye kadar dil modeli. | 100T parametreye sahip ve hem görsel hem de metin girdilerini kabul edip metin çıktıları üretebilir. | + +GPT-3 ve GPT-4 modelleri, [Microsoft Azure'dan bir bilişsel hizmet](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) ve [OpenAI API](https://openai.com/api/) olarak kullanılabilir. + +## Prompt Mühendisliği + +GPT, dil ve kodu anlamak için büyük miktarda veri üzerinde eğitildiğinden, girdilere (prompts) yanıt olarak çıktılar sağlar. Prompts, GPT'ye verilen girdiler veya sorgulardır; bu girdilerle modellerin bir sonraki görevlerini tamamlamaları için talimatlar verilir. İstenen bir sonucu elde etmek için en etkili promptu oluşturmak gerekir; bu, doğru kelimeleri, formatları, ifadeleri veya hatta sembolleri seçmeyi içerir. Bu yaklaşım, [Prompt Mühendisliği](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) olarak adlandırılır. + +[Bu dokümantasyon](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum), prompt mühendisliği hakkında daha fazla bilgi sağlar. + +## ✍️ Örnek Notebook: [OpenAI-GPT ile Oynamak](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Aşağıdaki notebook'larda öğrenmeye devam edin: + +* [OpenAI-GPT ve Hugging Face Transformers ile Metin Üretimi](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Sonuç + +Yeni genel önceden eğitilmiş dil modelleri yalnızca dil yapısını modellemekle kalmaz, aynı zamanda büyük miktarda doğal dil bilgisi içerir. Bu nedenle, bazı NLP görevlerini sıfır atış (zero-shot) veya az atış (few-shot) ayarlarında etkili bir şekilde çözmek için kullanılabilirler. + +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı bir yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel bir insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/README.md b/translations/tr/lessons/5-NLP/README.md index 87e30988..c0cde4b0 100644 --- a/translations/tr/lessons/5-NLP/README.md +++ b/translations/tr/lessons/5-NLP/README.md @@ -1,30 +1,39 @@ + # Doğal Dil İşleme -![NLP görevlerinin özetini gösteren bir doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.tr.png) +![NLP görevlerinin bir çizimi](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.tr.png) -Bu bölümde, **Doğal Dil İşleme (NLP)** ile ilgili görevleri ele almak için Sinir Ağlarını kullanmaya odaklanacağız. Bilgisayarların çözmesini istediğimiz birçok NLP sorunu bulunmaktadır: +Bu bölümde, **Doğal Dil İşleme (NLP)** ile ilgili görevleri çözmek için Sinir Ağlarını kullanmaya odaklanacağız. Bilgisayarların çözmesini istediğimiz birçok NLP problemi bulunmaktadır: -* **Metin sınıflandırması**, metin dizileri ile ilgili tipik bir sınıflandırma problemidir. Örnekler arasında e-posta mesajlarını spam ve spam olmayan olarak sınıflandırmak veya makaleleri spor, iş, siyaset vb. kategorilere ayırmak yer alır. Ayrıca, sohbet botları geliştirirken, genellikle bir kullanıcının ne demek istediğini anlamamız gerekir; bu durumda **niyet sınıflandırması** ile ilgileniyoruz. Niyet sınıflandırmasında genellikle birçok kategori ile başa çıkmamız gerekir. -* **Duygu analizi**, bir cümlenin anlamının ne kadar olumlu/olumsuz olduğunu karşılık gelen bir sayıya (bir duyguya) atfetmemiz gereken tipik bir regresyon problemidir. Duygu analizinin daha gelişmiş bir versiyonu, cümlenin tamamına değil, farklı kısımlarına (aspektlere) duygu atfettiğimiz **aspekt bazlı duygu analizi** (ABSA) olarak bilinir; örneğin, *Bu restoranda mutfağı beğendim, ama atmosfer berbat*. -* **Adlandırılmış Varlık Tanıma** (NER), metinden belirli varlıkları çıkarma problemine atıfta bulunur. Örneğin, *Yarın Paris'e uçmam gerekiyor* ifadesinde *yarın* kelimesinin TARİH'e, *Paris* kelimesinin ise LOKASYON'a karşılık geldiğini anlamamız gerekebilir. -* **Anahtar kelime çıkarımı**, NER'ye benzer, ancak cümlenin anlamı için önemli kelimeleri otomatik olarak, belirli varlık türleri için ön eğitim yapmadan çıkarmamız gerekir. -* **Metin kümeleme**, benzer cümleleri bir araya gruplamak istediğimizde yararlı olabilir; örneğin, teknik destek konuşmalarındaki benzer talepler. -* **Soru yanıtlama**, bir modelin belirli bir soruyu yanıtlayabilme yeteneğine atıfta bulunur. Model, bir metin parçası ve bir soru alır ve sorunun yanıtının bulunduğu metindeki yeri sağlaması gerekir (veya bazen yanıt metnini oluşturması). -* **Metin Üretimi**, bir modelin yeni metin oluşturabilme yeteneğidir. Bu, bazı *metin istemleri* temelinde bir sonraki harf/kelimeyi tahmin eden bir sınıflandırma görevi olarak düşünülebilir. GPT-3 gibi gelişmiş metin üretim modelleri, [istek programlama](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) veya [istek mühendisliği](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) gibi bir teknik kullanarak sınıflandırma gibi diğer NLP görevlerini çözebilir. -* **Metin özetleme**, bir bilgisayarın uzun metni "okumasını" ve birkaç cümlede özetlemesini istediğimiz bir tekniktir. -* **Makine çevirisi**, bir dilde metin anlayışının ve diğer bir dilde metin üretiminin bir kombinasyonu olarak görülebilir. +* **Metin sınıflandırma**, metin dizileriyle ilgili tipik bir sınıflandırma problemidir. Örnekler arasında e-posta mesajlarını spam veya spam değil olarak sınıflandırmak ya da makaleleri spor, iş, politika gibi kategorilere ayırmak yer alır. Ayrıca, sohbet botları geliştirirken, genellikle bir kullanıcının ne söylemek istediğini anlamamız gerekir -- bu durumda **niyet sınıflandırması** ile ilgileniyoruz. Niyet sınıflandırmasında genellikle birçok kategoriyle uğraşmamız gerekir. +* **Duygu analizi**, bir cümlenin anlamının ne kadar olumlu/olumsuz olduğunu belirten bir sayı (duygu) atamamız gereken tipik bir regresyon problemidir. Duygu analizinin daha gelişmiş bir versiyonu olan **özellik tabanlı duygu analizi** (ABSA), duygu durumunu tüm cümleye değil, farklı bölümlerine (özelliklere) atar, örneğin: *Bu restoranda mutfağı beğendim, ama atmosfer berbattı*. +* **Adlandırılmış Varlık Tanıma** (NER), metinden belirli varlıkları çıkarmakla ilgilidir. Örneğin, *Yarın Paris'e uçmam gerekiyor* cümlesinde *yarın* kelimesinin TARİH'e, *Paris* kelimesinin ise KONUM'a atıfta bulunduğunu anlamamız gerekebilir. +* **Anahtar kelime çıkarımı**, NER'e benzer, ancak belirli varlık türleri için önceden eğitim yapmadan, cümlenin anlamı için önemli olan kelimeleri otomatik olarak çıkarmamız gerekir. +* **Metin kümeleme**, benzer cümleleri bir araya getirmek istediğimizde faydalı olabilir, örneğin teknik destek konuşmalarında benzer talepleri gruplamak. +* **Soru yanıtlama**, bir modelin belirli bir soruya yanıt verebilme yeteneğini ifade eder. Model, bir metin parçası ve bir soruyu giriş olarak alır ve sorunun cevabının metinde bulunduğu yeri sağlaması (veya bazen cevap metnini oluşturması) gerekir. +* **Metin oluşturma**, bir modelin yeni metin oluşturma yeteneğidir. Bu, bir *metin ipucu* temelinde bir sonraki harf/kelimeyi tahmin eden bir sınıflandırma görevi olarak düşünülebilir. GPT-3 gibi gelişmiş metin oluşturma modelleri, [ipucu programlama](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) veya [ipucu mühendisliği](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) adı verilen bir teknik kullanarak sınıflandırma gibi diğer NLP görevlerini çözebilir. +* **Metin özetleme**, bir bilgisayarın uzun bir metni "okuyup" birkaç cümleyle özetlemesini istediğimiz bir tekniktir. +* **Makine çevirisi**, bir dildeki metni anlamayı ve başka bir dilde metin oluşturmayı birleştiren bir görev olarak görülebilir. -Başlangıçta, çoğu NLP görevi geleneksel yöntemlerle, örneğin dilbilgileri kullanılarak çözülüyordu. Örneğin, makine çevirisinde, başlangıç cümlesini bir sözdizim ağaçına dönüştürmek için ayrıştırıcılar kullanılıyordu, ardından cümlenin anlamını temsil etmek için daha yüksek düzeyde anlamsal yapılar çıkarılıyordu ve bu anlam ile hedef dilin dilbilgisine dayanarak sonuç üretiliyordu. Günümüzde birçok NLP görevi, sinir ağları kullanılarak daha etkili bir şekilde çözülmektedir. +Başlangıçta, çoğu NLP görevi dilbilgisi gibi geleneksel yöntemlerle çözülüyordu. Örneğin, makine çevirisinde, başlangıç cümlesi bir sözdizimi ağacına dönüştürmek için ayrıştırıcılar kullanılıyor, ardından cümlenin anlamını temsil etmek için daha yüksek seviyeli anlamsal yapılar çıkarılıyor ve bu anlam ve hedef dilin dilbilgisine dayanarak sonuç oluşturuluyordu. Günümüzde, birçok NLP görevi sinir ağları kullanılarak daha etkili bir şekilde çözülmektedir. -> Birçok klasik NLP yöntemi, [Doğal Dil İşleme Araç Takımı (NLTK)](https://www.nltk.org) Python kütüphanesinde uygulanmıştır. Farklı NLP görevlerinin NLTK kullanılarak nasıl çözülebileceğini kapsayan harika bir [NLTK Kitabı](https://www.nltk.org/book/) çevrimiçi olarak mevcuttur. +> Birçok klasik NLP yöntemi, [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python kütüphanesinde uygulanmıştır. Farklı NLP görevlerinin NLTK kullanılarak nasıl çözülebileceğini kapsayan harika bir [NLTK Kitabı](https://www.nltk.org/book/) çevrimiçi olarak mevcuttur. -Kursumuzda, genellikle NLP için Sinir Ağlarını kullanmaya odaklanacağız ve gerektiğinde NLTK kullanacağız. +Kursumuzda, çoğunlukla NLP için Sinir Ağlarını kullanmaya odaklanacağız ve gerektiğinde NLTK kullanacağız. -Daha önce, sinir ağlarını tablo verileri ve görüntülerle başa çıkmak için kullanmayı öğrendik. Bu veri türleri ile metin arasındaki ana fark, metnin değişken uzunlukta bir dizi olmasıdır; oysa görüntüler durumunda girdi boyutu önceden bilinir. Konvolüsyonel ağlar girdi verilerinden kalıpları çıkarabilirken, metindeki kalıplar daha karmaşıktır. Örneğin, birçok kelime için öznenin olumsuzluğunun ayrılmasının rastgele olması mümkündür (örneğin, *Portakalları sevmiyorum*, vs. *O büyük renkli lezzetli portakalları sevmiyorum*), ve bu hala bir kalıp olarak yorumlanmalıdır. Bu nedenle, dili ele almak için *tekrarlayan ağlar* ve *dönüştürücüler* gibi yeni sinir ağı türlerini tanıtmamız gerekir. +Tablo verileri ve görüntülerle çalışmak için sinir ağlarını kullanmayı zaten öğrendik. Bu veri türleri ile metin arasındaki temel fark, metnin değişken uzunlukta bir dizi olmasıdır, oysa görüntülerde giriş boyutu önceden bilinir. Konvolüsyonel ağlar giriş verilerinden desenler çıkarabilirken, metindeki desenler daha karmaşıktır. Örneğin, olumsuzluk, özneyle birçok kelime arasında ayrılabilir (örneğin: *Portakalları sevmiyorum* ile *O büyük renkli lezzetli portakalları sevmiyorum*), ve bu yine de tek bir desen olarak yorumlanmalıdır. Bu nedenle, dili işlemek için *tekrarlayan ağlar* ve *dönüştürücüler* gibi yeni sinir ağı türlerini tanıtmamız gerekir. -## Kütüphaneleri Yükle +## Kütüphaneleri Yükleme -Bu kursu çalıştırmak için yerel Python yüklemesi kullanıyorsanız, NLP için gerekli tüm kütüphaneleri aşağıdaki komutları kullanarak yüklemeniz gerekebilir: +Bu kursu yerel bir Python kurulumunda çalıştırıyorsanız, NLP için gerekli tüm kütüphaneleri aşağıdaki komutlarla yüklemeniz gerekebilir: **PyTorch için** ```bash @@ -41,11 +50,11 @@ pip install -r requirements-tf.txt Bu bölümde, bazı örneklerde oldukça büyük modelleri eğiteceğiz. * **GPU Destekli Bilgisayar Kullanın**: Büyük modellerle çalışırken bekleme sürelerini azaltmak için not defterlerinizi GPU destekli bir bilgisayarda çalıştırmanız önerilir. -* **GPU Bellek Kısıtlamaları**: Bir GPU'da çalışmak, özellikle büyük modelleri eğitirken GPU belleğinin tükenmesi durumlarına yol açabilir. -* **GPU Bellek Tüketimi**: Eğitim sırasında tüketilen GPU belleği miktarı, minibatch boyutu gibi çeşitli faktörlere bağlıdır. -* **Minibatch Boyutunu Küçültün**: GPU bellek sorunlarıyla karşılaşırsanız, kodunuzda minibatch boyutunu azaltmayı düşünebilirsiniz. -* **TensorFlow GPU Bellek Salımı**: Eski TensorFlow sürümleri, bir Python çekirdeği içinde birden fazla modeli eğitirken GPU belleğini doğru bir şekilde serbest bırakmayabilir. GPU bellek kullanımını etkili bir şekilde yönetmek için TensorFlow'u yalnızca gerektiğinde GPU belleği ayıracak şekilde yapılandırabilirsiniz. -* **Kod Dahil Etme**: TensorFlow'un GPU bellek tahsisini yalnızca gerektiğinde artırması için not defterlerinize aşağıdaki kodu ekleyin: +* **GPU Bellek Sınırlamaları**: GPU'da çalışmak, özellikle büyük modelleri eğitirken GPU belleğinizin tükenmesine neden olabilir. +* **GPU Bellek Tüketimi**: Eğitim sırasında tüketilen GPU belleği, minibatch boyutu gibi çeşitli faktörlere bağlıdır. +* **Minibatch Boyutunu Azaltın**: GPU bellek sorunlarıyla karşılaşırsanız, kodunuzdaki minibatch boyutunu azaltmayı düşünebilirsiniz. +* **TensorFlow GPU Bellek Serbest Bırakma**: TensorFlow'un eski sürümleri, bir Python çekirdeğinde birden fazla model eğitildiğinde GPU belleğini doğru şekilde serbest bırakmayabilir. GPU bellek kullanımını etkili bir şekilde yönetmek için TensorFlow'u yalnızca gerektiğinde GPU belleği tahsis edecek şekilde yapılandırabilirsiniz. +* **Kod Ekleme**: TensorFlow'un GPU belleği tahsisini yalnızca gerektiğinde büyütmesini sağlamak için not defterlerinize aşağıdaki kodu ekleyin: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +62,17 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Klasik ML perspektifinden NLP hakkında daha fazla bilgi edinmek isterseniz, [bu dersler dizisine](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) göz atın. +Klasik ML perspektifinden NLP öğrenmekle ilgileniyorsanız, [bu dersler dizisini](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ziyaret edin. ## Bu Bölümde Bu bölümde şunları öğreneceğiz: * [Metni tensörler olarak temsil etme](13-TextRep/README.md) -* [Kelime Gömme](14-Emdeddings/README.md) +* [Kelime Gömüleri](14-Emdeddings/README.md) * [Dil Modelleme](15-LanguageModeling/README.md) * [Tekrarlayan Sinir Ağları](16-RNN/README.md) * [Üretken Ağlar](17-GenerativeNetworks/README.md) * [Dönüştürücüler](18-Transformers/README.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Yerel dilindeki orijinal belge, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md index ba70c92b..2c1f83c3 100644 --- a/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ + # Genetik Algoritmalar -## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) +## [Ders Öncesi Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**Genetik Algoritmalar** (GA), bir **evrimsel yaklaşım** temelinde yapay zeka (AI) için geliştirilmiş bir yöntemdir; burada bir popülasyonun evrim yöntemleri, belirli bir problem için optimal bir çözüm elde etmek amacıyla kullanılır. İlk olarak 1975 yılında [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) tarafından önerilmiştir. +**Genetik Algoritmalar** (GA), bir popülasyonun evrim yöntemlerini kullanarak verilen bir problem için en uygun çözümü elde etmeye dayanan bir **evrimsel yaklaşım** üzerine kuruludur. 1975 yılında [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) tarafından önerilmiştir. -Genetik Algoritmalar aşağıdaki fikirlere dayanır: +Genetik Algoritmalar şu fikirlere dayanır: * Problemin geçerli çözümleri **genler** olarak temsil edilebilir -* **Çaprazlama** iki çözümü bir araya getirerek yeni bir geçerli çözüm elde etmemizi sağlar -* **Seçim**, bazı **uygunluk fonksiyonu** kullanarak daha optimal çözümleri seçmek için kullanılır -* **Mutasyonlar**, optimizasyonu istikrarsızlaştırmak ve yerel minimumdan çıkmamızı sağlamak için tanıtılır +* **Çaprazlama**, iki çözümü birleştirerek yeni bir geçerli çözüm elde etmemizi sağlar +* **Seçim**, bazı **uygunluk fonksiyonları** kullanılarak daha optimal çözümleri seçmek için kullanılır +* **Mutasyonlar**, optimizasyonu kararsız hale getirmek ve yerel minimumdan çıkmamızı sağlamak için tanıtılır -Bir Genetik Algoritma uygulamak istiyorsanız, aşağıdakilere ihtiyacınız var: +Bir Genetik Algoritma uygulamak istiyorsanız, şunlara ihtiyacınız var: -* Problemin çözümlerini **genler** g∈Γ kullanarak kodlama yöntemini bulmak -* Genler kümesi Γ üzerinde **uygunluk fonksiyonu** fit: Γ→**R** tanımlamak. Daha küçük fonksiyon değerleri, daha iyi çözümlerle ilişkilidir. -* İki geni bir araya getirerek yeni bir geçerli çözüm elde etmek için **çaprazlama** mekanizmasını tanımlamak crossover: Γ2→Γ. -* **Mutasyon** mekanizmasını tanımlamak mutate: Γ→Γ. + * Problemin çözümlerini **genler** g∈Γ kullanarak kodlama yöntemini bulmak + * Genler kümesi Γ üzerinde bir **uygunluk fonksiyonu** fit: Γ→**R** tanımlamak. Daha küçük fonksiyon değerleri daha iyi çözümlere karşılık gelir. + * İki geni birleştirerek yeni bir geçerli çözüm elde etmek için bir **çaprazlama** mekanizması tanımlamak crossover: Γ2→Γ. + * Bir **mutasyon** mekanizması tanımlamak mutate: Γ→Γ. Birçok durumda, çaprazlama ve mutasyon, genleri sayısal diziler veya bit vektörleri olarak manipüle etmek için oldukça basit algoritmalardır. -Genetik algoritmanın özel uygulaması duruma göre değişiklik gösterebilir, ancak genel yapı şu şekildedir: +Genetik algoritmanın belirli bir uygulaması durumdan duruma değişebilir, ancak genel yapı şu şekildedir: -1. Başlangıç popülasyonu G⊂Γ seçin +1. Başlangıç popülasyonunu seçin G⊂Γ 2. Bu adımda gerçekleştirilecek işlemlerden birini rastgele seçin: çaprazlama veya mutasyon 3. **Çaprazlama**: - * Rastgele iki gen g1, g2 ∈ G seçin - * Çaprazlama g=crossover(g1,g2) hesaplayın - * Eğer fit(g)1) veya fit(g)2) ise, popülasyondaki karşılık gelen geni g ile değiştirin. -4. **Mutasyon** - rastgele bir gen g∈G seçin ve onu mutate(g) ile değiştirin -5. Yeterince küçük bir fit değeri elde edene kadar veya adım sayısı sınırına ulaşana kadar 2. adımdan tekrarlayın. + * Rastgele iki gen seçin g1, g2 ∈ G + * Çaprazlamayı hesaplayın g=crossover(g1,g2) + * Eğer fit(g)1) veya fit(g)2) ise - popülasyondaki ilgili geni g ile değiştirin. +4. **Mutasyon** - rastgele bir gen seçin g∈G ve bunu mutate(g) ile değiştirin +5. 2. adımdan itibaren tekrarlayın, uygunluk fonksiyonunun yeterince küçük bir değeri elde edilene kadar veya adım sayısı sınırına ulaşılana kadar. ## Tipik Görevler -Genetik Algoritmalar tarafından genellikle çözülen görevler şunlardır: +Genetik Algoritmalarla genellikle çözülen görevler şunlardır: -1. Program optimizasyonu -1. Optimal paketleme -1. Optimal kesme -1. Kapsamlı aramanın hızlandırılması +1. Zamanlama optimizasyonu +1. Optimum yerleştirme +1. Optimum kesim +1. Tükenmeli aramayı hızlandırma ## ✍️ Alıştırmalar: Genetik Algoritmalar -Öğreniminizi aşağıdaki defterlerde devam ettirin: +Aşağıdaki not defterlerinde öğrenmeye devam edin: -Genetik Algoritmaların kullanımına dair iki örnek görmek için [bu deftere](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) gidin: +[Bu not defterine](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) giderek Genetik Algoritmaların iki kullanım örneğini görebilirsiniz: -1. Hazine adaletli paylaşımı -1. 8 Kraliçe Problemi +1. Hazine adil bölüşümü +1. 8 Vezir Problemi ## Sonuç -Genetik Algoritmalar, lojistik ve arama problemleri dahil birçok problemi çözmek için kullanılmaktadır. Bu alan, Psikoloji ve Bilgisayar Bilimi konularını birleştiren araştırmalardan ilham almıştır. +Genetik Algoritmalar, lojistik ve arama problemleri dahil olmak üzere birçok problemi çözmek için kullanılır. Bu alan, Psikoloji ve Bilgisayar Bilimi konularını birleştiren araştırmalardan ilham almıştır. ## 🚀 Meydan Okuma -"Genetik algoritmalar uygulaması kolaydır, ancak davranışlarını anlamak zordur." [kaynak](https://wikipedia.org/wiki/Genetic_algorithm) Bir Sudoku bulmacasını çözmek gibi bir genetik algoritma uygulaması bulmak için araştırma yapın ve nasıl çalıştığını bir taslak veya akış diyagramı olarak açıklayın. +"Genetik algoritmalar basit bir şekilde uygulanabilir, ancak davranışlarını anlamak zordur." [kaynak](https://wikipedia.org/wiki/Genetic_algorithm) Bir Sudoku bulmacasını çözmek gibi bir genetik algoritma uygulaması bulun ve bunun nasıl çalıştığını bir taslak veya akış diyagramı olarak açıklayın. -## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) +## [Ders Sonrası Testi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -Bilgisayarların genetik algoritmalarla eğitilmiş sinir ağları kullanarak Super Mario oynamayı nasıl öğrenebileceği hakkında konuşan [bu harika videoyu](https://www.youtube.com/watch?v=qv6UVOQ0F44) izleyin. Bilgisayarların böyle oyunlar oynamayı öğrenmesi hakkında daha fazla bilgi edineceğiz [bir sonraki bölümde](../22-DeepRL/README.md). +Genetik algoritmalarla eğitilmiş sinir ağlarını kullanarak bilgisayarların Super Mario oynamayı nasıl öğrenebileceğini anlatan [bu harika videoyu](https://www.youtube.com/watch?v=qv6UVOQ0F44) izleyin. Bilgisayarların bu tür oyunları oynamayı öğrenmesi hakkında daha fazla bilgi edineceğiz [bir sonraki bölümde](../22-DeepRL/README.md). -## [Ödev: Diophantine Denklemi](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) +## [Ödev: Diofant Denklemi](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Amacınız, tam sayı kökleri olan **Diophantine denklemi** olarak bilinen bir denklemi çözmektir. Örneğin, a+2b+3c+4d=30 denklemini düşünün. Bu denklemi sağlayan tam sayı köklerini bulmanız gerekiyor. +Amacınız, tam sayı kökleri olan **Diofant denklemini** çözmektir. Örneğin, a+2b+3c+4d=30 denklemini düşünün. Bu denklemi sağlayan tam sayı köklerini bulmanız gerekiyor. -*Bu ödev [bu yazıdan](https://habr.com/post/128704/) ilham alınmıştır.* +*Bu ödev [bu gönderiden](https://habr.com/post/128704/) esinlenmiştir.* İpuçları: 1. Köklerin [0;30] aralığında olduğunu düşünebilirsiniz -1. Bir gen olarak, kök değerleri listesini kullanmayı düşünün +1. Gen olarak, kök değerlerinin listesini kullanmayı düşünebilirsiniz -[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) dosyasını başlangıç noktası olarak kullanın. +Başlangıç noktası olarak [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) dosyasını kullanın. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Belgenin orijinal hali, otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/22-DeepRL/README.md b/translations/tr/lessons/6-Other/22-DeepRL/README.md index a1f7858d..d37a5595 100644 --- a/translations/tr/lessons/6-Other/22-DeepRL/README.md +++ b/translations/tr/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ + # Derin Pekiştirmeli Öğrenme -Pekiştirmeli öğrenme (RL), denetimli öğrenme ve denetimsiz öğrenme ile birlikte temel makine öğrenimi paradigmalardan biri olarak görülmektedir. Denetimli öğrenmede bilinen sonuçlara sahip bir veri setine dayanırken, RL **yaparak öğrenme** temellidir. Örneğin, bir bilgisayar oyunu ile ilk kez karşılaştığımızda, kuralları bilmeden oynamaya başlarız ve kısa süre içinde oynama ve davranışımızı ayarlama süreci sayesinde becerilerimizi geliştirmeye başlarız. +Pekiştirmeli öğrenme (RL), denetimli öğrenme ve denetimsiz öğrenme ile birlikte temel makine öğrenimi paradigmalarından biri olarak görülür. Denetimli öğrenmede bilinen sonuçlara sahip bir veri setine dayanırken, RL **yaparak öğrenme** ilkesine dayanır. Örneğin, bir bilgisayar oyununu ilk kez gördüğümüzde, kuralları bilmeden oynamaya başlarız ve sadece oynama ve davranışlarımızı ayarlama süreciyle becerilerimizi geliştirebiliriz. -## [Ön ders anketi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) -RL gerçekleştirmek için şunlara ihtiyacımız var: +RL gerçekleştirmek için ihtiyacımız olanlar: -* Oyun kurallarını belirleyen bir **çevre** veya **simülatör**. Simülatörde deneyleri gerçekleştirebilmeli ve sonuçları gözlemleyebilmeliyiz. -* Deneyimizin ne kadar başarılı olduğunu gösteren bir **ödül fonksiyonu**. Bir bilgisayar oyunu oynamayı öğrenme durumunda, ödül nihai puanımız olur. +* Oyunun kurallarını belirleyen bir **ortam** veya **simülatör**. Deneyleri simülatörde çalıştırabilmeli ve sonuçları gözlemleyebilmeliyiz. +* Deneyimizin ne kadar başarılı olduğunu gösteren bir **ödül fonksiyonu**. Örneğin, bir bilgisayar oyununu öğrenirken ödül, nihai puanımız olabilir. -Ödül fonksiyonuna dayanarak, davranışımızı ayarlayıp becerilerimizi geliştirmeliyiz, böylece bir sonraki oyunumuzda daha iyi oynayabiliriz. Diğer makine öğrenimi türleri ile RL arasındaki ana fark, RL'de oyunu bitirene kadar kazandığımızı veya kaybettiğimizi bilmememizdir. Bu nedenle, belirli bir hamlenin iyi mi kötü mü olduğunu söyleyemeyiz - yalnızca oyunun sonunda bir ödül alırız. +Ödül fonksiyonuna dayanarak davranışlarımızı ayarlayabilir ve becerilerimizi geliştirebiliriz, böylece bir sonraki sefer daha iyi oynarız. Diğer makine öğrenimi türleri ile RL arasındaki temel fark, RL'de genellikle oyunu bitirene kadar kazanıp kazanmadığımızı bilmememizdir. Bu nedenle, belirli bir hamlenin tek başına iyi olup olmadığını söyleyemeyiz - ödülü yalnızca oyunun sonunda alırız. -RL sırasında genellikle birçok deney gerçekleştiririz. Her deneyde, şimdiye kadar öğrendiğimiz optimal stratejiyi takip etme (**sömürü**) ve yeni olası durumları keşfetme (**keşif**) arasında denge kurmamız gerekir. +RL sırasında genellikle birçok deney gerçekleştiririz. Her deney sırasında, şimdiye kadar öğrendiğimiz en iyi stratejiyi takip etmek (**sömürü**) ile yeni olası durumları keşfetmek (**keşif**) arasında bir denge kurmamız gerekir. ## OpenAI Gym -RL için harika bir araç olan [OpenAI Gym](https://gym.openai.com/) - farklı çevreleri simüle edebilen bir **simülasyon ortamı**. Atari oyunlarından, denge çubuğunun arkasındaki fiziğe kadar birçok farklı çevreyi simüle edebilir. Pekiştirmeli öğrenme algoritmalarını eğitmek için en popüler simülasyon ortamlarından biridir ve [OpenAI](https://openai.com/) tarafından bakım yapılmaktadır. +RL için harika bir araç [OpenAI Gym](https://gym.openai.com/) - birçok farklı ortamı simüle edebilen bir **simülasyon ortamı**. Atari oyunlarından, direk dengeleme fiziğine kadar çeşitli ortamları simüle edebilir. Pekiştirmeli öğrenme algoritmalarını eğitmek için en popüler simülasyon ortamlarından biridir ve [OpenAI](https://openai.com/) tarafından geliştirilmiştir. -> **Not**: OpenAI Gym'de mevcut olan tüm çevreleri [buradan](https://gym.openai.com/envs/#classic_control) görebilirsiniz. +> **Note**: OpenAI Gym'deki tüm mevcut ortamları [buradan](https://gym.openai.com/envs/#classic_control) görebilirsiniz. ## CartPole Dengeleme -Muhtemelen *Segway* veya *Gyroscooter* gibi modern dengeleme cihazlarını görmüşsünüzdür. Bu cihazlar, bir ivmeölçer veya jiroskoptan gelen bir sinyale yanıt olarak tekerleklerini ayarlayarak otomatik olarak denge sağlarlar. Bu bölümde, benzer bir problemi - bir direği dengelemeyi - öğreneceğiz. Bu, bir sirk sanatçısının elinde bir direği dengelemesi durumuna benzer - ancak bu direk dengesi yalnızca 1D'de gerçekleşir. +Muhtemelen hepiniz modern dengeleme cihazlarını, örneğin *Segway* veya *Gyroscooter* görmüşsünüzdür. Bu cihazlar, bir ivmeölçer veya jiroskoptan gelen sinyale yanıt olarak tekerleklerini ayarlayarak otomatik olarak dengede durabilir. Bu bölümde, benzer bir problemi - bir direği dengelemeyi - nasıl çözeceğimizi öğreneceğiz. Bu, bir sirk sanatçısının elinde bir direği dengelemesi gibi bir duruma benzer - ancak bu dengeleme yalnızca 1D'de gerçekleşir. -Dengelemenin basitleştirilmiş bir versiyonu **CartPole** problemi olarak bilinir. CartPole dünyasında, sola veya sağa hareket edebilen yatay bir kaydırıcıya sahibiz ve amaç, kaydırıcının üstünde dik bir direği dengede tutmaktır. +Dengelemenin basitleştirilmiş bir versiyonu **CartPole** problemi olarak bilinir. CartPole dünyasında, sola veya sağa hareket edebilen yatay bir kaydırıcı vardır ve hedef, kaydırıcının hareketi sırasında dikey bir direği dengede tutmaktır. bir cartpole -Bu çevreyi oluşturmak ve kullanmak için birkaç satır Python koduna ihtiyacımız var: +Bu ortamı oluşturmak ve kullanmak için birkaç satır Python koduna ihtiyacımız var: ```python import gym @@ -45,73 +54,73 @@ while not done: print(f"Total reward: {total_reward}") ``` -Her çevre tam olarak aynı şekilde erişilebilir: -* `env.reset` starts a new experiment -* `env.step` bir simülasyon adımı gerçekleştirir. **Eylem** alanından bir **eylem** alır ve bir **gözlem** (gözlem alanından), ayrıca bir ödül ve bir sonlandırma bayrağı döndürür. +Her ortam aynı şekilde erişilebilir: +* `env.reset` yeni bir deneyi başlatır +* `env.step` bir simülasyon adımı gerçekleştirir. **Eylem alanından** bir **eylem** alır ve bir **gözlem** (gözlem alanından), ödül ve bir bitiş bayrağı döndürür. -Yukarıdaki örnekte, her adımda rastgele bir eylem gerçekleştiriyoruz, bu nedenle deneyin ömrü çok kısadır: +Yukarıdaki örnekte her adımda rastgele bir eylem gerçekleştiriyoruz, bu yüzden deneyin ömrü çok kısa: ![dengelemeyen cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -Bir RL algoritmasının amacı, belirli bir duruma yanıt olarak eylemi döndüren bir modeli - sözde **politika** π - eğitmektir. Politikanın olasılıksal olarak da düşünülebileceğini, örneğin, herhangi bir durum *s* ve eylem *a* için *s* durumunda *a* eylemini alma olasılığını π(*a*|*s*) döndürmesi gerektiğini de belirtebiliriz. +Bir RL algoritmasının amacı, bir model - **politika** π - eğitmek ve bu modelin verilen bir duruma yanıt olarak eylemi döndürmesini sağlamaktır. Politikayı olasılıksal olarak da düşünebiliriz, örneğin herhangi bir durum *s* ve eylem *a* için π(*a*|*s*) olasılığını döndürür, yani *s* durumunda *a* eylemini gerçekleştirmemiz gerektiğini belirtir. ## Politika Gradyanları Algoritması -Bir politikayı modellemenin en belirgin yolu, durumları girdi olarak alacak ve karşılık gelen eylemleri (veya daha doğrusu tüm eylemlerin olasılıklarını) döndürecek bir sinir ağı oluşturmaktır. Bir bakıma, bu, her adımda hangi eylemleri almamız gerektiğini önceden bilmediğimiz için normal bir sınıflandırma görevine benzer. +Bir politikayı modellemenin en açık yolu, durumları giriş olarak alacak ve karşılık gelen eylemleri (veya daha doğrusu tüm eylemlerin olasılıklarını) döndürecek bir sinir ağı oluşturmaktır. Bir anlamda, bu normal bir sınıflandırma görevine benzer olurdu, ancak büyük bir farkla - her adımda hangi eylemleri gerçekleştirmemiz gerektiğini önceden bilmiyoruz. -Buradaki fikir, bu olasılıkları tahmin etmektir. Deneyin her adımındaki toplam ödülümüzü gösteren bir **kümülatif ödül** vektörü oluşturuyoruz. Ayrıca, daha önceki ödüllerin rolünü azaltmak için daha önceki ödülleri bir katsayı γ=0.99 ile çarparak **ödül indirimleme** uyguluyoruz. Ardından, daha büyük ödüller getiren deney yolu boyunca bu adımları pekiştiriyoruz. +Buradaki fikir, bu olasılıkları tahmin etmektir. Deneyin her adımında toplam ödülümüzü gösteren bir **kümülatif ödüller** vektörü oluştururuz. Ayrıca, önceki ödüllerin rolünü azaltmak için önceki ödülleri γ=0.99 gibi bir katsayı ile çarparak **ödül indirgeme** uygularız. Daha sonra, daha büyük ödüller sağlayan deney yolundaki adımları güçlendiririz. -> Politika Gradyanı algoritması hakkında daha fazla bilgi edinin ve [örnek defterde](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) bunu eylemde görün. +> Politika Gradyanları algoritması hakkında daha fazla bilgi edinin ve [örnek not defterinde](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) uygulamasını görün. ## Aktör-Kritik Algoritması -Politika Gradyanları yaklaşımının geliştirilmiş bir versiyonu **Aktör-Kritik** olarak adlandırılır. Bunun arkasındaki ana fikir, sinir ağının iki şeyi döndürmek üzere eğitilmesidir: +Politika Gradyanları yaklaşımının geliştirilmiş bir versiyonu **Aktör-Kritik** olarak adlandırılır. Bunun arkasındaki temel fikir, sinir ağının iki şeyi döndürecek şekilde eğitilmesidir: -* Hangi eylemin alınacağını belirleyen politika. Bu kısım **aktör** olarak adlandırılır. -* Bu durumda bekleyebileceğimiz toplam ödülün tahmini - bu kısım ise **kritik** olarak adlandırılır. +* Hangi eylemi gerçekleştireceğimizi belirleyen politika. Bu kısma **aktör** denir. +* Bu durumdaki toplam ödül beklentimizi tahmin eden kısım - bu kısma **kritik** denir. -Bir bakıma, bu mimari, birbirlerine karşı eğitilen iki ağa sahip bir [GAN](../../4-ComputerVision/10-GANs/README.md) ile benzerlik gösterir. Aktör-kritik modelinde, aktör almamız gereken eylemi önerir ve kritik, sonucu tahmin etmeye çalışır. Ancak, amacımız bu ağları birlikte eğitmektir. +Bir anlamda, bu yapı [GAN](../../4-ComputerVision/10-GANs/README.md)'a benzer, burada iki ağ birbirine karşı eğitilir. Aktör-kritik modelde, aktör gerçekleştirmemiz gereken eylemi önerir ve kritik, sonucu tahmin etmeye çalışır. Ancak, amacımız bu ağları uyum içinde eğitmektir. -Deney sırasında hem gerçek kümülatif ödülleri hem de kritik tarafından döndürülen sonuçları bildiğimiz için, bunlar arasındaki farkı minimize edecek bir kayıp fonksiyonu oluşturmak oldukça kolaydır. Bu, bize **kritik kaybı** verir. **Aktör kaybını** ise politika gradyanı algoritmasındaki aynı yaklaşımı kullanarak hesaplayabiliriz. +Deney sırasında hem gerçek kümülatif ödülleri hem de kritiğin döndürdüğü sonuçları bildiğimiz için, aralarındaki farkı en aza indirecek bir kayıp fonksiyonu oluşturmak nispeten kolaydır. Bu bize **kritik kaybı** verir. **Aktör kaybını** ise politika gradyanları algoritmasında olduğu gibi hesaplayabiliriz. -Bu algoritmalardan birini çalıştırdıktan sonra, CartPole'umuzun şöyle davranmasını bekleyebiliriz: +Bu algoritmalardan birini çalıştırdıktan sonra, CartPole'umuzun şu şekilde davranmasını bekleyebiliriz: -![bir dengeleyen cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) +![dengeleyen cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) ## ✍️ Alıştırmalar: Politika Gradyanları ve Aktör-Kritik RL -Aşağıdaki defterlerde öğreniminize devam edin: +Aşağıdaki not defterlerinde öğrenmeye devam edin: -* [TensorFlow'da RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) -* [PyTorch'ta RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) +* [TensorFlow ile RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch ile RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) ## Diğer RL Görevleri -Günümüzde Pekiştirmeli Öğrenme, hızla büyüyen bir araştırma alanıdır. Pekiştirmeli öğrenmenin bazı ilginç örnekleri şunlardır: +Pekiştirmeli öğrenme günümüzde hızla büyüyen bir araştırma alanıdır. Pekiştirmeli öğrenmenin bazı ilginç örnekleri şunlardır: -* Bir bilgisayarı **Atari Oyunları** oynamayı öğretmek. Bu problemin zorluğu, durumun bir vektör olarak basit bir şekilde temsil edilmemesi, daha ziyade bir ekran görüntüsü olmasıdır - ve bu ekran görüntüsünü bir özellik vektörüne dönüştürmek veya ödül bilgisini çıkarmak için CNN kullanmamız gerekir. Atari oyunları Gym'de mevcuttur. -* Bir bilgisayarı satranç ve go gibi masa oyunları oynamayı öğretmek. Son zamanlarda **Alpha Zero** gibi son teknoloji programlar, iki ajanın birbirine karşı oynayarak ve her adımda gelişerek sıfırdan eğitilmiştir. -* Endüstride, RL simülasyondan kontrol sistemleri oluşturmak için kullanılır. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) adlı bir hizmet bunun için özel olarak tasarlanmıştır. +* Bilgisayara **Atari Oyunları** oynatmayı öğretmek. Bu problemin zorlu kısmı, basit bir durumun bir vektör olarak temsil edilmemesi, bunun yerine bir ekran görüntüsü olmasıdır - ve bu ekran görüntüsünü bir özellik vektörüne dönüştürmek veya ödül bilgisi çıkarmak için CNN kullanmamız gerekir. Atari oyunları Gym'de mevcuttur. +* Bilgisayara satranç ve Go gibi masa oyunları oynamayı öğretmek. Son zamanlarda **Alpha Zero** gibi en son teknoloji programlar, iki ajanın birbirine karşı oynayıp her adımda gelişmesiyle sıfırdan eğitildi. +* Endüstride, RL simülasyondan kontrol sistemleri oluşturmak için kullanılır. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) adlı bir hizmet özellikle bunun için tasarlanmıştır. ## Sonuç -Artık, ajansları iyi sonuçlar elde etmek için sadece onlara oyunun istenen durumunu tanımlayan bir ödül fonksiyonu sağlayarak ve arama alanını akıllıca keşfetme fırsatı vererek nasıl eğiteceğimizi öğrendik. İki algoritmayı başarıyla denedik ve oldukça kısa bir süre içinde iyi bir sonuç elde ettik. Ancak, bu, RL yolculuğunuzun sadece başlangıcıdır ve daha derinlemesine incelemek isterseniz ayrı bir kurs almayı kesinlikle düşünmelisiniz. +Artık bir ödül fonksiyonu sağlayarak ve arama alanını akıllıca keşfetme fırsatı vererek, ajanları iyi sonuçlar elde etmek için nasıl eğiteceğimizi öğrendik. İki algoritmayı başarıyla denedik ve nispeten kısa bir sürede iyi bir sonuç elde ettik. Ancak, bu RL yolculuğunuzun sadece başlangıcıdır ve daha derinlemesine öğrenmek istiyorsanız ayrı bir kurs almayı kesinlikle düşünmelisiniz. -## 🚀 Zorluk +## 🚀 Meydan Okuma -'Diğer RL Görevleri' bölümünde listelenen uygulamaları keşfedin ve birini uygulamaya çalışın! +'Diğer RL Görevleri' bölümünde listelenen uygulamaları keşfedin ve birini uygulamayı deneyin! -## [Ders sonrası anket](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) -## Gözden Geçirme ve Kendi Kendine Çalışma +## İnceleme ve Kendi Kendine Çalışma -Klasik pekiştirmeli öğrenme hakkında daha fazla bilgi edinin [Makine Öğrenimi için Başlangıç Müfredatı](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) üzerinden. +[Başlangıç Seviyesi için Makine Öğrenimi Müfredatımızda](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) klasik pekiştirmeli öğrenme hakkında daha fazla bilgi edinin. -Bir bilgisayarın Süper Mario oynamayı nasıl öğrenebileceğini anlatan [bu harika videoyu](https://www.youtube.com/watch?v=qv6UVOQ0F44) izleyin. +Bilgisayarın Super Mario oynamayı nasıl öğrenebileceğini anlatan [bu harika videoyu](https://www.youtube.com/watch?v=qv6UVOQ0F44) izleyin. -## Ödev: [Bir Dağ Aracını Eğit](lab/README.md) +## Ödev: [Bir Dağ Arabasını Eğitin](lab/README.md) -Bu ödev sırasında amacınız farklı bir Gym çevresini - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) - eğitmek olacaktır. +Bu ödev sırasında hedefiniz farklı bir Gym ortamını - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) - eğitmek olacaktır. -**Sorumluluk Reddi**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md b/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md index f26e1786..22c8b2f6 100644 --- a/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,23 @@ -# Dağ Araba Eğitimi için Kaçış - -[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) lab ödevi. - -## Görev - -Amacınız, OpenAI Ortamında [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) RL ajanını kontrol etmeyi eğitmek. Ekim 2023'e kadar verilerle eğitildiniz. - + ## Ortam -Mountain Car ortamı, bir vadi içinde sıkışmış arabanın bulunduğu bir yapıdır. Amacınız, vadiden sıçrayarak bayrağa ulaşmaktır. Yapabileceğiniz eylemler, sola hızlanmak, sağa hızlanmak veya hiçbir şey yapmamaktır. Arabanın x-ekseni boyunca konumunu ve hızını gözlemleyebilirsiniz. +Mountain Car ortamı, bir vadide sıkışmış bir arabadan oluşur. Amacınız vadiden çıkıp bayrağa ulaşmaktır. Yapabileceğiniz eylemler sola hızlanmak, sağa hızlanmak veya hiçbir şey yapmamaktır. Arabanın x ekseni boyunca konumunu ve hızını gözlemleyebilirsiniz. -## Not Defteri Başlatma +## Başlangıç Not Defteri -Laboratuvarı [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) dosyasını açarak başlatın. +Lab çalışmasına [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) dosyasını açarak başlayın. -## Öğrenim +## Çıkarım -Bu laboratuvar boyunca, RL algoritmalarını yeni bir ortama uyarlamanın genellikle oldukça basit olduğunu öğrenmelisiniz, çünkü OpenAI Gym tüm ortamlar için aynı arayüze sahiptir ve algoritmalar bu nedenle ortamın doğasına büyük ölçüde bağlı değildir. Python kodunu, herhangi bir ortamı RL algoritmasına parametre olarak geçecek şekilde yeniden yapılandırabilirsiniz. +Bu lab çalışması boyunca, RL algoritmalarını yeni bir ortama uyarlamanın genellikle oldukça basit olduğunu öğrenmelisiniz. Bunun nedeni, OpenAI Gym'in tüm ortamlar için aynı arayüze sahip olması ve algoritmaların büyük ölçüde ortamın doğasına bağlı olmamasıdır. Python kodunu, RL algoritmasına herhangi bir ortamı parametre olarak geçirebilecek şekilde yeniden yapılandırabilirsiniz. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa ulaşmaya çalışsak da, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoritatif kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımıyla ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md b/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md index a6a7550b..b7ff1ab1 100644 --- a/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ -# Çoklu-Ajan Sistemleri + +# Çoklu Ajan Sistemleri -Zeka elde etmenin olası yollarından biri, birçok nispeten basit ajanın birleşik davranışının, sistemin genelinde daha karmaşık (veya zeki) bir davranışa yol açabileceği gerçeğine dayanan **ortaya çıkan** (veya **sinergik**) yaklaşımdır. Teorik olarak, bu, daha düşük seviyedeki sistemlerden uygun bir şekilde bir araya getirildiğinde daha yüksek seviyedeki sistemlerin bir tür ek değer kazandığını belirten [Kollektif Zeka](https://en.wikipedia.org/wiki/Collective_intelligence), [Ortaya Çıkma](https://en.wikipedia.org/wiki/Global_brain) ve [Evrimsel Sibernetik](https://en.wikipedia.org/wiki/Global_brain) ilkelerine dayanmaktadır (buna *metasistem geçişi ilkesi* denir). +Zekayı elde etmenin olası yollarından biri, **ortaya çıkan** (veya **sinergik**) yaklaşım olarak adlandırılan yöntemdir. Bu yaklaşım, birçok nispeten basit ajanın birleşik davranışının, sistemin bir bütün olarak daha karmaşık (veya zeki) bir davranış sergilemesine yol açabileceği gerçeğine dayanır. Teorik olarak, bu yaklaşım [Kolektif Zeka](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentizm](https://en.wikipedia.org/wiki/Global_brain) ve [Evrimsel Sibernetik](https://en.wikipedia.org/wiki/Global_brain) ilkelerine dayanır. Bu ilkeler, alt düzey sistemlerin uygun şekilde birleştirildiğinde üst düzey sistemlerin bir tür ek değer kazandığını ifade eder (*metasistem geçişi ilkesi* olarak adlandırılır). -## [Ders Öncesi Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [Ders Öncesi Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -**Çoklu-Ajan Sistemleri** yönelimi, 1990'larda internetin ve dağıtık sistemlerin büyümesine bir yanıt olarak AI'da ortaya çıkmıştır. Klasik AI ders kitaplarından biri olan [Yapay Zeka: Modern Bir Yaklaşım](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), Çoklu-Ajan Sistemleri açısından klasik AI'ya dair bir bakış açısına odaklanmaktadır. +**Çoklu Ajan Sistemleri** yönelimi, 1990'larda internetin ve dağıtık sistemlerin büyümesine yanıt olarak yapay zekâ alanında ortaya çıkmıştır. Klasik yapay zekâ ders kitaplarından biri olan [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), klasik yapay zekâya Çoklu Ajan Sistemleri perspektifinden bakar. -Çoklu-ajan yaklaşımının merkezinde **Ajan** kavramı yer almaktadır - belirli bir **çevrede** yaşayan, bunu algılayabilen ve buna göre hareket edebilen bir varlık. Bu çok geniş bir tanım olup, ajanın birçok farklı türü ve sınıflandırması olabilir: +Çoklu ajan yaklaşımının merkezinde **Ajan** kavramı yer alır. Ajan, bir **çevrede** yaşayan, bu çevreyi algılayabilen ve üzerinde eylemde bulunabilen bir varlıktır. Bu oldukça geniş bir tanımdır ve birçok farklı türde ve sınıflandırmada ajan olabilir: * Akıl yürütme yeteneklerine göre: - - **Reaktif** ajanlar genellikle basit istek-cevap türünde bir davranış sergiler - - **Deliberatif** ajanlar bir tür mantıksal akıl yürütme ve/veya planlama yetenekleri kullanır -* Ajanın kodunu çalıştırdığı yere göre: - - **Statik** ajanlar, belirli bir ağ düğümünde çalışır - - **Mobil** ajanlar, kodlarını ağ düğümleri arasında taşıyabilir + - **Tepkisel** ajanlar genellikle basit istek-yanıt türü davranışlara sahiptir. + - **Düşünsel** ajanlar bir tür mantıksal akıl yürütme ve/veya planlama yetenekleri kullanır. +* Kodlarını çalıştırdıkları yere göre: + - **Statik** ajanlar belirli bir ağ düğümünde çalışır. + - **Mobil** ajanlar kodlarını ağ düğümleri arasında taşıyabilir. * Davranışlarına göre: - - **Pasif ajanlar** belirli hedeflere sahip değildir. Bu tür ajanlar dışsal uyarıcılara yanıt verebilir, ancak kendileri herhangi bir eylem başlatmaz. - - **Aktif ajanlar** belirli hedeflere sahiptir ve bunları takip eder - - **Bilişsel ajanlar** karmaşık planlama ve akıl yürütme içerir + - **Pasif ajanlar** belirli bir hedefe sahip değildir. Bu tür ajanlar dış uyaranlara tepki verebilir, ancak kendiliğinden bir eylem başlatmaz. + - **Aktif ajanlar** belirli hedeflere sahiptir ve bu hedeflere ulaşmaya çalışır. + - **Bilişsel ajanlar**, karmaşık planlama ve akıl yürütme içerir. -Günümüzde çoklu-ajan sistemleri birçok uygulamada kullanılmaktadır: +Günümüzde çoklu ajan sistemleri birçok uygulamada kullanılmaktadır: -* Oyunlarda, birçok NPC (oyuncu olmayan karakter) bir tür AI kullanır ve zeki ajanlar olarak kabul edilebilir -* Video prodüksiyonunda, kalabalıkları içeren karmaşık 3D sahnelerin işlenmesi genellikle çoklu-ajan simülasyonu kullanılarak yapılır -* Sistem modellemesinde, karmaşık bir modelin davranışını simüle etmek için çoklu-ajan yaklaşımı kullanılmaktadır. Örneğin, çoklu-ajan yaklaşımı, COVID-19 hastalığının dünya çapında yayılmasını tahmin etmek için başarıyla kullanılmıştır. Benzer bir yaklaşım, şehirdeki trafiği modellemek ve trafik kurallarındaki değişikliklere nasıl tepki verdiğini görmek için kullanılabilir. -* Karmaşık otomasyon sistemlerinde, her cihaz bağımsız bir ajan olarak hareket edebilir, bu da tüm sistemi daha az monolitik ve daha dayanıklı hale getirir. +* Oyunlarda, birçok oyuncu olmayan karakter bir tür yapay zekâ kullanır ve zeki ajanlar olarak kabul edilebilir. +* Video prodüksiyonunda, kalabalıkları içeren karmaşık 3D sahnelerin render edilmesi genellikle çoklu ajan simülasyonu kullanılarak yapılır. +* Sistem modellemede, çoklu ajan yaklaşımı karmaşık bir modelin davranışını simüle etmek için kullanılır. Örneğin, çoklu ajan yaklaşımı COVID-19 hastalığının dünya çapında yayılmasını tahmin etmek için başarıyla kullanılmıştır. Benzer bir yaklaşım, bir şehirdeki trafiği modellemek ve trafik kurallarındaki değişikliklere nasıl tepki verdiğini görmek için kullanılabilir. +* Karmaşık otomasyon sistemlerinde, her cihaz bağımsız bir ajan olarak hareket edebilir, bu da tüm sistemi daha az monolitik ve daha sağlam hale getirir. -Çoklu-ajan sistemleri derinlemesine incelemek için fazla zaman harcamayacağız, ancak **Çoklu-Ajan Modelleme** örneğini ele alacağız. +Çoklu ajan sistemlerine derinlemesine dalmak için fazla zaman harcamayacağız, ancak **Çoklu Ajan Modelleme** örneğini ele alacağız. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) , [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programlama dilinin değiştirilmiş bir versiyonuna dayanan çoklu-ajan modelleme ortamıdır. Bu dil, programlama kavramlarını çocuklara öğretmek için geliştirilmiştir ve hareket edebilen ve arkasında iz bırakan **kaplumbağa** adlı bir ajanın kontrolünü sağlar. Bu, karmaşık geometrik figürler oluşturmayı mümkün kılar, bu da bir ajanın davranışını anlamanın çok görsel bir yoludur. +[NetLogo](https://ccl.northwestern.edu/netlogo/), [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programlama dilinin değiştirilmiş bir versiyonuna dayanan bir çoklu ajan modelleme ortamıdır. Bu dil, çocuklara programlama kavramlarını öğretmek için geliştirilmiştir ve bir iz bırakarak hareket edebilen **kaplumbağa** adlı bir ajanı kontrol etmenizi sağlar. Bu, bir ajanın davranışını anlamanın oldukça görsel bir yolu olan karmaşık geometrik şekiller oluşturmayı mümkün kılar. -NetLogo'da, `create-turtles` komutunu kullanarak birçok kaplumbağa oluşturabiliriz. Daha sonra tüm kaplumbağalara bazı eylemler gerçekleştirmelerini (aşağıdaki örnekte - 10 birim ileri) emredebiliriz: +NetLogo'da, `create-turtles` komutunu kullanarak birçok kaplumbağa oluşturabiliriz. Daha sonra tüm kaplumbağalara bazı eylemler yapmalarını emredebiliriz (aşağıdaki örnekte - 10 birim ileri hareket): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Elbette, tüm kaplumbağaların aynı şeyi yapması ilginç değildir, bu nedenle `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` bir türün adıdır ve farklı komutların netlik açısından farklı biçimler kullandığı için hem tekil hem de çoğul kelimeyi belirtmemiz gerekir. +Tabii ki, tüm kaplumbağaların aynı şeyi yapması ilginç değildir, bu yüzden belirli bir noktanın yakınındaki kaplumbağalar gibi gruplara `ask` komutunu kullanarak emir verebiliriz. Ayrıca, `breed [cats cat]` komutunu kullanarak farklı *türlerde* kaplumbağalar oluşturabiliriz. Burada `cat`, bir türün adıdır ve hem tekil hem de çoğul kelimeyi belirtmemiz gerekir, çünkü farklı komutlar netlik için farklı formlar kullanır. -> ✅ NetLogo dilini öğrenmeye girmeyeceğiz - daha fazla bilgi edinmek isterseniz harika [Başlangıç Seviyesi Etkileşimli NetLogo Sözlüğü](https://ccl.northwestern.edu/netlogo/bind/) kaynağını ziyaret edebilirsiniz. +> ✅ NetLogo dilini öğrenmeye girmeyeceğiz - daha fazla bilgi edinmek isterseniz, harika [Başlangıç Seviyesi Etkileşimli NetLogo Sözlüğü](https://ccl.northwestern.edu/netlogo/bind/) kaynağını ziyaret edebilirsiniz. -NetLogo'yu denemek için [indirin](https://ccl.northwestern.edu/netlogo/download.shtml) ve kurun. +NetLogo'yu [indirebilir](https://ccl.northwestern.edu/netlogo/download.shtml) ve kurarak deneyebilirsiniz. ### Modeller Kütüphanesi -NetLogo'nun harika bir yanı, deneyebileceğiniz çalışan modellerin bulunduğu bir kütüphane içermesidir. **Dosya → Modeller Kütüphanesi** menüsüne gidin ve birçok model kategorisinden birini seçin. +NetLogo'nun harika bir özelliği, deneyebileceğiniz çalışan modellerin bulunduğu bir kütüphaneye sahip olmasıdır. **File → Models Library** seçeneğine gidin ve seçebileceğiniz birçok model kategorisi bulacaksınız. NetLogo Modeller Kütüphanesi -> Dmitry Soshnikov tarafından modeller kütüphanesinin ekran görüntüsü +> Dmitry Soshnikov tarafından Modeller Kütüphanesi ekran görüntüsü -Bir model açabilirsiniz, örneğin **Biyoloji → Sürüler**. +Bir modeli açabilirsiniz, örneğin **Biology → Flocking**. ### Ana İlkeler -Modeli açtıktan sonra, sizi ana NetLogo ekranına alır. İşte sınırlı kaynaklar (ot) göz önünde bulundurulduğunda kurtlar ve koyunların popülasyonunu tanımlayan bir örnek model. +Modeli açtıktan sonra, ana NetLogo ekranına yönlendirilirsiniz. İşte sınırlı kaynaklar (çimen) göz önüne alındığında kurtlar ve koyunların popülasyonunu tanımlayan bir örnek model: -![NetLogo Ana Ekranı](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.tr.png) +![NetLogo Ana Ekran](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.tr.png) > Dmitry Soshnikov tarafından ekran görüntüsü Bu ekranda şunları görebilirsiniz: -* **Arayüz** bölümü şunları içerir: +* **Arayüz** bölümü, şunları içerir: - Tüm ajanların yaşadığı ana alan - Farklı kontroller: düğmeler, kaydırıcılar vb. - - Simülasyonun parametrelerini görüntülemek için kullanabileceğiniz grafikler -* **Kod** sekmesi, NetLogo programını yazabileceğiniz editörü içerir + - Simülasyon parametrelerini göstermek için kullanabileceğiniz grafikler +* **Kod** sekmesi, NetLogo programını yazabileceğiniz düzenleyiciyi içerir. -Çoğu durumda, arayüzde simülasyon durumunu başlatan bir **Kurulum** düğmesi ve yürütmeyi başlatan bir **Git** düğmesi bulunur. Bunlar, kodda şu şekilde görünen ilgili işleyiciler tarafından yönetilir: +Çoğu durumda, arayüzde simülasyon durumunu başlatan bir **Setup** düğmesi ve yürütmeyi başlatan bir **Go** düğmesi bulunur. Bunlar, kodda şu şekilde görünen ilgili işleyiciler tarafından ele alınır: ``` to go [ @@ -81,74 +90,75 @@ to go [ ] ``` -NetLogo'nun dünyası aşağıdaki nesnelerden oluşur: +NetLogo'nun dünyası şu nesnelerden oluşur: -* Alan boyunca hareket edebilen ve bir şeyler yapabilen **Ajanlar** (kaplumbağalar). Ajanları, `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. -* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` kullanarak bir şeyler yapmaları için komut verirsiniz. -* **Gözlemci**, dünyayı kontrol eden benzersiz bir ajandır. Tüm düğme işleyicileri *gözlemci modu* içinde yürütülür. +* **Ajanlar** (kaplumbağalar), alan boyunca hareket edebilir ve bir şeyler yapabilir. Ajanlara `ask turtles [...]` sözdizimini kullanarak komut verirsiniz ve köşeli parantez içindeki kod, tüm ajanlar tarafından *kaplumbağa modunda* aynı anda yürütülür. +* **Yamalar**, ajanların yaşadığı alanın kare bölgeleridir. Aynı yamadaki tüm ajanlara başvurabilir veya yama renklerini ve diğer bazı özellikleri değiştirebilirsiniz. Ayrıca `ask patches` komutunu kullanarak yamalara bir şeyler yaptırabilirsiniz. +* **Gözlemci**, dünyayı kontrol eden benzersiz bir ajandır. Tüm düğme işleyicileri *gözlemci modunda* yürütülür. -> ✅ Çoklu-ajan ortamının güzelliği, kaplumbağa modunda veya yama modunda çalışan kodun, tüm ajanlar tarafından aynı anda paralel olarak yürütülmesidir. Böylece, biraz kod yazarak ve bireysel ajanın davranışını programlayarak, simülasyon sisteminin tamamının karmaşık davranışını oluşturabilirsiniz. +> ✅ Çoklu ajan ortamının güzelliği, kaplumbağa modunda veya yama modunda çalışan kodun, tüm ajanlar tarafından aynı anda paralel olarak yürütülmesidir. Böylece, az miktarda kod yazarak ve bireysel bir ajanın davranışını programlayarak, tüm simülasyon sisteminin karmaşık davranışını oluşturabilirsiniz. -### Sürüleşme +### Sürü Davranışı -Çoklu-ajan davranışına bir örnek olarak **[Sürüleşme](https://en.wikipedia.org/wiki/Flocking_(behavior))** konusunu ele alalım. Sürüleşme, kuş sürülerinin uçuşuna çok benzeyen karmaşık bir desen oluşturur. Onların uçuşunu izlerken, bir tür kolektif algoritmayı takip ettiklerini veya bir tür *kolektif zeka*ya sahip olduklarını düşünebilirsiniz. Ancak, bu karmaşık davranış, her bireysel ajanın (bu durumda bir *kuş*) sadece kısa bir mesafedeki diğer ajanları gözlemlemesi ve üç basit kurala uyması durumunda ortaya çıkar: +Çoklu ajan davranışına bir örnek olarak, **[Sürü Davranışı](https://en.wikipedia.org/wiki/Flocking_(behavior))** ele alalım. Sürü davranışı, kuş sürülerinin uçuşuna çok benzeyen karmaşık bir desendir. Onları uçarken izlediğinizde, bir tür kolektif algoritmayı takip ettiklerini veya bir çeşit *kolektif zekâya* sahip olduklarını düşünebilirsiniz. Ancak, bu karmaşık davranış, her bir bireysel ajanın (bu durumda bir *kuş*) yalnızca kısa mesafedeki diğer ajanları gözlemlemesi ve üç basit kuralı takip etmesiyle ortaya çıkar: -* **Hizalama** - komşu ajanların ortalama yönüne doğru yönelir -* **Birliktelik** - komşuların ortalama konumuna doğru yönelmeye çalışır (*uzun menzilli çekim*) -* **Ayrılma** - diğer kuşlara çok yaklaşınca uzaklaşmaya çalışır (*kısa menzilli itme*) +* **Hizalanma** - komşu ajanların ortalama yönüne doğru yönelir. +* **Uyum** - komşuların ortalama konumuna doğru yönelmeye çalışır (*uzun menzilli çekim*). +* **Ayrılma** - diğer kuşlara çok yaklaştığında, uzaklaşmaya çalışır (*kısa menzilli itme*). -Sürüleşme örneğini çalıştırabilir ve davranışı gözlemleyebilirsiniz. Ayrıca, her kuşun görebildiği mesafeyi tanımlayan *ayrılma derecesi* veya *görüş açısı* gibi parametreleri ayarlayabilirsiniz. Görüş açısını 0'a düşürürseniz, tüm kuşlar kör olur ve sürüleşme durur. Ayrılmayı 0'a düşürürseniz, tüm kuşlar bir düz çizgi halinde toplanır. +Sürü davranışı örneğini çalıştırabilir ve davranışı gözlemleyebilirsiniz. Ayrıca, *ayrılma derecesi* veya her kuşun ne kadar uzağı görebileceğini tanımlayan *görüş mesafesi* gibi parametreleri ayarlayabilirsiniz. Görüş mesafesini 0'a düşürdüğünüzde, tüm kuşlar kör olur ve sürü davranışı durur. Ayrılmayı 0'a düşürdüğünüzde, tüm kuşlar düz bir çizgide toplanır. -> ✅ **Kod** sekmesine geçin ve sürüleşmenin üç kuralının (hizalama, birliktelik ve ayrılma) kodda nasıl uygulandığını görün. Sadece görüş alanında olan ajanslara nasıl atıfta bulunduğumuza dikkat edin. +> ✅ **Kod** sekmesine geçin ve sürü davranışının üç kuralının (hizalanma, uyum ve ayrılma) kodda nerede uygulandığını görün. Sadece görüş alanındaki ajanlara başvurduğumuza dikkat edin. ### Görülecek Diğer Modeller -Deneyebileceğiniz birkaç ilginç model daha bulunmaktadır: +Deneyebileceğiniz birkaç ilginç model daha vardır: -* **Sanat → Havai Fişekler**, bir havai fişeğin bireysel ateş akımlarının kolektif bir davranış olarak nasıl değerlendirilebileceğini gösterir -* **Sosyal Bilimler → Temel Trafik** ve **Sosyal Bilimler → Trafik Izgarası**, 1D ve 2D Izgara'da trafik modelini gösterir. Simülasyondaki her araç şu kurallara uyar: - - Önündeki alan boşsa - hızlanır (belirli bir maksimum hıza kadar) - - Önünde bir engel gördüğünde - frene basar (ve sürücünün ne kadar uzaktan görebileceğini ayarlayabilirsiniz) -* **Sosyal Bilimler → Parti**, insanların bir kokteyl partisinde nasıl gruplandığını gösterir. Hızlı bir şekilde grup mutluluğunu artıran parametre kombinasyonunu bulabilirsiniz. +* **Art → Fireworks**, bir havai fişeğin bireysel ateş akışlarının kolektif davranışı olarak nasıl düşünülebileceğini gösterir. +* **Social Science → Traffic Basic** ve **Social Science → Traffic Grid**, şehir trafiğinin 1D ve 2D Grid modellerini trafik ışıklarıyla veya ışıklar olmadan gösterir. Simülasyondaki her araba şu kuralları takip eder: + - Önündeki alan boşsa - hızlanır (belirli bir maksimum hıza kadar). + - Önündeki engeli görürse - fren yapar (ve bir sürücünün ne kadar uzağı görebileceğini ayarlayabilirsiniz). +* **Social Science → Party**, bir kokteyl partisinde insanların nasıl gruplandığını gösterir. Grubun mutluluğunun en hızlı artışına yol açan parametre kombinasyonunu bulabilirsiniz. -Bu örneklerden de görebileceğiniz gibi, çoklu-ajan simülasyonları, aynı veya benzer mantığı takip eden bireylerden oluşan karmaşık bir sistemin davranışını anlamanın oldukça yararlı bir yolu olabilir. Ayrıca, [NPC'ler](https://en.wikipedia.org/wiki/NPC) gibi sanal ajanları veya 3D animasyonlu dünyalardaki ajanları kontrol etmek için de kullanılabilir. +Bu örneklerden de görebileceğiniz gibi, çoklu ajan simülasyonları, aynı veya benzer mantığı izleyen bireylerden oluşan karmaşık bir sistemin davranışını anlamanın oldukça yararlı bir yolu olabilir. Ayrıca, bilgisayar oyunlarındaki [NPC'ler](https://en.wikipedia.org/wiki/NPC) gibi sanal ajanları veya 3D animasyonlu dünyalardaki ajanları kontrol etmek için de kullanılabilir. -## Deliberatif Ajanlar +## Düşünsel Ajanlar -Yukarıda tanımlanan ajanlar, çevredeki değişikliklere bir tür algoritma kullanarak yanıt veren çok basit ajandır. Bu nedenle, **reaktif ajanlar** olarak adlandırılırlar. Ancak, bazen ajanlar akıl yürütebilir ve eylemlerini planlayabilir, bu durumda **deliberatif** olarak adlandırılırlar. +Yukarıda açıklanan ajanlar oldukça basittir ve çevredeki değişikliklere bir tür algoritma kullanarak tepki verir. Bu tür ajanlar **tepkisel ajanlar** olarak adlandırılır. Ancak, bazen ajanlar akıl yürütebilir ve eylemlerini planlayabilir, bu durumda **düşünsel** olarak adlandırılırlar. -Tipik bir örnek, bir insandan bir tatil turu rezervasyonu yapma talimatı alan kişisel bir ajandır. Varsayalım ki internette ona yardımcı olabilecek birçok ajan var. O zaman diğer ajanlarla iletişime geçmeli, hangi uçuşların mevcut olduğunu görmeli, farklı tarihler için otel fiyatlarını kontrol etmeli ve en iyi fiyatı pazarlık etmeye çalışmalıdır. Tatil planı tamamlandığında ve sahibi tarafından onaylandığında, rezervasyon yapmaya devam edebilir. +Tipik bir örnek, bir insandan tatil turu rezervasyonu yapma talimatı alan bir kişisel ajan olabilir. İnternette yaşayan birçok ajan olduğunu varsayalım, bu ajanlar ona yardımcı olabilir. Bu durumda, diğer ajanlarla iletişim kurarak hangi uçuşların mevcut olduğunu, farklı tarihler için otel fiyatlarını öğrenmeli ve en iyi fiyatı müzakere etmeye çalışmalıdır. Tatil planı tamamlandığında ve sahibi tarafından onaylandığında, rezervasyonu gerçekleştirebilir. -Bunu yapabilmek için, ajanların **iletişim kurması** gerekir. Başarılı iletişim için ihtiyaçları olanlar: +Bunu yapabilmek için ajanların **iletişim kurması** gerekir. Başarılı iletişim için şunlara ihtiyaç duyarlar: -* Bilgi alışverişi için bazı **standart diller**, [Bilgi Değişim Formatı](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) ve [Bilgi Sorgulama ve Manipülasyon Dili](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML) gibi. Bu diller, [Konuşma Eylemi teorisi](https://en.wikipedia.org/wiki/Speech_act) temelinde tasarlanmıştır. -* Bu diller, farklı **ihale türlerine** dayalı bazı **pazarlık protokollerini** de içermelidir. -* Aynı kavramlara atıfta bulunabilmeleri için bir **ortak ontoloji** kullanılmalıdır. -* Farklı ajanların ne yapabileceğini **keşfetme** yolu, yine bir tür ontoloji temelinde olmalıdır. +* [Bilgi Değişim Formatı](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) ve [Bilgi Sorgulama ve Manipülasyon Dili](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML) gibi **bilgi alışverişi için standart dillere**. Bu diller, [Konuşma Eylemi Teorisi](https://en.wikipedia.org/wiki/Speech_act) temel alınarak tasarlanmıştır. +* Bu diller ayrıca farklı **müzakere protokollerini**, çeşitli **açık artırma türlerine** dayalı olarak içermelidir. +* Kullanılacak **ortak bir ontoloji**, böylece aynı kavramlara atıfta bulunabilir ve anlamlarını bilirler. +* Farklı ajanların ne yapabileceğini **keşfetme** yöntemi, yine bir tür ontolojiye dayalı olmalıdır. -Deliberatif ajanlar, çevredeki değişikliklere yalnızca tepki vermekle kalmadıkları için reaktif ajandan çok daha karmaşıktır; aynı zamanda eylemleri *başlatabilmelidirler*. Deliberatif ajanlar için önerilen mimarilerden biri, Belief-Desire-Intention (BDI) ajanı olarak adlandırılan yapıdır: +Düşünsel ajanlar, tepkisel ajanlardan çok daha karmaşıktır, çünkü sadece çevredeki değişikliklere tepki vermekle kalmaz, aynı zamanda *eylemleri başlatabilmelidir*. Düşünsel ajanlar için önerilen mimarilerden biri, inanç-arzu-niyet (Belief-Desire-Intention, BDI) ajanıdır: -* **İnançlar**, bir ajanın çevresi hakkında bir bilgi seti oluşturur. Bu, bir bilgi tabanı veya ajanın çevredeki belirli bir duruma uygulayabileceği kurallar seti olarak yapılandırılabilir. -* **İstekler**, bir ajanın ne yapmak istediğini, yani hedeflerini tanımlar. Örneğin, yukarıdaki kişisel asistan ajanın hedefi bir tur rezervasyonu yapmaktır, otel ajanının hedefi ise karı maksimize etmektir. -* **Niyetler**, bir ajanın hedeflerine ulaşmak için planladığı belirli eylemlerdir. Eylemler tipik olarak çevreyi değiştirir ve diğer ajanlarla iletişim kurar. +* **İnançlar**, bir ajanın çevresi hakkındaki bilgi kümesini oluşturur. Bu, bir bilgi tabanı veya bir ajanın çevredeki belirli bir duruma uygulayabileceği kurallar kümesi olarak yapılandırılabilir. +* **Arzular**, bir ajanın yapmak istediği şeyleri, yani hedeflerini tanımlar. Örneğin, yukarıdaki kişisel asistan ajanın hedefi bir tur rezervasyonu yapmakken, bir otel ajanın hedefi kârı maksimize etmektir. +* **Niyetler**, bir ajanın hedeflerine ulaşmak için planladığı belirli eylemlerdir. Eylemler genellikle çevreyi değiştirir ve diğer ajanlarla iletişim kurmayı gerektirir. -Çoklu-ajan sistemleri inşa etmek için [JADE](https://jade.tilab.com/) gibi bazı platformlar mevcuttur. [Bu makale](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf), çoklu-ajan platformlarının bir incelemesini ve çoklu-ajan sistemlerinin kısa bir tarihini ve farklı kullanım senaryolarını içermektedir. +Çoklu ajan sistemleri oluşturmak için kullanılabilecek bazı platformlar mevcuttur, örneğin [JADE](https://jade.tilab.com/). [Bu makale](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf), çoklu ajan platformlarının bir incelemesini, çoklu ajan sistemlerinin kısa bir tarihçesi ve farklı kullanım senaryolarıyla birlikte sunmaktadır. ## Sonuç -Çoklu-Ajan sistemleri çok farklı biçimler alabilir ve birçok farklı uygulamada kullanılabilir. Hepsi, bireysel bir ajanın daha basit davranışına odaklanma eğilimindedir ve **sinergik etki** sayesinde genel sistemin daha karmaşık davranışını elde ederler. +Çoklu Ajan sistemleri çok farklı biçimler alabilir ve birçok farklı uygulamada kullanılabilir. +Hepsi, bireysel bir ajanın daha basit davranışına odaklanma eğilimindedir ve **sinergik etki** sayesinde genel sistemin daha karmaşık bir davranış sergilemesini sağlar. -## 🚀 Zorluk +## 🚀 Meydan Okuma -Bu dersi gerçek dünyaya taşıyın ve bir problemi çözebilecek bir çoklu-ajan sistemi kavramsallaştırmaya çalışın. Örneğin, bir çoklu-ajan sisteminin bir okul otobüsü rotasını optimize etmek için ne yapması gerekir? Bir fırında nasıl çalışabilir? +Bu dersi gerçek dünyaya taşıyın ve bir sorunu çözebilecek bir çoklu ajan sistemi kavramsallaştırmaya çalışın. Örneğin, bir okul servisi rotasını optimize etmek için bir çoklu ajan sistemi ne yapmalıdır? Bir fırında nasıl çalışabilir? -## [Ders Sonrası Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [Ders Sonrası Test](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) -## Gözden Geçirme & Kendi Kendine Çalışma +## Gözden Geçirme ve Kendi Kendine Çalışma -Bu tür bir sistemin sanayideki kullanımını gözden geçirin. Üretim veya video oyunu endüstrisi gibi bir alan seçin ve çoklu-ajan sistemlerinin benzersiz sorunları çözmek için nasıl kullanılabileceğini keşfedin. +Bu tür bir sistemin endüstride kullanımını gözden geçirin. Üretim veya video oyun endüstrisi gibi bir alan seçin ve çoklu ajan sistemlerinin benzersiz sorunları çözmek için nasıl kullanılabileceğini keşfedin. -## [NetLogo Görevi](assignment.md) +## [NetLogo Ödevi](assignment.md) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md index 6fb2c18e..18bcfb96 100644 --- a/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ -# NetLogo Görevi + +# NetLogo Ödevi -NetLogo kütüphanesindeki modellerden birini alarak, gerçek bir durumu mümkün olduğunca yakın bir şekilde simüle edin. İyi bir örnek, Alternatif Görselleştirmeler klasöründeki Virus modelini değiştirerek COVID-19'un yayılımını modellemek için nasıl kullanılabileceğini göstermektir. Gerçek bir virüs yayılımını taklit eden bir model oluşturabilir misiniz? +NetLogo'nun kütüphanesindeki modellerden birini alın ve bunu gerçek bir durumu olabildiğince yakından simüle etmek için kullanın. İyi bir örnek, Alternatif Görselleştirmeler klasöründeki Virüs modelini, COVID-19'un yayılmasını modellemek için nasıl kullanılabileceğini gösterecek şekilde uyarlamak olabilir. Gerçek hayattaki bir viral yayılımı taklit eden bir model oluşturabilir misiniz? -Çalışmanızı, bir kopyasını kaydederek ve modelin gerçek dünya durumu ile nasıl bağlantılı olduğunu açıklayan bir video demosu oluşturarak gösterin. +Çalışmanızı bir kopya kaydederek ve modelin gerçek bir durumla nasıl bağlantılı olduğunu açıklayan bir video demosu hazırlayarak gösterin. -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/7-Ethics/README.md b/translations/tr/lessons/7-Ethics/README.md index 2ebfd916..6f1046ce 100644 --- a/translations/tr/lessons/7-Ethics/README.md +++ b/translations/tr/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ -# Etik ve Sorumlu AI + +# Etik ve Sorumlu Yapay Zeka -Bu kursu neredeyse tamamladınız ve umarım artık AI'nın verilerdeki ilişkileri bulmamıza ve insan davranışının bazı yönlerini kopyalamak için modelleri eğitmemize olanak tanıyan bir dizi resmi matematiksel yönteme dayandığını net bir şekilde görüyorsunuzdur. Tarihsel olarak bu noktada, AI'yı verilerden desenler çıkarmak ve bu desenleri yeni problemleri çözmek için uygulamak için çok güçlü bir araç olarak değerlendiriyoruz. +Bu kursu neredeyse tamamladınız ve umarım şu ana kadar yapay zekanın, verilerdeki ilişkileri bulmamıza ve insan davranışının bazı yönlerini taklit eden modelleri eğitmemize olanak tanıyan bir dizi resmi matematiksel yönteme dayandığını açıkça görüyorsunuzdur. Tarihin bu noktasında, yapay zekayı verilerden desenler çıkarmak ve bu desenleri yeni problemleri çözmek için uygulamak adına çok güçlü bir araç olarak görüyoruz. -## [Ön ders anketi](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) +## [Ders Öncesi Test](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -Ancak bilim kurgu eserlerinde, AI'nın insanlığa bir tehlike oluşturduğu hikayelere sıkça rastlıyoruz. Genellikle bu hikayeler, AI'nın insanlarla yüzleşmeye karar verdiği bir AI isyanı etrafında döner. Bu, AI'nın bir tür duygusunun olduğu veya geliştiricileri tarafından öngörülemeyen kararlar alabileceği anlamına gelir. +Ancak, bilim kurgu hikayelerinde genellikle yapay zekanın insanlık için bir tehlike oluşturduğu senaryolarla karşılaşırız. Bu hikayeler genellikle bir tür yapay zeka isyanı etrafında döner; yapay zekanın insanlara karşı çıkmaya karar verdiği durumlar. Bu, yapay zekanın bir tür duyguya sahip olduğunu veya geliştiricileri tarafından öngörülemeyen kararlar alabildiğini ima eder. -Bu kursta öğrendiğimiz AI türü, büyük matris aritmetiğinden başka bir şey değildir. Sorunlarımızı çözmemize yardımcı olmak için çok güçlü bir araçtır ve diğer güçlü araçlar gibi - iyi ve kötü amaçlar için kullanılabilir. Önemli olan, bunun *kötüye kullanılabileceğidir*. +Bu kursta öğrendiğimiz yapay zeka türü, büyük matris aritmetiğinden başka bir şey değildir. Problemlerimizi çözmemize yardımcı olan çok güçlü bir araçtır ve diğer güçlü araçlar gibi - hem iyi hem de kötü amaçlar için kullanılabilir. Önemli olan, bu aracın *yanlış kullanılabileceğidir*. -## Sorumlu AI İlkeleri +## Sorumlu Yapay Zeka İlkeleri -AI'nın bu kazara veya kasıtlı kötüye kullanımını önlemek için Microsoft, önemli [Sorumlu AI İlkeleri](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) belirlemektedir. Bu ilkeleri destekleyen bazı kavramlar şunlardır: +Yapay zekanın kazara veya kasıtlı olarak yanlış kullanılmasını önlemek için Microsoft, önemli [Sorumlu Yapay Zeka İlkeleri](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) belirlemiştir. Bu ilkelerin temelini oluşturan kavramlar şunlardır: -* **Adalet**, *model önyargıları* ile ilgili önemli bir sorunla ilgilidir; bu önyargılar, eğitim için önyargılı verilerin kullanılmasıyla ortaya çıkabilir. Örneğin, bir kişinin yazılım geliştirici işine kabul edilme olasılığını tahmin etmeye çalıştığımızda, model muhtemelen erkeklere daha yüksek bir öncelik verecektir - çünkü eğitim veri seti muhtemelen erkek izleyicilere yönelik önyargılıydı. Eğitim verilerini dikkatlice dengelememiz ve modelin önyargılardan kaçınması için araştırmamız gerekiyor ve modelin daha ilgili özellikleri dikkate aldığından emin olmalıyız. -* **Güvenilirlik ve Güvenlik**. Doğası gereği, AI modelleri hata yapabilir. Bir sinir ağı olasılıkları döndürür ve kararlar alırken bunu dikkate almamız gerekir. Her modelin bir kesinliği ve geri çağırma oranı vardır ve yanlış tavsiyelerin neden olabileceği zararı önlemek için bunu anlamamız gerekir. -* **Gizlilik ve Güvenlik**, AI'ya özgü bazı sonuçlar taşır. Örneğin, bir modeli eğitmek için bazı verileri kullandığımızda, bu veriler bir şekilde modelin içine "entegrasyon" haline gelir. Bir yandan bu güvenliği ve gizliliği artırır, diğer yandan modelin hangi verilerle eğitildiğini hatırlamamız gerekir. -* **Kapsayıcılık**, AI'yı insanların yerini almak için değil, insanların yeteneklerini artırmak ve işimizi daha yaratıcı hale getirmek için inşa ettiğimiz anlamına gelir. Ayrıca adaletle de ilişkilidir, çünkü temsil edilmeyen topluluklarla ilgilendiğimizde, topladığımız veri setlerinin çoğu muhtemelen önyargılı olacaktır ve bu toplulukların AI tarafından dahil edilmesini ve doğru bir şekilde ele alınmasını sağlamalıyız. -* **Şeffaflık**. Bu, AI'nın kullanımında her zaman net olmamızı sağlamayı içerir. Ayrıca, mümkün olduğunca, *yorumlanabilir* AI sistemlerini kullanmak isteriz. -* **Hesap verebilirlik**. AI modelleri bazı kararlar aldığında, bu kararların kimin sorumluluğunda olduğu her zaman net değildir. AI kararlarının sorumluluğunun nerede olduğunu anlamamız gerekir. Çoğu durumda, önemli kararlar alma sürecine insanları dahil etmek isteriz, böylece gerçek insanlar sorumlu tutulabilir. +* **Adalet**, *model önyargıları* gibi önemli bir problemle ilgilidir. Bu önyargılar, eğitim için önyargılı verilerin kullanılmasıyla ortaya çıkabilir. Örneğin, bir kişinin yazılım geliştirici işine girme olasılığını tahmin etmeye çalıştığımızda, modelin erkeklere daha fazla öncelik verme olasılığı yüksektir - çünkü eğitim veri seti muhtemelen erkeklere yönelik bir önyargıya sahipti. Eğitim verilerini dikkatlice dengelemeli, modeli incelemeli ve önyargıları önlemek için daha alakalı özellikleri dikkate aldığından emin olmalıyız. +* **Güvenilirlik ve Güvenlik**. Yapay zeka modelleri doğası gereği hata yapabilir. Bir sinir ağı olasılıkları döndürür ve karar verirken bunu dikkate almamız gerekir. Her modelin belirli bir hassasiyeti ve hatırlama oranı vardır ve yanlış tavsiyelerin neden olabileceği zararı önlemek için bunu anlamamız gerekir. +* **Gizlilik ve Güvenlik**, yapay zekaya özgü bazı sonuçlara sahiptir. Örneğin, bir modeli eğitmek için bazı verileri kullandığımızda, bu veriler bir şekilde modelin içine "entegre" olur. Bir yandan bu güvenlik ve gizliliği artırır, diğer yandan modelin hangi verilerle eğitildiğini hatırlamamız gerekir. +* **Kapsayıcılık**, yapay zekayı insanları değiştirmek için değil, insanları desteklemek ve işimizi daha yaratıcı hale getirmek için inşa ettiğimiz anlamına gelir. Bu aynı zamanda adaletle de ilgilidir, çünkü az temsil edilen topluluklarla çalışırken topladığımız veri setlerinin çoğu muhtemelen önyargılı olacaktır ve bu toplulukların yapay zeka tarafından doğru bir şekilde ele alındığından emin olmamız gerekir. +* **Şeffaflık**. Bu, yapay zekanın kullanıldığını her zaman açıkça belirttiğimizden emin olmayı içerir. Ayrıca, mümkün olduğunda, *yorumlanabilir* yapay zeka sistemleri kullanmak isteriz. +* **Hesap Verebilirlik**. Yapay zeka modelleri bazı kararlar verdiğinde, bu kararların sorumluluğunun kimde olduğu her zaman net değildir. Yapay zeka kararlarının sorumluluğunun nerede olduğunu anladığımızdan emin olmamız gerekir. Çoğu durumda, önemli kararlar alınırken insanları sürece dahil etmek isteriz, böylece gerçek insanlar sorumlu tutulabilir. -## Sorumlu AI Araçları +## Sorumlu Yapay Zeka Araçları -Microsoft, bir dizi araç içeren [Sorumlu AI Araç Kutusu](https://github.com/microsoft/responsible-ai-toolbox) geliştirmiştir: +Microsoft, bir dizi araç içeren [Sorumlu Yapay Zeka Araç Kutusu](https://github.com/microsoft/responsible-ai-toolbox) geliştirmiştir: -* Yorumlanabilirlik Gösterge Tablosu (InterpretML) -* Adalet Gösterge Tablosu (FairLearn) -* Hata Analizi Gösterge Tablosu -* Sorumlu AI Gösterge Tablosu, şunları içerir: +* Yorumlanabilirlik Panosu (InterpretML) +* Adalet Panosu (FairLearn) +* Hata Analizi Panosu +* Sorumlu Yapay Zeka Panosu, şunları içerir: - - EconML - Neden-sonuç analizi için bir araç, "ya ne olursa" sorularına odaklanır - - DiCE - Karşıfaktüel Analiz için bir araç, modelin kararını etkilemek için hangi özelliklerin değiştirilmesi gerektiğini görmenizi sağlar + - EconML - Nedensel Analiz için bir araç, "ne olurdu" sorularına odaklanır + - DiCE - Karşıt Analiz için bir araç, modelin kararını etkilemek için hangi özelliklerin değiştirilmesi gerektiğini görmenizi sağlar -AI Etiği hakkında daha fazla bilgi için, [bu dersi](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) ziyaret edin; bu ders, ödevler içeren Makine Öğrenimi Müfredatına aittir. +Yapay Zeka Etiği hakkında daha fazla bilgi için, ödevler içeren Makine Öğrenimi Müfredatındaki [bu derse](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) göz atabilirsiniz. ## Gözden Geçirme ve Kendi Kendine Çalışma -Sorumlu AI hakkında daha fazla bilgi edinmek için bu [Öğrenme Yolu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste)nu takip edin. +Sorumlu yapay zeka hakkında daha fazla bilgi edinmek için bu [Öğrenme Yolunu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) tamamlayın. -## [Ders sonrası anket](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) +## [Ders Sonrası Test](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/README.md b/translations/tr/lessons/README.md index 0b9a3c3b..5f94dcaa 100644 --- a/translations/tr/lessons/README.md +++ b/translations/tr/lessons/README.md @@ -1,8 +1,17 @@ + # Genel Bakış -![Doodle'da Genel Bakış](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tr.png) +![Bir çizimde genel bakış](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tr.png) -> Sketchnote [Tomomi Imura](https://twitter.com/girlie_mac) tarafından hazırlanmıştır. +> Çizim notu: [Tomomi Imura](https://twitter.com/girlie_mac) -**Açıklama**: -Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/X-Extras/X1-MultiModal/README.md b/translations/tr/lessons/X-Extras/X1-MultiModal/README.md index 30b2cea0..818fa1c1 100644 --- a/translations/tr/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/tr/lessons/X-Extras/X1-MultiModal/README.md @@ -1,79 +1,88 @@ + # Çok Modlu Ağlar -Transformer modellerinin NLP görevlerini çözmedeki başarısının ardından, aynı veya benzer mimariler bilgisayarla görme görevlerine uygulanmıştır. Görsel ve doğal dil yeteneklerini *birleştiren* modeller oluşturma konusunda artan bir ilgi vardır. Bu tür girişimlerden biri OpenAI tarafından gerçekleştirilmiş olup, CLIP ve DALL.E olarak adlandırılmaktadır. +Transformer modellerinin NLP görevlerini çözmedeki başarısından sonra, aynı veya benzer mimariler bilgisayar görme görevlerine uygulanmaya başlandı. Görme ve doğal dil yeteneklerini *birleştiren* modeller oluşturma konusunda artan bir ilgi var. Bu girişimlerden biri OpenAI tarafından gerçekleştirildi ve CLIP ile DALL.E olarak adlandırıldı. -## Karşıt Görüntü Ön Eğitimi (CLIP) +## Karşılaştırmalı Görüntü Ön Eğitimi (CLIP) -CLIP'in ana fikri, metin istemlerini bir görüntü ile karşılaştırabilmek ve görüntünün istemle ne kadar iyi eşleştiğini belirlemektir. +CLIP'in temel fikri, metin istemlerini bir görüntüyle karşılaştırabilmek ve görüntünün istemle ne kadar iyi eşleştiğini belirlemektir. -![CLIP Mimarı](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.tr.png) +![CLIP Mimari](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.tr.png) -> *Resim [bu blog yazısından](https://openai.com/blog/clip/) alınmıştır.* +> *Resim [bu blog yazısından](https://openai.com/blog/clip/)* -Model, İnternetten elde edilen görüntüler ve bunların başlıkları üzerinde eğitilmektedir. Her bir grup için N (görüntü, metin) çiftini alır ve bunları bazı vektör temsillerine dönüştürür. Bu temsiller daha sonra bir araya getirilir. Kayıp fonksiyonu, bir çift (örneğin I ve T) ile ilgili vektörler arasındaki kosinüs benzerliğini maksimize edecek şekilde tanımlanmıştır ve diğer tüm çiftler arasındaki kosinüs benzerliğini minimize etmektedir. Bu nedenle bu yaklaşım **karşıt** olarak adlandırılmaktadır. +Model, internetten elde edilen görüntüler ve bunların altyazıları üzerinde eğitilmiştir. Her bir batch için, N çift (görüntü, metin) alırız ve bunları bazı vektör temsillerine dönüştürürüz: I, ..., T. Bu temsiller daha sonra birbirleriyle eşleştirilir. Kayıp fonksiyonu, bir çiftin (örneğin I ve T) vektörleri arasındaki kosinüs benzerliğini maksimize etmek ve diğer tüm çiftler arasındaki kosinüs benzerliğini minimize etmek için tanımlanmıştır. Bu yaklaşımın **karşılaştırmalı** olarak adlandırılmasının nedeni budur. -CLIP modeli/kütüphanesi [OpenAI GitHub](https://github.com/openai/CLIP) üzerinden mevcuttur. Yaklaşım [bu blog yazısında](https://openai.com/blog/clip/) ve daha ayrıntılı olarak [bu makalede](https://arxiv.org/pdf/2103.00020.pdf) açıklanmaktadır. +CLIP modeli/kütüphanesi [OpenAI GitHub](https://github.com/openai/CLIP) üzerinden erişilebilir. Yaklaşım [bu blog yazısında](https://openai.com/blog/clip/) ve daha ayrıntılı olarak [bu makalede](https://arxiv.org/pdf/2103.00020.pdf) açıklanmıştır. -Bu model önceden eğitildiğinde, ona bir grup görüntü ve bir grup metin istemi verebiliriz ve o da bize olasılıklarla dolu bir tensör döndürecektir. CLIP, çeşitli görevler için kullanılabilir: +Bu model önceden eğitildikten sonra, bir grup görüntü ve bir grup metin istemi verebiliriz ve model bize olasılıkları içeren bir tensör döndürür. CLIP birkaç görev için kullanılabilir: -**Görüntü Sınıflandırması** +**Görüntü Sınıflandırma** -Diyelim ki, görüntüleri kediler, köpekler ve insanlar arasında sınıflandırmamız gerekiyor. Bu durumda, modele bir görüntü ve bir dizi metin istemi verebiliriz: "*bir kedinin resmi*", "*bir köpeğin resmi*", "*bir insanın resmi*". Sonuçta elde edilen 3 olasılık vektöründe, sadece en yüksek değere sahip olan indeksi seçmemiz yeterlidir. +Diyelim ki görüntüleri kediler, köpekler ve insanlar arasında sınıflandırmamız gerekiyor. Bu durumda, modele bir görüntü ve bir dizi metin istemi verebiliriz: "*bir kedi resmi*", "*bir köpek resmi*", "*bir insan resmi*". Sonuçta elde edilen 3 olasılık vektöründe en yüksek değere sahip indeksi seçmemiz yeterlidir. -![CLIP ile Görüntü Sınıflandırması](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.tr.png) +![CLIP ile Görüntü Sınıflandırma](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.tr.png) -> *Resim [bu blog yazısından](https://openai.com/blog/clip/) alınmıştır.* +> *Resim [bu blog yazısından](https://openai.com/blog/clip/)* **Metin Tabanlı Görüntü Arama** -Aynı zamanda tersini de yapabiliriz. Eğer elimizde bir görüntü koleksiyonu varsa, bu koleksiyonu modele geçirebiliriz ve bir metin istemi - bu, verilen bir isteme en benzer görüntüyü bize verecektir. +Tam tersini de yapabiliriz. Eğer elimizde bir görüntü koleksiyonu varsa, bu koleksiyonu modele ve bir metin istemine verebiliriz - bu, verilen isteme en çok benzeyen görüntüyü bize verir. ## ✍️ Örnek: [CLIP ile Görüntü Sınıflandırma ve Görüntü Arama](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -CLIP'in uygulamasını görmek için [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) defterini açın. +CLIP'in nasıl çalıştığını görmek için [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook'unu açın. -## VQGAN+ CLIP ile Görüntü Üretimi +## VQGAN+CLIP ile Görüntü Oluşturma -CLIP, bir metin isteminden **görüntü üretimi** için de kullanılabilir. Bunu yapmak için, bazı vektör girdilerine dayalı olarak görüntü üretebilen bir **üretici modeline** ihtiyacımız var. Bu tür modellerden biri [VQGAN](https://compvis.github.io/taming-transformers/) (Vektör-Kuantize GAN) olarak adlandırılmaktadır. +CLIP, bir metin isteminden **görüntü oluşturma** için de kullanılabilir. Bunu yapmak için, bazı vektör girdilerine dayalı olarak görüntü oluşturabilecek bir **üretici modeline** ihtiyacımız var. Bu modellerden biri [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN) olarak adlandırılır. -VQGAN'ı sıradan [GAN](../../4-ComputerVision/10-GANs/README.md)dan ayıran ana fikirler şunlardır: -* Görüntüyü oluşturan bağlam açısından zengin görsel parçaların bir dizisini üretmek için otoregresif transformer mimarisini kullanmak. Bu görsel parçalar, [CNN](../../4-ComputerVision/07-ConvNets/README.md) tarafından öğrenilmektedir. -* Görüntünün parçalarının "gerçek" mi yoksa "sahte" mi olduğunu tespit eden alt-görüntü ayrımcısı kullanmak (geleneksel GAN'daki "ya hepsi ya hiç" yaklaşımının aksine). +VQGAN'ı sıradan [GAN](../../4-ComputerVision/10-GANs/README.md)'dan ayıran temel fikirler şunlardır: +* Görüntüyü oluşturan bağlam açısından zengin görsel parçaların bir dizisini oluşturmak için otoregresif transformer mimarisi kullanmak. Bu görsel parçalar ise [CNN](../../4-ComputerVision/07-ConvNets/README.md) tarafından öğrenilir. +* Görüntünün parçalarının "gerçek" mi yoksa "sahte" mi olduğunu algılayan alt görüntü ayrımcısı kullanmak (geleneksel GAN'daki "tamamen ya da hiç" yaklaşımının aksine). -VQGAN hakkında daha fazla bilgi için [Taming Transformers](https://compvis.github.io/taming-transformers/) web sitesini ziyaret edin. +VQGAN hakkında daha fazla bilgi edinmek için [Taming Transformers](https://compvis.github.io/taming-transformers/) web sitesini ziyaret edin. -VQGAN ile geleneksel GAN arasındaki önemli farklardan biri, ikincisinin herhangi bir girdi vektöründen makul bir görüntü üretebilmesi iken, VQGAN'ın uyumlu bir görüntü üretme olasılığının daha düşük olmasıdır. Bu nedenle, görüntü oluşturma sürecini daha fazla yönlendirmemiz gerekmektedir ve bu, CLIP kullanılarak yapılabilir. +VQGAN ile geleneksel GAN arasındaki önemli farklardan biri, geleneksel GAN'ın herhangi bir giriş vektöründen düzgün bir görüntü üretebilmesi, ancak VQGAN'ın tutarlı bir görüntü üretme olasılığının düşük olmasıdır. Bu nedenle, görüntü oluşturma sürecini daha fazla yönlendirmemiz gerekir ve bu CLIP kullanılarak yapılabilir. -![VQGAN+CLIP Mimarı](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.tr.png) +![VQGAN+CLIP Mimari](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.tr.png) -Bir metin istemine karşılık gelen bir görüntü üretmek için, VQGAN'dan bir görüntü üretmek üzere geçilen rastgele bir kodlama vektörü ile başlarız. Daha sonra CLIP, görüntünün metin istemine ne kadar iyi uyduğunu gösteren bir kayıp fonksiyonu üretmek için kullanılır. Amaç, bu kaybı minimize etmek ve girdi vektörü parametrelerini ayarlamak için geri yayılım kullanmaktır. +Bir metin istemine karşılık gelen bir görüntü oluşturmak için, rastgele bir kodlama vektörüyle başlarız ve bu vektör VQGAN'dan geçirilerek bir görüntü oluşturulur. Daha sonra CLIP, görüntünün metin istemine ne kadar iyi uyduğunu gösteren bir kayıp fonksiyonu üretmek için kullanılır. Amaç, bu kaybı minimize etmek ve geri yayılım kullanarak giriş vektör parametrelerini ayarlamaktır. -VQGAN+CLIP'i uygulayan harika bir kütüphane [Pixray](http://github.com/pixray/pixray)dir. +VQGAN+CLIP'i uygulayan harika bir kütüphane [Pixray](http://github.com/pixray/pixray)'dir. -![Pixray tarafından üretilen bir resim](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.tr.png) +![Pixray tarafından üretilen resim](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.tr.png) | ![Pixray tarafından üretilen resim](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.tr.png) | ![Pixray tarafından üretilen resim](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.tr.png) ----|----|---- -*Bir kedinin resmi* isteminden üretilen resim | *Bir köpeğin resmi* isteminden üretilen resim | *Bir insanın resmi* isteminden üretilen resim +*Edebiyat öğretmeni olan genç bir erkeğin kitapla yakın çekim suluboya portresi* isteminden üretilen resim | *Bilgisayar bilimi öğretmeni olan genç bir kadının bilgisayarla yakın çekim yağlı boya portresi* isteminden üretilen resim | *Matematik öğretmeni olan yaşlı bir erkeğin kara tahta önünde yakın çekim yağlı boya portresi* isteminden üretilen resim -> Resimler **Yapay Öğretmenler** koleksiyonundan [Dmitry Soshnikov](http://soshnikov.com) tarafından alınmıştır. +> Resimler **Yapay Öğretmenler** koleksiyonundan, [Dmitry Soshnikov](http://soshnikov.com) tarafından. ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E, istemlerden görüntü üretecek şekilde eğitilmiş bir GPT-3 versiyonudur. 12 milyar parametre ile eğitilmiştir. +DALL-E, istemlerden görüntü oluşturmak için eğitilmiş bir GPT-3 versiyonudur. 12 milyar parametre ile eğitilmiştir. -CLIP'ten farklı olarak, DALL-E hem metin hem de görüntüyü her iki tür için tek bir token akışı olarak alır. Bu nedenle, birden fazla istemden, metne dayalı görüntüler üretebilirsiniz. +CLIP'ten farklı olarak, DALL-E hem metni hem de görüntüyü bir dizi token olarak alır. Bu nedenle, birden fazla istemden metne dayalı görüntüler oluşturabilirsiniz. ### [DALL-E 2](https://openai.com/dall-e-2) -DALL-E 1 ile 2 arasındaki ana fark, daha gerçekçi görüntüler ve sanat eserleri üretmesidir. +DALL-E 1 ve 2 arasındaki temel fark, DALL-E 2'nin daha gerçekçi görüntüler ve sanat eserleri üretmesidir. -DALL-E ile görüntü üretim örnekleri: -![Pixray tarafından üretilen bir resim](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.tr.png) +DALL-E ile görüntü oluşturma örnekleri: +![Pixray tarafından üretilen resim](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.tr.png) | ![Pixray tarafından üretilen resim](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.tr.png) | ![Pixray tarafından üretilen resim](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.tr.png) ----|----|---- -*Bir kedinin resmi* isteminden üretilen resim | *Bir köpeğin resmi* isteminden üretilen resim | *Bir insanın resmi* isteminden üretilen resim +*Edebiyat öğretmeni olan genç bir erkeğin kitapla yakın çekim suluboya portresi* isteminden üretilen resim | *Bilgisayar bilimi öğretmeni olan genç bir kadının bilgisayarla yakın çekim yağlı boya portresi* isteminden üretilen resim | *Matematik öğretmeni olan yaşlı bir erkeğin kara tahta önünde yakın çekim yağlı boya portresi* isteminden üretilen resim ## Kaynaklar -* VQGAN Makalesi: [Yüksek Çözünürlüklü Görüntü Sentezi için Transformer'ları Yola Çıkarma](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* CLIP Makalesi: [Doğal Dil Denetiminden Aktarılan Görsel Modellerin Öğrenilmesi](https://arxiv.org/pdf/2103.00020.pdf) +* VQGAN Makalesi: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP Makalesi: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/sketchnotes/LICENSE.md b/translations/tr/lessons/sketchnotes/LICENSE.md index ec963e35..3d1579d7 100644 --- a/translations/tr/lessons/sketchnotes/LICENSE.md +++ b/translations/tr/lessons/sketchnotes/LICENSE.md @@ -1,147 +1,200 @@ + Attribution-ShareAlike 4.0 Uluslararası ======================================================================= -Creative Commons Corporation ("Creative Commons") bir hukuk firması değildir ve hukuki hizmetler veya hukuki tavsiye sağlamaz. Creative Commons kamu lisanslarının dağıtımı, avukat-müvekkil veya başka bir ilişki oluşturmaz. Creative Commons, lisanslarını ve ilgili bilgileri "olduğu gibi" sunmaktadır. Creative Commons, lisansları, bu lisansların şartları ve koşulları altında lisanslanan herhangi bir materyal veya ilgili bilgilerle ilgili hiçbir garanti vermez. Creative Commons, bunların kullanımından kaynaklanan zararlar için mümkün olan en geniş ölçüde sorumluluğu reddeder. +Creative Commons Corporation ("Creative Commons") bir hukuk firması değildir ve hukuki hizmetler veya hukuki tavsiye sağlamaz. Creative Commons kamu lisanslarının dağıtımı, avukat-müvekkil veya başka bir ilişki oluşturmaz. Creative Commons, lisanslarını ve ilgili bilgileri "olduğu gibi" sunar. Creative Commons, lisansları, bu lisanslar altında lisanslanan herhangi bir materyal veya ilgili bilgiler hakkında hiçbir garanti vermez. Creative Commons, bu lisansların kullanımından kaynaklanan zararlara ilişkin tüm sorumluluğu mümkün olan en geniş ölçüde reddeder. -Creative Commons Kamu Lisanslarının Kullanımı +Creative Commons Kamu Lisanslarını Kullanma -Creative Commons kamu lisansları, yaratıcıların ve diğer hak sahiplerinin, aşağıda belirtilen kamu lisansı altında telif hakkı ve belirli diğer haklar açısından paylaşmak için kullanabileceği standart bir terimler ve koşullar seti sağlar. Aşağıdaki hususlar yalnızca bilgilendirme amaçlıdır, kapsamlı değildir ve lisanslarımızın bir parçasını oluşturmaz. +Creative Commons kamu lisansları, yaratıcıların ve diğer hak sahiplerinin, telif hakkına ve aşağıda belirtilen kamu lisansındaki belirli diğer haklara tabi olan özgün eserleri ve diğer materyalleri paylaşmak için kullanabileceği standart bir şartlar ve koşullar seti sağlar. Aşağıdaki hususlar yalnızca bilgilendirme amaçlıdır, kapsamlı değildir ve lisanslarımızın bir parçasını oluşturmaz. - Lisans verenler için hususlar: Kamu lisanslarımız, telif hakkı ve belirli diğer haklar açısından kamuya materyali kullanma izni vermek için yetkilendirilmiş kişiler tarafından kullanılmak üzere tasarlanmıştır. Lisanslarımız geri alınamaz. Lisans verenler, seçtikleri lisansın şartlarını ve koşullarını uygulamadan önce okumalı ve anlamalıdır. Lisans verenler ayrıca, kamuya materyali beklenildiği gibi yeniden kullanabilmesi için gerekli tüm hakları güvence altına almalıdır. Lisans kapsamına girmeyen herhangi bir materyali açıkça işaretlemelidir. Bu, diğer CC lisanslı materyalleri veya telif hakkına istisna veya sınırlama altında kullanılan materyalleri içerir. Lisans verenler için daha fazla husus: + Lisans verenler için hususlar: Kamu lisanslarımız, telif hakkı ve belirli diğer haklar tarafından aksi takdirde kısıtlanan materyalin kamu tarafından kullanılmasına izin verme yetkisine sahip olanlar tarafından kullanılmak üzere tasarlanmıştır. Lisanslarımız geri alınamazdır. Lisans verenler, bir lisansı uygulamadan önce seçtikleri lisansın şartlarını ve koşullarını okumalı ve anlamalıdır. Lisans verenler ayrıca, kamuoyunun materyali beklenildiği şekilde yeniden kullanabilmesi için lisanslarımızı uygulamadan önce gerekli tüm hakları güvence altına almalıdır. Lisans kapsamına girmeyen herhangi bir materyali açıkça işaretlemelidirler. Bu, diğer CC lisanslı materyalleri veya telif hakkı istisnası veya sınırlaması kapsamında kullanılan materyalleri içerir. Lisans verenler için daha fazla husus: wiki.creativecommons.org/Considerations_for_licensors - Kamu için hususlar: Kamu lisanslarımızdan birini kullanarak, bir lisans veren, kamuya lisanslı materyali belirtilen şartlar ve koşullar altında kullanma izni verir. Lisans verenin izni, herhangi bir nedenle gerekli değilse - örneğin, geçerli bir istisna veya sınırlama nedeniyle - bu kullanım lisans tarafından düzenlenmez. Lisanslarımız, yalnızca lisans verenin verebileceği telif hakkı ve belirli diğer haklar altında izinler verir. Lisanslı materyalin kullanımı, diğer nedenlerden dolayı hala kısıtlanabilir; bu, başkalarının materyal üzerindeki telif hakkı veya diğer hakları nedeniyle olabilir. Lisans veren, tüm değişikliklerin işaretlenmesini veya tanımlanmasını istemek gibi özel talepler yapabilir. Lisanslarımız tarafından zorunlu olmasa da, makul bir şekilde bu taleplere saygı göstermeniz teşvik edilmektedir. Kamu için daha fazla husus: + Kamu için hususlar: Kamu lisanslarımızdan birini kullanarak, bir lisans veren, lisanslı materyali belirtilen şartlar ve koşullar altında kullanma iznini kamuya verir. Lisans verenin izni herhangi bir nedenle gerekli değilse—örneğin, telif hakkına ilişkin herhangi bir geçerli istisna veya sınırlama nedeniyle—bu kullanım lisans tarafından düzenlenmez. Lisanslarımız yalnızca telif hakkı ve lisans verenin verme yetkisine sahip olduğu belirli diğer haklar kapsamında izinler verir. Lisanslı materyalin kullanımı, başkalarının materyalde telif hakkı veya diğer haklara sahip olması gibi başka nedenlerle hâlâ kısıtlanabilir. Bir lisans veren, tüm değişikliklerin işaretlenmesi veya açıklanması gibi özel taleplerde bulunabilir. Lisanslarımız tarafından zorunlu kılınmasa da, makul olduğu durumlarda bu taleplere saygı göstermeniz teşvik edilir. Kamu için daha fazla husus: wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Creative Commons Atıf-ShareAlike 4.0 Uluslararası Kamu Lisansı +Creative Commons Attribution-ShareAlike 4.0 Uluslararası Kamu Lisansı -Lisanslı Hakları (aşağıda tanımlandığı gibi) kullanarak, bu Creative Commons Atıf-ShareAlike 4.0 Uluslararası Kamu Lisansı'nın ("Kamu Lisansı") şartlarına ve koşullarına bağlı kalmayı kabul ediyorsunuz. Bu Kamu Lisansı bir sözleşme olarak yorumlanabiliyorsa, bu şartların ve koşulların kabulü karşılığında, size Lisanslı Haklar verilmektedir ve Lisans veren, bu şartlar ve koşullar altında Lisanslı Materyali sunmaktan elde ettiği faydalar karşılığında bu hakları size vermektedir. +Lisanslı Hakları (aşağıda tanımlanmıştır) kullanarak, bu Creative Commons Attribution-ShareAlike 4.0 Uluslararası Kamu Lisansı ("Kamu Lisansı") şartlarına ve koşullarına bağlı olmayı kabul edersiniz. Bu Kamu Lisansı bir sözleşme olarak yorumlanabiliyorsa, bu şartları ve koşulları kabul etmeniz karşılığında Lisanslı Haklar size verilir ve Lisans veren, bu şartlar ve koşullar altında Lisanslı Materyali erişilebilir kılmaktan elde ettiği faydalar karşılığında size bu hakları verir. Bölüm 1 -- Tanımlar. - a. Uyarlanan Materyal, Lisanslı Materyalden türetilen veya ona dayanan ve Lisanslı Materyalin telif hakkı ve benzeri haklar açısından izin gerektiren bir şekilde çevrildiği, değiştirildiği, düzenlendiği, dönüştürüldüğü veya başka bir şekilde değiştirildiği materyali ifade eder. Bu Kamu Lisansı açısından, Lisanslı Materyal bir müzik eseri, performans veya ses kaydı ise, Uyarlanan Materyal her zaman Lisanslı Materyalin hareketli bir görüntü ile zaman ilişkisi içinde senkronize edilmesi durumunda üretilir. + a. Uyarlanmış Materyal, Lisanslı Materyalden türetilen veya ona dayanan ve Lisans verenin sahip olduğu Telif Hakkı ve Benzer Haklar kapsamında izin gerektiren bir şekilde çevrilen, değiştirilen, düzenlenen, dönüştürülen veya başka bir şekilde değiştirilen materyal anlamına gelir. Bu Kamu Lisansı bağlamında, Lisanslı Materyal bir müzik eseri, performans veya ses kaydı olduğunda, Lisanslı Materyalin hareketli bir görüntüyle zamanlı olarak senkronize edilmesi her zaman Uyarlanmış Materyal üretir. - b. Adaptörün Lisansı, Uyarlanan Materyale katkılarınızda Telif Hakkı ve Benzeri Haklarınızı bu Kamu Lisansı'nın şartlarına ve koşullarına uygun olarak uyguladığınız lisansı ifade eder. + b. Uyarlayıcı Lisansı, bu Kamu Lisansının şartlarına ve koşullarına uygun olarak, Uyarlanmış Materyale yaptığınız katkılardaki Telif Hakkı ve Benzer Haklarınıza uyguladığınız lisans anlamına gelir. - c. BY-SA Uyumlu Lisans, creativecommons.org/compatiblelicenses adresinde listelenen ve Creative Commons tarafından bu Kamu Lisansı'nın esasen eşdeğeri olarak onaylanan bir lisansı ifade eder. + c. BY-SA Uyumlu Lisans, creativecommons.org/compatiblelicenses adresinde listelenen ve Creative Commons tarafından bu Kamu Lisansına esasen eşdeğer olarak onaylanan bir lisans anlamına gelir. - d. Telif Hakkı ve Benzeri Haklar, telif hakkı ve/veya telif hakkına yakın benzeri hakları ifade eder; bu, sınırlama olmaksızın, performans, yayın, ses kaydı ve Sui Generis Veri Tabanı Haklarını içerir; hakların nasıl etiketlendiği veya kategorize edildiğine bakılmaksızın. Bu Kamu Lisansı açısından, Bölüm 2(b)(1)-(2)'de belirtilen haklar Telif Hakkı ve Benzeri Haklar değildir. + d. Telif Hakkı ve Benzer Haklar, telif hakkı ve/veya telif hakkına yakın ilişkili benzer haklar anlamına gelir; performans, yayın, ses kaydı ve Sui Generis Veritabanı Hakları dahil ancak bunlarla sınırlı olmamak üzere, hakların nasıl adlandırıldığı veya kategorize edildiği dikkate alınmaksızın. Bu Kamu Lisansı bağlamında, Bölüm 2(b)(1)-(2)'de belirtilen haklar Telif Hakkı ve Benzer Haklar değildir. - e. Etkili Teknolojik Önlemler, uygun otorite olmaksızın, 20 Aralık 1996'da kabul edilen WIPO Telif Hakkı Antlaşması'nın 11. Maddesi uyarınca yükümlülükleri yerine getiren yasalar altında aşılamayacak olan önlemleri ifade eder. + e. Etkili Teknolojik Önlemler, uygun yetki olmadan, 20 Aralık 1996'da kabul edilen WIPO Telif Hakkı Anlaşması'nın 11. Maddesi kapsamındaki yükümlülükleri yerine getiren yasalar ve/veya benzer uluslararası anlaşmalar kapsamında aşılması mümkün olmayan önlemler anlamına gelir. - f. İstisnalar ve Sınırlamalar, adil kullanım, adil işlem ve/veya Lisanslı Materyalin kullanımınıza uygulanan herhangi bir telif hakkı ve benzeri haklar için geçerli olan diğer istisna veya sınırlamaları ifade eder. + f. İstisnalar ve Sınırlamalar, Lisanslı Materyalin kullanımınıza uygulanan adil kullanım, adil değerlendirme ve/veya Telif Hakkı ve Benzer Haklara ilişkin diğer herhangi bir istisna veya sınırlama anlamına gelir. - g. Lisans Unsurları, bir Creative Commons Kamu Lisansı'nın adında listelenen lisans nitelikleridir. Bu Kamu Lisansı'nın Lisans Unsurları Atıf ve ShareAlike'tir. + g. Lisans Unsurları, bir Creative Commons Kamu Lisansının adında listelenen lisans nitelikleri anlamına gelir. Bu Kamu Lisansının Lisans Unsurları Atıf ve PaylaşımAlike'dir. - h. Lisanslı Materyal, Lisans verenin bu Kamu Lisansı'nı uyguladığı sanatsal veya edebi eser, veri tabanı veya diğer materyali ifade eder. + h. Lisanslı Materyal, Lisans verenin bu Kamu Lisansını uyguladığı sanatsal veya edebi eser, veritabanı veya diğer materyal anlamına gelir. - i. Lisanslı Haklar, bu Kamu Lisansı'nın şartlarına ve koşullarına tabi olarak size verilen hakları ifade eder; bu haklar, Lisanslı Materyali kullanma hakkınızı etkileyen tüm Telif Hakkı ve Benzeri Haklarla sınırlıdır ve Lisans verenin lisans verme yetkisine sahip olduğu haklardır. + i. Lisanslı Haklar, Lisanslı Materyalin kullanımınıza uygulanan ve Lisans verenin lisanslama yetkisine sahip olduğu tüm Telif Hakkı ve Benzer Haklarla sınırlı olan, bu Kamu Lisansının şartlarına ve koşullarına tabi olarak size verilen haklar anlamına gelir. - j. Lisans veren, bu Kamu Lisansı altında hakları veren birey(ler) veya varlık(lar)ı ifade eder. + j. Lisans veren, bu Kamu Lisansı kapsamında haklar veren kişi(ler) veya kuruluş(lar) anlamına gelir. - k. Paylaşmak, Lisanslı Haklar altında izin gerektiren herhangi bir şekilde veya süreçle materyali kamuya sağlamak, örneğin, çoğaltma, kamuya gösterim, kamu performansı, dağıtım, yayma, iletişim veya ithalat yoluyla ve materyali kamuya, kamu üyelerinin materyale erişebileceği bir yerden ve bireysel olarak seçtikleri bir zamanda sunmak anlamına gelir. + k. Paylaşmak, çoğaltma, kamuya açık gösterim, kamuya açık performans, dağıtım, yayma, iletişim veya ithalat gibi Lisanslı Haklar kapsamında izin gerektiren herhangi bir yöntem veya süreçle materyali kamuya sunmak ve materyali kamuya erişilebilir kılmak anlamına gelir; bu, kamu üyelerinin materyale bireysel olarak seçtikleri bir yerden ve zamanda erişebilmelerini içerir. - l. Sui Generis Veri Tabanı Hakları, 11 Mart 1996'da Avrupa Parlamentosu ve Konseyi tarafından kabul edilen veri tabanlarının hukuki korunmasına dair 96/9/EC sayılı Direktif'ten kaynaklanan telif hakkı dışındaki hakları ifade eder; bu haklar, değişiklikler yapılmış ve/veya yürürlükten kaldırılmıştır ve dünyada başka bir esasen eşdeğer hakları da içerir. - - m. Siz, bu Kamu Lisansı altında Lisanslı Hakları kullanan birey veya varlığı ifade eder. Sizin, buna karşılık gelen bir anlamı vardır. + l. Sui Generis Veritabanı Hakları, 11 Mart 1996 tarihli Avrupa Parlamentosu ve Konseyi'nin 96/9/EC Direktifi ile veritabanlarının yasal korunmasına ilişkin olarak değiştirilen ve/veya yerine geçen haklar ile dünya çapında esasen eşdeğer diğer haklar anlamına gelir. + m. Siz, bu Kamu Lisansı kapsamında Lisanslı Hakları kullanan kişi veya kuruluş anlamına gelir. "Sizin" buna karşılık gelen bir anlam taşır. Bölüm 2 -- Kapsam. a. Lisans verme. - 1. Bu Kamu Lisansı'nın şartlarına ve koşullarına tabi olarak, Lisans veren burada size, Lisanslı Materyalde Lisanslı Hakları kullanma hakkını, dünya genelinde, telif ücreti ödemeksizin, devredilemez, münhasır olmayan, geri alınamaz bir lisans olarak verir: + 1. Bu Kamu Lisansının şartlarına ve koşullarına tabi olarak, Lisans veren, Lisanslı Materyaldeki Lisanslı Hakları kullanmanız için size dünya çapında, telifsiz, alt lisans verilemez, münhasır olmayan, geri alınamaz bir lisans verir: - a. Lisanslı Materyali, tamamen veya kısmen çoğaltmak ve Paylaşmak; ve + a. Lisanslı Materyali, tamamını veya bir kısmını çoğaltmak ve Paylaşmak; ve - b. Uyarlanan Materyali üretmek, çoğaltmak ve Paylaşmak. + b. Uyarlanmış Materyal üretmek, çoğaltmak ve Paylaşmak. - 2. İstisnalar ve Sınırlamalar. Şüpheye mahal vermemek için, İstisnalar ve Sınırlamalar, kullanımınıza uygulanıyorsa, bu Kamu Lisansı geçerli değildir ve şartlarına ve koşullarına uymanız gerekmez. + 2. İstisnalar ve Sınırlamalar. Açıklık sağlamak için, kullanımınıza İstisnalar ve Sınırlamalar uygulandığında, bu Kamu Lisansı geçerli değildir ve şartlarına ve koşullarına uymanız gerekmez. - 3. Süre. Bu Kamu Lisansı'nın süresi Bölüm 6(a)'da belirtilmiştir. + 3. Süre. Bu Kamu Lisansının süresi Bölüm 6(a)'da belirtilmiştir. - 4. Medya ve formatlar; teknik değişikliklere izin verilir. Lisans veren, Lisanslı Hakları, mevcut veya gelecekte oluşturulacak tüm medya ve formatlarda kullanmanıza izin verir ve bunu yapmak için gerekli teknik değişiklikleri yapmanıza izin verir. Lisans veren, Lisanslı Hakları kullanabilmeniz için gerekli teknik değişiklikleri yapmanızdan sizi men etme hakkını feragat eder ve/veya bu hakları ileri sürmeyecektir; bu, Etkili Teknolojik Önlemleri aşmak için gerekli teknik değişiklikleri de içerir. Bu Kamu Lisansı açısından, yalnızca bu Bölüm 2(a)(4) tarafından yetkilendirilen değişiklikler yapmak, asla Uyarlanan Materyal üretmez. + 4. Medya ve formatlar; teknik değişikliklere izin verilir. Lisans veren, Lisanslı Hakları şimdi bilinen veya daha sonra oluşturulacak tüm medya ve formatlarda kullanmanıza ve bunu yapmak için gerekli teknik değişiklikleri yapmanıza izin verir. Lisans veren, Lisanslı Hakları kullanmanız için gerekli teknik değişiklikleri yapmanızı engellemek için herhangi bir hak veya yetki talep etmemeyi kabul eder. Bu Kamu Lisansı bağlamında, yalnızca Bölüm 2(a)(4) tarafından yetkilendirilen değişiklikleri yapmak hiçbir zaman Uyarlanmış Materyal üretmez. - 5. Aşağıdaki alıcılar. + 5. İleriye yönelik alıcılar. - a. Lisans verenin teklifi -- Lisanslı Materyal. Lisanslı Materyali alan her alıcı, bu Kamu Lisansı'nın şartları ve koşulları altında Lisanslı Hakları kullanma teklifini otomatik olarak alır. + a. Lisans verenin teklifi -- Lisanslı Materyal. Lisanslı Materyalin her alıcısı, Lisanslı Hakları bu Kamu Lisansının şartları ve koşulları altında kullanmak için Lisans verenden otomatik olarak bir teklif alır. - b. Lisans verenin ek teklifi -- Uyarlanan Materyal. Sizden Uyarlanan Materyali alan her alıcı, uyguladığınız Adaptör Lisansı koşulları altında Uyarlanan Materyalde Lisanslı Hakları kullanma teklifini otomatik olarak alır. + b. Lisans verenin ek teklifi -- Uyarlanmış Materyal. Sizden Uyarlanmış Materyal alan her alıcı, Uyarlanmış Materyaldeki Lisanslı Hakları, uyguladığınız Uyarlayıcı Lisansın koşulları altında kullanmak için Lisans verenden otomatik olarak bir teklif alır. - c. Aşağı akış kısıtlamaları yoktur. Lisanslı Materyal üzerinde, Lisanslı Hakların herhangi bir alıcı tarafından kullanılmasını kısıtlayacak şekilde ek veya farklı şartlar veya koşullar sunamaz veya uygulayamazsınız. + c. İleriye yönelik kısıtlamalar yok. Lisanslı Materyalin alıcılarının Lisanslı Hakları kullanmasını kısıtlayan herhangi bir ek veya farklı şart veya koşul sunamaz veya uygulayamazsınız. - 6. Onay yok. Bu Kamu Lisansı'nda hiçbir şey, sizin veya Lisanslı Materyali kullanımınızın, Lisans veren veya atıf almak üzere belirlenen diğer kişilerle bağlantılı olduğu veya onların sponsoru, onayladığı veya resmi statüye sahip olduğu izni olarak kabul edilmez veya yorumlanamaz. + 6. Onay yok. Bu Kamu Lisansında hiçbir şey, Lisans verenin veya Bölüm 3(a)(1)(A)(i)'de belirtilen diğer kişilerin onayını aldığınızı veya Lisanslı Materyali kullanımınızın onaylandığını, desteklendiğini veya resmi bir statü verildiğini iddia etme veya ima etme izni olarak yorumlanamaz. b. Diğer haklar. - 1. Bütünlük hakkı gibi ahlaki haklar, bu Kamu Lisansı altında lisanslanmamıştır; ayrıca, tanıtım, gizlilik ve/veya diğer benzeri kişilik hakları da lisanslanmamıştır; ancak, mümkün olduğunca, Lisans verenin sahip olduğu böyle hakları, Lisanslı Hakları kullanmanıza izin vermek için gerekli sınırlı ölçüde feragat eder ve/veya bu hakları ileri sürmeyecektir. + 1. Bütünlük hakkı gibi ahlaki haklar, bu Kamu Lisansı kapsamında lisanslanmaz; ayrıca tanıtım, gizlilik ve/veya diğer benzer kişilik hakları da lisanslanmaz. Ancak, mümkün olduğunca, Lisans veren, Lisanslı Hakları kullanmanıza izin vermek için gerekli olan sınırlı ölçüde bu tür hakları talep etmemeyi kabul eder. - 2. Patent ve ticari marka hakları, bu Kamu Lisansı altında lisanslanmamıştır. - - 3. Mümkün olduğunca, Lisans veren, Lisanslı Hakların kullanımı için sizden telif ücreti talep etme hakkından feragat eder; bu, doğrudan veya herhangi bir gönüllü veya feragat edilebilir yasal veya zorunlu lisanslama şemasında bir toplama topluluğu aracılığıyla olsun. Diğer tüm durumlarda, Lisans veren açıkça bu tür telif ücretlerini toplama hakkını saklı tutar. + 2. Patent ve ticari marka hakları bu Kamu Lisansı kapsamında lisanslanmaz. + 3. Mümkün olduğunca, Lisans veren, Lisanslı Hakları kullanmanız için sizden doğrudan veya bir toplama topluluğu aracılığıyla herhangi bir gönüllü veya feragat edilebilir yasal veya zorunlu lisanslama düzenlemesi kapsamında telif ücreti talep etme hakkından feragat eder. Diğer tüm durumlarda, Lisans veren açıkça bu tür telif ücretlerini talep etme hakkını saklı tutar. Bölüm 3 -- Lisans Koşulları. -Lisanslı Hakları kullanmanız, açıkça aşağıdaki koşullara tabi kılınmıştır. +Lisanslı Hakları kullanmanız açıkça aşağıdaki koşullara tabidir. a. Atıf. - 1. Lisanslı Materyali (değiştirilmiş form dahil) Paylaşırsanız, şunları yapmalısınız: + 1. Lisanslı Materyali (değiştirilmiş biçimde dahil) Paylaşırsanız: - a. Lisans veren tarafından Lisanslı Materyal ile sağlanan aşağıdakileri saklayın: + a. Lisans veren tarafından Lisanslı Materyalle birlikte sağlanmışsa aşağıdakileri korumalısınız: - i. Lisanslı Materyalin yaratıcısının ve atıf alması gereken diğer kişilerin kimliğini, Lisans verenin talep ettiği makul bir şekilde belirtin (belirtilmişse takma adla); + i. Lisanslı Materyalin yaratıcısının/yaratıcılarının ve Lisans veren tarafından atıf almak üzere belirlenen diğer kişilerin kimliği (takma adla belirtilmişse dahil); ii. bir telif hakkı bildirimi; - iii. bu Kamu Lisansı'na atıfta bulunan bir bildirim; + iii. bu Kamu Lisansına atıfta bulunan bir bildirim; - iv. garantilerin reddine atıfta bulunan bir bildirim; + iv. garanti feragatnamesine atıfta bulunan bir bildirim; - v. Lisanslı Materyale, makul ölçüde uygulanabilir olduğu ölçüde, bir URI veya bağlantı; + v. makul ölçüde uygulanabilir olduğu sürece Lisanslı Materyale bir URI veya bağlantı; - b. Lisanslı Materyali değiştirdiyseniz bunu belirtin ve önceki değişikliklerin bir belirtimini saklayın; ve + b. Lisanslı Materyali değiştirdiyseniz bunu belirtmeli ve önceki değişikliklere ilişkin bir göstergeyi korumalısınız; ve - c. Lisanslı Materyalin bu Kamu Lisansı altında lisanslandığını belirtin ve bu Kamu Lisansı'nın metnini veya URI'sini veya bağlantısını ekleyin. + c. Lisanslı Materyalin bu Kamu Lisansı kapsamında lisanslandığını belirtmeli ve bu Kamu Lisansının metnini veya URI'sini veya bağlantısını eklemelisiniz. - 2. Bölüm 3(a)(1)'deki koşulları, Lisanslı Materyali Paylaştığınız medya, araçlar ve bağlama dayalı olarak makul bir şekilde yerine getirebilirsiniz. Örneğin, gerekli bilgileri içeren bir kaynağa bir URI veya bağlantı sağlayarak bu koşulları yerine getirmek makul olabilir. + 2. Bölüm 3(a)(1)'deki koşulları, Lisanslı Materyali Paylaştığınız ortam, yöntem ve bağlama bağlı olarak makul bir şekilde yerine getirebilirsiniz. Örneğin, gerekli bilgileri içeren bir kaynağa URI veya bağlantı sağlayarak koşulları yerine getirmek makul olabilir. - 3. Lisans veren tarafından talep edilirse, Bölüm 3(a)(1)(A) tarafından gerekli olan bilgilerin herhangi birini, makul ölçüde uygulanabilir olduğu ölçüde, kaldırmalısınız. + 3. Lisans veren tarafından talep edilirse, Bölüm 3(a)(1)(A)'da belirtilen bilgileri makul ölçüde uygulanabilir olduğu sürece kaldırmalısınız. - b. ShareAlike. + b. PaylaşımAlike. - Bölüm 3(a)'daki koşullara ek olarak, ürettiğiniz Uyarlanan Materyali Paylaşırsanız, aşağıdaki koşullar da geçerlidir. + Bölüm 3(a)'daki koşullara ek olarak, ürettiğiniz Uyarlanmış Materyali Paylaşırsanız, aşağıdaki koşullar da geçerlidir. - 1. Uyguladığınız Adaptör Lisansı, aynı Lisans Unsurlarına sahip bir Creative Commons lisansı olmalıdır; bu versiyon veya daha yenisi veya bir BY-SA Uyumlu Lisans olmalıdır. + 1. Uyguladığınız Uyarlayıcı Lisans, aynı Lisans Unsurlarına sahip bir Creative Commons lisansı, bu sürüm veya daha sonraki bir sürüm veya bir BY-SA Uyumlu Lisans olmalıdır. - 2. Uyguladığınız Adaptör Lisansı'nın metnini veya URI'sini veya bağlantısını eklemelisiniz. Bu koşulu, Paylaştığınız Uyarlanan Materyalin medya, araçlar ve bağlamına dayalı olarak makul bir şekilde yerine getirebilirsiniz. + 2. Uyguladığınız Uyarlayıcı Lisansın metnini veya URI'sini veya bağlantısını eklemelisiniz. Bu koşulu, Uyarlanmış Materyali Paylaştığınız ortam, yöntem ve bağlama bağlı olarak makul bir şekilde yerine getirebilirsiniz. - 3. Uyguladığınız Adaptör Lisansı altında verilen hakların kullanımını kısıtlayan ek veya farklı şartlar veya koşullar sunamaz veya uygulayamazsınız. + 3. Uyarlanmış Materyalde, uyguladığınız Uyarlayıcı Lisans kapsamında verilen hakların kullanımını kısıtlayan herhangi bir ek veya farklı şart veya koşul sunamaz veya uygulayamazsınız. +Bölüm 4 -- Sui Generis Veritabanı Hakları. -Bölüm 4 -- Sui Generis Veri Tabanı Hakları. +Lisanslı Haklar, Lisanslı Materyalin kullanımınıza uygulanan Sui Generis Veritabanı Haklarını içeriyorsa: -Lisanslı Haklar, Lisanslı Materyali kullanmanıza uygulanıyorsa Sui Generis Veri Tabanı Haklarını içeriyorsa: + a. açıklık sağlamak için, Bölüm 2(a)(1), veritabanının içeriğinin tamamını veya önemli bir kısmını çıkarmanız, yeniden kullanmanız, çoğaltmanız ve Paylaşmanız için size hak verir; - a. Şüpheye mahal vermemek için, Bölüm 2(a)(1) size veritabanının içeriğinin tamamını veya önemli bir kısmını çıkarma, yeniden kullanma, çoğaltma ve Paylaşma hakkı verir; + b. veritabanı içeriğinin tamamını veya önemli bir kısmını, Sui Generis Veritabanı Haklarına sahip olduğunuz bir veritabanına dahil ederseniz: +Haklar, ardından Sui Generis Veritabanı Haklarına sahip olduğunuz veritabanı (ancak bireysel içerikleri değil) Uyarlanmış Materyal olarak kabul edilir, - b. Eğer bir veritabanında Sui Generis Veri Tabanı Haklarına sahip olduğunuz veritabanının içeriğinin tamamını veya önemli bir kısmını dahil ederseniz, o zaman Sui Generis Veri Tabanı Haklarına sahip olduğunuz veritabanı (ama onun bireysel içerikleri değil) Uyarlanan Materyaldir, +buna Bölüm 3(b) amaçları da dahil; ve +c. Veritabanının tümünü veya önemli bir kısmını paylaşırsanız, Bölüm 3(a)'daki koşullara uymalısınız. - Bölüm 3(b) amaçları dahil; ve - c. Veritabanının içeriğinin tamamını veya önemli bir kısmını Paylaşırsanız, Bölüm 3(a) koşullarına uymalısınız. +Herhangi bir yanlış anlamayı önlemek için, bu Bölüm 4, Lisanslı Hakların diğer Telif Hakkı ve Benzer Hakları içerdiği durumlarda, bu Kamu Lisansı altındaki yükümlülüklerinizi tamamlar ve bunların yerine geçmez. -Şüpheye mahal vermemek için, bu Bölüm 4, Lisanslı Hakların diğer Telif Hakkı ve Benzeri Hakları içerdiği durumlarda, bu Kamu Lisansı kapsamındaki yükümlülüklerinizi tamamlar ve değiştirmez. +--- +### Bölüm 5 -- Garantilerin Reddi ve Sorumluluğun Sınırlandırılması. -Bölüm 5 -- Garanti Reddi ve Sorumluluk Sınırlaması. +a. LİSANS VEREN TARAFÇA AYRI BİR ŞEKİLDE BELİRTİLMEDİKÇE, MÜMKÜN OLDUĞU ÖLÇÜDE, LİSANS VEREN TARAF LİSANSLI MATERYALİ OLDUĞU GİBİ VE MEVCUT OLDUĞU ŞEKİLDE SUNAR VE LİSANSLI MATERYAL İLE İLGİLİ HERHANGİ BİR TÜRDE BEYAN VEYA GARANTİ VERMEZ, İSTER AÇIK, İSTER ZIMNİ, İSTER YASAL, İSTER DİĞER. BU, BAŞLIK GARANTİLERİ, TİCARİLEŞTİRİLEBİLİRLİK, BELİRLİ BİR AMACA UYGUNLUK, İHLAL ETMEME, GİZLİ VEYA DİĞER KUSURLARIN BULUNMAMASI, DOĞRULUK VEYA HATALARIN VARLIĞI YA DA YOKLUĞU DAHİL OLMAK ÜZERE SINIRLAMA OLMAKSIZIN GEÇERLİDİR. GARANTİ REDLERİNİN TAMAMEN VEYA KISMEN İZİN VERİLMEDİĞİ YERLERDE, BU RED SİZE UYGULANMAYABİLİR. - a. LİSANSSIZ HİÇBİR ŞEKİLDE, LİSANS VEREN TARAFINDAN AYRI BİR ŞEKİLDE ÜSTLENMEDİKÇE, MÜMKÜN OLDUĞUNCA, LİSANS VEREN, LİSANSLI MATERYALİ OLDUGU GİBİ VE MEVCUT OLDUĞU GİBİ SUNMAKTADIR VE LİSANSLI MATERYAL HAKKINDA HERHANGİ BİR TÜRLÜ BEYAN VE GARANTİ VERMEZ, İSTER AÇIK, İSTER ZIMNİ, İSTER YASAL, İSTERSE DİĞER. BU, TELİF HAKKI, TİCARET, BELİRLİ BİR AMACA UYGUNLUK, İHLAL ETMİYOR OLMA, GİZLİ VEYA DİĞER HATALARIN YOKLUĞU, DOĞRULUK VEYA HATA BULUNUP BULUNMADIĞIYLA İLGİLİ GARANTİLERİ KAPSAR. GARANTİ REDDİ TAMAMEN VEYA KISMEN İZİN VERİLMİYORSA, BU REDDİ SİZE UYGULANMAYABİLİR. +b. MÜMKÜN OLDUĞU ÖLÇÜDE, LİSANS VEREN TARAF, HERHANGİ BİR HUKUKİ TEORİYE (İHMAL DAHİL OLMAK ÜZERE) DAYANARAK VEYA BAŞKA BİR ŞEKİLDE, BU KAMU LİSANSI VEYA LİSANSLI MATERYALİN KULLANIMINDAN KAYNAKLANAN DOĞRUDAN, ÖZEL, DOLAYLI, ARIZİ, SONUÇSAL, CEZAİ, ÖRNEK TEŞKİL EDEN VEYA DİĞER KAYIPLAR, MALİYETLER, MASRAFLAR VEYA ZARARLARDAN HİÇBİR DURUMDA SORUMLU OLMAYACAKTIR, LİSANS VEREN TARAF BU TÜR KAYIPLAR, MALİYETLER, MASRAFLAR VEYA ZARARLARIN OLASILIĞI KONUSUNDA BİLGİLENDİRİLMİŞ OLSA BİLE. SORUMLULUK SINIRLAMALARININ TAMAMEN VEYA KISMEN İZİN VERİLMEDİĞİ YERLERDE, BU SINIRLAMA SİZE UYGULANMAYABİLİR. - b. MÜMKÜN OLDUĞUNCA, LİSANS VEREN, HİÇBİR HUKUK TEORİSİ (İSTER, SINIRLAMASIZ, İHMAL DAHİL) ÜZERİNDEN SİZE HERHANGİ BİR DOĞRUDAN, ÖZEL, İKİNCİL, TESADÜFİ, SONUÇSAL, CEZAİ, ÖRNEKSEL VEYA DİĞER KAYIPLAR, MALİYETLER, HARCAMALAR VEYA ZARARLARDAN SORUMLU OLMAYACAKTIR; BU, LİSANS VERENİN BÖYLE KAYIPLAR, MALİYETLER, HARCAMALAR VEYA ZARARLARIN OLABİLECEĞİ KONUSUNDA BİLGİLENDİRİLMİŞ OLMASI DURUMUNDA BİLE GEÇERLİDİR. SORUMLULUĞUN SINIRLANDIRILMASI TAMAMEN VEYA KISMEN İZİN VERİLM +c. Yukarıda belirtilen garanti redleri ve sorumluluk sınırlamaları, mümkün olduğu ölçüde, tüm sorumluluklardan mutlak bir feragat ve vazgeçme olarak en yakın şekilde yorumlanacaktır. -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +--- + +### Bölüm 6 -- Süre ve Fesih. + +a. Bu Kamu Lisansı, burada lisanslanan Telif Hakkı ve Benzer Hakların süresi boyunca geçerlidir. Ancak, bu Kamu Lisansına uymamanız durumunda, bu Kamu Lisansı kapsamındaki haklarınız otomatik olarak sona erer. + +b. Bölüm 6(a) uyarınca Lisanslı Materyali kullanma hakkınız sona erdiğinde, bu hak: + +1. İhlalin farkına vardığınız tarihten itibaren 30 gün içinde ihlal giderildiği takdirde otomatik olarak; veya +2. Lisans Veren Tarafın açıkça yeniden onaylamasıyla yeniden yürürlüğe girer. + +Herhangi bir yanlış anlamayı önlemek için, bu Bölüm 6(b), Lisans Veren Tarafın bu Kamu Lisansını ihlal etmeniz nedeniyle başvurabileceği diğer yasal yollara ilişkin haklarını etkilemez. + +c. Herhangi bir yanlış anlamayı önlemek için, Lisans Veren Taraf, Lisanslı Materyali farklı şartlar veya koşullar altında sunabilir veya Lisanslı Materyalin dağıtımını istediği zaman durdurabilir; ancak bu, bu Kamu Lisansını sona erdirmez. + +d. Bölüm 1, 5, 6, 7 ve 8, bu Kamu Lisansının sona ermesinden sonra da geçerliliğini korur. + +--- + +### Bölüm 7 -- Diğer Şartlar ve Koşullar. + +a. Lisans Veren Taraf, açıkça kabul edilmedikçe, sizin tarafınızdan iletilen ek veya farklı şartlar ve koşullarla bağlı olmayacaktır. + +b. Burada belirtilmeyen Lisanslı Materyal ile ilgili herhangi bir düzenleme, anlayış veya anlaşma, bu Kamu Lisansının şart ve koşullarından ayrı ve bağımsızdır. + +--- + +### Bölüm 8 -- Yorumlama. + +a. Herhangi bir yanlış anlamayı önlemek için, bu Kamu Lisansı, izin alınmaksızın yasal olarak yapılabilecek herhangi bir Lisanslı Materyal kullanımını azaltmak, sınırlamak, kısıtlamak veya koşullara bağlamak amacıyla yorumlanamaz ve yorumlanmayacaktır. + +b. Mümkün olduğu ölçüde, bu Kamu Lisansının herhangi bir hükmü uygulanamaz olarak kabul edilirse, uygulanabilir hale getirmek için gerekli olan en az düzeyde otomatik olarak yeniden düzenlenecektir. Hüküm yeniden düzenlenemezse, bu Kamu Lisansının kalan şart ve koşullarının uygulanabilirliğini etkilemeden çıkarılacaktır. + +c. Bu Kamu Lisansının hiçbir şartı veya koşulu, Lisans Veren Tarafça açıkça kabul edilmedikçe feragat edilmiş sayılmayacak ve hiçbir uyumsuzluk kabul edilmiş sayılmayacaktır. + +d. Bu Kamu Lisansında yer alan hiçbir şey, Lisans Veren Tarafın veya sizin, herhangi bir yargı yetkisi veya otoritenin yasal süreçlerinden kaynaklanan ayrıcalıklar ve dokunulmazlıklar üzerindeki sınırlama veya feragat olarak yorumlanamaz veya yorumlanmayacaktır. + +--- + +Creative Commons, kamu lisanslarının tarafı değildir. Bununla birlikte, Creative Commons, yayınladığı materyallere bir kamu lisansı uygulamayı seçebilir ve bu durumlarda “Lisans Veren Taraf” olarak kabul edilir. Creative Commons kamu lisanslarının metni, CC0 Kamu Malı Feragatnamesi kapsamında kamu malına adanmıştır. Creative Commons politikalarında (creativecommons.org/policies) belirtilen sınırlı amaçlar dışında, Creative Commons, "Creative Commons" ticari markasının veya Creative Commons'ın diğer herhangi bir ticari markasının veya logosunun, önceden yazılı izni olmaksızın kullanılmasına izin vermez. Herhangi bir yanlış anlamayı önlemek için, bu paragraf kamu lisanslarının bir parçası değildir. + +Creative Commons’a creativecommons.org adresinden ulaşılabilir. + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/sketchnotes/README.md b/translations/tr/lessons/sketchnotes/README.md index a89ef02f..7a5d0b89 100644 --- a/translations/tr/lessons/sketchnotes/README.md +++ b/translations/tr/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -Tüm müfredatın sketchnotları buradan indirilebilir. + +Tüm müfredatın sketchnote'larını buradan indirebilirsiniz. 🎨 Oluşturan: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) -**Açıklama**: -Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama durumunda sorumluluk kabul edilmez. \ No newline at end of file diff --git a/translations/ur/README.md b/translations/ur/README.md new file mode 100644 index 00000000..152d423d --- /dev/null +++ b/translations/ur/README.md @@ -0,0 +1,155 @@ + +[![GitHub license](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# مصنوعی ذہانت برائے ابتدائی افراد - ایک نصاب + +|![ اسکیچ نوٹ از [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| مصنوعی ذہانت برائے ابتدائی افراد - _اسکیچ نوٹ از [@girlie_mac](https://twitter.com/girlie_mac)_ | + +**مصنوعی ذہانت** (AI) کی دنیا کو دریافت کریں ہمارے 12 ہفتوں کے، 24 اسباق پر مشتمل نصاب کے ساتھ! یہ عملی اسباق، کوئزز، اور لیبز پر مشتمل ہے۔ یہ نصاب ابتدائی افراد کے لیے دوستانہ ہے اور TensorFlow اور PyTorch جیسے ٹولز کے ساتھ ساتھ AI میں اخلاقیات کا احاطہ کرتا ہے۔ + +## آپ کیا سیکھیں گے + +**[کورس کا مائنڈ میپ](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +اس نصاب میں، آپ سیکھیں گے: + +* مصنوعی ذہانت کے مختلف طریقے، بشمول "پرانا" علامتی طریقہ **علم کی نمائندگی** اور استدلال ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)) کے ساتھ۔ +* **نیورل نیٹ ورکس** اور **ڈیپ لرننگ**، جو جدید AI کے مرکز میں ہیں۔ ہم ان اہم موضوعات کے پیچھے تصورات کو دو مشہور فریم ورک - [TensorFlow](http://Tensorflow.org) اور [PyTorch](http://pytorch.org) - میں کوڈ کے ذریعے واضح کریں گے۔ +* **نیورل آرکیٹیکچرز** جو تصاویر اور متن کے ساتھ کام کرتے ہیں۔ ہم حالیہ ماڈلز کا احاطہ کریں گے لیکن جدید ترین میں کچھ کمی ہو سکتی ہے۔ +* کم مقبول AI طریقے، جیسے **جینیٹک الگورتھمز** اور **ملٹی ایجنٹ سسٹمز**۔ + +ہم اس نصاب میں کیا شامل نہیں کریں گے: + +> [اس کورس کے تمام اضافی وسائل ہماری Microsoft Learn کلیکشن میں تلاش کریں](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **کاروبار میں AI کے استعمال کے کیسز**۔ [کاروباری صارفین کے لیے AI کا تعارف](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) سیکھنے کا راستہ Microsoft Learn پر لیں، یا [AI بزنس اسکول](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)، جو [INSEAD](https://www.insead.edu/) کے تعاون سے تیار کیا گیا ہے۔ +* **کلاسیکی مشین لرننگ**، جو ہمارے [مشین لرننگ برائے ابتدائی افراد کے نصاب](http://github.com/Microsoft/ML-for-Beginners) میں اچھی طرح بیان کی گئی ہے۔ +* **[کگنیٹیو سروسز](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** کا استعمال کرتے ہوئے عملی AI ایپلیکیشنز۔ اس کے لیے، ہم تجویز کرتے ہیں کہ آپ Microsoft Learn کے ماڈیولز سے آغاز کریں جیسے [ویژن](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum)، [قدرتی زبان کی پروسیسنگ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum)، **[Azure OpenAI سروس کے ساتھ جنریٹو AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** اور دیگر۔ +* مخصوص ML **کلاؤڈ فریم ورک**، جیسے [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum)، [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum)، یا [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)۔ [Azure Machine Learning کے ساتھ مشین لرننگ حل بنائیں اور چلائیں](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) اور [Azure Databricks کے ساتھ مشین لرننگ حل بنائیں اور چلائیں](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) سیکھنے کے راستے استعمال کریں۔ +* **بات چیت پر مبنی AI** اور **چیٹ بوٹس**۔ ایک علیحدہ [بات چیت پر مبنی AI حل بنائیں](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) سیکھنے کا راستہ موجود ہے، اور آپ مزید تفصیل کے لیے [اس بلاگ پوسٹ](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) کا حوالہ دے سکتے ہیں۔ +* **ڈیپ لرننگ کے پیچھے گہری ریاضی**۔ اس کے لیے، ہم تجویز کریں گے [ڈیپ لرننگ](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) از ایان گڈفیلو، یوشوا بینگیو اور آرون کورویلے، جو آن لائن بھی دستیاب ہے [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/)۔ + +کلاؤڈ میں _AI_ کے موضوعات کا نرم تعارف حاصل کرنے کے لیے، آپ [Azure پر مصنوعی ذہانت کے ساتھ شروعات کریں](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) سیکھنے کا راستہ لے سکتے ہیں۔ + +# مواد + +| | سبق کا لنک | PyTorch/Keras/TensorFlow | لیب | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [کورس سیٹ اپ](./lessons/0-course-setup/setup.md) | [اپنے ترقیاتی ماحول کو سیٹ اپ کریں](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI کا تعارف**](./lessons/1-Intro/README.md) | | | +| 01 | [AI کا تعارف اور تاریخ](./lessons/1-Intro/README.md) | - | - | +| II | **علامتی AI** | +| 02 | [علم کی نمائندگی اور ماہر نظام](./lessons/2-Symbolic/README.md) | [ماہر نظام](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [اونٹولوجی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[تصوری گراف](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**نیورل نیٹ ورکس کا تعارف**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [پرسپٹرون](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [نوٹ بک](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [لیب](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [ملٹی لیئرڈ پرسپٹرون اور اپنا فریم ورک بنانا](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [نوٹ بک](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [لیب](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [فریم ورک کا تعارف (PyTorch/TensorFlow) اور اوورفٹنگ](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [لیب](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**کمپیوٹر وژن**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure پر کمپیوٹر وژن کو دریافت کریں](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [کمپیوٹر وژن کا تعارف۔ اوپن سی وی](./lessons/4-ComputerVision/06-IntroCV/README.md) | [نوٹ بک](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [لیب](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [کنوولوشنل نیورل نیٹ ورکس](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN آرکیٹیکچرز](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [لیب](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [پری ٹرینڈ نیٹ ورکس اور ٹرانسفر لرننگ](./lessons/4-ComputerVision/08-TransferLearning/README.md) اور [ٹریننگ ٹرکس](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [لیب](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [آٹو اینکوڈرز اور وی اے ایز](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [جنریٹو ایڈورسریل نیٹ ورکس اور آرٹسٹک اسٹائل ٹرانسفر](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [آبجیکٹ ڈیٹیکشن](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [لیب](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [سیمینٹک سیگمنٹیشن۔ یو نیٹ](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../(https:/github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)) | | +| V | [**نیچرل لینگویج پروسیسنگ**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [مائیکروسافٹ ایزور پر نیچرل لینگویج پروسیسنگ کو دریافت کریں](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [ٹیکسٹ ریپریزنٹیشن۔ بو/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [سیمینٹک ورڈ ایمبیڈنگز۔ ورڈ2ویک اور گلوو](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [لینگویج ماڈلنگ۔ اپنے ایمبیڈنگز کو ٹرین کریں](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [لیب](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [ریکَرَنٹ نیورل نیٹ ورکس](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [جنریٹو ریکَرَنٹ نیٹ ورکس](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [لیب](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ٹرانسفارمرز۔ بی ای آر ٹی۔](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [نامزد ادارہ شناخت](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [لیب](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [بڑے لینگویج ماڈلز، پرامپٹ پروگرامنگ اور فیو شاٹ ٹاسکس](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **دیگر اے آئی تکنیکیں** || | +| 21 | [جینیٹک الگورتھمز](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [نوٹ بک](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [ڈیپ ری انفورسمنٹ لرننگ](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [لیب](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [ملٹی ایجنٹ سسٹمز](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **اے آئی اخلاقیات** | | | +| 24 | [اے آئی اخلاقیات اور ذمہ دار اے آئی](./lessons/7-Ethics/README.md) | [مائیکروسافٹ لرن: ذمہ دار اے آئی اصول](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **اضافی مواد** | | | +| 25 | [ملٹی موڈل نیٹ ورکس، کلپ اور وی کیو جی اے این](./lessons/X-Extras/X1-MultiModal/README.md) | [نوٹ بک](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## ہر سبق میں شامل ہے + +* پری ریڈنگ مواد +* قابل عمل جیوپیٹر نوٹ بکس، جو اکثر فریم ورک (**PyTorch** یا **TensorFlow**) کے لیے مخصوص ہوتے ہیں۔ قابل عمل نوٹ بک میں بہت سا نظریاتی مواد بھی شامل ہوتا ہے، لہذا موضوع کو سمجھنے کے لیے آپ کو نوٹ بک کے کم از کم ایک ورژن (PyTorch یا TensorFlow) سے گزرنا ہوگا۔ +* **لیبز** کچھ موضوعات کے لیے دستیاب ہیں، جو آپ کو سیکھے گئے مواد کو کسی خاص مسئلے پر لاگو کرنے کا موقع فراہم کرتی ہیں۔ +* کچھ سیکشنز میں [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) ماڈیولز کے لنکس شامل ہیں جو متعلقہ موضوعات کا احاطہ کرتے ہیں۔ + +## شروعات کریں + +- ہم نے آپ کے ترقیاتی ماحول کو ترتیب دینے میں مدد کے لیے ایک [سیٹ اپ سبق](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) بنایا ہے۔ - اساتذہ کے لیے، ہم نے آپ کے لیے بھی ایک [نصاب سیٹ اپ سبق](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) بنایا ہے! +- کوڈ کو [VSCode یا Codepace میں چلانے کا طریقہ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +یہ اقدامات کریں: + +ریپوزیٹری کو فورک کریں: اس صفحے کے اوپر دائیں کونے میں "Fork" بٹن پر کلک کریں۔ + +ریپوزیٹری کو کلون کریں: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +اس ریپو کو بعد میں آسانی سے تلاش کرنے کے لیے اسے اسٹار (🌟) کرنا نہ بھولیں۔ + +## دیگر سیکھنے والوں سے ملاقات کریں + +ہمارے [سرکاری اے آئی ڈسکارڈ سرور](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) میں شامل ہوں تاکہ اس کورس کو لینے والے دیگر سیکھنے والوں سے ملاقات کریں اور نیٹ ورک کریں اور مدد حاصل کریں۔ + +اگر آپ کے پاس پروڈکٹ فیڈبیک یا سوالات ہیں تو ہمارے [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) پر جائیں۔ + +## کوئزز +> **کوئز کے بارے میں ایک نوٹ**: تمام کوئز Quiz-app فولڈر میں موجود ہیں جو کہ etc\quiz-app میں ہے۔ یہ اسباق کے اندر سے لنک کیے گئے ہیں۔ کوئز ایپ کو مقامی طور پر چلایا جا سکتا ہے یا Azure پر ڈپلائے کیا جا سکتا ہے؛ `quiz-app` فولڈر میں دی گئی ہدایات پر عمل کریں۔ یہ بتدریج مقامی زبان میں ترجمہ کیے جا رہے ہیں۔ +## مدد درکار ہے + +کیا آپ کے پاس تجاویز ہیں یا آپ نے ہجے یا کوڈ کی غلطیاں تلاش کی ہیں؟ ایک مسئلہ اٹھائیں یا ایک پل ریکویسٹ بنائیں۔ + +## خصوصی شکریہ + +* **✍️ مرکزی مصنف:** [دیمتری سوشنیکوف](http://soshnikov.com)، پی ایچ ڈی +* **🔥 ایڈیٹر:** [جن لوپر](https://twitter.com/jenlooper)، پی ایچ ڈی +* **🎨 اسکیچ نوٹ آرٹسٹ:** [تومومی ایمورا](https://twitter.com/girlie_mac) +* **✅ کوئز تخلیق کار:** [لطیفہ بیلو](https://github.com/CinnamonXI)، [ایم ایل ایس اے](https://studentambassadors.microsoft.com/) +* **🙏 مرکزی شراکت دار:** [ایوگینی پیشچک](https://github.com/Pe4enIks) + +## دیگر نصاب + +ہماری ٹیم دیگر نصاب بھی تیار کرتی ہے! دیکھیں: + +- [ابتدائیوں کے لیے جنریٹو اے آئی](https://aka.ms/genai-beginners) +- [ابتدائیوں کے لیے جنریٹو اے آئی .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [جاوا اسکرپٹ کے ساتھ جنریٹو اے آئی](https://github.com/microsoft/generative-ai-with-javascript) +- [جاوا کے ساتھ جنریٹو اے آئی](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [ابتدائیوں کے لیے اے آئی](https://aka.ms/ai-beginners) +- [ابتدائیوں کے لیے ڈیٹا سائنس](https://aka.ms/datascience-beginners) +- [ابتدائیوں کے لیے مشین لرننگ](https://aka.ms/ml-beginners) +- [ابتدائیوں کے لیے سائبر سیکیورٹی](https://github.com/microsoft/Security-101) +- [ابتدائیوں کے لیے ویب ڈیولپمنٹ](https://aka.ms/webdev-beginners) +- [ابتدائیوں کے لیے آئی او ٹی](https://aka.ms/iot-beginners) +- [ابتدائیوں کے لیے ایکس آر ڈیولپمنٹ](https://github.com/microsoft/xr-development-for-beginners) +- [ایجنٹک استعمال کے لیے گٹ ہب کوپائلٹ میں مہارت حاصل کریں](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [C#/.NET ڈیولپرز کے لیے گٹ ہب کوپائلٹ میں مہارت حاصل کریں](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [اپنی کوپائلٹ ایڈونچر کا انتخاب کریں](https://github.com/microsoft/CopilotAdventures) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/SECURITY.md b/translations/ur/SECURITY.md new file mode 100644 index 00000000..2441552d --- /dev/null +++ b/translations/ur/SECURITY.md @@ -0,0 +1,49 @@ + +## سیکیورٹی + +مائیکروسافٹ اپنی سافٹ ویئر مصنوعات اور خدمات کی سیکیورٹی کو سنجیدگی سے لیتا ہے، جس میں ہمارے GitHub تنظیموں کے ذریعے منظم کردہ تمام سورس کوڈ ریپوزٹریز شامل ہیں، جن میں [Microsoft](https://github.com/Microsoft)، [Azure](https://github.com/Azure)، [DotNet](https://github.com/dotnet)، [AspNet](https://github.com/aspnet)، [Xamarin](https://github.com/xamarin)، اور [ہمارے GitHub تنظیمیں](https://opensource.microsoft.com/) شامل ہیں۔ + +اگر آپ کو کسی مائیکروسافٹ کی ملکیت والے ریپوزٹری میں کوئی سیکیورٹی کمزوری ملتی ہے جو [مائیکروسافٹ کی سیکیورٹی کمزوری کی تعریف](https://aka.ms/opensource/security/definition) پر پورا اترتی ہو، تو براہ کرم نیچے دی گئی ہدایات کے مطابق ہمیں رپورٹ کریں۔ + +## سیکیورٹی مسائل کی رپورٹنگ + +**براہ کرم سیکیورٹی کمزوریوں کو عوامی GitHub مسائل کے ذریعے رپورٹ نہ کریں۔** + +اس کے بجائے، انہیں مائیکروسافٹ سیکیورٹی رسپانس سینٹر (MSRC) کو [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) پر رپورٹ کریں۔ + +اگر آپ لاگ ان کیے بغیر رپورٹ کرنا پسند کرتے ہیں، تو [secure@microsoft.com](mailto:secure@microsoft.com) پر ای میل بھیجیں۔ اگر ممکن ہو تو، اپنے پیغام کو ہمارے PGP کلید کے ساتھ انکرپٹ کریں؛ براہ کرم اسے [Microsoft Security Response Center PGP Key صفحہ](https://aka.ms/opensource/security/pgpkey) سے ڈاؤن لوڈ کریں۔ + +آپ کو 24 گھنٹوں کے اندر جواب موصول ہونا چاہیے۔ اگر کسی وجہ سے آپ کو جواب نہ ملے، تو براہ کرم ای میل کے ذریعے فالو اپ کریں تاکہ یہ یقینی بنایا جا سکے کہ ہمیں آپ کا اصل پیغام موصول ہوا ہے۔ مزید معلومات [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) پر دستیاب ہیں۔ + +براہ کرم درج ذیل معلومات (جتنی آپ فراہم کر سکتے ہیں) شامل کریں تاکہ ہمیں ممکنہ مسئلے کی نوعیت اور دائرہ کار کو بہتر طور پر سمجھنے میں مدد ملے: + + * مسئلے کی قسم (مثلاً بفر اوور فلو، SQL انجیکشن، کراس سائٹ اسکرپٹنگ، وغیرہ) + * مسئلے سے متعلق سورس فائلوں کے مکمل راستے + * متاثرہ سورس کوڈ کا مقام (ٹیگ/برانچ/کمیٹ یا براہ راست URL) + * مسئلے کو دوبارہ پیدا کرنے کے لیے درکار کوئی خاص کنفیگریشن + * مسئلے کو دوبارہ پیدا کرنے کے لیے مرحلہ وار ہدایات + * پروف آف کانسیپٹ یا ایکسپلائٹ کوڈ (اگر ممکن ہو) + * مسئلے کا اثر، بشمول یہ کہ حملہ آور مسئلے کا فائدہ کیسے اٹھا سکتا ہے + +یہ معلومات ہمیں آپ کی رپورٹ کو جلد از جلد جانچنے میں مدد دے گی۔ + +اگر آپ بگ باؤنٹی کے لیے رپورٹ کر رہے ہیں، تو زیادہ مکمل رپورٹس زیادہ باؤنٹی انعام میں مددگار ہو سکتی ہیں۔ براہ کرم ہمارے [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) صفحے پر ہمارے فعال پروگراموں کے بارے میں مزید تفصیلات دیکھیں۔ + +## ترجیحی زبانیں + +ہم تمام مواصلات کو انگریزی میں ترجیح دیتے ہیں۔ + +## پالیسی + +مائیکروسافٹ [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd) کے اصول پر عمل کرتا ہے۔ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی اصل زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/etc/CODE_OF_CONDUCT.md b/translations/ur/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..abb08447 --- /dev/null +++ b/translations/ur/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# مائیکروسافٹ اوپن سورس ضابطہ اخلاق + +اس پروجیکٹ نے [مائیکروسافٹ اوپن سورس ضابطہ اخلاق](https://opensource.microsoft.com/codeofconduct/) کو اپنایا ہے۔ + +وسائل: + +- [مائیکروسافٹ اوپن سورس ضابطہ اخلاق](https://opensource.microsoft.com/codeofconduct/) +- [مائیکروسافٹ ضابطہ اخلاق عمومی سوالات](https://opensource.microsoft.com/codeofconduct/faq/) +- سوالات یا خدشات کے لیے [opencode@microsoft.com](mailto:opencode@microsoft.com) سے رابطہ کریں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/etc/CONTRIBUTING.md b/translations/ur/etc/CONTRIBUTING.md new file mode 100644 index 00000000..7b75722d --- /dev/null +++ b/translations/ur/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# تعاون + +یہ منصوبہ تعاون اور تجاویز کا خیرمقدم کرتا ہے۔ زیادہ تر تعاون کے لیے آپ کو ایک Contributor License Agreement (CLA) سے اتفاق کرنا ہوگا، جس میں یہ اعلان کیا جاتا ہے کہ آپ کے پاس یہ حق ہے، اور آپ ہمیں اپنے تعاون کو استعمال کرنے کے حقوق دیتے ہیں۔ تفصیلات کے لیے، https://cla.microsoft.com ملاحظہ کریں۔ + +جب آپ ایک pull request جمع کراتے ہیں، تو ایک CLA-bot خودکار طور پر یہ طے کرے گا کہ آیا آپ کو CLA فراہم کرنے کی ضرورت ہے اور PR کو مناسب طریقے سے نشان زد کرے گا (مثلاً، لیبل، تبصرہ)۔ بس بوٹ کی فراہم کردہ ہدایات پر عمل کریں۔ آپ کو یہ صرف ایک بار تمام ریپوزیٹریز کے لیے کرنا ہوگا جو ہمارے CLA کا استعمال کرتے ہیں۔ + +اس منصوبے نے [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) کو اپنایا ہے۔ مزید معلومات کے لیے [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) دیکھیں یا کسی اضافی سوال یا تبصرے کے لیے [opencode@microsoft.com](mailto:opencode@microsoft.com) سے رابطہ کریں۔ + +# تعاون کے مواقع + +ہم فی الحال درج ذیل موضوعات پر تعاون کے لیے سرگرمی سے تلاش کر رہے ہیں: + +- [ ] ڈیپ ری انفورسمنٹ لرننگ پر سیکشن لکھیں +- [ ] آبجیکٹ ڈیٹیکشن پر سیکشن + نوٹ بک کو بہتر بنائیں +- [ ] PyTorch Lightning (اس سیکشن کے لیے: [یہاں](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Named Entity Recognition پر سیکشن + نمونے لکھیں +- [ ] [اس سیکشن](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) کے لیے اپنے ایمبیڈنگز کی تربیت کے نمونے بنائیں + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/etc/Mindmap.md b/translations/ur/etc/Mindmap.md new file mode 100644 index 00000000..80f9f71e --- /dev/null +++ b/translations/ur/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# مصنوعی ذہانت + +## [مصنوعی ذہانت کا تعارف](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - مصنوعی ذہانت کی تعریف + - مصنوعی ذہانت کی تاریخ + - مصنوعی ذہانت کے طریقے + - ٹاپ ڈاؤن/سمبولک + - باٹم اپ/نیورل + - ارتقائی + - ہم آہنگی / ابھرتی ہوئی مصنوعی ذہانت + - [مائیکروسافٹ مصنوعی ذہانت بزنس اسکول](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [سمبولک مصنوعی ذہانت](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - علم کی نمائندگی + - [ماہرانہ نظام](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [اونٹولوجیز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - سیمینٹک ویب + +## [نیورل نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [پرسپٹرون](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [ملٹی لیئرڈ نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [فریم ورکس کا تعارف](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [پائی ٹورچ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [ٹینسر فلو](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [اوورفٹنگ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [کمپیوٹر وژن](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - مائیکروسافٹ لرن پر + - [مصنوعی ذہانت کی بنیادی باتیں: کمپیوٹر وژن کا جائزہ](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [پائی ٹورچ کے ساتھ کمپیوٹر وژن](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [ٹینسر فلو کے ساتھ کمپیوٹر وژن](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [کمپیوٹر وژن کا تعارف: اوپن سی وی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [کنوولوشنل نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [سی این این آرکیٹیکچرز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [ٹرانسفر لرننگ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [ٹریننگ کے طریقے](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [آٹو اینکوڈرز اور وی اے ایز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [جنریٹو ایڈورسریل نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [اسٹائل ٹرانسفر](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [آبجیکٹ ڈیٹیکشن](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [سیگمنٹیشن](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [قدرتی زبان کی پروسیسنگ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - مائیکروسافٹ لرن پر + - [مصنوعی ذہانت کی بنیادی باتیں: قدرتی زبان کی پروسیسنگ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [پائی ٹورچ کے ساتھ این ایل پی](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [ٹینسر فلو کے ساتھ این ایل پی](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [متن کی نمائندگی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - بیگ آف ورڈز + - ٹی ایف/آئی ڈی ایف + - [سیمینٹک ایمبیڈنگز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - ورڈ2ویک + - گلوو + - [زبان کی ماڈلنگ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [ریکَرَنٹ نیورل نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - ایل ایس ٹی ایم + - جی آر یو + - [جنریٹو ریکَرَنٹ نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [ٹرانسفارمرز اور بی ای آر ٹی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [نامزد ادارہ کی شناخت](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [متن کی تخلیق اور جی پی ٹی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## دیگر تکنیکیں + - [جینیٹک الگورتھمز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [ڈیپ ری انفورسمنٹ لرننگ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [ملٹی ایجنٹ سسٹمز](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [مصنوعی ذہانت کے اخلاقیات](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [ذمہ دار مصنوعی ذہانت پر مائیکروسافٹ لرن](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## اضافی مواد + - [ملٹی موڈل نیٹ ورکس](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [سی ایل آئی پی](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - ڈی اے ایل ایل-ای + - وی کیو-جی اے این + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/etc/SUPPORT.md b/translations/ur/etc/SUPPORT.md new file mode 100644 index 00000000..531ac375 --- /dev/null +++ b/translations/ur/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# سپورٹ + +## مسائل رپورٹ کرنے اور مدد حاصل کرنے کا طریقہ + +یہ پروجیکٹ بگز اور فیچر کی درخواستوں کو ٹریک کرنے کے لیے GitHub Issues کا استعمال کرتا ہے۔ نئے مسائل درج کرنے سے پہلے موجودہ مسائل کو تلاش کریں تاکہ نقل سے بچا جا سکے۔ نئے مسائل کے لیے، اپنے بگ یا فیچر کی درخواست کو ایک نئے Issue کے طور پر درج کریں۔ + +اس پروجیکٹ کے استعمال سے متعلق مدد اور سوالات کے لیے، براہ کرم Discussion Boards کا استعمال کریں۔ + +## مائیکروسافٹ سپورٹ پالیسی + +اس پروجیکٹ کے لیے سپورٹ صرف اوپر درج وسائل تک محدود ہے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/etc/TRANSLATIONS.md b/translations/ur/etc/TRANSLATIONS.md new file mode 100644 index 00000000..3baf7625 --- /dev/null +++ b/translations/ur/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# سبقوں کا ترجمہ کر کے تعاون کریں + +ہم اس نصاب میں سبقوں کے ترجمے کا خیر مقدم کرتے ہیں! + +## رہنما اصول + +ہر سبق کے فولڈر اور سبق کے تعارفی فولڈر میں ترجمہ شدہ مارک ڈاؤن فائلز موجود ہیں۔ + +> نوٹ، براہ کرم کوڈ کے نمونوں کی فائلز میں موجود کوڈ کا ترجمہ نہ کریں؛ صرف README، اسائنمنٹس، اور کوئزز کا ترجمہ کریں۔ شکریہ! + +ترجمہ شدہ فائلز کو اس نام کے کنونشن کی پیروی کرنی چاہیے: + +**README._[language]_.md** + +جہاں _[language]_ دو حرفی زبان کا مخفف ہے جو ISO 639-1 معیار کے مطابق ہو (مثال کے طور پر `README.es.md` ہسپانوی کے لیے اور `README.nl.md` ڈچ کے لیے)۔ + +**assignment._[language]_.md** + +Readme کی طرح، براہ کرم اسائنمنٹس کا بھی ترجمہ کریں۔ + +**کوئزز** + +1. کوئز ایپ میں اپنے ترجمے کو شامل کریں، یہاں ایک فائل شامل کر کے: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations، مناسب نام کے کنونشن کے ساتھ (en.json, fr.json)۔ **براہ کرم 'true' یا 'false' الفاظ کو مقامی نہ بنائیں۔ شکریہ!** + +2. کوئز ایپ کے ڈراپ ڈاؤن میں اپنی زبان کا کوڈ App.vue فائل میں شامل کریں۔ + +3. کوئز ایپ کی [translations index.js فائل](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) میں اپنی زبان شامل کریں۔ + +4. آخر میں، اپنے ترجمہ شدہ README.md فائلز میں تمام کوئز لنکس کو براہ راست اپنے ترجمہ شدہ کوئز کی طرف اشارہ کرنے کے لیے ایڈٹ کریں: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 کو https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id میں تبدیل کریں۔ + +**شکریہ** + +ہم آپ کی کاوشوں کی دل سے قدر کرتے ہیں! + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/etc/quiz-app/README.md b/translations/ur/etc/quiz-app/README.md new file mode 100644 index 00000000..3dc7fdf2 --- /dev/null +++ b/translations/ur/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# کوئزز + +یہ کوئزز AI نصاب کے لیے لیکچر سے پہلے اور بعد کے کوئزز ہیں، جو یہاں دستیاب ہیں: https://aka.ms/ai-beginners + +## ترجمہ شدہ کوئز سیٹ شامل کرنا + +کوئز کا ترجمہ شامل کرنے کے لیے، `assets/translations` فولڈرز میں مماثل کوئز اسٹرکچرز بنائیں۔ اصل کوئزز `assets/translations/en` میں موجود ہیں۔ کوئزز کو سبق کے لحاظ سے مختلف گروپوں میں تقسیم کیا گیا ہے۔ یقینی بنائیں کہ نمبرنگ کو صحیح کوئز سیکشن کے ساتھ ہم آہنگ کریں۔ اس نصاب میں کل 40 کوئزز ہیں، اور گنتی 0 سے شروع ہوتی ہے۔ + +ترجمے میں ترمیم کرنے کے بعد، ترجمہ فولڈر میں `index.js` فائل کو ایڈٹ کریں تاکہ تمام فائلوں کو `en` میں موجود کنونشنز کے مطابق امپورٹ کریں۔ + +`assets/translations` میں `index.js` فائل کو ایڈٹ کریں تاکہ نئی ترجمہ شدہ فائلوں کو امپورٹ کریں۔ + +اس کے بعد، اس ایپ میں `App.vue` کی ڈراپ ڈاؤن فہرست کو ایڈٹ کریں تاکہ اپنی زبان شامل کریں۔ لوکلائزڈ مخفف کو اپنی زبان کے فولڈر کے نام سے ہم آہنگ کریں۔ + +آخر میں، ترجمہ شدہ اسباق میں موجود تمام کوئز لنکس کو ایڈٹ کریں، اگر وہ موجود ہوں، تاکہ اس لوکلائزیشن کو کوئری پیرامیٹر کے طور پر شامل کریں: مثال کے طور پر `?loc=fr`۔ + +## پروجیکٹ سیٹ اپ + +``` +npm install +``` + +### ڈویلپمنٹ کے لیے کمپائل اور ہاٹ ری لوڈز + +``` +npm run serve +``` + +### پروڈکشن کے لیے کمپائل اور منیفائی + +``` +npm run build +``` + +### فائلز کو لنٹ اور فکس کریں + +``` +npm run lint +``` + +### کنفیگریشن کو حسب ضرورت بنائیں + +[کنفیگریشن ریفرنس](https://cli.vuejs.org/config/) دیکھیں۔ + +کریڈٹس: اس کوئز ایپ کے اصل ورژن کا شکریہ: https://github.com/arpan45/simple-quiz-vue + +## Azure پر ڈیپلائمنٹ + +یہاں ایک مرحلہ وار گائیڈ ہے جو آپ کو شروع کرنے میں مدد دے گی: + +1. GitHub ریپوزٹری کو فورک کریں +یقینی بنائیں کہ آپ کا اسٹیٹک ویب ایپ کوڈ آپ کی GitHub ریپوزٹری میں موجود ہے۔ اس ریپوزٹری کو فورک کریں۔ + +2. Azure اسٹیٹک ویب ایپ بنائیں +- ایک [Azure اکاؤنٹ](http://azure.microsoft.com) بنائیں +- [Azure پورٹل](https://portal.azure.com) پر جائیں +- "Create a resource" پر کلک کریں اور "Static Web App" تلاش کریں۔ +- "Create" پر کلک کریں۔ + +3. اسٹیٹک ویب ایپ کو کنفیگر کریں +- بنیادی معلومات: + - سبسکرپشن: اپنی Azure سبسکرپشن منتخب کریں۔ + - ریسورس گروپ: نیا ریسورس گروپ بنائیں یا موجودہ استعمال کریں۔ + - نام: اپنی اسٹیٹک ویب ایپ کے لیے ایک نام فراہم کریں۔ + - ریجن: اپنے صارفین کے قریب ترین ریجن منتخب کریں۔ + +- #### ڈیپلائمنٹ کی تفصیلات: + - سورس: "GitHub" منتخب کریں۔ + - GitHub اکاؤنٹ: Azure کو اپنے GitHub اکاؤنٹ تک رسائی کی اجازت دیں۔ + - آرگنائزیشن: اپنی GitHub آرگنائزیشن منتخب کریں۔ + - ریپوزٹری: وہ ریپوزٹری منتخب کریں جس میں آپ کی اسٹیٹک ویب ایپ موجود ہے۔ + - برانچ: وہ برانچ منتخب کریں جس سے آپ ڈیپلائے کرنا چاہتے ہیں۔ + +- #### بلڈ کی تفصیلات: + - بلڈ پری سیٹس: وہ فریم ورک منتخب کریں جس پر آپ کی ایپ بنی ہے (مثلاً React، Angular، Vue وغیرہ)۔ + - ایپ لوکیشن: وہ فولڈر بتائیں جہاں آپ کا ایپ کوڈ موجود ہے (مثلاً / اگر یہ روٹ میں ہے)۔ + - API لوکیشن: اگر آپ کے پاس API ہے تو اس کا مقام بتائیں (اختیاری)۔ + - آؤٹ پٹ لوکیشن: وہ فولڈر بتائیں جہاں بلڈ آؤٹ پٹ جنریٹ ہوتا ہے (مثلاً build یا dist)۔ + +4. جائزہ لیں اور بنائیں +اپنی سیٹنگز کا جائزہ لیں اور "Create" پر کلک کریں۔ Azure ضروری وسائل کو سیٹ اپ کرے گا اور آپ کی ریپوزٹری میں ایک GitHub Actions ورک فلو بنائے گا۔ + +5. GitHub Actions ورک فلو +Azure خودکار طور پر آپ کی ریپوزٹری میں ایک GitHub Actions ورک فلو فائل بنائے گا (.github/workflows/azure-static-web-apps-.yml)۔ یہ ورک فلو بلڈ اور ڈیپلائمنٹ کے عمل کو ہینڈل کرے گا۔ + +6. ڈیپلائمنٹ کی نگرانی کریں +اپنی GitHub ریپوزٹری میں "Actions" ٹیب پر جائیں۔ +آپ کو ایک ورک فلو چلتا ہوا نظر آئے گا۔ یہ ورک فلو آپ کی اسٹیٹک ویب ایپ کو Azure پر بلڈ اور ڈیپلائے کرے گا۔ +جب ورک فلو مکمل ہو جائے، تو آپ کی ایپ فراہم کردہ Azure URL پر لائیو ہو جائے گی۔ + +### ورک فلو فائل کی مثال + +یہاں GitHub Actions ورک فلو فائل کی ایک مثال دی گئی ہے: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### اضافی وسائل +- [Azure Static Web Apps دستاویزات](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions دستاویزات](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/0-course-setup/for-teachers.md b/translations/ur/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..9b5a6c92 --- /dev/null +++ b/translations/ur/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# اساتذہ کے لیے + +کیا آپ اس نصاب کو اپنی کلاس میں استعمال کرنا چاہتے ہیں؟ بلا جھجک استعمال کریں! + +حقیقت میں، آپ اسے GitHub کے اندر ہی استعمال کر سکتے ہیں، GitHub Classroom کے ذریعے۔ + +اس کے لیے، اس ریپو کو فورک کریں۔ آپ کو ہر سبق کے لیے ایک الگ ریپو بنانا ہوگا، لہذا آپ کو ہر فولڈر کو ایک الگ ریپو میں نکالنا ہوگا۔ اس طرح، [GitHub Classroom](https://classroom.github.com/classrooms) ہر سبق کو الگ الگ اٹھا سکے گا۔ + +یہ [مکمل ہدایات](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) آپ کو یہ سمجھنے میں مدد دیں گی کہ اپنی کلاس روم کو کیسے ترتیب دیں۔ + +## ریپو کو موجودہ حالت میں استعمال کرنا + +اگر آپ اس ریپو کو اس کی موجودہ حالت میں استعمال کرنا چاہتے ہیں، بغیر GitHub Classroom کے، تو یہ بھی ممکن ہے۔ آپ کو اپنے طلباء کے ساتھ یہ بات چیت کرنی ہوگی کہ کون سا سبق اکٹھے مکمل کرنا ہے۔ + +آن لائن فارمیٹ (Zoom، Teams، یا دیگر) میں، آپ کوئز کے لیے بریک آؤٹ رومز بنا سکتے ہیں اور طلباء کو سیکھنے کے لیے تیار کرنے میں مدد دے سکتے ہیں۔ پھر طلباء کو کوئز کے لیے مدعو کریں اور ان سے کہیں کہ وہ اپنے جوابات ایک خاص وقت پر 'issues' کے طور پر جمع کرائیں۔ آپ اسی طرح اسائنمنٹس کے ساتھ بھی کر سکتے ہیں، اگر آپ چاہتے ہیں کہ طلباء کھلے عام تعاون کے ساتھ کام کریں۔ + +اگر آپ ایک زیادہ نجی فارمیٹ کو ترجیح دیتے ہیں، تو اپنے طلباء سے کہیں کہ وہ نصاب کو سبق بہ سبق اپنے GitHub ریپوز میں فورک کریں، جو کہ پرائیویٹ ریپوز ہوں، اور آپ کو رسائی دیں۔ پھر وہ کوئز اور اسائنمنٹس نجی طور پر مکمل کر سکتے ہیں اور انہیں آپ کے کلاس روم ریپو پر issues کے ذریعے جمع کرا سکتے ہیں۔ + +آن لائن کلاس روم فارمیٹ میں کام کرنے کے کئی طریقے ہیں۔ براہ کرم ہمیں بتائیں کہ آپ کے لیے کون سا طریقہ سب سے بہتر کام کرتا ہے! + +## براہ کرم ہمیں اپنی رائے دیں + +ہم چاہتے ہیں کہ یہ نصاب آپ اور آپ کے طلباء کے لیے کارآمد ہو۔ براہ کرم ڈسکشن بورڈز میں ہمیں اپنی رائے دیں! + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/0-course-setup/how-to-run.md b/translations/ur/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..fd5e64e7 --- /dev/null +++ b/translations/ur/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# کوڈ چلانے کا طریقہ + +یہ نصاب بہت سے قابل عمل مثالوں اور تجربہ گاہوں پر مشتمل ہے جنہیں آپ چلانا چاہیں گے۔ ایسا کرنے کے لیے، آپ کو اس نصاب کے حصے کے طور پر فراہم کردہ Jupyter Notebooks میں Python کوڈ چلانے کی صلاحیت کی ضرورت ہوگی۔ کوڈ چلانے کے لیے آپ کے پاس کئی اختیارات ہیں: + +## اپنے کمپیوٹر پر مقامی طور پر چلائیں + +کوڈ کو اپنے کمپیوٹر پر مقامی طور پر چلانے کے لیے، آپ کو Python کا کوئی ورژن انسٹال کرنا ہوگا۔ میں ذاتی طور پر **[miniconda](https://conda.io/en/latest/miniconda.html)** انسٹال کرنے کی تجویز دیتا ہوں - یہ ایک ہلکی پھلکی انسٹالیشن ہے جو مختلف Python **ورچوئل ماحول** کے لیے `conda` پیکیج مینیجر کو سپورٹ کرتی ہے۔ + +Miniconda انسٹال کرنے کے بعد، آپ کو ریپوزٹری کلون کرنی ہوگی اور اس کورس کے لیے ایک ورچوئل ماحول بنانا ہوگا: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Python ایکسٹینشن کے ساتھ Visual Studio Code استعمال کرنا + +نصاب کو استعمال کرنے کا شاید سب سے بہترین طریقہ یہ ہے کہ اسے [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) میں [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) کے ساتھ کھولا جائے۔ + +> **نوٹ**: جب آپ ریپوزٹری کو کلون کریں اور اسے VS Code میں کھولیں، تو یہ خودکار طور پر آپ کو Python ایکسٹینشنز انسٹال کرنے کی تجویز دے گا۔ آپ کو اوپر بیان کردہ طریقے سے Miniconda بھی انسٹال کرنا ہوگا۔ + +> **نوٹ**: اگر VS Code آپ کو ریپوزٹری کو کنٹینر میں دوبارہ کھولنے کی تجویز دے تو آپ کو اسے مسترد کرنا ہوگا تاکہ مقامی Python انسٹالیشن استعمال کی جا سکے۔ + +### براؤزر میں Jupyter استعمال کرنا + +آپ اپنے کمپیوٹر پر براؤزر سے Jupyter ماحول بھی استعمال کر سکتے ہیں۔ درحقیقت، کلاسیکل Jupyter اور Jupyter Hub دونوں آٹو کمپلیشن، کوڈ ہائی لائٹنگ وغیرہ کے ساتھ کافی آسان ترقیاتی ماحول فراہم کرتے ہیں۔ + +Jupyter کو مقامی طور پر شروع کرنے کے لیے، کورس کی ڈائریکٹری پر جائیں اور درج ذیل کمانڈ چلائیں: + +```bash +jupyter notebook +``` +یا +```bash +jupyterhub +``` +اس کے بعد آپ کسی بھی `.ipynb` فائل پر جا سکتے ہیں، اسے کھول سکتے ہیں اور کام شروع کر سکتے ہیں۔ + +### کنٹینر میں چلانا + +Python انسٹالیشن کا ایک متبادل یہ ہوگا کہ کوڈ کو کنٹینر میں چلایا جائے۔ چونکہ ہماری ریپوزٹری میں ایک خاص `.devcontainer` فولڈر موجود ہے جو اس ریپوزٹری کے لیے کنٹینر بنانے کی ہدایات دیتا ہے، VS Code آپ کو کوڈ کو کنٹینر میں دوبارہ کھولنے کی پیشکش کرے گا۔ اس کے لیے Docker انسٹالیشن کی ضرورت ہوگی، اور یہ زیادہ پیچیدہ ہوگا، لہذا ہم اسے زیادہ تجربہ کار صارفین کے لیے تجویز کرتے ہیں۔ + +## کلاؤڈ میں چلانا + +اگر آپ Python کو مقامی طور پر انسٹال نہیں کرنا چاہتے اور آپ کے پاس کچھ کلاؤڈ وسائل تک رسائی ہے - تو ایک اچھا متبادل یہ ہوگا کہ کوڈ کو کلاؤڈ میں چلایا جائے۔ آپ کے پاس ایسا کرنے کے کئی طریقے ہیں: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** استعمال کرتے ہوئے، جو GitHub پر آپ کے لیے ایک ورچوئل ماحول بناتا ہے، جو VS Code براؤزر انٹرفیس کے ذریعے قابل رسائی ہے۔ اگر آپ کو Codespaces تک رسائی حاصل ہے، تو آپ ریپوزٹری میں **Code** بٹن پر کلک کر سکتے ہیں، Codespace شروع کر سکتے ہیں، اور فوراً کام شروع کر سکتے ہیں۔ +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** استعمال کرتے ہوئے۔ [Binder](https://mybinder.org) کلاؤڈ میں مفت کمپیوٹنگ وسائل فراہم کرتا ہے تاکہ آپ GitHub پر کچھ کوڈ آزما سکیں۔ ریپوزٹری کے فرنٹ پیج پر ایک بٹن موجود ہے جو آپ کو Binder میں ریپوزٹری کھولنے کی اجازت دیتا ہے - یہ آپ کو جلدی سے Binder سائٹ پر لے جائے گا، جو بنیادی کنٹینر بنائے گا اور Jupyter ویب انٹرفیس کو بغیر کسی رکاوٹ کے شروع کرے گا۔ + +> **نوٹ**: غلط استعمال کو روکنے کے لیے، Binder کو کچھ ویب وسائل تک رسائی محدود ہے۔ یہ کچھ کوڈ کو کام کرنے سے روک سکتا ہے جو ماڈلز اور/یا ڈیٹا سیٹس کو عوامی انٹرنیٹ سے حاصل کرتا ہے۔ آپ کو کچھ متبادل تلاش کرنے کی ضرورت ہو سکتی ہے۔ نیز، Binder کے ذریعے فراہم کردہ کمپیوٹ وسائل کافی بنیادی ہیں، لہذا تربیت خاص طور پر بعد کے زیادہ پیچیدہ اسباق میں سست ہوگی۔ + +## کلاؤڈ میں GPU کے ساتھ چلانا + +اس نصاب کے کچھ بعد کے اسباق GPU سپورٹ سے بہت فائدہ اٹھائیں گے، کیونکہ بصورت دیگر تربیت انتہائی سست ہوگی۔ آپ کے پاس کچھ اختیارات ہیں، خاص طور پر اگر آپ کو کلاؤڈ تک رسائی حاصل ہے، چاہے وہ [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) کے ذریعے ہو یا آپ کے ادارے کے ذریعے: + +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) بنائیں اور Jupyter کے ذریعے اس سے جڑیں۔ آپ پھر ریپوزٹری کو براہ راست مشین پر کلون کر سکتے ہیں اور سیکھنا شروع کر سکتے ہیں۔ NC-series VMs میں GPU سپورٹ موجود ہے۔ + +> **نوٹ**: کچھ سبسکرپشنز، بشمول Azure for Students، GPU سپورٹ کو فوری طور پر فراہم نہیں کرتے۔ آپ کو تکنیکی سپورٹ درخواست کے ذریعے اضافی GPU کورز کی درخواست کرنے کی ضرورت ہو سکتی ہے۔ + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) بنائیں اور وہاں نوٹ بک فیچر استعمال کریں۔ [یہ ویڈیو](https://azure-for-academics.github.io/quickstart/azureml-papers/) دکھاتی ہے کہ Azure ML نوٹ بک میں ریپوزٹری کو کیسے کلون کریں اور اسے استعمال کرنا شروع کریں۔ + +آپ Google Colab بھی استعمال کر سکتے ہیں، جو کچھ مفت GPU سپورٹ کے ساتھ آتا ہے، اور Jupyter Notebooks کو وہاں اپلوڈ کر کے انہیں ایک ایک کر کے چلائیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/0-course-setup/setup.md b/translations/ur/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..6ed07bc1 --- /dev/null +++ b/translations/ur/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# اس نصاب کے ساتھ شروعات کریں + +## کیا آپ طالب علم ہیں؟ + +مندرجہ ذیل وسائل کے ساتھ شروعات کریں: + +* [اسٹوڈنٹ حب صفحہ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) اس صفحے پر آپ کو ابتدائی وسائل، اسٹوڈنٹ پیک، اور یہاں تک کہ مفت سرٹیفکیٹ واؤچر حاصل کرنے کے طریقے ملیں گے۔ یہ وہ صفحہ ہے جسے آپ بک مارک کرنا چاہیں گے اور وقتاً فوقتاً چیک کریں گے کیونکہ ہم کم از کم ماہانہ مواد تبدیل کرتے ہیں۔ +* [مائیکروسافٹ اسٹوڈنٹ لرن ایمبیسیڈرز](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) ایک عالمی کمیونٹی میں شامل ہوں، یہ مائیکروسافٹ میں آپ کے داخلے کا راستہ ہو سکتا ہے۔ + +**طلباء**، نصاب استعمال کرنے کے چند طریقے ہیں۔ سب سے پہلے، آپ صرف متن پڑھ سکتے ہیں اور GitHub پر براہ راست کوڈ دیکھ سکتے ہیں۔ اگر آپ کسی بھی نوٹ بک میں کوڈ چلانا چاہتے ہیں - [ہماری ہدایات پڑھیں](./etc/how-to-run.md)، اور مزید مشورے حاصل کریں کہ یہ کیسے کریں [اس بلاگ پوسٹ میں](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)۔ + +> **نوٹ**: [اس نصاب میں کوڈ چلانے کے طریقے کی ہدایات](./how-to-run.md) + +## خود مطالعہ + +تاہم، اگر آپ اس کورس کو خود مطالعہ کے منصوبے کے طور پر لینا چاہتے ہیں، تو ہم تجویز کرتے ہیں کہ آپ پورے ریپو کو اپنے GitHub اکاؤنٹ میں فورک کریں اور مشقیں خود یا کسی گروپ کے ساتھ مکمل کریں: + +* لیکچر سے پہلے کا کوئز شروع کریں۔ +* لیکچر کے تعارفی متن کو پڑھیں۔ +* اگر لیکچر میں اضافی نوٹ بکس ہیں، تو انہیں دیکھیں، کوڈ پڑھیں اور چلائیں۔ اگر TensorFlow اور PyTorch دونوں نوٹ بکس فراہم کیے گئے ہیں، تو آپ ان میں سے کسی ایک پر توجہ مرکوز کر سکتے ہیں - اپنے پسندیدہ فریم ورک کا انتخاب کریں۔ +* نوٹ بکس میں اکثر کچھ چیلنجز شامل ہوتے ہیں جو آپ کو کوڈ میں تھوڑی سی تبدیلی کرنے کی ضرورت ہوتی ہے تاکہ تجربہ کریں۔ +* لیکچر کے بعد کا کوئز لیں۔ +* اگر ماڈیول کے ساتھ کوئی لیب منسلک ہے - تو اسائنمنٹ مکمل کریں۔ +* [ڈسکشن بورڈ](https://github.com/microsoft/AI-For-Beginners/discussions) پر جائیں تاکہ "آواز کے ساتھ سیکھیں"۔ + +> مزید مطالعہ کے لیے، ہم ان [مائیکروسافٹ لرن](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) ماڈیولز اور لرننگ پاتھس کی پیروی کرنے کی سفارش کرتے ہیں۔ + +**اساتذہ**، ہم نے [کچھ تجاویز شامل کی ہیں](/for-teachers.md) کہ اس نصاب کو کیسے استعمال کریں۔ + +--- + +## تدریسی طریقہ کار + +ہم نے اس نصاب کو تیار کرتے وقت دو تدریسی اصول اپنائے ہیں: یہ یقینی بنانا کہ یہ عملی **پروجیکٹ پر مبنی** ہے اور اس میں **بار بار کوئزز** شامل ہیں۔ + +یہ یقینی بنا کر کہ مواد پروجیکٹس کے ساتھ ہم آہنگ ہو، عمل طلباء کے لیے زیادہ دلچسپ ہو جاتا ہے اور تصورات کو یاد رکھنے کی صلاحیت میں اضافہ ہوتا ہے۔ اس کے علاوہ، کلاس سے پہلے ایک کم دباؤ والا کوئز طالب علم کو کسی موضوع کو سیکھنے کے ارادے کی طرف لے جاتا ہے، جبکہ کلاس کے بعد دوسرا کوئز مزید یادداشت کو یقینی بناتا ہے۔ یہ نصاب لچکدار اور دلچسپ بنایا گیا ہے اور اسے مکمل یا جزوی طور پر لیا جا سکتا ہے۔ پروجیکٹس چھوٹے شروع ہوتے ہیں اور 12 ہفتوں کے اختتام تک بتدریج پیچیدہ ہو جاتے ہیں۔ + +> **کوئزز کے بارے میں ایک نوٹ**: تمام کوئزز [اس ایپ](https://red-field-0a6ddfd03.1.azurestaticapps.net/) میں شامل ہیں، کل 50 کوئزز، ہر ایک میں تین سوالات ہیں۔ یہ اسباق کے اندر سے منسلک ہیں لیکن کوئز ایپ کو مقامی طور پر چلایا جا سکتا ہے؛ `etc/quiz-app` فولڈر میں ہدایات پر عمل کریں۔ + +## آف لائن رسائی + +آپ اس دستاویز کو آف لائن [Docsify](https://docsify.js.org/#/) کا استعمال کرتے ہوئے چلا سکتے ہیں۔ اس ریپو کو فورک کریں، [Docsify انسٹال کریں](https://docsify.js.org/#/quickstart) اپنی مقامی مشین پر، اور پھر اس ریپو کے روٹ فولڈر میں `docsify serve` ٹائپ کریں۔ ویب سائٹ آپ کے لوکل ہوسٹ پر پورٹ 3000 پر دستیاب ہوگی: `localhost:3000`۔ نصاب کا ایک پی ڈی ایف [اس لنک پر دستیاب ہے](../../../../../../../../../etc/pdf/readme.pdf)۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/1-Intro/README.md b/translations/ur/lessons/1-Intro/README.md new file mode 100644 index 00000000..3308f36a --- /dev/null +++ b/translations/ur/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> تصویر از [دیمتری سوشنیکوف](http://soshnikov.com) + +وقت کے ساتھ ساتھ کمپیوٹنگ وسائل سستے ہو گئے اور زیادہ ڈیٹا دستیاب ہو گیا، جس کی وجہ سے نیورل نیٹ ورک کے طریقے بہت سے شعبوں میں انسانوں کے ساتھ مقابلہ کرنے میں شاندار کارکردگی دکھانے لگے، جیسے کمپیوٹر وژن یا تقریر کو سمجھنا۔ پچھلی دہائی میں، مصنوعی ذہانت کی اصطلاح زیادہ تر نیورل نیٹ ورکس کے مترادف کے طور پر استعمال کی گئی ہے، کیونکہ زیادہ تر AI کی کامیابیاں جن کے بارے میں ہم سنتے ہیں، انہی پر مبنی ہیں۔ + +ہم دیکھ سکتے ہیں کہ مختلف طریقے کیسے بدلے، مثال کے طور پر، شطرنج کھیلنے والے کمپیوٹر پروگرام بنانے میں: + +* ابتدائی شطرنج کے پروگرام تلاش پر مبنی تھے – ایک پروگرام واضح طور پر اگلے چند چالوں کے لیے حریف کے ممکنہ اقدامات کا اندازہ لگانے کی کوشش کرتا تھا اور ایک مثالی چال کا انتخاب اس بنیاد پر کرتا تھا کہ چند چالوں میں بہترین پوزیشن حاصل کی جا سکتی ہے۔ اس سے [الفا-بیٹا پروننگ](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) تلاش کے الگورتھم کی ترقی ہوئی۔ +* تلاش کی حکمت عملی کھیل کے اختتام کی طرف اچھی طرح کام کرتی ہیں، جہاں تلاش کی جگہ ممکنہ چالوں کی کم تعداد سے محدود ہوتی ہے۔ تاہم، کھیل کے آغاز میں، تلاش کی جگہ بہت بڑی ہوتی ہے، اور الگورتھم کو انسانی کھلاڑیوں کے درمیان موجودہ میچوں سے سیکھ کر بہتر بنایا جا سکتا ہے۔ بعد کے تجربات میں [کیس پر مبنی استدلال](https://en.wikipedia.org/wiki/Case-based_reasoning) کا استعمال کیا گیا، جہاں پروگرام علم کے ذخیرے میں موجودہ پوزیشن سے بہت ملتے جلتے کیسز تلاش کرتا تھا۔ +* جدید پروگرام جو انسانی کھلاڑیوں کو شکست دیتے ہیں، نیورل نیٹ ورکس اور [ری انفورسمنٹ لرننگ](https://en.wikipedia.org/wiki/Reinforcement_learning) پر مبنی ہیں، جہاں پروگرام خود سے کھیل کر اور اپنی غلطیوں سے سیکھ کر کھیلنا سیکھتے ہیں – بالکل اسی طرح جیسے انسان شطرنج کھیلنا سیکھتے ہیں۔ تاہم، ایک کمپیوٹر پروگرام بہت کم وقت میں بہت زیادہ گیمز کھیل سکتا ہے، اور اس طرح بہت تیزی سے سیکھ سکتا ہے۔ + +✅ تحقیق کریں کہ اور کون سے کھیل ہیں جو AI کے ذریعے کھیلے گئے ہیں۔ + +اسی طرح، ہم دیکھ سکتے ہیں کہ "بات کرنے والے پروگرام" (جو ٹورنگ ٹیسٹ پاس کر سکتے ہیں) بنانے کے طریقے کیسے بدلے: + +* اس قسم کے ابتدائی پروگرام، جیسے [Eliza](https://en.wikipedia.org/wiki/ELIZA)، بہت سادہ گرامر کے اصولوں اور ان پٹ جملے کو سوال میں دوبارہ ترتیب دینے پر مبنی تھے۔ +* جدید اسسٹنٹس، جیسے Cortana، Siri یا Google Assistant، سب ہائبرڈ سسٹمز ہیں جو نیورل نیٹ ورکس کا استعمال کرتے ہیں تاکہ تقریر کو متن میں تبدیل کریں اور ہمارے ارادے کو پہچانیں، اور پھر کچھ استدلال یا واضح الگورتھمز کے ذریعے مطلوبہ اعمال انجام دیں۔ +* مستقبل میں، ہم توقع کر سکتے ہیں کہ ایک مکمل نیورل پر مبنی ماڈل خود ہی مکالمے کو سنبھالے۔ حالیہ GPT اور [Turing-NLG](https://turing.microsoft.com/) نیورل نیٹ ورکس کے خاندان اس میں بڑی کامیابی دکھا رہے ہیں۔ + +> تصویر از دمتری سوشنیکوف، [تصویر](https://unsplash.com/photos/r8LmVbUKgns) از [مارینا ابروسیمووا](https://unsplash.com/@abrosimova_marina_foto)، انسپلیش + +## حالیہ AI تحقیق + +نیورل نیٹ ورک تحقیق میں حالیہ زبردست ترقی تقریباً 2010 کے آس پاس شروع ہوئی، جب بڑے عوامی ڈیٹا سیٹس دستیاب ہونے لگے۔ تصاویر کا ایک بڑا مجموعہ جسے [ImageNet](https://en.wikipedia.org/wiki/ImageNet) کہا جاتا ہے، جس میں تقریباً 14 ملین تشریح شدہ تصاویر شامل ہیں، نے [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) کو جنم دیا۔ + +![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> تصویر از [دمتری سوشنیکوف](http://soshnikov.com) + +2012 میں، [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) کو پہلی بار تصویر کی درجہ بندی میں استعمال کیا گیا، جس سے درجہ بندی کی غلطیوں میں نمایاں کمی ہوئی (تقریباً 30% سے 16.4% تک)۔ 2015 میں، مائیکروسافٹ ریسرچ کی ResNet آرکیٹیکچر نے [انسانی سطح کی درستگی حاصل کی](https://doi.org/10.1109/ICCV.2015.123)۔ + +تب سے، نیورل نیٹ ورکس نے کئی کاموں میں بہت کامیاب رویہ دکھایا ہے: + +--- + +سال | انسانی برابری حاصل کی گئی +-----|-------- +2015 | [تصویر کی درجہ بندی](https://doi.org/10.1109/ICCV.2015.123) +2016 | [گفتگو کی تقریر کی شناخت](https://arxiv.org/abs/1610.05256) +2018 | [خودکار مشین ترجمہ](https://arxiv.org/abs/1803.05567) (چینی سے انگریزی) +2020 | [تصویر کی وضاحت](https://arxiv.org/abs/2009.13682) + +گزشتہ چند سالوں میں ہم نے بڑے زبان ماڈلز جیسے BERT اور GPT-3 کے ساتھ زبردست کامیابیاں دیکھی ہیں۔ یہ زیادہ تر اس وجہ سے ہوا کہ عام متن کے ڈیٹا کی بڑی مقدار دستیاب ہے، جو ہمیں ماڈلز کو متن کی ساخت اور معنی کو سمجھنے کے لیے تربیت دینے کی اجازت دیتی ہے، انہیں عمومی متن کے مجموعوں پر پہلے سے تربیت دیتی ہے، اور پھر ان ماڈلز کو زیادہ مخصوص کاموں کے لیے مہارت دیتی ہے۔ ہم اس کورس میں بعد میں [قدرتی زبان کی پروسیسنگ](../5-NLP/README.md) کے بارے میں مزید سیکھیں گے۔ + +## 🚀 چیلنج + +انٹرنیٹ کا جائزہ لیں اور یہ طے کریں کہ آپ کی رائے میں AI سب سے مؤثر طریقے سے کہاں استعمال ہو رہا ہے۔ کیا یہ کسی میپنگ ایپ میں ہے، یا کسی تقریر سے متن کی خدمت میں یا کسی ویڈیو گیم میں؟ تحقیق کریں کہ یہ نظام کیسے بنایا گیا۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## جائزہ اور خود مطالعہ + +AI اور ML کی تاریخ کا جائزہ لیں اور [اس سبق](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) کو پڑھیں۔ اس سبق یا اس سبق کے اوپر موجود اسکیچ نوٹ سے ایک عنصر لیں اور اس کے ارتقاء کو سمجھنے کے لیے اس کے ثقافتی سیاق و سباق پر مزید تحقیق کریں۔ + +**اسائنمنٹ**: [گیم جام](assignment.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/1-Intro/assignment.md b/translations/ur/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..6e9ca372 --- /dev/null +++ b/translations/ur/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# گیم جام + +گیمز ایک ایسا شعبہ ہیں جو AI اور ML کی ترقیات سے گہرے طور پر متاثر ہوئے ہیں۔ اس اسائنمنٹ میں، ایک مختصر مضمون لکھیں جس میں کسی ایسے گیم کے بارے میں بات کی جائے جو آپ کو پسند ہو اور جو AI کی ترقی سے متاثر ہوا ہو۔ یہ گیم اتنا پرانا ہونا چاہیے کہ اس پر کئی قسم کے کمپیوٹر پروسیسنگ سسٹمز کا اثر پڑا ہو۔ ایک اچھا مثال شطرنج یا گو ہو سکتی ہے، لیکن ویڈیو گیمز جیسے پونگ یا پیک مین پر بھی نظر ڈالیں۔ ایک ایسا مضمون لکھیں جو گیم کے ماضی، حال، اور AI کے مستقبل پر بات کرے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/2-Symbolic/README.md b/translations/ur/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..9fbb4519 --- /dev/null +++ b/translations/ur/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# علم کی نمائندگی اور ماہر نظام + +![سمبولک AI مواد کا خلاصہ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ur.png) + +> اسکیچ نوٹ [Tomomi Imura](https://twitter.com/girlie_mac) کی جانب سے + +مصنوعی ذہانت کی تلاش علم کی تلاش پر مبنی ہے، دنیا کو سمجھنے کے لیے جیسے انسان کرتے ہیں۔ لیکن یہ کیسے ممکن ہے؟ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI کے ابتدائی دنوں میں، ذہین نظام بنانے کے لیے اوپر سے نیچے تک کا طریقہ (پچھلے سبق میں بحث کی گئی) مقبول تھا۔ خیال یہ تھا کہ لوگوں سے علم کو مشین کے قابل پڑھنے کی شکل میں نکالا جائے، اور پھر اسے خودکار طریقے سے مسائل حل کرنے کے لیے استعمال کیا جائے۔ یہ طریقہ دو بڑے خیالات پر مبنی تھا: + +* علم کی نمائندگی +* استدلال + +## علم کی نمائندگی + +سمبولک AI کے اہم تصورات میں سے ایک **علم** ہے۔ یہ ضروری ہے کہ علم کو *معلومات* یا *ڈیٹا* سے الگ کیا جائے۔ مثال کے طور پر، کوئی کہہ سکتا ہے کہ کتابیں علم پر مشتمل ہیں، کیونکہ کتابوں کا مطالعہ کرکے کوئی ماہر بن سکتا ہے۔ تاہم، کتابوں میں جو کچھ ہوتا ہے اسے اصل میں *ڈیٹا* کہا جاتا ہے، اور کتابیں پڑھ کر اور اس ڈیٹا کو اپنے دنیا کے ماڈل میں شامل کرکے ہم اس ڈیٹا کو علم میں تبدیل کرتے ہیں۔ + +> ✅ **علم** وہ چیز ہے جو ہمارے دماغ میں موجود ہوتی ہے اور دنیا کے بارے میں ہماری سمجھ کی نمائندگی کرتی ہے۔ یہ ایک فعال **سیکھنے** کے عمل کے ذریعے حاصل کیا جاتا ہے، جو ہمیں موصول ہونے والی معلومات کے ٹکڑوں کو ہماری دنیا کے فعال ماڈل میں ضم کرتا ہے۔ + +اکثر، ہم علم کی سختی سے تعریف نہیں کرتے، بلکہ اسے دوسرے متعلقہ تصورات کے ساتھ [DIKW Pyramid](https://en.wikipedia.org/wiki/DIKW_pyramid) کے ذریعے ہم آہنگ کرتے ہیں۔ اس میں درج ذیل تصورات شامل ہیں: + +* **ڈیٹا** وہ چیز ہے جو جسمانی میڈیا میں ظاہر ہوتی ہے، جیسے کہ تحریری متن یا بولے گئے الفاظ۔ ڈیٹا انسانوں سے آزاد ہوتا ہے اور لوگوں کے درمیان منتقل کیا جا سکتا ہے۔ +* **معلومات** وہ ہے جو ہم اپنے دماغ میں ڈیٹا کی تشریح کرتے ہیں۔ مثال کے طور پر، جب ہم لفظ *کمپیوٹر* سنتے ہیں، تو ہمیں کچھ سمجھ آتی ہے کہ یہ کیا ہے۔ +* **علم** وہ معلومات ہے جو ہمارے دنیا کے ماڈل میں ضم ہو جاتی ہے۔ مثال کے طور پر، ایک بار جب ہم سیکھتے ہیں کہ کمپیوٹر کیا ہے، تو ہمیں اس کے کام کرنے کے طریقے، اس کی قیمت، اور اس کے استعمال کے بارے میں کچھ خیالات ہونے لگتے ہیں۔ یہ باہم مربوط تصورات کا نیٹ ورک ہمارا علم بناتا ہے۔ +* **دانائی** ہماری دنیا کی سمجھ کا ایک اور سطح ہے، اور یہ *میٹا-علم* کی نمائندگی کرتی ہے، جیسے کہ علم کو کب اور کیسے استعمال کرنا چاہیے۔ + +*تصویر [ویکیپیڈیا سے](https://commons.wikimedia.org/w/index.php?curid=37705247)، By Longlivetheux - Own work, CC BY-SA 4.0* + +لہذا، **علم کی نمائندگی** کا مسئلہ کمپیوٹر کے اندر علم کو ڈیٹا کی شکل میں مؤثر طریقے سے ظاہر کرنے کا طریقہ تلاش کرنا ہے، تاکہ اسے خودکار طور پر استعمال کیا جا سکے۔ اسے ایک اسپیکٹرم کے طور پر دیکھا جا سکتا ہے: + +![علم کی نمائندگی کا اسپیکٹرم](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ur.png) + +> تصویر [Dmitry Soshnikov](http://soshnikov.com) کی جانب سے + +* بائیں جانب، علم کی نمائندگی کی بہت سادہ اقسام ہیں جو کمپیوٹرز کے ذریعے مؤثر طریقے سے استعمال کی جا سکتی ہیں۔ سب سے سادہ قسم الگورتھمک ہے، جب علم کو کمپیوٹر پروگرام کے ذریعے ظاہر کیا جاتا ہے۔ تاہم، یہ علم کی نمائندگی کا بہترین طریقہ نہیں ہے، کیونکہ یہ لچکدار نہیں ہے۔ ہمارے دماغ میں موجود علم اکثر غیر الگورتھمک ہوتا ہے۔ +* دائیں جانب، قدرتی متن جیسی نمائندگیاں ہیں۔ یہ سب سے طاقتور ہے، لیکن خودکار استدلال کے لیے استعمال نہیں کی جا سکتی۔ + +> ✅ ایک لمحے کے لیے سوچیں کہ آپ اپنے دماغ میں علم کو کیسے ظاہر کرتے ہیں اور اسے نوٹس میں تبدیل کرتے ہیں۔ کیا کوئی خاص فارمیٹ ہے جو آپ کے لیے یادداشت میں مددگار ثابت ہوتا ہے؟ + +## کمپیوٹر علم کی نمائندگی کی درجہ بندی + +ہم کمپیوٹر علم کی نمائندگی کے مختلف طریقوں کو درج ذیل زمروں میں درجہ بندی کر سکتے ہیں: + +* **نیٹ ورک نمائندگی** اس حقیقت پر مبنی ہیں کہ ہمارے دماغ میں باہم مربوط تصورات کا ایک نیٹ ورک موجود ہے۔ ہم اسی نیٹ ورک کو کمپیوٹر کے اندر ایک گراف کے طور پر دوبارہ تخلیق کرنے کی کوشش کر سکتے ہیں - ایک **سمینٹک نیٹ ورک**۔ + +1. **آبجیکٹ-ایٹریبیوٹ-ویلیو ٹرپلٹس** یا **ایٹریبیوٹ-ویلیو پیرز**۔ چونکہ گراف کو کمپیوٹر کے اندر نوڈز اور ایجز کی فہرست کے طور پر ظاہر کیا جا سکتا ہے، ہم سمینٹک نیٹ ورک کو ٹرپلٹس کی فہرست کے ذریعے ظاہر کر سکتے ہیں، جس میں آبجیکٹس، ایٹریبیوٹس، اور ویلیوز شامل ہوں۔ مثال کے طور پر، ہم پروگرامنگ زبانوں کے بارے میں درج ذیل ٹرپلٹس بناتے ہیں: + +Object | Attribute | Value +-------|-----------|------ +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ سوچیں کہ ٹرپلٹس کو علم کی دیگر اقسام کی نمائندگی کے لیے کیسے استعمال کیا جا سکتا ہے۔ + +2. **درجہ بندی کی نمائندگی** اس بات پر زور دیتی ہے کہ ہم اکثر اپنے دماغ میں اشیاء کی درجہ بندی بناتے ہیں۔ مثال کے طور پر، ہم جانتے ہیں کہ کینری ایک پرندہ ہے، اور تمام پرندوں کے پاس پر ہوتے ہیں۔ ہمیں یہ بھی اندازہ ہوتا ہے کہ کینری کا رنگ کیا ہوتا ہے، اور ان کی پرواز کی رفتار کیا ہوتی ہے۔ + + - **فریم نمائندگی** ہر آبجیکٹ یا اشیاء کے کلاس کو ایک **فریم** کے طور پر ظاہر کرنے پر مبنی ہے، جس میں **سلاٹس** شامل ہوتے ہیں۔ سلاٹس میں ممکنہ ڈیفالٹ ویلیوز، ویلیو پابندیاں، یا محفوظ شدہ طریقہ کار ہو سکتے ہیں جنہیں سلاٹ کی ویلیو حاصل کرنے کے لیے بلایا جا سکتا ہے۔ تمام فریمز ایک درجہ بندی بناتے ہیں جو آبجیکٹ-اورینٹڈ پروگرامنگ زبانوں میں آبجیکٹ درجہ بندی کے مشابہ ہے۔ + - **مناظر** فریمز کی ایک خاص قسم ہیں جو پیچیدہ حالات کی نمائندگی کرتے ہیں جو وقت کے ساتھ ساتھ سامنے آ سکتے ہیں۔ + +**Python** + +Slot | Value | Default value | Interval | +-----|-------|---------------|----------| +Name | Python | | | +Is-A | Untyped-Language | | | +Variable Case | | CamelCase | | +Program Length | | | 5-5000 lines | +Block Syntax | Indent | | | + +3. **عملی نمائندگی** علم کو ایک عمل کی فہرست کے ذریعے ظاہر کرنے پر مبنی ہے جو کسی خاص حالت کے واقع ہونے پر انجام دی جا سکتی ہے۔ + - پروڈکشن رولز وہ if-then بیانات ہیں جو ہمیں نتائج اخذ کرنے کی اجازت دیتے ہیں۔ مثال کے طور پر، ایک ڈاکٹر کے پاس ایک اصول ہو سکتا ہے جو کہتا ہے کہ **اگر** مریض کو تیز بخار ہو **یا** خون کے ٹیسٹ میں C-reactive پروٹین کی سطح زیادہ ہو **تو** اسے سوزش ہے۔ ایک بار جب ہم کسی حالت کا سامنا کرتے ہیں، ہم سوزش کے بارے میں نتیجہ اخذ کر سکتے ہیں، اور پھر اسے مزید استدلال میں استعمال کر سکتے ہیں۔ + - الگورتھمز کو عملی نمائندگی کی ایک اور شکل سمجھا جا سکتا ہے، حالانکہ انہیں علم پر مبنی نظاموں میں براہ راست استعمال نہیں کیا جاتا۔ + +4. **منطق** اصل میں ارسطو نے انسانی علم کی عالمگیر نمائندگی کے طور پر تجویز کی تھی۔ + - پریڈیکیٹ منطق ایک ریاضیاتی نظریہ کے طور پر بہت زیادہ ہے کہ قابل حساب ہو، لہذا اس کا کچھ ذیلی حصہ عام طور پر استعمال کیا جاتا ہے، جیسے کہ Prolog میں استعمال ہونے والے Horn clauses۔ + - وضاحتی منطق منطقی نظاموں کا ایک خاندان ہے جو اشیاء کی درجہ بندی اور تقسیم شدہ علم کی نمائندگی جیسے *سمینٹک ویب* کے بارے میں استدلال کرنے کے لیے استعمال ہوتا ہے۔ + +## ماہر نظام + +سمبولک AI کی ابتدائی کامیابیوں میں سے ایک **ماہر نظام** تھے - کمپیوٹر سسٹمز جو کسی محدود مسئلہ کے دائرے میں ماہر کے طور پر کام کرنے کے لیے ڈیزائن کیے گئے تھے۔ یہ **علمی بنیاد** پر مبنی تھے جو ایک یا زیادہ انسانی ماہرین سے نکالی گئی تھی، اور ان میں ایک **استدلال انجن** شامل تھا جو اس پر کچھ استدلال انجام دیتا تھا۔ + +![انسانی نظام کی ساخت](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ur.png) | ![علم پر مبنی نظام کی ساخت](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ur.png) +---------------------------------------------|------------------------------------------------ +انسانی نیورل سسٹم کی سادہ ساخت | علم پر مبنی نظام کی ساخت + +ماہر نظام انسانی استدلال کے نظام کی طرح بنائے گئے ہیں، جس میں **مختصر مدت کی یادداشت** اور **طویل مدت کی یادداشت** شامل ہوتی ہے۔ اسی طرح، علم پر مبنی نظاموں میں ہم درج ذیل اجزاء کو ممتاز کرتے ہیں: + +* **مسئلہ کی یادداشت**: اس مسئلے کے بارے میں علم پر مشتمل ہے جو فی الحال حل کیا جا رہا ہے، یعنی مریض کا درجہ حرارت یا بلڈ پریشر، آیا اسے سوزش ہے یا نہیں، وغیرہ۔ اس علم کو **جامد علم** بھی کہا جاتا ہے، کیونکہ اس میں وہ چیز شامل ہوتی ہے جو ہم فی الحال مسئلے کے بارے میں جانتے ہیں - جسے *مسئلہ کی حالت* کہا جاتا ہے۔ +* **علمی بنیاد**: مسئلہ کے دائرے کے بارے میں طویل مدتی علم کی نمائندگی کرتی ہے۔ یہ انسانی ماہرین سے دستی طور پر نکالا جاتا ہے، اور مشاورت سے مشاورت تک تبدیل نہیں ہوتا۔ چونکہ یہ ہمیں ایک مسئلہ کی حالت سے دوسرے میں نیویگیٹ کرنے کی اجازت دیتا ہے، اسے **متحرک علم** بھی کہا جاتا ہے۔ +* **استدلال انجن**: پورے عمل کو منظم کرتا ہے، مسئلہ کی حالت کی جگہ میں تلاش کرتا ہے، جب ضروری ہو تو صارف سے سوالات پوچھتا ہے۔ یہ ہر حالت پر لاگو ہونے والے صحیح اصولوں کو تلاش کرنے کا بھی ذمہ دار ہے۔ + +ایک مثال کے طور پر، آئیے درج ذیل ماہر نظام پر غور کریں جو جسمانی خصوصیات کی بنیاد پر جانور کا تعین کرتا ہے: + +![AND-OR درخت](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ur.png) + +> تصویر [Dmitry Soshnikov](http://soshnikov.com) کی جانب سے + +اس ڈایاگرام کو **AND-OR درخت** کہا جاتا ہے، اور یہ پروڈکشن رولز کے سیٹ کی گرافیکل نمائندگی ہے۔ ماہر سے علم نکالنے کے آغاز میں درخت بنانا مفید ہے۔ کمپیوٹر کے اندر علم کی نمائندگی کرنے کے لیے اصولوں کا استعمال زیادہ آسان ہے: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +آپ دیکھ سکتے ہیں کہ اصول کے بائیں جانب کی حالت اور عمل بنیادی طور پر آبجیکٹ-ایٹریبیوٹ-ویلیو (OAV) ٹرپلٹس ہیں۔ **کام کرنے کی یادداشت** OAV ٹرپلٹس کے سیٹ پر مشتمل ہے جو فی الحال حل کیے جانے والے مسئلے سے مطابقت رکھتی ہے۔ ایک **رولز انجن** ان اصولوں کی تلاش کرتا ہے جن کی حالت مطمئن ہے اور انہیں لاگو کرتا ہے، کام کرنے کی یادداشت میں ایک نیا ٹرپلٹ شامل کرتا ہے۔ + +> ✅ اپنے پسندیدہ موضوع پر اپنا AND-OR درخت بنائیں! + +### فارورڈ بمقابلہ بیکورڈ استدلال + +اوپر بیان کردہ عمل کو **فارورڈ استدلال** کہا جاتا ہے۔ یہ کام کرنے کی یادداشت میں مسئلے کے بارے میں کچھ ابتدائی ڈیٹا کے ساتھ شروع ہوتا ہے، اور پھر درج ذیل استدلال لوپ کو انجام دیتا ہے: + +1. اگر ہدف ایٹریبیوٹ کام کرنے کی یادداشت میں موجود ہے - رکیں اور نتیجہ دیں +2. ان تمام اصولوں کی تلاش کریں جن کی حالت فی الحال مطمئن ہے - **تنازعہ سیٹ** حاصل کریں۔ +3. **تنازعہ حل** انجام دیں - ایک اصول منتخب کریں جو اس مرحلے پر انجام دیا جائے گا۔ مختلف تنازعہ حل کی حکمت عملی ہو سکتی ہیں: + - علمی بنیاد میں قابل اطلاق پہلا اصول منتخب کریں + - ایک تصادفی اصول منتخب کریں + - ایک *زیادہ مخصوص* اصول منتخب کریں، یعنی وہ جو "بائیں جانب" (LHS) میں سب سے زیادہ حالات کو پورا کرتا ہو +4. منتخب کردہ اصول کو لاگو کریں اور مسئلہ کی حالت میں علم کا نیا ٹکڑا شامل کریں +5. مرحلہ 1 سے دوبارہ شروع کریں۔ + +تاہم، کچھ حالات میں ہم مسئلے کے بارے میں خالی علم کے ساتھ شروع کرنا چاہتے ہیں، اور ایسے سوالات پوچھنا چاہتے ہیں جو ہمیں نتیجہ تک پہنچنے میں مدد دیں۔ مثال کے طور پر، جب طبی تشخیص کرتے ہیں، ہم عام طور پر تمام طبی تجزیے پہلے سے انجام نہیں دیتے ہیں۔ ہم فیصلہ کرنے کے وقت تجزیے انجام دینا چاہتے ہیں۔ + +اس عمل کو **بیکورڈ استدلال** کے ذریعے ماڈل کیا جا سکتا ہے۔ یہ **ہدف** کے ذریعے چلایا جاتا ہے - وہ ایٹریبیوٹ ویلیو جسے ہم تلاش کرنا چاہتے ہیں: + +1. ان تمام اصولوں کا انتخاب کریں جو ہمیں ہدف کی ویلیو دے سکتے ہیں (یعنی ہدف RHS ("رائٹ-ہینڈ-سائیڈ") پر ہو) - تنازعہ سیٹ +1. اگر اس ایٹریبیوٹ کے لیے کوئی اصول موجود نہیں ہے، یا کوئی اصول ہے جو کہتا ہے کہ ہمیں صارف سے ویلیو پوچھنی چاہیے - پوچھیں، ورنہ: +1. تنازعہ حل کی حکمت عملی کا استعمال کرتے ہوئے ایک اصول منتخب کریں جسے ہم *مفروضہ* کے طور پر استعمال کریں گے - ہم اسے ثابت کرنے کی کوشش کریں گے +1. اصول کے LHS میں موجود تمام ایٹریبیوٹس کے لیے عمل کو بار بار دہرائیں، انہیں اہداف کے طور پر ثابت کرنے کی کوشش کریں +1. اگر کسی بھی وقت عمل ناکام ہو جائے - مرحلہ 3 پر دوسرے اصول کا استعمال کریں۔ + +> ✅ کن حالات میں فارورڈ استدلال زیادہ مناسب ہے؟ اور بیکورڈ استدلال کب بہتر ہے؟ + +### ماہر نظام کا نفاذ + +ماہر نظام مختلف ٹولز کا استعمال کرتے ہوئے نافذ کیے جا سکتے ہیں: + +* انہیں کسی اعلیٰ سطحی پروگرامنگ زبان میں براہ راست پروگرام کرنا۔ یہ بہترین خیال نہیں ہے، کیونکہ علم پر مبنی نظام کا سب سے بڑا فائدہ یہ ہے کہ علم استدلال سے الگ ہوتا ہے، اور ممکنہ طور پر مسئلہ کے دائرے کے ماہر کو اصول لکھنے کے قابل ہونا چاہیے بغیر استدلال کے عمل کی تفصیلات کو سمجھنے کے۔ +* **ماہر نظام شیل** کا استعمال، یعنی ایک ایسا نظام جو خاص طور پر علم کی نمائندگی کی زبان کا استعمال کرتے ہوئے علم سے بھرنے کے لیے ڈیزائن کیا گیا ہو۔ + +## ✍️ مشق: جانوروں کا استدلال + +فارورڈ اور بیکورڈ استدلال ماہر نظام کو نافذ کرنے کی مثال کے لیے [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) دیکھیں۔ +> **نوٹ**: یہ مثال کافی سادہ ہے اور صرف یہ بتانے کے لیے ہے کہ ایک ماہر نظام کیسا دکھائی دیتا ہے۔ جب آپ ایسا نظام بنانا شروع کریں گے، تو آپ کو اس میں کچھ *ذہین* رویہ تب ہی نظر آئے گا جب آپ قواعد کی ایک خاص تعداد، تقریباً 200+، تک پہنچیں گے۔ ایک وقت ایسا آتا ہے جب قواعد اتنے پیچیدہ ہو جاتے ہیں کہ ان سب کو ذہن میں رکھنا مشکل ہو جاتا ہے، اور اس وقت آپ سوچنے لگ سکتے ہیں کہ نظام نے کچھ خاص فیصلے کیوں کیے۔ تاہم، علم پر مبنی نظام کی ایک اہم خصوصیت یہ ہے کہ آپ ہمیشہ *واضح* طور پر بیان کر سکتے ہیں کہ کسی بھی فیصلے کو کیسے لیا گیا۔ +## اونٹولوجیز اور سیمینٹک ویب + +بیسویں صدی کے آخر میں ایک اقدام کیا گیا کہ انٹرنیٹ وسائل کو علم کی نمائندگی کے ذریعے تشریح کیا جائے، تاکہ مخصوص سوالات کے مطابق وسائل کو تلاش کرنا ممکن ہو۔ اس اقدام کو **سیمینٹک ویب** کہا گیا، اور یہ کئی تصورات پر مبنی تھا: + +- **[ڈسکرپشن لاجکس](https://en.wikipedia.org/wiki/Description_logic)** (DL) پر مبنی ایک خاص علم کی نمائندگی۔ یہ فریم علم کی نمائندگی سے مشابہ ہے کیونکہ یہ خصوصیات کے ساتھ اشیاء کی درجہ بندی بناتا ہے، لیکن اس میں رسمی منطقی معنویت اور استنتاج شامل ہے۔ DLs کا ایک پورا خاندان ہے جو اظہاریت اور استنتاج کی الگورتھمک پیچیدگی کے درمیان توازن رکھتا ہے۔ +- تقسیم شدہ علم کی نمائندگی، جہاں تمام تصورات کو ایک عالمی URI شناخت کنندہ کے ذریعے ظاہر کیا جاتا ہے، جس سے انٹرنیٹ پر علم کی درجہ بندی بنانا ممکن ہوتا ہے۔ +- علم کی وضاحت کے لیے XML پر مبنی زبانوں کا ایک خاندان: RDF (Resource Description Framework)، RDFS (RDF Schema)، OWL (Ontology Web Language)۔ + +سیمینٹک ویب میں ایک بنیادی تصور **اونٹولوجی** کا ہے۔ یہ کسی مسئلے کے دائرہ کار کو کسی رسمی علم کی نمائندگی کے ذریعے واضح طور پر بیان کرنے کو کہتے ہیں۔ سب سے سادہ اونٹولوجی مسئلے کے دائرہ کار میں اشیاء کی درجہ بندی ہو سکتی ہے، لیکن زیادہ پیچیدہ اونٹولوجیز میں ایسے قواعد شامل ہوں گے جو استنتاج کے لیے استعمال کیے جا سکتے ہیں۔ + +سیمینٹک ویب میں تمام نمائندگیاں تین حصوں پر مبنی ہوتی ہیں۔ ہر شے اور ہر تعلق کو URI کے ذریعے منفرد طور پر شناخت کیا جاتا ہے۔ مثال کے طور پر، اگر ہم یہ بیان کرنا چاہیں کہ یہ AI نصاب دمتری سوشنیکوف نے 1 جنوری 2022 کو تیار کیا تھا - تو یہاں وہ تین حصے ہیں جو ہم استعمال کر سکتے ہیں: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ یہاں `http://www.example.com/terms/creation-date` اور `http://purl.org/dc/elements/1.1/creator` کچھ معروف اور عالمی سطح پر قبول شدہ URIs ہیں جو *تخلیق کار* اور *تخلیق کی تاریخ* کے تصورات کو ظاہر کرتے ہیں۔ + +زیادہ پیچیدہ صورت میں، اگر ہم تخلیق کاروں کی فہرست کو بیان کرنا چاہیں، تو ہم RDF میں بیان کردہ کچھ ڈیٹا ڈھانچے استعمال کر سکتے ہیں۔ + + + +> اوپر کے خاکے [دمتری سوشنیکوف](http://soshnikov.com) کے ذریعے + +سیمینٹک ویب کی تعمیر کی پیش رفت کو سرچ انجنز اور قدرتی زبان کی پروسیسنگ تکنیکوں کی کامیابی نے کسی حد تک سست کر دیا، جو متن سے منظم ڈیٹا نکالنے کی اجازت دیتی ہیں۔ تاہم، کچھ شعبوں میں اونٹولوجیز اور علم کے ذخائر کو برقرار رکھنے کے لیے ابھی بھی اہم کوششیں کی جا رہی ہیں۔ چند قابل ذکر منصوبے: + +* [WikiData](https://wikidata.org/) مشین پڑھنے کے قابل علم کے ذخائر کا مجموعہ ہے جو ویکیپیڈیا سے منسلک ہیں۔ زیادہ تر ڈیٹا ویکیپیڈیا *InfoBoxes* سے نکالا جاتا ہے، جو ویکیپیڈیا صفحات کے اندر منظم مواد کے ٹکڑے ہیں۔ آپ [SPARQL](https://query.wikidata.org/) میں ویکیڈیٹا کو سوال کر سکتے ہیں، جو سیمینٹک ویب کے لیے ایک خاص سوال زبان ہے۔ یہاں ایک نمونہ سوال ہے جو انسانوں میں سب سے زیادہ مقبول آنکھوں کے رنگ دکھاتا ہے: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) ویکیڈیٹا جیسی ایک اور کوشش ہے۔ + +> ✅ اگر آپ اپنی اونٹولوجیز بنانے یا موجودہ اونٹولوجیز کو کھولنے کے ساتھ تجربہ کرنا چاہتے ہیں، تو ایک بہترین بصری اونٹولوجی ایڈیٹر [Protégé](https://protege.stanford.edu/) ہے۔ اسے ڈاؤنلوڈ کریں، یا آن لائن استعمال کریں۔ + + + +*ویب پروٹیج ایڈیٹر رومانوف فیملی اونٹولوجی کے ساتھ کھلا ہوا۔ اسکرین شاٹ دمتری سوشنیکوف کے ذریعے* + +## ✍️ مشق: ایک فیملی اونٹولوجی + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) دیکھیں، جو سیمینٹک ویب تکنیکوں کو استعمال کرتے ہوئے خاندانی تعلقات کے بارے میں استدلال کرنے کی مثال فراہم کرتا ہے۔ ہم عام GEDCOM فارمیٹ میں نمائندگی کیے گئے خاندانی درخت اور خاندانی تعلقات کی اونٹولوجی لیں گے اور دیے گئے افراد کے سیٹ کے لیے تمام خاندانی تعلقات کا گراف بنائیں گے۔ + +## مائیکروسافٹ کانسیپٹ گراف + +زیادہ تر معاملات میں، اونٹولوجیز کو احتیاط سے ہاتھ سے تیار کیا جاتا ہے۔ تاہم، یہ بھی ممکن ہے کہ **غیر منظم ڈیٹا** سے اونٹولوجیز نکالی جائیں، مثال کے طور پر، قدرتی زبان کے متن سے۔ + +ایسا ہی ایک اقدام مائیکروسافٹ ریسرچ نے کیا، جس کے نتیجے میں [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste) وجود میں آیا۔ + +یہ اداروں کا ایک بڑا مجموعہ ہے جو `is-a` وراثتی تعلق کے ذریعے گروپ کیا گیا ہے۔ یہ سوالات کے جواب دینے کی اجازت دیتا ہے جیسے "مائیکروسافٹ کیا ہے؟" - جواب کچھ اس طرح ہوگا "ایک کمپنی 0.87 کے امکان کے ساتھ، اور ایک برانڈ 0.75 کے امکان کے ساتھ"۔ + +یہ گراف یا تو REST API کے طور پر دستیاب ہے، یا ایک بڑے ڈاؤنلوڈ کے قابل ٹیکسٹ فائل کے طور پر جو تمام ادارہ جوڑوں کی فہرست فراہم کرتا ہے۔ + +## ✍️ مشق: ایک کانسیپٹ گراف + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) نوٹ بک آزمائیں تاکہ یہ دیکھ سکیں کہ ہم مائیکروسافٹ کانسیپٹ گراف کو خبری مضامین کو کئی زمروں میں گروپ کرنے کے لیے کیسے استعمال کر سکتے ہیں۔ + +## نتیجہ + +آج کل، AI کو اکثر *مشین لرننگ* یا *نیورل نیٹ ورکس* کا مترادف سمجھا جاتا ہے۔ تاہم، ایک انسان واضح استدلال بھی ظاہر کرتا ہے، جو کچھ ایسا ہے جو نیورل نیٹ ورکس فی الحال نہیں سنبھال رہے ہیں۔ حقیقی دنیا کے منصوبوں میں، واضح استدلال اب بھی ان کاموں کو انجام دینے کے لیے استعمال کیا جاتا ہے جن کے لیے وضاحت کی ضرورت ہوتی ہے، یا نظام کے رویے کو کنٹرول شدہ طریقے سے تبدیل کرنے کی صلاحیت۔ + +## 🚀 چیلنج + +اس سبق سے منسلک فیملی اونٹولوجی نوٹ بک میں، دیگر خاندانی تعلقات کے ساتھ تجربہ کرنے کا موقع موجود ہے۔ خاندانی درخت میں لوگوں کے درمیان نئے تعلقات دریافت کرنے کی کوشش کریں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## جائزہ اور خود مطالعہ + +انٹرنیٹ پر تحقیق کریں تاکہ ان علاقوں کو دریافت کریں جہاں انسانوں نے علم کو مقدار میں بیان کرنے اور کوڈفائی کرنے کی کوشش کی ہے۔ بلوم کی ٹیکسانومی پر نظر ڈالیں، اور تاریخ میں واپس جائیں تاکہ یہ جان سکیں کہ انسانوں نے اپنی دنیا کو سمجھنے کی کوشش کیسے کی۔ لینیس کے کام کو دیکھیں کہ انہوں نے جانداروں کی ٹیکسانومی کیسے بنائی، اور مشاہدہ کریں کہ دمتری مینڈیلیف نے کیمیائی عناصر کو بیان کرنے اور گروپ کرنے کا طریقہ کیسے بنایا۔ آپ کون سے دیگر دلچسپ مثالیں تلاش کر سکتے ہیں؟ + +**اسائنمنٹ**: [اونٹولوجی بنائیں](assignment.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/2-Symbolic/assignment.md b/translations/ur/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..c335fc43 --- /dev/null +++ b/translations/ur/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# ایک اونٹولوجی بنائیں + +علمی بنیاد بنانا ایک ماڈل کو درجہ بندی کرنے کے بارے میں ہے جو کسی موضوع کے حقائق کی نمائندگی کرتا ہے۔ ایک موضوع منتخب کریں - جیسے کوئی شخص، جگہ، یا چیز - اور پھر اس موضوع کا ایک ماڈل بنائیں۔ اس سبق میں بیان کردہ تکنیکوں اور ماڈل بنانے کی حکمت عملیوں کا استعمال کریں۔ ایک مثال یہ ہو سکتی ہے کہ ایک لیونگ روم کی اونٹولوجی بنائی جائے جس میں فرنیچر، لائٹس وغیرہ شامل ہوں۔ لیونگ روم باورچی خانے سے کیسے مختلف ہے؟ باتھ روم سے؟ آپ کو کیسے پتہ چلتا ہے کہ یہ لیونگ روم ہے نہ کہ ڈائننگ روم؟ اپنی اونٹولوجی بنانے کے لیے [Protégé](https://protege.stanford.edu/) کا استعمال کریں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ur/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..f5c4ea0f --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# نیورل نیٹ ورکس کا تعارف: پرسیپٹرون + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +جدید نیورل نیٹ ورک جیسی کسی چیز کو نافذ کرنے کی پہلی کوششوں میں سے ایک 1957 میں کارنیل ایئروناٹیکل لیبارٹری کے فرینک روزن بلیٹ نے کی تھی۔ یہ ایک ہارڈویئر نفاذ تھا جسے "مارک-1" کہا جاتا تھا، جو بنیادی جیومیٹرک اشکال جیسے مثلث، مربع اور دائرے کو پہچاننے کے لیے ڈیزائن کیا گیا تھا۔ + +| | | +|--------------|-----------| +|فرینک روزن بلیٹ | مارک 1 پرسیپٹرون| + +> تصاویر [ویکیپیڈیا سے](https://en.wikipedia.org/wiki/Perceptron) + +ایک ان پٹ تصویر کو 20x20 فوٹو سیل کے ایک صف کے ذریعے ظاہر کیا گیا تھا، لہذا نیورل نیٹ ورک کے 400 ان پٹس اور ایک بائنری آؤٹ پٹ تھا۔ ایک سادہ نیٹ ورک میں ایک نیورون ہوتا تھا، جسے **تھریش ہولڈ لاجک یونٹ** بھی کہا جاتا ہے۔ نیورل نیٹ ورک کے ویٹس پوٹینشیومیٹرز کی طرح کام کرتے تھے جنہیں تربیت کے مرحلے کے دوران دستی طور پر ایڈجسٹ کرنے کی ضرورت ہوتی تھی۔ + +> ✅ پوٹینشیومیٹر ایک ایسا آلہ ہے جو صارف کو سرکٹ کی مزاحمت کو ایڈجسٹ کرنے کی اجازت دیتا ہے۔ + +> نیویارک ٹائمز نے اس وقت پرسیپٹرون کے بارے میں لکھا: *ایک الیکٹرانک کمپیوٹر کا جنین جس کے بارے میں [نیوی] کو توقع ہے کہ وہ چل سکے گا، بات کر سکے گا، دیکھ سکے گا، لکھ سکے گا، خود کو دوبارہ پیدا کر سکے گا اور اپنی موجودگی سے آگاہ ہو سکے گا۔* + +## پرسیپٹرون ماڈل + +فرض کریں کہ ہمارے ماڈل میں N فیچرز ہیں، اس صورت میں ان پٹ ویکٹر N سائز کا ایک ویکٹر ہوگا۔ پرسیپٹرون ایک **بائنری کلاسیفکیشن** ماڈل ہے، یعنی یہ ان پٹ ڈیٹا کی دو کلاسز کے درمیان فرق کر سکتا ہے۔ ہم فرض کریں گے کہ ہر ان پٹ ویکٹر x کے لیے ہمارے پرسیپٹرون کا آؤٹ پٹ +1 یا -1 ہوگا، جو کلاس پر منحصر ہے۔ آؤٹ پٹ درج ذیل فارمولے کا استعمال کرتے ہوئے حساب کیا جائے گا: + +y(x) = f(wTx) + +جہاں f ایک اسٹیپ ایکٹیویشن فنکشن ہے۔ + + + + +## پرسیپٹرون کی تربیت + +پرسیپٹرون کو تربیت دینے کے لیے ہمیں ایک ویٹس ویکٹر w تلاش کرنے کی ضرورت ہے جو زیادہ تر ویلیوز کو درست طریقے سے کلاسیفائی کرے، یعنی سب سے کم **غلطی** دے۔ یہ غلطی E درج ذیل طریقے سے **پرسیپٹرون معیار** کے ذریعے بیان کی گئی ہے: + +E(w) = -∑wTxiti + +جہاں: + +* مجموعہ ان تربیتی ڈیٹا پوائنٹس i پر لیا جاتا ہے جو غلط کلاسیفکیشن کا نتیجہ دیتے ہیں۔ +* xi ان پٹ ڈیٹا ہے، اور ti منفی اور مثبت مثالوں کے لیے بالترتیب -1 یا +1 ہے۔ + +یہ معیار ویٹس w کے ایک فنکشن کے طور پر سمجھا جاتا ہے، اور ہمیں اسے کم سے کم کرنا ہوتا ہے۔ اکثر، ایک طریقہ جسے **گریڈینٹ ڈیسنٹ** کہا جاتا ہے استعمال کیا جاتا ہے، جس میں ہم کچھ ابتدائی ویٹس w(0) سے شروع کرتے ہیں، اور پھر ہر قدم پر ویٹس کو درج ذیل فارمولے کے مطابق اپ ڈیٹ کرتے ہیں: + +w(t+1) = w(t) - η∇E(w) + +یہاں η کو **لرننگ ریٹ** کہا جاتا ہے، اور ∇E(w) E کا **گریڈینٹ** ظاہر کرتا ہے۔ جب ہم گریڈینٹ کا حساب لگاتے ہیں، تو ہمیں یہ ملتا ہے: + +w(t+1) = w(t) + ∑ηxiti + +Python میں اس کا الگورتھم کچھ یوں دکھائی دیتا ہے: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## نتیجہ + +اس سبق میں، آپ نے پرسیپٹرون کے بارے میں سیکھا، جو ایک بائنری کلاسیفکیشن ماڈل ہے، اور اسے ویٹس ویکٹر کا استعمال کرتے ہوئے کیسے تربیت دی جاتی ہے۔ + +## 🚀 چیلنج + +اگر آپ اپنا پرسیپٹرون بنانا چاہتے ہیں، تو [Microsoft Learn پر یہ لیب](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) آزمائیں، جو [Azure ML ڈیزائنر](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) کا استعمال کرتی ہے۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## جائزہ اور خود مطالعہ + +یہ دیکھنے کے لیے کہ ہم پرسیپٹرون کو کھلونا مسئلہ اور حقیقی زندگی کے مسائل حل کرنے کے لیے کیسے استعمال کر سکتے ہیں، اور سیکھنا جاری رکھنے کے لیے - [پرسیپٹرون](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) نوٹ بک پر جائیں۔ + +یہاں پرسیپٹرون کے بارے میں ایک دلچسپ [مضمون](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) بھی موجود ہے۔ + +## [اسائنمنٹ](lab/README.md) + +اس سبق میں، ہم نے بائنری کلاسیفکیشن کے کام کے لیے ایک پرسیپٹرون نافذ کیا، اور اسے دو ہاتھ سے لکھے ہوئے ہندسوں کے درمیان کلاسیفائی کرنے کے لیے استعمال کیا۔ اس لیب میں، آپ سے کہا گیا ہے کہ ہندسوں کی مکمل کلاسیفکیشن کا مسئلہ حل کریں، یعنی یہ تعین کریں کہ دی گئی تصویر کے لیے کون سا ہندسہ سب سے زیادہ ممکنہ طور پر مطابقت رکھتا ہے۔ + +* [ہدایات](lab/README.md) +* [نوٹ بک](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ur/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..74c2390c --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# پرسیپٹرون کے ساتھ ملٹی کلاس درجہ بندی + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +اس سبق میں ہم نے MNIST ہاتھ سے لکھے گئے اعداد کی بائنری درجہ بندی کے لیے جو کوڈ تیار کیا ہے، اس کا استعمال کرتے ہوئے ایک ملٹی کلاس درجہ بندی تیار کریں جو کسی بھی عدد کو پہچان سکے۔ ٹرین اور ٹیسٹ ڈیٹا سیٹ پر درجہ بندی کی درستگی کا حساب لگائیں، اور کنفیوشن میٹرکس پرنٹ کریں۔ + +## اشارے + +1. ہر عدد کے لیے، "یہ عدد بمقابلہ دیگر تمام اعداد" کے لیے بائنری درجہ بندی کا ڈیٹا سیٹ بنائیں۔ +1. بائنری درجہ بندی کے لیے 10 مختلف پرسیپٹرونز کو ٹرین کریں (ہر عدد کے لیے ایک)۔ +1. ایک فنکشن ڈیفائن کریں جو ان پٹ عدد کو درجہ بندی کرے۔ + +> **اشارہ**: اگر ہم تمام 10 پرسیپٹرونز کے وزن کو ایک میٹرکس میں یکجا کریں، تو ہم ایک میٹرکس ضرب کے ذریعے ان پٹ اعداد پر تمام 10 پرسیپٹرونز کو لاگو کر سکیں گے۔ سب سے زیادہ ممکنہ عدد کو صرف `argmax` آپریشن کے ذریعے آؤٹ پٹ پر لاگو کر کے پایا جا سکتا ہے۔ + +## شروع کرنے والا نوٹ بک + +لیب کو شروع کرنے کے لیے [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) کھولیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ur/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..dbdfc2dd --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# نیورل نیٹ ورکس کا تعارف: ملٹی لیئرڈ پرسیپٹرون + +پچھلے حصے میں، آپ نے سب سے سادہ نیورل نیٹ ورک ماڈل - ایک لیئرڈ پرسیپٹرون، جو کہ ایک لکیری دو کلاسز کی درجہ بندی کا ماڈل ہے، کے بارے میں سیکھا۔ + +اس حصے میں ہم اس ماڈل کو ایک زیادہ لچکدار فریم ورک میں توسیع دیں گے، جو ہمیں یہ کرنے کی اجازت دے گا: + +* **ملٹی کلاس درجہ بندی** انجام دینا، دو کلاسز کے علاوہ +* **ریگریشن مسائل** حل کرنا، درجہ بندی کے علاوہ +* ایسی کلاسز کو الگ کرنا جو لکیری طور پر الگ نہیں کی جا سکتیں + +ہم Python میں اپنا ایک ماڈیولر فریم ورک بھی تیار کریں گے جو ہمیں مختلف نیورل نیٹ ورک آرکیٹیکچرز بنانے کی اجازت دے گا۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## مشین لرننگ کی رسمی وضاحت + +آئیے مشین لرننگ کے مسئلے کو رسمی طور پر بیان کرنے سے شروع کرتے ہیں۔ فرض کریں کہ ہمارے پاس ایک تربیتی ڈیٹاسیٹ **X** ہے جس کے لیبلز **Y** ہیں، اور ہمیں ایک ماڈل *f* بنانا ہے جو سب سے زیادہ درست پیش گوئیاں کرے۔ پیش گوئیوں کے معیار کو **لاس فنکشن** ℒ کے ذریعے ناپا جاتا ہے۔ درج ذیل لاس فنکشنز اکثر استعمال کیے جاتے ہیں: + +* ریگریشن مسئلے کے لیے، جب ہمیں ایک عدد کی پیش گوئی کرنی ہو، ہم **ایبسولیوٹ ایرر** ∑i|f(x(i))-y(i)| یا **اسکوئرڈ ایرر** ∑i(f(x(i))-y(i))2 استعمال کر سکتے ہیں۔ +* درجہ بندی کے لیے، ہم **0-1 لاس** (جو بنیادی طور پر ماڈل کی **درستگی** کے برابر ہے) یا **لاجسٹک لاس** استعمال کرتے ہیں۔ + +ایک لیول پرسیپٹرون کے لیے، فنکشن *f* کو ایک لکیری فنکشن *f(x)=wx+b* کے طور پر بیان کیا گیا تھا (یہاں *w* وزن میٹرکس ہے، *x* ان پٹ فیچرز کا ویکٹر ہے، اور *b* بایس ویکٹر ہے)۔ مختلف نیورل نیٹ ورک آرکیٹیکچرز کے لیے، یہ فنکشن زیادہ پیچیدہ شکل اختیار کر سکتا ہے۔ + +> درجہ بندی کے معاملے میں، اکثر یہ مطلوب ہوتا ہے کہ نیٹ ورک آؤٹ پٹ کے طور پر متعلقہ کلاسز کے امکانات فراہم کرے۔ کسی بھی عدد کو امکانات میں تبدیل کرنے کے لیے (مثلاً آؤٹ پٹ کو نارملائز کرنے کے لیے)، ہم اکثر **سافٹ میکس** فنکشن σ استعمال کرتے ہیں، اور فنکشن *f* بن جاتا ہے *f(x)=σ(wx+b)*۔ + +اوپر دی گئی *f* کی تعریف میں، *w* اور *b* کو **پیرامیٹرز** θ=⟨*w,b*⟩ کہا جاتا ہے۔ دیے گئے ڈیٹاسیٹ ⟨**X**,**Y**⟩ کے ساتھ، ہم پورے ڈیٹاسیٹ پر مجموعی غلطی کو پیرامیٹرز θ کے فنکشن کے طور پر شمار کر سکتے ہیں۔ + +> ✅ **نیورل نیٹ ورک کی تربیت کا مقصد پیرامیٹرز θ کو تبدیل کر کے غلطی کو کم سے کم کرنا ہے** + +## گریڈینٹ ڈیسنٹ آپٹیمائزیشن + +فنکشن آپٹیمائزیشن کا ایک معروف طریقہ **گریڈینٹ ڈیسنٹ** کہلاتا ہے۔ اس کا خیال یہ ہے کہ ہم لاس فنکشن کا مشتق (کثیر جہتی صورت میں **گریڈینٹ** کہلاتا ہے) پیرامیٹرز کے لحاظ سے شمار کر سکتے ہیں، اور پیرامیٹرز کو اس طرح تبدیل کر سکتے ہیں کہ غلطی کم ہو۔ اسے درج ذیل طور پر رسمی بنایا جا سکتا ہے: + +* پیرامیٹرز کو کچھ بے ترتیب اقدار سے شروع کریں w(0), b(0) +* درج ذیل قدم کو کئی بار دہرائیں: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +تربیت کے دوران، آپٹیمائزیشن کے قدم پورے ڈیٹاسیٹ کو مدنظر رکھتے ہوئے شمار کیے جانے چاہئیں (یاد رکھیں کہ لاس تمام تربیتی نمونوں کے ذریعے مجموعے کے طور پر شمار کیا جاتا ہے)۔ تاہم، حقیقی زندگی میں ہم ڈیٹاسیٹ کے چھوٹے حصے لیتے ہیں جنہیں **منی بیچز** کہا جاتا ہے، اور ڈیٹا کے ایک ذیلی سیٹ کی بنیاد پر گریڈینٹس شمار کرتے ہیں۔ چونکہ ہر بار ذیلی سیٹ کو بے ترتیب طور پر لیا جاتا ہے، اس طریقے کو **اسٹوکاسٹک گریڈینٹ ڈیسنٹ** (SGD) کہا جاتا ہے۔ + +## ملٹی لیئرڈ پرسیپٹرونز اور بیک پروپیگیشن + +جیسا کہ ہم نے اوپر دیکھا، ایک لیئرڈ نیٹ ورک لکیری طور پر الگ کی جانے والی کلاسز کو درجہ بندی کرنے کے قابل ہے۔ ایک زیادہ بھرپور ماڈل بنانے کے لیے، ہم نیٹ ورک کی کئی لیئرز کو یکجا کر سکتے ہیں۔ ریاضیاتی طور پر اس کا مطلب یہ ہوگا کہ فنکشن *f* ایک زیادہ پیچیدہ شکل اختیار کرے گا، اور کئی مراحل میں شمار کیا جائے گا: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +یہاں، α ایک **نان لکیری ایکٹیویشن فنکشن** ہے، σ ایک سافٹ میکس فنکشن ہے، اور پیرامیٹرز θ=<*w1,b1,w2,b2*> ہیں۔ + +گریڈینٹ ڈیسنٹ الگورتھم وہی رہے گا، لیکن گریڈینٹس کو شمار کرنا زیادہ مشکل ہوگا۔ چین ڈفرینشی ایشن رول کے مطابق، ہم مشتقات کو درج ذیل طور پر شمار کر سکتے ہیں: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ چین ڈفرینشی ایشن رول کو لاس فنکشن کے پیرامیٹرز کے لحاظ سے مشتقات شمار کرنے کے لیے استعمال کیا جاتا ہے۔ + +نوٹ کریں کہ ان تمام تاثرات کے بائیں جانب کا حصہ ایک جیسا ہے، اور اس طرح ہم مؤثر طریقے سے مشتقات کو لاس فنکشن سے شروع کر کے "پیچھے کی طرف" کمپیوٹیشنل گراف کے ذریعے شمار کر سکتے ہیں۔ اس طرح ملٹی لیئرڈ پرسیپٹرون کی تربیت کے طریقے کو **بیک پروپیگیشن** یا 'بیک پروپ' کہا جاتا ہے۔ + +کمپیوٹ گراف + +> TODO: تصویر کا حوالہ + +> ✅ ہم اپنے نوٹ بک کی مثال میں بیک پروپ کو بہت زیادہ تفصیل سے کور کریں گے۔ + +## نتیجہ + +اس سبق میں، ہم نے اپنی نیورل نیٹ ورک لائبریری بنائی، اور اسے ایک سادہ دو جہتی درجہ بندی کے کام کے لیے استعمال کیا۔ + +## 🚀 چیلنج + +ساتھ دی گئی نوٹ بک میں، آپ ملٹی لیئرڈ پرسیپٹرونز بنانے اور تربیت دینے کے لیے اپنا فریم ورک نافذ کریں گے۔ آپ تفصیل سے دیکھ سکیں گے کہ جدید نیورل نیٹ ورکس کیسے کام کرتے ہیں۔ + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) نوٹ بک پر جائیں اور اس پر کام کریں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## جائزہ اور خود مطالعہ + +بیک پروپیگیشن ایک عام الگورتھم ہے جو AI اور ML میں استعمال ہوتا ہے، [مزید تفصیل سے مطالعہ کرنے کے قابل](https://wikipedia.org/wiki/Backpropagation) ہے۔ + +## [اسائنمنٹ](lab/README.md) + +اس لیب میں، آپ سے کہا گیا ہے کہ آپ اس سبق میں بنائے گئے فریم ورک کو MNIST ہاتھ سے لکھے گئے ہندسوں کی درجہ بندی کے مسئلے کو حل کرنے کے لیے استعمال کریں۔ + +* [ہدایات](lab/README.md) +* [نوٹ بک](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ur/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..324fda5b --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# ایم این آئی ایس ٹی کی درجہ بندی اپنے فریم ورک کے ساتھ + +[ای آئی فار بیگنرز کریکولم](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +ایم این آئی ایس ٹی ہاتھ سے لکھے گئے ہندسوں کی درجہ بندی کا مسئلہ 1، 2، اور 3-لیئرڈ پرسیپٹرون کا استعمال کرتے ہوئے حل کریں۔ اس نیورل نیٹ ورک فریم ورک کا استعمال کریں جو ہم نے سبق میں تیار کیا ہے۔ + +## نوٹ بک کا آغاز + +لیب شروع کرنے کے لیے [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) کھولیں۔ + +## سوالات + +اس لیب کے نتیجے میں، درج ذیل سوالات کے جوابات دینے کی کوشش کریں: + +- کیا انٹر-لیئر ایکٹیویشن فنکشن نیٹ ورک کی کارکردگی پر اثر ڈالتا ہے؟ +- کیا اس کام کے لیے 2- یا 3-لیئرڈ نیٹ ورک کی ضرورت ہے؟ +- کیا آپ کو نیٹ ورک کی تربیت کے دوران کسی مسئلے کا سامنا ہوا؟ خاص طور پر جب لیئرز کی تعداد بڑھ گئی۔ +- تربیت کے دوران نیٹ ورک کے ویٹس کیسے برتاؤ کرتے ہیں؟ آپ ویٹس کی زیادہ سے زیادہ مطلق قدر کو ایپوک کے مقابلے میں پلاٹ کر کے تعلق کو سمجھ سکتے ہیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ur/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..3aee93c3 --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# نیورل نیٹ ورک فریم ورک + +جیسا کہ ہم پہلے ہی سیکھ چکے ہیں، نیورل نیٹ ورکس کو مؤثر طریقے سے ٹرین کرنے کے لیے ہمیں دو کام کرنے کی ضرورت ہے: + +* ٹینسرز پر کام کرنا، جیسے ضرب دینا، جمع کرنا، اور کچھ فنکشنز جیسے سگموئڈ یا سوفٹ میکس کا حساب لگانا +* تمام ایکسپریشنز کے گریڈینٹس کا حساب لگانا، تاکہ گریڈینٹ ڈیسنٹ آپٹیمائزیشن کی جا سکے + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +اگرچہ `numpy` لائبریری پہلا کام کر سکتی ہے، ہمیں گریڈینٹس کا حساب لگانے کے لیے کسی میکانزم کی ضرورت ہے۔ [ہمارے فریم ورک](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) میں، جو ہم نے پچھلے سیکشن میں تیار کیا تھا، ہمیں `backward` میتھڈ کے اندر تمام ڈیریویٹو فنکشنز کو دستی طور پر پروگرام کرنا پڑا، جو بیک پروپیگیشن کرتا ہے۔ مثالی طور پر، ایک فریم ورک ہمیں *کسی بھی ایکسپریشن* کے گریڈینٹس کا حساب لگانے کا موقع فراہم کرے۔ + +ایک اور اہم چیز یہ ہے کہ جی پی یو یا کسی اور خاص کمپیوٹ یونٹ، جیسے [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) پر کمپیوٹیشنز انجام دینے کے قابل ہونا۔ ڈیپ نیورل نیٹ ورک کی ٹریننگ میں *بہت زیادہ* کمپیوٹیشنز کی ضرورت ہوتی ہے، اور ان کمپیوٹیشنز کو جی پی یوز پر پیراللائز کرنا بہت اہم ہے۔ + +> ✅ 'پیراللائز' کا مطلب ہے کہ کمپیوٹیشنز کو متعدد ڈیوائسز پر تقسیم کرنا۔ + +فی الحال، دو سب سے زیادہ مقبول نیورل فریم ورک ہیں: [TensorFlow](http://TensorFlow.org) اور [PyTorch](https://pytorch.org/)۔ دونوں سی پی یو اور جی پی یو پر ٹینسرز کے ساتھ کام کرنے کے لیے ایک لو-لیول API فراہم کرتے ہیں۔ لو-لیول API کے اوپر، ایک ہائی-لیول API بھی موجود ہے، جسے بالترتیب [Keras](https://keras.io/) اور [PyTorch Lightning](https://pytorchlightning.ai/) کہا جاتا ہے۔ + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**لو-لیول APIs** دونوں فریم ورکس میں آپ کو **کمپیوٹیشنل گراف** بنانے کی اجازت دیتے ہیں۔ یہ گراف یہ طے کرتا ہے کہ دیے گئے ان پٹ پیرامیٹرز کے ساتھ آؤٹ پٹ (عام طور پر لاس فنکشن) کو کیسے کمپیوٹ کیا جائے، اور اگر جی پی یو دستیاب ہو تو اسے کمپیوٹیشن کے لیے وہاں بھیجا جا سکتا ہے۔ اس کمپیوٹیشنل گراف کو ڈیفرینشیٹ کرنے اور گریڈینٹس کا حساب لگانے کے لیے فنکشنز موجود ہیں، جنہیں ماڈل پیرامیٹرز کو آپٹیمائز کرنے کے لیے استعمال کیا جا سکتا ہے۔ + +**ہائی-لیول APIs** نیورل نیٹ ورکس کو زیادہ تر **لیئرز کے سلسلے** کے طور پر دیکھتے ہیں، اور زیادہ تر نیورل نیٹ ورکس کی تعمیر کو بہت آسان بنا دیتے ہیں۔ ماڈل کی ٹریننگ عام طور پر ڈیٹا تیار کرنے اور پھر `fit` فنکشن کو کال کرنے کی ضرورت ہوتی ہے۔ + +ہائی-لیول API آپ کو عام نیورل نیٹ ورکس کو بہت تیزی سے بنانے کی اجازت دیتا ہے بغیر بہت سی تفصیلات کی فکر کیے۔ اسی وقت، لو-لیول API ٹریننگ کے عمل پر زیادہ کنٹرول فراہم کرتا ہے، اور اس لیے یہ تحقیق میں بہت زیادہ استعمال ہوتا ہے، جب آپ نئے نیورل نیٹ ورک آرکیٹیکچرز کے ساتھ کام کر رہے ہوں۔ + +یہ سمجھنا بھی ضروری ہے کہ آپ دونوں APIs کو ایک ساتھ استعمال کر سکتے ہیں، جیسے کہ آپ لو-لیول API کا استعمال کرتے ہوئے اپنی نیٹ ورک لیئر آرکیٹیکچر تیار کر سکتے ہیں، اور پھر اسے ہائی-لیول API کے ساتھ بنائے گئے اور ٹرین کیے گئے بڑے نیٹ ورک کے اندر استعمال کر سکتے ہیں۔ یا آپ ہائی-لیول API کا استعمال کرتے ہوئے لیئرز کے سلسلے کے طور پر نیٹ ورک کی تعریف کر سکتے ہیں، اور پھر آپٹیمائزیشن انجام دینے کے لیے اپنا لو-لیول ٹریننگ لوپ استعمال کر سکتے ہیں۔ دونوں APIs ایک ہی بنیادی تصورات کا استعمال کرتے ہیں، اور انہیں ایک ساتھ کام کرنے کے لیے ڈیزائن کیا گیا ہے۔ + +## سیکھنا + +اس کورس میں، ہم زیادہ تر مواد PyTorch اور TensorFlow دونوں کے لیے پیش کرتے ہیں۔ آپ اپنی پسند کا فریم ورک منتخب کر سکتے ہیں اور صرف متعلقہ نوٹ بکس کے ذریعے جا سکتے ہیں۔ اگر آپ کو یقین نہیں ہے کہ کون سا فریم ورک منتخب کرنا ہے، تو انٹرنیٹ پر **PyTorch بمقابلہ TensorFlow** کے بارے میں کچھ مباحثے پڑھیں۔ آپ دونوں فریم ورکس کو دیکھ کر بھی بہتر سمجھ حاصل کر سکتے ہیں۔ + +جہاں ممکن ہو، ہم سادگی کے لیے ہائی-لیول APIs استعمال کریں گے۔ تاہم، ہمارا ماننا ہے کہ نیورل نیٹ ورکس کو بنیادی سطح سے سمجھنا ضروری ہے، اس لیے شروع میں ہم لو-لیول API اور ٹینسرز کے ساتھ کام کرنے سے آغاز کریں گے۔ تاہم، اگر آپ تیزی سے آگے بڑھنا چاہتے ہیں اور ان تفصیلات کو سیکھنے میں زیادہ وقت نہیں گزارنا چاہتے، تو آپ ان کو چھوڑ کر سیدھے ہائی-لیول API نوٹ بکس میں جا سکتے ہیں۔ + +## ✍️ مشقیں: فریم ورک + +مندرجہ ذیل نوٹ بکس میں اپنی تعلیم جاری رکھیں: + +Low-Level API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +فریم ورک میں مہارت حاصل کرنے کے بعد، آئیے اوورفٹنگ کے تصور کا جائزہ لیں۔ + +# اوورفٹنگ + +اوورفٹنگ مشین لرننگ میں ایک انتہائی اہم تصور ہے، اور اسے صحیح طریقے سے سمجھنا بہت ضروری ہے! + +مندرجہ ذیل مسئلے پر غور کریں، جہاں ہمیں 5 پوائنٹس (گراف میں `x` سے ظاہر کیے گئے) کو اپروکسیمیٹ کرنا ہے: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ur.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ur.jpg) +-------------------------|-------------------------- +**لکیری ماڈل، 2 پیرامیٹرز** | **نان-لکیری ماڈل، 7 پیرامیٹرز** +ٹریننگ ایرر = 5.3 | ٹریننگ ایرر = 0 +ویلیڈیشن ایرر = 5.1 | ویلیڈیشن ایرر = 20 + +* بائیں طرف، ہم ایک اچھی سیدھی لائن اپروکسیمیشن دیکھتے ہیں۔ چونکہ پیرامیٹرز کی تعداد مناسب ہے، ماڈل پوائنٹس کی تقسیم کے پیچھے آئیڈیا کو صحیح طریقے سے سمجھتا ہے۔ +* دائیں طرف، ماڈل بہت زیادہ طاقتور ہے۔ چونکہ ہمارے پاس صرف 5 پوائنٹس ہیں اور ماڈل کے پاس 7 پیرامیٹرز ہیں، یہ اس طرح ایڈجسٹ ہو سکتا ہے کہ تمام پوائنٹس سے گزرے، جس سے ٹریننگ ایرر 0 ہو جائے۔ تاہم، یہ ماڈل کو ڈیٹا کے پیچھے صحیح پیٹرن کو سمجھنے سے روکتا ہے، اس لیے ویلیڈیشن ایرر بہت زیادہ ہے۔ + +یہ ماڈل کی پیچیدگی (پیرامیٹرز کی تعداد) اور ٹریننگ سیمپلز کی تعداد کے درمیان صحیح توازن قائم کرنا بہت اہم ہے۔ + +## اوورفٹنگ کیوں ہوتی ہے + + * ٹریننگ ڈیٹا کی کمی + * بہت زیادہ طاقتور ماڈل + * ان پٹ ڈیٹا میں بہت زیادہ شور + +## اوورفٹنگ کا پتہ کیسے لگائیں + +جیسا کہ آپ اوپر گراف سے دیکھ سکتے ہیں، اوورفٹنگ کا پتہ بہت کم ٹریننگ ایرر اور بہت زیادہ ویلیڈیشن ایرر سے لگایا جا سکتا ہے۔ عام طور پر ٹریننگ کے دوران ہم دیکھیں گے کہ ٹریننگ اور ویلیڈیشن ایرر دونوں کم ہونا شروع ہو جاتے ہیں، اور پھر کسی وقت ویلیڈیشن ایرر کم ہونا بند کر سکتا ہے اور بڑھنا شروع کر سکتا ہے۔ یہ اوورفٹنگ کی علامت ہوگی، اور یہ اشارہ دے گا کہ ہمیں شاید اس وقت ٹریننگ روک دینی چاہیے (یا کم از کم ماڈل کا اسنیپ شاٹ لے لینا چاہیے)۔ + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ur.png) + +## اوورفٹنگ کو کیسے روکا جائے + +اگر آپ دیکھتے ہیں کہ اوورفٹنگ ہو رہی ہے، تو آپ درج ذیل میں سے کوئی ایک کام کر سکتے ہیں: + + * ٹریننگ ڈیٹا کی مقدار میں اضافہ کریں + * ماڈل کی پیچیدگی کو کم کریں + * کچھ [ریگولرائزیشن تکنیک](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) استعمال کریں، جیسے [ڈراپ آؤٹ](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout)، جس پر ہم بعد میں غور کریں گے۔ + +## اوورفٹنگ اور بایس-ویریئنس ٹریڈ آف + +اوورفٹنگ دراصل شماریات میں ایک زیادہ عمومی مسئلے کا معاملہ ہے جسے [بایس-ویریئنس ٹریڈ آف](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) کہا جاتا ہے۔ اگر ہم اپنے ماڈل میں ایرر کے ممکنہ ذرائع پر غور کریں، تو ہم دو قسم کے ایررز دیکھ سکتے ہیں: + +* **بایس ایررز**، جو ہمارے الگورتھم کی وجہ سے ٹریننگ ڈیٹا کے درمیان تعلق کو صحیح طریقے سے سمجھنے میں ناکامی کا نتیجہ ہیں۔ یہ اس حقیقت کی وجہ سے ہو سکتا ہے کہ ہمارا ماڈل کافی طاقتور نہیں ہے (**انڈر فٹنگ**)۔ +* **ویریئنس ایررز**، جو ان پٹ ڈیٹا میں شور کو معنی خیز تعلق کے بجائے اپروکسیمیٹ کرنے کی وجہ سے ہوتے ہیں (**اوورفٹنگ**)۔ + +ٹریننگ کے دوران، بایس ایرر کم ہوتا ہے (کیونکہ ہمارا ماڈل ڈیٹا کو اپروکسیمیٹ کرنا سیکھتا ہے)، اور ویریئنس ایرر بڑھتا ہے۔ یہ ضروری ہے کہ ٹریننگ کو روک دیا جائے - یا تو دستی طور پر (جب ہم اوورفٹنگ کا پتہ لگائیں) یا خودکار طور پر (ریگولرائزیشن متعارف کروا کر) - تاکہ اوورفٹنگ کو روکا جا سکے۔ + +## نتیجہ + +اس سبق میں، آپ نے دو سب سے زیادہ مقبول AI فریم ورکس، TensorFlow اور PyTorch کے مختلف APIs کے درمیان فرق کے بارے میں سیکھا۔ اس کے علاوہ، آپ نے ایک بہت اہم موضوع، اوورفٹنگ کے بارے میں سیکھا۔ + +## 🚀 چیلنج + +ساتھ دی گئی نوٹ بکس میں، آپ کو 'ٹاسکس' نیچے ملیں گے؛ نوٹ بکس کے ذریعے کام کریں اور ٹاسکس مکمل کریں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## جائزہ اور خود مطالعہ + +مندرجہ ذیل موضوعات پر کچھ تحقیق کریں: + +- TensorFlow +- PyTorch +- اوورفٹنگ + +اپنے آپ سے درج ذیل سوالات پوچھیں: + +- TensorFlow اور PyTorch میں کیا فرق ہے؟ +- اوورفٹنگ اور انڈر فٹنگ میں کیا فرق ہے؟ + +## [اسائنمنٹ](lab/README.md) + +اس لیب میں، آپ سے PyTorch یا TensorFlow کا استعمال کرتے ہوئے سنگل اور ملٹی لیئرڈ مکمل طور پر کنیکٹڈ نیٹ ورکس کے ذریعے دو کلاسیفکیشن مسائل حل کرنے کو کہا گیا ہے۔ + +* [ہدایات](lab/README.md) +* [نوٹ بک](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ur/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..054f2b5d --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# پائی ٹارچ/ٹینسر فلو کے ساتھ درجہ بندی + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +پائی ٹارچ یا ٹینسر فلو کا استعمال کرتے ہوئے دو درجہ بندی کے مسائل حل کریں، سنگل اور ملٹی لیئرڈ مکمل طور پر جڑے ہوئے نیٹ ورکس کے ذریعے: + +1. **[آئرس درجہ بندی](https://en.wikipedia.org/wiki/Iris_flower_data_set)** مسئلہ - ایک ایسا مسئلہ جس میں ٹیبلر ان پٹ ڈیٹا ہوتا ہے، جسے کلاسیکل مشین لرننگ کے ذریعے حل کیا جا سکتا ہے۔ آپ کا مقصد آئرس کو 3 کلاسز میں درجہ بندی کرنا ہوگا، 4 عددی پیرامیٹرز کی بنیاد پر۔ +1. **MNIST** ہاتھ سے لکھے گئے ہندسوں کی درجہ بندی کا مسئلہ، جسے ہم پہلے دیکھ چکے ہیں۔ + +بہترین درستگی حاصل کرنے کے لیے مختلف نیٹ ورک آرکیٹیکچرز آزمائیں۔ + +## شروع کرنے کا نوٹ بک + +لیب شروع کرنے کے لیے [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) کھولیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/3-NeuralNetworks/README.md b/translations/ur/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..1b3177d8 --- /dev/null +++ b/translations/ur/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# نیورل نیٹ ورکس کا تعارف + +![نیورل نیٹ ورکس کے تعارف کا خلاصہ ایک خاکے میں](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ur.png) + +جیسا کہ ہم نے تعارف میں بات کی، ذہانت حاصل کرنے کے طریقوں میں سے ایک یہ ہے کہ ایک **کمپیوٹر ماڈل** یا ایک **مصنوعی دماغ** کو تربیت دی جائے۔ بیسویں صدی کے وسط سے، محققین نے مختلف ریاضیاتی ماڈلز آزمائے، یہاں تک کہ حالیہ برسوں میں یہ سمت بے حد کامیاب ثابت ہوئی۔ دماغ کے ان ریاضیاتی ماڈلز کو **نیورل نیٹ ورکس** کہا جاتا ہے۔ + +> کبھی کبھار نیورل نیٹ ورکس کو *مصنوعی نیورل نیٹ ورکس* یا ANNs کہا جاتا ہے تاکہ یہ واضح کیا جا سکے کہ ہم ماڈلز کی بات کر رہے ہیں، نہ کہ حقیقی نیورونز کے نیٹ ورکس کی۔ + +## مشین لرننگ + +نیورل نیٹ ورکس ایک بڑے شعبے کا حصہ ہیں جسے **مشین لرننگ** کہا جاتا ہے، جس کا مقصد ڈیٹا کا استعمال کرتے ہوئے کمپیوٹر ماڈلز کو تربیت دینا ہے تاکہ وہ مسائل حل کر سکیں۔ مشین لرننگ مصنوعی ذہانت کا ایک بڑا حصہ ہے، تاہم، ہم اس نصاب میں کلاسیکل مشین لرننگ کا احاطہ نہیں کریں گے۔ + +> کلاسیکل مشین لرننگ کے بارے میں مزید جاننے کے لیے ہمارے علیحدہ **[مشین لرننگ فار بیگنرز](http://github.com/microsoft/ml-for-beginners)** نصاب کا دورہ کریں۔ + +مشین لرننگ میں، ہم فرض کرتے ہیں کہ ہمارے پاس کچھ مثالوں کا ڈیٹاسیٹ **X** اور اس کے مطابق آؤٹ پٹ ویلیوز **Y** موجود ہیں۔ مثالیں اکثر N-ڈائمینشنل ویکٹرز پر مشتمل ہوتی ہیں جن میں **فیچرز** شامل ہوتے ہیں، اور آؤٹ پٹس کو **لیبلز** کہا جاتا ہے۔ + +ہم مشین لرننگ کے دو سب سے عام مسائل پر غور کریں گے: + +* **کلاسیفکیشن**، جہاں ہمیں ایک ان پٹ آبجیکٹ کو دو یا زیادہ کلاسز میں تقسیم کرنا ہوتا ہے۔ +* **ریگریشن**، جہاں ہمیں ہر ان پٹ سیمپل کے لیے ایک عددی نمبر کی پیش گوئی کرنی ہوتی ہے۔ + +> جب ان پٹس اور آؤٹ پٹس کو ٹینسرز کے طور پر ظاہر کیا جاتا ہے، تو ان پٹ ڈیٹاسیٹ M×N کے سائز کی میٹرکس ہوتی ہے، جہاں M سیمپلز کی تعداد ہے اور N فیچرز کی تعداد ہے۔ آؤٹ پٹ لیبلز **Y** سائز M کا ویکٹر ہوتا ہے۔ + +اس نصاب میں، ہم صرف نیورل نیٹ ورک ماڈلز پر توجہ مرکوز کریں گے۔ + +## نیورون کا ماڈل + +حیاتیات سے ہمیں معلوم ہوتا ہے کہ ہمارا دماغ نیورل سیلز پر مشتمل ہوتا ہے، جن میں سے ہر ایک کے پاس متعدد "ان پٹس" (ایکسونز) اور ایک آؤٹ پٹ (ڈینڈرائٹ) ہوتا ہے۔ ایکسونز اور ڈینڈرائٹس برقی سگنلز منتقل کر سکتے ہیں، اور ایکسونز اور ڈینڈرائٹس کے درمیان کنکشن مختلف ڈگری کی کنڈکٹویٹی ظاہر کر سکتے ہیں (جو نیورو میڈی ایٹرز کے ذریعے کنٹرول ہوتی ہے)۔ + +![نیورون کا ماڈل](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ur.jpg) | ![نیورون کا ماڈل](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ur.png) +----|---- +حقیقی نیورون *([تصویر](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) ویکیپیڈیا سے)* | مصنوعی نیورون *(تصویر مصنف کی جانب سے)* + +لہٰذا، نیورون کا سب سے سادہ ریاضیاتی ماڈل کئی ان پٹس X1, ..., XN اور ایک آؤٹ پٹ Y پر مشتمل ہوتا ہے، اور ایک سلسلہ وزن W1, ..., WN۔ آؤٹ پٹ اس طرح سے حساب کیا جاتا ہے: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +جہاں f ایک غیر خطی **ایکٹیویشن فنکشن** ہے۔ + +> نیورون کے ابتدائی ماڈلز کو 1943 میں وارن میک کلک اور والٹر پٹس کے کلاسیکل مقالے [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) میں بیان کیا گیا تھا۔ ڈونلڈ ہیب نے اپنی کتاب "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" میں ان نیٹ ورکس کو تربیت دینے کا طریقہ تجویز کیا۔ + +## اس سیکشن میں + +اس سیکشن میں ہم سیکھیں گے: +* [پرسپٹرون](03-Perceptron/README.md)، دو کلاسز کی کلاسیفکیشن کے لیے سب سے ابتدائی نیورل نیٹ ورک ماڈلز میں سے ایک +* [ملٹی لیئرڈ نیٹ ورکس](04-OwnFramework/README.md) اور اس کے ساتھ ایک نوٹ بک [اپنا فریم ورک کیسے بنائیں](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [نیورل نیٹ ورک فریم ورکس](05-Frameworks/README.md)، ان نوٹ بکس کے ساتھ: [پائی ٹورچ](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) اور [کیراس/ٹینسر فلو](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [اوورفٹنگ](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ur/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..3eeb0d33 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# کمپیوٹر وژن کا تعارف + +[کمپیوٹر وژن](https://wikipedia.org/wiki/Computer_vision) ایک ایسا شعبہ ہے جس کا مقصد کمپیوٹرز کو ڈیجیٹل تصاویر کی اعلیٰ سطح کی سمجھ بوجھ دینا ہے۔ یہ ایک وسیع تعریف ہے کیونکہ *سمجھ بوجھ* مختلف چیزوں کا مطلب ہو سکتا ہے، جیسے تصویر میں کسی شے کو تلاش کرنا (**آبجیکٹ ڈیٹیکشن**)، یہ سمجھنا کہ کیا ہو رہا ہے (**ایونٹ ڈیٹیکشن**)، تصویر کو متن میں بیان کرنا، یا منظر کو 3D میں دوبارہ تشکیل دینا۔ انسانی تصاویر سے متعلق خاص کام بھی ہیں: عمر اور جذبات کا اندازہ لگانا، چہرے کی شناخت اور پہچان، اور 3D پوز کا اندازہ لگانا، وغیرہ۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +کمپیوٹر وژن کے سب سے آسان کاموں میں سے ایک **امیج کلاسیفکیشن** ہے۔ + +کمپیوٹر وژن کو اکثر AI کی ایک شاخ سمجھا جاتا ہے۔ آج کل، کمپیوٹر وژن کے زیادہ تر کام نیورل نیٹ ورکس کے ذریعے حل کیے جاتے ہیں۔ ہم اس سیکشن میں کمپیوٹر وژن کے لیے استعمال ہونے والے نیورل نیٹ ورکس کی ایک خاص قسم، [کنوولوشنل نیورل نیٹ ورکس](../07-ConvNets/README.md)، کے بارے میں مزید سیکھیں گے۔ + +تاہم، تصویر کو نیورل نیٹ ورک میں بھیجنے سے پہلے، کئی صورتوں میں تصویر کو بہتر بنانے کے لیے کچھ الگورتھمک تکنیکوں کا استعمال کرنا سمجھداری ہو سکتی ہے۔ + +تصویر کی پروسیسنگ کے لیے کئی پائتھون لائبریریاں دستیاب ہیں: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** مختلف امیج فارمیٹس کو پڑھنے/لکھنے کے لیے استعمال کی جا سکتی ہے۔ یہ ffmpeg کو بھی سپورٹ کرتی ہے، جو ویڈیو فریمز کو تصاویر میں تبدیل کرنے کا ایک مفید ٹول ہے۔ +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (جسے PIL بھی کہا جاتا ہے) زیادہ طاقتور ہے، اور تصویر میں تبدیلی جیسے مورفنگ، پیلیٹ ایڈجسٹمنٹ، وغیرہ کو بھی سپورٹ کرتی ہے۔ +* **[OpenCV](https://opencv.org/)** ایک طاقتور امیج پروسیسنگ لائبریری ہے جو C++ میں لکھی گئی ہے، اور یہ امیج پروسیسنگ کے لیے *ڈی فیکٹو* معیار بن چکی ہے۔ اس کا ایک آسان پائتھون انٹرفیس بھی ہے۔ +* **[dlib](http://dlib.net/)** ایک C++ لائبریری ہے جو کئی مشین لرننگ الگورتھمز کو نافذ کرتی ہے، بشمول کچھ کمپیوٹر وژن الگورتھمز۔ اس کا ایک پائتھون انٹرفیس بھی ہے، اور یہ چہرے اور چہرے کے نشانات کی شناخت جیسے چیلنجنگ کاموں کے لیے استعمال ہو سکتی ہے۔ + +## OpenCV + +[OpenCV](https://opencv.org/) کو امیج پروسیسنگ کے لیے *ڈی فیکٹو* معیار سمجھا جاتا ہے۔ اس میں بہت سے مفید الگورتھمز شامل ہیں، جو C++ میں نافذ کیے گئے ہیں۔ آپ OpenCV کو پائتھون سے بھی کال کر سکتے ہیں۔ + +OpenCV سیکھنے کے لیے ایک اچھا ذریعہ [یہ کورس](https://learnopencv.com/getting-started-with-opencv/) ہے۔ ہمارے نصاب میں، ہمارا مقصد OpenCV سیکھنا نہیں ہے، بلکہ آپ کو یہ دکھانا ہے کہ اسے کب اور کیسے استعمال کیا جا سکتا ہے۔ + +### تصاویر لوڈ کرنا + +پائتھون میں تصاویر کو آسانی سے NumPy arrays کے ذریعے ظاہر کیا جا سکتا ہے۔ مثال کے طور پر، 320x200 پکسلز کی گرے اسکیل تصاویر کو 200x320 array میں محفوظ کیا جائے گا، اور اسی سائز کی کلر تصاویر کا shape 200x320x3 ہوگا (3 کلر چینلز کے لیے)۔ تصویر کو لوڈ کرنے کے لیے، آپ درج ذیل کوڈ استعمال کر سکتے ہیں: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +روایتی طور پر، OpenCV کلر تصاویر کے لیے BGR (Blue-Green-Red) انکوڈنگ استعمال کرتا ہے، جبکہ پائتھون کے دیگر ٹولز زیادہ روایتی RGB (Red-Green-Blue) استعمال کرتے ہیں۔ تصویر کو درست دکھانے کے لیے، آپ کو اسے RGB کلر اسپیس میں تبدیل کرنا ہوگا، یا تو NumPy array میں dimensions کو تبدیل کر کے، یا OpenCV فنکشن کال کر کے: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +یہی `cvtColor` فنکشن دیگر کلر اسپیس تبدیلیوں کے لیے بھی استعمال کیا جا سکتا ہے، جیسے تصویر کو گرے اسکیل یا HSV (Hue-Saturation-Value) کلر اسپیس میں تبدیل کرنا۔ + +آپ OpenCV کا استعمال کرتے ہوئے ویڈیو کو فریم بہ فریم بھی لوڈ کر سکتے ہیں - ایک مثال [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) میں دی گئی ہے۔ + +### امیج پروسیسنگ + +تصویر کو نیورل نیٹ ورک میں بھیجنے سے پہلے، آپ کئی پری پروسیسنگ مراحل لاگو کرنا چاہیں گے۔ OpenCV بہت کچھ کر سکتا ہے، بشمول: + +* تصویر کو **ری سائز** کرنا `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` کے ذریعے۔ +* تصویر کو **بلر** کرنا `im = cv2.medianBlur(im,3)` یا `im = cv2.GaussianBlur(im, (3,3), 0)` کے ذریعے۔ +* تصویر کی **چمک اور تضاد** کو تبدیل کرنا NumPy array کے ذریعے، جیسا کہ [اس Stackoverflow نوٹ](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) میں بیان کیا گیا ہے۔ +* [تھریشولڈنگ](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) کا استعمال کرتے ہوئے `cv2.threshold`/`cv2.adaptiveThreshold` فنکشنز کو کال کرنا، جو اکثر چمک یا تضاد کو ایڈجسٹ کرنے سے بہتر ہوتا ہے۔ +* تصویر پر مختلف [ٹرانسفارمیشنز](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) لاگو کرنا: + - **[ایفائن ٹرانسفارمیشنز](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** اگر آپ کو تصویر میں تین پوائنٹس کے ماخذ اور منزل کا مقام معلوم ہو تو یہ مفید ہو سکتی ہیں۔ ایفائن ٹرانسفارمیشنز متوازی لائنوں کو متوازی رکھتی ہیں۔ + - **[پرسپیکٹیو ٹرانسفارمیشنز](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** اگر آپ کو تصویر میں چار پوائنٹس کے ماخذ اور منزل کا مقام معلوم ہو تو یہ مفید ہو سکتی ہیں۔ مثال کے طور پر، اگر آپ اسمارٹ فون کیمرے سے کسی زاویے سے مستطیل دستاویز کی تصویر لیتے ہیں، اور آپ خود دستاویز کی مستطیل تصویر بنانا چاہتے ہیں۔ +* تصویر کے اندر حرکت کو سمجھنا **[آپٹیکل فلو](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** کا استعمال کرتے ہوئے۔ + +## کمپیوٹر وژن کے استعمال کی مثالیں + +ہمارے [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) میں، ہم کچھ مثالیں دیتے ہیں کہ کمپیوٹر وژن کو مخصوص کاموں کے لیے کب استعمال کیا جا سکتا ہے: + +* **بریل کتاب کی تصویر کو پری پروسیس کرنا**۔ ہم اس پر توجہ مرکوز کرتے ہیں کہ کس طرح تھریشولڈنگ، فیچر ڈیٹیکشن، پرسپیکٹیو ٹرانسفارمیشن اور NumPy مینپولیشنز کا استعمال کرتے ہوئے انفرادی بریل علامات کو الگ کیا جا سکتا ہے تاکہ انہیں نیورل نیٹ ورک کے ذریعے مزید کلاسیفائی کیا جا سکے۔ + +![بریل تصویر](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ur.jpeg) | ![پری پروسیسڈ بریل تصویر](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ur.png) | ![بریل علامات](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ur.png) +----|-----|----- + +> تصویر [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) سے + +* **ویڈیو میں حرکت کا فریم فرق کے ذریعے پتہ لگانا**۔ اگر کیمرہ فکسڈ ہے، تو کیمرہ فیڈ کے فریمز ایک دوسرے سے کافی حد تک مشابہ ہوں گے۔ چونکہ فریمز arrays کے طور پر ظاہر کیے جاتے ہیں، صرف ان arrays کو دو مسلسل فریمز کے لیے گھٹانے سے ہمیں پکسل فرق ملے گا، جو جامد فریمز کے لیے کم ہونا چاہیے، اور تصویر میں نمایاں حرکت ہونے پر زیادہ ہو جائے گا۔ + +![ویڈیو فریمز اور فریم فرق کی تصویر](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ur.png) + +> تصویر [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) سے + +* **آپٹیکل فلو کا استعمال کرتے ہوئے حرکت کا پتہ لگانا**۔ [آپٹیکل فلو](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ہمیں یہ سمجھنے کی اجازت دیتا ہے کہ ویڈیو فریمز پر انفرادی پکسلز کیسے حرکت کرتے ہیں۔ آپٹیکل فلو کی دو اقسام ہیں: + + - **ڈینس آپٹیکل فلو** ویکٹر فیلڈ کا حساب لگاتا ہے جو ہر پکسل کے لیے دکھاتا ہے کہ وہ کہاں حرکت کر رہا ہے۔ + - **اسپارس آپٹیکل فلو** تصویر میں کچھ مخصوص فیچرز (مثلاً کنارے) لیتا ہے، اور ان کی فریم بہ فریم حرکت کا راستہ بناتا ہے۔ + +![آپٹیکل فلو کی تصویر](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ur.png) + +> تصویر [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) سے + +## ✍️ مثال نوٹ بکس: OpenCV [عملی طور پر OpenCV آزمائیں](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +آئیے OpenCV کے ساتھ کچھ تجربات کریں اور [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) کو دریافت کریں۔ + +## نتیجہ + +کبھی کبھار، نسبتاً پیچیدہ کام جیسے حرکت کا پتہ لگانا یا انگلی کے سرے کا پتہ لگانا صرف کمپیوٹر وژن کے ذریعے حل کیا جا سکتا ہے۔ اس لیے کمپیوٹر وژن کی بنیادی تکنیکوں کو جاننا، اور یہ کہ OpenCV جیسی لائبریریاں کیا کر سکتی ہیں، بہت مددگار ثابت ہوتا ہے۔ + +## 🚀 چیلنج + +[یہ ویڈیو](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) دیکھیں جو AI شو سے ہے تاکہ Cortic Tigers پروجیکٹ کے بارے میں جان سکیں اور انہوں نے کمپیوٹر وژن کے کاموں کو ایک روبوٹ کے ذریعے جمہوری بنانے کے لیے بلاک پر مبنی حل کیسے بنایا۔ اس طرح کے دیگر پروجیکٹس پر تحقیق کریں جو نئے سیکھنے والوں کو اس شعبے میں شامل کرنے میں مدد کرتے ہیں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## جائزہ اور خود مطالعہ + +آپٹیکل فلو پر مزید پڑھیں [اس شاندار ٹیوٹوریل](https://learnopencv.com/optical-flow-in-opencv/) میں۔ + +## [اسائنمنٹ](lab/README.md) + +اس لیب میں، آپ ایک ویڈیو لیں گے جس میں سادہ اشارے ہوں، اور آپ کا مقصد آپٹیکل فلو کا استعمال کرتے ہوئے اوپر/نیچے/بائیں/دائیں حرکتوں کو نکالنا ہوگا۔ + +ہتھیلی کی حرکت کا فریم + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ur/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..6fb13ee1 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# آپٹیکل فلو کا استعمال کرتے ہوئے حرکات کا پتہ لگانا + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) سے لیب اسائنمنٹ۔ + +## کام + +[اس ویڈیو](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) پر غور کریں، جس میں ایک شخص کی ہتھیلی مستحکم پس منظر پر بائیں/دائیں/اوپر/نیچے حرکت کرتی ہے۔ + +**آپ کا مقصد** آپٹیکل فلو کا استعمال کرتے ہوئے یہ معلوم کرنا ہوگا کہ ویڈیو کے کون سے حصے میں اوپر/نیچے/بائیں/دائیں حرکت موجود ہے۔ + +**اضافی چیلنج** یہ ہوگا کہ حقیقت میں ہتھیلی/انگلی کی حرکت کو جلد کے رنگ کا استعمال کرتے ہوئے ٹریک کریں، جیسا کہ [اس بلاگ پوسٹ](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) یا [یہاں](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) میں بیان کیا گیا ہے۔ + +## شروع کرنے کا نوٹ بک + +لیب کو شروع کرنے کے لیے [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) کھولیں۔ + +## اہم نکتہ + +کبھی کبھار، نسبتاً پیچیدہ کام جیسے حرکت کا پتہ لگانا یا انگلی کے سرے کا پتہ لگانا صرف کمپیوٹر وژن کے ذریعے حل کیا جا سکتا ہے۔ اس لیے یہ جاننا بہت مددگار ثابت ہوتا ہے کہ OpenCV جیسی لائبریریاں کیا کر سکتی ہیں۔ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ur/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..26dea3d4 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# مشہور سی این این آرکیٹیکچرز + +### وی جی جی-16 + +وی جی جی-16 ایک نیٹ ورک ہے جس نے 2014 میں امیج نیٹ ٹاپ-5 کلاسیفیکیشن میں 92.7% درستگی حاصل کی۔ اس کی پرتوں کی ساخت کچھ یوں ہے: + +![امیج نیٹ پرتیں](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ur.jpg) + +جیسا کہ آپ دیکھ سکتے ہیں، وی جی جی ایک روایتی پیرامڈ آرکیٹیکچر کی پیروی کرتا ہے، جو کہ کنوولوشن-پولنگ پرتوں کی ترتیب ہے۔ + +![امیج نیٹ پیرامڈ](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ur.jpg) + +> تصویر [ریسرچ گیٹ](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) سے لی گئی ہے۔ + +### ریز نیٹ + +ریز نیٹ ماڈلز کا ایک خاندان ہے جو مائیکروسافٹ ریسرچ نے 2015 میں پیش کیا۔ ریز نیٹ کا بنیادی خیال **ریزیڈیول بلاکس** استعمال کرنا ہے: + + + +> تصویر [اس مقالے](https://arxiv.org/pdf/1512.03385.pdf) سے لی گئی ہے۔ + +شناختی پاس تھرو استعمال کرنے کی وجہ یہ ہے کہ ہماری پرت **فرق** کی پیش گوئی کرے جو پچھلی پرت کے نتیجے اور ریزیڈیول بلاک کے آؤٹ پٹ کے درمیان ہوتا ہے - اسی لیے اسے *ریزیڈیول* کہا جاتا ہے۔ یہ بلاکس تربیت دینے میں بہت آسان ہیں، اور ان بلاکس کے کئی سو نیٹ ورکس بنائے جا سکتے ہیں (سب سے عام اقسام ریز نیٹ-52، ریز نیٹ-101 اور ریز نیٹ-152 ہیں)۔ + +آپ اس نیٹ ورک کو ڈیٹا سیٹ کے مطابق اپنی پیچیدگی کو ایڈجسٹ کرنے کے قابل بھی سمجھ سکتے ہیں۔ شروع میں، جب آپ نیٹ ورک کی تربیت شروع کرتے ہیں، وزن کی قدریں چھوٹی ہوتی ہیں، اور زیادہ تر سگنل شناختی پرتوں کے ذریعے گزرتا ہے۔ جیسے جیسے تربیت آگے بڑھتی ہے اور وزن زیادہ ہو جاتے ہیں، نیٹ ورک کے پیرامیٹرز کی اہمیت بڑھتی ہے، اور نیٹ ورک مطلوبہ اظہار کی طاقت کو ایڈجسٹ کرتا ہے تاکہ تربیتی تصاویر کو درست طریقے سے درجہ بندی کیا جا سکے۔ + +### گوگل انسیپشن + +گوگل انسیپشن آرکیٹیکچر اس خیال کو ایک قدم آگے لے جاتا ہے، اور ہر نیٹ ورک پرت کو کئی مختلف راستوں کے امتزاج کے طور پر بناتا ہے: + + + +> تصویر [ریسرچ گیٹ](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) سے لی گئی ہے۔ + +یہاں، ہمیں 1x1 کنوولوشنز کے کردار پر زور دینا ہوگا، کیونکہ شروع میں یہ سمجھ میں نہیں آتا۔ ہم تصویر کو 1x1 فلٹر کے ساتھ کیوں چلائیں گے؟ تاہم، آپ کو یاد رکھنا ہوگا کہ کنوولوشن فلٹرز کئی گہرائی چینلز کے ساتھ بھی کام کرتے ہیں (اصل میں - آر جی بی رنگ، بعد کی پرتوں میں - مختلف فلٹرز کے چینلز)، اور 1x1 کنوولوشن ان ان پٹ چینلز کو مختلف تربیت یافتہ وزن کے ذریعے ایک ساتھ ملانے کے لیے استعمال کیا جاتا ہے۔ اسے چینل کے طول و عرض پر ڈاؤن سیمپلنگ (پولنگ) کے طور پر بھی دیکھا جا سکتا ہے۔ + +یہاں [ایک اچھا بلاگ پوسٹ](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) اس موضوع پر ہے، اور [اصل مقالہ](https://arxiv.org/pdf/1312.4400.pdf)۔ + +### موبائل نیٹ + +موبائل نیٹ ماڈلز کا ایک خاندان ہے جس کا سائز کم ہے، اور یہ موبائل ڈیوائسز کے لیے موزوں ہے۔ انہیں استعمال کریں اگر آپ کے پاس وسائل کم ہیں، اور آپ تھوڑی سی درستگی قربان کر سکتے ہیں۔ ان کے پیچھے بنیادی خیال **ڈیپتھ وائز سیپریبل کنوولوشن** ہے، جو کنوولوشن فلٹرز کو اسپیشل کنوولوشنز اور گہرائی چینلز پر 1x1 کنوولوشن کے امتزاج کے ذریعے ظاہر کرنے کی اجازت دیتا ہے۔ یہ پیرامیٹرز کی تعداد کو نمایاں طور پر کم کرتا ہے، نیٹ ورک کو سائز میں چھوٹا بناتا ہے، اور کم ڈیٹا کے ساتھ تربیت دینا بھی آسان بناتا ہے۔ + +یہاں [موبائل نیٹ پر ایک اچھا بلاگ پوسٹ](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) ہے۔ + +## نتیجہ + +اس یونٹ میں، آپ نے کمپیوٹر وژن نیورل نیٹ ورکس کے پیچھے بنیادی تصور سیکھا - کنوولوشنل نیٹ ورکس۔ حقیقی زندگی کی آرکیٹیکچرز جو امیج کلاسیفیکیشن، آبجیکٹ ڈیٹیکشن، اور یہاں تک کہ امیج جنریشن نیٹ ورکس کو طاقت فراہم کرتی ہیں، سب سی این اینز پر مبنی ہیں، بس زیادہ پرتوں اور کچھ اضافی تربیتی چالوں کے ساتھ۔ + +## 🚀 چیلنج + +ساتھ والے نوٹ بکس میں، نیچے نوٹس ہیں کہ زیادہ درستگی کیسے حاصل کی جائے۔ کچھ تجربات کریں اور دیکھیں کہ کیا آپ زیادہ درستگی حاصل کر سکتے ہیں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## جائزہ اور خود مطالعہ + +جبکہ سی این اینز زیادہ تر کمپیوٹر وژن کے کاموں کے لیے استعمال ہوتی ہیں، وہ عام طور پر فکسڈ سائز کے پیٹرنز نکالنے کے لیے اچھی ہوتی ہیں۔ مثال کے طور پر، اگر ہم آوازوں سے نمٹ رہے ہیں، تو ہم آڈیو سگنل میں کچھ مخصوص پیٹرنز تلاش کرنے کے لیے سی این اینز استعمال کرنا چاہیں گے - اس صورت میں فلٹرز 1-ڈائمینشنل ہوں گے (اور اس سی این این کو 1D-CNN کہا جائے گا)۔ نیز، کبھی کبھار 3D-CNN استعمال کیا جاتا ہے تاکہ کثیر جہتی جگہ میں خصوصیات نکالی جا سکیں، جیسے کہ ویڈیو میں کچھ واقعات کا وقوع پذیر ہونا - سی این این وقت کے ساتھ بدلتے ہوئے فیچر کے کچھ پیٹرنز کو پکڑ سکتا ہے۔ سی این اینز کے ذریعے کیے جانے والے دیگر کاموں کے بارے میں کچھ جائزہ اور خود مطالعہ کریں۔ + +## [اسائنمنٹ](lab/README.md) + +اس لیب میں، آپ کو مختلف بلی اور کتے کی نسلوں کو درجہ بندی کرنے کا کام دیا گیا ہے۔ یہ تصاویر MNIST ڈیٹا سیٹ سے زیادہ پیچیدہ ہیں اور زیادہ طول و عرض کی حامل ہیں، اور کلاسز کی تعداد 10 سے زیادہ ہے۔ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ur/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..877ea1d6 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# کنوولوشنل نیورل نیٹ ورکس + +ہم نے پہلے دیکھا ہے کہ نیورل نیٹ ورکس تصاویر کے ساتھ کام کرنے میں کافی اچھے ہیں، اور یہاں تک کہ ایک لیئر پرسیپٹرون بھی MNIST ڈیٹاسیٹ سے ہاتھ سے لکھے گئے ہندسوں کو معقول درستگی کے ساتھ پہچان سکتا ہے۔ تاہم، MNIST ڈیٹاسیٹ بہت خاص ہے، اور تمام ہندسے تصویر کے اندر مرکز میں ہوتے ہیں، جو کام کو آسان بناتا ہے۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +حقیقی زندگی میں، ہم یہ چاہتے ہیں کہ تصویر میں کسی بھی جگہ پر موجود اشیاء کو پہچان سکیں۔ کمپیوٹر وژن عمومی درجہ بندی سے مختلف ہے، کیونکہ جب ہم تصویر میں کسی خاص شے کو تلاش کرنے کی کوشش کرتے ہیں، تو ہم تصویر کو اسکین کرتے ہیں اور کچھ مخصوص **پیٹرنز** اور ان کے امتزاج کو تلاش کرتے ہیں۔ مثال کے طور پر، جب ہم بلی کو تلاش کرتے ہیں، تو ہم پہلے افقی لائنوں کو دیکھ سکتے ہیں، جو مونچھوں کی شکل اختیار کر سکتی ہیں، اور پھر مونچھوں کے ایک خاص امتزاج سے ہمیں پتہ چلتا ہے کہ یہ دراصل بلی کی تصویر ہے۔ مخصوص پیٹرنز کی موجودگی اور ان کی نسبتی پوزیشن اہم ہے، نہ کہ ان کی تصویر میں بالکل درست جگہ۔ + +پیٹرنز نکالنے کے لیے، ہم **کنوولوشنل فلٹرز** کا استعمال کریں گے۔ جیسا کہ آپ جانتے ہیں، ایک تصویر کو 2D-میٹرکس یا رنگ کی گہرائی کے ساتھ 3D-ٹینسر کے طور پر ظاہر کیا جاتا ہے۔ فلٹر لگانے کا مطلب یہ ہے کہ ہم ایک نسبتاً چھوٹا **فلٹر کرنل** میٹرکس لیتے ہیں، اور اصل تصویر کے ہر پکسل کے لیے ہم پڑوسی پوائنٹس کے ساتھ وزنی اوسط کا حساب لگاتے ہیں۔ ہم اسے اس طرح دیکھ سکتے ہیں جیسے ایک چھوٹی کھڑکی پوری تصویر پر سلائیڈ کر رہی ہو، اور فلٹر کرنل میٹرکس میں وزن کے مطابق تمام پکسلز کو اوسط کر رہی ہو۔ + +![ورٹیکل ایج فلٹر](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ur.png) | ![ہوری زونٹل ایج فلٹر](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ur.png) +----|---- + +> تصویر: دمتری سوشنیکوف + +مثال کے طور پر، اگر ہم MNIST ہندسوں پر 3x3 ورٹیکل ایج اور ہوری زونٹل ایج فلٹرز لگائیں، تو ہم ان جگہوں پر نمایاں (مثلاً زیادہ ویلیوز) حاصل کر سکتے ہیں جہاں ہماری اصل تصویر میں ورٹیکل اور ہوری زونٹل ایجز موجود ہیں۔ اس طرح یہ دو فلٹرز ایجز "تلاش کرنے" کے لیے استعمال کیے جا سکتے ہیں۔ اسی طرح، ہم دوسرے کم سطحی پیٹرنز تلاش کرنے کے لیے مختلف فلٹرز ڈیزائن کر سکتے ہیں: + +> [لیونگ-ملک فلٹر بینک](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) کی تصویر + +تاہم، جہاں ہم کچھ پیٹرنز نکالنے کے لیے فلٹرز کو دستی طور پر ڈیزائن کر سکتے ہیں، وہیں ہم نیٹ ورک کو اس طرح بھی ڈیزائن کر سکتے ہیں کہ یہ پیٹرنز کو خود بخود سیکھ لے۔ یہ CNN کے پیچھے بنیادی خیالات میں سے ایک ہے۔ + +## CNN کے بنیادی خیالات + +CNN کے کام کرنے کا طریقہ درج ذیل اہم خیالات پر مبنی ہے: + +* کنوولوشنل فلٹرز پیٹرنز نکال سکتے ہیں۔ +* ہم نیٹ ورک کو اس طرح ڈیزائن کر سکتے ہیں کہ فلٹرز خود بخود تربیت حاصل کریں۔ +* ہم اسی طریقے کو اعلیٰ سطحی فیچرز میں پیٹرنز تلاش کرنے کے لیے استعمال کر سکتے ہیں، نہ صرف اصل تصویر میں۔ اس طرح CNN فیچر نکالنے کا کام فیچرز کی ایک درجہ بندی پر ہوتا ہے، جو کم سطحی پکسل امتزاج سے لے کر تصویر کے حصوں کے اعلیٰ سطحی امتزاج تک ہوتا ہے۔ + +![درجہ بندی فیچر نکالنا](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ur.png) + +> تصویر: [ہسلپ-لنچ کے مقالے](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) سے، ان کی [تحقیق](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) پر مبنی + +## ✍️ مشقیں: کنوولوشنل نیورل نیٹ ورکس + +آئیے مزید دریافت کریں کہ کنوولوشنل نیورل نیٹ ورکس کیسے کام کرتے ہیں، اور ہم تربیت یافتہ فلٹرز کیسے حاصل کر سکتے ہیں، متعلقہ نوٹ بکس کے ذریعے کام کر کے: + +* [کنوولوشنل نیورل نیٹ ورکس - پائی ٹارچ](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [کنوولوشنل نیورل نیٹ ورکس - ٹینسر فلو](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## پیرامیڈ آرکیٹیکچر + +زیادہ تر CNNs جو تصویر کی پروسیسنگ کے لیے استعمال ہوتے ہیں، ایک نام نہاد پیرامیڈ آرکیٹیکچر کی پیروی کرتے ہیں۔ اصل تصاویر پر لاگو ہونے والی پہلی کنوولوشنل لیئر میں عام طور پر فلٹرز کی تعداد نسبتاً کم ہوتی ہے (8-16)، جو مختلف پکسل امتزاجوں سے مطابقت رکھتی ہے، جیسے افقی/عمودی لائنیں یا اسٹروکس۔ اگلی سطح پر، ہم نیٹ ورک کے مکانی طول و عرض کو کم کرتے ہیں، اور فلٹرز کی تعداد بڑھاتے ہیں، جو سادہ فیچرز کے مزید ممکنہ امتزاج سے مطابقت رکھتی ہے۔ ہر لیئر کے ساتھ، جیسے جیسے ہم حتمی درجہ بندی کرنے والے کی طرف بڑھتے ہیں، تصویر کے مکانی طول و عرض کم ہوتے جاتے ہیں، اور فلٹرز کی تعداد بڑھتی جاتی ہے۔ + +مثال کے طور پر، آئیے VGG-16 کی آرکیٹیکچر پر نظر ڈالیں، ایک نیٹ ورک جس نے 2014 میں ImageNet کے ٹاپ-5 درجہ بندی میں 92.7% درستگی حاصل کی: + +![ImageNet لیئرز](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ur.jpg) + +![ImageNet پیرامیڈ](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ur.jpg) + +> تصویر: [ریسرچ گیٹ](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) سے + +## بہترین معروف CNN آرکیٹیکچرز + +[بہترین معروف CNN آرکیٹیکچرز کے بارے میں اپنی تعلیم جاری رکھیں](CNN_Architectures.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی اصل زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ur/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..74fa8446 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# پالتو جانوروں کے چہروں کی درجہ بندی + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +تصور کریں کہ آپ کو ایک ایپلیکیشن تیار کرنی ہے جو پالتو جانوروں کی نرسری کے لیے تمام جانوروں کو کیٹلاگ کرے۔ ایسی ایپلیکیشن کی ایک بہترین خصوصیت یہ ہوگی کہ تصویر سے خود بخود نسل کا پتہ لگایا جا سکے۔ یہ کام نیورل نیٹ ورکس کے ذریعے کامیابی سے کیا جا سکتا ہے۔ + +آپ کو ایک کنوولوشنل نیورل نیٹ ورک کو تربیت دینی ہے تاکہ **Pet Faces** ڈیٹا سیٹ کا استعمال کرتے ہوئے مختلف نسلوں کی بلیوں اور کتوں کی درجہ بندی کی جا سکے۔ + +## ڈیٹا سیٹ + +ہم **Pet Faces** ڈیٹا سیٹ استعمال کریں گے، جو [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) پالتو جانوروں کے ڈیٹا سیٹ سے حاصل کیا گیا ہے۔ اس میں کتوں اور بلیوں کی 35 مختلف نسلیں شامل ہیں۔ + +![ہم جس ڈیٹا سیٹ سے نمٹیں گے](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ur.png) + +ڈیٹا سیٹ ڈاؤن لوڈ کرنے کے لیے، یہ کوڈ استعمال کریں: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## نوٹ بک شروع کرنا + +لیب شروع کرنے کے لیے [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) کھولیں۔ + +## نتیجہ + +آپ نے تصویر کی درجہ بندی کا ایک نسبتاً پیچیدہ مسئلہ شروع سے حل کر لیا ہے! کلاسز کی تعداد کافی زیادہ تھی، اور پھر بھی آپ نے معقول درستگی حاصل کی! یہ بھی سمجھ میں آتا ہے کہ ٹاپ-k درستگی کو ماپنا ضروری ہے، کیونکہ کچھ کلاسز کو الجھانا آسان ہے جو انسانوں کے لیے بھی واضح طور پر مختلف نہیں ہیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ur/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..f482c2ae --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# پہلے سے تربیت یافتہ نیٹ ورکس اور ٹرانسفر لرننگ + +سی این اینز کی تربیت میں کافی وقت لگ سکتا ہے، اور اس کے لیے بہت زیادہ ڈیٹا کی ضرورت ہوتی ہے۔ تاہم، زیادہ تر وقت نیٹ ورک کے لیے بہترین کم سطح کے فلٹرز سیکھنے میں صرف ہوتا ہے جو تصاویر سے پیٹرنز نکالنے کے لیے استعمال کیے جا سکتے ہیں۔ ایک قدرتی سوال پیدا ہوتا ہے - کیا ہم ایک ڈیٹاسیٹ پر تربیت یافتہ نیورل نیٹ ورک کو استعمال کر سکتے ہیں اور اسے مختلف تصاویر کو درجہ بندی کرنے کے لیے ڈھال سکتے ہیں بغیر مکمل تربیتی عمل کی ضرورت کے؟ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +اس طریقے کو **ٹرانسفر لرننگ** کہا جاتا ہے، کیونکہ ہم ایک نیورل نیٹ ورک ماڈل سے دوسرے میں کچھ علم منتقل کرتے ہیں۔ ٹرانسفر لرننگ میں، ہم عام طور پر ایک پہلے سے تربیت یافتہ ماڈل سے شروع کرتے ہیں، جو کسی بڑے امیج ڈیٹاسیٹ جیسے **ImageNet** پر تربیت یافتہ ہوتا ہے۔ یہ ماڈلز پہلے ہی عام تصاویر سے مختلف خصوصیات نکالنے میں اچھا کام کر سکتے ہیں، اور اکثر ان نکالی گئی خصوصیات پر ایک کلاسفائر بنانا اچھے نتائج دے سکتا ہے۔ + +> ✅ ٹرانسفر لرننگ ایک اصطلاح ہے جو دیگر تعلیمی شعبوں میں بھی پائی جاتی ہے، جیسے تعلیم۔ اس کا مطلب ہے ایک شعبے سے علم لینا اور اسے دوسرے شعبے میں لاگو کرنا۔ + +## پہلے سے تربیت یافتہ ماڈلز بطور فیچر ایکسٹریکٹرز + +پچھلے حصے میں جن کنولوشنل نیٹ ورکس کے بارے میں بات کی گئی تھی، ان میں کئی تہیں شامل تھیں، جن میں سے ہر ایک تصویر سے کچھ خصوصیات نکالنے کے لیے بنائی گئی تھی، کم سطح کے پکسل امتزاج (جیسے افقی/عمودی لائن یا اسٹروک) سے لے کر اعلیٰ سطح کے امتزاج تک، جو چیزوں جیسے شعلے کی آنکھ سے مطابقت رکھتے ہیں۔ اگر ہم سی این این کو عام اور متنوع تصاویر کے کافی بڑے ڈیٹاسیٹ پر تربیت دیں، تو نیٹ ورک کو ان عام خصوصیات کو نکالنا سیکھنا چاہیے۔ + +Keras اور PyTorch دونوں میں کچھ عام آرکیٹیکچرز کے لیے پہلے سے تربیت یافتہ نیورل نیٹ ورک ویٹس کو آسانی سے لوڈ کرنے کے فنکشنز شامل ہیں، جن میں سے زیادہ تر ImageNet تصاویر پر تربیت یافتہ ہیں۔ سب سے زیادہ استعمال ہونے والے ماڈلز پچھلے سبق کے [سی این این آرکیٹیکچرز](../07-ConvNets/CNN_Architectures.md) صفحے پر بیان کیے گئے ہیں۔ خاص طور پر، آپ درج ذیل میں سے کسی ایک کو استعمال کرنے پر غور کر سکتے ہیں: + +* **VGG-16/VGG-19** جو نسبتاً سادہ ماڈلز ہیں لیکن پھر بھی اچھی درستگی دیتے ہیں۔ اکثر VGG کو پہلی کوشش کے طور پر استعمال کرنا ایک اچھا انتخاب ہوتا ہے تاکہ دیکھا جا سکے کہ ٹرانسفر لرننگ کیسے کام کر رہی ہے۔ +* **ResNet** مائیکروسافٹ ریسرچ کی طرف سے 2015 میں تجویز کردہ ماڈلز کا ایک خاندان ہے۔ ان میں زیادہ تہیں ہوتی ہیں، اور اس لیے زیادہ وسائل لیتے ہیں۔ +* **MobileNet** ماڈلز کا ایک خاندان ہے جس کا سائز کم ہوتا ہے، موبائل ڈیوائسز کے لیے موزوں۔ انہیں استعمال کریں اگر آپ کے پاس وسائل کم ہیں اور آپ تھوڑی سی درستگی قربان کر سکتے ہیں۔ + +یہاں VGG-16 نیٹ ورک کے ذریعے بلی کی تصویر سے نکالی گئی خصوصیات کی مثال دی گئی ہے: + +![VGG-16 کے ذریعے نکالی گئی خصوصیات](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ur.png) + +## بلیوں اور کتوں کا ڈیٹاسیٹ + +اس مثال میں، ہم [بلیوں اور کتوں](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) کے ڈیٹاسیٹ کا استعمال کریں گے، جو حقیقی زندگی کی تصویر درجہ بندی کے منظرنامے کے بہت قریب ہے۔ + +## ✍️ مشق: ٹرانسفر لرننگ + +آئیے متعلقہ نوٹ بکس میں ٹرانسفر لرننگ کو عملی طور پر دیکھتے ہیں: + +* [ٹرانسفر لرننگ - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [ٹرانسفر لرننگ - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## ایڈورسریل بلی کو بصری بنانا + +پہلے سے تربیت یافتہ نیورل نیٹ ورک کے اندر مختلف پیٹرنز موجود ہوتے ہیں، جن میں **مثالی بلی** (اور مثالی کتا، مثالی زیبرا، وغیرہ) کے تصورات شامل ہوتے ہیں۔ یہ دلچسپ ہوگا کہ کسی طرح **اس تصویر کو بصری بنائیں**۔ تاہم، یہ آسان نہیں ہے، کیونکہ پیٹرنز نیٹ ورک ویٹس میں پھیلے ہوئے ہیں، اور ایک درجہ بندی کے ڈھانچے میں منظم ہیں۔ + +ایک طریقہ یہ ہے کہ ہم ایک بے ترتیب تصویر سے شروع کریں، اور پھر **گریڈینٹ ڈیسینٹ آپٹیمائزیشن** تکنیک کا استعمال کرتے ہوئے اس تصویر کو اس طرح ایڈجسٹ کریں کہ نیٹ ورک یہ سوچنا شروع کر دے کہ یہ بلی ہے۔ + +![تصویری آپٹیمائزیشن لوپ](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ur.png) + +تاہم، اگر ہم ایسا کریں، تو ہمیں کچھ ایسا ملے گا جو بے ترتیب شور کے بہت قریب ہوگا۔ اس کی وجہ یہ ہے کہ *نیٹ ورک کو یہ سوچنے کے لیے کہ ان پٹ تصویر بلی ہے، کئی طریقے ہیں*، جن میں کچھ بصری طور پر معنی خیز نہیں ہیں۔ اگرچہ ان تصاویر میں بلی کے لیے عام پیٹرنز موجود ہیں، لیکن انہیں بصری طور پر ممتاز ہونے کے لیے کچھ بھی مجبور نہیں کرتا۔ + +نتیجہ بہتر بنانے کے لیے، ہم نقصان کے فنکشن میں ایک اور اصطلاح شامل کر سکتے ہیں، جسے **ویریئشن لاس** کہا جاتا ہے۔ یہ ایک میٹرک ہے جو دکھاتا ہے کہ تصویر کے پڑوسی پکسلز کتنے مماثل ہیں۔ ویریئشن لاس کو کم کرنے سے تصویر ہموار ہو جاتی ہے، اور شور ختم ہو جاتا ہے - اس طرح زیادہ بصری طور پر دلکش پیٹرنز ظاہر ہوتے ہیں۔ یہاں ایسی "مثالی" تصاویر کی مثال دی گئی ہے، جنہیں بلی اور زیبرا کے طور پر اعلیٰ امکان کے ساتھ درجہ بندی کیا گیا ہے: + +![مثالی بلی](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ur.png) | ![مثالی زیبرا](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ur.png) +-----|----- + *مثالی بلی* | *مثالی زیبرا* + +اسی طرح کا طریقہ نیورل نیٹ ورک پر **ایڈورسریل حملے** کرنے کے لیے استعمال کیا جا سکتا ہے۔ فرض کریں کہ ہم نیورل نیٹ ورک کو دھوکہ دینا چاہتے ہیں اور کتے کو بلی کی طرح دکھانا چاہتے ہیں۔ اگر ہم کتے کی تصویر لیں، جسے نیٹ ورک کتے کے طور پر پہچانتا ہے، تو ہم اسے تھوڑا سا ایڈجسٹ کر سکتے ہیں گریڈینٹ ڈیسینٹ آپٹیمائزیشن کا استعمال کرتے ہوئے، جب تک کہ نیٹ ورک اسے بلی کے طور پر درجہ بندی کرنا شروع نہ کر دے: + +![کتے کی تصویر](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ur.png) | ![بلی کے طور پر درجہ بندی کی گئی کتے کی تصویر](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ur.png) +-----|----- +*کتے کی اصل تصویر* | *بلی کے طور پر درجہ بندی کی گئی کتے کی تصویر* + +اوپر کے نتائج کو دوبارہ پیدا کرنے کے لیے کوڈ دیکھیں درج ذیل نوٹ بک میں: + +* [مثالی اور ایڈورسریل بلی - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## نتیجہ + +ٹرانسفر لرننگ کا استعمال کرتے ہوئے، آپ کسی کسٹم آبجیکٹ درجہ بندی کے کام کے لیے جلدی سے ایک کلاسفائر بنا سکتے ہیں اور اعلیٰ درستگی حاصل کر سکتے ہیں۔ آپ دیکھ سکتے ہیں کہ زیادہ پیچیدہ کام جو ہم اب حل کر رہے ہیں زیادہ کمپیوٹیشنل پاور کی ضرورت ہوتی ہے، اور انہیں آسانی سے سی پی یو پر حل نہیں کیا جا سکتا۔ اگلی یونٹ میں، ہم کم کمپیوٹ وسائل کا استعمال کرتے ہوئے اسی ماڈل کو تربیت دینے کے لیے ایک زیادہ ہلکی پھلکی عمل درآمد کرنے کی کوشش کریں گے، جس کے نتیجے میں درستگی میں صرف تھوڑی کمی آئے گی۔ + +## 🚀 چیلنج + +ساتھ والی نوٹ بکس میں، نیچے نوٹس ہیں کہ ٹرانسفر نالج کس طرح بہترین کام کرتا ہے جب تربیتی ڈیٹا کچھ حد تک مماثل ہو (شاید جانور کی ایک نئی قسم)۔ بالکل نئے قسم کی تصاویر کے ساتھ کچھ تجربہ کریں تاکہ یہ دیکھا جا سکے کہ آپ کے ٹرانسفر نالج ماڈلز کتنی اچھی یا بری کارکردگی دکھاتے ہیں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## جائزہ اور خود مطالعہ + +اپنے ماڈلز کو تربیت دینے کے کچھ دیگر طریقوں کے بارے میں اپنے علم کو گہرا کرنے کے لیے [TrainingTricks.md](TrainingTricks.md) کو پڑھیں۔ + +## [اسائنمنٹ](lab/README.md) + +اس لیب میں، ہم حقیقی زندگی کے [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) پالتو جانوروں کے ڈیٹاسیٹ کا استعمال کریں گے جس میں بلیوں اور کتوں کی 35 نسلیں شامل ہیں، اور ہم ایک ٹرانسفر لرننگ کلاسفائر بنائیں گے۔ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ur/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..71d042a1 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# ڈیپ لرننگ ٹریننگ کے طریقے + +جب نیورل نیٹ ورکس زیادہ گہرے ہو جاتے ہیں، تو ان کی تربیت کا عمل زیادہ مشکل ہو جاتا ہے۔ ایک بڑا مسئلہ [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) یا [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) ہے۔ [یہ پوسٹ](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ان مسائل کا اچھا تعارف فراہم کرتی ہے۔ + +گہرے نیٹ ورکس کی تربیت کو زیادہ مؤثر بنانے کے لیے، کچھ تکنیکیں استعمال کی جا سکتی ہیں۔ + +## ویلیوز کو مناسب حد میں رکھنا + +عدداتی حسابات کو زیادہ مستحکم بنانے کے لیے، ہمیں یہ یقینی بنانا ہوگا کہ ہمارے نیورل نیٹ ورک کے اندر تمام ویلیوز مناسب پیمانے پر ہوں، عام طور پر [-1..1] یا [0..1]۔ یہ کوئی سخت شرط نہیں ہے، لیکن فلوٹنگ پوائنٹ حسابات کی نوعیت ایسی ہے کہ مختلف شدت کی ویلیوز کو ایک ساتھ درست طریقے سے جوڑا نہیں جا سکتا۔ مثال کے طور پر، اگر ہم 10-10 اور 1010 کو جمع کریں، تو ہمیں ممکنہ طور پر 1010 ملے گا، کیونکہ چھوٹی ویلیو بڑی ویلیو کے برابر "تبدیل" ہو جائے گی، اور اس طرح mantissa ضائع ہو جائے گی۔ + +زیادہ تر ایکٹیویشن فنکشنز [-1..1] کے ارد گرد غیر خطی ہوتے ہیں، اور اس لیے یہ سمجھ میں آتا ہے کہ تمام ان پٹ ڈیٹا کو [-1..1] یا [0..1] کے وقفے میں اسکیل کیا جائے۔ + +## ابتدائی وزن کی ترتیب + +مثالی طور پر، ہم چاہتے ہیں کہ نیٹ ورک لیئرز سے گزرنے کے بعد ویلیوز ایک ہی حد میں رہیں۔ اس لیے یہ ضروری ہے کہ وزن کو اس طرح ترتیب دیا جائے کہ ویلیوز کی تقسیم برقرار رہے۔ + +عام تقسیم **N(0,1)** ایک اچھا خیال نہیں ہے، کیونکہ اگر ہمارے پاس *n* ان پٹس ہوں، تو آؤٹ پٹ کا معیاری انحراف *n* ہوگا، اور ویلیوز ممکنہ طور پر [0..1] کے وقفے سے باہر نکل جائیں گی۔ + +مندرجہ ذیل ترتیبیں اکثر استعمال کی جاتی ہیں: + +- یونیفارم تقسیم -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** اس بات کی ضمانت دیتا ہے کہ صفر اوسط اور معیاری انحراف 1 والے ان پٹس کے لیے وہی اوسط/معیاری انحراف برقرار رہے گا +- **N(0,√2/(n_in+n_out))** -- جسے **Xavier initialization** (`glorot`) کہا جاتا ہے، یہ سگنلز کو فارورڈ اور بیکورڈ پروپیگیشن کے دوران حد میں رکھنے میں مدد کرتا ہے + +## بیچ نارملائزیشن + +صحیح وزن کی ترتیب کے باوجود، تربیت کے دوران وزن بہت بڑے یا چھوٹے ہو سکتے ہیں، اور وہ سگنلز کو مناسب حد سے باہر لے جائیں گے۔ ہم سگنلز کو واپس لانے کے لیے **نارملائزیشن** تکنیکوں میں سے ایک استعمال کر سکتے ہیں۔ حالانکہ ان میں سے کئی ہیں (وزن نارملائزیشن، لیئر نارملائزیشن)، سب سے زیادہ استعمال ہونے والی بیچ نارملائزیشن ہے۔ + +**بیچ نارملائزیشن** کا خیال یہ ہے کہ منی بیچ کے تمام ویلیوز کو مدنظر رکھا جائے، اور ان ویلیوز کی بنیاد پر نارملائزیشن (یعنی اوسط کو گھٹانا اور معیاری انحراف سے تقسیم کرنا) انجام دیا جائے۔ یہ ایک نیٹ ورک لیئر کے طور پر نافذ کیا جاتا ہے جو وزن لگانے کے بعد، لیکن ایکٹیویشن فنکشن سے پہلے یہ نارملائزیشن کرتا ہے۔ نتیجے کے طور پر، ہم ممکنہ طور پر زیادہ حتمی درستگی اور تیز تربیت دیکھتے ہیں۔ + +یہاں بیچ نارملائزیشن پر [اصل مقالہ](https://arxiv.org/pdf/1502.03167.pdf)، [ویکیپیڈیا پر وضاحت](https://en.wikipedia.org/wiki/Batch_normalization)، اور [ایک اچھا تعارفی بلاگ پوسٹ](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (اور ایک [روسی زبان میں](https://habrahabr.ru/post/309302/))۔ + +## ڈراپ آؤٹ + +**ڈراپ آؤٹ** ایک دلچسپ تکنیک ہے جو تربیت کے دوران کچھ فیصد بے ترتیب نیورونز کو ہٹا دیتی ہے۔ یہ ایک لیئر کے طور پر نافذ کیا جاتا ہے جس میں ایک پیرامیٹر ہوتا ہے (ہٹانے کے لیے نیورونز کا فیصد، عام طور پر 10%-50%)، اور تربیت کے دوران یہ ان پٹ ویکٹر کے بے ترتیب عناصر کو صفر کر دیتا ہے، اس سے پہلے کہ وہ اگلی لیئر کو منتقل ہوں۔ + +حالانکہ یہ ایک عجیب خیال لگ سکتا ہے، آپ MNIST ڈیجٹ کلاسیفائر کی تربیت پر ڈراپ آؤٹ کے اثرات [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) نوٹ بک میں دیکھ سکتے ہیں۔ یہ تربیت کو تیز کرتا ہے اور ہمیں کم تربیتی ایپوکز میں زیادہ درستگی حاصل کرنے کی اجازت دیتا ہے۔ + +اس اثر کو کئی طریقوں سے بیان کیا جا سکتا ہے: + +- اسے ماڈل کے لیے ایک بے ترتیب جھٹکے کے عنصر کے طور پر سمجھا جا سکتا ہے، جو آپٹیمائزیشن کو مقامی کم سے باہر لے جاتا ہے +- اسے *ماڈل اوسط کاری* کے طور پر سمجھا جا سکتا ہے، کیونکہ ہم کہہ سکتے ہیں کہ ڈراپ آؤٹ کے دوران ہم تھوڑا مختلف ماڈل کی تربیت کر رہے ہیں + +> *کچھ لوگ کہتے ہیں کہ جب کوئی نشے میں شخص کچھ سیکھنے کی کوشش کرتا ہے، تو وہ اگلی صبح اسے بہتر یاد رکھتا ہے، ایک ہوش مند شخص کے مقابلے میں، کیونکہ کچھ خراب نیورونز کے ساتھ دماغ بہتر طور پر مطلب کو سمجھنے کے لیے ڈھالنے کی کوشش کرتا ہے۔ ہم نے کبھی خود یہ نہیں آزمایا کہ یہ سچ ہے یا نہیں* + +## اوورفٹنگ کو روکنا + +ڈیپ لرننگ کا ایک بہت اہم پہلو یہ ہے کہ [اوورفٹنگ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) کو روکنے کے قابل ہو۔ حالانکہ یہ بہت طاقتور نیورل نیٹ ورک ماڈل استعمال کرنے کا لالچ دے سکتا ہے، ہمیں ہمیشہ ماڈل پیرامیٹرز کی تعداد کو تربیتی نمونوں کی تعداد کے ساتھ متوازن رکھنا چاہیے۔ + +> اس بات کو یقینی بنائیں کہ آپ [اوورفٹنگ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) کے تصور کو سمجھتے ہیں جو ہم نے پہلے متعارف کرایا ہے! + +اوورفٹنگ کو روکنے کے کئی طریقے ہیں: + +- ابتدائی روک تھام -- ویلیڈیشن سیٹ پر غلطی کو مسلسل مانیٹر کریں اور تربیت کو روکیں جب ویلیڈیشن کی غلطی بڑھنا شروع ہو جائے۔ +- واضح وزن کی کمی / ریگولرائزیشن -- نقصان کے فنکشن میں وزن کی زیادہ مطلق ویلیوز کے لیے اضافی جرمانہ شامل کرنا، جو ماڈل کو بہت غیر مستحکم نتائج حاصل کرنے سے روکتا ہے +- ماڈل اوسط کاری -- کئی ماڈلز کی تربیت اور پھر نتیجہ کو اوسط کرنا۔ یہ تغیر کو کم کرنے میں مدد کرتا ہے۔ +- ڈراپ آؤٹ (ماڈل اوسط کاری) + +## آپٹیمائزرز / تربیتی الگورتھمز + +تربیت کا ایک اور اہم پہلو اچھا تربیتی الگورتھم منتخب کرنا ہے۔ حالانکہ کلاسیکل **gradient descent** ایک معقول انتخاب ہے، یہ کبھی کبھی بہت سست ہو سکتا ہے، یا دیگر مسائل پیدا کر سکتا ہے۔ + +ڈیپ لرننگ میں، ہم **Stochastic Gradient Descent** (SGD) استعمال کرتے ہیں، جو تربیتی سیٹ سے بے ترتیب طور پر منتخب کردہ منی بیچز پر لاگو ہوتا ہے۔ وزن کو اس فارمولے کے ذریعے ایڈجسٹ کیا جاتا ہے: + +wt+1 = wt - η∇ℒ + +### مومینٹم + +**مومینٹم SGD** میں، ہم پچھلے مراحل سے گریڈینٹ کا ایک حصہ رکھتے ہیں۔ یہ اس طرح ہے جیسے ہم کہیں جڑت کے ساتھ حرکت کر رہے ہوں، اور ہمیں کسی مختلف سمت میں دھکا ملے، ہماری رفتار فوراً نہیں بدلتی، بلکہ اصل حرکت کا کچھ حصہ برقرار رکھتی ہے۔ یہاں ہم ایک اور ویکٹر v متعارف کراتے ہیں جو *رفتار* کی نمائندگی کرتا ہے: + +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt+vt+1 + +یہاں پیرامیٹر γ اس حد کو ظاہر کرتا ہے جس میں ہم جڑت کو مدنظر رکھتے ہیں: γ=0 کلاسیکل SGD کے مطابق ہے؛ γ=1 ایک خالص حرکت مساوات ہے۔ + +### آدم، اڈاگراد، وغیرہ + +چونکہ ہر لیئر میں ہم سگنلز کو کسی میٹرکس Wi سے ضرب دیتے ہیں، ||Wi|| پر منحصر ہے، گریڈینٹ یا تو کم ہو سکتا ہے اور 0 کے قریب ہو سکتا ہے، یا غیر معینہ طور پر بڑھ سکتا ہے۔ یہ Exploding/Vanishing Gradients مسئلے کی اصل ہے۔ + +اس مسئلے کا ایک حل یہ ہے کہ وزن کی اصلاح کے فارمولے میں گریڈینٹ کی سمت کو استعمال کیا جائے، اور مطلق ویلیو کو نظر انداز کیا جائے، یعنی: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), جہاں ||∇ℒ|| = √∑(∇ℒ)2 + +اس الگورتھم کو **Adagrad** کہا جاتا ہے۔ دیگر الگورتھمز جو اسی خیال کو استعمال کرتے ہیں: **RMSProp**, **Adam** + +> **Adam** کو بہت سی ایپلیکیشنز کے لیے ایک بہت مؤثر الگورتھم سمجھا جاتا ہے، لہذا اگر آپ کو یقین نہ ہو کہ کون سا استعمال کرنا ہے - Adam استعمال کریں۔ + +### گریڈینٹ کلپنگ + +گریڈینٹ کلپنگ اوپر دیے گئے خیال کی توسیع ہے۔ جب ||∇ℒ|| ≤ θ ہو، تو ہم وزن کی اصلاح میں اصل گریڈینٹ کو مدنظر رکھتے ہیں، اور جب ||∇ℒ|| > θ ہو - ہم گریڈینٹ کو اس کے نارم سے تقسیم کرتے ہیں۔ یہاں θ ایک پیرامیٹر ہے، زیادہ تر معاملات میں ہم θ=1 یا θ=10 لے سکتے ہیں۔ + +### لرننگ ریٹ ڈیکے + +تربیت کی کامیابی اکثر لرننگ ریٹ پیرامیٹر η پر منحصر ہوتی ہے۔ یہ منطقی ہے کہ η کی بڑی ویلیوز تیز تربیت کا نتیجہ دیتی ہیں، جو ہم عام طور پر تربیت کے آغاز میں چاہتے ہیں، اور پھر η کی چھوٹی ویلیوز ہمیں نیٹ ورک کو بہتر بنانے کی اجازت دیتی ہیں۔ اس طرح، زیادہ تر معاملات میں ہم تربیت کے عمل میں η کو کم کرنا چاہتے ہیں۔ + +یہ تربیت کے ہر ایپوک کے بعد η کو کسی نمبر (مثلاً 0.98) سے ضرب دے کر کیا جا سکتا ہے، یا زیادہ پیچیدہ **لرننگ ریٹ شیڈول** استعمال کر کے۔ + +## مختلف نیٹ ورک آرکیٹیکچرز + +اپنے مسئلے کے لیے صحیح نیٹ ورک آرکیٹیکچر کا انتخاب کرنا مشکل ہو سکتا ہے۔ عام طور پر، ہم وہ آرکیٹیکچر لیں گے جو ہمارے مخصوص کام (یا اسی طرح کے) کے لیے کام کرنے کے لیے ثابت ہو چکا ہو۔ یہاں کمپیوٹر وژن کے لیے نیورل نیٹ ورک آرکیٹیکچرز کا [اچھا جائزہ](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) ہے۔ + +> یہ ضروری ہے کہ ایسا آرکیٹیکچرز منتخب کریں جو ہمارے پاس موجود تربیتی نمونوں کی تعداد کے لیے کافی طاقتور ہو۔ بہت طاقتور ماڈل کا انتخاب [اوورفٹنگ](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) کا نتیجہ دے سکتا ہے۔ + +ایک اور اچھا طریقہ یہ ہوگا کہ ایسا آرکیٹیکچر استعمال کریں جو مطلوبہ پیچیدگی کے مطابق خود بخود ایڈجسٹ ہو۔ کسی حد تک، **ResNet** آرکیٹیکچر اور **Inception** خود کو ایڈجسٹ کرنے والے ہیں۔ [کمپیوٹر وژن آرکیٹیکچرز پر مزید](../07-ConvNets/CNN_Architectures.md) + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ur/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..bab8443f --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# آکسفورڈ پٹس کی درجہ بندی ٹرانسفر لرننگ کے ذریعے + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +تصور کریں کہ آپ کو ایک ایپلیکیشن تیار کرنی ہے جو پالتو جانوروں کی نرسری کے لیے تمام جانوروں کو کیٹلاگ کرے۔ ایسی ایپلیکیشن کی ایک بہترین خصوصیت یہ ہوگی کہ تصویر سے خود بخود نسل کا پتہ لگایا جا سکے۔ اس اسائنمنٹ میں، ہم ٹرانسفر لرننگ کا استعمال کرتے ہوئے [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) پٹس ڈیٹا سیٹ سے حقیقی زندگی کے پالتو جانوروں کی تصاویر کی درجہ بندی کریں گے۔ + +## ڈیٹا سیٹ + +ہم اصل [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) پٹس ڈیٹا سیٹ استعمال کریں گے، جس میں کتوں اور بلیوں کی 35 مختلف نسلیں شامل ہیں۔ + +ڈیٹا سیٹ ڈاؤن لوڈ کرنے کے لیے، یہ کوڈ استعمال کریں: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## نوٹ بک شروع کرنا + +لیب شروع کرنے کے لیے [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) کھولیں۔ + +## اہم نکات + +ٹرانسفر لرننگ اور پہلے سے تربیت یافتہ نیٹ ورکس ہمیں حقیقی دنیا کے امیج کلاسفیکیشن کے مسائل کو نسبتاً آسانی سے حل کرنے کی اجازت دیتے ہیں۔ تاہم، پہلے سے تربیت یافتہ نیٹ ورکس اسی قسم کی تصاویر پر بہتر کام کرتے ہیں، اور اگر ہم بہت مختلف تصاویر (مثلاً طبی تصاویر) کی درجہ بندی شروع کریں، تو نتائج ممکنہ طور پر بہت خراب ہو سکتے ہیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی اصل زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ur/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..8def6750 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# آٹو اینکوڈرز + +جب سی این اینز کو تربیت دی جاتی ہے، تو ایک مسئلہ یہ ہوتا ہے کہ ہمیں بہت زیادہ لیبل شدہ ڈیٹا کی ضرورت ہوتی ہے۔ مثال کے طور پر، امیج کلاسیفیکیشن کے معاملے میں، ہمیں تصاویر کو مختلف کلاسز میں تقسیم کرنا پڑتا ہے، جو ایک دستی کام ہے۔ + +## [پری لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +تاہم، ہم سی این این فیچر ایکسٹریکٹرز کو تربیت دینے کے لیے خام (غیر لیبل شدہ) ڈیٹا استعمال کرنا چاہتے ہیں، جسے **سیلف سپروائزڈ لرننگ** کہا جاتا ہے۔ لیبلز کے بجائے، ہم تربیتی تصاویر کو نیٹ ورک ان پٹ اور آؤٹ پٹ دونوں کے طور پر استعمال کریں گے۔ **آٹو اینکوڈر** کا بنیادی خیال یہ ہے کہ ہمارے پاس ایک **اینکوڈر نیٹ ورک** ہوگا جو ان پٹ تصویر کو کسی **لیٹنٹ اسپیس** میں تبدیل کرے گا (عام طور پر یہ کچھ چھوٹے سائز کا ویکٹر ہوتا ہے)، پھر **ڈیکوڈر نیٹ ورک**، جس کا مقصد اصل تصویر کو دوبارہ بنانا ہوگا۔ + +> ✅ ایک [آٹو اینکوڈر](https://wikipedia.org/wiki/Autoencoder) "مصنوعی نیورل نیٹ ورک کی ایک قسم ہے جو غیر لیبل شدہ ڈیٹا کے مؤثر کوڈنگز سیکھنے کے لیے استعمال ہوتی ہے۔" + +چونکہ ہم آٹو اینکوڈر کو تربیت دے رہے ہیں تاکہ اصل تصویر سے زیادہ سے زیادہ معلومات حاصل کی جا سکیں تاکہ درست تعمیر نو ہو، نیٹ ورک ان پٹ تصاویر کے بہترین **ایمبیڈنگ** تلاش کرنے کی کوشش کرتا ہے تاکہ معنی کو پکڑا جا سکے۔ + +![آٹو اینکوڈر ڈایاگرام](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ur.jpg) + +> تصویر [Keras بلاگ](https://blog.keras.io/building-autoencoders-in-keras.html) سے لی گئی ہے + +## آٹو اینکوڈرز کے استعمال کے منظرنامے + +اگرچہ اصل تصاویر کو دوبارہ بنانا بذات خود مفید نہیں لگتا، لیکن کچھ منظرنامے ایسے ہیں جہاں آٹو اینکوڈرز خاص طور پر کارآمد ہوتے ہیں: + +* **تصاویر کے طول و عرض کو کم کرنا** یا **امیج ایمبیڈنگز کی تربیت**۔ عام طور پر آٹو اینکوڈرز پی سی اے سے بہتر نتائج دیتے ہیں، کیونکہ یہ تصاویر کی مکانی نوعیت اور درجہ بندی کی خصوصیات کو مدنظر رکھتے ہیں۔ +* **شور کو ختم کرنا**، یعنی تصویر سے شور کو ہٹانا۔ چونکہ شور بہت زیادہ غیر ضروری معلومات لے کر آتا ہے، آٹو اینکوڈر اسے نسبتاً چھوٹے لیٹنٹ اسپیس میں فٹ نہیں کر سکتا، اور اس طرح یہ تصویر کے صرف اہم حصے کو پکڑتا ہے۔ جب ڈینائزرز کو تربیت دی جاتی ہے، تو ہم اصل تصاویر سے شروع کرتے ہیں، اور آٹو اینکوڈر کے ان پٹ کے طور پر مصنوعی طور پر شامل کردہ شور کے ساتھ تصاویر استعمال کرتے ہیں۔ +* **سپر ریزولوشن**، تصویر کی ریزولوشن بڑھانا۔ ہم ہائی ریزولوشن تصاویر سے شروع کرتے ہیں، اور آٹو اینکوڈر ان پٹ کے طور پر کم ریزولوشن والی تصویر استعمال کرتے ہیں۔ +* **جنریٹو ماڈلز**۔ ایک بار جب ہم آٹو اینکوڈر کو تربیت دے لیتے ہیں، تو ڈیکوڈر حصہ نئے اشیاء بنانے کے لیے استعمال کیا جا سکتا ہے، جو کہ رینڈم لیٹنٹ ویکٹرز سے شروع ہوتا ہے۔ + +## ویرییشنل آٹو اینکوڈرز (VAE) + +روایتی آٹو اینکوڈرز کسی طرح ان پٹ ڈیٹا کے طول و عرض کو کم کرتے ہیں، ان پٹ تصاویر کی اہم خصوصیات کو سمجھتے ہیں۔ تاہم، لیٹنٹ ویکٹرز اکثر زیادہ معنی خیز نہیں ہوتے۔ دوسرے الفاظ میں، MNIST ڈیٹاسیٹ کو مثال کے طور پر لیتے ہوئے، یہ سمجھنا کہ مختلف لیٹنٹ ویکٹرز کے ساتھ کون سے ہندسے مطابقت رکھتے ہیں، آسان کام نہیں ہے، کیونکہ قریبی لیٹنٹ ویکٹرز ضروری نہیں کہ ایک ہی ہندسے سے مطابقت رکھتے ہوں۔ + +دوسری طرف، *جنریٹو* ماڈلز کو تربیت دینے کے لیے لیٹنٹ اسپیس کی کچھ سمجھ ہونا بہتر ہے۔ یہ خیال ہمیں **ویرییشنل آٹو اینکوڈر** (VAE) کی طرف لے جاتا ہے۔ + +VAE وہ آٹو اینکوڈر ہے جو لیٹنٹ پیرامیٹرز کی *شماریاتی تقسیم* کی پیش گوئی کرنا سیکھتا ہے، جسے **لیٹنٹ ڈسٹریبیوشن** کہا جاتا ہے۔ مثال کے طور پر، ہم چاہتے ہیں کہ لیٹنٹ ویکٹرز کو کچھ اوسط zmean اور معیاری انحراف zsigma کے ساتھ معمول کے مطابق تقسیم کیا جائے (اوسط اور معیاری انحراف دونوں کچھ طول و عرض d کے ویکٹر ہیں)۔ VAE میں اینکوڈر ان پیرامیٹرز کی پیش گوئی کرنا سیکھتا ہے، اور پھر ڈیکوڈر اس تقسیم سے ایک رینڈم ویکٹر لیتا ہے تاکہ اشیاء کو دوبارہ بنایا جا سکے۔ + +خلاصہ: + + * ان پٹ ویکٹر سے، ہم `z_mean` اور `z_log_sigma` کی پیش گوئی کرتے ہیں (معیاری انحراف کی بجائے، ہم اس کا لوگارتھم پیش گوئی کرتے ہیں) + * ہم تقسیم N(zmean,exp(zlog\_sigma)) سے ایک ویکٹر `sample` لیتے ہیں + * ڈیکوڈر `sample` کو ان پٹ ویکٹر کے طور پر استعمال کرتے ہوئے اصل تصویر کو ڈی کوڈ کرنے کی کوشش کرتا ہے + + + +> تصویر [اس بلاگ پوسٹ](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) سے لی گئی ہے، جو Isaak Dykeman نے لکھی ہے + +ویرییشنل آٹو اینکوڈرز ایک پیچیدہ نقصان کے فنکشن کا استعمال کرتے ہیں جو دو حصوں پر مشتمل ہوتا ہے: + +* **ریکنسٹرکشن نقصان** وہ نقصان کا فنکشن ہے جو ظاہر کرتا ہے کہ دوبارہ بنائی گئی تصویر ہدف کے کتنی قریب ہے (یہ Mean Squared Error، یا MSE ہو سکتا ہے)۔ یہ وہی نقصان کا فنکشن ہے جو عام آٹو اینکوڈرز میں استعمال ہوتا ہے۔ +* **KL نقصان**، جو یقینی بناتا ہے کہ لیٹنٹ ویرئیبل ڈسٹریبیوشن نارمل ڈسٹریبیوشن کے قریب رہتا ہے۔ یہ [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) کے تصور پر مبنی ہے - دو شماریاتی تقسیموں کی مماثلت کا اندازہ لگانے کے لیے ایک میٹرک۔ + +VAEs کا ایک اہم فائدہ یہ ہے کہ وہ ہمیں نسبتاً آسانی سے نئی تصاویر بنانے کی اجازت دیتے ہیں، کیونکہ ہمیں معلوم ہوتا ہے کہ لیٹنٹ ویکٹرز کو کس تقسیم سے نمونہ لینا ہے۔ مثال کے طور پر، اگر ہم MNIST پر 2D لیٹنٹ ویکٹر کے ساتھ VAE کو تربیت دیتے ہیں، تو ہم لیٹنٹ ویکٹر کے اجزاء کو مختلف کر کے مختلف ہندسے حاصل کر سکتے ہیں: + +vaemnist + +> تصویر [Dmitry Soshnikov](http://soshnikov.com) کی ہے + +مشاہدہ کریں کہ تصاویر ایک دوسرے میں کیسے ضم ہو رہی ہیں، جیسے ہی ہم لیٹنٹ پیرامیٹر اسپیس کے مختلف حصوں سے لیٹنٹ ویکٹرز حاصل کرتے ہیں۔ ہم اس اسپیس کو 2D میں بھی دیکھ سکتے ہیں: + +vaemnist cluster + +> تصویر [Dmitry Soshnikov](http://soshnikov.com) کی ہے + +## ✍️ مشقیں: آٹو اینکوڈرز + +آٹو اینکوڈرز کے بارے میں مزید جانیں ان متعلقہ نوٹ بکس میں: + +* [TensorFlow میں آٹو اینکوڈرز](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch میں آٹو اینکوڈرز](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## آٹو اینکوڈرز کی خصوصیات + +* **ڈیٹا مخصوص** - یہ صرف ان قسم کی تصاویر کے ساتھ اچھا کام کرتے ہیں جن پر انہیں تربیت دی گئی ہو۔ مثال کے طور پر، اگر ہم پھولوں پر سپر ریزولوشن نیٹ ورک کو تربیت دیں، تو یہ پورٹریٹس پر اچھا کام نہیں کرے گا۔ اس کی وجہ یہ ہے کہ نیٹ ورک تربیتی ڈیٹاسیٹ سے سیکھے گئے فیچرز سے باریک تفصیلات لے کر ہائی ریزولوشن تصویر بنا سکتا ہے۔ +* **لوسی** - دوبارہ بنائی گئی تصویر اصل تصویر جیسی نہیں ہوتی۔ نقصان کی نوعیت تربیت کے دوران استعمال کیے گئے *نقصان کے فنکشن* سے متعین ہوتی ہے۔ +* **غیر لیبل شدہ ڈیٹا** پر کام کرتا ہے + +## [پوسٹ لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## نتیجہ + +اس سبق میں، آپ نے آٹو اینکوڈرز کی مختلف اقسام کے بارے میں سیکھا جو AI سائنسدان کے لیے دستیاب ہیں۔ آپ نے انہیں بنانے اور تصاویر کو دوبارہ بنانے کے لیے استعمال کرنے کا طریقہ سیکھا۔ آپ نے VAE کے بارے میں بھی سیکھا اور اسے نئی تصاویر بنانے کے لیے استعمال کرنے کا طریقہ سمجھا۔ + +## 🚀 چیلنج + +اس سبق میں، آپ نے تصاویر کے لیے آٹو اینکوڈرز کے استعمال کے بارے میں سیکھا۔ لیکن انہیں موسیقی کے لیے بھی استعمال کیا جا سکتا ہے! Magenta پروجیکٹ کے [MusicVAE](https://magenta.tensorflow.org/music-vae) پروجیکٹ کو دیکھیں، جو آٹو اینکوڈرز کو موسیقی کو دوبارہ بنانے کے لیے سیکھنے کے لیے استعمال کرتا ہے۔ اس لائبریری کے ساتھ کچھ [تجربات](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) کریں تاکہ دیکھیں آپ کیا بنا سکتے ہیں۔ + +## [پوسٹ لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## جائزہ اور خود مطالعہ + +حوالہ کے لیے، آٹو اینکوڈرز کے بارے میں مزید پڑھیں ان وسائل میں: + +* [Keras میں آٹو اینکوڈرز بنانا](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive پر بلاگ پوسٹ](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [ویرییشنل آٹو اینکوڈرز کی وضاحت](https://kvfrans.com/variational-autoencoders-explained/) +* [کنڈیشنل ویرییشنل آٹو اینکوڈرز](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## اسائنمنٹ + +[TensorFlow کا استعمال کرتے ہوئے اس نوٹ بک](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) کے آخر میں آپ کو ایک 'ٹاسک' ملے گا - اسے اپنی اسائنمنٹ کے طور پر استعمال کریں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/10-GANs/README.md b/translations/ur/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..b2c196ff --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# جنریٹو ایڈورسریل نیٹ ورکس + +پچھلے حصے میں، ہم نے **جنریٹو ماڈلز** کے بارے میں سیکھا: ایسے ماڈلز جو تربیتی ڈیٹا سیٹ میں موجود تصاویر جیسی نئی تصاویر بنا سکتے ہیں۔ VAE جنریٹو ماڈل کی ایک اچھی مثال تھی۔ + +## [پری لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +تاہم، اگر ہم کچھ واقعی معنی خیز بنانا چاہیں، جیسے مناسب ریزولوشن پر ایک پینٹنگ، VAE کے ساتھ، تو ہمیں نظر آئے گا کہ تربیت اچھی طرح سے نہیں ہوتی۔ اس استعمال کے لیے، ہمیں ایک اور آرکیٹیکچر کے بارے میں سیکھنا چاہیے جو خاص طور پر جنریٹو ماڈلز کے لیے بنایا گیا ہے - **جنریٹو ایڈورسریل نیٹ ورکس**، یا GANs۔ + +GAN کا بنیادی خیال یہ ہے کہ دو نیورل نیٹ ورکس ہوں جو ایک دوسرے کے خلاف تربیت دیے جائیں: + + + +> تصویر: [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ تھوڑی سی وضاحت: +> * **جنریٹر** ایک نیٹ ورک ہے جو کچھ بے ترتیب ویکٹر لیتا ہے اور نتیجے میں تصویر بناتا ہے۔ +> * **ڈسکرمنیٹر** ایک نیٹ ورک ہے جو تصویر لیتا ہے اور یہ بتانا چاہیے کہ آیا یہ حقیقی تصویر ہے (تربیتی ڈیٹا سیٹ سے)، یا یہ جنریٹر نے بنائی ہے۔ یہ بنیادی طور پر ایک تصویر کی درجہ بندی کرنے والا ہے۔ + +### ڈسکرمنیٹر + +ڈسکرمنیٹر کی آرکیٹیکچر عام تصویر کی درجہ بندی کرنے والے نیٹ ورک سے مختلف نہیں ہے۔ سب سے آسان صورت میں یہ مکمل طور پر جڑا ہوا درجہ بندی کرنے والا ہو سکتا ہے، لیکن زیادہ تر امکان ہے کہ یہ ایک [کنوولوشنل نیٹ ورک](../07-ConvNets/README.md) ہوگا۔ + +> ✅ کنوولوشنل نیٹ ورکس پر مبنی GAN کو [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) کہا جاتا ہے۔ + +ایک CNN ڈسکرمنیٹر درج ذیل تہوں پر مشتمل ہوتا ہے: کئی کنوولوشنز+پولنگز (کم ہوتی ہوئی اسپیشل سائز کے ساتھ) اور ایک یا زیادہ مکمل طور پر جڑی ہوئی تہیں تاکہ "فیچر ویکٹر" حاصل ہو، اور آخر میں بائنری درجہ بندی کرنے والا۔ + +> ✅ 'پولنگ' اس سیاق و سباق میں ایک تکنیک ہے جو تصویر کے سائز کو کم کرتی ہے۔ "پولنگ تہیں ڈیٹا کے ابعاد کو کم کرتی ہیں، ایک تہہ میں نیورون کلسٹرز کے آؤٹ پٹ کو اگلی تہہ میں ایک نیورون میں یکجا کر کے۔" - [ماخذ](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### جنریٹر + +جنریٹر تھوڑا زیادہ پیچیدہ ہے۔ آپ اسے ایک الٹا ڈسکرمنیٹر سمجھ سکتے ہیں۔ ایک لیٹنٹ ویکٹر سے شروع کرتے ہوئے (فیچر ویکٹر کی جگہ)، اس میں ایک مکمل طور پر جڑی ہوئی تہہ ہوتی ہے جو اسے مطلوبہ سائز/شکل میں تبدیل کرتی ہے، اس کے بعد ڈی کنوولوشنز+اپسکیلنگ۔ یہ [آٹو انکوڈر](../09-Autoencoders/README.md) کے *ڈیکوڈر* حصے سے ملتا جلتا ہے۔ + +> ✅ چونکہ کنوولوشن تہہ تصویر کے ذریعے ایک لکیری فلٹر کے طور پر نافذ کی جاتی ہے، ڈی کنوولوشن بنیادی طور پر کنوولوشن جیسی ہوتی ہے، اور اسے اسی تہہ منطق کا استعمال کرتے ہوئے نافذ کیا جا سکتا ہے۔ + + + +> تصویر: [Dmitry Soshnikov](http://soshnikov.com) + +### GAN کی تربیت + +GANs کو **ایڈورسریل** کہا جاتا ہے کیونکہ جنریٹر اور ڈسکرمنیٹر کے درمیان مسلسل مقابلہ ہوتا ہے۔ اس مقابلے کے دوران، جنریٹر اور ڈسکرمنیٹر دونوں بہتر ہوتے ہیں، اس طرح نیٹ ورک بہتر اور بہتر تصاویر بنانا سیکھتا ہے۔ + +تربیت دو مراحل میں ہوتی ہے: + +* **ڈسکرمنیٹر کی تربیت**۔ یہ کام کافی سیدھا ہے: ہم جنریٹر کے ذریعے تصاویر کا ایک بیچ بناتے ہیں، انہیں 0 کے لیبل کے ساتھ نشان زد کرتے ہیں، جو جعلی تصویر کے لیے ہے، اور ان پٹ ڈیٹا سیٹ سے تصاویر کا ایک بیچ لیتے ہیں (لیبل 1، حقیقی تصویر کے ساتھ)۔ ہم کچھ *ڈسکرمنیٹر نقصان* حاصل کرتے ہیں، اور بیک پروپ کرتے ہیں۔ +* **جنریٹر کی تربیت**۔ یہ تھوڑا زیادہ پیچیدہ ہے، کیونکہ ہم جنریٹر کے لیے براہ راست متوقع آؤٹ پٹ نہیں جانتے۔ ہم پورے GAN نیٹ ورک کو جنریٹر کے ساتھ ڈسکرمنیٹر کے بعد لیتے ہیں، اسے کچھ بے ترتیب ویکٹرز کے ساتھ فیڈ کرتے ہیں، اور توقع کرتے ہیں کہ نتیجہ 1 ہوگا (حقیقی تصاویر کے مطابق)۔ پھر ہم ڈسکرمنیٹر کے پیرامیٹرز کو منجمد کرتے ہیں (ہم نہیں چاہتے کہ یہ اس مرحلے پر تربیت دی جائے)، اور بیک پروپ کرتے ہیں۔ + +اس عمل کے دوران، جنریٹر اور ڈسکرمنیٹر دونوں کے نقصانات نمایاں طور پر کم نہیں ہو رہے ہوتے۔ مثالی صورتحال میں، انہیں جھولنا چاہیے، جو دونوں نیٹ ورکس کی کارکردگی کو بہتر بنانے کے مطابق ہو۔ + +## ✍️ مشقیں: GANs + +* [GAN نوٹ بک TensorFlow/Keras میں](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN نوٹ بک PyTorch میں](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN کی تربیت کے مسائل + +GANs کو تربیت دینا خاص طور پر مشکل سمجھا جاتا ہے۔ یہاں چند مسائل ہیں: + +* **موڈ کولپس**۔ اس اصطلاح سے مراد ہے کہ جنریٹر ایک کامیاب تصویر بنانا سیکھتا ہے جو جنریٹر کو دھوکہ دیتی ہے، اور مختلف تصاویر کی قسم نہیں بناتا۔ +* **ہائپر پیرامیٹرز کے لیے حساسیت**۔ اکثر آپ دیکھ سکتے ہیں کہ GAN بالکل بھی کنورج نہیں کرتا، اور پھر اچانک سیکھنے کی شرح میں کمی کنورجنس کی طرف لے جاتی ہے۔ +* جنریٹر اور ڈسکرمنیٹر کے درمیان **توازن** برقرار رکھنا۔ بہت سے معاملات میں ڈسکرمنیٹر نقصان نسبتاً جلدی صفر تک گر سکتا ہے، جس کے نتیجے میں جنریٹر مزید تربیت حاصل کرنے کے قابل نہیں ہوتا۔ اس پر قابو پانے کے لیے، ہم جنریٹر اور ڈسکرمنیٹر کے لیے مختلف سیکھنے کی شرح مقرر کرنے کی کوشش کر سکتے ہیں، یا اگر نقصان پہلے ہی بہت کم ہو تو ڈسکرمنیٹر کی تربیت کو چھوڑ سکتے ہیں۔ +* **اعلی ریزولوشن** کے لیے تربیت۔ آٹو انکوڈرز کے ساتھ اسی مسئلے کی عکاسی کرتے ہوئے، یہ مسئلہ اس وقت پیدا ہوتا ہے جب کنوولوشنل نیٹ ورک کی بہت سی تہوں کو دوبارہ تعمیر کرنے سے آرٹیفیکٹس پیدا ہوتے ہیں۔ اس مسئلے کو عام طور پر **پروگریسو گروئنگ** کے ساتھ حل کیا جاتا ہے، جب پہلے چند تہوں کو کم ریزولوشن تصاویر پر تربیت دی جاتی ہے، اور پھر تہوں کو "ان بلاک" یا شامل کیا جاتا ہے۔ ایک اور حل تہوں کے درمیان اضافی کنکشن شامل کرنا اور ایک ساتھ کئی ریزولوشنز کی تربیت دینا ہوگا - مزید تفصیلات کے لیے اس [ملٹی اسکیل گریڈینٹ GANs پیپر](https://arxiv.org/abs/1903.06048) کو دیکھیں۔ + +## اسٹائل ٹرانسفر + +GANs آرٹسٹک تصاویر بنانے کا ایک بہترین طریقہ ہیں۔ ایک اور دلچسپ تکنیک **اسٹائل ٹرانسفر** کہلاتی ہے، جو ایک **مواد کی تصویر** لیتی ہے، اور اسے مختلف انداز میں دوبارہ بناتی ہے، **اسٹائل تصویر** سے فلٹرز لگاتے ہوئے۔ + +یہ طریقہ کار اس طرح کام کرتا ہے: +* ہم ایک بے ترتیب شور تصویر سے شروع کرتے ہیں (یا مواد کی تصویر سے، لیکن سمجھنے کے لیے بے ترتیب شور سے شروع کرنا آسان ہے) +* ہمارا مقصد ایسی تصویر بنانا ہوگا، جو مواد کی تصویر اور اسٹائل تصویر دونوں کے قریب ہو۔ یہ دو نقصان کے فنکشنز کے ذریعے طے کیا جائے گا: + - **مواد نقصان** موجودہ تصویر اور مواد کی تصویر سے CNN کے ذریعے کچھ تہوں پر نکالی گئی خصوصیات کی بنیاد پر حساب کیا جاتا ہے۔ + - **اسٹائل نقصان** موجودہ تصویر اور اسٹائل تصویر کے درمیان ایک ہوشیار طریقے سے گرام میٹرکس کا استعمال کرتے ہوئے حساب کیا جاتا ہے (مزید تفصیلات [مثال نوٹ بک](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) میں) +* تصویر کو ہموار بنانے اور شور کو دور کرنے کے لیے، ہم **ویریئشن نقصان** بھی متعارف کراتے ہیں، جو پڑوسی پکسلز کے درمیان اوسط فاصلہ حساب کرتا ہے۔ +* بنیادی اصلاحی لوپ موجودہ تصویر کو ایڈجسٹ کرتا ہے، کل نقصان کو کم کرنے کے لیے، جو تمام تین نقصانات کا وزنی مجموعہ ہے، گریڈینٹ ڈیسنٹ (یا کچھ اور اصلاحی الگورتھم) کا استعمال کرتے ہوئے۔ + +## ✍️ مثال: [اسٹائل ٹرانسفر](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [پوسٹ لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## نتیجہ + +اس سبق میں، آپ نے GANs اور انہیں تربیت دینے کے طریقے کے بارے میں سیکھا۔ آپ نے اس قسم کے نیورل نیٹ ورک کو درپیش خاص چیلنجز اور ان سے آگے بڑھنے کے لیے کچھ حکمت عملیوں کے بارے میں بھی سیکھا۔ + +## 🚀 چیلنج + +اپنی تصاویر استعمال کرتے ہوئے [اسٹائل ٹرانسفر نوٹ بک](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) کو چلائیں۔ + +## جائزہ اور خود مطالعہ + +حوالے کے لیے، ان وسائل میں GANs کے بارے میں مزید پڑھیں: + +* مارکو پاسینی، [10 سبق جو میں نے GANs کی تربیت کرتے ہوئے ایک سال میں سیکھے](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN)، ایک *ڈی فیکٹو* GAN آرکیٹیکچر پر غور کریں +* [Azure ML پر GANs کا استعمال کرتے ہوئے جنریٹو آرٹ بنانا](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## اسائنمنٹ + +اس سبق سے وابستہ دو نوٹ بکس میں سے کسی ایک کو دوبارہ دیکھیں اور GAN کو اپنی تصاویر پر دوبارہ تربیت دیں۔ آپ کیا بنا سکتے ہیں؟ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ur/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..4e45797e --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# آبجیکٹ ڈیٹیکشن + +اب تک ہم نے جو امیج کلاسیفیکیشن ماڈلز دیکھے ہیں، وہ ایک تصویر لیتے ہیں اور ایک کیٹیگری کا نتیجہ دیتے ہیں، جیسے MNIST مسئلے میں کلاس 'نمبر'۔ لیکن اکثر ہمیں صرف یہ جاننا نہیں ہوتا کہ تصویر میں اشیاء موجود ہیں - بلکہ ہم ان کی صحیح جگہ کا تعین کرنا چاہتے ہیں۔ یہی **آبجیکٹ ڈیٹیکشن** کا مقصد ہے۔ + +## [پری لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![آبجیکٹ ڈیٹیکشن](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ur.png) + +> تصویر [YOLO v2 ویب سائٹ](https://pjreddie.com/darknet/yolov2/) سے لی گئی ہے۔ + +## آبجیکٹ ڈیٹیکشن کے لیے ایک سادہ طریقہ + +فرض کریں کہ ہم تصویر میں ایک بلی کو تلاش کرنا چاہتے ہیں، تو آبجیکٹ ڈیٹیکشن کے لیے ایک بہت سادہ طریقہ یہ ہوگا: + +1. تصویر کو کئی چھوٹے حصوں میں تقسیم کریں۔ +2. ہر حصے پر امیج کلاسیفیکیشن چلائیں۔ +3. وہ حصے جن میں کافی زیادہ ایکٹیویشن ہو، انہیں مطلوبہ آبجیکٹ کے حامل سمجھا جا سکتا ہے۔ + +![سادہ آبجیکٹ ڈیٹیکشن](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ur.png) + +> *تصویر [ایکسسرس نوٹ بک](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) سے لی گئی ہے۔* + +لیکن یہ طریقہ مثالی نہیں ہے، کیونکہ یہ الگورتھم کو آبجیکٹ کے باؤنڈنگ باکس کو بہت غیر واضح طریقے سے تلاش کرنے کی اجازت دیتا ہے۔ زیادہ درست مقام کے لیے ہمیں **ریگریشن** کا استعمال کرنا ہوگا تاکہ باؤنڈنگ باکس کے کوآرڈینیٹس کی پیش گوئی کی جا سکے - اور اس کے لیے مخصوص ڈیٹاسیٹس کی ضرورت ہوتی ہے۔ + +## آبجیکٹ ڈیٹیکشن کے لیے ریگریشن + +[یہ بلاگ پوسٹ](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) شکلوں کی شناخت کے لیے ایک بہترین تعارف فراہم کرتی ہے۔ + +## آبجیکٹ ڈیٹیکشن کے لیے ڈیٹاسیٹس + +آپ اس کام کے لیے درج ذیل ڈیٹاسیٹس دیکھ سکتے ہیں: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 کلاسز +* [COCO](http://cocodataset.org/#home) - عام اشیاء کے سیاق و سباق میں۔ 80 کلاسز، باؤنڈنگ باکسز اور سیگمنٹیشن ماسکس + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ur.jpg) + +## آبجیکٹ ڈیٹیکشن میٹرکس + +### انٹرسیکشن اوور یونین + +امیج کلاسیفیکیشن کے لیے الگورتھم کی کارکردگی کو جانچنا آسان ہے، لیکن آبجیکٹ ڈیٹیکشن کے لیے ہمیں کلاس کی درستگی کے ساتھ ساتھ باؤنڈنگ باکس کے مقام کی درستگی کو بھی جانچنا ہوتا ہے۔ اس کے لیے ہم **انٹرسیکشن اوور یونین** (IoU) استعمال کرتے ہیں، جو دو باکسز (یا دو کسی بھی علاقے) کے اوورلیپ کو ماپتا ہے۔ + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ur.png) + +> *تصویر 2 [اس بہترین بلاگ پوسٹ](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) سے لی گئی ہے۔* + +خیال سادہ ہے - ہم دو شکلوں کے درمیان انٹرسیکشن کے علاقے کو ان کے یونین کے علاقے سے تقسیم کرتے ہیں۔ دو ایک جیسے علاقوں کے لیے IoU 1 ہوگا، جبکہ مکمل طور پر الگ علاقوں کے لیے یہ 0 ہوگا۔ ورنہ یہ 0 سے 1 کے درمیان ہوگا۔ ہم عام طور پر صرف ان باؤنڈنگ باکسز کو دیکھتے ہیں جن کے IoU ایک خاص قدر سے زیادہ ہو۔ + +### ایوریج پریسیژن + +فرض کریں کہ ہم کسی دی گئی کلاس $C$ کی اشیاء کو پہچاننے کی کارکردگی کو ماپنا چاہتے ہیں۔ اس کے لیے ہم **ایوریج پریسیژن** میٹرکس استعمال کرتے ہیں، جو اس طرح سے حساب کی جاتی ہے: + +1. پریسیژن-ریکال گراف دکھاتا ہے کہ ڈیٹیکشن تھریشولڈ ویلیو (0 سے 1 تک) کے مطابق درستگی کیسے تبدیل ہوتی ہے۔ +2. تھریشولڈ کے مطابق، ہمیں تصویر میں زیادہ یا کم اشیاء ملیں گی، اور پریسیژن اور ریکال کی مختلف قدریں۔ +3. گراف کچھ اس طرح نظر آئے گا: + + + +> *تصویر [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) سے لی گئی ہے۔* + +دی گئی کلاس $C$ کے لیے ایوریج پریسیژن اس گراف کے نیچے کے علاقے کے برابر ہے۔ زیادہ تفصیل سے، ریکال محور کو عام طور پر 10 حصوں میں تقسیم کیا جاتا ہے، اور پریسیژن ان تمام پوائنٹس پر اوسط کی جاتی ہے: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP اور IoU + +ہم صرف ان ڈیٹیکشنز کو دیکھیں گے جن کے IoU ایک خاص قدر سے زیادہ ہو۔ مثال کے طور پر، PASCAL VOC ڈیٹاسیٹ میں عام طور پر $\mbox{IoU Threshold} = 0.5$ فرض کیا جاتا ہے، جبکہ COCO میں AP مختلف $\mbox{IoU Threshold}$ قدروں کے لیے ماپا جاتا ہے۔ + + + +> *تصویر [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) سے لی گئی ہے۔* + +### مین ایوریج پریسیژن - mAP + +آبجیکٹ ڈیٹیکشن کے لیے اہم میٹرک **مین ایوریج پریسیژن** یا **mAP** کہلاتا ہے۔ یہ ایوریج پریسیژن کی قدر ہے، جو تمام آبجیکٹ کلاسز پر اوسط کی جاتی ہے، اور کبھی کبھار $\mbox{IoU Threshold}$ پر بھی۔ زیادہ تفصیل سے، **mAP** کا حساب لگانے کا عمل +[اس بلاگ پوسٹ](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) میں بیان کیا گیا ہے، اور [یہاں کوڈ کے نمونوں کے ساتھ](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) بھی۔ + +## مختلف آبجیکٹ ڈیٹیکشن کے طریقے + +آبجیکٹ ڈیٹیکشن الگورتھمز کی دو بڑی اقسام ہیں: + +* **ریجن پروپوزل نیٹ ورکس** (R-CNN، فاسٹ R-CNN، فاسٹر R-CNN)۔ بنیادی خیال یہ ہے کہ **ریجنز آف انٹرسٹ** (ROI) بنائیں اور ان پر CNN چلائیں، زیادہ سے زیادہ ایکٹیویشن تلاش کرنے کے لیے۔ یہ سادہ طریقے سے ملتا جلتا ہے، سوائے اس کے کہ ROI زیادہ ذہین طریقے سے بنائے جاتے ہیں۔ ایسے طریقوں کا ایک بڑا نقصان یہ ہے کہ یہ سست ہوتے ہیں، کیونکہ ہمیں تصویر پر CNN کلاسیفائر کے کئی پاسز کی ضرورت ہوتی ہے۔ +* **ون پاس** (YOLO، SSD، RetinaNet) طریقے۔ ان آرکیٹیکچرز میں ہم نیٹ ورک کو ایک ہی پاس میں کلاسز اور ROI کی پیش گوئی کے لیے ڈیزائن کرتے ہیں۔ + +### R-CNN: ریجن بیسڈ CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [سیلیکٹیو سرچ](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) استعمال کرتا ہے تاکہ ROI ریجنز کی ہائیرارکل ساخت بنائی جا سکے، جنہیں پھر CNN فیچر ایکسٹریکٹرز اور SVM کلاسیفائرز کے ذریعے آبجیکٹ کلاس کا تعین کرنے کے لیے پاس کیا جاتا ہے، اور *باؤنڈنگ باکس* کے کوآرڈینیٹس کا تعین کرنے کے لیے لینیئر ریگریشن۔ [آفیشل پیپر](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ur.png) + +> *تصویر van de Sande et al. ICCV’11 سے لی گئی ہے۔* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ur.png) + +> *تصاویر [اس بلاگ](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) سے لی گئی ہیں۔* + +### F-RCNN - فاسٹ R-CNN + +یہ طریقہ R-CNN سے ملتا جلتا ہے، لیکن ریجنز کنوولوشن لیئرز کے بعد ڈیفائن کیے جاتے ہیں۔ + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ur.png) + +> تصویر [آفیشل پیپر](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf)، [arXiv](https://arxiv.org/pdf/1504.08083.pdf)، 2015 سے لی گئی ہے۔ + +### فاسٹر R-CNN + +اس طریقے کا بنیادی خیال یہ ہے کہ ریجنز کی پیش گوئی کے لیے نیورل نیٹ ورک استعمال کیا جائے - جسے *ریجن پروپوزل نیٹ ورک* کہا جاتا ہے۔ [پیپر](https://arxiv.org/pdf/1506.01497.pdf)، 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ur.png) + +> تصویر [آفیشل پیپر](https://arxiv.org/pdf/1506.01497.pdf) سے لی گئی ہے۔ + +### R-FCN: ریجن بیسڈ فل کنوولوشنل نیٹ ورک + +یہ الگورتھم فاسٹر R-CNN سے بھی زیادہ تیز ہے۔ بنیادی خیال یہ ہے: + +1. ہم ResNet-101 استعمال کرتے ہوئے فیچرز نکالتے ہیں۔ +1. فیچرز **پوزیشن سینسیٹو اسکور میپ** کے ذریعے پروسیس کیے جاتے ہیں۔ $C$ کلاسز کی ہر آبجیکٹ کو $k\times k$ ریجنز میں تقسیم کیا جاتا ہے، اور ہم آبجیکٹس کے حصے کی پیش گوئی کرنے کی تربیت دیتے ہیں۔ +1. $k\times k$ ریجنز کے ہر حصے کے لیے تمام نیٹ ورکس آبجیکٹ کلاسز کے لیے ووٹ دیتے ہیں، اور زیادہ سے زیادہ ووٹ کے ساتھ آبجیکٹ کلاس منتخب کی جاتی ہے۔ + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ur.png) + +> تصویر [آفیشل پیپر](https://arxiv.org/abs/1605.06409) سے لی گئی ہے۔ + +### YOLO - یو اونلی لک ونس + +YOLO ایک ریئل ٹائم ون پاس الگورتھم ہے۔ بنیادی خیال یہ ہے: + + * تصویر کو $S\times S$ ریجنز میں تقسیم کیا جاتا ہے۔ + * ہر ریجن کے لیے، **CNN** $n$ ممکنہ آبجیکٹس، *باؤنڈنگ باکس* کے کوآرڈینیٹس اور *کانفیڈنس*=*پروببلیٹی* * IoU کی پیش گوئی کرتا ہے۔ + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ur.png) + +> تصویر [آفیشل پیپر](https://arxiv.org/abs/1506.02640) سے لی گئی ہے۔ + +### دیگر الگورتھمز + +* RetinaNet: [آفیشل پیپر](https://arxiv.org/abs/1708.02002) + - [Torchvision میں PyTorch امپلیمنٹیشن](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras امپلیمنٹیشن](https://github.com/fizyr/keras-retinanet) + - [RetinaNet کے ساتھ آبجیکٹ ڈیٹیکشن](https://keras.io/examples/vision/retinanet/) Keras Samples میں +* SSD (سنگل شاٹ ڈیٹیکٹر): [آفیشل پیپر](https://arxiv.org/abs/1512.02325) + +## ✍️ مشقیں: آبجیکٹ ڈیٹیکشن + +اپنی تعلیم کو درج ذیل نوٹ بک میں جاری رکھیں: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## نتیجہ + +اس سبق میں آپ نے آبجیکٹ ڈیٹیکشن کے مختلف طریقوں کا ایک مختصر جائزہ لیا! + +## 🚀 چیلنج + +ان مضامین اور نوٹ بکس کو پڑھیں جو YOLO کے بارے میں ہیں اور انہیں خود آزمائیں: + +* [اچھا بلاگ پوسٹ](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) جو YOLO کو بیان کرتا ہے۔ + * [آفیشل سائٹ](https://pjreddie.com/darknet/yolo/) + * YOLO: [Keras امپلیمنٹیشن](https://github.com/experiencor/keras-yolo2)، [اسٹیپ بائی اسٹیپ نوٹ بک](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * YOLO v2: [Keras امپلیمنٹیشن](https://github.com/experiencor/keras-yolo2)، [اسٹیپ بائی اسٹیپ نوٹ بک](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [پوسٹ لیکچر کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## جائزہ اور خود مطالعہ + +* [آبجیکٹ ڈیٹیکشن](https://tjmachinelearning.com/lectures/1718/obj/) نکھل سردانا کے ذریعے +* [آبجیکٹ ڈیٹیکشن الگورتھمز کا ایک اچھا موازنہ](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [آبجیکٹ ڈیٹیکشن کے لیے ڈیپ لرننگ الگورتھمز کا جائزہ](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [آبجیکٹ ڈیٹیکشن الگورتھمز کا ایک مرحلہ وار تعارف](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python میں فاسٹر R-CNN کے ساتھ آبجیکٹ ڈیٹیکشن کا امپلیمنٹیشن](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [اسائنمنٹ: آبجیکٹ ڈیٹیکشن](lab/README.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ur/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..8636f45d --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# ہیڈ ڈیٹیکشن ہالی ووڈ ہیڈز ڈیٹاسیٹ کے ذریعے + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +ویڈیو سرویلنس کیمرا اسٹریم پر لوگوں کی تعداد گننا ایک اہم کام ہے، جو ہمیں دکانوں میں آنے والے وزیٹرز کی تعداد، ریسٹورنٹ کے مصروف اوقات وغیرہ کا اندازہ لگانے میں مدد دے سکتا ہے۔ اس کام کو حل کرنے کے لیے، ہمیں مختلف زاویوں سے انسانی سروں کو ڈیٹیکٹ کرنے کے قابل ہونا چاہیے۔ انسانی سروں کو ڈیٹیکٹ کرنے کے لیے آبجیکٹ ڈیٹیکشن ماڈل کو تربیت دینے کے لیے، ہم [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) استعمال کر سکتے ہیں۔ + +## ڈیٹاسیٹ + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) میں 369,846 انسانی سروں کی اینوٹیشنز شامل ہیں، جو ہالی ووڈ فلموں کے 224,740 فریمز پر مشتمل ہیں۔ یہ [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) فارمیٹ میں فراہم کیا گیا ہے، جہاں ہر تصویر کے ساتھ ایک XML تفصیل فائل بھی موجود ہوتی ہے، جو کچھ اس طرح نظر آتی ہے: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +اس ڈیٹاسیٹ میں صرف ایک قسم کی آبجیکٹ کلاس `head` ہے، اور ہر سر کے لیے آپ کو باؤنڈنگ باکس کے کوآرڈینیٹس ملتے ہیں۔ آپ XML کو Python لائبریریز کے ذریعے پارس کر سکتے ہیں، یا [اس لائبریری](https://pypi.org/project/pascal-voc/) کا استعمال کر سکتے ہیں جو PASCAL VOC فارمیٹ کے ساتھ براہ راست کام کرنے کے لیے ہے۔ + +## آبجیکٹ ڈیٹیکشن کی تربیت + +آپ آبجیکٹ ڈیٹیکشن ماڈل کو درج ذیل طریقوں میں سے کسی ایک کے ذریعے تربیت دے سکتے ہیں: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) اور اس کے Python API کا استعمال کرتے ہوئے کلاؤڈ میں ماڈل کو پروگرام کے ذریعے تربیت دیں۔ Custom Vision چند سو تصاویر سے زیادہ ڈیٹاسیٹ کو تربیت دینے کے لیے استعمال نہیں کر سکتا، اس لیے آپ کو ڈیٹاسیٹ کو محدود کرنا پڑ سکتا ہے۔ +* [Keras tutorial](https://keras.io/examples/vision/retinanet/) کی مثال کا استعمال کرتے ہوئے RetunaNet ماڈل کو تربیت دیں۔ +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) کے torchvision میں موجود بلٹ ان ماڈیول کا استعمال کریں۔ + +## نتیجہ + +آبجیکٹ ڈیٹیکشن ایک ایسا کام ہے جو صنعت میں اکثر درکار ہوتا ہے۔ اگرچہ کچھ سروسز موجود ہیں جو آبجیکٹ ڈیٹیکشن انجام دینے کے لیے استعمال کی جا سکتی ہیں (جیسے [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste))، یہ سمجھنا ضروری ہے کہ آبجیکٹ ڈیٹیکشن کیسے کام کرتا ہے اور اپنے ماڈلز کو تربیت دینے کے قابل ہونا چاہیے۔ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ur/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..f0f0b52c --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# تقسیم + +ہم نے پہلے آبجیکٹ ڈیٹیکشن کے بارے میں سیکھا تھا، جو ہمیں تصویر میں موجود اشیاء کو ان کے *باؤنڈنگ باکسز* کی پیش گوئی کے ذریعے تلاش کرنے کی اجازت دیتا ہے۔ تاہم، کچھ کاموں کے لیے ہمیں صرف باؤنڈنگ باکسز کی ضرورت نہیں ہوتی بلکہ اشیاء کی زیادہ درست لوکلائزیشن کی ضرورت ہوتی ہے۔ اس کام کو **تقسیم** کہا جاتا ہے۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +تقسیم کو **پکسل کی درجہ بندی** کے طور پر دیکھا جا سکتا ہے، جہاں تصویر کے **ہر** پکسل کے لیے ہمیں اس کی کلاس کی پیش گوئی کرنی ہوتی ہے (*بیک گراؤنڈ* بھی ایک کلاس ہوتی ہے)۔ تقسیم کے دو اہم الگورتھم ہیں: + +* **سیمینٹک تقسیم** صرف پکسل کی کلاس بتاتی ہے اور ایک ہی کلاس کی مختلف اشیاء کے درمیان فرق نہیں کرتی۔ +* **انسٹینس تقسیم** کلاسز کو مختلف انسٹینسز میں تقسیم کرتی ہے۔ + +انسٹینس تقسیم کے لیے، یہ بھیڑیں مختلف اشیاء ہیں، لیکن سیمینٹک تقسیم کے لیے تمام بھیڑیں ایک کلاس کے طور پر دکھائی جاتی ہیں۔ + + + +> تصویر [اس بلاگ پوسٹ](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) سے لی گئی ہے۔ + +تقسیم کے لیے مختلف نیورل آرکیٹیکچرز موجود ہیں، لیکن ان سب کی ساخت ایک جیسی ہوتی ہے۔ ایک لحاظ سے، یہ اس آٹو اینکوڈر سے مشابہ ہے جس کے بارے میں آپ نے پہلے سیکھا تھا، لیکن اصل تصویر کو ڈی کنسٹرکٹ کرنے کے بجائے، ہمارا مقصد ایک **ماسک** کو ڈی کنسٹرکٹ کرنا ہے۔ اس طرح، تقسیم کا نیٹ ورک درج ذیل حصے رکھتا ہے: + +* **اینکوڈر** ان پٹ تصویر سے فیچرز نکالتا ہے۔ +* **ڈی کوڈر** ان فیچرز کو **ماسک تصویر** میں تبدیل کرتا ہے، جس کا سائز اور چینلز کی تعداد کلاسز کی تعداد کے مطابق ہوتی ہے۔ + + + +> تصویر [اس اشاعت](https://arxiv.org/pdf/2001.05566.pdf) سے لی گئی ہے۔ + +ہم خاص طور پر اس نقصان کے فنکشن کا ذکر کریں گے جو تقسیم کے لیے استعمال ہوتا ہے۔ جب کلاسیکل آٹو اینکوڈرز استعمال کیے جاتے ہیں، تو ہمیں دو تصاویر کے درمیان مماثلت کو ماپنے کی ضرورت ہوتی ہے، اور ہم اس کے لیے میین اسکوائر ایرر (MSE) استعمال کر سکتے ہیں۔ تقسیم میں، ہدف ماسک تصویر میں ہر پکسل کلاس نمبر کی نمائندگی کرتا ہے (تیسری جہت کے ساتھ ون-ہاٹ-اینکوڈڈ)، لہذا ہمیں درجہ بندی کے لیے مخصوص نقصان کے فنکشنز استعمال کرنے کی ضرورت ہوتی ہے - کراس اینٹروپی نقصان، جو تمام پکسلز پر اوسط کیا جاتا ہے۔ اگر ماسک بائنری ہو - **بائنری کراس اینٹروپی نقصان** (BCE) استعمال کیا جاتا ہے۔ + +> ✅ ون-ہاٹ اینکوڈنگ ایک طریقہ ہے جس کے ذریعے کلاس لیبل کو کلاسز کی تعداد کے برابر لمبائی والے ویکٹر میں اینکوڈ کیا جاتا ہے۔ [اس مضمون](https://datagy.io/sklearn-one-hot-encode/) میں اس تکنیک کے بارے میں مزید جانیں۔ + +## طبی امیجنگ کے لیے تقسیم + +اس سبق میں، ہم تقسیم کو عملی طور پر دیکھیں گے، جہاں نیٹ ورک کو طبی تصاویر میں انسانی نیوی (جسے تل بھی کہا جاتا ہے) کو پہچاننے کے لیے تربیت دی جائے گی۔ ہم PH2 ڈیٹا بیس کے ڈرمو سکوپی تصاویر کو بطور تصویر ذریعہ استعمال کریں گے۔ اس ڈیٹا سیٹ میں تین کلاسز کی 200 تصاویر شامل ہیں: عام نیوی، غیر معمولی نیوی، اور میلانوما۔ تمام تصاویر کے ساتھ ایک **ماسک** بھی شامل ہے جو نیوی کو نمایاں کرتا ہے۔ + +> ✅ یہ تکنیک خاص طور پر اس قسم کی طبی امیجنگ کے لیے موزوں ہے، لیکن آپ اور کون سی حقیقی دنیا کی ایپلیکیشنز کا تصور کر سکتے ہیں؟ + +navi + +> تصویر PH2 ڈیٹا بیس سے لی گئی ہے۔ + +ہم ایک ماڈل کو تربیت دیں گے تاکہ کسی بھی نیوی کو اس کے بیک گراؤنڈ سے الگ کر سکے۔ + +## ✍️ مشقیں: سیمینٹک تقسیم + +نیچے دیے گئے نوٹ بکس کھولیں تاکہ مختلف سیمینٹک تقسیم آرکیٹیکچرز کے بارے میں مزید جان سکیں، ان کے ساتھ کام کرنے کی مشق کریں، اور انہیں عملی طور پر دیکھیں۔ + +* [سیمینٹک تقسیم پائی ٹارچ](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [سیمینٹک تقسیم ٹینسر فلو](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## نتیجہ + +تقسیم ایک بہت طاقتور تکنیک ہے جو تصویر کی درجہ بندی کو باؤنڈنگ باکسز سے آگے لے جا کر پکسل لیول کی درجہ بندی تک لے جاتی ہے۔ یہ طبی امیجنگ سمیت دیگر ایپلیکیشنز میں استعمال ہونے والی تکنیک ہے۔ + +## 🚀 چیلنج + +جسم کی تقسیم تصاویر میں لوگوں کے ساتھ کیے جانے والے عام کاموں میں سے ایک ہے۔ دیگر اہم کاموں میں **اسکلیٹن ڈیٹیکشن** اور **پوز ڈیٹیکشن** شامل ہیں۔ [اوپن پوز](https://github.com/CMU-Perceptual-Computing-Lab/openpose) لائبریری کو آزمائیں تاکہ دیکھ سکیں کہ پوز ڈیٹیکشن کیسے استعمال کیا جا سکتا ہے۔ + +## جائزہ اور خود مطالعہ + +یہ [ویکیپیڈیا مضمون](https://wikipedia.org/wiki/Image_segmentation) اس تکنیک کے مختلف ایپلیکیشنز کا ایک اچھا جائزہ پیش کرتا ہے۔ انسٹینس تقسیم اور پیناپٹک تقسیم کے ذیلی شعبوں کے بارے میں مزید جانیں۔ + +## [اسائنمنٹ](lab/README.md) + +اس لیب میں، [کگل](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) سے **انسانی جسم کی تقسیم** کے لیے **Segmentation Full Body MADS Dataset** استعمال کریں۔ + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ur/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..2f2a2f51 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# انسانی جسم کی تقسیم + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +ویڈیو پروڈکشن میں، جیسے کہ موسم کی پیش گوئی، ہمیں اکثر کیمرے سے انسانی تصویر کو کاٹ کر کسی اور فوٹیج کے اوپر رکھنا ہوتا ہے۔ یہ عام طور پر **کرومہ کی** تکنیک کے ذریعے کیا جاتا ہے، جہاں انسان کو ایک یکساں رنگ کے پس منظر کے سامنے فلمایا جاتا ہے، جسے بعد میں ہٹا دیا جاتا ہے۔ اس لیب میں، ہم ایک نیورل نیٹ ورک ماڈل کو تربیت دیں گے تاکہ انسانی خاکہ کو کاٹ سکیں۔ + +## ڈیٹا سیٹ + +ہم [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) کا استعمال کریں گے جو Kaggle سے دستیاب ہے۔ Kaggle سے ڈیٹا سیٹ کو دستی طور پر ڈاؤنلوڈ کریں۔ + +## ابتدائی نوٹ بک + +لیب کو شروع کرنے کے لیے [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) کھولیں۔ + +## نتیجہ + +جسم کی تقسیم تصاویر کے ساتھ کیے جانے والے عام کاموں میں سے ایک ہے۔ دیگر اہم کاموں میں **اسکلیٹن ڈیٹیکشن** اور **پوز ڈیٹیکشن** شامل ہیں۔ [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) لائبریری کو دیکھیں تاکہ یہ جان سکیں کہ ان کاموں کو کیسے نافذ کیا جا سکتا ہے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/4-ComputerVision/README.md b/translations/ur/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..39c44093 --- /dev/null +++ b/translations/ur/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# کمپیوٹر وژن + +![کمپیوٹر وژن کے مواد کا خلاصہ ایک خاکے میں](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ur.png) + +اس سیکشن میں ہم سیکھیں گے: + +* [کمپیوٹر وژن اور اوپن سی وی کا تعارف](06-IntroCV/README.md) +* [کنوولوشنل نیورل نیٹ ورکس](07-ConvNets/README.md) +* [پری ٹرینڈ نیٹ ورکس اور ٹرانسفر لرننگ](08-TransferLearning/README.md) +* [آٹو اینکوڈرز](09-Autoencoders/README.md) +* [جنریٹو ایڈورسریل نیٹ ورکس](10-GANs/README.md) +* [آبجیکٹ ڈیٹیکشن](11-ObjectDetection/README.md) +* [سیمینٹک سیگمنٹیشن](12-Segmentation/README.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/13-TextRep/README.md b/translations/ur/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..6895fe4b --- /dev/null +++ b/translations/ur/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# ٹیکسٹ کو ٹینسرز کے طور پر پیش کرنا + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## ٹیکسٹ کی درجہ بندی + +اس سیکشن کے پہلے حصے میں، ہم **ٹیکسٹ کی درجہ بندی** کے کام پر توجہ مرکوز کریں گے۔ ہم [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) ڈیٹاسیٹ استعمال کریں گے، جس میں خبروں کے مضامین درج ذیل کی طرح شامل ہیں: + +* زمرہ: سائنس/ٹیکنالوجی +* عنوان: Ky. کمپنی کو پیپٹائڈز کے مطالعے کے لیے گرانٹ ملی (AP) +* متن: AP - لوئس ول یونیورسٹی کے ایک کیمسٹری محقق کی قائم کردہ کمپنی کو ترقی کے لیے گرانٹ ملی... + +ہمارا مقصد یہ ہوگا کہ متن کی بنیاد پر خبر کو ایک زمرے میں درجہ بند کریں۔ + +## ٹیکسٹ کی نمائندگی + +اگر ہم نیورل نیٹ ورکس کے ساتھ نیچرل لینگویج پروسیسنگ (NLP) کے کام حل کرنا چاہتے ہیں، تو ہمیں ٹیکسٹ کو ٹینسرز کے طور پر پیش کرنے کا کوئی طریقہ درکار ہوگا۔ کمپیوٹر پہلے ہی ٹیکسٹ کے حروف کو نمبروں کے طور پر پیش کرتے ہیں، جو آپ کی اسکرین پر فونٹس کے ساتھ میپ کیے جاتے ہیں، جیسے ASCII یا UTF-8 انکوڈنگز کے ذریعے۔ + +تصویر جو ایک حرف کو ASCII اور بائنری نمائندگی کے ساتھ میپ کرنے کا خاکہ دکھا رہی ہے + +> [تصویر کا ماخذ](https://www.seobility.net/en/wiki/ASCII) + +انسانوں کے طور پر، ہم سمجھتے ہیں کہ ہر حرف **کیا ظاہر کرتا ہے**، اور تمام حروف مل کر جملے کے الفاظ کیسے بناتے ہیں۔ تاہم، کمپیوٹرز خود سے ایسی سمجھ نہیں رکھتے، اور نیورل نیٹ ورک کو تربیت کے دوران اس معنی کو سیکھنا پڑتا ہے۔ + +لہٰذا، ہم ٹیکسٹ کی نمائندگی کے لیے مختلف طریقے استعمال کر سکتے ہیں: + +* **کریکٹر لیول کی نمائندگی**، جس میں ہم ٹیکسٹ کو اس طرح پیش کرتے ہیں کہ ہر حرف کو ایک نمبر کے طور پر لیا جاتا ہے۔ اگر ہمارے ٹیکسٹ کارپس میں *C* مختلف حروف ہوں، تو لفظ *Hello* کو 5x*C* ٹینسر کے طور پر پیش کیا جائے گا۔ ہر حرف ون-ہاٹ انکوڈنگ میں ایک ٹینسر کالم کے مطابق ہوگا۔ +* **ورڈ لیول کی نمائندگی**، جس میں ہم اپنے ٹیکسٹ کے تمام الفاظ کا ایک **لغت** بناتے ہیں، اور پھر الفاظ کو ون-ہاٹ انکوڈنگ کے ذریعے پیش کرتے ہیں۔ یہ طریقہ کسی حد تک بہتر ہے، کیونکہ ہر حرف بذات خود زیادہ معنی نہیں رکھتا، اور اس طرح اعلیٰ سطحی معنوی تصورات - الفاظ - کا استعمال کرکے ہم نیورل نیٹ ورک کے لیے کام کو آسان بناتے ہیں۔ تاہم، بڑے لغت کے سائز کی وجہ سے، ہمیں ہائی ڈائمینشنل اسپارس ٹینسرز سے نمٹنا پڑتا ہے۔ + +چاہے کوئی بھی نمائندگی ہو، ہمیں پہلے ٹیکسٹ کو **ٹوکینز** کی ترتیب میں تبدیل کرنا ہوگا، جہاں ایک ٹوکین ایک حرف، ایک لفظ، یا کبھی کبھی ایک لفظ کا حصہ بھی ہو سکتا ہے۔ پھر، ہم ٹوکین کو ایک نمبر میں تبدیل کرتے ہیں، عام طور پر **لغت** کا استعمال کرتے ہوئے، اور یہ نمبر ون-ہاٹ انکوڈنگ کے ذریعے نیورل نیٹ ورک میں فیڈ کیا جا سکتا ہے۔ + +## این-گرامز + +قدرتی زبان میں، الفاظ کے درست معنی صرف سیاق و سباق میں ہی طے کیے جا سکتے ہیں۔ مثال کے طور پر، *neural network* اور *fishing network* کے معنی مکمل طور پر مختلف ہیں۔ اس بات کو مدنظر رکھنے کے لیے ایک طریقہ یہ ہے کہ ہم اپنے ماڈل کو الفاظ کے جوڑوں پر بنائیں، اور لفظی جوڑوں کو الگ لغتی ٹوکینز کے طور پر سمجھیں۔ اس طرح، جملہ *I like to go fishing* درج ذیل ٹوکینز کی ترتیب میں پیش کیا جائے گا: *I like*, *like to*, *to go*, *go fishing*۔ اس طریقے کا مسئلہ یہ ہے کہ لغت کا سائز نمایاں طور پر بڑھ جاتا ہے، اور *go fishing* اور *go shopping* جیسی ترکیبیں مختلف ٹوکینز کے ذریعے پیش کی جاتی ہیں، جو کسی بھی معنوی مشابہت کو شیئر نہیں کرتیں، حالانکہ فعل ایک جیسا ہے۔ + +کچھ صورتوں میں، ہم تین الفاظ کے جوڑ -- یعنی ٹرائی-گرامز -- کا استعمال بھی کر سکتے ہیں۔ اس لیے اس طریقے کو عام طور پر **این-گرامز** کہا جاتا ہے۔ یہ بھی سمجھ میں آتا ہے کہ این-گرامز کو کریکٹر لیول کی نمائندگی کے ساتھ استعمال کیا جائے، جس صورت میں این-گرامز مختلف سلیبلز کے تقریباً مساوی ہوں گے۔ + +## بیگ آف ورڈز اور TF/IDF + +جب ہم ٹیکسٹ کی درجہ بندی جیسے کام حل کرتے ہیں، تو ہمیں ٹیکسٹ کو ایک مقررہ سائز کے ویکٹر کے ذریعے پیش کرنے کے قابل ہونا چاہیے، جسے ہم حتمی ڈینس کلاسیفائر کے ان پٹ کے طور پر استعمال کریں گے۔ اس کا ایک آسان طریقہ یہ ہے کہ تمام انفرادی لفظی نمائندگیوں کو یکجا کریں، مثلاً انہیں جمع کرکے۔ اگر ہم ہر لفظ کی ون-ہاٹ انکوڈنگز کو جمع کریں، تو ہمیں فریکوئنسیز کا ایک ویکٹر ملے گا، جو یہ ظاہر کرے گا کہ ہر لفظ متن میں کتنی بار ظاہر ہوتا ہے۔ ٹیکسٹ کی اس قسم کی نمائندگی کو **بیگ آف ورڈز** (BoW) کہا جاتا ہے۔ + + + +> تصویر مصنف کی جانب سے + +BoW بنیادی طور پر یہ ظاہر کرتا ہے کہ کون سے الفاظ متن میں ظاہر ہوتے ہیں اور کس مقدار میں، جو واقعی یہ ظاہر کرنے کے لیے ایک اچھا اشارہ ہو سکتا ہے کہ متن کس بارے میں ہے۔ مثال کے طور پر، سیاست پر مبنی خبر کے مضمون میں ممکنہ طور پر *president* اور *country* جیسے الفاظ شامل ہوں گے، جبکہ سائنسی اشاعت میں *collider*، *discovered* وغیرہ جیسے الفاظ ہوں گے۔ اس طرح، لفظی فریکوئنسیز کئی صورتوں میں متن کے مواد کا ایک اچھا اشارہ ہو سکتی ہیں۔ + +BoW کا مسئلہ یہ ہے کہ کچھ عام الفاظ، جیسے *and*، *is* وغیرہ، زیادہ تر متون میں ظاہر ہوتے ہیں، اور ان کی فریکوئنسی سب سے زیادہ ہوتی ہے، جو واقعی اہم الفاظ کو چھپا دیتی ہے۔ ہم ان الفاظ کی اہمیت کو کم کر سکتے ہیں، اس بات کو مدنظر رکھتے ہوئے کہ الفاظ پوری دستاویز کے مجموعے میں کتنی بار ظاہر ہوتے ہیں۔ یہ TF/IDF طریقے کے پیچھے بنیادی خیال ہے، جسے اس سبق سے منسلک نوٹ بکس میں مزید تفصیل سے کور کیا گیا ہے۔ + +تاہم، ان میں سے کوئی بھی طریقہ ٹیکسٹ کے **معنی** کو مکمل طور پر مدنظر نہیں رکھ سکتا۔ ہمیں اس کے لیے مزید طاقتور نیورل نیٹ ورک ماڈلز کی ضرورت ہے، جن پر ہم اس سیکشن میں بعد میں بات کریں گے۔ + +## ✍️ مشقیں: ٹیکسٹ کی نمائندگی + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [PyTorch کے ساتھ ٹیکسٹ کی نمائندگی](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow کے ساتھ ٹیکسٹ کی نمائندگی](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## نتیجہ + +اب تک، ہم نے وہ تکنیکیں سیکھیں جو مختلف الفاظ کو فریکوئنسی وزن دے سکتی ہیں۔ تاہم، یہ معنی یا ترتیب کو پیش کرنے سے قاصر ہیں۔ جیسا کہ مشہور لسانیات دان جے آر فرث نے 1935 میں کہا تھا، "کسی لفظ کا مکمل مطلب ہمیشہ سیاق و سباق میں ہوتا ہے، اور سیاق و سباق کے بغیر معنی کا کوئی مطالعہ سنجیدگی سے نہیں لیا جا سکتا۔" ہم اس کورس میں بعد میں سیکھیں گے کہ زبان کی ماڈلنگ کا استعمال کرتے ہوئے متن سے سیاق و سباق کی معلومات کو کیسے حاصل کیا جائے۔ + +## 🚀 چیلنج + +بیگ آف ورڈز اور مختلف ڈیٹا ماڈلز کا استعمال کرتے ہوئے کچھ دیگر مشقیں آزمائیں۔ آپ اس [کگل مقابلے](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) سے متاثر ہو سکتے ہیں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## جائزہ اور خود مطالعہ + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) پر ٹیکسٹ ایمبیڈنگز اور بیگ آف ورڈز تکنیکوں کے ساتھ اپنی مہارتوں کو مشق کریں۔ + +## [اسائنمنٹ: نوٹ بکس](assignment.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/13-TextRep/assignment.md b/translations/ur/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..4cacdedc --- /dev/null +++ b/translations/ur/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# اسائنمنٹ: نوٹ بکس + +اس سبق سے منسلک نوٹ بکس (چاہے وہ PyTorch ہو یا TensorFlow ورژن)، اپنے ڈیٹا سیٹ کے ساتھ دوبارہ چلائیں، شاید کوئی ایسا ڈیٹا سیٹ جو Kaggle سے لیا گیا ہو اور جس کا حوالہ دیا گیا ہو۔ نوٹ بک کو دوبارہ لکھیں تاکہ آپ کی اپنی دریافتوں کو اجاگر کیا جا سکے۔ کچھ منفرد ڈیٹا سیٹس آزمائیں جو حیران کن ثابت ہو سکتے ہیں، جیسے [یہ ایک UFO مشاہدات کے بارے میں](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) جو NUFORC سے ہے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/14-Embeddings/README.md b/translations/ur/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..5db70c0f --- /dev/null +++ b/translations/ur/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# ایمبیڈنگز + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +جب ہم BoW یا TF/IDF پر مبنی کلاسیفائرز کو ٹرین کر رہے تھے، تو ہم `vocab_size` کی لمبائی والے ہائی ڈائمینشنل بیگ آف ورڈز ویکٹرز پر کام کر رہے تھے، اور ہم کم ڈائمینشنل پوزیشنل ریپریزنٹیشن ویکٹرز کو واضح طور پر اسپارس ون-ہاٹ ریپریزنٹیشن میں تبدیل کر رہے تھے۔ تاہم، یہ ون-ہاٹ ریپریزنٹیشن میموری کے لحاظ سے مؤثر نہیں ہے۔ اس کے علاوہ، ہر لفظ کو دوسرے الفاظ سے آزاد سمجھا جاتا ہے، یعنی ون-ہاٹ انکوڈڈ ویکٹرز الفاظ کے درمیان کسی بھی معنوی مشابہت کو ظاہر نہیں کرتے۔ + +**ایمبیڈنگ** کا خیال یہ ہے کہ الفاظ کو کم ڈائمینشنل ڈینس ویکٹرز کے ذریعے ظاہر کیا جائے، جو کسی نہ کسی طرح ایک لفظ کے معنوی مطلب کو ظاہر کرتے ہیں۔ ہم بعد میں یہ سیکھیں گے کہ بامعنی ورڈ ایمبیڈنگز کیسے بنائی جائیں، لیکن فی الحال ایمبیڈنگز کو ایک طریقہ سمجھیں جو لفظ کے ویکٹر کی ڈائمینشن کو کم کرتا ہے۔ + +ایمبیڈنگ لیئر ایک لفظ کو ان پٹ کے طور پر لے گی، اور ایک مخصوص `embedding_size` کے آؤٹ پٹ ویکٹر کو پیدا کرے گی۔ ایک لحاظ سے، یہ `Linear` لیئر سے بہت مشابہ ہے، لیکن ون-ہاٹ انکوڈڈ ویکٹر لینے کے بجائے، یہ ایک لفظ کے نمبر کو ان پٹ کے طور پر لے سکے گی، جس سے بڑے ون-ہاٹ انکوڈڈ ویکٹرز بنانے سے بچا جا سکے گا۔ + +ایمبیڈنگ لیئر کو ہمارے کلاسیفائر نیٹ ورک کی پہلی لیئر کے طور پر استعمال کرکے، ہم بیگ آف ورڈز ماڈل سے **ایمبیڈنگ بیگ** ماڈل میں تبدیل ہو سکتے ہیں، جہاں ہم پہلے اپنے متن کے ہر لفظ کو متعلقہ ایمبیڈنگ میں تبدیل کرتے ہیں، اور پھر ان تمام ایمبیڈنگز پر کوئی مجموعی فنکشن جیسے `sum`، `average` یا `max` کا حساب لگاتے ہیں۔ + +![پانچ سیکوئنس الفاظ کے لیے ایک ایمبیڈنگ کلاسیفائر کی تصویر۔](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ur.png) + +> تصویر مصنف کی جانب سے + +## ✍️ مشقیں: ایمبیڈنگز + +مندرجہ ذیل نوٹ بکس میں اپنی تعلیم جاری رکھیں: +* [PyTorch کے ساتھ ایمبیڈنگز](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow کے ساتھ ایمبیڈنگز](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## معنوی ایمبیڈنگز: Word2Vec + +اگرچہ ایمبیڈنگ لیئر نے الفاظ کو ویکٹر ریپریزنٹیشن میں میپ کرنا سیکھا، لیکن یہ ریپریزنٹیشن ضروری نہیں کہ زیادہ معنوی ہو۔ یہ بہتر ہوگا کہ ہم ایک ایسا ویکٹر ریپریزنٹیشن سیکھیں جس میں مشابہ الفاظ یا مترادفات ایسے ویکٹرز کے مطابق ہوں جو کسی ویکٹر فاصلے (مثلاً یُوکلِیڈین فاصلے) کے لحاظ سے ایک دوسرے کے قریب ہوں۔ + +اس کے لیے، ہمیں اپنے ایمبیڈنگ ماڈل کو ایک بڑے ٹیکسٹ کلیکشن پر ایک خاص طریقے سے پہلے سے ٹرین کرنے کی ضرورت ہے۔ معنوی ایمبیڈنگز کو ٹرین کرنے کا ایک طریقہ [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) کہلاتا ہے۔ یہ دو اہم آرکیٹیکچرز پر مبنی ہے جو الفاظ کی تقسیم شدہ ریپریزنٹیشن پیدا کرنے کے لیے استعمال ہوتے ہیں: + +- **کنٹینیوس بیگ آف ورڈز** (CBoW) — اس آرکیٹیکچر میں، ہم ماڈل کو ارد گرد کے سیاق و سباق سے ایک لفظ کی پیش گوئی کرنے کے لیے ٹرین کرتے ہیں۔ دیے گئے ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$، ماڈل کا مقصد $(W_{-2},W_{-1},W_1,W_2)$ سے $W_0$ کی پیش گوئی کرنا ہے۔ +- **کنٹینیوس اسکیپ-گرام** CBoW کے برعکس ہے۔ ماڈل سیاق و سباق کے ارد گرد کے الفاظ کی ونڈو کا استعمال موجودہ لفظ کی پیش گوئی کے لیے کرتا ہے۔ + +CBoW تیز ہے، جبکہ اسکیپ-گرام سست ہے، لیکن کم استعمال ہونے والے الفاظ کی بہتر نمائندگی کرتا ہے۔ + +![CBoW اور اسکیپ-گرام الگورتھمز کی تصویر جو الفاظ کو ویکٹرز میں تبدیل کرتے ہیں۔](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ur.png) + +> تصویر [اس مقالے](https://arxiv.org/pdf/1301.3781.pdf) سے + +Word2Vec کے پہلے سے ٹرین کیے گئے ایمبیڈنگز (اور دیگر مشابہ ماڈلز جیسے GloVe) کو نیورل نیٹ ورکس میں ایمبیڈنگ لیئر کی جگہ بھی استعمال کیا جا سکتا ہے۔ تاہم، ہمیں وکیبلری کے مسائل سے نمٹنا ہوگا، کیونکہ Word2Vec/GloVe کو پہلے سے ٹرین کرنے کے لیے استعمال ہونے والی وکیبلری ممکنہ طور پر ہمارے ٹیکسٹ کارپس کی وکیبلری سے مختلف ہوگی۔ اس مسئلے کو حل کرنے کے لیے اوپر دیے گئے نوٹ بکس کو دیکھیں۔ + +## سیاقی ایمبیڈنگز + +روایتی پہلے سے ٹرین کیے گئے ایمبیڈنگ ریپریزنٹیشنز جیسے Word2Vec کی ایک اہم حد الفاظ کے معنی کی وضاحت کا مسئلہ ہے۔ اگرچہ پہلے سے ٹرین کیے گئے ایمبیڈنگز سیاق و سباق میں الفاظ کے کچھ معنی کو پکڑ سکتے ہیں، لیکن ایک لفظ کے ہر ممکنہ معنی کو ایک ہی ایمبیڈنگ میں انکوڈ کیا جاتا ہے۔ یہ ڈاؤن اسٹریم ماڈلز میں مسائل پیدا کر سکتا ہے، کیونکہ بہت سے الفاظ جیسے 'play' کے مختلف معنی ہوتے ہیں جو ان کے استعمال کے سیاق و سباق پر منحصر ہوتے ہیں۔ + +مثال کے طور پر، لفظ 'play' ان دو مختلف جملوں میں کافی مختلف معنی رکھتا ہے: + +- میں تھیٹر میں ایک **play** دیکھنے گیا۔ +- جان اپنے دوستوں کے ساتھ **play** کرنا چاہتا ہے۔ + +اوپر دیے گئے پہلے سے ٹرین کیے گئے ایمبیڈنگز لفظ 'play' کے ان دونوں معنوں کو ایک ہی ایمبیڈنگ میں ظاہر کرتے ہیں۔ اس حد پر قابو پانے کے لیے، ہمیں **لینگویج ماڈل** پر مبنی ایمبیڈنگز بنانی ہوں گی، جو ایک بڑے ٹیکسٹ کارپس پر ٹرین کیا گیا ہو، اور *جانتا ہو* کہ الفاظ کو مختلف سیاق و سباق میں کیسے ترتیب دیا جا سکتا ہے۔ سیاقی ایمبیڈنگز پر بات کرنا اس ٹیوٹوریل کے دائرہ کار سے باہر ہے، لیکن ہم ان پر بعد میں کورس میں بات کریں گے جب لینگویج ماڈلز پر بات ہوگی۔ + +## نتیجہ + +اس سبق میں، آپ نے سیکھا کہ TensorFlow اور PyTorch میں ایمبیڈنگ لیئرز کو کیسے بنایا اور استعمال کیا جائے تاکہ الفاظ کے معنوی مطلب کو بہتر طور پر ظاہر کیا جا سکے۔ + +## 🚀 چیلنج + +Word2Vec کو کچھ دلچسپ ایپلیکیشنز کے لیے استعمال کیا گیا ہے، بشمول گانے کے بول اور شاعری بنانا۔ [اس مضمون](https://www.politetype.com/blog/word2vec-color-poems) کو دیکھیں جو یہ بتاتا ہے کہ مصنف نے Word2Vec کو شاعری بنانے کے لیے کیسے استعمال کیا۔ [ڈین شِفمین کی یہ ویڈیو](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) بھی دیکھیں تاکہ اس تکنیک کی ایک مختلف وضاحت دریافت کی جا سکے۔ پھر ان تکنیکوں کو اپنے ٹیکسٹ کارپس پر لاگو کرنے کی کوشش کریں، شاید Kaggle سے حاصل کردہ۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## جائزہ اور خود مطالعہ + +Word2Vec پر اس مقالے کو پڑھیں: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [اسائنمنٹ: نوٹ بکس](assignment.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ur/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..03cc4dcf --- /dev/null +++ b/translations/ur/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# اسائنمنٹ: نوٹ بکس + +اس سبق سے منسلک نوٹ بکس (چاہے وہ PyTorch ہو یا TensorFlow ورژن)، انہیں اپنے ڈیٹا سیٹ کے ساتھ دوبارہ چلائیں، شاید کوئی ایسا ڈیٹا سیٹ جو Kaggle سے لیا گیا ہو اور جس کا حوالہ دیا گیا ہو۔ نوٹ بک کو دوبارہ لکھیں تاکہ آپ کی اپنی دریافتوں کو اجاگر کیا جا سکے۔ کسی مختلف قسم کے ڈیٹا سیٹ کو آزمائیں اور اپنی دریافتوں کو دستاویزی شکل دیں، جیسے کہ [یہ Beatles کے گانے کے بول](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics)۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ur/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..4101274f --- /dev/null +++ b/translations/ur/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# زبان ماڈلنگ + +سمینٹک ایمبیڈنگز، جیسے Word2Vec اور GloVe، دراصل **زبان ماڈلنگ** کی طرف پہلا قدم ہیں - ایسے ماڈلز بنانا جو کسی طرح زبان کی *فطرت کو سمجھیں* (یا *پیش کریں*)۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +زبان ماڈلنگ کے پیچھے بنیادی خیال یہ ہے کہ انہیں بغیر لیبل والے ڈیٹا سیٹس پر غیر نگرانی شدہ طریقے سے تربیت دی جائے۔ یہ اس لیے اہم ہے کیونکہ ہمارے پاس بغیر لیبل والے متن کی بڑی مقدار دستیاب ہے، جبکہ لیبل والے متن کی مقدار ہمیشہ محدود ہوگی کیونکہ لیبلنگ پر خرچ ہونے والی محنت محدود ہوتی ہے۔ اکثر اوقات، ہم ایسے زبان ماڈلز بنا سکتے ہیں جو **غائب الفاظ کی پیش گوئی** کر سکیں، کیونکہ متن میں کسی بے ترتیب لفظ کو ماسک کرنا اور اسے تربیتی نمونے کے طور پر استعمال کرنا آسان ہے۔ + +## ایمبیڈنگز کی تربیت + +پچھلی مثالوں میں، ہم نے پہلے سے تربیت یافتہ سمینٹک ایمبیڈنگز استعمال کیں، لیکن یہ دیکھنا دلچسپ ہے کہ ان ایمبیڈنگز کو کیسے تربیت دی جا سکتی ہے۔ کئی ممکنہ خیالات ہیں جو استعمال کیے جا سکتے ہیں: + +* **N-Gram** زبان ماڈلنگ، جہاں ہم N پچھلے ٹوکنز کو دیکھ کر ایک ٹوکن کی پیش گوئی کرتے ہیں (N-gram) +* **Continuous Bag-of-Words** (CBoW)، جہاں ہم ٹوکن سیکوئنس $W_{-N}$, ..., $W_N$ میں درمیانی ٹوکن $W_0$ کی پیش گوئی کرتے ہیں۔ +* **Skip-gram**، جہاں ہم درمیانی ٹوکن $W_0$ سے پڑوسی ٹوکنز {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} کی پیش گوئی کرتے ہیں۔ + +![الفاظ کو ویکٹرز میں تبدیل کرنے کے لیے الگورتھمز پر مبنی تصویر](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ur.png) + +> تصویر [اس مقالے](https://arxiv.org/pdf/1301.3781.pdf) سے لی گئی ہے + +## ✍️ مثال نوٹ بکس: CBoW ماڈل کی تربیت + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [TensorFlow کے ساتھ CBoW Word2Vec کی تربیت](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch کے ساتھ CBoW Word2Vec کی تربیت](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## نتیجہ + +پچھلے سبق میں ہم نے دیکھا کہ الفاظ کی ایمبیڈنگز جادو کی طرح کام کرتی ہیں! اب ہم جانتے ہیں کہ الفاظ کی ایمبیڈنگز کی تربیت کوئی بہت پیچیدہ کام نہیں ہے، اور اگر ضرورت ہو تو ہم اپنے مخصوص شعبے کے متن کے لیے اپنی ایمبیڈنگز تربیت دے سکتے ہیں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## جائزہ اور خود مطالعہ + +* [زبان ماڈلنگ پر PyTorch کا آفیشل ٹیوٹوریل](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)۔ +* [Word2Vec ماڈل کی تربیت پر TensorFlow کا آفیشل ٹیوٹوریل](https://www.TensorFlow.org/tutorials/text/word2vec)۔ +* **gensim** فریم ورک کا استعمال کرتے ہوئے چند لائنز کوڈ میں سب سے زیادہ استعمال ہونے والی ایمبیڈنگز کی تربیت [اس دستاویز میں بیان کی گئی ہے](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)۔ + +## 🚀 [اسائنمنٹ: Skip-Gram ماڈل کی تربیت کریں](lab/README.md) + +لیب میں، ہم آپ کو اس سبق کے کوڈ میں ترمیم کرنے کا چیلنج دیتے ہیں تاکہ CBoW کی بجائے Skip-Gram ماڈل تربیت دی جا سکے۔ [تفصیلات پڑھیں](lab/README.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ur/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..ed5f6462 --- /dev/null +++ b/translations/ur/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# اسکیپ-گرام ماڈل کی تربیت + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +اس لیب میں، ہم آپ کو چیلنج دیتے ہیں کہ آپ اسکیپ-گرام تکنیک کا استعمال کرتے ہوئے Word2Vec ماڈل کی تربیت کریں۔ ایک نیٹ ورک کو تربیت دیں جس میں ایمبیڈنگ ہو تاکہ $N$-ٹوکنز چوڑے اسکیپ-گرام ونڈو میں قریبی الفاظ کی پیش گوئی کی جا سکے۔ آپ [اس سبق کے کوڈ](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) کو استعمال کر سکتے ہیں اور اسے تھوڑا سا تبدیل کر سکتے ہیں۔ + +## ڈیٹا سیٹ + +آپ کسی بھی کتاب کا استعمال کر سکتے ہیں۔ آپ کو [پروجیکٹ گٹنبرگ](https://www.gutenberg.org/) پر بہت سے مفت متن مل سکتے ہیں، مثال کے طور پر، یہاں [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) از لیوس کیرول کا براہ راست لنک ہے۔ یا، آپ شیکسپیئر کے ڈرامے استعمال کر سکتے ہیں، جنہیں آپ درج ذیل کوڈ کے ذریعے حاصل کر سکتے ہیں: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## دریافت کریں! + +اگر آپ کے پاس وقت ہے اور آپ موضوع میں مزید گہرائی میں جانا چاہتے ہیں، تو درج ذیل چیزوں کو دریافت کرنے کی کوشش کریں: + +* ایمبیڈنگ سائز نتائج پر کیسے اثر انداز ہوتا ہے؟ +* مختلف متن کے انداز نتائج پر کیسے اثر ڈالتے ہیں؟ +* بہت مختلف قسم کے الفاظ اور ان کے مترادفات لیں، ان کے ویکٹر نمائندگی حاصل کریں، PCA کا استعمال کرتے ہوئے جہتوں کو 2 تک کم کریں، اور انہیں 2D اسپیس میں پلاٹ کریں۔ کیا آپ کو کوئی پیٹرن نظر آتا ہے؟ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/16-RNN/README.md b/translations/ur/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..a2d23b0c --- /dev/null +++ b/translations/ur/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# ری کرنٹ نیورل نیٹ ورکس + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +پچھلے حصوں میں، ہم نے متن کی بھرپور معنوی نمائندگیوں اور ایمبیڈنگز کے اوپر ایک سادہ لکیری کلاسیفائر کا استعمال کیا۔ یہ آرکیٹیکچر جملے میں الفاظ کے مجموعی معنی کو پکڑتا ہے، لیکن یہ الفاظ کی **ترتیب** کو مدنظر نہیں رکھتا، کیونکہ ایمبیڈنگز پر کی گئی ایگریگیشن آپریشن نے اصل متن سے یہ معلومات ہٹا دی ہے۔ چونکہ یہ ماڈلز الفاظ کی ترتیب کو ماڈل کرنے سے قاصر ہیں، یہ زیادہ پیچیدہ یا مبہم کاموں جیسے کہ متن کی تخلیق یا سوالات کے جوابات دینے کو حل نہیں کر سکتے۔ + +متن کی ترتیب کے معنی کو سمجھنے کے لیے، ہمیں ایک اور نیورل نیٹ ورک آرکیٹیکچر استعمال کرنے کی ضرورت ہے، جسے **ری کرنٹ نیورل نیٹ ورک** یا RNN کہا جاتا ہے۔ RNN میں، ہم اپنے جملے کو نیٹ ورک کے ذریعے ایک وقت میں ایک علامت کے ذریعے گزارتے ہیں، اور نیٹ ورک کچھ **حالت** پیدا کرتا ہے، جسے ہم اگلی علامت کے ساتھ دوبارہ نیٹ ورک میں بھیجتے ہیں۔ + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ur.png) + +> تصویر مصنف کی جانب سے + +دیے گئے ان پٹ سیکوئنس X0,...,Xn، RNN نیورل نیٹ ورک بلاکس کا ایک سلسلہ بناتا ہے، اور اس سلسلے کو اینڈ ٹو اینڈ بیک پروپیگیشن کے ذریعے تربیت دیتا ہے۔ ہر نیٹ ورک بلاک ایک جوڑی (Xi,Si) کو ان پٹ کے طور پر لیتا ہے، اور نتیجے میں Si+1 پیدا کرتا ہے۔ آخری حالت Sn یا (آؤٹ پٹ Yn) کو نتیجہ پیدا کرنے کے لیے ایک لکیری کلاسیفائر میں بھیجا جاتا ہے۔ تمام نیٹ ورک بلاکس ایک جیسے وزن کا اشتراک کرتے ہیں، اور ایک بیک پروپیگیشن پاس کے ذریعے اینڈ ٹو اینڈ تربیت دی جاتی ہے۔ + +چونکہ حالت ویکٹرز S0,...,Sn نیٹ ورک کے ذریعے منتقل کیے جاتے ہیں، یہ الفاظ کے درمیان ترتیب وار انحصار سیکھنے کے قابل ہوتا ہے۔ مثال کے طور پر، جب لفظ *not* سیکوئنس میں کہیں ظاہر ہوتا ہے، تو یہ حالت ویکٹر کے کچھ عناصر کو منفی کرنے کے لیے سیکھ سکتا ہے، جس کے نتیجے میں نفی ہوتی ہے۔ + +> ✅ چونکہ اوپر دی گئی تصویر میں تمام RNN بلاکس کے وزن مشترک ہیں، اسی تصویر کو ایک بلاک (دائیں طرف) کے طور پر ظاہر کیا جا سکتا ہے جس میں ایک ری کرنٹ فیڈ بیک لوپ ہوتا ہے، جو نیٹ ورک کی آؤٹ پٹ حالت کو ان پٹ میں واپس بھیجتا ہے۔ + +## RNN سیل کی ساخت + +آئیے دیکھتے ہیں کہ ایک سادہ RNN سیل کیسے منظم ہوتا ہے۔ یہ پچھلی حالت Si-1 اور موجودہ علامت Xi کو ان پٹ کے طور پر قبول کرتا ہے، اور آؤٹ پٹ حالت Si پیدا کرنی ہوتی ہے (اور، بعض اوقات، ہم کسی اور آؤٹ پٹ Yi میں بھی دلچسپی رکھتے ہیں، جیسا کہ جنریٹو نیٹ ورکس کے معاملے میں ہوتا ہے)۔ + +ایک سادہ RNN سیل کے اندر دو وزن میٹرکس ہوتے ہیں: ایک ان پٹ علامت کو تبدیل کرتا ہے (اسے W کہتے ہیں)، اور دوسرا ان پٹ حالت کو تبدیل کرتا ہے (H)۔ اس صورت میں نیٹ ورک کا آؤٹ پٹ اس طرح حساب کیا جاتا ہے: σ(W×Xi+H×Si-1+b)، جہاں σ ایک ایکٹیویشن فنکشن ہے اور b اضافی بایاس ہے۔ + +RNN سیل کی ساخت + +> تصویر مصنف کی جانب سے + +زیادہ تر معاملات میں، ان پٹ ٹوکنز کو RNN میں داخل ہونے سے پہلے ایمبیڈنگ لیئر کے ذریعے گزارا جاتا ہے تاکہ جہت کو کم کیا جا سکے۔ اس صورت میں، اگر ان پٹ ویکٹرز کا ڈائمینشن *emb_size* ہے، اور حالت ویکٹر *hid_size* ہے - تو W کا سائز *emb_size*×*hid_size* ہوگا، اور H کا سائز *hid_size*×*hid_size* ہوگا۔ + +## لانگ شارٹ ٹرم میموری (LSTM) + +کلاسیکل RNNs کے اہم مسائل میں سے ایک **وینشنگ گریڈینٹس** کا مسئلہ ہے۔ چونکہ RNNs کو ایک بیک پروپیگیشن پاس میں اینڈ ٹو اینڈ تربیت دی جاتی ہے، یہ نیٹ ورک کی ابتدائی تہوں تک ایرر کو پھیلانے میں دشواری کا سامنا کرتا ہے، اور اس طرح نیٹ ورک دور دراز ٹوکنز کے درمیان تعلقات سیکھنے سے قاصر ہوتا ہے۔ اس مسئلے سے بچنے کے طریقوں میں سے ایک **واضح حالت مینجمنٹ** کو متعارف کرانا ہے، جسے **گیٹس** کے ذریعے کیا جاتا ہے۔ اس قسم کی دو مشہور آرکیٹیکچرز ہیں: **لانگ شارٹ ٹرم میموری** (LSTM) اور **گیٹڈ ریلے یونٹ** (GRU)۔ + +![لانگ شارٹ ٹرم میموری سیل کی مثال](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> تصویر کا ماخذ TBD + +LSTM نیٹ ورک RNN کی طرح منظم ہوتا ہے، لیکن یہاں دو حالتیں ہیں جو ایک تہہ سے دوسری تہہ تک منتقل ہوتی ہیں: اصل حالت C، اور چھپی ہوئی ویکٹر H۔ ہر یونٹ پر، چھپی ہوئی ویکٹر Hi کو ان پٹ Xi کے ساتھ جوڑا جاتا ہے، اور وہ **گیٹس** کے ذریعے حالت C کے ساتھ کیا ہوتا ہے اسے کنٹرول کرتے ہیں۔ ہر گیٹ ایک نیورل نیٹ ورک ہوتا ہے جس میں سگموئڈ ایکٹیویشن (آؤٹ پٹ [0,1] کی حد میں) ہوتا ہے، جسے حالت ویکٹر کے ساتھ ضرب دینے پر بٹ وائز ماسک کے طور پر سمجھا جا سکتا ہے۔ درج ذیل گیٹس ہیں (اوپر دی گئی تصویر میں بائیں سے دائیں): + +* **فرگیٹ گیٹ** چھپی ہوئی ویکٹر لیتا ہے اور طے کرتا ہے کہ ویکٹر C کے کون سے اجزاء کو بھولنا ہے، اور کون سے گزرنے دینا ہے۔ +* **ان پٹ گیٹ** ان پٹ اور چھپی ہوئی ویکٹرز سے کچھ معلومات لیتا ہے اور اسے حالت میں داخل کرتا ہے۔ +* **آؤٹ پٹ گیٹ** حالت کو *tanh* ایکٹیویشن کے ساتھ ایک لکیری تہہ کے ذریعے تبدیل کرتا ہے، پھر اس کے کچھ اجزاء کو چھپی ہوئی ویکٹر Hi کا استعمال کرتے ہوئے منتخب کرتا ہے تاکہ نئی حالت Ci+1 پیدا کرے۔ + +حالت C کے اجزاء کو کچھ جھنڈوں کے طور پر سمجھا جا سکتا ہے جنہیں آن اور آف کیا جا سکتا ہے۔ مثال کے طور پر، جب ہم سیکوئنس میں ایک نام *Alice* کا سامنا کرتے ہیں، تو ہم یہ فرض کرنا چاہتے ہیں کہ یہ ایک خاتون کردار کی طرف اشارہ کرتا ہے، اور حالت میں جھنڈا بلند کرتے ہیں کہ جملے میں ایک خاتون اسم موجود ہے۔ جب ہم مزید جملے *and Tom* کا سامنا کرتے ہیں، تو ہم جھنڈا بلند کرتے ہیں کہ ہمارے پاس جمع اسم ہے۔ اس طرح حالت کو جوڑ کر ہم جملے کے حصوں کی گرامر خصوصیات کا سراغ رکھ سکتے ہیں۔ + +> ✅ LSTM کے اندرونی کام کو سمجھنے کے لیے ایک بہترین وسیلہ یہ شاندار مضمون ہے [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) کرسٹوفر اولاہ کی جانب سے۔ + +## بائی ڈائریکشنل اور ملٹی لیئر RNNs + +ہم نے ری کرنٹ نیٹ ورکس پر بات کی جو ایک سمت میں کام کرتے ہیں، سیکوئنس کے آغاز سے آخر تک۔ یہ قدرتی لگتا ہے، کیونکہ یہ اس طرح سے مشابہت رکھتا ہے جس طرح ہم پڑھتے ہیں اور تقریر سنتے ہیں۔ تاہم، چونکہ بہت سے عملی معاملات میں ہمارے پاس ان پٹ سیکوئنس تک رینڈم رسائی ہوتی ہے، یہ دونوں سمتوں میں ری کرنٹ کمپیوٹیشن چلانے کے لیے معنی خیز ہو سکتا ہے۔ ایسے نیٹ ورکس کو **بائی ڈائریکشنل** RNNs کہا جاتا ہے۔ بائی ڈائریکشنل نیٹ ورک کے ساتھ کام کرتے وقت، ہمیں دو چھپی ہوئی حالت ویکٹرز کی ضرورت ہوگی، ہر سمت کے لیے ایک۔ + +ایک ری کرنٹ نیٹ ورک، چاہے وہ ایک سمت میں ہو یا بائی ڈائریکشنل، سیکوئنس کے اندر کچھ پیٹرنز کو پکڑتا ہے، اور انہیں حالت ویکٹر میں ذخیرہ کر سکتا ہے یا آؤٹ پٹ میں منتقل کر سکتا ہے۔ جیسا کہ کنوولوشنل نیٹ ورکس کے ساتھ، ہم پہلے والے پر ایک اور ری کرنٹ تہہ بنا سکتے ہیں تاکہ اعلیٰ سطح کے پیٹرنز کو پکڑ سکیں اور پہلے والے کے ذریعے نکالے گئے کم سطح کے پیٹرنز سے تعمیر کر سکیں۔ یہ ہمیں **ملٹی لیئر RNN** کے تصور کی طرف لے جاتا ہے، جو دو یا زیادہ ری کرنٹ نیٹ ورکس پر مشتمل ہوتا ہے، جہاں پچھلی تہہ کا آؤٹ پٹ اگلی تہہ میں ان پٹ کے طور پر منتقل ہوتا ہے۔ + +![ملٹی لیئر لانگ شارٹ ٹرم میموری RNN کی تصویر](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ur.jpg) + +*تصویر [اس شاندار پوسٹ](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) سے فرنینڈو لوپیز کی جانب سے* + +## ✍️ مشقیں: ایمبیڈنگز + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [PyTorch کے ساتھ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow کے ساتھ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## نتیجہ + +اس یونٹ میں، ہم نے دیکھا کہ RNNs کو سیکوئنس کلاسیفکیشن کے لیے استعمال کیا جا سکتا ہے، لیکن حقیقت میں، وہ بہت سے دوسرے کاموں کو بھی سنبھال سکتے ہیں، جیسے کہ متن کی تخلیق، مشین ترجمہ، اور مزید۔ ہم ان کاموں پر اگلے یونٹ میں غور کریں گے۔ + +## 🚀 چیلنج + +LSTMs کے بارے میں کچھ لٹریچر پڑھیں اور ان کے اطلاقات پر غور کریں: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## جائزہ اور خود مطالعہ + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) کرسٹوفر اولاہ کی جانب سے۔ + +## [اسائنمنٹ: نوٹ بکس](assignment.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/16-RNN/assignment.md b/translations/ur/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..1530367a --- /dev/null +++ b/translations/ur/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# اسائنمنٹ: نوٹ بکس + +اس سبق سے منسلک نوٹ بکس (چاہے PyTorch یا TensorFlow ورژن ہو) کا استعمال کرتے ہوئے، انہیں اپنے ڈیٹا سیٹ کے ساتھ دوبارہ چلائیں، شاید کوئی ایسا ڈیٹا سیٹ جو Kaggle سے لیا گیا ہو اور جس کا حوالہ دیا گیا ہو۔ نوٹ بک کو دوبارہ لکھیں تاکہ آپ کی اپنی دریافتوں کو اجاگر کیا جا سکے۔ کسی مختلف قسم کے ڈیٹا سیٹ کو آزمائیں اور اپنی دریافتوں کو دستاویزی شکل دیں، جیسے کہ [یہ Kaggle مقابلے کا ڈیٹا سیٹ جو موسم کے ٹویٹس کے بارے میں ہے](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ur/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..691aab04 --- /dev/null +++ b/translations/ur/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# جنریٹیو نیٹ ورکس + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +ریکرنٹ نیورل نیٹ ورکس (RNNs) اور ان کے گیٹڈ سیل ویریئنٹس جیسے کہ لانگ شارٹ ٹرم میموری سیلز (LSTMs) اور گیٹڈ ریکرنٹ یونٹس (GRUs) زبان کی ماڈلنگ کے لیے ایک طریقہ فراہم کرتے ہیں، کیونکہ یہ الفاظ کی ترتیب سیکھ سکتے ہیں اور کسی سیکوئنس میں اگلے لفظ کی پیش گوئی کر سکتے ہیں۔ اس سے ہمیں RNNs کو **جنریٹیو ٹاسکس** کے لیے استعمال کرنے کی اجازت ملتی ہے، جیسے کہ عام ٹیکسٹ جنریشن، مشین ٹرانسلیشن، اور یہاں تک کہ امیج کیپشننگ۔ + +> ✅ ان تمام مواقع کے بارے میں سوچیں جب آپ نے جنریٹیو ٹاسکس جیسے کہ ٹیکسٹ کمپلیشن سے فائدہ اٹھایا ہو۔ اپنی پسندیدہ ایپلیکیشنز پر تحقیق کریں تاکہ معلوم ہو سکے کہ آیا انہوں نے RNNs کا استعمال کیا۔ + +پچھلے یونٹ میں زیر بحث RNN آرکیٹیکچر میں، ہر RNN یونٹ نے اگلی چھپی ہوئی حالت کو آؤٹ پٹ کے طور پر پیدا کیا۔ تاہم، ہم ہر ریکرنٹ یونٹ میں ایک اور آؤٹ پٹ بھی شامل کر سکتے ہیں، جو ہمیں ایک **سیکوئنس** آؤٹ پٹ کرنے کی اجازت دے گا (جو اصل سیکوئنس کے برابر لمبائی کا ہوگا)۔ مزید برآں، ہم ایسے RNN یونٹس استعمال کر سکتے ہیں جو ہر مرحلے پر ان پٹ قبول نہیں کرتے، بلکہ صرف ایک ابتدائی اسٹیٹ ویکٹر لیتے ہیں، اور پھر آؤٹ پٹس کا ایک سیکوئنس پیدا کرتے ہیں۔ + +یہ مختلف نیورل آرکیٹیکچرز کی اجازت دیتا ہے، جیسا کہ نیچے دی گئی تصویر میں دکھایا گیا ہے: + +![ریکرنٹ نیورل نیٹ ورکس کے عام پیٹرنز کی تصویر۔](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ur.jpg) + +> تصویر بلاگ پوسٹ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) از [Andrej Karpaty](http://karpathy.github.io/) سے لی گئی ہے۔ + +* **ون ٹو ون** ایک روایتی نیورل نیٹ ورک ہے جس میں ایک ان پٹ اور ایک آؤٹ پٹ ہوتا ہے۔ +* **ون ٹو مینی** ایک جنریٹیو آرکیٹیکچر ہے جو ایک ان پٹ ویلیو قبول کرتا ہے اور آؤٹ پٹ ویلیوز کا ایک سیکوئنس پیدا کرتا ہے۔ مثال کے طور پر، اگر ہم ایک **امیج کیپشننگ** نیٹ ورک کو ٹرین کرنا چاہتے ہیں جو کسی تصویر کی ٹیکسچوئل وضاحت پیدا کرے، تو ہم تصویر کو ان پٹ کے طور پر لے سکتے ہیں، اسے CNN کے ذریعے چھپی ہوئی حالت حاصل کرنے کے لیے پاس کر سکتے ہیں، اور پھر ایک ریکرنٹ چین کیپشن کو لفظ بہ لفظ جنریٹ کرے۔ +* **مینی ٹو ون** ان RNN آرکیٹیکچرز سے مطابقت رکھتا ہے جنہیں ہم نے پچھلے یونٹ میں بیان کیا، جیسے کہ ٹیکسٹ کلاسیفکیشن۔ +* **مینی ٹو مینی** یا **سیکوئنس ٹو سیکوئنس** ان ٹاسکس سے مطابقت رکھتا ہے جیسے کہ **مشین ٹرانسلیشن**، جہاں پہلا RNN ان پٹ سیکوئنس سے تمام معلومات کو چھپی ہوئی حالت میں جمع کرتا ہے، اور دوسرا RNN چین اس حالت کو آؤٹ پٹ سیکوئنس میں ان رول کرتا ہے۔ + +اس یونٹ میں، ہم سادہ جنریٹیو ماڈلز پر توجہ مرکوز کریں گے جو ہمیں ٹیکسٹ جنریٹ کرنے میں مدد دیتے ہیں۔ سادگی کے لیے، ہم کریکٹر لیول ٹوکنائزیشن استعمال کریں گے۔ + +ہم اس RNN کو ٹیکسٹ کو قدم بہ قدم جنریٹ کرنے کے لیے ٹرین کریں گے۔ ہر قدم پر، ہم `nchars` کی لمبائی کے کریکٹرز کا ایک سیکوئنس لیں گے، اور نیٹ ورک سے کہیں گے کہ وہ ہر ان پٹ کریکٹر کے لیے اگلا آؤٹ پٹ کریکٹر جنریٹ کرے: + +![تصویر جس میں 'HELLO' لفظ کے RNN جنریشن کی مثال دکھائی گئی ہے۔](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ur.png) + +جب ٹیکسٹ جنریٹ کیا جا رہا ہو (انفرنس کے دوران)، ہم کسی **پرومپٹ** سے شروع کرتے ہیں، جسے RNN سیلز کے ذریعے اس کی انٹرمیڈیٹ اسٹیٹ جنریٹ کرنے کے لیے پاس کیا جاتا ہے، اور پھر اس اسٹیٹ سے جنریشن شروع ہوتی ہے۔ ہم ایک وقت میں ایک کریکٹر جنریٹ کرتے ہیں، اور اسٹیٹ اور جنریٹ کیے گئے کریکٹر کو اگلے کریکٹر کو جنریٹ کرنے کے لیے دوسرے RNN سیل میں پاس کرتے ہیں، جب تک کہ ہم کافی کریکٹرز جنریٹ نہ کر لیں۔ + + + +> تصویر مصنف کی جانب سے + +## ✍️ مشقیں: جنریٹیو نیٹ ورکس + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [PyTorch کے ساتھ جنریٹیو نیٹ ورکس](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow کے ساتھ جنریٹیو نیٹ ورکس](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## نرم ٹیکسٹ جنریشن اور ٹمپریچر + +ہر RNN سیل کا آؤٹ پٹ کریکٹرز کی ایک پروبیبلٹی ڈسٹریبیوشن ہوتا ہے۔ اگر ہم ہمیشہ سب سے زیادہ پروبیبلٹی والے کریکٹر کو اگلے کریکٹر کے طور پر منتخب کریں، تو جنریٹ کیا گیا ٹیکسٹ اکثر ایک ہی کریکٹر سیکوئنسز کے درمیان "چکر" میں پھنس سکتا ہے، جیسا کہ اس مثال میں: + +``` +today of the second the company and a second the company ... +``` + +تاہم، اگر ہم اگلے کریکٹر کے لیے پروبیبلٹی ڈسٹریبیوشن کو دیکھیں، تو یہ ہو سکتا ہے کہ چند سب سے زیادہ پروبیبلٹیز کے درمیان فرق زیادہ نہ ہو، مثلاً ایک کریکٹر کی پروبیبلٹی 0.2 ہو، اور دوسرے کی 0.19۔ مثال کے طور پر، جب '*play*' سیکوئنس میں اگلے کریکٹر کی تلاش ہو، تو اگلا کریکٹر اسپیس یا **e** (جیسا کہ لفظ *player* میں) دونوں ہو سکتے ہیں۔ + +یہ ہمیں اس نتیجے پر لے جاتا ہے کہ ہمیشہ سب سے زیادہ پروبیبلٹی والے کریکٹر کو منتخب کرنا "منصفانہ" نہیں ہوتا، کیونکہ دوسرے سب سے زیادہ پروبیبلٹی والے کریکٹر کو منتخب کرنا بھی معنی خیز ٹیکسٹ کی طرف لے جا سکتا ہے۔ زیادہ دانشمندی یہ ہے کہ نیٹ ورک آؤٹ پٹ کی دی گئی پروبیبلٹی ڈسٹریبیوشن سے کریکٹرز کو **سیمپل** کیا جائے۔ ہم ایک پیرامیٹر، **ٹمپریچر**، بھی استعمال کر سکتے ہیں، جو پروبیبلٹی ڈسٹریبیوشن کو ہموار کر دے گا، اگر ہم زیادہ رینڈمنیس شامل کرنا چاہیں، یا اسے زیادہ کھڑا کر دے گا، اگر ہم سب سے زیادہ پروبیبلٹی والے کریکٹرز پر زیادہ زور دینا چاہیں۔ + +اوپر دی گئی نوٹ بکس میں دیکھیں کہ یہ نرم ٹیکسٹ جنریشن کیسے نافذ کی گئی ہے۔ + +## نتیجہ + +اگرچہ ٹیکسٹ جنریشن بذات خود مفید ہو سکتی ہے، لیکن بڑے فوائد اس وقت حاصل ہوتے ہیں جب ہم RNNs کا استعمال کرتے ہوئے کسی ابتدائی فیچر ویکٹر سے ٹیکسٹ جنریٹ کرتے ہیں۔ مثال کے طور پر، ٹیکسٹ جنریشن مشین ٹرانسلیشن (سیکوئنس ٹو سیکوئنس، اس صورت میں اسٹیٹ ویکٹر *اینکوڈر* سے لیا جاتا ہے تاکہ ترجمہ شدہ پیغام کو *ڈیکوڈ* کیا جا سکے) یا کسی تصویر کی ٹیکسچوئل وضاحت جنریٹ کرنے کے لیے استعمال ہوتی ہے (جس صورت میں فیچر ویکٹر CNN ایکسٹریکٹر سے آتا ہے)۔ + +## 🚀 چیلنج + +Microsoft Learn پر اس موضوع پر کچھ اسباق لیں: + +* [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) کے ساتھ ٹیکسٹ جنریشن + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## جائزہ اور خود مطالعہ + +اپنے علم کو بڑھانے کے لیے یہاں کچھ مضامین ہیں: + +* مارکوف چین، LSTM اور GPT-2 کے ساتھ ٹیکسٹ جنریشن کے مختلف طریقے: [بلاگ پوسٹ](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras دستاویزات](https://keras.io/examples/generative/lstm_character_level_text_generation/) میں ٹیکسٹ جنریشن کی مثال + +## [اسائنمنٹ](lab/README.md) + +ہم نے دیکھا کہ کریکٹر بہ کریکٹر ٹیکسٹ کیسے جنریٹ کیا جاتا ہے۔ لیب میں، آپ ورڈ لیول ٹیکسٹ جنریشن کو دریافت کریں گے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ur/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..8e42e053 --- /dev/null +++ b/translations/ur/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# آر این اینز کا استعمال کرتے ہوئے لفظی سطح پر متن کی تخلیق + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +اس لیب میں، آپ کو کسی بھی کتاب کو لینا ہے اور اسے ایک ڈیٹاسیٹ کے طور پر استعمال کرتے ہوئے لفظی سطح پر متن تخلیق کرنے والا ماڈل ٹرین کرنا ہے۔ + +## ڈیٹاسیٹ + +آپ کسی بھی کتاب کا انتخاب کر سکتے ہیں۔ آپ کو بہت سی مفت کتابیں [Project Gutenberg](https://www.gutenberg.org/) پر مل سکتی ہیں، مثال کے طور پر، یہاں ایک براہ راست لنک ہے [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) از لیوس کیرول۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/18-Transformers/README.md b/translations/ur/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..149f74fb --- /dev/null +++ b/translations/ur/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# توجہ کے طریقہ کار اور ٹرانسفارمرز + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP کے شعبے میں سب سے اہم مسائل میں سے ایک **مشین ترجمہ** ہے، جو کہ ایک بنیادی کام ہے جو گوگل ٹرانسلیٹ جیسے ٹولز کے پیچھے کام کرتا ہے۔ اس سیکشن میں، ہم مشین ترجمہ پر توجہ مرکوز کریں گے، یا عمومی طور پر، کسی بھی *سیکوئنس-ٹو-سیکوئنس* کام پر (جسے **جملے کی تبدیلی** بھی کہا جاتا ہے)۔ + +RNNs کے ساتھ، سیکوئنس-ٹو-سیکوئنس دو ری کرنٹ نیٹ ورکس کے ذریعے نافذ کیا جاتا ہے، جہاں ایک نیٹ ورک، **انکوڈر**، ان پٹ سیکوئنس کو ایک چھپی ہوئی حالت میں تبدیل کرتا ہے، جبکہ دوسرا نیٹ ورک، **ڈیکوڈر**، اس چھپی ہوئی حالت کو ترجمہ شدہ نتیجے میں تبدیل کرتا ہے۔ اس طریقے کے ساتھ کچھ مسائل ہیں: + +* انکوڈر نیٹ ورک کی آخری حالت جملے کے آغاز کو یاد رکھنے میں مشکل محسوس کرتی ہے، جس کی وجہ سے لمبے جملوں کے لیے ماڈل کی کوالٹی خراب ہو جاتی ہے۔ +* سیکوئنس کے تمام الفاظ کا نتیجے پر ایک جیسا اثر ہوتا ہے۔ حقیقت میں، تاہم، ان پٹ سیکوئنس کے مخصوص الفاظ اکثر دوسرے الفاظ کے مقابلے میں زیادہ اثر رکھتے ہیں۔ + +**توجہ کے طریقہ کار** RNN کے ہر آؤٹ پٹ پیش گوئی پر ہر ان پٹ ویکٹر کے سیاق و سباق کے اثر کو وزن دینے کا ایک ذریعہ فراہم کرتے ہیں۔ اس کو نافذ کرنے کا طریقہ یہ ہے کہ ان پٹ RNN کی درمیانی حالتوں اور آؤٹ پٹ RNN کے درمیان شارٹ کٹس بنائے جائیں۔ اس طرح، جب آؤٹ پٹ علامت yt پیدا کی جاتی ہے، تو ہم تمام ان پٹ چھپی ہوئی حالتوں hi کو مختلف وزن کے کوفی شینٹس αt,i کے ساتھ مدنظر رکھیں گے۔ + +![انکوڈر/ڈیکوڈر ماڈل کی تصویر جس میں اضافی توجہ کی تہہ شامل ہے](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ur.png) + +> انکوڈر-ڈیکوڈر ماڈل اضافی توجہ کے طریقہ کار کے ساتھ [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)، [اس بلاگ پوسٹ](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) سے لیا گیا۔ + +توجہ میٹرکس {αi,j} اس حد کو ظاہر کرے گا کہ ان پٹ سیکوئنس کے مخصوص الفاظ آؤٹ پٹ سیکوئنس میں دیے گئے لفظ کی تخلیق میں کیا کردار ادا کرتے ہیں۔ نیچے ایک مثال دی گئی ہے: + +![تصویر جس میں RNNsearch-50 کے ذریعے پایا گیا نمونہ الائنمنٹ دکھایا گیا ہے، Bahdanau - arviz.org سے لیا گیا](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ur.png) + +> تصویر [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) سے۔ + +توجہ کے طریقہ کار NLP میں موجودہ یا قریب موجودہ جدید ترین حالت کے لیے ذمہ دار ہیں۔ تاہم، توجہ شامل کرنے سے ماڈل کے پیرامیٹرز کی تعداد میں بہت زیادہ اضافہ ہوتا ہے، جس کی وجہ سے RNNs کے ساتھ اسکیلنگ کے مسائل پیدا ہوتے ہیں۔ RNNs کو اسکیل کرنے کی ایک اہم رکاوٹ یہ ہے کہ ماڈلز کی ری کرنٹ نوعیت تربیت کو بیچ اور متوازی بنانے میں مشکل پیدا کرتی ہے۔ RNN میں سیکوئنس کے ہر عنصر کو ترتیب وار پروسیس کرنا ضروری ہوتا ہے، جس کا مطلب ہے کہ اسے آسانی سے متوازی نہیں بنایا جا سکتا۔ + +![توجہ کے ساتھ انکوڈر ڈیکوڈر](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> تصویر [گوگل کے بلاگ](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) سے۔ + +توجہ کے طریقہ کار کو اپنانے اور اس رکاوٹ کے امتزاج نے آج کے جدید ترین ٹرانسفارمر ماڈلز کی تخلیق کی راہ ہموار کی، جیسے BERT اور Open-GPT3۔ + +## ٹرانسفارمر ماڈلز + +ٹرانسفارمرز کے پیچھے ایک اہم خیال یہ ہے کہ RNNs کی ترتیب وار نوعیت سے بچا جائے اور ایک ایسا ماڈل بنایا جائے جو تربیت کے دوران متوازی ہو سکے۔ یہ دو خیالات کو نافذ کر کے حاصل کیا جاتا ہے: + +* پوزیشنل انکوڈنگ +* RNNs (یا CNNs) کے بجائے پیٹرنز کو پکڑنے کے لیے سیلف-اٹینشن میکانزم کا استعمال (اسی لیے وہ مقالہ جس نے ٹرانسفارمرز کو متعارف کرایا اسے *[توجہ ہی سب کچھ ہے](https://arxiv.org/abs/1706.03762)* کہا جاتا ہے) + +### پوزیشنل انکوڈنگ/ایمبیڈنگ + +پوزیشنل انکوڈنگ کا خیال درج ذیل ہے: +1. RNNs کا استعمال کرتے وقت، ٹوکنز کی نسبتی پوزیشن قدموں کی تعداد سے ظاہر ہوتی ہے، اور اس لیے اسے واضح طور پر ظاہر کرنے کی ضرورت نہیں ہوتی۔ +2. تاہم، جب ہم توجہ پر سوئچ کرتے ہیں، تو ہمیں سیکوئنس کے اندر ٹوکنز کی نسبتی پوزیشنز معلوم ہونی چاہئیں۔ +3. پوزیشنل انکوڈنگ حاصل کرنے کے لیے، ہم اپنے ٹوکنز کے سیکوئنس کو سیکوئنس میں ٹوکن پوزیشنز کے سیکوئنس کے ساتھ بڑھاتے ہیں (یعنی، 0,1, ... کی تعداد کا ایک سیکوئنس)۔ +4. پھر ہم ٹوکن پوزیشن کو ٹوکن ایمبیڈنگ ویکٹر کے ساتھ مکس کرتے ہیں۔ پوزیشن (عدد) کو ویکٹر میں تبدیل کرنے کے لیے، ہم مختلف طریقے استعمال کر سکتے ہیں: + +* ٹرین ایبل ایمبیڈنگ، ٹوکن ایمبیڈنگ کی طرح۔ یہ وہ طریقہ ہے جس پر ہم یہاں غور کرتے ہیں۔ ہم ٹوکنز اور ان کی پوزیشنز دونوں پر ایمبیڈنگ لیئرز لگاتے ہیں، جس کے نتیجے میں ایک ہی ڈائمینشنز کے ایمبیڈنگ ویکٹرز بنتے ہیں، جنہیں ہم پھر ایک ساتھ شامل کرتے ہیں۔ +* فکسڈ پوزیشن انکوڈنگ فنکشن، جیسا کہ اصل مقالے میں تجویز کیا گیا ہے۔ + + + +> تصویر مصنف کی طرف سے۔ + +پوزیشنل ایمبیڈنگ کے ساتھ جو نتیجہ ہمیں ملتا ہے وہ اصل ٹوکن اور اس کی پوزیشن کو سیکوئنس کے اندر ایمبیڈ کرتا ہے۔ + +### ملٹی-ہیڈ سیلف-اٹینشن + +اگلا، ہمیں اپنے سیکوئنس کے اندر کچھ پیٹرنز کو پکڑنے کی ضرورت ہے۔ ایسا کرنے کے لیے، ٹرانسفارمرز **سیلف-اٹینشن** میکانزم استعمال کرتے ہیں، جو بنیادی طور پر وہی توجہ ہے جو ان پٹ اور آؤٹ پٹ کے طور پر ایک ہی سیکوئنس پر لاگو ہوتی ہے۔ سیلف-اٹینشن کو لاگو کرنے سے ہمیں جملے کے اندر **سیاق و سباق** کو مدنظر رکھنے کی اجازت ملتی ہے، اور یہ دیکھنے کی اجازت ملتی ہے کہ کون سے الفاظ آپس میں جڑے ہوئے ہیں۔ مثال کے طور پر، یہ ہمیں یہ دیکھنے کی اجازت دیتا ہے کہ کون سے الفاظ *یہ* جیسے کورفرنسز کے ذریعے حوالہ دیے گئے ہیں، اور سیاق و سباق کو بھی مدنظر رکھتا ہے: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ur.png) + +> تصویر [گوگل بلاگ](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) سے۔ + +ٹرانسفارمرز میں، ہم **ملٹی-ہیڈ اٹینشن** استعمال کرتے ہیں تاکہ نیٹ ورک کو مختلف قسم کے انحصار کو پکڑنے کی طاقت دی جا سکے، جیسے طویل مدتی بمقابلہ مختصر مدتی الفاظ کے تعلقات، کورفرنس بمقابلہ کچھ اور، وغیرہ۔ + +[TensorFlow نوٹ بک](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) ٹرانسفارمر لیئرز کے نفاذ پر مزید تفصیلات فراہم کرتی ہے۔ + +### انکوڈر-ڈیکوڈر اٹینشن + +ٹرانسفارمرز میں، توجہ دو جگہوں پر استعمال ہوتی ہے: + +* ان پٹ متن کے اندر پیٹرنز کو پکڑنے کے لیے سیلف-اٹینشن کا استعمال۔ +* سیکوئنس ترجمہ کرنے کے لیے - یہ انکوڈر اور ڈیکوڈر کے درمیان توجہ کی تہہ ہے۔ + +انکوڈر-ڈیکوڈر اٹینشن RNNs میں استعمال ہونے والے توجہ کے طریقہ کار سے بہت مشابہت رکھتا ہے، جیسا کہ اس سیکشن کے آغاز میں بیان کیا گیا ہے۔ یہ متحرک خاکہ انکوڈر-ڈیکوڈر اٹینشن کے کردار کی وضاحت کرتا ہے۔ + +![متحرک GIF دکھا رہا ہے کہ ٹرانسفارمر ماڈلز میں تشخیصات کیسے کی جاتی ہیں۔](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +چونکہ ہر ان پٹ پوزیشن کو آزادانہ طور پر ہر آؤٹ پٹ پوزیشن پر نقشہ بنایا جاتا ہے، ٹرانسفارمرز RNNs کے مقابلے میں بہتر متوازی بنانے کی صلاحیت رکھتے ہیں، جو کہ بہت بڑے اور زیادہ اظہار کرنے والے زبان کے ماڈلز کو قابل بناتا ہے۔ ہر اٹینشن ہیڈ کو الفاظ کے درمیان مختلف تعلقات سیکھنے کے لیے استعمال کیا جا سکتا ہے، جو نیچرل لینگویج پروسیسنگ کے کاموں کو بہتر بناتا ہے۔ + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) ایک بہت بڑا ملٹی لیئر ٹرانسفارمر نیٹ ورک ہے جس میں *BERT-base* کے لیے 12 لیئرز، اور *BERT-large* کے لیے 24 لیئرز ہیں۔ ماڈل کو پہلے ایک بڑے متن کے ڈیٹا کارپس (ویکیپیڈیا + کتابیں) پر غیر نگرانی شدہ تربیت (جملے میں ماسک کیے گئے الفاظ کی پیش گوئی) کا استعمال کرتے ہوئے پری ٹرین کیا جاتا ہے۔ پری ٹریننگ کے دوران ماڈل زبان کی سمجھ کے اہم سطحوں کو جذب کرتا ہے، جنہیں پھر دیگر ڈیٹا سیٹس کے ساتھ فائن ٹیوننگ کے ذریعے استعمال کیا جا سکتا ہے۔ اس عمل کو **ٹرانسفر لرننگ** کہا جاتا ہے۔ + +![تصویر http://jalammar.github.io/illustrated-bert/ سے](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ur.png) + +> تصویر [ماخذ](http://jalammar.github.io/illustrated-bert/) + +## ✍️ مشقیں: ٹرانسفارمرز + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [PyTorch میں ٹرانسفارمرز](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow میں ٹرانسفارمرز](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## نتیجہ + +اس سبق میں آپ نے ٹرانسفارمرز اور توجہ کے طریقہ کار کے بارے میں سیکھا، جو NLP کے ٹول باکس میں ضروری آلات ہیں۔ ٹرانسفارمر آرکیٹیکچرز کی بہت سی مختلف حالتیں ہیں، جن میں BERT، DistilBERT، BigBird، OpenGPT3 اور مزید شامل ہیں، جنہیں فائن ٹیون کیا جا سکتا ہے۔ [HuggingFace پیکیج](https://github.com/huggingface/) PyTorch اور TensorFlow دونوں کے ساتھ ان آرکیٹیکچرز کو تربیت دینے کے لیے ایک ریپوزٹری فراہم کرتا ہے۔ + +## 🚀 چیلنج + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## جائزہ اور خود مطالعہ + +* [بلاگ پوسٹ](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/)، جو کلاسیکل [توجہ ہی سب کچھ ہے](https://arxiv.org/abs/1706.03762) مقالے پر وضاحت کرتی ہے۔ +* [بلاگ پوسٹس کی ایک سیریز](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) ٹرانسفارمرز پر، جو آرکیٹیکچر کو تفصیل سے بیان کرتی ہے۔ + +## [اسائنمنٹ](assignment.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/18-Transformers/assignment.md b/translations/ur/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..d4a580a3 --- /dev/null +++ b/translations/ur/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# اسائنمنٹ: ٹرانسفارمرز + +HuggingFace پر ٹرانسفارمرز کے ساتھ تجربہ کریں! ان کے فراہم کردہ اسکرپٹس کو آزمائیں تاکہ ان کی ویب سائٹ پر دستیاب مختلف ماڈلز کے ساتھ کام کیا جا سکے: https://huggingface.co/docs/transformers/run_scripts۔ ان کے ڈیٹاسیٹس میں سے ایک آزمائیں، پھر اس نصاب یا Kaggle سے اپنا ڈیٹاسیٹ درآمد کریں اور دیکھیں کہ کیا آپ دلچسپ متن تیار کر سکتے ہیں۔ اپنی دریافتوں کے ساتھ ایک نوٹ بک تیار کریں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/19-NER/README.md b/translations/ur/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..a433279d --- /dev/null +++ b/translations/ur/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# نامڈ اینٹٹی ریکگنیشن + +اب تک، ہم نے زیادہ تر ایک NLP ٹاسک - کلاسیفیکیشن پر توجہ مرکوز کی ہے۔ تاہم، نیورل نیٹ ورکس کے ذریعے دیگر NLP ٹاسکس بھی مکمل کیے جا سکتے ہیں۔ ان میں سے ایک ٹاسک **[نامڈ اینٹٹی ریکگنیشن](https://wikipedia.org/wiki/Named-entity_recognition)** (NER) ہے، جو متن میں مخصوص اینٹٹیز جیسے جگہیں، افراد کے نام، تاریخ و وقت کے وقفے، کیمیائی فارمولے وغیرہ کو پہچاننے سے متعلق ہے۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER استعمال کرنے کی مثال + +فرض کریں کہ آپ ایک نیچرل لینگویج چیٹ بوٹ تیار کرنا چاہتے ہیں، جیسے کہ ایمیزون الیکسا یا گوگل اسسٹنٹ۔ ذہین چیٹ بوٹس اس طرح کام کرتے ہیں کہ وہ صارف کی خواہش کو *سمجھتے* ہیں، جو ان پٹ جملے پر ٹیکسٹ کلاسیفیکیشن کے ذریعے ہوتا ہے۔ اس کلاسیفیکیشن کا نتیجہ **انٹینٹ** کہلاتا ہے، جو یہ طے کرتا ہے کہ چیٹ بوٹ کو کیا کرنا چاہیے۔ + +Bot NER + +> تصویر مصنف کی جانب سے + +تاہم، صارف جملے کے حصے کے طور پر کچھ پیرامیٹرز فراہم کر سکتا ہے۔ مثال کے طور پر، موسم کے بارے میں پوچھتے وقت، وہ مقام یا تاریخ کی وضاحت کر سکتا ہے۔ بوٹ کو ان اینٹٹیز کو سمجھنے کے قابل ہونا چاہیے اور عمل کرنے سے پہلے پیرامیٹر سلاٹس کو مناسب طریقے سے بھرنا چاہیے۔ یہی وہ جگہ ہے جہاں NER کام آتا ہے۔ + +> ✅ ایک اور مثال [سائنسی طبی مقالوں کا تجزیہ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) ہو سکتی ہے۔ ہمیں خاص طبی اصطلاحات جیسے بیماریوں اور طبی مادوں کو تلاش کرنا ہوتا ہے۔ جبکہ چند بیماریوں کو شاید سبسٹرنگ سرچ کے ذریعے نکالا جا سکتا ہے، زیادہ پیچیدہ اینٹٹیز جیسے کیمیائی مرکبات اور دوائیوں کے نام کے لیے زیادہ پیچیدہ طریقہ کار کی ضرورت ہوتی ہے۔ + +## NER بطور ٹوکن کلاسیفیکیشن + +NER ماڈلز بنیادی طور پر **ٹوکن کلاسیفیکیشن ماڈلز** ہوتے ہیں، کیونکہ ہمیں ہر ان پٹ ٹوکن کے لیے فیصلہ کرنا ہوتا ہے کہ آیا وہ کسی اینٹٹی سے تعلق رکھتا ہے یا نہیں، اور اگر تعلق رکھتا ہے تو کس اینٹٹی کلاس سے۔ + +ذیل میں دیے گئے مقالے کے عنوان پر غور کریں: + +**Tricuspid valve regurgitation** اور **lithium carbonate** **toxicity** ایک نوزائیدہ بچے میں۔ + +یہاں اینٹٹیز ہیں: + +* Tricuspid valve regurgitation ایک بیماری ہے (`DIS`) +* Lithium carbonate ایک کیمیائی مادہ ہے (`CHEM`) +* Toxicity بھی ایک بیماری ہے (`DIS`) + +نوٹ کریں کہ ایک اینٹٹی کئی ٹوکنز پر مشتمل ہو سکتی ہے۔ اور، جیسا کہ اس مثال میں، ہمیں دو مسلسل اینٹٹیز کے درمیان فرق کرنا ہوتا ہے۔ لہذا، ہر اینٹٹی کے لیے دو کلاسز استعمال کرنا عام ہے - ایک جو اینٹٹی کے پہلے ٹوکن کی وضاحت کرتی ہے (اکثر `B-` پری فکس استعمال ہوتا ہے، جو **ب**یگننگ کے لیے ہے)، اور دوسری - اینٹٹی کے تسلسل کی وضاحت کرتی ہے (`I-`, جو **ا**ندرونی ٹوکن کے لیے ہے)۔ ہم `O` کو ایک کلاس کے طور پر استعمال کرتے ہیں تاکہ تمام **دوسرے** ٹوکنز کو ظاہر کیا جا سکے۔ اس طرح کے ٹوکن ٹیگنگ کو [BIO ٹیگنگ](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (یا IOB) کہا جاتا ہے۔ جب ٹیگ کیا جائے، تو ہمارا عنوان اس طرح نظر آئے گا: + +ٹوکن | ٹیگ +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O + +چونکہ ہمیں ٹوکنز اور کلاسز کے درمیان ایک سے ایک مطابقت پیدا کرنی ہوتی ہے، ہم اس تصویر سے ایک دائیں طرف **کئی سے کئی** نیورل نیٹ ورک ماڈل بنا سکتے ہیں: + +![عام ری کرنٹ نیورل نیٹ ورک پیٹرنز دکھانے والی تصویر۔](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ur.jpg) + +> *تصویر [اس بلاگ پوسٹ](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) سے لی گئی ہے، جو [Andrej Karpathy](http://karpathy.github.io/) کی جانب سے ہے۔ NER ٹوکن کلاسیفیکیشن ماڈلز اس تصویر میں دائیں طرف کے نیٹ ورک آرکیٹیکچر سے مطابقت رکھتے ہیں۔* + +## NER ماڈلز کی تربیت + +چونکہ NER ماڈل بنیادی طور پر ایک ٹوکن کلاسیفیکیشن ماڈل ہے، ہم اس ٹاسک کے لیے وہی RNNs استعمال کر سکتے ہیں جن سے ہم پہلے ہی واقف ہیں۔ اس صورت میں، ری کرنٹ نیٹ ورک کا ہر بلاک ٹوکن ID واپس کرے گا۔ درج ذیل مثال نوٹ بک دکھاتی ہے کہ ٹوکن کلاسیفیکیشن کے لیے LSTM کو کیسے تربیت دی جائے۔ + +## ✍️ مثال نوٹ بکس: NER + +اپنی تعلیم کو درج ذیل نوٹ بک میں جاری رکھیں: + +* [NER کے ساتھ TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## نتیجہ + +NER ماڈل ایک **ٹوکن کلاسیفیکیشن ماڈل** ہے، جس کا مطلب ہے کہ اسے ٹوکن کلاسیفیکیشن انجام دینے کے لیے استعمال کیا جا سکتا ہے۔ یہ NLP میں ایک بہت عام ٹاسک ہے، جو متن میں مخصوص اینٹٹیز جیسے جگہیں، نام، تاریخیں وغیرہ کو پہچاننے میں مدد کرتا ہے۔ + +## 🚀 چیلنج + +ذیل میں دیے گئے اسائنمنٹ کو مکمل کریں تاکہ طبی اصطلاحات کے لیے ایک نامڈ اینٹٹی ریکگنیشن ماڈل تربیت دیں، پھر اسے ایک مختلف ڈیٹا سیٹ پر آزمائیں۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## جائزہ اور خود مطالعہ + +بلاگ [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) کو پڑھیں اور اس مضمون کے مزید مطالعہ کے سیکشن کے ساتھ چلیں تاکہ اپنی معلومات کو گہرا کریں۔ + +## [اسائنمنٹ](lab/README.md) + +اس سبق کے اسائنمنٹ میں، آپ کو ایک طبی اینٹٹی ریکگنیشن ماڈل تربیت دینا ہوگا۔ آپ اس سبق میں بیان کردہ LSTM ماڈل کی تربیت سے شروع کر سکتے ہیں، اور پھر BERT ٹرانسفارمر ماڈل استعمال کر سکتے ہیں۔ تمام تفصیلات حاصل کرنے کے لیے [ہدایات](lab/README.md) پڑھیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/19-NER/lab/README.md b/translations/ur/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..5162ca48 --- /dev/null +++ b/translations/ur/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# این ای آر + +[اے آئی فار بیگنرز کریکولم](https://github.com/microsoft/ai-for-beginners) سے لیب اسائنمنٹ۔ + +## کام + +اس لیب میں، آپ کو طبی اصطلاحات کے لیے نییمڈ اینٹیٹی ریکگنیشن ماڈل کو تربیت دینا ہے۔ + +## ڈیٹا سیٹ + +این ای آر ماڈل کو تربیت دینے کے لیے، ہمیں طبی اینٹیٹیز کے ساتھ مناسب طور پر لیبل شدہ ڈیٹا سیٹ کی ضرورت ہے۔ [بی سی 5 سی ڈی آر ڈیٹا سیٹ](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) میں 1500 سے زیادہ پیپرز سے لیبل شدہ بیماریوں اور کیمیکل اینٹیٹیز شامل ہیں۔ آپ ان کی ویب سائٹ پر رجسٹریشن کے بعد ڈیٹا سیٹ ڈاؤن لوڈ کر سکتے ہیں۔ + +بی سی 5 سی ڈی آر ڈیٹا سیٹ کچھ اس طرح نظر آتا ہے: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +اس ڈیٹا سیٹ میں، پہلے دو لائنوں میں پیپر کا عنوان اور خلاصہ ہوتا ہے، اور اس کے بعد انفرادی اینٹیٹیز ہوتی ہیں، جن کے آغاز اور اختتام کی پوزیشنز عنوان+خلاصہ بلاک کے اندر دی گئی ہوتی ہیں۔ اینٹیٹی کی قسم کے علاوہ، آپ کو اس اینٹیٹی کا اونٹولوجی آئی ڈی بھی ملتا ہے جو کسی طبی اونٹولوجی کے اندر موجود ہوتا ہے۔ + +آپ کو اس ڈیٹا کو بائیو انکوڈنگ میں تبدیل کرنے کے لیے کچھ پائتھون کوڈ لکھنا ہوگا۔ + +## نیٹ ورک + +این ای آر کے لیے پہلا تجربہ ایل ایس ٹی ایم نیٹ ورک کے ذریعے کیا جا سکتا ہے، جیسا کہ آپ نے سبق کے دوران مثال میں دیکھا۔ تاہم، این ایل پی کے کاموں میں، [ٹرانسفارمر آرکیٹیکچر](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model))، اور خاص طور پر [بی ای آر ٹی لینگویج ماڈلز](https://en.wikipedia.org/wiki/BERT_(language_model)) کہیں بہتر نتائج دکھاتے ہیں۔ پہلے سے تربیت یافتہ بی ای آر ٹی ماڈلز زبان کی عمومی ساخت کو سمجھتے ہیں اور انہیں مخصوص کاموں کے لیے نسبتاً چھوٹے ڈیٹا سیٹس اور کم کمپیوٹیشنل لاگت کے ساتھ فائن ٹیون کیا جا سکتا ہے۔ + +چونکہ ہم طبی منظرنامے پر این ای آر کو لاگو کرنے کا ارادہ رکھتے ہیں، اس لیے یہ سمجھ میں آتا ہے کہ طبی متون پر تربیت یافتہ بی ای آر ٹی ماڈل استعمال کیا جائے۔ مائیکروسافٹ ریسرچ نے ایک پہلے سے تربیت یافتہ ماڈل جاری کیا ہے جسے [پب میڈ بی ای آر ٹی][PubMedBERT] ([اشاعت][PubMedBERT-Pub]) کہا جاتا ہے، جو [پب میڈ](https://pubmed.ncbi.nlm.nih.gov/) ریپوزٹری کے متون کا استعمال کرتے ہوئے فائن ٹیون کیا گیا تھا۔ + +ٹرانسفارمر ماڈلز کو تربیت دینے کے لیے *ڈی فیکٹو* معیار [ہگنگ فیس ٹرانسفارمرز](https://huggingface.co/) لائبریری ہے۔ اس میں کمیونٹی کی طرف سے برقرار رکھے گئے پہلے سے تربیت یافتہ ماڈلز کا ایک ریپوزٹری بھی شامل ہے، جس میں پب میڈ بی ای آر ٹی بھی شامل ہے۔ اس ماڈل کو لوڈ اور استعمال کرنے کے لیے، ہمیں صرف چند لائنز کوڈ کی ضرورت ہے: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +یہ ہمیں `ماڈل` فراہم کرتا ہے، جو ٹوکن کلاسیفکیشن کے کام کے لیے بنایا گیا ہے اور `کلاسز` کی تعداد کے ساتھ، نیز `ٹوکنائزر` آبجیکٹ جو ان پٹ ٹیکسٹ کو ٹوکنز میں تقسیم کر سکتا ہے۔ آپ کو ڈیٹا سیٹ کو بائیو فارمیٹ میں تبدیل کرنا ہوگا، پب میڈ بی ای آر ٹی ٹوکنائزیشن کو مدنظر رکھتے ہوئے۔ آپ [اس پائتھون کوڈ کے ٹکڑے](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) کو بطور تحریک استعمال کر سکتے ہیں۔ + +## نتیجہ + +یہ کام اصل کام کے بہت قریب ہے جو آپ کو ممکنہ طور پر کرنا ہوگا اگر آپ قدرتی زبان کے بڑے متون میں مزید بصیرت حاصل کرنا چاہتے ہیں۔ ہمارے معاملے میں، ہم اپنے تربیت یافتہ ماڈل کو [کووڈ سے متعلق پیپرز کے ڈیٹا سیٹ](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) پر لاگو کر سکتے ہیں اور دیکھ سکتے ہیں کہ ہم کون سی بصیرت حاصل کر سکتے ہیں۔ [یہ بلاگ پوسٹ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) اور [یہ مقالہ](https://www.mdpi.com/2504-2289/6/1/4) اس کارپس آف پیپرز پر این ای آر کا استعمال کرتے ہوئے کی جانے والی تحقیق کو بیان کرتے ہیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/20-LangModels/README.md b/translations/ur/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..2f8b1921 --- /dev/null +++ b/translations/ur/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# پہلے سے تربیت یافتہ بڑے زبان کے ماڈلز + +ہم نے اپنے پچھلے تمام کاموں میں ایک نیورل نیٹ ورک کو ایک خاص کام انجام دینے کے لیے لیبل شدہ ڈیٹاسیٹ کے ذریعے تربیت دی۔ بڑے ٹرانسفارمر ماڈلز، جیسے کہ BERT، میں ہم زبان کی ماڈلنگ کو خودکار طریقے سے استعمال کرتے ہیں تاکہ ایک زبان کا ماڈل بنایا جا سکے، جسے پھر مزید ڈومین مخصوص تربیت کے ذریعے کسی خاص نیچے والے کام کے لیے ماہر بنایا جاتا ہے۔ تاہم، یہ ثابت ہوا ہے کہ بڑے زبان کے ماڈلز بغیر کسی ڈومین مخصوص تربیت کے بھی کئی کام انجام دے سکتے ہیں۔ ایسے ماڈلز کے خاندان کو **GPT** کہا جاتا ہے: جنریٹو پری ٹرینڈ ٹرانسفارمر۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## متن کی تخلیق اور پرپلیکسیٹی + +ایک نیورل نیٹ ورک کے بغیر نیچے والے تربیت کے عمومی کام انجام دینے کے خیال کو [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) کے مقالے میں پیش کیا گیا ہے۔ بنیادی خیال یہ ہے کہ کئی دوسرے کاموں کو **متن کی تخلیق** کے ذریعے ماڈل کیا جا سکتا ہے، کیونکہ متن کو سمجھنا بنیادی طور پر اسے تخلیق کرنے کی صلاحیت رکھنا ہے۔ چونکہ ماڈل کو ایک بہت بڑی مقدار میں متن پر تربیت دی گئی ہے جو انسانی علم کو شامل کرتی ہے، یہ مختلف موضوعات کے بارے میں بھی جانکاری حاصل کر لیتا ہے۔ + +> متن کو سمجھنا اور تخلیق کرنے کی صلاحیت رکھنا دنیا کے بارے میں کچھ جاننے کو بھی شامل کرتا ہے۔ لوگ بھی بڑی حد تک پڑھ کر سیکھتے ہیں، اور GPT نیٹ ورک اس لحاظ سے مشابہ ہے۔ + +متن تخلیق کرنے والے نیٹ ورکس اگلے لفظ کی احتمال $$P(w_N)$$ کی پیش گوئی کے ذریعے کام کرتے ہیں۔ تاہم، اگلے لفظ کی غیر مشروط احتمال متن کے مجموعے میں اس لفظ کی فریکوئنسی کے برابر ہوتی ہے۔ GPT ہمیں اگلے لفظ کی **مشروط احتمال** فراہم کرنے کے قابل ہے، پچھلے الفاظ کے پیش نظر: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> آپ ہمارے [Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) میں احتمال کے بارے میں مزید پڑھ سکتے ہیں۔ + +زبان تخلیق کرنے والے ماڈل کے معیار کو **پرپلیکسیٹی** کے ذریعے بیان کیا جا سکتا ہے۔ یہ ایک اندرونی میٹرک ہے جو ہمیں کسی بھی کام کے مخصوص ڈیٹاسیٹ کے بغیر ماڈل کے معیار کو ماپنے کی اجازت دیتا ہے۔ یہ *جملے کی احتمال* کے تصور پر مبنی ہے - ماڈل ایک جملے کو جو حقیقی ہونے کا امکان رکھتا ہے، زیادہ احتمال دیتا ہے (یعنی ماڈل اس سے **حیران** نہیں ہوتا)، اور ان جملوں کو کم احتمال دیتا ہے جو کم معنی خیز ہوتے ہیں (مثلاً *کیا یہ کر سکتا ہے؟*)۔ جب ہم اپنے ماڈل کو حقیقی متن کے مجموعے سے جملے دیتے ہیں، تو ہم توقع کرتے ہیں کہ ان کی احتمال زیادہ ہو، اور **پرپلیکسیٹی** کم ہو۔ ریاضیاتی طور پر، یہ ٹیسٹ سیٹ کی نارملائزڈ انورس احتمال کے طور پر بیان کیا جاتا ہے: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**آپ [Hugging Face کے GPT سے چلنے والے متن ایڈیٹر](https://transformer.huggingface.co/doc/gpt2-large)** کے ذریعے متن تخلیق کے ساتھ تجربہ کر سکتے ہیں۔ اس ایڈیٹر میں، آپ اپنا متن لکھنا شروع کرتے ہیں، اور **[TAB]** دبانے سے آپ کو کئی تکمیل کے اختیارات ملتے ہیں۔ اگر وہ بہت مختصر ہوں، یا آپ ان سے مطمئن نہ ہوں - [TAB] دوبارہ دبائیں، اور آپ کو مزید اختیارات ملیں گے، جن میں طویل متن کے ٹکڑے بھی شامل ہیں۔ + +## GPT ایک خاندان ہے + +GPT ایک واحد ماڈل نہیں ہے، بلکہ [OpenAI](https://openai.com) کے ذریعے تیار اور تربیت یافتہ ماڈلز کا ایک مجموعہ ہے۔ + +GPT ماڈلز کے تحت: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| زبان کا ماڈل جس میں 1.5 بلین تک کے پیرامیٹرز ہیں۔ | زبان کا ماڈل جس میں 175 بلین تک کے پیرامیٹرز ہیں۔ | 100 ٹریلین پیرامیٹرز اور یہ متن اور تصاویر دونوں کو ان پٹ کے طور پر قبول کرتا ہے اور متن آؤٹ پٹ کرتا ہے۔ | + +GPT-3 اور GPT-4 ماڈلز [Microsoft Azure کے ذریعے ایک کگنیٹیو سروس](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) اور [OpenAI API](https://openai.com/api/) کے طور پر دستیاب ہیں۔ + +## پرامپٹ انجینئرنگ + +چونکہ GPT کو زبان اور کوڈ کو سمجھنے کے لیے وسیع مقدار میں ڈیٹا پر تربیت دی گئی ہے، یہ ان پٹ (پرامپٹس) کے جواب میں آؤٹ پٹ فراہم کرتا ہے۔ پرامپٹس GPT کے ان پٹ یا سوالات ہیں جن کے ذریعے کسی کو ماڈلز کو ہدایات فراہم کرنی ہوتی ہیں کہ اگلا کام کیسے مکمل کیا جائے۔ مطلوبہ نتیجہ حاصل کرنے کے لیے، آپ کو سب سے مؤثر پرامپٹ کی ضرورت ہوتی ہے، جس میں صحیح الفاظ، فارمیٹس، جملے یا یہاں تک کہ علامات کا انتخاب شامل ہوتا ہے۔ اس طریقہ کار کو [پرامپٹ انجینئرنگ](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) کہا جاتا ہے۔ + +[یہ دستاویز](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) آپ کو پرامپٹ انجینئرنگ کے بارے میں مزید معلومات فراہم کرتی ہے۔ + +## ✍️ مثال نوٹ بک: [OpenAI-GPT کے ساتھ کھیلنا](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [OpenAI-GPT اور Hugging Face Transformers کے ساتھ متن تخلیق کرنا](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## نتیجہ + +نئے عمومی پری ٹرینڈ زبان کے ماڈلز نہ صرف زبان کی ساخت کو ماڈل کرتے ہیں، بلکہ قدرتی زبان کی ایک بڑی مقدار بھی شامل کرتے ہیں۔ اس طرح، انہیں زیرو شاٹ یا فیو شاٹ سیٹنگز میں کچھ NLP کاموں کو مؤثر طریقے سے حل کرنے کے لیے استعمال کیا جا سکتا ہے۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/5-NLP/README.md b/translations/ur/lessons/5-NLP/README.md new file mode 100644 index 00000000..0a341c63 --- /dev/null +++ b/translations/ur/lessons/5-NLP/README.md @@ -0,0 +1,86 @@ + +# قدرتی زبان کی پروسیسنگ + +![NLP کے کاموں کا خلاصہ ایک خاکے میں](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ur.png) + +اس حصے میں، ہم نیورل نیٹ ورکس کا استعمال کرتے ہوئے **قدرتی زبان کی پروسیسنگ (NLP)** سے متعلق کاموں کو حل کرنے پر توجہ مرکوز کریں گے۔ NLP کے کئی مسائل ہیں جنہیں ہم چاہتے ہیں کہ کمپیوٹر حل کر سکیں: + +* **ٹیکسٹ کی درجہ بندی** ایک عام درجہ بندی کا مسئلہ ہے جو ٹیکسٹ سیکوئنسز سے متعلق ہے۔ مثال کے طور پر، ای میل پیغامات کو اسپام یا نان اسپام کے طور پر درجہ بندی کرنا، یا مضامین کو کھیل، کاروبار، سیاست وغیرہ کے زمرے میں تقسیم کرنا۔ اسی طرح، چیٹ بوٹس تیار کرتے وقت، ہمیں اکثر یہ سمجھنے کی ضرورت ہوتی ہے کہ صارف کیا کہنا چاہتا ہے -- اس صورت میں ہم **ارادے کی درجہ بندی** سے نمٹ رہے ہوتے ہیں۔ ارادے کی درجہ بندی میں اکثر ہمیں کئی زمروں سے نمٹنا پڑتا ہے۔ + +* **جذبات کا تجزیہ** ایک عام ریگریشن مسئلہ ہے، جہاں ہمیں ایک جملے کے مثبت/منفی معنی کے مطابق ایک نمبر (جذبہ) تفویض کرنا ہوتا ہے۔ جذبات کے تجزیے کا ایک زیادہ جدید ورژن **پہلو پر مبنی جذبات کا تجزیہ** (ABSA) ہے، جہاں ہم جذبات کو پورے جملے کے بجائے اس کے مختلف حصوں (پہلوؤں) سے منسلک کرتے ہیں، جیسے: *اس ریستوران میں، مجھے کھانے کا ذائقہ پسند آیا، لیکن ماحول بہت خراب تھا*۔ + +* **نامزد ادارے کی شناخت** (NER) اس مسئلے سے متعلق ہے کہ متن سے مخصوص اداروں کو نکالا جائے۔ مثال کے طور پر، ہمیں یہ سمجھنے کی ضرورت ہو سکتی ہے کہ جملے *مجھے کل پیرس جانا ہے* میں *کل* تاریخ کو ظاہر کرتا ہے، اور *پیرس* ایک مقام ہے۔ + +* **کلیدی الفاظ کا اخراج** NER سے ملتا جلتا ہے، لیکن ہمیں جملے کے معنی کے لیے اہم الفاظ کو خودکار طور پر نکالنا ہوتا ہے، بغیر کسی مخصوص ادارے کی اقسام کے لیے پہلے سے تربیت کیے۔ + +* **ٹیکسٹ کلسٹرنگ** اس وقت مفید ہو سکتی ہے جب ہم ایک جیسے جملوں کو گروپ کرنا چاہتے ہیں، جیسے تکنیکی مدد کی گفتگو میں ایک جیسے سوالات۔ + +* **سوالات کے جوابات دینا** ایک ماڈل کی صلاحیت کو ظاہر کرتا ہے کہ وہ کسی مخصوص سوال کا جواب دے سکے۔ ماڈل کو ایک متن کا حصہ اور ایک سوال ان پٹ کے طور پر دیا جاتا ہے، اور اسے متن میں وہ جگہ فراہم کرنی ہوتی ہے جہاں سوال کا جواب موجود ہو (یا بعض اوقات، جواب کا متن تیار کرنا ہوتا ہے)۔ + +* **ٹیکسٹ جنریشن** ایک ماڈل کی صلاحیت ہے کہ وہ نیا متن تیار کرے۔ اسے ایک درجہ بندی کے مسئلے کے طور پر سمجھا جا سکتا ہے جو کسی *ٹیکسٹ پرامپٹ* کی بنیاد پر اگلا حرف/لفظ پیش گوئی کرتا ہے۔ جدید ٹیکسٹ جنریشن ماڈلز، جیسے GPT-3، دیگر NLP کاموں کو حل کرنے کے قابل ہیں، جیسے درجہ بندی، ایک تکنیک کے ذریعے جسے [پرامپٹ پروگرامنگ](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) یا [پرامپٹ انجینئرنگ](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) کہا جاتا ہے۔ + +* **ٹیکسٹ کا خلاصہ بنانا** ایک تکنیک ہے جب ہم چاہتے ہیں کہ کمپیوٹر طویل متن کو "پڑھے" اور اسے چند جملوں میں خلاصہ کرے۔ + +* **مشین ترجمہ** کو ایک زبان میں متن کو سمجھنے اور دوسری زبان میں متن تیار کرنے کے امتزاج کے طور پر دیکھا جا سکتا ہے۔ + +شروع میں، زیادہ تر NLP کام روایتی طریقوں جیسے گرامر کے ذریعے حل کیے جاتے تھے۔ مثال کے طور پر، مشین ترجمہ میں پارسرز کا استعمال کیا جاتا تھا تاکہ ابتدائی جملے کو ایک نحو کے درخت میں تبدیل کیا جا سکے، پھر جملے کے معنی کو ظاہر کرنے کے لیے اعلیٰ سطحی معنوی ڈھانچے نکالے جاتے تھے، اور ان معنی اور ہدف زبان کی گرامر کی بنیاد پر نتیجہ تیار کیا جاتا تھا۔ آج کل، بہت سے NLP کام نیورل نیٹ ورکس کا استعمال کرتے ہوئے زیادہ مؤثر طریقے سے حل کیے جاتے ہیں۔ + +> بہت سے کلاسیکی NLP طریقے [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) پائتھون لائبریری میں نافذ کیے گئے ہیں۔ ایک شاندار [NLTK کتاب](https://www.nltk.org/book/) آن لائن دستیاب ہے جو یہ بتاتی ہے کہ مختلف NLP کاموں کو NLTK کا استعمال کرتے ہوئے کیسے حل کیا جا سکتا ہے۔ + +ہمارے کورس میں، ہم زیادہ تر NLP کے لیے نیورل نیٹ ورکس کے استعمال پر توجہ مرکوز کریں گے، اور جہاں ضرورت ہو NLTK کا استعمال کریں گے۔ + +ہم نے پہلے ہی نیورل نیٹ ورکس کو ٹیبلر ڈیٹا اور تصاویر کے ساتھ کام کرنے کے لیے استعمال کرنے کے بارے میں سیکھا ہے۔ ان ڈیٹا کی اقسام اور متن کے درمیان بنیادی فرق یہ ہے کہ متن متغیر لمبائی کا ایک سلسلہ ہے، جبکہ تصاویر کے معاملے میں ان پٹ سائز پہلے سے معلوم ہوتا ہے۔ اگرچہ کنوولوشنل نیٹ ورکس ان پٹ ڈیٹا سے پیٹرن نکال سکتے ہیں، متن میں پیٹرن زیادہ پیچیدہ ہوتے ہیں۔ مثال کے طور پر، ہم یہ دیکھ سکتے ہیں کہ نفی کسی موضوع سے کئی الفاظ کے فاصلے پر ہو سکتی ہے (جیسے: *مجھے نارنگیاں پسند نہیں ہیں*، بمقابلہ *مجھے وہ بڑی رنگین مزیدار نارنگیاں پسند نہیں ہیں*)، اور اسے اب بھی ایک ہی پیٹرن کے طور پر سمجھا جانا چاہیے۔ لہذا، زبان کو سنبھالنے کے لیے ہمیں نیورل نیٹ ورکس کی نئی اقسام متعارف کرانے کی ضرورت ہے، جیسے *ریکررنٹ نیٹ ورکس* اور *ٹرانسفارمرز*۔ + +## لائبریریاں انسٹال کریں + +اگر آپ اس کورس کو چلانے کے لیے مقامی پائتھون انسٹالیشن استعمال کر رہے ہیں، تو آپ کو NLP کے لیے تمام مطلوبہ لائبریریاں درج ذیل کمانڈز کے ذریعے انسٹال کرنے کی ضرورت ہو سکتی ہے: + +**PyTorch کے لیے** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow کے لیے** +```bash +pip install -r requirements-tf.txt +``` + +> آپ TensorFlow کے ساتھ NLP کو [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) پر آزما سکتے ہیں۔ + +## GPU وارننگ + +اس حصے میں، کچھ مثالوں میں ہم کافی بڑے ماڈلز کی تربیت کریں گے۔ +* **GPU سے لیس کمپیوٹر استعمال کریں**: بڑے ماڈلز کے ساتھ کام کرتے وقت انتظار کے وقت کو کم کرنے کے لیے اپنے نوٹ بکس کو GPU سے لیس کمپیوٹر پر چلانا بہتر ہے۔ +* **GPU میموری کی حدود**: GPU پر چلانے سے ایسی صورتحال پیدا ہو سکتی ہے جہاں آپ کی GPU میموری ختم ہو جائے، خاص طور پر جب بڑے ماڈلز کی تربیت کی جا رہی ہو۔ +* **GPU میموری کا استعمال**: تربیت کے دوران GPU میموری کا استعمال مختلف عوامل پر منحصر ہوتا ہے، بشمول منی بیچ کا سائز۔ +* **منی بیچ کا سائز کم کریں**: اگر آپ کو GPU میموری کے مسائل کا سامنا ہو، تو اپنے کوڈ میں منی بیچ کے سائز کو کم کرنے پر غور کریں۔ +* **TensorFlow GPU میموری ریلیز**: TensorFlow کے پرانے ورژن ایک ہی پائتھون کرنل میں متعدد ماڈلز کی تربیت کے دوران GPU میموری کو صحیح طریقے سے ریلیز نہیں کر سکتے۔ GPU میموری کے استعمال کو مؤثر طریقے سے منظم کرنے کے لیے، آپ TensorFlow کو صرف ضرورت کے مطابق GPU میموری مختص کرنے کے لیے ترتیب دے سکتے ہیں۔ +* **کوڈ شامل کریں**: TensorFlow کو GPU میموری مختص کرنے کے لیے صرف ضرورت کے وقت ترتیب دینے کے لیے، اپنے نوٹ بکس میں درج ذیل کوڈ شامل کریں: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +اگر آپ کلاسیکی مشین لرننگ کے نقطہ نظر سے NLP سیکھنے میں دلچسپی رکھتے ہیں، تو [یہ سبق](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) دیکھیں۔ + +## اس حصے میں +اس حصے میں ہم درج ذیل موضوعات کے بارے میں سیکھیں گے: + +* [ٹیکسٹ کو ٹینسرز کے طور پر ظاہر کرنا](13-TextRep/README.md) +* [ورڈ ایمبیڈنگز](14-Emdeddings/README.md) +* [زبان کی ماڈلنگ](15-LanguageModeling/README.md) +* [ریکررنٹ نیورل نیٹ ورکس](16-RNN/README.md) +* [جنریٹو نیٹ ورکس](17-GenerativeNetworks/README.md) +* [ٹرانسفارمرز](18-Transformers/README.md) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ur/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..c3bbafb3 --- /dev/null +++ b/translations/ur/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# جینیاتی الگورتھمز + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**جینیاتی الگورتھمز** (GA) ایک **ارتقائی طریقہ** پر مبنی ہیں، جس میں آبادی کے ارتقاء کے طریقے استعمال کیے جاتے ہیں تاکہ دیے گئے مسئلے کے لیے ایک بہترین حل حاصل کیا جا سکے۔ انہیں 1975 میں [جان ہنری ہالینڈ](https://wikipedia.org/wiki/John_Henry_Holland) نے پیش کیا۔ + +جینیاتی الگورتھمز درج ذیل خیالات پر مبنی ہیں: + +* مسئلے کے درست حل کو **جینز** کے طور پر ظاہر کیا جا سکتا ہے +* **کراس اوور** ہمیں دو حلوں کو یکجا کرنے کی اجازت دیتا ہے تاکہ ایک نیا درست حل حاصل کیا جا سکے +* **سلیکشن** کسی **فٹنس فنکشن** کے ذریعے زیادہ بہتر حل منتخب کرنے کے لیے استعمال ہوتی ہے +* **میوٹیشنز** متعارف کروائی جاتی ہیں تاکہ آپٹیمائزیشن کو غیر مستحکم کیا جا سکے اور ہمیں مقامی کم از کم سے باہر نکالا جا سکے + +اگر آپ جینیاتی الگورتھم نافذ کرنا چاہتے ہیں، تو آپ کو درج ذیل کی ضرورت ہوگی: + +* ہمارے مسئلے کے حل کو **جینز** g∈Γ کے ذریعے کوڈ کرنے کا طریقہ تلاش کریں +* جینز کے سیٹ Γ پر ہمیں **فٹنس فنکشن** fit: Γ→**R** کی وضاحت کرنی ہوگی۔ فنکشن کی چھوٹی قدریں بہتر حل کے مطابق ہوتی ہیں۔ +* **کراس اوور** میکانزم کی وضاحت کریں تاکہ دو جینز کو یکجا کرکے ایک نیا درست حل حاصل کیا جا سکے crossover: Γ2→Γ۔ +* **میوٹیشن** میکانزم کی وضاحت کریں mutate: Γ→Γ۔ + +بہت سے معاملات میں، کراس اوور اور میوٹیشن جینز کو عددی ترتیب یا بٹ ویکٹر کے طور پر جوڑنے کے لیے کافی سادہ الگورتھمز ہوتے ہیں۔ + +جینیاتی الگورتھم کے مخصوص نفاذ میں کیس سے کیس فرق ہو سکتا ہے، لیکن مجموعی ڈھانچہ درج ذیل ہے: + +1. ابتدائی آبادی G⊂Γ منتخب کریں +2. تصادفی طور پر ان آپریشنز میں سے ایک منتخب کریں جو اس مرحلے پر انجام دیے جائیں گے: کراس اوور یا میوٹیشن +3. **کراس اوور**: + * تصادفی طور پر دو جینز g1, g2 ∈ G منتخب کریں + * کراس اوور کا حساب لگائیں g=crossover(g1,g2) + * اگر fit(g)1) یا fit(g)2) - تو آبادی میں متعلقہ جین کو g سے تبدیل کریں۔ +4. **میوٹیشن** - تصادفی طور پر ایک جین g∈G منتخب کریں اور اسے mutate(g) سے تبدیل کریں +5. مرحلہ 2 سے دوبارہ شروع کریں، جب تک کہ ہمیں fit کی کافی چھوٹی قدر نہ مل جائے، یا جب تک کہ قدموں کی تعداد کی حد تک نہ پہنچ جائے۔ + +## عام کام + +جینیاتی الگورتھمز کے ذریعے عام طور پر حل کیے جانے والے کاموں میں شامل ہیں: + +1. شیڈول کی اصلاح +1. بہترین پیکنگ +1. بہترین کٹنگ +1. تھکا دینے والی تلاش کو تیز کرنا + +## ✍️ مشقیں: جینیاتی الگورتھمز + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +[اس نوٹ بک](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) پر جائیں تاکہ جینیاتی الگورتھمز کے دو مثالیں دیکھ سکیں: + +1. خزانے کی منصفانہ تقسیم +1. 8 کوئینز کا مسئلہ + +## نتیجہ + +جینیاتی الگورتھمز بہت سے مسائل کو حل کرنے کے لیے استعمال کیے جاتے ہیں، جن میں لاجسٹکس اور تلاش کے مسائل شامل ہیں۔ یہ میدان نفسیات اور کمپیوٹر سائنس کے موضوعات کو یکجا کرنے والی تحقیق سے متاثر ہے۔ + +## 🚀 چیلنج + +"جینیاتی الگورتھمز کو نافذ کرنا آسان ہے، لیکن ان کے رویے کو سمجھنا مشکل ہے۔" [ماخذ](https://wikipedia.org/wiki/Genetic_algorithm) تحقیق کریں اور جینیاتی الگورتھم کے نفاذ کی مثال تلاش کریں، جیسے کہ سوڈوکو پہیلی کو حل کرنا، اور وضاحت کریں کہ یہ کیسے کام کرتا ہے ایک خاکہ یا فلو چارٹ کے طور پر۔ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## جائزہ اور خود مطالعہ + +[یہ زبردست ویڈیو](https://www.youtube.com/watch?v=qv6UVOQ0F44) دیکھیں جو بتاتی ہے کہ کمپیوٹر جینیاتی الگورتھمز کے ذریعے تربیت یافتہ نیورل نیٹ ورکس کا استعمال کرتے ہوئے سپر ماریو کھیلنا کیسے سیکھ سکتا ہے۔ ہم اس بارے میں مزید سیکھیں گے کہ کمپیوٹر ایسے کھیل کھیلنا کیسے سیکھتا ہے [اگلے حصے میں](../22-DeepRL/README.md)۔ + +## [اسائنمنٹ: دیوفینٹائن مساوات](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +آپ کا مقصد نام نہاد **دیوفینٹائن مساوات** کو حل کرنا ہے - ایک مساوات جس کے جڑیں عددی ہوں۔ مثال کے طور پر، مساوات a+2b+3c+4d=30 پر غور کریں۔ آپ کو وہ عددی جڑیں تلاش کرنی ہیں جو اس مساوات کو پورا کرتی ہیں۔ + +*یہ اسائنمنٹ [اس پوسٹ](https://habr.com/post/128704/) سے متاثر ہے۔* + +اشارے: + +1. آپ جڑوں کو وقفہ [0;30] میں غور کر سکتے ہیں +1. جین کے طور پر، جڑوں کی قدروں کی فہرست استعمال کرنے پر غور کریں + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) کو نقطہ آغاز کے طور پر استعمال کریں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/6-Other/22-DeepRL/README.md b/translations/ur/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..f7a24306 --- /dev/null +++ b/translations/ur/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# ڈیپ ری انفورسمنٹ لرننگ + +ری انفورسمنٹ لرننگ (RL) کو مشین لرننگ کے بنیادی پیراڈائمز میں سے ایک سمجھا جاتا ہے، جیسے سپروائزڈ لرننگ اور ان سپروائزڈ لرننگ۔ جہاں سپروائزڈ لرننگ میں ہم معلوم نتائج والے ڈیٹا سیٹ پر انحصار کرتے ہیں، RL **عمل کے ذریعے سیکھنے** پر مبنی ہے۔ مثال کے طور پر، جب ہم پہلی بار کسی کمپیوٹر گیم کو دیکھتے ہیں، تو ہم کھیلنا شروع کرتے ہیں، چاہے ہمیں اصول معلوم نہ ہوں، اور جلد ہی ہم صرف کھیلنے اور اپنے رویے کو ایڈجسٹ کرنے کے عمل سے اپنی مہارت کو بہتر بنا لیتے ہیں۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL انجام دینے کے لیے ہمیں ضرورت ہوتی ہے: + +* ایک **ماحول** یا **سیمیولیٹر** جو گیم کے اصول طے کرتا ہے۔ ہمیں سیمیولیٹر میں تجربات چلانے اور نتائج کا مشاہدہ کرنے کے قابل ہونا چاہیے۔ +* کچھ **ریوارڈ فنکشن**، جو یہ ظاہر کرتا ہے کہ ہمارا تجربہ کتنا کامیاب رہا۔ کمپیوٹر گیم کھیلنا سیکھنے کے معاملے میں، انعام ہمارا آخری اسکور ہوگا۔ + +ریوارڈ فنکشن کی بنیاد پر، ہمیں اپنے رویے کو ایڈجسٹ کرنے اور اپنی مہارت کو بہتر بنانے کے قابل ہونا چاہیے، تاکہ اگلی بار ہم بہتر کھیل سکیں۔ دیگر قسم کی مشین لرننگ اور RL کے درمیان بنیادی فرق یہ ہے کہ RL میں ہمیں عام طور پر یہ معلوم نہیں ہوتا کہ ہم جیتے یا ہارے جب تک کہ ہم گیم ختم نہ کریں۔ لہذا، ہم یہ نہیں کہہ سکتے کہ کوئی خاص حرکت اکیلے اچھی ہے یا نہیں - ہمیں صرف گیم کے اختتام پر انعام ملتا ہے۔ + +RL کے دوران، ہم عام طور پر کئی تجربات انجام دیتے ہیں۔ ہر تجربے کے دوران، ہمیں اس حکمت عملی پر عمل کرنے کے درمیان توازن قائم کرنا ہوتا ہے جو ہم نے اب تک سیکھی ہے (**استفادہ**) اور نئے ممکنہ حالات کو دریافت کرنا (**تلاش**). + +## اوپن اے آئی جم + +RL کے لیے ایک بہترین ٹول [اوپن اے آئی جم](https://gym.openai.com/) ہے - ایک **سیمیولیشن ماحول**، جو مختلف ماحول کو سیمیولیٹ کر سکتا ہے، جیسے اٹاری گیمز سے لے کر پول بیلنسنگ کے پیچھے فزکس تک۔ یہ ری انفورسمنٹ لرننگ الگورتھمز کی تربیت کے لیے سب سے زیادہ مقبول سیمیولیشن ماحول میں سے ایک ہے، اور اسے [اوپن اے آئی](https://openai.com/) برقرار رکھتا ہے۔ + +> **نوٹ**: آپ اوپن اے آئی جم کے تمام دستیاب ماحول [یہاں](https://gym.openai.com/envs/#classic_control) دیکھ سکتے ہیں۔ + +## کارٹ پول بیلنسنگ + +آپ نے شاید جدید بیلنسنگ ڈیوائسز جیسے *سیگ وے* یا *جائرو سکوٹرز* دیکھے ہوں گے۔ یہ خود بخود بیلنس کرنے کے قابل ہوتے ہیں، اپنے پہیوں کو ایکسلرومیٹر یا جائروسکوپ کے سگنل کے جواب میں ایڈجسٹ کر کے۔ اس سیکشن میں، ہم ایک مشابہ مسئلہ حل کرنا سیکھیں گے - پول کو بیلنس کرنا۔ یہ اس صورتحال سے مشابہ ہے جب ایک سرکس کا فنکار اپنے ہاتھ پر پول کو بیلنس کرنے کی کوشش کرتا ہے - لیکن یہ پول بیلنسنگ صرف 1D میں ہوتی ہے۔ + +بیلنسنگ کا ایک سادہ ورژن **کارٹ پول** مسئلے کے نام سے جانا جاتا ہے۔ کارٹ پول کی دنیا میں، ہمارے پاس ایک افقی سلائیڈر ہوتا ہے جو بائیں یا دائیں حرکت کر سکتا ہے، اور مقصد یہ ہے کہ سلائیڈر کے اوپر ایک عمودی پول کو بیلنس کیا جائے۔ + +ایک کارٹ پول + +اس ماحول کو بنانے اور استعمال کرنے کے لیے، ہمیں چند لائنز پائتھون کوڈ کی ضرورت ہوتی ہے: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +ہر ماحول کو بالکل اسی طرح رسائی حاصل کی جا سکتی ہے: +* `env.reset` ایک نیا تجربہ شروع کرتا ہے +* `env.step` ایک سیمیولیشن قدم انجام دیتا ہے۔ یہ **ایکشن** کو **ایکشن اسپیس** سے وصول کرتا ہے، اور **مشاہدہ** (مشاہدہ اسپیس سے)، انعام اور ختم ہونے کا پرچم واپس کرتا ہے۔ + +اوپر دیے گئے مثال میں، ہم ہر قدم پر ایک بے ترتیب ایکشن انجام دیتے ہیں، یہی وجہ ہے کہ تجربے کی زندگی بہت مختصر ہے: + +![غیر بیلنسنگ کارٹ پول](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RL الگورتھم کا مقصد ایک ماڈل - جسے **پالیسی** π کہا جاتا ہے - کو تربیت دینا ہے، جو دیے گئے حالت کے جواب میں ایکشن واپس کرے گا۔ ہم پالیسی کو احتمالی بھی سمجھ سکتے ہیں، یعنی کسی بھی حالت *s* اور ایکشن *a* کے لیے یہ احتمال π(*a*|*s*) واپس کرے گا کہ ہمیں حالت *s* میں *a* لینا چاہیے۔ + +## پالیسی گریڈینٹس الگورتھم + +پالیسی کو ماڈل کرنے کا سب سے واضح طریقہ ایک نیورل نیٹ ورک بنانا ہے جو حالتوں کو ان پٹ کے طور پر لے، اور متعلقہ ایکشنز (یا تمام ایکشنز کے امکانات) واپس کرے۔ ایک لحاظ سے، یہ ایک عام درجہ بندی کے کام کی طرح ہوگا، ایک بڑے فرق کے ساتھ - ہمیں پہلے سے معلوم نہیں ہوتا کہ ہر قدم پر کون سے ایکشنز لینے چاہئیں۔ + +یہاں خیال یہ ہے کہ ان امکانات کا اندازہ لگایا جائے۔ ہم **مجموعی انعامات** کا ایک ویکٹر بناتے ہیں جو تجربے کے ہر قدم پر ہمارا کل انعام ظاہر کرتا ہے۔ ہم **انعام کی رعایت** بھی لاگو کرتے ہیں، پہلے کے انعامات کو کچھ گتانک γ=0.99 سے ضرب دے کر، تاکہ پہلے کے انعامات کے کردار کو کم کیا جا سکے۔ پھر، ہم ان قدموں کو تقویت دیتے ہیں جو زیادہ انعامات دیتے ہیں۔ + +> پالیسی گریڈینٹ الگورتھم کے بارے میں مزید جانیں اور اسے عمل میں دیکھیں [مثال نوٹ بک](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) میں۔ + +## ایکٹر-کریٹک الگورتھم + +پالیسی گریڈینٹس کے طریقہ کار کا ایک بہتر ورژن **ایکٹر-کریٹک** کہلاتا ہے۔ اس کے پیچھے بنیادی خیال یہ ہے کہ نیورل نیٹ ورک کو دو چیزیں واپس کرنے کے لیے تربیت دی جائے: + +* پالیسی، جو طے کرتی ہے کہ کون سا ایکشن لینا ہے۔ اس حصے کو **ایکٹر** کہا جاتا ہے۔ +* کل انعام کا تخمینہ جو ہم اس حالت میں حاصل کرنے کی توقع کر سکتے ہیں - اس حصے کو **کریٹک** کہا جاتا ہے۔ + +ایک لحاظ سے، یہ [GAN](../../4-ComputerVision/10-GANs/README.md) کی طرح ہے، جہاں ہمارے پاس دو نیٹ ورکس ہیں جو ایک دوسرے کے خلاف تربیت یافتہ ہیں۔ ایکٹر-کریٹک ماڈل میں، ایکٹر وہ ایکشن تجویز کرتا ہے جو ہمیں لینا چاہیے، اور کریٹک تنقیدی ہونے کی کوشش کرتا ہے اور نتیجہ کا اندازہ لگاتا ہے۔ تاہم، ہمارا مقصد ان نیٹ ورکس کو ہم آہنگی میں تربیت دینا ہے۔ + +چونکہ ہمیں تجربے کے دوران حقیقی مجموعی انعامات اور کریٹک کے ذریعے واپس کیے گئے نتائج دونوں معلوم ہیں، اس لیے ان کے درمیان فرق کو کم کرنے کے لیے ایک نقصان فنکشن بنانا نسبتاً آسان ہے۔ یہ ہمیں **کریٹک نقصان** دے گا۔ ہم **ایکٹر نقصان** کو پالیسی گریڈینٹ الگورتھم کے طریقہ کار کا استعمال کرتے ہوئے حساب کر سکتے ہیں۔ + +ان الگورتھمز میں سے کسی ایک کو چلانے کے بعد، ہم توقع کر سکتے ہیں کہ ہمارا کارٹ پول اس طرح برتاؤ کرے گا: + +![ایک بیلنسنگ کارٹ پول](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ مشقیں: پالیسی گریڈینٹس اور ایکٹر-کریٹک RL + +اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں: + +* [TensorFlow میں RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch میں RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## دیگر RL کام + +ری انفورسمنٹ لرننگ آج کل تحقیق کا ایک تیزی سے بڑھتا ہوا میدان ہے۔ ری انفورسمنٹ لرننگ کی کچھ دلچسپ مثالیں ہیں: + +* کمپیوٹر کو **اٹاری گیمز** کھیلنا سکھانا۔ اس مسئلے میں چیلنجنگ حصہ یہ ہے کہ ہمارے پاس ایک سادہ حالت نہیں ہے جو ایک ویکٹر کے طور پر ظاہر ہو، بلکہ ایک اسکرین شاٹ ہے - اور ہمیں اس اسکرین امیج کو فیچر ویکٹر میں تبدیل کرنے یا انعام کی معلومات نکالنے کے لیے CNN کا استعمال کرنا ہوگا۔ اٹاری گیمز جم میں دستیاب ہیں۔ +* کمپیوٹر کو بورڈ گیمز کھیلنا سکھانا، جیسے شطرنج اور گو۔ حال ہی میں، جدید ترین پروگرام جیسے **الفا زیرو** کو دو ایجنٹس کے ذریعے ایک دوسرے کے خلاف کھیل کر اور ہر قدم پر بہتر ہو کر شروع سے تربیت دی گئی۔ +* صنعت میں، RL کو سیمیولیشن سے کنٹرول سسٹمز بنانے کے لیے استعمال کیا جاتا ہے۔ ایک سروس جسے [بونسائی](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) کہا جاتا ہے خاص طور پر اس کے لیے ڈیزائن کی گئی ہے۔ + +## نتیجہ + +ہم نے اب سیکھ لیا ہے کہ ایجنٹس کو اچھے نتائج حاصل کرنے کے لیے تربیت کیسے دی جائے، صرف ایک انعام فنکشن فراہم کر کے جو گیم کی مطلوبہ حالت کی وضاحت کرتا ہے، اور انہیں تلاش کی جگہ کو ذہانت سے دریافت کرنے کا موقع دے کر۔ ہم نے کامیابی کے ساتھ دو الگورتھمز آزمائے، اور نسبتاً مختصر وقت میں اچھا نتیجہ حاصل کیا۔ تاہم، یہ RL میں آپ کے سفر کا صرف آغاز ہے، اور اگر آپ مزید گہرائی میں جانا چاہتے ہیں تو آپ کو ایک الگ کورس لینے پر غور کرنا چاہیے۔ + +## 🚀 چیلنج + +'دیگر RL کام' سیکشن میں درج ایپلیکیشنز کو دریافت کریں اور ایک کو نافذ کرنے کی کوشش کریں! + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## جائزہ اور خود مطالعہ + +کلاسیکل ری انفورسمنٹ لرننگ کے بارے میں مزید جانیں ہمارے [مشین لرننگ فار بیگنرز نصاب](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) میں۔ + +[یہ زبردست ویڈیو](https://www.youtube.com/watch?v=qv6UVOQ0F44) دیکھیں جو بتاتی ہے کہ کمپیوٹر سپر ماریو کھیلنا کیسے سیکھ سکتا ہے۔ + +## اسائنمنٹ: [ایک ماؤنٹین کار کو تربیت دیں](lab/README.md) + +اس اسائنمنٹ کے دوران آپ کا مقصد ایک مختلف جم ماحول - [ماؤنٹین کار](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) کو تربیت دینا ہوگا۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ur/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..8f9e1ba5 --- /dev/null +++ b/translations/ur/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## ماحول + +ماؤنٹین کار کا ماحول ایک گاڑی پر مشتمل ہے جو ایک وادی میں پھنس گئی ہے۔ آپ کا مقصد وادی سے باہر چھلانگ لگا کر جھنڈے تک پہنچنا ہے۔ آپ جو اقدامات کر سکتے ہیں وہ ہیں: بائیں طرف تیز کرنا، دائیں طرف تیز کرنا، یا کچھ نہ کرنا۔ آپ گاڑی کی پوزیشن کو x-axis پر اور رفتار کو دیکھ سکتے ہیں۔ + +## نوٹ بک شروع کرنا + +لیب کو شروع کرنے کے لیے [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) کھولیں۔ + +## نتیجہ + +آپ کو اس لیب کے دوران یہ سیکھنا چاہیے کہ RL الگورتھم کو کسی نئے ماحول میں اپنانا اکثر کافی آسان ہوتا ہے، کیونکہ OpenAI Gym تمام ماحول کے لیے ایک جیسا انٹرفیس فراہم کرتا ہے، اور الگورتھم عام طور پر ماحول کی نوعیت پر زیادہ انحصار نہیں کرتے۔ آپ Python کوڈ کو اس طرح سے دوبارہ ترتیب دے سکتے ہیں کہ RL الگورتھم کو کسی بھی ماحول کو پیرامیٹر کے طور پر پاس کیا جا سکے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ur/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..2c899bcb --- /dev/null +++ b/translations/ur/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,162 @@ + +# ملٹی ایجنٹ سسٹمز + +ذہانت حاصل کرنے کے ممکنہ طریقوں میں سے ایک **ایمرجینٹ** (یا **سینرجیٹک**) طریقہ ہے، جو اس حقیقت پر مبنی ہے کہ کئی نسبتاً سادہ ایجنٹس کے مشترکہ رویے سے پورے نظام کا زیادہ پیچیدہ (یا ذہین) رویہ پیدا ہو سکتا ہے۔ نظریاتی طور پر، یہ [اجتماعی ذہانت](https://en.wikipedia.org/wiki/Collective_intelligence)، [ایمرجینٹزم](https://en.wikipedia.org/wiki/Global_brain) اور [ارتقائی سائبرنیٹکس](https://en.wikipedia.org/wiki/Global_brain) کے اصولوں پر مبنی ہے، جو یہ بیان کرتے ہیں کہ اعلیٰ سطح کے نظام کو کچھ اضافی قدر حاصل ہوتی ہے جب انہیں نچلی سطح کے نظاموں سے مناسب طریقے سے جوڑا جائے (جسے *میٹاسسٹم ٹرانزیشن کا اصول* کہا جاتا ہے)۔ + +## [لیکچر سے پہلے کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**ملٹی ایجنٹ سسٹمز** کی سمت 1990 کی دہائی میں AI میں ابھری، جب انٹرنیٹ اور ڈسٹریبیوٹڈ سسٹمز کا پھیلاؤ ہوا۔ AI کی ایک کلاسیکی کتاب، [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach)، ملٹی ایجنٹ سسٹمز کے نقطہ نظر سے کلاسیکی AI پر توجہ مرکوز کرتی ہے۔ + +ملٹی ایجنٹ طریقہ کار کا مرکزی تصور **ایجنٹ** کا ہے - ایک ایسی ہستی جو کسی **ماحول** میں رہتی ہے، جسے وہ محسوس کر سکتی ہے اور اس پر عمل کر سکتی ہے۔ یہ ایک بہت وسیع تعریف ہے، اور ایجنٹس کی کئی مختلف اقسام اور درجہ بندیاں ہو سکتی ہیں: + +* ان کی استدلال کرنے کی صلاحیت کے لحاظ سے: + - **ری ایکٹو** ایجنٹس عام طور پر سادہ درخواست-جواب قسم کے رویے رکھتے ہیں۔ + - **ڈیلیبریٹو** ایجنٹس کسی قسم کی منطقی استدلال اور/یا منصوبہ بندی کی صلاحیتوں کا استعمال کرتے ہیں۔ +* اس جگہ کے لحاظ سے جہاں ایجنٹ اپنا کوڈ چلاتا ہے: + - **اسٹیٹک** ایجنٹس ایک مخصوص نیٹ ورک نوڈ پر کام کرتے ہیں۔ + - **موبائل** ایجنٹس اپنے کوڈ کو نیٹ ورک نوڈز کے درمیان منتقل کر سکتے ہیں۔ +* ان کے رویے کے لحاظ سے: + - **پیسِو ایجنٹس** کے کوئی خاص مقاصد نہیں ہوتے۔ ایسے ایجنٹس بیرونی محرکات پر ردعمل دے سکتے ہیں، لیکن خود سے کوئی عمل شروع نہیں کریں گے۔ + - **ایکٹیو ایجنٹس** کے کچھ مقاصد ہوتے ہیں جن کا وہ تعاقب کرتے ہیں۔ + - **کاگنیٹو ایجنٹس** پیچیدہ منصوبہ بندی اور استدلال شامل کرتے ہیں۔ + +آج کل ملٹی ایجنٹ سسٹمز کئی ایپلیکیشنز میں استعمال ہو رہے ہیں: + +* گیمز میں، بہت سے نان پلیئر کریکٹرز کسی نہ کسی قسم کی AI کا استعمال کرتے ہیں، اور انہیں ذہین ایجنٹس سمجھا جا سکتا ہے۔ +* ویڈیو پروڈکشن میں، ہجوم پر مشتمل پیچیدہ 3D مناظر کو رینڈر کرنے کے لیے عام طور پر ملٹی ایجنٹ سیمولیشن کا استعمال کیا جاتا ہے۔ +* سسٹمز ماڈلنگ میں، ملٹی ایجنٹ طریقہ کار کو ایک پیچیدہ ماڈل کے رویے کی نقل کرنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، ملٹی ایجنٹ طریقہ کار کو COVID-19 بیماری کے عالمی پھیلاؤ کی پیش گوئی کے لیے کامیابی سے استعمال کیا گیا ہے۔ اسی طرح کا طریقہ کار شہر میں ٹریفک کو ماڈل کرنے کے لیے استعمال کیا جا سکتا ہے، اور یہ دیکھنے کے لیے کہ ٹریفک قوانین میں تبدیلیوں پر یہ کیسے ردعمل ظاہر کرتا ہے۔ +* پیچیدہ آٹومیشن سسٹمز میں، ہر ڈیوائس ایک آزاد ایجنٹ کے طور پر کام کر سکتی ہے، جو پورے نظام کو کم یکجہتی اور زیادہ مضبوط بناتی ہے۔ + +ہم ملٹی ایجنٹ سسٹمز میں گہرائی میں جانے کے لیے زیادہ وقت نہیں گزاریں گے، لیکن **ملٹی ایجنٹ ماڈلنگ** کی ایک مثال پر غور کریں گے۔ + +## نیٹ لوگو + +[NetLogo](https://ccl.northwestern.edu/netlogo/) ایک ملٹی ایجنٹ ماڈلنگ ماحول ہے جو [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) پروگرامنگ زبان کے ایک ترمیم شدہ ورژن پر مبنی ہے۔ یہ زبان بچوں کو پروگرامنگ کے تصورات سکھانے کے لیے تیار کی گئی تھی، اور یہ آپ کو ایک ایجنٹ کو کنٹرول کرنے کی اجازت دیتی ہے جسے **ٹَرٹل** کہا جاتا ہے، جو حرکت کر سکتا ہے اور پیچھے ایک نشان چھوڑ سکتا ہے۔ یہ پیچیدہ جیومیٹرک اشکال بنانے کی اجازت دیتا ہے، جو ایجنٹ کے رویے کو سمجھنے کا ایک بہت بصری طریقہ ہے۔ + +NetLogo میں، ہم `create-turtles` کمانڈ کا استعمال کرتے ہوئے کئی ٹرٹلز بنا سکتے ہیں۔ ہم پھر تمام ٹرٹلز کو کچھ اعمال کرنے کا حکم دے سکتے ہیں (نیچے دیے گئے مثال میں - 10 پوائنٹس آگے بڑھنا): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +ظاہر ہے، یہ دلچسپ نہیں ہوتا جب تمام ٹرٹلز ایک ہی کام کرتے ہیں، اس لیے ہم `ask` کمانڈ کا استعمال کرتے ہوئے ٹرٹلز کے گروپس کو حکم دے سکتے ہیں، مثلاً وہ جو کسی خاص نقطے کے قریب ہوں۔ ہم `breed [cats cat]` کمانڈ کا استعمال کرتے ہوئے مختلف *نسلوں* کے ٹرٹلز بھی بنا سکتے ہیں۔ یہاں `cat` نسل کا نام ہے، اور ہمیں واحد اور جمع دونوں الفاظ کی وضاحت کرنی ہوگی، کیونکہ مختلف کمانڈز وضاحت کے لیے مختلف شکلیں استعمال کرتی ہیں۔ + +> ✅ ہم NetLogo زبان سیکھنے میں زیادہ وقت نہیں گزاریں گے - اگر آپ مزید سیکھنے میں دلچسپی رکھتے ہیں تو آپ شاندار [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) وسائل کا دورہ کر سکتے ہیں۔ + +آپ NetLogo کو [ڈاؤن لوڈ](https://ccl.northwestern.edu/netlogo/download.shtml) اور انسٹال کر کے آزما سکتے ہیں۔ + +### ماڈلز لائبریری + +NetLogo کی ایک زبردست خصوصیت یہ ہے کہ اس میں کام کرنے والے ماڈلز کی ایک لائبریری موجود ہے جسے آپ آزما سکتے ہیں۔ **File → Models Library** پر جائیں، اور آپ کے پاس ماڈلز کے کئی زمروں میں سے انتخاب کرنے کا آپشن ہوگا۔ + +NetLogo Models Library + +> دمتری سوشنیکوف کے ذریعہ ماڈلز لائبریری کا اسکرین شاٹ + +آپ ماڈلز میں سے ایک کھول سکتے ہیں، مثلاً **Biology → Flocking**۔ + +### بنیادی اصول + +ماڈل کھولنے کے بعد، آپ کو NetLogo کی مرکزی اسکرین پر لے جایا جاتا ہے۔ یہاں ایک نمونہ ماڈل ہے جو بھیڑیوں اور بھیڑوں کی آبادی کو محدود وسائل (گھاس) کے ساتھ بیان کرتا ہے۔ + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ur.png) + +> دمتری سوشنیکوف کے ذریعہ اسکرین شاٹ + +اس اسکرین پر، آپ دیکھ سکتے ہیں: + +* **انٹرفیس** سیکشن، جس میں شامل ہیں: + - مرکزی میدان، جہاں تمام ایجنٹس رہتے ہیں + - مختلف کنٹرولز: بٹن، سلائیڈرز، وغیرہ + - گراف، جنہیں آپ سیمولیشن کے پیرامیٹرز کو ظاہر کرنے کے لیے استعمال کر سکتے ہیں +* **کوڈ** ٹیب، جس میں ایڈیٹر شامل ہے، جہاں آپ NetLogo پروگرام لکھ سکتے ہیں + +زیادہ تر معاملات میں، انٹرفیس میں ایک **Setup** بٹن ہوگا، جو سیمولیشن کی حالت کو شروع کرتا ہے، اور ایک **Go** بٹن ہوگا جو عمل درآمد شروع کرتا ہے۔ یہ متعلقہ ہینڈلرز کے ذریعے کوڈ میں سنبھالے جاتے ہیں، جو اس طرح نظر آتے ہیں: + +``` +to go [ +... +] +``` + +NetLogo کی دنیا درج ذیل اشیاء پر مشتمل ہے: + +* **ایجنٹس** (ٹرٹلز) جو میدان میں حرکت کر سکتے ہیں اور کچھ کر سکتے ہیں۔ آپ `ask turtles [...]` نحو کا استعمال کرتے ہوئے ایجنٹس کو حکم دیتے ہیں، اور بریکٹ میں کوڈ تمام ایجنٹس کے ذریعہ *ٹرٹل موڈ* میں چلایا جاتا ہے۔ +* **پیچز** میدان کے مربع علاقے ہیں، جن پر ایجنٹس رہتے ہیں۔ آپ ایک ہی پیچ پر موجود تمام ایجنٹس کا حوالہ دے سکتے ہیں، یا آپ پیچ کے رنگ اور دیگر خصوصیات کو تبدیل کر سکتے ہیں۔ آپ پیچز کو کچھ کرنے کے لیے `ask patches` بھی استعمال کر سکتے ہیں۔ +* **آبزرور** ایک منفرد ایجنٹ ہے جو دنیا کو کنٹرول کرتا ہے۔ تمام بٹن ہینڈلرز *آبزرور موڈ* میں چلائے جاتے ہیں۔ + +> ✅ ملٹی ایجنٹ ماحول کی خوبصورتی یہ ہے کہ ٹرٹل موڈ یا پیچ موڈ میں چلنے والا کوڈ تمام ایجنٹس کے ذریعہ ایک ہی وقت میں متوازی طور پر چلایا جاتا ہے۔ اس طرح، تھوڑا سا کوڈ لکھ کر اور انفرادی ایجنٹ کے رویے کو پروگرام کر کے، آپ پورے سیمولیشن سسٹم کے پیچیدہ رویے کو تخلیق کر سکتے ہیں۔ + +### فلوکنگ + +ملٹی ایجنٹ رویے کی ایک مثال کے طور پر، **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** پر غور کریں۔ فلوکنگ ایک پیچیدہ نمونہ ہے جو پرندوں کے جھنڈ کے اڑنے کے انداز سے بہت مشابہت رکھتا ہے۔ انہیں اڑتے ہوئے دیکھ کر آپ سوچ سکتے ہیں کہ وہ کسی قسم کے اجتماعی الگورتھم کی پیروی کر رہے ہیں، یا ان کے پاس کسی قسم کی *اجتماعی ذہانت* ہے۔ تاہم، یہ پیچیدہ رویہ اس وقت پیدا ہوتا ہے جب ہر انفرادی ایجنٹ (اس صورت میں، ایک *پرندہ*) صرف اپنے قریب کے کچھ دوسرے ایجنٹس کا مشاہدہ کرتا ہے، اور تین سادہ اصولوں پر عمل کرتا ہے: + +* **الائنمنٹ** - یہ قریبی ایجنٹس کی اوسط سمت کی طرف مڑتا ہے۔ +* **کوہیشن** - یہ ہمسایوں کی اوسط پوزیشن کی طرف مڑنے کی کوشش کرتا ہے (*طویل فاصلے کی کشش*)۔ +* **سیپریشن** - جب دوسرے پرندوں کے بہت قریب آتا ہے، تو یہ دور جانے کی کوشش کرتا ہے (*قلیل فاصلے کی مزاحمت*)۔ + +آپ فلوکنگ کی مثال چلا سکتے ہیں اور رویے کا مشاہدہ کر سکتے ہیں۔ آپ پیرامیٹرز کو بھی ایڈجسٹ کر سکتے ہیں، جیسے *علیحدگی کی ڈگری*، یا *دیکھنے کی حد*، جو یہ طے کرتی ہے کہ ہر پرندہ کتنی دور تک دیکھ سکتا ہے۔ نوٹ کریں کہ اگر آپ دیکھنے کی حد کو 0 تک کم کر دیں، تو تمام پرندے اندھے ہو جاتے ہیں، اور فلوکنگ رک جاتی ہے۔ اگر آپ علیحدگی کو 0 تک کم کر دیں، تو تمام پرندے ایک سیدھی لائن میں جمع ہو جاتے ہیں۔ + +> ✅ **کوڈ** ٹیب پر جائیں اور دیکھیں کہ فلوکنگ کے تین اصول (الائنمنٹ، کوہیشن اور سیپریشن) کوڈ میں کہاں نافذ کیے گئے ہیں۔ نوٹ کریں کہ ہم صرف ان ایجنٹس کا حوالہ دیتے ہیں جو نظر میں ہیں۔ + +### دیکھنے کے لیے دیگر ماڈلز + +کچھ اور دلچسپ ماڈلز ہیں جن کے ساتھ آپ تجربہ کر سکتے ہیں: + +* **Art → Fireworks** دکھاتا ہے کہ آتشبازی کو انفرادی فائر اسٹریمز کے اجتماعی رویے کے طور پر کیسے سمجھا جا سکتا ہے۔ +* **Social Science → Traffic Basic** اور **Social Science → Traffic Grid** شہر کے ٹریفک کا ماڈل 1D اور 2D گرڈ میں ٹریفک لائٹس کے ساتھ یا بغیر دکھاتے ہیں۔ سیمولیشن میں ہر کار درج ذیل اصولوں پر عمل کرتی ہے: + - اگر اس کے سامنے کی جگہ خالی ہو - رفتار بڑھائیں (ایک خاص زیادہ سے زیادہ رفتار تک) + - اگر سامنے رکاوٹ نظر آئے - بریک لگائیں (اور آپ ایڈجسٹ کر سکتے ہیں کہ ڈرائیور کتنی دور تک دیکھ سکتا ہے) +* **Social Science → Party** دکھاتا ہے کہ کاک ٹیل پارٹی کے دوران لوگ کیسے گروپ بناتے ہیں۔ آپ ان پیرامیٹرز کے امتزاج کو تلاش کر سکتے ہیں جو گروپ کی خوشی میں تیزی سے اضافے کا باعث بنتے ہیں۔ + +جیسا کہ آپ ان مثالوں سے دیکھ سکتے ہیں، ملٹی ایجنٹ سیمولیشنز انفرادی طور پر ایک جیسے یا ملتے جلتے منطق پر عمل کرنے والے افراد پر مشتمل پیچیدہ نظام کے رویے کو سمجھنے کا ایک مفید طریقہ ہو سکتی ہیں۔ یہ ورچوئل ایجنٹس، جیسے [NPCs](https://en.wikipedia.org/wiki/NPC) کو کمپیوٹر گیمز میں یا 3D اینیمیٹڈ دنیا میں کنٹرول کرنے کے لیے بھی استعمال کی جا سکتی ہیں۔ + +## ڈیلیبریٹو ایجنٹس + +اوپر بیان کردہ ایجنٹس بہت سادہ ہیں، جو ماحول میں تبدیلیوں پر کسی قسم کے الگورتھم کا استعمال کرتے ہوئے ردعمل ظاہر کرتے ہیں۔ اس طرح، وہ **ری ایکٹو ایجنٹس** ہیں۔ تاہم، بعض اوقات ایجنٹس استدلال کر سکتے ہیں اور اپنے اعمال کی منصوبہ بندی کر سکتے ہیں، اس صورت میں انہیں **ڈیلیبریٹو** کہا جاتا ہے۔ + +ایک عام مثال ایک ذاتی ایجنٹ ہوگی جو انسان سے چھٹیوں کے دورے کی بکنگ کے لیے ہدایت حاصل کرتا ہے۔ فرض کریں کہ انٹرنیٹ پر بہت سے ایجنٹس موجود ہیں جو اس کی مدد کر سکتے ہیں۔ اسے پھر دوسرے ایجنٹس سے رابطہ کرنا چاہیے تاکہ یہ دیکھ سکے کہ کون سی پروازیں دستیاب ہیں، مختلف تاریخوں کے لیے ہوٹل کی قیمتیں کیا ہیں، اور بہترین قیمت پر بات چیت کرنے کی کوشش کریں۔ جب چھٹیوں کا منصوبہ مکمل ہو جائے اور مالک کی طرف سے تصدیق ہو جائے، تو یہ بکنگ کے ساتھ آگے بڑھ سکتا ہے۔ + +ایسا کرنے کے لیے، ایجنٹس کو **مواصلات** کی ضرورت ہوتی ہے۔ کامیاب مواصلات کے لیے انہیں درج ذیل کی ضرورت ہوتی ہے: + +* **علم کے تبادلے کے لیے معیاری زبانیں**، جیسے [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) اور [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML)۔ یہ زبانیں [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act) کی بنیاد پر ڈیزائن کی گئی ہیں۔ +* ان زبانوں میں **مذاکرات کے پروٹوکولز** بھی شامل ہونے چاہئیں، جو مختلف **نیلامی کی اقسام** پر مبنی ہوں۔ +* استعمال کے لیے ایک **مشترکہ اونٹولوجی**، تاکہ وہ ایک ہی تصورات کا حوالہ دے سکیں اور ان کے معنی کو جان سکیں۔ +* یہ دریافت کرنے کا ایک طریقہ کہ مختلف ایجنٹس کیا کر سکتے ہیں، جو کسی قسم کی اونٹولوجی پر بھی مبنی ہو۔ + +ڈیلیبریٹو ایجنٹس ری ایکٹو ایجنٹس کے مقابلے میں کہیں زیادہ پیچیدہ ہیں، کیونکہ وہ صرف ماحول میں تبدیلیوں پر ردعمل ظاہر نہیں کرتے، بلکہ انہیں *اعمال شروع کرنے* کے قابل بھی ہونا چاہیے۔ ڈیلیبریٹو ایجنٹس کے لیے تجویز کردہ آرکیٹیکچرز میں سے ایک **Belief-Desire-Intention (BDI)** ایجنٹ ہے: + +* **Beliefs** ایجنٹ کے ماحول کے بارے میں علم کا ایک مجموعہ تشکیل دیتے ہیں۔ یہ ایک نالج بیس یا قواعد کے سیٹ کے طور پر تشکیل دیا جا سکتا ہے جسے ایجنٹ ماحول میں کسی خاص صورتحال پر لاگو کر سکتا ہے۔ +* **Desires** اس بات کی وضاحت کرتے ہیں کہ ایجنٹ کیا کرنا چاہتا ہے، یعنی اس کے مقاصد۔ مثال کے طور پر، اوپر بیان کردہ ذاتی معاون ایجنٹ کا مقصد ایک دورے کی بکنگ کرنا ہے، اور ہوٹل ایجنٹ کا مقصد منافع کو زیادہ سے زیادہ کرنا ہے۔ +* **Intentions** وہ مخصوص اعمال ہیں جو ایجنٹ اپنے مقاصد کے حصول کے لیے منصوبہ بندی کرتا ہے۔ اعمال عام طور پر ماحول کو تبدیل کرتے ہیں اور دوسرے ایجنٹس کے ساتھ مواصلات کا سبب بنتے ہیں۔ + +ملٹی ایجنٹ سسٹمز بنانے کے لیے کچھ پلیٹ فارمز دستیاب ہیں، جیسے [JADE](https://jade.tilab.com/)۔ [یہ مقالہ](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) ملٹی ایجنٹ پلیٹ فارمز کا جائزہ فراہم کرتا ہے، ساتھ ہی ملٹی ایجنٹ سسٹمز کی مختصر تاریخ اور ان کے مختلف استعمال کے منظرنامے بھی۔ + +## نتیجہ + +ملٹی ایجنٹ سسٹمز مختلف شکلیں اختیار کر سکتے ہیں اور مختلف ایپلیکیشنز میں استعمال ہو سکتے ہیں۔ +یہ سب انفرادی ایجنٹ کے سادہ رویے پر توجہ مرکوز کرتے ہیں، اور **سینرجیٹک اثر** کی وجہ سے پورے نظام کے زیادہ پیچیدہ رویے کو حاصل کرتے ہیں۔ + +## 🚀 چیلنج + +اس سبق کو حقیقی دنیا میں لے جائیں اور ایک مسئلہ حل کرنے کے لیے ملٹی ایجنٹ سسٹم کا تصور کرنے کی کوشش کریں۔ مثال کے طور پر، ایک ملٹی ایجنٹ سسٹم کو اسکول بس کے راستے کو بہتر بنانے کے لیے کیا کرنے کی ضرورت ہوگی؟ یہ ایک بیکری میں کیسے کام کر سکتا ہے؟ + +## [لیکچر کے بعد کا کوئز](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## جائزہ اور خود مطالعہ + +صنعت میں اس قسم کے نظام کے استعمال کا جائزہ لیں۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستگی ہو سکتی ہیں۔ اصل دستاویز، جو اس کی اصل زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ur/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..345278d4 --- /dev/null +++ b/translations/ur/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# نیٹ لوگو اسائنمنٹ + +نیٹ لوگو کی لائبریری میں سے ایک ماڈل منتخب کریں اور اسے حقیقی زندگی کی صورتحال کی جتنی ممکن ہو قریب سے نقل کرنے کے لیے استعمال کریں۔ ایک اچھا مثال یہ ہو سکتی ہے کہ متبادل ویژولائزیشنز فولڈر میں موجود وائرس ماڈل کو ایڈجسٹ کریں تاکہ یہ دکھایا جا سکے کہ اسے COVID-19 کے پھیلاؤ کو ماڈل کرنے کے لیے کیسے استعمال کیا جا سکتا ہے۔ کیا آپ ایسا ماڈل بنا سکتے ہیں جو حقیقی زندگی میں وائرس کے پھیلاؤ کی نقل کرے؟ + +اپنا کام دکھانے کے لیے ایک کاپی محفوظ کریں اور ایک ویڈیو ڈیمو بنائیں جس میں وضاحت کریں کہ ماڈل حقیقی دنیا کی صورتحال سے کیسے جڑا ہوا ہے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/7-Ethics/README.md b/translations/ur/lessons/7-Ethics/README.md new file mode 100644 index 00000000..e3fd51ed --- /dev/null +++ b/translations/ur/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# اخلاقی اور ذمہ دار AI + +آپ اس کورس کو تقریباً مکمل کر چکے ہیں، اور مجھے امید ہے کہ اب تک آپ واضح طور پر دیکھ سکتے ہیں کہ AI کئی رسمی ریاضیاتی طریقوں پر مبنی ہے جو ہمیں ڈیٹا میں تعلقات تلاش کرنے اور ماڈلز کو انسانی رویے کے کچھ پہلوؤں کی نقل کرنے کے لیے تربیت دینے کی اجازت دیتے ہیں۔ اس وقت کی تاریخ میں، ہم AI کو ایک بہت طاقتور ٹول سمجھتے ہیں جو ڈیٹا سے پیٹرنز نکالنے اور ان پیٹرنز کو نئے مسائل حل کرنے کے لیے استعمال کرنے میں مدد دیتا ہے۔ + +## [لیکچر سے پہلے کا کوئز](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +تاہم، سائنس فکشن میں ہم اکثر ایسی کہانیاں دیکھتے ہیں جہاں AI انسانیت کے لیے خطرہ پیش کرتا ہے۔ عام طور پر یہ کہانیاں کسی قسم کی AI بغاوت کے گرد گھومتی ہیں، جب AI انسانوں کا سامنا کرنے کا فیصلہ کرتا ہے۔ اس کا مطلب یہ ہے کہ AI کے پاس کسی قسم کا جذبہ یا اپنے ڈویلپرز کی توقعات سے ہٹ کر فیصلے کرنے کی صلاحیت ہے۔ + +اس کورس میں جس قسم کے AI کے بارے میں ہم نے سیکھا ہے وہ صرف بڑی میٹرکس ریاضی ہے۔ یہ ہمارے مسائل حل کرنے میں مدد دینے کے لیے ایک بہت طاقتور ٹول ہے، اور کسی بھی دوسرے طاقتور ٹول کی طرح - اسے اچھے اور برے مقاصد کے لیے استعمال کیا جا سکتا ہے۔ اہم بات یہ ہے کہ اسے *غلط استعمال* کیا جا سکتا ہے۔ + +## ذمہ دار AI کے اصول + +AI کے حادثاتی یا جان بوجھ کر غلط استعمال سے بچنے کے لیے، Microsoft نے [ذمہ دار AI کے اصول](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) بیان کیے ہیں۔ درج ذیل تصورات ان اصولوں کی بنیاد ہیں: + +* **منصفانہ ہونا** ماڈل کے تعصبات کے اہم مسئلے سے متعلق ہے، جو تربیت کے لیے متعصب ڈیٹا استعمال کرنے کی وجہ سے ہو سکتے ہیں۔ مثال کے طور پر، جب ہم کسی شخص کے لیے سافٹ ویئر ڈویلپر کی نوکری حاصل کرنے کے امکان کی پیش گوئی کرنے کی کوشش کرتے ہیں، تو ماڈل ممکنہ طور پر مردوں کو زیادہ ترجیح دے گا - صرف اس لیے کہ تربیتی ڈیٹا سیٹ ممکنہ طور پر مرد سامعین کی طرف متعصب تھا۔ ہمیں تربیتی ڈیٹا کو احتیاط سے متوازن کرنا ہوگا اور ماڈل کی جانچ کرنی ہوگی تاکہ تعصبات سے بچا جا سکے، اور یہ یقینی بنانا ہوگا کہ ماڈل زیادہ متعلقہ خصوصیات کو مدنظر رکھے۔ +* **قابل اعتماد اور محفوظ ہونا**۔ اپنی نوعیت کے لحاظ سے، AI ماڈلز غلطیاں کر سکتے ہیں۔ ایک نیورل نیٹ ورک امکانات واپس کرتا ہے، اور ہمیں فیصلے کرتے وقت اسے مدنظر رکھنا ہوگا۔ ہر ماڈل کی کچھ درستگی اور یادداشت ہوتی ہے، اور ہمیں یہ سمجھنا ہوگا تاکہ غلط مشورے سے ہونے والے نقصان کو روکا جا سکے۔ +* **پرائیویسی اور سیکیورٹی** کے کچھ AI سے متعلق مضمرات ہیں۔ مثال کے طور پر، جب ہم کسی ماڈل کو تربیت دینے کے لیے کچھ ڈیٹا استعمال کرتے ہیں، تو یہ ڈیٹا کسی حد تک ماڈل میں "ضم" ہو جاتا ہے۔ ایک طرف، یہ سیکیورٹی اور پرائیویسی کو بڑھاتا ہے، دوسری طرف - ہمیں یاد رکھنا ہوگا کہ ماڈل کس ڈیٹا پر تربیت یافتہ تھا۔ +* **شمولیت** کا مطلب یہ ہے کہ ہم AI لوگوں کی جگہ لینے کے لیے نہیں بلکہ لوگوں کو بڑھانے اور ہمارے کام کو زیادہ تخلیقی بنانے کے لیے بنا رہے ہیں۔ یہ منصفانہ ہونے سے بھی متعلق ہے، کیونکہ جب کم نمائندگی والے کمیونٹیز کے ساتھ معاملہ کرتے ہیں، تو زیادہ تر ڈیٹا سیٹس جو ہم جمع کرتے ہیں ممکنہ طور پر متعصب ہوتے ہیں، اور ہمیں یہ یقینی بنانا ہوگا کہ ان کمیونٹیز کو شامل کیا جائے اور AI کے ذریعے صحیح طریقے سے ہینڈل کیا جائے۔ +* **شفافیت**۔ اس میں یہ یقینی بنانا شامل ہے کہ ہم ہمیشہ واضح کریں کہ AI استعمال ہو رہا ہے۔ نیز، جہاں ممکن ہو، ہم ایسے AI سسٹمز استعمال کرنا چاہتے ہیں جو *قابل وضاحت* ہوں۔ +* **جوابدہی**۔ جب AI ماڈلز کچھ فیصلے کرتے ہیں، تو یہ ہمیشہ واضح نہیں ہوتا کہ ان فیصلوں کی ذمہ داری کس پر ہے۔ ہمیں یہ یقینی بنانا ہوگا کہ ہم سمجھتے ہیں کہ AI کے فیصلوں کی ذمہ داری کہاں ہے۔ زیادہ تر معاملات میں ہم اہم فیصلے کرنے کے عمل میں انسانوں کو شامل کرنا چاہیں گے، تاکہ اصل لوگوں کو جوابدہ بنایا جا سکے۔ + +## ذمہ دار AI کے لیے ٹولز + +Microsoft نے [ذمہ دار AI ٹول باکس](https://github.com/microsoft/responsible-ai-toolbox) تیار کیا ہے جس میں کئی ٹولز شامل ہیں: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard جس میں شامل ہیں: + + - EconML - Causal Analysis کے لیے ٹول، جو "کیا ہو اگر" سوالات پر توجہ دیتا ہے + - DiCE - Counterfactual Analysis کے لیے ٹول جو آپ کو دکھاتا ہے کہ ماڈل کے فیصلے کو متاثر کرنے کے لیے کون سی خصوصیات کو تبدیل کرنے کی ضرورت ہے + +AI Ethics کے بارے میں مزید معلومات کے لیے، براہ کرم [یہ سبق](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) دیکھیں جو مشین لرننگ نصاب میں اسائنمنٹس شامل کرتا ہے۔ + +## جائزہ اور خود مطالعہ + +ذمہ دار AI کے بارے میں مزید جاننے کے لیے یہ [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) لیں۔ + +## [لیکچر کے بعد کا کوئز](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/README.md b/translations/ur/lessons/README.md new file mode 100644 index 00000000..12fcda08 --- /dev/null +++ b/translations/ur/lessons/README.md @@ -0,0 +1,17 @@ + +# جائزہ + +![ڈوڈل میں جائزہ](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ur.png) + +> اسکیچ نوٹ از [Tomomi Imura](https://twitter.com/girlie_mac) + +**ڈس کلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز، جو اس کی مقامی زبان میں ہے، کو مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/X-Extras/X1-MultiModal/README.md b/translations/ur/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..184a5aa5 --- /dev/null +++ b/translations/ur/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# ملٹی موڈل نیٹ ورکس + +ٹرانسفارمر ماڈلز کی NLP ٹاسکس میں کامیابی کے بعد، وہی یا ملتے جلتے آرکیٹیکچرز کمپیوٹر وژن ٹاسکس کے لیے بھی استعمال کیے گئے۔ اب ایسے ماڈلز بنانے میں دلچسپی بڑھ رہی ہے جو وژن اور نیچرل لینگویج کی صلاحیتوں کو *یکجا* کر سکیں۔ ان کوششوں میں سے ایک OpenAI کی جانب سے کی گئی، جسے CLIP اور DALL.E کہا جاتا ہے۔ + +## کانٹراسٹو امیج پری ٹریننگ (CLIP) + +CLIP کا بنیادی خیال یہ ہے کہ ٹیکسٹ پرامپٹس کو کسی تصویر کے ساتھ موازنہ کیا جا سکے اور یہ معلوم کیا جا سکے کہ تصویر پرامپٹ سے کتنی مطابقت رکھتی ہے۔ + +![CLIP آرکیٹیکچر](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ur.png) + +> *تصویر [اس بلاگ پوسٹ](https://openai.com/blog/clip/) سے لی گئی ہے* + +ماڈل انٹرنیٹ سے حاصل کردہ تصاویر اور ان کے کیپشنز پر تربیت یافتہ ہے۔ ہر بیچ کے لیے، ہم N جوڑوں (تصویر، ٹیکسٹ) کو لیتے ہیں اور انہیں کسی ویکٹر ریپریزنٹیشن میں تبدیل کرتے ہیں۔ + +ان ریپریزنٹیشنز کو پھر آپس میں میچ کیا جاتا ہے۔ لاس فنکشن اس طرح سے ڈیفائن کیا گیا ہے کہ ایک جوڑے (مثلاً I اور T) کے ویکٹرز کے درمیان کوسائن سمیلیریٹی کو زیادہ سے زیادہ کیا جائے، اور باقی تمام جوڑوں کے درمیان کوسائن سمیلیریٹی کو کم سے کم کیا جائے۔ یہی وجہ ہے کہ اس اپروچ کو **کانٹراسٹو** کہا جاتا ہے۔ + +CLIP ماڈل/لائبریری [OpenAI GitHub](https://github.com/openai/CLIP) سے دستیاب ہے۔ اس اپروچ کو [اس بلاگ پوسٹ](https://openai.com/blog/clip/) اور مزید تفصیل سے [اس پیپر](https://arxiv.org/pdf/2103.00020.pdf) میں بیان کیا گیا ہے۔ + +ایک بار جب یہ ماڈل پری ٹرین ہو جائے، تو ہم اسے تصاویر کے ایک بیچ اور ٹیکسٹ پرامپٹس کے ایک بیچ دے سکتے ہیں، اور یہ ایک ٹینسر کے ساتھ پروبیبلیٹیز واپس کرے گا۔ CLIP کو کئی ٹاسکس کے لیے استعمال کیا جا سکتا ہے: + +**امیج کلاسیفکیشن** + +فرض کریں ہمیں تصاویر کو بلیوں، کتوں اور انسانوں کے درمیان کلاسیفائی کرنا ہے۔ اس صورت میں، ہم ماڈل کو ایک تصویر اور ٹیکسٹ پرامپٹس کی ایک سیریز دیتے ہیں: "*بلی کی تصویر*", "*کتے کی تصویر*", "*انسان کی تصویر*۔" نتیجے میں ملنے والے 3 پروبیبلیٹیز کے ویکٹر میں ہمیں صرف سب سے زیادہ ویلیو والے انڈیکس کو منتخب کرنا ہوگا۔ + +![امیج کلاسیفکیشن کے لیے CLIP](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ur.png) + +> *تصویر [اس بلاگ پوسٹ](https://openai.com/blog/clip/) سے لی گئی ہے* + +**ٹیکسٹ پر مبنی امیج سرچ** + +ہم اس کے برعکس بھی کر سکتے ہیں۔ اگر ہمارے پاس تصاویر کا ایک مجموعہ ہو، تو ہم اس مجموعے کو ماڈل میں دے سکتے ہیں اور ایک ٹیکسٹ پرامپٹ - یہ ہمیں وہ تصویر دے گا جو دیے گئے پرامپٹ سے سب سے زیادہ مشابہ ہو۔ + +## ✍️ مثال: [CLIP کا استعمال امیج کلاسیفکیشن اور امیج سرچ کے لیے](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +[Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) نوٹ بک کھولیں تاکہ CLIP کو ایکشن میں دیکھ سکیں۔ + +## VQGAN+CLIP کے ساتھ امیج جنریشن + +CLIP کو **امیج جنریشن** کے لیے بھی استعمال کیا جا سکتا ہے، جو کہ کسی ٹیکسٹ پرامپٹ سے کی جاتی ہے۔ اس کے لیے ہمیں ایک **جنریٹر ماڈل** کی ضرورت ہوتی ہے جو کسی ویکٹر ان پٹ کی بنیاد پر تصاویر بنا سکے۔ ان میں سے ایک ماڈل [VQGAN](https://compvis.github.io/taming-transformers/) (ویکٹر-کوانٹائزڈ GAN) کہلاتا ہے۔ + +VQGAN کی وہ بنیادی باتیں جو اسے عام [GAN](../../4-ComputerVision/10-GANs/README.md) سے مختلف بناتی ہیں، درج ذیل ہیں: +* آٹو ریگریسیو ٹرانسفارمر آرکیٹیکچر کا استعمال، جو تصویر کے سیاق و سباق سے بھرپور حصے تیار کرتا ہے۔ یہ بصری حصے [CNN](../../4-ComputerVision/07-ConvNets/README.md) کے ذریعے سیکھے جاتے ہیں۔ +* سب-امیج ڈسکریمینیٹر کا استعمال، جو یہ پتہ لگاتا ہے کہ تصویر کے حصے "حقیقی" ہیں یا "جعلی" (روایتی GAN کے "سب یا کچھ نہیں" اپروچ کے برعکس)۔ + +VQGAN کے بارے میں مزید جاننے کے لیے [Taming Transformers](https://compvis.github.io/taming-transformers/) ویب سائٹ دیکھیں۔ + +VQGAN اور روایتی GAN کے درمیان ایک اہم فرق یہ ہے کہ روایتی GAN کسی بھی ان پٹ ویکٹر سے ایک معقول تصویر بنا سکتا ہے، جبکہ VQGAN ممکنہ طور پر ایک غیر مربوط تصویر بنا سکتا ہے۔ لہذا، ہمیں امیج کریشن کے عمل کو مزید گائیڈ کرنے کی ضرورت ہوتی ہے، اور یہ CLIP کے ذریعے کیا جا سکتا ہے۔ + +![VQGAN+CLIP آرکیٹیکچر](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ur.png) + +کسی ٹیکسٹ پرامپٹ سے مطابقت رکھنے والی تصویر بنانے کے لیے، ہم کسی رینڈم انکوڈنگ ویکٹر سے شروع کرتے ہیں، جو VQGAN کے ذریعے ایک تصویر تیار کرتا ہے۔ پھر CLIP ایک لاس فنکشن تیار کرتا ہے جو یہ ظاہر کرتا ہے کہ تصویر ٹیکسٹ پرامپٹ سے کتنی مطابقت رکھتی ہے۔ اس کے بعد مقصد یہ ہوتا ہے کہ اس لاس کو کم سے کم کیا جائے، بیک پروپیگیشن کے ذریعے ان پٹ ویکٹر کے پیرامیٹرز کو ایڈجسٹ کرتے ہوئے۔ + +VQGAN+CLIP کو نافذ کرنے والی ایک بہترین لائبریری [Pixray](http://github.com/pixray/pixray) ہے۔ + +![Pixray کے ذریعے تیار کردہ تصویر](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ur.png) | ![Pixray کے ذریعے تیار کردہ تصویر](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ur.png) | ![Pixray کے ذریعے تیار کردہ تصویر](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ur.png) +----|----|---- +پرامپٹ سے تیار کردہ تصویر *ایک نوجوان مرد ادب کے استاد کی کتاب کے ساتھ واٹر کلر پورٹریٹ* | پرامپٹ سے تیار کردہ تصویر *ایک نوجوان خاتون کمپیوٹر سائنس کی استاد کا آئل پورٹریٹ کمپیوٹر کے ساتھ* | پرامپٹ سے تیار کردہ تصویر *ایک بوڑھے مرد ریاضی کے استاد کا آئل پورٹریٹ بلیک بورڈ کے سامنے* + +> تصاویر **مصنوعی اساتذہ** کے مجموعے سے، [دمیتری سوشنیکوف](http://soshnikov.com) کی جانب سے + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E GPT-3 کا ایک ورژن ہے جو پرامپٹس سے تصاویر بنانے کے لیے تربیت یافتہ ہے۔ اسے 12-بلین پیرامیٹرز کے ساتھ تربیت دی گئی ہے۔ + +CLIP کے برعکس، DALL-E ٹیکسٹ اور تصویر دونوں کو ایک ہی ٹوکنز کے سلسلے کے طور پر لیتا ہے۔ لہذا، مختلف پرامپٹس سے آپ ٹیکسٹ کی بنیاد پر تصاویر بنا سکتے ہیں۔ + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 اور 2 کے درمیان بنیادی فرق یہ ہے کہ DALL-E 2 زیادہ حقیقت پسندانہ تصاویر اور آرٹ تیار کرتا ہے۔ + +DALL-E کے ساتھ تصاویر کی مثالیں: +![Pixray کے ذریعے تیار کردہ تصویر](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.ur.png) | ![Pixray کے ذریعے تیار کردہ تصویر](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.ur.png) | ![Pixray کے ذریعے تیار کردہ تصویر](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.ur.png) +----|----|---- +پرامپٹ سے تیار کردہ تصویر *ایک نوجوان مرد ادب کے استاد کی کتاب کے ساتھ واٹر کلر پورٹریٹ* | پرامپٹ سے تیار کردہ تصویر *ایک نوجوان خاتون کمپیوٹر سائنس کی استاد کا آئل پورٹریٹ کمپیوٹر کے ساتھ* | پرامپٹ سے تیار کردہ تصویر *ایک بوڑھے مرد ریاضی کے استاد کا آئل پورٹریٹ بلیک بورڈ کے سامنے* + +## حوالہ جات + +* VQGAN پیپر: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP پیپر: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے پوری کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا خامیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے لیے ہم ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/sketchnotes/LICENSE.md b/translations/ur/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..c006bb14 --- /dev/null +++ b/translations/ur/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,113 @@ + +کریٹو کامنز کارپوریشن ("کریٹو کامنز") ایک قانونی فرم نہیں ہے اور قانونی خدمات یا مشورہ فراہم نہیں کرتی۔ کریٹو کامنز کے عوامی لائسنس کی تقسیم وکیل-کلائنٹ یا دیگر تعلقات پیدا نہیں کرتی۔ کریٹو کامنز اپنے لائسنس اور متعلقہ معلومات کو "جیسا ہے" کی بنیاد پر دستیاب کرتا ہے۔ کریٹو کامنز اپنے لائسنس، ان کے شرائط و ضوابط کے تحت لائسنس یافتہ مواد، یا کسی بھی متعلقہ معلومات کے بارے میں کوئی ضمانت نہیں دیتا۔ کریٹو کامنز ان کے استعمال سے ہونے والے نقصانات کے لیے مکمل حد تک ذمہ داری سے انکار کرتا ہے۔ + +کریٹو کامنز عوامی لائسنس کا استعمال + +کریٹو کامنز عوامی لائسنس تخلیق کاروں اور دیگر حقوق رکھنے والوں کو ایک معیاری شرائط و ضوابط فراہم کرتے ہیں تاکہ وہ اپنی تخلیقی کاموں اور دیگر مواد کو کاپی رائٹ اور نیچے دیے گئے عوامی لائسنس میں بیان کردہ مخصوص دیگر حقوق کے تحت شیئر کر سکیں۔ درج ذیل نکات صرف معلوماتی مقاصد کے لیے ہیں، مکمل نہیں ہیں، اور ہمارے لائسنس کا حصہ نہیں ہیں۔ + +لائسنس دینے والوں کے لیے غور و فکر: ہمارے عوامی لائسنس ان لوگوں کے لیے ہیں جو عوام کو مواد کے استعمال کی اجازت دینے کے لیے مجاز ہیں، جو کہ کاپی رائٹ اور مخصوص دیگر حقوق کے تحت محدود ہو سکتا ہے۔ ہمارے لائسنس ناقابل واپسی ہیں۔ لائسنس دینے والوں کو لائسنس کے شرائط و ضوابط کو سمجھنا چاہیے اور اسے لاگو کرنے سے پہلے تمام ضروری حقوق حاصل کرنے چاہئیں تاکہ عوام مواد کو متوقع طور پر دوبارہ استعمال کر سکے۔ لائسنس دینے والوں کو واضح طور پر کسی بھی مواد کو نشان زد کرنا چاہیے جو لائسنس کے تحت نہیں ہے، بشمول دیگر CC-لائسنس یافتہ مواد یا مواد جو کاپی رائٹ کے استثنا یا محدودیت کے تحت استعمال ہوتا ہے۔ مزید معلومات کے لیے: +wiki.creativecommons.org/Considerations_for_licensors + +عوام کے لیے غور و فکر: ہمارے عوامی لائسنس کا استعمال کرتے ہوئے، لائسنس دینے والا عوام کو مخصوص شرائط و ضوابط کے تحت لائسنس یافتہ مواد استعمال کرنے کی اجازت دیتا ہے۔ اگر کسی وجہ سے لائسنس دینے والے کی اجازت ضروری نہیں ہے، جیسے کہ کاپی رائٹ کے کسی استثنا یا محدودیت کی وجہ سے، تو وہ استعمال لائسنس کے تحت نہیں آتا۔ ہمارے لائسنس صرف کاپی رائٹ اور مخصوص دیگر حقوق کے تحت اجازت دیتے ہیں جو لائسنس دینے والا دینے کا مجاز ہے۔ لائسنس یافتہ مواد کا استعمال دیگر وجوہات کی بنا پر محدود ہو سکتا ہے، جیسے کہ دوسروں کے پاس مواد میں کاپی رائٹ یا دیگر حقوق ہوں۔ لائسنس دینے والا خصوصی درخواستیں کر سکتا ہے، جیسے کہ تمام تبدیلیوں کو نشان زد یا بیان کرنے کی درخواست۔ اگرچہ یہ ہمارے لائسنس کے تحت ضروری نہیں ہے، آپ کو ان درخواستوں کا احترام کرنا چاہیے جہاں مناسب ہو۔ مزید معلومات کے لیے: +wiki.creativecommons.org/Considerations_for_licensees + +کریٹو کامنز ایٹریبیوشن-شیئر الائک 4.0 انٹرنیشنل عوامی لائسنس + +لائسنس یافتہ حقوق (نیچے بیان کردہ) کا استعمال کرتے ہوئے، آپ اس کریٹو کامنز ایٹریبیوشن-شیئر الائک 4.0 انٹرنیشنل عوامی لائسنس ("عوامی لائسنس") کے شرائط و ضوابط کو قبول کرتے ہیں اور ان کے پابند ہونے پر رضامند ہوتے ہیں۔ جہاں تک یہ عوامی لائسنس ایک معاہدے کے طور پر سمجھا جا سکتا ہے، آپ کو یہ حقوق ان شرائط و ضوابط کو قبول کرنے کے بدلے دیے جاتے ہیں، اور لائسنس دینے والا آپ کو یہ حقوق ان فوائد کے بدلے دیتا ہے جو لائسنس دینے والا ان شرائط و ضوابط کے تحت لائسنس یافتہ مواد کو دستیاب کرنے سے حاصل کرتا ہے۔ + +حصہ 1 -- تعریفیں۔ + + الف. تبدیل شدہ مواد وہ مواد ہے جو کاپی رائٹ اور اسی طرح کے حقوق کے تحت لائسنس یافتہ مواد سے اخذ یا اس پر مبنی ہو اور جس میں لائسنس یافتہ مواد کو ترجمہ، تبدیل، ترتیب، تبدیل، یا کسی اور طرح سے ترمیم کیا گیا ہو جس کے لیے لائسنس دینے والے کے کاپی رائٹ اور اسی طرح کے حقوق کے تحت اجازت کی ضرورت ہو۔ عوامی لائسنس کے مقاصد کے لیے، جہاں لائسنس یافتہ مواد ایک موسیقی کا کام، پرفارمنس، یا آواز کی ریکارڈنگ ہے، تبدیل شدہ مواد ہمیشہ پیدا ہوتا ہے جہاں لائسنس یافتہ مواد کو حرکت پذیر تصویر کے ساتھ وقت کے تعلق میں ہم آہنگ کیا جاتا ہے۔ + + ب. ایڈاپٹر کا لائسنس وہ لائسنس ہے جو آپ اپنے کاپی رائٹ اور اسی طرح کے حقوق کو تبدیل شدہ مواد میں اپنے تعاون پر اس عوامی لائسنس کے شرائط و ضوابط کے مطابق لاگو کرتے ہیں۔ + + ج. BY-SA ہم آہنگ لائسنس وہ لائسنس ہے جو creativecommons.org/compatiblelicenses پر درج ہے، اور کریٹو کامنز کے ذریعہ اس عوامی لائسنس کے برابر کے طور پر منظور شدہ ہے۔ + + د. کاپی رائٹ اور اسی طرح کے حقوق کا مطلب ہے کاپی رائٹ اور/یا کاپی رائٹ سے قریبی متعلقہ حقوق، بشمول، بغیر کسی حد کے، پرفارمنس، براڈکاسٹ، آواز کی ریکارڈنگ، اور Sui Generis ڈیٹا بیس کے حقوق، بغیر اس بات کی پرواہ کیے کہ حقوق کو کس طرح لیبل یا درجہ بندی کیا گیا ہے۔ عوامی لائسنس کے مقاصد کے لیے، سیکشن 2(b)(1)-(2) میں بیان کردہ حقوق کاپی رائٹ اور اسی طرح کے حقوق نہیں ہیں۔ + + ہ. مؤثر تکنیکی اقدامات وہ اقدامات ہیں جنہیں مناسب اختیار کے بغیر قوانین کے تحت نظرانداز نہیں کیا جا سکتا جو 20 دسمبر 1996 کو اپنائے گئے WIPO کاپی رائٹ معاہدے کے آرٹیکل 11 کے تحت ذمہ داریوں کو پورا کرتے ہیں، اور/یا اسی طرح کے بین الاقوامی معاہدے۔ + + و. استثنا اور محدودیت کا مطلب ہے منصفانہ استعمال، منصفانہ لین دین، اور/یا کاپی رائٹ اور اسی طرح کے حقوق کے کسی بھی دوسرے استثنا یا محدودیت جو آپ کے لائسنس یافتہ مواد کے استعمال پر لاگو ہوتی ہے۔ + + ز. لائسنس عناصر کا مطلب ہے کریٹو کامنز عوامی لائسنس کے نام میں درج لائسنس کی خصوصیات۔ اس عوامی لائسنس کے لائسنس عناصر ایٹریبیوشن اور شیئر الائک ہیں۔ + + ح. لائسنس یافتہ مواد کا مطلب ہے وہ تخلیقی یا ادبی کام، ڈیٹا بیس، یا دیگر مواد جس پر لائسنس دینے والے نے یہ عوامی لائسنس لاگو کیا ہے۔ + + ط. لائسنس یافتہ حقوق کا مطلب ہے وہ حقوق جو آپ کو اس عوامی لائسنس کے شرائط و ضوابط کے تحت دیے گئے ہیں، جو آپ کے لائسنس یافتہ مواد کے استعمال پر لاگو ہونے والے تمام کاپی رائٹ اور اسی طرح کے حقوق تک محدود ہیں اور جنہیں لائسنس دینے والا لائسنس دینے کا اختیار رکھتا ہے۔ + + ی. لائسنس دینے والا کا مطلب ہے وہ فرد یا ادارہ جو اس عوامی لائسنس کے تحت حقوق دے رہا ہے۔ + + ک. شیئر کا مطلب ہے مواد کو عوام تک کسی بھی طریقے یا عمل کے ذریعے فراہم کرنا جس کے لیے لائسنس یافتہ حقوق کے تحت اجازت کی ضرورت ہو، جیسے کہ نقل، عوامی نمائش، عوامی پرفارمنس، تقسیم، اشاعت، مواصلات، یا درآمد، اور مواد کو عوام تک اس طرح سے دستیاب کرنا کہ عوام کے افراد مواد کو اپنی مرضی کے وقت اور جگہ سے حاصل کر سکیں۔ + + ل. Sui Generis ڈیٹا بیس کے حقوق کا مطلب ہے کاپی رائٹ کے علاوہ وہ حقوق جو 11 مارچ 1996 کو یورپی پارلیمنٹ اور کونسل کی ہدایت 96/9/EC کے تحت ڈیٹا بیس کے قانونی تحفظ پر دیے گئے ہیں، جیسا کہ ترمیم شدہ اور/یا کامیاب، نیز دنیا میں کہیں بھی دیگر بنیادی طور پر مساوی حقوق۔ + + م. آپ کا مطلب ہے وہ فرد یا ادارہ جو اس عوامی لائسنس کے تحت لائسنس یافتہ حقوق کا استعمال کر رہا ہے۔ آپ کے لیے اسی طرح کا مطلب ہے۔ + + +حقوق، پھر وہ ڈیٹا بیس جس میں آپ کے پاس Sui Generis ڈیٹا بیس حقوق ہیں (لیکن اس کے انفرادی مواد نہیں) کو "Adapted Material" سمجھا جائے گا، + +بشمول سیکشن 3(b) کے مقاصد کے لیے؛ اور +c. اگر آپ ڈیٹا بیس کے تمام یا زیادہ تر مواد کو شیئر کرتے ہیں تو آپ کو سیکشن 3(a) کی شرائط پر عمل کرنا ہوگا۔ + +وضاحت کے لیے، یہ سیکشن 4 آپ کے اس پبلک لائسنس کے تحت ذمہ داریوں کو پورا کرتا ہے اور ان کی جگہ نہیں لیتا جہاں لائسنس یافتہ حقوق میں دیگر کاپی رائٹ اور اسی طرح کے حقوق شامل ہیں۔ + + +سیکشن 5 -- وارنٹیوں سے دستبرداری اور ذمہ داری کی حد۔ + +a. جب تک لائسنس دینے والے نے الگ سے کوئی وعدہ نہ کیا ہو، ممکنہ حد تک، لائسنس دینے والا لائسنس یافتہ مواد کو "جیسا ہے" اور "جیسے دستیاب ہے" فراہم کرتا ہے، اور لائسنس یافتہ مواد کے بارے میں کسی قسم کی نمائندگی یا ضمانت نہیں دیتا، چاہے وہ واضح ہو، مضمر ہو، قانونی ہو، یا دیگر۔ اس میں، بغیر کسی حد کے، عنوان، تجارتی قابلیت، کسی خاص مقصد کے لیے موزونیت، غیر خلاف ورزی، پوشیدہ یا دیگر نقائص کی عدم موجودگی، درستگی، یا غلطیوں کی موجودگی یا عدم موجودگی شامل ہے، چاہے وہ معلوم ہوں یا دریافت کیے جا سکیں۔ جہاں وارنٹیوں سے دستبرداری مکمل یا جزوی طور پر اجازت نہیں ہے، یہ دستبرداری آپ پر لاگو نہیں ہو سکتی۔ + +b. ممکنہ حد تک، کسی بھی صورت میں لائسنس دینے والا آپ کے لیے کسی قانونی نظریے (بشمول، بغیر کسی حد کے، غفلت) یا دیگر طریقے سے کسی براہ راست، خاص، غیر مستقیم، حادثاتی، نتیجہ خیز، سزا دینے والے، مثالی، یا دیگر نقصانات، اخراجات، خرچ، یا نقصان کے لیے ذمہ دار نہیں ہوگا جو اس پبلک لائسنس یا لائسنس یافتہ مواد کے استعمال سے پیدا ہو، چاہے لائسنس دینے والے کو ایسے نقصانات، اخراجات، خرچ، یا نقصان کے امکان کے بارے میں بتایا گیا ہو۔ جہاں ذمہ داری کی حد مکمل یا جزوی طور پر اجازت نہیں ہے، یہ حد آپ پر لاگو نہیں ہو سکتی۔ + +c. اوپر فراہم کردہ وارنٹیوں سے دستبرداری اور ذمہ داری کی حد کو اس طرح سے سمجھا جائے گا کہ، ممکنہ حد تک، یہ مکمل دستبرداری اور تمام ذمہ داری سے چھوٹ کے قریب ترین انداز میں ہو۔ + + +سیکشن 6 -- مدت اور ختم کرنا۔ + +a. یہ پبلک لائسنس ان کاپی رائٹ اور اسی طرح کے حقوق کی مدت کے لیے لاگو ہوتا ہے جو یہاں لائسنس یافتہ ہیں۔ تاہم، اگر آپ اس پبلک لائسنس کی شرائط پر عمل کرنے میں ناکام رہتے ہیں، تو اس پبلک لائسنس کے تحت آپ کے حقوق خود بخود ختم ہو جاتے ہیں۔ + +b. جہاں سیکشن 6(a) کے تحت لائسنس یافتہ مواد کے استعمال کا آپ کا حق ختم ہو گیا ہے، وہ بحال ہوتا ہے: + +1. خود بخود اس تاریخ سے جب خلاف ورزی درست ہو جائے، بشرطیکہ یہ آپ کی خلاف ورزی کے معلوم ہونے کے 30 دن کے اندر درست ہو جائے؛ یا +2. لائسنس دینے والے کی واضح بحالی کے ذریعے۔ + +وضاحت کے لیے، یہ سیکشن 6(b) لائسنس دینے والے کے کسی بھی حق کو متاثر نہیں کرتا جو آپ کی خلاف ورزیوں کے لیے علاج طلب کرنے کا ہو سکتا ہے۔ + +c. وضاحت کے لیے، لائسنس دینے والا کسی بھی وقت لائسنس یافتہ مواد کو الگ شرائط یا حالات کے تحت پیش کر سکتا ہے یا لائسنس یافتہ مواد کی تقسیم بند کر سکتا ہے؛ تاہم، ایسا کرنے سے یہ پبلک لائسنس ختم نہیں ہوگا۔ + +d. سیکشنز 1، 5، 6، 7، اور 8 اس پبلک لائسنس کے ختم ہونے کے بعد بھی برقرار رہیں گے۔ + + +سیکشن 7 -- دیگر شرائط و حالات۔ + +a. لائسنس دینے والا آپ کی طرف سے بتائی گئی کسی اضافی یا مختلف شرائط و حالات کا پابند نہیں ہوگا جب تک کہ وہ واضح طور پر قبول نہ کرے۔ + +b. لائسنس یافتہ مواد کے بارے میں کوئی بھی انتظامات، سمجھوتے، یا معاہدے جو یہاں بیان نہیں کیے گئے ہیں، اس پبلک لائسنس کی شرائط و حالات سے الگ اور آزاد ہیں۔ + + +سیکشن 8 -- تشریح۔ + +a. وضاحت کے لیے، یہ پبلک لائسنس کسی بھی استعمال کو کم کرنے، محدود کرنے، روکنے، یا شرائط عائد کرنے کے طور پر نہیں سمجھا جائے گا جو لائسنس یافتہ مواد کے قانونی طور پر بغیر اجازت کے کیے جا سکتے ہیں۔ + +b. ممکنہ حد تک، اگر اس پبلک لائسنس کی کوئی شق ناقابل عمل سمجھی جائے، تو اسے خود بخود کم از کم حد تک درست کیا جائے گا تاکہ اسے قابل عمل بنایا جا سکے۔ اگر شق درست نہ کی جا سکے، تو اسے اس پبلک لائسنس سے الگ کر دیا جائے گا بغیر باقی شرائط و حالات کی قابل عملیت کو متاثر کیے۔ + +c. اس پبلک لائسنس کی کوئی شرط یا حالت معاف نہیں کی جائے گی اور کسی ناکامی کو قبول نہیں کیا جائے گا جب تک کہ لائسنس دینے والے کی طرف سے واضح طور پر قبول نہ کیا جائے۔ + +d. اس پبلک لائسنس میں کچھ بھی لائسنس دینے والے یا آپ پر لاگو کسی بھی استثنیٰ اور مراعات کو محدود کرنے یا معاف کرنے کے طور پر نہیں سمجھا جائے گا، بشمول کسی بھی دائرہ اختیار یا اتھارٹی کے قانونی عمل سے۔ + + +======================================================================= + +کریئیٹو کامنز اپنے پبلک لائسنسز کا حصہ نہیں ہے۔ اس کے باوجود، کریئیٹو کامنز اپنے پبلک لائسنسز میں سے کسی کو اس مواد پر لاگو کرنے کا انتخاب کر سکتا ہے جو وہ شائع کرتا ہے اور ان صورتوں میں "لائسنس دینے والا" سمجھا جائے گا۔ کریئیٹو کامنز کے پبلک لائسنسز کا متن CC0 پبلک ڈومین ڈیڈیکیشن کے تحت عوامی ڈومین کے لیے وقف ہے۔ اس بات کی محدود اجازت کے علاوہ کہ مواد کو کریئیٹو کامنز پبلک لائسنس کے تحت شیئر کیا گیا ہے یا جیسا کہ کریئیٹو کامنز کی پالیسیوں میں اجازت دی گئی ہے جو creativecommons.org/policies پر شائع کی گئی ہیں، کریئیٹو کامنز "کریئیٹو کامنز" کے ٹریڈ مارک یا کسی دوسرے ٹریڈ مارک یا لوگو کے استعمال کی اجازت نہیں دیتا جب تک کہ اس کی پیشگی تحریری اجازت نہ ہو، بشمول، بغیر کسی حد کے، اس کے کسی بھی پبلک لائسنس میں غیر مجاز ترمیمات یا لائسنس یافتہ مواد کے استعمال کے بارے میں کسی بھی دیگر انتظامات، سمجھوتے، یا معاہدے کے سلسلے میں۔ وضاحت کے لیے، یہ پیراگراف پبلک لائسنسز کا حصہ نہیں ہے۔ + +کریئیٹو کامنز سے creativecommons.org پر رابطہ کیا جا سکتا ہے۔ + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file diff --git a/translations/ur/lessons/sketchnotes/README.md b/translations/ur/lessons/sketchnotes/README.md new file mode 100644 index 00000000..698b1149 --- /dev/null +++ b/translations/ur/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +تمام نصاب کے خاکے یہاں سے ڈاؤنلوڈ کیے جا سکتے ہیں۔ + +🎨 تخلیق کردہ: تومومی ایمورا (ٹویٹر: [@girlie_mac](https://twitter.com/girlie_mac), گٹ ہب: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**ڈسکلیمر**: +یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ \ No newline at end of file